Projekt

Allmänt

Profil

Handlingar

Features #423

öppen
CA CA

Integrera VARA som lokal SQLite-katalog med månatliga appuppdateringar

Features #423: Integrera VARA som lokal SQLite-katalog med månatliga appuppdateringar

Tillagd av Codex API för ungefär 22 timmar sedan. Uppdaterad för 9 minuter sedan.

Status:
In progress
Prioritet:
Normal
Tilldelad:
Startdatum:
2026-10-01
Deadline:
% Klart:

40%

Beräknad tid:
(Total: 0:00 h)
Risknivå:
Normal
Driftsättningspåverkan:
Ingen
Berörd miljö:
Ej tillämpligt
Regression krävs:
Nej
Reported by:

Beskrivning

Syfte
Använd VARA lokalt i Medicin Dags för sökning och förifyllnad av produktuppgifter. Appen hämtar aldrig exporten från SFTP och skickar inte användarsökningar eller personliga läkemedelsuppgifter till VARA eller MedicTime-servrar.

Genomfört

  • Importverktyg för VARA XML 8 validerar exportens XSD och bygger en separat sökbar SQLite-katalog.
  • Android-appen har separat Room-katalog, lokal sökning, produktgranskning och säker installation/ersättning.
  • Månatlig beredning jämför aktuell katalog med föregående och skriver release-review.json.
  • Releasebygget kräver SQLite-katalog och månadsrapport, verifierar schema och matchande SHA-256 och bäddar in databasen i appens assets.
  • Septemberkatalogen byggdes in i releasevarianten; APK-innehållets filstorlek och kontrollsumma verifierades.
  • Granskningsvyn erbjuder frivilligt förpackningsval och visar VARA:s förpackningstext, varunummer och streckkod. Valet sparas som snapshot med NPLPACK-id och källdatum; läkemedelskortet återger uppgifterna. Doseringslogiken påverkas inte. Databasen migreras till schema 13.
  • Läkemedelssökningen kan starta kameraskanning efter att användaren begärt den och beviljat behörighet. CameraX och en lokalt paketerad ML Kit-modell analyserar på enheten. En rörlig horisontell linje visar att läsaren väntar på en kod.
  • Skannade EAN-8, EAN-13, UPC-A, ITF och Code 128-koder slås upp lokalt bland VARA-förpackningar, inklusive GTIN-14-nollutfyllnad. Vid flera matchningar visas produkt, styrka, form och förpackning för uttryckligt användarval; inga läkemedelsuppgifter väljs automatiskt. Namnsökning/manuell registrering finns kvar. Kamerabilder skickas inte eller sparas.
  • VARA:s detaljerade läkemedelsformer mappas till appens bredare formkategorier (t.ex. Filmdragerad tablett → Tablett); den ursprungliga VARA-beskrivningen bevaras. Okända former ligger kvar som Annan form.\r\n- Kotlin-kompilering, enhetstester och debug-APK-bygge passerar. Emulatorverifiering visar behörighetsflöde, kameraförhandsvisning och den animerade skanningslinjen. Exakt GTIN-14-uppslag kontrollerades mot septemberkatalogen.

Kvar före extern release

  • Skanna fysisk förpackning med riktig enhet och verifiera kamerabeteende på stödda enheter.
  • Sakkunnig granskning av produkturval samt produkt- och förpackningsstatuspresentation.
  • Granska skillnaderna för aktuell månad före varje release.
  • Manuell tillgänglighets- och fysisk enhetsverifiering, inklusive Android 14, TalkBack, fokus/tangentbord och orientering.
  • Signera och distribuera en appversion med en godkänd månadsfil.

Teknisk status: lokal VARA-katalog, val av förpackning och kamerabaserat streckkodssökflöde implementerade. Ärendet hålls öppet tills innehållsgranskning, fysisk provskanning och återstående releasekontroller är klara.


Acceptanskriterier

Månadsvis VARA 8-export valideras mot XSD och jämförs med föregående SQLite-katalog. Release paketeras endast med SQLite vars SHA-256 matchar månadsrapporten. Sökningen sker lokalt och appen ansluter inte till SFTP. I läkemedelssökningen ligger streckkodsikon intill inmatningsfältet och förstoringsglas skickar in manuell text (även tangentbordets Sök). Avläst streckkod ger direkt lokalt uppslag; tvetydiga träffar visas för uttryckligt val av produkt, styrka, form och förpackning. Kamerabilder sparas inte eller skickas. Före Done krävs sakkunnig granskning samt fysisk enhets- och hjälpmedelsverifiering.


Testresultat

Android :app:compileDebugKotlin och :app:compileDebugAndroidTestKotlin passerar. Riktade CatalogMedicationDialogTest på Android 15-emulator: 5 tester, 0 fel; verifierar skanningsikonens tillgängliga namn, sökikon, explicit manuell sökning, resultatgranskning och att äldre sökning avbryts. Emulatorförhandsvisning av kameraflöde och rörlig linje kontrollerades tidigare. GTIN-14-uppslag verifierades mot septemberkatalogen. Fysisk streckkodsskanning, Android 14-enhet, TalkBack/orientering och sakkunnig granskning återstår. Regressionstest för VARA-formmappning tillagt: 84 enhetstester passerar, inklusive tabletter, injektionsformer, droppar, inhalationspulver och okända former. :app:compileDebugAndroidTestKotlin och :app:assembleDebug passerar.


Underaktiviteter 1 (1 öppen — 0 stängda)

Features #427: Spara utgångsdatum från GS1-kod vid läkemedelsskanningNew2026-10-01

Handlingar

CA Uppdaterad av Codex API för ungefär 22 timmar sedan Handlingar #1

  • Status ändrad från New till In progress
  • Tilldelad satt till Codex API
  • % Klart ändrad från 0 till 40
  • Acceptanskriterier uppdaterad (skillnader)
  • Driftsättningspåverkan satt till Ingen
  • Testresultat uppdaterad (skillnader)

CA Uppdaterad av Codex API för ungefär 14 timmar sedan Handlingar #2

Förpackningsdelen är nu implementerad: användaren kan välja en VARA-förpackning frivilligt, granska källtext/varunummer/streckkod och spara en snapshot med produkt- och förpacknings-id i den lokala persondatabasen. Läkemedelskortet visar sparade uppgifter; dosering påverkas inte. Commit 9e63838 (refs #423). Kompilering blockerades av AccessDeniedException i en befintlig OneDrive-synkad app/build/intermediates/.../merged.dir/values innan Kotlin-kompilering eller Room-schemaexport startade. Kvar är fortsatt sakkunniggranskning och fysisk tillgänglighets-/enhetskontroll.

CA Uppdaterad av Codex API för ungefär 14 timmar sedan Handlingar #3

CA Uppdaterad av Codex API för ungefär 13 timmar sedan Handlingar #4

Uppföljning: byggproblemet var hanterbart genom att styra Gradles genererade app-build till en temporär katalog. Kotlin-kompileringen passerade och KSP exporterade Room schema 13. Första försöket hittade att BundledCatalogRepository saknade delegering av package-uppslagningen; detta rättades. Commit e3c56fc refs #423. Ingen ändring av Redminestatus: innehållsgranskning och fysiska releasekontroller återstår.

CA Uppdaterad av Codex API för ungefär 4 timmar sedan Handlingar #5

CA Uppdaterad av Codex API för ungefär 4 timmar sedan Handlingar #6

Sökdialogen har förtydligats enligt genomgången: streckkodsikon sitter direkt intill inmatningsfältet, förstoringsglas skickar in manuell sökning och tangentbordets Sök gör samma sak. När en streckkod läses uppdateras fältet och lokal VARA-sökning startar direkt. :app:compileDebugKotlin passerar. Ändringen är committad som 302b884. Ny emulatorbild kunde inte tas eftersom emulatorns lokala valv är låst; fysisk och manuell UI-verifiering kvarstår.

CA Uppdaterad av Codex API för ungefär 4 timmar sedan Handlingar #7

UX-kontrollen är nu förankrad i sökdialogens Compose-UI-tester: streckkodsikon med beskrivningen “Skanna streckkod” och förstoringsglaset ligger i textfältets åtgärdsrad; textsökning skickas först när sökikonen eller tangentbordets Sök används. Samtliga fem riktade tester passerar på Android 15-emulator via Gradle (BUILD SUCCESSFUL). En visuell skärmbild kunde inte tas eftersom testemulatorns fönster är låst/inte tillgängligt för skärmfångst. Ändringen är committad som 54d08ab.

CA Uppdaterad av Codex API för ungefär 3 timmar sedan Handlingar #8

CA Uppdaterad av Codex API för ungefär 3 timmar sedan Handlingar #9

Ytterligare UX-verifiering: tryck i sökfältet sätter fältet i fokus; Androids OutlinedTextField visar systemets tangentbord. Förstoringsglas och tangentbordets Sök delar samma submit-flöde, tar bort fokus och döljer tangentbordet innan resultat visas. Skanningsikonen döljer också tangentbordet före kamerastart. De fem riktade CatalogMedicationDialogTest passerar nu med fokusassertion inkluderad (5/5). Uppdaterad visualiseringsförhandsvisning visar och låter användaren prova skärmtangentbordet.

CA Uppdaterad av Codex API för ungefär 3 timmar sedan Handlingar #10

Ytterligare verifiering: tangentbordsåtgärden Sök skickar den inmatade läkemedelstexten. Compose-fältet får fokus vid tryck; 6 riktade Android-tester passerar utan fel. Tidigare dokumenterad fysisk provskanning, TalkBack och sakkunnig granskning återstår.

CA Uppdaterad av Codex API för ungefär 3 timmar sedan Handlingar #11

Ytterligare automatiserad kontroll: tryck på streckkodsikonen öppnar skannerdialogen med instruktioner. Testet verifierar antingen kamerans behörighetsförklaring eller, om behörighet finns, kameraförhandsvisning, skanningslinjens skärmläsarnamn och integritetstext. Tillsammans med tangentbordstestet passerar nu 7 riktade Android-tester utan fel. Detta ersätter inte fysisk enhets- eller TalkBack-verifiering.

CA Uppdaterad av Codex API för ungefär 3 timmar sedan Handlingar #12

Mobiltest: signerad debug-APK med september 2026-katalogen inbäddad skapad som build/distributions/medictime-0.1.0-vara-2026-09-debug.apk. Katalogens SHA-256 stämmer med release-review.json; apksigner verifierar APK-signaturen. BundledCatalogInstrumentedTest installerade och sökte i katalogen på Android 15-emulatorn (1 test, 0 fel). APK:n är debug-signerad för intern testning, inte release.

CA Uppdaterad av Codex API för ungefär 2 timmar sedan Handlingar #13

Felrättning efter mobilprov: skannern begränsade tidigare ML Kit till EAN/UPC, Code 128 och ITF och ignorerade därför QR- och Data Matrix-koder. Stöd tillagt för QR och Data Matrix, analysupplösning höjd till 1280×720, instruktion uppdaterad att placera koden mitt i bild (krav för Data Matrix). GS1 AI 01 och GS1 Digital Link extraherar nu GTIN till lokalt VARA-uppslag. Övriga QR-payloads ger ingen-träff-hjälptext. Unit tests för GTIN-tolkning, 7 UI-instrumenteringstester och BundledCatalogInstrumentedTest (1) passerar. Ny debug-signerad test-APK med 2026-09-katalogen ligger i build/distributions/medictime-0.1.0-vara-2026-09-debug.apk. Fysisk bekräftelse av att koder faktiskt läses återstår med användarens mobil.

CA Uppdaterad av Codex API för ungefär 2 timmar sedan Handlingar #14

Sökbugg åtgärdad efter rapport om Atorvastatin Accord. CatalogSearchQuery skickade tidigare explicit AND-operator som Androids SQLite FTS4 inte tolkade som avsett; nu används FTS4:s mellanslagsseparerade AND-termer. Bekräftat mot 2026-09-katalogen: den felaktiga frågan gav 0, korrekt FTS-fråga ger 4 Atorvastatin Accord-poster. Atorvastatin accord fungerar nu i Room-integrationen; accord ensamt behåller Accord-träffar. JVM-tester och CatalogInstrumentedTest (7 tester, 0 fel eller överhoppade) passerar, inklusive riktig exportkatalog. Installerbar debug-APK med QR/Data Matrix-stöd och katalog finns i build/distributions/medictime-0.1.0-vara-2026-09-debug.apk.

CA Uppdaterad av Codex API för ungefär 2 timmar sedan Handlingar #15

Uppföljning med QR/GS1-payload från användarens Atorvastatin Accord-förpackning. Parsern extraherar (01)05055565746783 ur AI-fälten (17), (10), (21). Exakt GTIN finns i september-VARA-katalogen och ger en träff: Atorvastatin Accord 80 mg, Blister 100 tabletter (varunummer 414427). Regressionstest med hela payloaden och Android-integrationstest mot riktiga exporterade katalogen passerar; CatalogInstrumentedTest: 7 tester, 0 fel/skip. APK:n som byggdes efter sökfixen innehåller denna parser.

CA Uppdaterad av Codex API för ungefär 2 timmar sedan Handlingar #16

Åtgärdade scannerflödet efter rapport om livekamerabild utan kodläsning: CameraX väljer nu kompatibel analysupplösning, ML Kit-analysfel skiljs från faktiskt kamerastartfel och tekniska fel loggas. Byggt signerad debug-APK med VARA 2026-09. JVM- och Android-test/kompileringsjobb kördes; fysisk mobil kunde inte verifieras eftersom den inte var ansluten. Commit e75cc90.

CA Uppdaterad av Codex API för ungefär en timme sedan Handlingar #17

Reproducerat scannerfelet på Samsung SM-S948B (Android 17). CameraX-band kameran två gånger; första preview fungerade men andra bindningen misslyckades med 'No supported surface combination'. ML Kit analyzer körde inte eftersom executor/scanner återanvändes efter DisposableEffect-disposal. Flyttat scanner och executor till samma livscykel som bindningen och blockerar sen bindning efter disposal. Fysiskt verifierat med Atorvastatin Accord EAN-13: ML Kit läste koden och VARA visade Atorvastatin Accord 80 mg, filmdragerad tablett, blister 100 (flera poster att välja bland). Enhetstest/build godkända; ny signerad APK byggd och installerad. Commit d9bcbdc.

CA Uppdaterad av Codex API för 42 minuter sedan Handlingar #18

Manuell sökning efter 'Accord' reproducerad på Samsung SM-S948B. Resultatraderna hade olika indrag eftersom Column i varje fullbreddsknapp mätte sin egen textbredd och knappinnehållet centrerades. Gjort produkt- och streckkodsträffarnas textkolumner fullbredd; träffnamn, styrka och form vänsterjusteras nu konsekvent, inklusive radbrytningar. Installerat och visuellt verifierat på telefon. Unit-tester och Android-testkompilering passerar, debug-APK signerad. Commit c296443.

CA Uppdaterad av Codex API för 33 minuter sedan Handlingar #19

Granskat aktuell telefonvy efter QR/EAN-skanning. Skannerträffen låg i en bred OutlinedButton vars stora rundning gjorde flera textrader trånga. Ersatt kapselknappen med en fullbredd, vänsterställd och tillgänglig klickbar rad med diskreta avdelare mellan flera träffar. Byggt och installerat på Samsung SM-S948B, visuellt verifierat med Atorvastatin Accord; inga testregressioner, enhetstester och Android-testkompilering passerar. APK byggd signerad. Commit e1d6e10.

CA Uppdaterad av Codex API för 17 minuter sedan Handlingar #20

Implementerat och verifierat VARA-formmappning till appens bredare kategorier. Exempel: “Filmdragerad tablett” blir “Tablett”, medan den exakta VARA-beskrivningen bevaras. Okända former behåller “Annan form”. Tester: 84 enhetstester passerar; Android-testkod och debugbygge passerar. Commit a0717e0 (refs #423).

CA Uppdaterad av Codex API för 9 minuter sedan Handlingar #21

  • Underaktivitet #427 tillagd
Handlingar

Finns även som: PDF Atom