redesigdn docs

This commit is contained in:
colinislit
2025-12-27 13:17:00 +01:00
parent 33c6698870
commit c77f1eb554
27 changed files with 3741 additions and 3 deletions

View File

@@ -0,0 +1,486 @@
# Taken & Vragen Analyse: EPD Functionaliteit
**Document:** Wat moet de nieuwe UI kunnen?
**Datum:** december 2024
**Doel:** Inventarisatie van alle taken en vragen die het EPD beantwoordt
---
## 1. Overzicht Huidige EPD Modules
Op basis van de codebase analyse:
```
/epd
├── dashboard/ # Overzicht
├── patients/ # Patiëntbeheer
│ ├── [id]/
│ │ ├── basisgegevens/ # NAW, contactgegevens
│ │ ├── intakes/ # Intake trajecten
│ │ │ └── [intakeId]/
│ │ │ ├── anamnese/ # Voorgeschiedenis
│ │ │ ├── examination/ # Onderzoek
│ │ │ ├── diagnosis/ # Diagnose (ICD-10)
│ │ │ ├── risk/ # Risicotaxatie
│ │ │ ├── kindcheck/ # Kindcheck
│ │ │ ├── contacts/ # Contactpersonen
│ │ │ ├── behandeladvies/# Behandeladvies
│ │ │ └── rom/ # ROM vragenlijsten
│ │ ├── diagnose/ # Diagnosebeheer
│ │ ├── behandelplan/ # Behandelplan
│ │ ├── rapportage/ # Rapportages
│ │ └── screening/ # Screening
├── verpleegrapportage/ # Verpleegkundig overzicht
│ ├── overdracht/ # Overdrachtsrapportage
│ └── rapportage/ # Dagrapportage per patiënt
├── agenda/ # Afspraken
├── clients/ # Client overzicht
└── reports/ # Rapportages overzicht
```
---
## 2. Categorieën van Vragen
### 2.1 ZOEKEN & VINDEN (Wie/Wat/Waar)
| Vraag | Huidige UI | Data |
|-------|------------|------|
| Wie is [naam]? | patients/ → zoeken | patients |
| Waar is [patiënt] opgenomen? | patients/[id] | encounters |
| Welke diagnoses heeft [patiënt]? | patients/[id]/diagnose | conditions |
| Wat is het behandelplan van [patiënt]? | patients/[id]/behandelplan | care_plans |
| Welke medicatie gebruikt [patiënt]? | - (nog niet) | - |
| Wie zijn de contactpersonen van [patiënt]? | intakes/[id]/contacts | contacts |
| Wat is de risicoscore van [patiënt]? | intakes/[id]/risk | risk_assessments |
### 2.2 RAPPORTEREN & DOCUMENTEREN (Vastleggen)
| Taak | Huidige UI | Data |
|------|------------|------|
| Dagnotitie maken | verpleegrapportage/rapportage | reports (type: verpleegkundig) |
| Rapportage schrijven | patients/[id]/rapportage | reports |
| Intake vastleggen | patients/[id]/intakes/new | intakes |
| Anamnese invullen | intakes/[id]/anamnese | anamneses |
| Onderzoek documenteren | intakes/[id]/examination | examinations |
| Diagnose toevoegen | patients/[id]/diagnose | conditions |
| Behandeladvies schrijven | intakes/[id]/behandeladvies | - |
| Risicotaxatie invullen | intakes/[id]/risk | risk_assessments |
| Kindcheck uitvoeren | intakes/[id]/kindcheck | - |
### 2.3 SAMENVATTEN & OVERDRAGEN (Communiceren)
| Taak | Huidige UI | Data |
|------|------------|------|
| Overdracht maken | verpleegrapportage/overdracht | AI samenvatting |
| Samenvatting van vandaag | - | reports (shift_date) |
| Wat is er gebeurd met [patiënt]? | verpleegrapportage/rapportage | reports, vitals |
| Aandachtspunten voor collega | overdracht | include_in_handover |
### 2.4 PLANNEN & ORGANISEREN (Agenda)
| Taak | Huidige UI | Data |
|------|------------|------|
| Mijn afspraken vandaag | agenda/ | appointments |
| Afspraken van [patiënt] | - | appointments |
| Afspraak inplannen | agenda/ (FullCalendar) | appointments |
| Wie zie ik deze week? | agenda/ | appointments |
### 2.5 BEHANDELEN & VOLGEN (Zorgpad)
| Taak | Huidige UI | Data |
|------|------------|------|
| Behandelplan opstellen | patients/[id]/behandelplan | care_plans |
| Doelen formuleren | behandelplan | care_plans.goals |
| Voortgang evalueren | - | - |
| ROM afnemen | intakes/[id]/rom | - |
---
## 3. Frequentie & Prioriteit Matrix
### 3.1 Hoogfrequent (meerdere keren per dag)
| Taak | Freq/dag | Huidige klikken | Ephemeral target |
|------|----------|-----------------|------------------|
| **Dagnotitie maken** | 10-20x | 5-8 | 1 zin |
| **Patiënt zoeken** | 15-20x | 3-5 | 1 zin |
| **Laatste notities bekijken** | 10-15x | 4-6 | 1 zin |
| **Overdracht maken** | 2-3x | 8-12 | 1 zin |
### 3.2 Middenfrequent (dagelijks)
| Taak | Freq/dag | Huidige klikken | Ephemeral target |
|------|----------|-----------------|------------------|
| **Rapportage schrijven** | 3-5x | 6-10 | 1 zin + dicteren |
| **Diagnose bekijken** | 3-5x | 4-6 | 1 zin |
| **Behandelplan raadplegen** | 2-3x | 4-6 | 1 zin |
| **Afspraken bekijken** | 2-3x | 3-4 | 1 zin |
### 3.3 Laagfrequent (wekelijks/maandelijks)
| Taak | Frequentie | Huidige klikken | Ephemeral target |
|------|------------|-----------------|------------------|
| **Intake starten** | 1x/week | 10-15 | Wizard |
| **Behandelplan maken** | 1x/maand | 15-20 | Wizard + AI |
| **Diagnose toevoegen** | 1x/week | 6-8 | 1 zin |
| **Risicotaxatie** | 1x/maand | 10-15 | Wizard |
---
## 4. Mapping naar Ephemeral UI Bouwblokken
### 4.1 Must Have (MVP)
| Bouwblok | Beantwoordt vragen | Prioriteit |
|----------|-------------------|------------|
| **Dagnotitie** | "notitie voor jan: medicatie gegeven" | P1 |
| **Zoeken** | "wie is jan", "zoek marie" | P1 |
| **Overdracht** | "overdracht maken", "samenvatting dienst" | P1 |
### 4.2 Should Have
| Bouwblok | Beantwoordt vragen | Prioriteit |
|----------|-------------------|------------|
| **Rapportage** | "gesprek gehad met jan", "rapportage maken" | P2 |
| **Patiënt Info** | "diagnoses van jan", "behandelplan jan" | P2 |
| **Agenda** | "mijn afspraken", "wanneer zie ik jan" | P2 |
### 4.3 Could Have
| Bouwblok | Beantwoordt vragen | Prioriteit |
|----------|-------------------|------------|
| **Behandelplan** | "plan opstellen voor jan" | P3 |
| **Diagnose** | "diagnose toevoegen: F41.1" | P3 |
| **Risico** | "risicotaxatie jan" | P3 |
| **Intake** | "nieuwe intake starten" | P3 |
---
## 5. Intent Classificatie Mapping
### 5.1 Schrijf-intents (Writer)
```
┌─────────────────────────────────────────────────────────────┐
│ INTENT: dagnotitie │
├─────────────────────────────────────────────────────────────┤
│ Trigger patterns: │
│ • "notitie [patient]" │
│ • "dagnotitie" │
│ • "[patient] medicatie gegeven" │
│ • "[patient] heeft gegeten" │
│ • "incident bij [patient]" │
│ │
│ Entities: │
│ • patient_name: string │
│ • category: medicatie|adl|gedrag|incident|observatie │
│ • content: string (optioneel) │
│ │
│ Pre-fill: │
│ • Patient selector │
│ • Category dropdown │
│ • Tekstveld │
│ • include_in_handover checkbox │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ INTENT: rapportage │
├─────────────────────────────────────────────────────────────┤
│ Trigger patterns: │
│ • "rapportage [patient]" │
│ • "gesprek gehad met [patient]" │
│ • "verslag maken" │
│ • "sessie met [patient]" │
│ │
│ Entities: │
│ • patient_name: string │
│ • report_type: voortgang|observatie|contact|crisis │
│ │
│ Pre-fill: │
│ • Patient selector │
│ • Type dropdown │
│ • Rich text editor │
│ • AI structureren knop │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ INTENT: diagnose_toevoegen │
├─────────────────────────────────────────────────────────────┤
│ Trigger patterns: │
│ • "diagnose [patient]: [code]" │
│ • "diagnose toevoegen" │
│ • "[patient] heeft [diagnose]" │
│ │
│ Entities: │
│ • patient_name: string │
│ • icd10_code: string (optioneel) │
│ • diagnosis_text: string (optioneel) │
│ │
│ Pre-fill: │
│ • Patient selector │
│ • ICD-10 zoeken combobox │
│ • Clinical status │
│ • Severity │
└─────────────────────────────────────────────────────────────┘
```
### 5.2 Lees-intents (Reader)
```
┌─────────────────────────────────────────────────────────────┐
│ INTENT: zoeken │
├─────────────────────────────────────────────────────────────┤
│ Trigger patterns: │
│ • "zoek [naam]" │
│ • "wie is [naam]" │
│ • "vind [naam]" │
│ • "[naam]" (als geen andere intent matcht) │
│ │
│ Entities: │
│ • search_query: string │
│ │
│ Output: │
│ • PatientCards met quick actions │
│ • Selectie → set active patient │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ INTENT: patient_info │
├─────────────────────────────────────────────────────────────┤
│ Trigger patterns: │
│ • "diagnoses van [patient]" │
│ • "behandelplan [patient]" │
│ • "info [patient]" │
│ • "dossier [patient]" │
│ • "risico's [patient]" │
│ │
│ Entities: │
│ • patient_name: string │
│ • info_type: diagnoses|behandelplan|risico|alles │
│ │
│ Output: │
│ • Collapsible info cards │
│ • Quick actions (bewerken, toevoegen) │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ INTENT: overdracht │
├─────────────────────────────────────────────────────────────┤
│ Trigger patterns: │
│ • "overdracht" │
│ • "overdracht maken" │
│ • "samenvatting dienst" │
│ • "wat is er gebeurd vandaag" │
│ │
│ Entities: │
│ • time_range: afgelopen 8 uur (default) │
│ • patient_filter: string[] (optioneel) │
│ │
│ Output: │
│ • AI-samenvatting per patiënt │
│ • Bronverwijzingen │
│ • Aandachtspunten │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ INTENT: agenda │
├─────────────────────────────────────────────────────────────┤
│ Trigger patterns: │
│ • "mijn afspraken" │
│ • "afspraken vandaag" │
│ • "wanneer zie ik [patient]" │
│ • "planning deze week" │
│ │
│ Entities: │
│ • date_range: vandaag|deze week|datum │
│ • patient_name: string (optioneel) │
│ │
│ Output: │
│ • Afsprakenlijst │
│ • Quick action: nieuwe afspraak │
└─────────────────────────────────────────────────────────────┘
```
---
## 6. Data Requirements per Intent
### 6.1 Database Tabellen per Bouwblok
| Bouwblok | Read | Write |
|----------|------|-------|
| **Dagnotitie** | patients | reports |
| **Zoeken** | patients, conditions, care_plans | - |
| **Rapportage** | patients, intakes | reports |
| **Overdracht** | patients, reports, vitals, risk_assessments | - |
| **Patient Info** | patients, conditions, care_plans, risk_assessments | - |
| **Diagnose** | patients, conditions | conditions |
| **Agenda** | patients, appointments, practitioners | appointments |
| **Behandelplan** | patients, conditions, intakes, anamneses | care_plans |
### 6.2 API Routes per Bouwblok
| Bouwblok | Bestaande API | Nieuw nodig? |
|----------|---------------|--------------|
| **Dagnotitie** | POST /api/reports | Nee |
| **Zoeken** | GET /api/patients/search | Ja (fuzzy) |
| **Rapportage** | POST /api/reports | Nee |
| **Overdracht** | GET /api/overdracht, POST /api/overdracht/generate | Nee |
| **Patient Info** | GET /api/verpleegrapportage/[patientId] | Uitbreiden |
| **Diagnose** | - | Ja |
| **Agenda** | - | Ja |
| **Behandelplan** | POST /api/behandelplan/generate | Nee |
---
## 7. Contextual Awareness
### 7.1 Impliciete Context
| Context | Bron | Gebruik |
|---------|------|---------|
| **Huidige gebruiker** | Auth session | Filter "mijn patiënten" |
| **Huidige dienst** | Tijd (ochtend/middag/avond/nacht) | Shift-based filtering |
| **Laatst bekeken patiënt** | Session state | Pre-fill suggestie |
| **Recente acties** | Session state | Quick access |
### 7.2 Expliciete Context
| Context | Trigger | Effect |
|---------|---------|--------|
| **Actieve patiënt** | Zoeken + selecteren | Pre-fill alle volgende acties |
| **Dienst overdracht** | "overdracht" | Filter op afgelopen X uur |
| **Specifieke datum** | "afspraken morgen" | Filter op datum |
---
## 8. Voice Command Examples
### 8.1 Dagnotitie Flow
```
Voice: "Jan de Vries heeft zijn medicatie ingenomen, geen bijzonderheden"
Intent: dagnotitie
Entities:
- patient_name: "Jan de Vries"
- category: "medicatie" (extracted from "medicatie ingenomen")
- content: "heeft zijn medicatie ingenomen, geen bijzonderheden"
Pre-fill:
┌─────────────────────────────────────────────────────────────┐
│ 📝 Dagnotitie voor Jan de Vries │
│ ───────────────────────────────────────────────────────── │
│ Categorie: [Medicatie ▼] ← auto-selected │
│ Tijd: [14:32] │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ heeft zijn medicatie ingenomen, geen bijzonderheden │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ☑ Opnemen in overdracht │
│ │
│ [Opslaan] │
└─────────────────────────────────────────────────────────────┘
```
### 8.2 Zoeken Flow
```
Voice: "Zoek Marie"
Intent: zoeken
Entities:
- search_query: "Marie"
Output:
┌─────────────────────────────────────────────────────────────┐
│ 🔍 Zoekresultaten voor "Marie" │
│ ───────────────────────────────────────────────────────── │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Marie van den Berg │ │
│ │ 15-03-1985 · Kamer 12 · F41.1 Gegeneraliseerde angst│ │
│ │ [Notitie] [Dossier] [Rapportage] │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Marie Jansen │ │
│ │ 22-08-1972 · Kamer 8 · F32.1 Depressieve episode │ │
│ │ [Notitie] [Dossier] [Rapportage] │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
```
### 8.3 Overdracht Flow
```
Voice: "Overdracht maken"
Intent: overdracht
Entities:
- time_range: "afgelopen 8 uur" (default)
Output:
┌─────────────────────────────────────────────────────────────┐
│ 🔄 Overdracht Ochtend dienst │
│ ───────────────────────────────────────────────────────── │
│ 06:00 - 14:00 · 5 patiënten met updates │
│ │
│ ▼ Jan de Vries (3 notities) │
│ ⚠ Aandachtspunt: onrustig vannacht │
│ • 07:30 Medicatie uitgereikt ✓ │
│ • 08:45 Ontbijt genuttigd │
│ • 11:00 Gesprek met psycholoog │
│ │
│ ▼ Marie van den Berg (2 notities) │
│ • 08:00 ADL ondersteuning │
│ • 10:30 Bezoek familie │
│ │
│ ─────────────────────────────────────────────────────── │
│ AI Samenvatting: │
│ "Rustige ochtend. Aandacht voor Jan de Vries die │
│ vannacht onrustig was. Marie ontving familiebezoek..." │
│ │
│ [Kopiëren] [Printen] [Doorsturen] │
└─────────────────────────────────────────────────────────────┘
```
---
## 9. Conclusie: Minimale Intent Set
### 9.1 MVP (6 intents)
| Intent | Type | Frequentie | Complexiteit |
|--------|------|------------|--------------|
| `dagnotitie` | Writer | Zeer hoog | Laag |
| `zoeken` | Reader | Zeer hoog | Laag |
| `overdracht` | Reader | Hoog | Medium |
| `rapportage` | Writer | Hoog | Medium |
| `patient_info` | Reader | Hoog | Laag |
| `agenda` | Reader | Medium | Laag |
### 9.2 Fallback
| Intent | Actie |
|--------|-------|
| `onbekend` | Toon blok-picker met 6 opties |
| `ambigue` | "Bedoelde je...?" met opties |
| `lage_confidence` | Toon blok-picker |
### 9.3 Training Data Nodig
Per intent minimaal 20-30 voorbeeldzinnen in het Nederlands, inclusief:
- Formele vorm ("Ik wil een notitie maken")
- Informele vorm ("notitie jan")
- Met context ("jan medicatie")
- Zonder context ("notitie maken")
- Met typo's ("noitie jan")
- Voice transcriptie varianten
---
*Dit document dient als basis voor de intent classificatie en UI bouwblokken.*