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:
-
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.
-
Strikte data-allowlist: De helper
features/atlas/patient_context.pydefinieert 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 op90+(HIPAA Safe Harbor stijl). -
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.
-
System-prompt-discipline: De
ATLAS_INSTRUCTION(ziefeatures/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 infeatures/atlas/patient_context.pyherhaalt dit via de pipeline voor elke message met patientcontext. -
Tenant-brede kill-switch in de sidebar zelf:
Apotheek.atlas_patient_context_enabledis 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. -
UI-disclaimer: In de sidebar-header staat onder de status-pill: "Atlas zoekt relevantere bronnen op basis van patientcontext. Geen klinische analyse."
-
Audit-trail: Per assistant-bericht legt
ReviewChatMessagevast 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:
- 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.
- 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.
- 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.
- 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:
- 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.
- Server-side PII-redaction: alle Atlas-input gaat door
reject_if_piizodat directe identifiers (BSN, geboortedatum, naam-patronen) worden geweigerd voordat ze het model bereiken. - 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:
- Strikte allowlist in
features/atlas/patient_context.pyzodat geen extra velden kunnen lekken. - Tenant-brede kill-switch in de Atlas-sidebar; server is autoriteit en honoreert de tenant-switch ongeacht de payload.
- System-prompt-discipline (
ATLAS_INSTRUCTIONinfeatures/atlas/bedrock.pyplus het patientcontext-framingblok infeatures/atlas/patient_context.py) verbiedt patientspecifieke conclusies. Afwijkingen worden via de bestaande validatieset (validatie/protocol_atlas.md) gedetecteerd bij periodieke runs. - 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. - 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