- Add architecture overview, implementation plan, and intent overview - Add intake intent process specs (gap analyse, bouwplan, testplan) - Add swift architecture specs and visualization prompts - Remove obsolete aispeedrun-manifesto template Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
10 KiB
Architectuur Overzicht — Mini-EPD
Versie: v1.0 Datum: 4 februari 2026 Doelgroep: Product owners, IT consultants, data scientists
1. Introductie
Mini-EPD is een elektronisch patiëntendossier voor de geestelijke gezondheidszorg. Het systeem combineert klassieke dossiervoering met een AI-gestuurde spraakinterface genaamd Cortex.
Elevator pitch: Een EPD waarin zorgmedewerkers niet hoeven te klikken, maar gewoon zeggen wat ze willen doen. "Maak notitie voor Jan, medicatie gegeven" — en het gebeurt.
2. Technische Stack
| Laag | Technologie | Rol |
|---|---|---|
| Frontend | Next.js 14, React, Tailwind CSS | Gebruikersinterface |
| Backend | Next.js API Routes | Server-logica en API's |
| Database | Supabase (PostgreSQL) | Opslag patiëntgegevens |
| Authenticatie | Supabase Auth | Inloggen en toegangsbeheer |
| AI - Taal | Claude (Anthropic) | Classificatie en samenvatting |
| AI - Spraak | Deepgram | Spraak-naar-tekst |
| Hosting | Vercel | Deployment en hosting |
3. Module-overzicht
Het systeem bestaat uit zes hoofdmodules:
| Module | Doel | Primaire gebruiker |
|---|---|---|
| Cortex | AI spraak/tekst commando's | Iedereen |
| Dashboard | Overzicht werkzaamheden | Behandelaar |
| Patiënten | Dossiers en intake | Iedereen |
| Verpleegrapportage | Dagnotities en overdracht | Verpleegkundige |
| Agenda | Afspraken en planning | Iedereen |
| Clients | (Legacy, doorverwijzing) | — |
Module-beschrijvingen
Cortex — AI Command Center
Het "brein" van het systeem. Medewerkers geven spraak- of tekstcommando's, Cortex begrijpt de intentie en voert de actie uit. Bijvoorbeeld: "zoek marie" opent direct het zoekscherm met resultaten.
Dashboard
Startpagina met overzicht van caseload, aandachtspunten en aankomende afspraken. Geeft behandelaars in één oogopslag zicht op hun werk.
Patiënten
Beheer van alle patiënten en hun dossiers. Elk dossier bevat:
- Basisgegevens (NAW, verzekering)
- Screening (hulpvraag, documenten)
- Intake (anamnese, diagnoses, risico's)
- Behandelplan (doelen, interventies)
- Rapportage (dagnotities)
Verpleegrapportage
Twee functies:
- Rapportage — Invoer van dagelijkse observaties per patiënt
- Overdracht — AI-samenvatting van alle notities voor shift-wissel
Agenda
Kalenderweergave van alle afspraken. Filtert per patiënt, dag of week.
4. Cortex — Diepere Uitwerking
Cortex is het onderscheidende element van dit EPD. Het werkt met drie lagen:
Laag 1: Reflex Arc (Snelle herkenning)
- Wat: Lokale patroonherkenning zonder AI
- Snelheid: <20 milliseconden
- Wanneer: Eenvoudige, veelvoorkomende commando's
- Voorbeeld: "notitie jan" → herkent direct als "dagnotitie maken"
Laag 2: Orchestrator (AI-classificatie)
- Wat: Claude AI analyseert complexe invoer
- Snelheid: 200-800 milliseconden
- Wanneer: Meerdere acties, context nodig, onduidelijke input
- Voorbeeld: "Zeg jan af en maak notitie griep" → herkent twee acties
Laag 3: Nudge (Proactieve suggesties)
- Wat: Suggesties na voltooide acties
- Wanneer: Na opslaan van bepaalde notities
- Voorbeeld: Notitie met "wond" → suggestie: "Wondcontrole inplannen?"
Ondersteunde commando's (intents)
| Intent | Wat het doet | Voorbeeld |
|---|---|---|
dagnotitie |
Verpleegkundige notitie | "medicatie jan gegeven" |
zoeken |
Patiënt zoeken | "zoek marie" |
overdracht |
Overdracht openen | "overdracht" |
agenda_query |
Afspraken bekijken | "afspraken vandaag" |
create_appointment |
Afspraak maken | "plan intake jan morgen 14:00" |
cancel_appointment |
Afspraak annuleren | "annuleer afspraak jan" |
intake_status |
Intake voortgang | "wat moet ik nog doen?" |
Cortex UI-opbouw
Het scherm is verticaal gesplitst:
- Links (40%): Chat — conversatie met Cortex
- Rechts (60%): Werkgebied — formulieren en lijsten
Sneltoetsen:
Cmd/Ctrl + K— Focus op invoerveldCmd/Ctrl + Enter— Verstuur commandoEsc— Sluit werkgebied
5. Data-architectuur
Kernentiteiten
De database is georganiseerd rond de patiënt als centrale entiteit:
| Entiteit | Beschrijving |
|---|---|
| patients | Basisgegevens patiënten |
| encounters | Contactmomenten (afspraken, bezoeken) |
| observations | Meetgegevens (vitals, symptomen) |
| conditions | Diagnoses en aandoeningen |
| reports | Alle notities en rapportages |
| intakes | Intake-trajecten |
| care_plans | Behandelplannen |
| risk_assessments | Risico-evaluaties |
| practitioners | Zorgverleners |
Rapportage-types
Alle notities zitten in één tabel (reports) met een type-aanduiding:
| Type | Gebruik |
|---|---|
verpleegkundig |
Dagelijkse zorgnotities |
observatie |
Klinische waarnemingen |
incident |
Incidenten/crises |
voortgang |
Voortgangsnota's |
medicatie |
Medicijnbeheer |
contact |
Contactlogboek |
API-groepen
De backend API's zijn logisch gegroepeerd:
| Groep | Functie |
|---|---|
/api/patients/* |
Patiëntgegevens |
/api/reports/* |
Rapportages CRUD |
/api/overdracht/* |
Shift-overdracht + AI-samenvatting |
/api/intakes/* |
Intake-beheer |
/api/cortex/* |
AI command center |
/api/deepgram/* |
Spraakherkenning |
6. Diagrambeschrijvingen
Onderstaande beschrijvingen kun je gebruiken om visuele diagrammen te maken.
Diagram A: Systeemoverzicht (Container)
Componenten:
- Gebruiker (persoon) — Zorgmedewerker met browser
- Frontend (container) — Next.js React applicatie
- API Layer (container) — Next.js API Routes
- Database (container) — Supabase PostgreSQL
- Claude AI (externe service) — Anthropic API
- Deepgram (externe service) — Spraak-naar-tekst API
Verbindingen:
- Gebruiker → Frontend (HTTPS)
- Frontend → API Layer (REST/SSE)
- API Layer → Database (SQL via Supabase client)
- API Layer → Claude AI (HTTPS, voor classificatie en samenvatting)
- Frontend → Deepgram (WebSocket, voor live spraak)
Diagram B: Cortex Flow (Sequence)
Actoren: Gebruiker, Frontend, Reflex Arc, Orchestrator (Claude), Database
Flow:
- Gebruiker spreekt/typt commando
- Frontend stuurt tekst naar API
- Reflex Arc probeert lokaal te classificeren
- Als succesvol: Retourneer intent + entiteiten
- Als niet succesvol: Escaleer naar Orchestrator
- Orchestrator (Claude) analyseert en retourneert intent chain
- Frontend toont juiste werkgebied (formulier/lijst)
- Gebruiker voltooit actie
- Data wordt opgeslagen in Database
- (Optioneel) Nudge evalueert en toont suggestie
Diagram C: Module-relaties (Component)
Modules en hun connecties:
┌─────────────────────────────────────────────────────┐
│ CORTEX │
│ (kan alle andere modules aansturen via commando's) │
└───────────────────────┬─────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌───────────┐ ┌───────────────┐ ┌────────┐
│ PATIËNTEN │◄──│ VERPLEEG- │ │ AGENDA │
│ │ │ RAPPORTAGE │ │ │
└─────┬─────┘ └───────────────┘ └────────┘
│
▼
┌─────────────┐
│ DASHBOARD │
│ (overzicht) │
└─────────────┘
Beschrijving:
- Cortex fungeert als "universele afstandsbediening"
- Patiënten-module is de kern voor dossierdata
- Verpleegrapportage leest en schrijft naar patiëntendossiers
- Agenda toont afspraken gekoppeld aan patiënten
- Dashboard aggregeert data uit alle modules
Diagram D: Data-relaties (ERD vereenvoudigd)
Entiteiten en relaties:
PATIENT (1) ──────< (N) ENCOUNTER
│
├──────< (N) OBSERVATION
│
├──────< (N) CONDITION
│
├──────< (N) REPORT
│
└──────< (N) INTAKE
│
├──── ANAMNESE
├──── EXAMINATION
├──── RISK_ASSESSMENT
└──── CARE_PLAN
Leeswijzer:
- Eén patiënt heeft meerdere contactmomenten (encounters)
- Eén patiënt heeft meerdere observaties, diagnoses en rapportages
- Eén patiënt kan meerdere intake-trajecten doorlopen
- Elk intake-traject bevat anamnese, onderzoek, risico's en behandelplan
7. Glossary
| Term | Betekenis |
|---|---|
| EPD | Elektronisch Patiënten Dossier |
| Cortex | AI command center voor spraak/tekst commando's |
| Intent | Gedetecteerde bedoeling achter een commando |
| Reflex Arc | Snelle, lokale patroonherkenning (geen AI) |
| Orchestrator | AI-laag voor complexe classificatie |
| Nudge | Proactieve suggestie na een actie |
| Overdracht | Shift-wissel met samenvatting van notities |
| RLS | Row Level Security — database-beveiliging per gebruiker |
| Intake | Opnameproces nieuwe patiënt |
| Anamnese | Medische voorgeschiedenis |
| ROM | Routine Outcome Monitoring — effectmeting behandeling |
| FHIR | Internationale standaard voor zorgdata-uitwisseling |
8. Contactpunten voor verdieping
| Onderwerp | Waar te vinden |
|---|---|
| Functioneel ontwerp Cortex | docs/swift/ |
| API-documentatie | app/api/ (code + comments) |
| Database schema | supabase/migrations/ |
| UI componenten | components/ |
| Release notes | docs/releasenotes/ |
Dit document geeft een high-level overzicht. Voor technische implementatiedetails, raadpleeg de broncode of vraag het development team.