Ga naar inhoud

V1a -- Validatieprotocol: G-Standaard ATC Lookup

Versie 1.0.0 -- maart 2026

1. Doel

Verificatie van de correcte werking van de ATC-verrijkingsfunctie (lookup_atc() in features/medicatiebeoordeling/lookup.py), die geneesmiddelnamen vertaalt naar ATC-codes via de G-Standaard database.

Dit protocol valideert de lookup-functie in isolatie. Voor de end-to-end validatie per AIS-systeem (inclusief parser-volledigheid en handmatige correctie), zie V1b -- AIS-integratievalidatie.

2. Type studie

Technische verificatie. De G-Standaard is een autoritatieve bron (beheerd door Z-Index/KNMP). Remedice wijzigt de inhoud niet. De verificatie richt zich op de correcte implementatie van de lookup-functie.

3. Testontwerp

3.1 Referentieset

Samenstelling van een referentieset van 100 geneesmiddelnamen met bekende ATC-codes:

Categorie Aantal Voorbeelden
Gangbare geneesmiddelen 50 Metformine, omeprazol, amlodipine, metoprolol
Minder gangbare geneesmiddelen 25 Entecavir, bosentan, tolvaptan
Randgevallen 25 Combinatiepreparaten, merknamen, generieke namen met suffix

3.2 Selectie

  • Gangbaar: willekeurig uit de top-200 meest voorgeschreven middelen in NL
  • Minder gangbaar: willekeurig uit overige G-Standaard entries
  • Randgevallen: doelgericht geselecteerd op bekende moeilijkheden

3.3 Gold standard

De correcte ATC-code per geneesmiddel, handmatig opgezocht in de G-Standaard database.

4. Uitvoering

  1. Voer elke geneesmiddelnaam in via lookup_atc(naam)
  2. Registreer: geretourneerde ATC-code, matchtype (exact/fuzzy), matchscore
  3. Vergelijk met gold standard

5. Meetpunten

Meetpunt Definitie
Exact match rate Percentage exacte namen met correcte ATC-code
Fuzzy match correctheid Percentage fuzzy matches met correcte ATC-code
Fout-positief rate Percentage namen met incorrecte ATC-code

6. Acceptatiecriteria

Criterium Drempel
Exact match rate >= 99%
Fuzzy match correctheid >= 95%
Fout-positief rate <= 2%

7. Steekproefonderbouwing

7.1 Methode

Precisie-gebaseerde steekproefberekening: de steekproef is zo gekozen dat het 95%-betrouwbaarheidsinterval (Clopper-Pearson exact binomiaal) rond de geschatte proporties smal genoeg is om klinisch relevante afwijkingen van de acceptatiedrempels te detecteren.

7.2 Berekening per categorie

Gangbare geneesmiddelen (n = 50, exact match): - Verwachte match rate: >= 99% (lookup op gestandaardiseerde namen) - Normale benadering: voor het schatten van een proportie p = 0.99 met halve BI-breedte d = 0.05 is de benodigde steekproef n = Z^2 * p * (1-p) / d^2 = 1.96^2 * 0.99 * 0.01 / 0.05^2 = 15.2. Met n = 50 is er ruim voldoende precisie. - Clopper-Pearson: bij 49/50 correct (98%) is het 95% BI [89.4%, 99.9%]. Bij 50/50 correct (100%) is het 95% BI [92.9%, 100%]. In beide gevallen ligt de ondergrens ruim boven de 95%-drempel voor toevallige fout.

Minder gangbare geneesmiddelen (n = 25): - Verwachte match rate: >= 95% - Clopper-Pearson: bij 24/25 correct (96%) is het 95% BI [79.6%, 99.9%]. De breedte van het interval (20.3%) is acceptabel voor deze subgroep: een lagere match rate in deze categorie is klinisch minder kritisch dan bij gangbare middelen, en wordt gedekt door de overall drempel.

Randgevallen (n = 25): - Verwachte fuzzy match rate: >= 90% - Clopper-Pearson: bij 23/25 correct (92%) is het 95% BI [74.0%, 99.0%]. De breedte (25.0%) is inherent aan de kleinere subgroep. De randgevallen zijn doelgericht geselecteerd (niet willekeurig), waardoor de foutmodi beter worden gedekt dan bij een willekeurige steekproef van dezelfde omvang.

7.3 Overall precisie

Over alle 100 namen: bij een overall match rate van 97% is het 95% BI [91.5%, 99.4%] (Clopper-Pearson). De ondergrens (91.5%) ligt ruim boven de klinisch relevante grens van 90%, waarmee met hoge zekerheid kan worden vastgesteld dat de lookup-functie adequaat presteert.

7.4 Stratificatie-rationale

De 50/25/25-verdeling is bewust scheef naar gangbare geneesmiddelen: deze vertegenwoordigen >80% van het werkelijke gebruik. De overrepresentatie van randgevallen (25%) ten opzichte van hun werkelijke prevalentie (<5%) is een doelgerichte keuze om de moeilijkste foutmodi te dekken.

8. Rapportage

  • Totaal en per categorie: match rate, fout-positieven, geen-resultaten
  • Lijst van alle foutieve matches met oorzaakanalyse
  • Conclusie: voldoet/voldoet niet