# Mini-EPD — Architectuur & Datacomponenten (PO/PM-overzicht) > Doel van dit document: één begrijpelijk overzicht van **wat het systeem doet**, **uit welke bouwblokken het bestaat** en **welke gegevens het beheert** — zonder dat je code hoeft te lezen. Bedoeld voor product owners en project managers. --- ## 1. In één alinea Het Mini-EPD is een **elektronisch patiëntdossier voor de GGZ**. Een zorgverlener kan patiënten aanmelden, intake doen, behandelplannen maken, dagelijkse rapportages schrijven en diensten overdragen aan een collega. Het bijzondere is de **Cortex AI Command Center**: een natuurlijke-taal-interface (typen of inspreken) waarmee de zorgverlener acties uitvoert in gewone zinnen, zoals *"maak een notitie voor Jan: medicatie ingenomen"* of *"plan een afspraak morgen om 14:00"*. --- ## 2. De drie lagen van het systeem ``` ┌──────────────────────────────────────────────────────────────┐ │ 1. WAT DE GEBRUIKER ZIET (de modules / schermen) │ │ Dashboard · Patiëntdossier · Intake · Behandelplan · │ │ Verpleegrapportage · Agenda · Cortex AI Command Center │ ├──────────────────────────────────────────────────────────────┤ │ 2. DE LOGICA (de API's / verwerking) │ │ Rapportage · Overdracht · Behandelplan · Intake · │ │ Cortex (intentherkenning + chat) · Spraak-naar-tekst │ ├──────────────────────────────────────────────────────────────┤ │ 3. DE GEGEVENS (de database + externe diensten) │ │ Supabase database · Claude AI · Deepgram (spraak) │ └──────────────────────────────────────────────────────────────┘ ``` --- ## 3. De modules (wat de gebruiker ziet) | Module | Wat de zorgverlener ermee doet | |---|---| | **Dashboard** | Startscherm met het Cortex AI Command Center. Hier begint elke actie. | | **Patiëntdossier** | Volledig dossier per patiënt: basisgegevens (incl. BSN), diagnoses, observaties, intakes. | | **Intake** | Stapsgewijze intakeprocedure voor een nieuwe patiënt: contactpersonen, risicotaxatie, anamnese, onderzoek, diagnose, behandeladvies. | | **Behandelplan** | Behandeldoelen en interventies per leefgebied vastleggen en beheren. | | **Verpleegrapportage** | Dagelijkse notities in een tijdlijn (nacht/ochtend/middag/avond) + **overdracht** met AI-samenvatting voor de collega van de volgende dienst. | | **Agenda** | Kalender met alle afspraken; afspraken inplannen, verzetten of annuleren. | --- ## 4. Het hart: Cortex AI Command Center De zorgverlener typt of spreekt een opdracht in. Het systeem begrijpt de bedoeling ("intent") en voert de juiste actie uit. Dit gebeurt in **drie slimme lagen** die samen snelheid én begrip combineren: ``` Gebruiker zegt/typt iets │ ▼ ┌─────────────────────┐ Snel & gratis. Herkent veelvoorkomende │ 1. REFLEX (lokaal) │ opdrachten direct via patronen (<20ms). └─────────┬───────────┘ Twijfel of complex? → door naar laag 2. │ ▼ ┌─────────────────────┐ AI (Claude) lost lastige gevallen op: │ 2. ORCHESTRATOR (AI)│ meerdere opdrachten tegelijk, "hem/haar", └─────────┬───────────┘ "morgen", onduidelijke zinnen. │ ▼ Actie wordt uitgevoerd (notitie opgeslagen, afspraak gemaakt...) │ ▼ ┌─────────────────────┐ Proactieve suggestie achteraf, bijv. │ 3. NUDGE │ "Wil je hier ook een observatie bij maken?" └─────────────────────┘ ``` **Waarom drie lagen?** De Reflex-laag handelt het gros af zonder AI-kosten en zonder vertraging. Alleen echt lastige zinnen gaan naar de (betaalde, iets tragere) AI. De Nudge-laag verhoogt de zorgkwaliteit door op het juiste moment iets te suggereren. **Wat begrijpt Cortex (de "intents"):** - Dagnotitie maken · Patiënt zoeken · Overdracht bekijken - Agenda opvragen · Afspraak inplannen / annuleren / verzetten **Chat & artifacts:** Het scherm is gesplitst — links een **chatpaneel** (gesprek met de assistent), rechts een **werkblok** ("artifact") dat past bij de opdracht: een notitieformulier, een overdrachtssamenvatting, een zoekresultaat, enzovoort. --- ## 5. De externe diensten (afhankelijkheden) | Dienst | Waarvoor | Belang voor het product | |---|---|---| | **Supabase** | Database + inloggen (authenticatie) | De plek waar alle patiëntgegevens veilig staan. | | **Claude (Anthropic)** | AI: intentherkenning, chat, overdrachtssamenvatting, behandelplan genereren | De "intelligentie" achter Cortex en de samenvattingen. | | **Deepgram** | Spraak omzetten naar tekst | Maakt inspreken van notities mogelijk. | > **Aandachtspunt PO/PM:** Claude en Deepgram zijn betaalde externe API's. Gebruik = kosten. Cortex is bewust zo ontworpen dat de goedkope lokale laag het meeste afvangt. --- ## 6. De gegevens (datacomponenten) Het datamodel is **FHIR-geïnspireerd**. FHIR is de internationale standaard voor gestructureerde zorggegevens. "Geïnspireerd" betekent: we volgen de standaard waar het helpt voor uitwisselbaarheid met andere systemen (denk ICD-10/DSM-5 diagnosecodes, BIG/AGB-nummers), maar pragmatisch vereenvoudigd waar dat sneller bouwt. ### De kerngegevens en hoe ze samenhangen ``` ┌──────────────┐ │ PATIËNT │ (naam, BSN, geboortedatum, status) └──────┬───────┘ ┌──────────────┬───────┼───────────┬──────────────┐ ▼ ▼ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │SCREENING │ │ INTAKE │ │ DIAGNOSE │ │OBSERVATIE│ │BEHANDEL- │ │(aanmeld) │ │(+ risico,│ │(condition)│ │(meting) │ │ PLAN │ │ │ │ anamnese,│ │ │ │ │ │(doelen, │ │ │ │ onderzoek)│ │ │ │ │ │interventies)│ └──────────┘ └────┬─────┘ └──────────┘ └──────────┘ └──────────┘ │ ▼ ┌──────────────┐ │ CONTACTMOMENT │ (encounter: intake-gesprek, sessie) └──────┬───────┘ ▼ ┌──────────────┐ │ RAPPORTAGE │ (dagnotities: voortgang, observatie, │ (reports) │ incident, medicatie, verpleegkundig...) └──────────────┘ ``` ### Wat elk gegevenstype bevat | Gegevenstype | Wat het is | |---|---| | **Patiënt** | De persoon in zorg: naam, BSN, geboortedatum, en een **status** (aangemeld → in zorg → afgerond / afgemeld). | | **Behandelaar** | De zorgprofessional, met BIG- en AGB-nummer; gekoppeld aan het inlogaccount. | | **Organisatie** | De GGZ-instelling. | | **Screening** | Het aanmeldproces: hulpvraag, activiteitenlog, documenten (verwijsbrieven), en het besluit (geschikt / niet geschikt). | | **Intake** | De intakesessie met onderliggende onderdelen: **anamnese**, **onderzoeken** en **risicotaxaties** (bv. suïcide-/agressierisico met niveau laag→zeer hoog). | | **Diagnose** (condition) | DSM-5/ICD-10 diagnoses met status. | | **Observatie** | Metingen en inschattingen (vitale waarden, ROM-scores, klachten). | | **Behandelplan** | Doelen en interventies, gekoppeld aan diagnoses. | | **Contactmoment** (encounter) | Een afspraak of sessie tussen patiënt en behandelaar (voedt ook de agenda). | | **Rapportage** (reports) | Eén centrale tabel voor álle dagnotities, met een **type** (voortgang, observatie, incident, medicatie, contact, crisis, verpleegkundig, ...) en een **categorie** (medicatie, ADL, gedrag, incident, observatie). | ### De patiëntreis door de data ``` Aangemeld → Screening → Intake → In zorg → Overdracht (status: (besluit: (anamnese, (diagnoses, (samenvatting planned) geschikt?) risico, behandelplan, voor volgende onderzoek) dagrapportages) dienst) ``` --- ## 7. Belangrijke regels in de data (voor PO/PM goed om te weten) | Regel | Wat het betekent | Waarom relevant | |---|---|---| | **Soft delete** | Verwijderen markeert alleen ("deleted_at"), de data blijft staan. | Niets gaat echt verloren — belangrijk voor zorgdossiers en herstel. | | **Shift-logica** | Notities vóór 07:00 horen bij de dienst van de vórige dag. | Zorgt dat nachtdiensten correct in de overdracht vallen. | | **Overdrachtsfilter** | Alleen notities met "meenemen in overdracht" verschijnen in de samenvatting. | De zorgverlener bepaalt wat relevant is voor de collega. | | **Row Level Security (RLS)** | De database dwingt af wie welke gegevens mag zien. | Privacy/AVG-fundament. *Let op: in deze prototypefase nog ruim ingesteld — verfijning per team/organisatie staat nog open.* | | **AI-herkomst** | Bij AI-gegenereerde inhoud wordt zekerheid en redenering bewaard. | Transparantie/controleerbaarheid van AI-output. | --- ## 8. Aandachtspunten & status (eerlijk beeld) - **Prototype-status:** Dit is een prototype, geen productiesysteem. De beveiligingsregels (RLS) zijn nog ruim; verfijning per team/organisatie is nog niet gebouwd. - **Twee-sporen datamodel:** Er bestaat nog een oudere ("clients/treatment_plans") naast de nieuwe FHIR-structuur ("patients/care_plans"). Het nieuwe spoor is leidend; het oude is nog niet volledig opgeruimd. Dit is technische schuld om in de gaten te houden. - **Externe AI-kosten:** Schaalbaarheid van Cortex/AI hangt samen met gebruikskosten van Claude en Deepgram. - **Geen echte interoperabiliteit (nog):** Het model is FHIR-*geïnspireerd*; volledige FHIR-uitwisseling met externe systemen is nog niet geïmplementeerd. --- *Bronnen: codebase mini-epd-prototype (modules in `app/`, logica in `app/api/`, Cortex in `lib/cortex/`, datamodel in `supabase/migrations/`).*