Ga naar inhoud

AI Boundary Document - Afbakening SaMD-scope

Versie 1.0.0 - juni 2026

Dit document definieert de grens tussen componenten die als medisch hulpmiddel (Software as a Medical Device, SaMD) worden beschouwd en componenten die daarbuiten vallen. Deze afbakening is essentieel voor de MDR-classificatie en bepaalt welke onderdelen van Remedice onder de CE-markeringsvereisten vallen.

1. Binnen MDR-scope (SaMD Klasse IIa)

De volgende analysemodules in de medicatiebeoordeling vallen binnen de MDR-scope:

Module Type Databron Toelichting
STOPP-NL V2 Regelgebaseerd stop-v2.json (geencodeerd uit gepubliceerde criteria) Identificeert potentieel ongeschikte medicatie bij ouderen
ACB-score Lookup + sommatie acb.json (geencodeerd uit gepubliceerde ACB-schaal) Berekent anticholinerge belasting
Dubbelmedicatie Regelgebaseerd ATC-codes uit G-Standaard Detecteert therapeutische duplicaten
Standaardvragen Regelgebaseerd standaardvragen_base.json (KNMP-richtlijnen) Genereert aandachtspunten bij specifieke medicatie
Bijwerkingen-heatmap Lookup SideEffectFrequency model (Farmacotherapeutisch Kompas) Visualiseert bekende bijwerkingen
Maagbescherming Regelgebaseerd + scoring maagbescherming.json (NHG/KNMP-richtlijnen) Beoordeelt maagbeschermingsbehoefte bij NSAID-gebruik

Kenmerken van de SaMD-componenten:

  • Deterministisch: Dezelfde invoer levert altijd dezelfde uitvoer
  • Reproduceerbaar: Resultaten zijn herhaalbaar en auditeerbaar
  • Gebaseerd op erkende bronnen: G-Standaard, gepubliceerde klinische criteria, NHG-richtlijnen
  • Geen AI/ML: Geen neurale netwerken, geen generatieve modellen
  • Beslisondersteuning: Output is adviserend; de apotheker neemt de eindbeslissing

Classificatie-onderbouwing:

Conform MDR Bijlage VIII Regel 11: software die bedoeld is om informatie te verstrekken die wordt gebruikt bij het nemen van beslissingen voor therapeutische doeleinden wordt ingedeeld in Klasse IIa. De analyses verstrekken informatie die de apotheker gebruikt bij het optimaliseren van medicamenteuze therapie.

Referentie: MDCG 2021-24 "Guidance on classification of medical devices" bevestigt dat CDS-software (Clinical Decision Support) die klinisch relevante informatie genereert voor behandelbeslissingen als medisch hulpmiddel geldt.

2. Buiten MDR-scope

2.1 Atlas Chat

Aspect Beschrijving
Functie Beantwoording van farmaceutische informatievragen op basis van richtlijnen en literatuur (RAG-zoektool)
Technologie Amazon Bedrock Claude Sonnet 4.6 met een Bedrock Knowledge Base (Aurora Serverless v2 + pgvector, corpus: richtlijnen, NHG, FK) en optionele PubMed-escalatie
Patientdata Optioneel: gepseudonimiseerde patientcontext (leeftijdsbucket, geslacht, medicatie, contra-indicaties, labwaarden) uitsluitend voor RAG-retrieval. Geen direct identificerende velden, geen analyses. Beheerd via een tenant-brede opt-in schakelaar in de Atlas-sidebar
Output Citaten naar richtlijnen en literatuur. Geen patientspecifieke conclusies of staak/start-adviezen

Waarom buiten MDR-scope:

  1. Geen medisch doel voor individuele patienten: Atlas blijft een informatie-/RAG-zoektool. De gepseudonimiseerde patientcontext wordt alleen gebruikt om de meest relevante bronnen uit het bestaande RAG-corpus te selecteren voor de leeftijdsgroep, het geslacht en de medicatieklasse. Atlas formuleert geen klinische conclusies over de patient. Zie ook sectie 3.1: dit is geen her-introductie van de "deep review" functie.

  2. Strikte data-allowlist: De helper features/atlas/patient_context.py definieert een vaste set van vijf top-level velden (leeftijd_bucket, geslacht, medicatie, contra_indicaties, labwaarden). Naam, geboortedatum, BSN, patientnummer en vrije-tekst notities/analyses komen nooit in de payload terecht. Leeftijd wordt verzonden als 5-jaars bucket met cap op 90+ (HIPAA Safe Harbor stijl).

  3. Informatie-opvraagtool: Conform MDCG 2021-24 valt software die uitsluitend informatie ophaalt uit bestaande bronnen (zoals een zoekfunctie op een farmaceutisch naslagwerk) buiten de definitie van medisch hulpmiddel, mits het geen informatie genereert die specifiek is bedoeld voor het nemen van klinische beslissingen over individuele patienten. De system-prompt instrueert het model expliciet om alleen bronnen aan te wijzen, geen patientspecifieke adviezen.

  4. System-prompt-discipline: De ATLAS_INSTRUCTION (zie features/atlas/bedrock.py) bevat een framing-blok dat het model expliciet verbiedt om patientspecifieke conclusies, analyses of staak/start-adviezen te formuleren. Het patientcontext-framingblok in features/atlas/patient_context.py herhaalt dit via de pipeline voor elke message met patientcontext.

  5. Tenant-brede kill-switch in de sidebar zelf: Apotheek.atlas_patient_context_enabled is een opt-in schakelaar die standaard uit staat; een nieuwe tenant moet patientcontext bewust aanzetten (MDR/GDPR-positie). De schakelaar is beheerbaar vanuit de Atlas-sidebar door iedere gebruiker met Atlas-toegang. De server is autoriteit: ongeacht de payload negeert de server de context als de tenant-switch uit staat.

  6. UI-disclaimer: In de sidebar-header staat onder de status-pill: "Atlas zoekt relevantere bronnen op basis van patientcontext. Geen klinische analyse."

  7. Audit-trail: Per assistant-bericht legt ReviewChatMessage vast welke top-level velden zijn meegestuurd (patient_context_fields_sent), het pseudo-id (patient_pseudo_id = review-id of patient-uuid, nooit BSN/patientnummer) en de bron (patient_context_source: medicatiebeoordeling). De inhoud van de context wordt niet gelogd; alleen de keys.

2.3 Farmacotherapeutische anamnese (transcriptie + extractie)

Aspect Beschrijving
Functie Transcriptie van het gesprek tussen apotheker en patient (AWS Transcribe) en samenvatting/structurering van genoemde medicatie, klachten en observaties (Amazon Bedrock Claude Haiku 4.5).
Technologie AWS Transcribe in eu-central-1 (streaming met server-side VAD voor live transcriptie, batch-transcriptie als fallback). Amazon Bedrock Claude Haiku 4.5 voor de klinische samenvatting.
Patientdata Audio en tekst van het gesprek, transient verwerkt op AWS (Transcribe). PII-redaction (uitsluitend regex) vóór opslag op AWS RDS. Originele audio wordt niet persistent gemaakt.
Output Geredigeerd transcript en klinische samenvatting die de apotheker reviewt voor opname in het patientendossier.

Waarom buiten MDR-scope:

  1. Geen klinische interpretatie door AI: AWS Transcribe doet transcriptie (audio naar tekst), Amazon Bedrock Claude Haiku 4.5 maakt een feitelijke samenvatting. Geen van beide genereert klinische aandachtspunten, adviezen of oordelen over de patient.
  2. Data preparation, geen beslisondersteuning: de AI-output is input voor de apotheker en voor de deterministische analyses (STOPP-NL, ACB, dubbelmedicatie). Alle klinische beslislogica blijft regelgebaseerd en deterministisch binnen de MDR-scope.
  3. Menselijke validatie voor gebruik: de apotheker valideert het transcript en de samenvatting voordat de medicatiebeoordeling-analyses worden gestart. AI-output bereikt nooit ongevalideerd de klinische beslislaag.
  4. Conform MDCG 2019-11: software die uitsluitend data prepareert, documenteert of structureert zonder klinische interpretatie valt buiten de definitie van medisch hulpmiddel.

2.2 Overige niet-SaMD modules

De volgende Remedice-modules vallen buiten de MDR-scope omdat zij geen medisch doel dienen:

  • Gebruikersbeheer en authenticatie
  • Roosterplanning
  • Nieuws en werkafspraken
  • Facturatie en onboarding
  • Teamoverzicht en profielbeheer

3. Bewuste ontwerpkeuzes

3.1 Verwijdering deep review (en het verschil met patientcontext naar Atlas)

De oorspronkelijke "deep review"-functie (een RAG-functie met patientspecifieke medicatielijsten en contra-indicaties die een gegenereerde analyse opleverde) is bewust verwijderd uit de medicatiebeoordeling-module. Reden: deze functie zou vanwege het patientspecifieke karakter waarschijnlijk binnen de MDR-scope vallen, wat een non-deterministisch AI-component binnen het medisch hulpmiddel zou introduceren. Dit zou de validatie en CE-markering aanzienlijk compliceren.

De gepseudonimiseerde patientcontext naar Atlas (2026, zie sectie 2.1) is niet hetzelfde als deze deep review. Verschil:

  • Deep review (verwijderd): Atlas genereerde een patientspecifieke analyse en aanbeveling op basis van de hele patient.
  • Patientcontext naar Atlas (huidig): Atlas blijft een RAG-zoektool. De context wordt alleen gebruikt om de juiste bronnen op te halen voor leeftijdsgroep + geslacht + medicatieklasse. Atlas formuleert geen analyse, geen advies, geen conclusie over de patient. Analyses (STOPP/START output) gaan bewust niet mee zodat het model niets kan napraten of er op kan voortbouwen.

Deze framing-discipline wordt geborgd via system-prompt + UI-disclaimer + allowlist + audit-trail (zie sectie 2.1, punten 2-7).

3.2 Gevolgen voor compliance

Door de SaMD-scope te beperken tot deterministische, regelgebaseerde analyses:

  • Is alle output reproduceerbaar en valideerbaar via gestructureerde validatiestudies
  • Zijn de databronnen versioneerbaar en auditeerbaar
  • Is er geen afhankelijkheid van externe AI-diensten binnen de medische functionaliteit
  • Kan de CE-markering worden nagestreefd zonder AI-specifieke MDR-guidance (die nog in ontwikkeling is)

4. Restrisico's rond Atlas Chat

4.1 Gebruiker typt vrije patientdata in Atlas Chat

Een gebruiker kan in het invoerveld vrije tekst met patientgegevens intypen. Beheersmaatregelen:

  1. Disclaimer in UI: "Atlas zoekt relevantere bronnen op basis van patientcontext. Geen klinische analyse." Boven de composer staat aanvullend de instructie geen patientgegevens vrij in te typen.
  2. Server-side PII-redaction: alle Atlas-input gaat door reject_if_pii zodat directe identifiers (BSN, geboortedatum, naam-patronen) worden geweigerd voordat ze het model bereiken.
  3. Gebruiksvoorwaarden: vrije invoer van patientgegevens in het tekstveld blijft afgeraden; alleen via de gestructureerde gepseudonimiseerde context-toggle is patientcontext toegestaan.

4.2 Patientcontext naar Atlas (gepseudonimiseerd) wordt verkeerd geinterpreteerd

Beheersmaatregelen:

  1. Strikte allowlist in features/atlas/patient_context.py zodat geen extra velden kunnen lekken.
  2. Tenant-brede kill-switch in de Atlas-sidebar; server is autoriteit en honoreert de tenant-switch ongeacht de payload.
  3. System-prompt-discipline (ATLAS_INSTRUCTION in features/atlas/bedrock.py plus het patientcontext-framingblok in features/atlas/patient_context.py) verbiedt patientspecifieke conclusies. Afwijkingen worden via de bestaande validatieset (validatie/protocol_atlas.md) gedetecteerd bij periodieke runs.
  4. Audit-trail op ReviewChatMessage (patient_pseudo_id, patient_context_fields_sent, patient_context_source) zodat per assistant-bericht traceerbaar is wat is meegestuurd, zonder dat de inhoud van de context zelf wordt gelogd.
  5. Re-identificatierisico-minimalisatie: leeftijd in 5-jaars buckets met 90+ cap, geen geboortedatum of naam.

5. Jaarlijkse herziening

Dit boundary document wordt jaarlijks herzien, of bij:

  • Toevoeging van nieuwe functionaliteit aan Atlas Chat
  • Wijzigingen in de medicatiebeoordeling-analyses
  • Updates in MDCG-guidance over AI in medische hulpmiddelen
  • Wijzigingen in de AI Act die invloed hebben op de classificatie