487 lines
26 KiB
Markdown
487 lines
26 KiB
Markdown
# 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.*
|