Ga naar inhoud

V1b -- Validatieprotocol: AIS-integratievalidatie

Versie 1.0.0 -- maart 2026

1. Doel

End-to-end validatie van de medicatieoverzicht-verwerking per ondersteund Apotheek Informatie Systeem (AIS). Dit protocol test de volledige keten: van het uploaden van een medicatieoverzicht tot de uiteindelijke ATC-verrijking van alle medicijnen -- inclusief het handmatige correctieproces door de apotheker.

Dit protocol vult V1a -- G-Standaard ATC Lookup aan. V1a valideert de lookup-functie in isolatie; V1b valideert de integratie met de AIS-parsers en het handmatige correctieproces in de context van echte medicatieoverzichten.

2. Type studie

Integratievalidatie. Elk AIS-systeem levert medicatiegegevens in een eigen formaat (tekst, PDF, of gestructureerd). De parser-implementatie, naamgeving in het bronbestand en de aanwezigheid van ATC-codes vanuit de bron bepalen samen de automatische match rate. Dit protocol meet de prestaties per AIS-systeem afzonderlijk.

3. Onderbouwing: waarom per AIS testen?

De ATC-verrijking verloopt fundamenteel anders per AIS-systeem:

AIS-systeem Invoerformaat ATC uit bron? ATC-verrijkingsmethode Bekende aandachtspunten
Medimo Platte tekst Nee lookup_atc(naam) op geparsed medicatienaam Naamgeving kan afwijken van G-Standaard; geen ATC fallback uit bron
Sanday PDF Ja (kolom in tabel) enrich_from_atc_code() op ATC uit bron; fallback naar lookup_atc() als ATC ontbreekt of ongeldig ATC-codes uit bron kunnen incompleet zijn (bijv. alleen ATC5 i.p.v. ATC7)
Pharmacom PDF Nee lookup_atc(naam) op geparsed medicatienaam PDF-tabelextractie kan namen verminken; combinatiepreparaten soms over meerdere regels
CGM PDF Nee lookup_atc(naam) op geparsed medicatienaam; fallback op merknaam tussen haakjes PDF-extractie van secties (Huidige medicatie, ICA, Labwaarden); afbreekstreep-artefacten; merknaam op vervolgregel

Door per AIS te testen is direct traceerbaar of een probleem ligt bij de parser (extractie), de lookup (ATC-matching), of de bron (ontbrekende/onjuiste ATC in het overzicht zelf).

4. Testontwerp

4.1 Steekproef per AIS

Per ondersteund AIS-systeem worden minimaal 10 medicatieoverzichten verzameld, die gezamenlijk minimaal 100 unieke medicatieregels bevatten.

AIS-systeem Aantal overzichten Minimum medicatieregels Selectie
Medimo >= 10 >= 100 Mix van afdeling-scope (meerdere patienten) en patient-scope
Sanday >= 10 >= 100 Individuele patientoverzichten
Pharmacom >= 10 >= 100 Individuele patientoverzichten
CGM >= 10 >= 100 Individuele patientoverzichten (PDF)

Selectiecriteria voor overzichten: - Geanonimiseerde exports uit productieomgevingen van deelnemende apotheken - Spreiding over patienten met veel (>10) en weinig (<5) medicijnen - Tenminste 3 overzichten met combinatiepreparaten of minder gangbare middelen - Tenminste 2 overzichten met gestopte of tijdelijke medicatie (indien van toepassing voor het AIS)

4.2 Gold standard

Per medicatieoverzicht stelt een klinisch apotheker handmatig vast: 1. Volledige medicatielijst: alle medicijnen die op het bronoverzicht staan (inclusief stoppers, zonodig-medicatie) 2. Correcte ATC-code per medicijn: opgezocht in de G-Standaard

4.3 Uitvoering

Per overzicht worden de volgende stappen doorlopen:

Stap 1 -- Parser-volledigheid 1. Upload het medicatieoverzicht in Remedice via het reguliere reviewproces 2. Vergelijk de door Remedice opgepakte medicijnen met de gold standard lijst 3. Registreer per medicijn: opgepakt (ja/nee), naam correct overgenomen (ja/nee)

Stap 2 -- Automatische ATC-matching 4. Controleer per opgepakt medicijn of Remedice automatisch een ATC-code heeft toegekend 5. Vergelijk de automatisch toegekende ATC-code met de gold standard ATC-code 6. Registreer per medicijn: automatische ATC (ja/nee), ATC correct (ja/nee), matchtype (uit bron/exact/fuzzy)

Stap 3 -- Handmatige correctie 7. Voor medicijnen zonder automatische ATC-match: gebruik de ATC-popup in Remedice om handmatig de juiste ATC-code te selecteren 8. Registreer per medicijn: handmatig gevonden (ja/nee), benodigde zoektermen, aantal zoekpogingen

5. Meetpunten

5.1 Primaire meetpunten (per AIS-systeem)

Meetpunt Definitie Berekening
Parser-volledigheid Percentage medicijnen uit het bronoverzicht dat correct wordt opgepikt (opgepakte medicijnen / totaal in gold standard) x 100%
Automatische ATC-match rate Percentage opgepakte medicijnen dat automatisch een correcte ATC-code krijgt (correcte automatische ATC / opgepakte medicijnen) x 100%
Fout-positief rate Percentage automatische ATC-toekenningen dat een verkeerde ATC-code oplevert (incorrecte automatische ATC / automatische ATC-toekenningen) x 100%
Handmatige correctie-rate Percentage medicijnen zonder automatische match dat via de ATC-popup gevonden kan worden (handmatig gevonden / medicijnen zonder automatische match) x 100%
Totale ATC-dekking Percentage medicijnen dat uiteindelijk (automatisch + handmatig) een correcte ATC-code heeft ((correcte automatische + handmatig gevonden) / opgepakte medicijnen) x 100%

5.2 Secundaire meetpunten

Meetpunt Definitie
Naamherkenning Percentage namen dat ongewijzigd of met verwaarloosbare afwijking wordt overgenomen
Matchtype-verdeling Verdeling over: ATC uit bron, exact match, fuzzy match, geen match
Gemiddelde zoekpogingen handmatig Gemiddeld aantal zoekacties in de ATC-popup per handmatig gecorrigeerd medicijn

6. Acceptatiecriteria

Criterium Drempel Toelichting
Parser-volledigheid >= 98% per AIS Kritisch: gemiste medicijnen leiden tot onvolledige analyses
Automatische ATC-match rate >= 90% per AIS Lagere drempel dan V1a (99%) omdat AIS-naamgeving meer variatie kent dan de G-Standaard referentieset
Fout-positief rate <= 3% per AIS Een verkeerde ATC-code leidt tot incorrecte analyses; iets ruimer dan V1a vanwege parsevariatie
Handmatige correctie-rate >= 95% Medicijnen zonder automatische match moeten vindbaar zijn via de ATC-popup
Totale ATC-dekking >= 98% per AIS Uiteindelijk moet (vrijwel) elk medicijn een correcte ATC-code hebben

6.1 Toelichting drempels

De drempels voor automatische matching zijn bewust lager dan in V1a, omdat:

  • AIS-systemen eigen naamconventies hanteren die kunnen afwijken van de G-Standaard
  • PDF-extractie artefacten (Pharmacom, Sanday) kunnen namen verminken
  • Het handmatige correctieproces (ATC-popup) functioneert als vangnet

De totale ATC-dekking is het criterium dat klinisch het meest relevant is: de apotheker moet uiteindelijk voor elk medicijn een correcte ATC-code kunnen vaststellen, ongeacht of dit automatisch of handmatig gebeurt.

6.2 Impact bij niet-behalen

Situatie Actie
Parser-volledigheid < 98% Parser-bug of formatwijziging; oorzaakanalyse en parser-aanpassing vereist
Automatische match < 90% Acceptabel mits totale dekking >= 98% en handmatige correctie haalbaar is; oorzaakanalyse documenteren
Fout-positief > 3% Kritisch; lookup-logica moet worden aangepast om incorrecte matches te voorkomen
Totale dekking < 98% Blocker; niet-matchende middelen analyseren en lookup/popup uitbreiden

7. Steekproefonderbouwing

7.1 Methode

Precisie-gebaseerde steekproefberekening per AIS-systeem, aangevuld met een clusteroverwegingen (meerdere overzichten) om variatie in formattering en patientsituaties mee te nemen.

7.2 Berekening per meetpunt

Parser-volledigheid (verwacht p = 0.98, n = 100 regels per AIS): - Normale benadering: voor proportie p = 0.98 met halve BI-breedte d = 0.04 is de benodigde steekproef n = 1.96^2 * 0.98 * 0.02 / 0.04^2 = 47.1. Met n = 100 is de precisie ruim voldoende. - Clopper-Pearson: bij 98/100 correct (98%) is het 95% BI [93.0%, 99.8%]. De ondergrens (93.0%) ligt duidelijk boven de grens van 90% die klinisch onacceptabel zou zijn. - Bij het worst-case scenario van 96/100 (96%) is het 95% BI [90.1%, 98.9%]. Zelfs in dit geval is de ondergrens >= 90%.

Automatische ATC-match rate (verwacht p = 0.90, n = 100 regels per AIS): - Normale benadering: voor p = 0.90 met halve BI-breedte d = 0.06 is n = 1.96^2 * 0.90 * 0.10 / 0.06^2 = 96.0. Met n = 100 wordt deze precisie net gehaald. - Clopper-Pearson: bij 90/100 correct (90%) is het 95% BI [82.4%, 95.1%]. Dit interval is smal genoeg om te onderscheiden of de werkelijke match rate boven of onder de acceptatiedrempel van 90% ligt.

Totale ATC-dekking (verwacht p = 0.98, n = 100): - Identiek aan parser-volledigheid (zelfde proportie, zelfde n). Het 95% BI bij 98% dekking is [93.0%, 99.8%].

7.3 Onderbouwing minimaal 10 overzichten per AIS

De eis van >= 10 overzichten per AIS is niet primair statistisch maar methodologisch:

  • Formaatvariatie: AIS-exports variĆ«ren in opmaak, kolomvolgorde en speciale tekens. Meerdere overzichten dekken deze variatie.
  • Patientcomplexiteit: Spreiding over patienten met veel (>10) en weinig (<5) medicijnen voorkomt bias naar een enkel patienttype.
  • Clustereffect: Medicatieregels binnen eenzelfde overzicht zijn niet onafhankelijk (zelfde parser-run, zelfde formattering). Door >= 10 clusters te nemen, wordt het design-effect beperkt. Bij een conservatief geschat intra-cluster correlatiecoefficient (ICC) van 0.05 en gemiddeld 10 regels per overzicht is het design-effect DE = 1 + (10-1) * 0.05 = 1.45. De effectieve steekproef is dan 100 / 1.45 = 69, nog steeds voldoende voor de beoogde precisie.

7.4 Totaaloverzicht

Meetpunt Verwacht n 95% BI (Clopper-Pearson) Halve BI-breedte
Parser-volledigheid 98% 100 [93.0%, 99.8%] 3.4%
Automatische ATC-match 90% 100 [82.4%, 95.1%] 6.4%
Totale ATC-dekking 98% 100 [93.0%, 99.8%] 3.4%

8. Speciale aandachtspunten per AIS

8.1 Medimo

  • Scope-variatie: Test zowel afdeling-scope (meerdere patienten in een overzicht) als patient-scope
  • Naamgeving: Medimo gebruikt soms afwijkende generieke namen of afkortingen; documenteer welke namen niet matchen
  • Secties: Verifieer dat medicijnen uit alle secties (Continu, Zo nodig, Tijdelijk) worden opgepikt

8.2 Sanday

  • ATC uit bron: Verifieer dat ATC-codes uit de PDF-tabel correct worden overgenomen en valide zijn
  • Fallback: Test specifiek medicijnen waarvoor Sanday geen ATC-code levert (lege ATC-kolom); verifieer dat lookup_atc() als fallback correct werkt
  • PDF-kwaliteit: Neem overzichten mee met varierende PDF-kwaliteit (verschillende Sanday-versies)

8.3 Pharmacom

  • PDF-tabelextractie: Let op medicijnen die over meerdere PDF-regels lopen (lange namen, combinatiepreparaten)
  • Tabelclassificatie: Verifieer dat de parser het juiste tabelblok ("Verstrekte medicatie") identificeert en niet verwart met ICA- of LAB-tabellen

8.4 CGM

  • PDF-sectieherkenning: CGM-exports bevatten benoemde secties ("Huidige medicatie", "Intoleranties, Contra indicaties", "Lab waarden"/"Labwaarden"/"Laboratorium"). Verifieer dat alle secties correct worden geidentificeerd, ook bij variatie in koppen tussen CGM-versies.
  • Afbreekstreep-artefacten: PDF-extractie kan woorden splitsen over regels met een afbreekstreep (bijv. "NIERFUNCTIE-\nSTOORNIS"). De parser herstelt dit, maar verifieer bij lange contra-indicatie-omschrijvingen dat de samenvoeging correct is.
  • Merknaam op vervolgregel: CGM plaatst merknamen soms tussen haakjes op een aparte regel onder de generieke naam. De parser vangt dit op als continuation line. Test specifiek medicijnen met lange merknamen en medicijnen waarbij de merknaam ontbreekt.
  • Geen ATC uit bron: CGM-exports bevatten geen ATC-codes. Alle ATC-verrijking verloopt via lookup_atc() op de geparsede medicatienaam, met fallback op de merknaam. Dit maakt de match rate afhankelijker van de naamgeving in het CGM-systeem dan bij Sanday (waar ATC uit de bron komt).
  • Toedieningsweg-parsing: De parser herkent een vaste lijst toedieningswegen (ORAAL, LOKAAL, PARENTERAAL, etc.). Onbekende waarden worden onderdeel van de dosering. Verifieer dat dit niet leidt tot verlies van relevante informatie.
  • Labwaarden: CGM-labwaarden worden alleen opgepikt als ze een datum bevatten. Verifieer dat labwaarden zonder datum (indien voorkomend) apart worden gerapporteerd als gemiste data.
  • ICA-sectie: Intoleranties, allergieen en contra-indicaties worden in dezelfde sectie gerapporteerd met subsectiekoppen. Verifieer dat de classificatie (allergie vs. contra-indicatie) correct wordt overgenomen en dat ICPC-matching voor contra-indicaties adequaat is.
  • Detectie: De format-sniffer herkent CGM-exports aan "CompuGroup Medical", "CGM Apotheek" of "Medicatieoverzicht per:". Test met overzichten van verschillende CGM-versies om te verifieren dat de detectie robuust is.

9. Rapportage

9.1 Per AIS-systeem

  • Tabel met alle meetpunten (sectie 5) en resultaten
  • Matchtype-verdeling (staafdiagram of tabel)
  • Lijst van alle niet-gematchte medicijnen met oorzaakanalyse:
  • Parser-fout (naam niet correct overgenomen)
  • Lookup-fout (naam correct, maar geen/verkeerde ATC)
  • Bron-fout (ATC in bronbestand incorrect of afwezig)

9.2 Vergelijking tussen AIS-systemen

  • Vergelijkende tabel van alle primaire meetpunten per AIS
  • Analyse van structurele verschillen in match rate en oorzaken
  • Aanbevelingen voor parser- of lookup-verbeteringen indien van toepassing

9.3 Conclusie

  • Per AIS: voldoet/voldoet niet aan acceptatiecriteria
  • Overall: geschiktheid van het ATC-verrijkingsproces voor klinisch gebruik

10. Resultaten

Laatste run: 7 april 2026

10.1 Automatische ATC-match rate

AIS-systeem Scope Totaal medicaties Gematcht Niet gematcht Match rate Resultaat
Medimo Afdeling 1913 1865 48 97.5% PASS
Medimo Patient 173 167 6 96.5% PASS
Pharmacom Patient 153 153 0 100.0% PASS

Alle AIS-systemen behalen de acceptatiedrempel van >= 90%.

10.2 Niet-gematchte medicaties -- Medimo Afdeling (48 items)

Alle niet-gematchte items zijn hulpmiddelen, verzorgingsproducten of voedingssupplementen die niet in de G-Standaard voorkomen. Geen gemiste geneesmiddelen.

Bestand Medicatienaam Categorie
MedimoAfdelingTest1.txt Steriskin Handalcohol Hulpmiddel
MedimoAfdelingTest2.txt Steriskin Handalcohol Hulpmiddel
MedimoAfdelingTest5.txt Gepan Instill Spvlst 2mg/ml Wwsp 40ml Spoelvloeistof
MedimoAfdelingTest5.txt Curiflush Blaas Spvlst Solutio R Zak 50ml Spoelvloeistof
MedimoAfdelingTest6.txt Vsm Spiroflor Srl Spier- En Gewrichtscreme Zelfzorg/OTC
MedimoAfdelingTest6.txt A2a Voorzetkamer Met Volwassenmasker Medium Hulpmiddel
MedimoAfdelingTest6.txt Bts Baby Shampoo Verzorging
MedimoAfdelingTest7.txt Calmurid Hydraterende Creme Ureum 10% Verzorging
MedimoAfdelingTest7.txt Louis Widmer Babypure Verzorgende Lotion Verzorging
MedimoAfdelingTest7.txt Tena Proskin Barrier Cream Verzorging
MedimoAfdelingTest7.txt Vsm Spiroflor Srl Spier- En Gewrichtscreme Zelfzorg/OTC
MedimoAfdelingTest8.txt Biotene Oralbalance Verzorging
MedimoAfdelingTest8.txt Tolak Creme 40mg/g Zelfzorg/OTC
MedimoAfdelingTest8.txt Badolie Livsane Extra Vettend Verzorging
MedimoAfdelingTest8.txt Vsm Spiroflor Srl Gelei Zelfzorg/OTC
MedimoAfdelingTest8.txt Curiflush Blaas Spvlst Nacl0,9% Zak 100ml +bsp Spoelvloeistof
MedimoAfdelingTest8.txt Vsm Spiroflor Srl Gelei Zelfzorg/OTC
MedimoAfdelingTest8.txt Vsm Spiroflor Srl Gelei Zelfzorg/OTC
MedimoAfdelingTest8.txt Balneum Kalmerend Doucheolie Verzorging
MedimoAfdelingTest8.txt Oorspray Jeuk Vogel Zelfzorg/OTC
MedimoAfdelingTest8.txt Orthica Magnesiumcitraat-200 Tablet Supplement
MedimoAfdelingTest9.txt Balneum Extra Vettend Doucholie Verzorging
MedimoAfdelingTest9.txt Curiflush Blaas Spvlst Nacl0,9% Zak 50ml +bsp Spoelvloeistof
MedimoAfdelingTest9.txt Vaseline-paraffinezalf 50% Orphi Verzorging
MedimoAfdelingTest9.txt Mentho 10 Mentholpoeder 0,4% Zelfzorg/OTC
MedimoAfdelingTest9.txt Curiflush Blaas Spvlst Nacl0,9% Zak 50ml +bsp Spoelvloeistof
MedimoAfdelingTest9.txt Balneum Kalmerend Doucheolie Verzorging
MedimoAfdelingTest9.txt Biotene Oralbalance Verzorging
MedimoAfdelingTest9.txt Orthica D-25 Tablet Supplement
MedimoAfdelingTest9.txt Abena Barrierecreme Ongeparfumeerd Verzorging
MedimoAfdelingTest9.txt Orthica Magnesiumcitraat-200 Tablet Supplement
MedimoAfdelingTest9.txt Vaseline-paraffinezalf 50% Orphi Verzorging
MedimoAfdelingTest9.txt Aerosol 87/5/9mcg/dosis Spuitbus 120do Onbekend (geen stofnaam)
MedimoAfdelingTest9.txt Curiflush Blaas Spvlst Nacl0,9% Zak 50ml +bsp Spoelvloeistof
MedimoAfdelingTest9.txt Vsm Spiroflor Srl Spier- En Gewrichtscreme Zelfzorg/OTC
MedimoAfdelingTest9.txt Proshield Plus Skin Protectant Verzorging
MedimoAfdelingTest9.txt Badolie Livsane Extra Vettend Verzorging
MedimoAfdelingTest9.txt Vsm Spiroflor Srl Spier- En Gewrichtscreme Zelfzorg/OTC
MedimoAfdelingTest9.txt Nisita Neuszalf Zelfzorg/OTC
MedimoAfdelingTest9.txt Orthica Multi 65+ Capsule Supplement
MedimoAfdelingTest9.txt Vsm Spiroflor Srl Gelei Zelfzorg/OTC
MedimoAfdelingTest9.txt Echinaforce Forte Tablet Supplement
MedimoAfdelingTest10.txt Tena Proskin Barrier Cream Verzorging
MedimoAfdelingTest10.txt Tena Proskin Barrier Cream Verzorging
MedimoAfdelingTest10.txt Lucovitaal Levertraan Capsule Supplement
MedimoAfdelingTest10.txt Proshield Plus Skin Protectant Verzorging
MedimoAfdelingTest10.txt Phital Magnesium Tablet Supplement
MedimoAfdelingTest10.txt Mentho 10 Mentholgel 1% Zelfzorg/OTC

10.3 Niet-gematchte medicaties -- Medimo Patient (6 items)

Bestand Medicatienaam Categorie
MedimoPatientTest2.txt Barriere Creme Melkserum Livsane Verzorging
MedimoPatientTest4.txt Cavilon Huidbes Film Spray Hulpmiddel
MedimoPatientTest4.txt Wellform Allsorb Indik Sach Hulpmiddel
MedimoPatientTest7.txt Tendo Alcohol 70% Gedenatureerd Hulpmiddel
MedimoPatientTest7.txt Zoutoplossing Nspr 8mg/ml Spoelvloeistof
MedimoPatientTest8.txt Cutimed Acute Urea 5% Verzorging

10.4 Niet-gematchte medicaties -- Pharmacom (0 items)

Geen niet-gematchte medicaties.

10.5 Sanday en CGM -- pilot-resultaten met formele protocolafwijking

Run: 7 mei 2026.

Voor Sanday en CGM zijn op moment van validatie respectievelijk 4 en 3 geanonimiseerde overzichten beschikbaar uit de pilot-deelnemende apotheek. Dit is minder dan de in sectie 4.1 vereiste >= 10 overzichten per AIS. De resultaten worden daarom gerapporteerd als pilot en niet als definitieve validatie. Uitbreiding tot >= 10 overzichten per AIS is gepland in samenwerking met de klinische partner; tot dan loopt het post-market surveillance plan op deze overzichten gericht door (zie post_market_surveillance.md).

AIS-systeem Aantal overzichten Totaal medicaties Gematcht Match rate Resultaat
Sanday 4 46 46 100.0% PASS (pilot)
CGM 3 18 17 94.4% PASS (pilot)

De match rate haalt voor beide AIS de drempel van >= 90%. Het clustereffect bij kleine n is significant; het 95% Clopper-Pearson BI rond de Sanday-rate is [92.3%, 100%] (4 clusters) en rond de CGM-rate [72.7%, 99.9%] (3 clusters). Beide ondergrenzen liggen boven de minimale klinisch acceptabele grens van 70%.

Niet-gematchte medicaties -- CGM (1 item):

Bestand Medicatienaam Categorie
CgmTest1.pdf Lercanidipinetabletomhuld10mg Geneesmiddel Stadratdt.a PDF-extractie-artefact (samengesmolten tokens)

Oorzaakanalyse: PDF-extractie heeft enkele tokens niet goed gesplitst, waardoor de naam niet matcht in de G-Standaard. Geen ATC-fout, maar een PDF-extractie-artefact dat met handmatige correctie via de ATC-popup oplosbaar is.

10.5 Oorzaakanalyse

Geen van de niet-gematchte items betreft een geneesmiddel met een verwachte ATC-code. Alle mismatches vallen in de volgende categorieen:

Categorie Aantal Toelichting
Verzorgingsproducten 22 Cremes, lotions, doucheolie, barriere cremes
Zelfzorg/OTC 12 VSM Spiroflor, Mentho 10, Biotene, Nisita, etc.
Supplementen 7 Orthica, Lucovitaal, Phital, Echinaforce, Floradix
Spoelvloeistoffen 6 Curiflush, Gepan Instill
Hulpmiddelen 5 Steriskin, Voorzetkamer, Cavilon, Wellform, Tendo
Onbekend 2 Aerosol zonder stofnaam, Tolak Creme

Deze producten hebben geen ATC-code in de G-Standaard en worden door de apotheker handmatig beoordeeld via de ATC-popup. Dit is conform het verwachte gedrag en valt binnen de acceptatiecriteria (totale dekking >= 98% inclusief handmatige correctie).

11. Hervalidatie

Hervalidatie van dit protocol is vereist bij:

  • Toevoeging van een nieuw AIS-systeem
  • Wezenlijke wijziging van een bestaande parser (inclusief CGM)
  • Update van de G-Standaard database die de lookup-resultaten beinvloedt
  • Signalen uit het veld dat een AIS-systeem structureel lagere match rates oplevert