redesigdn docs
This commit is contained in:
486
docs/swift/archive/taken-en-vragen-analyse.md
Normal file
486
docs/swift/archive/taken-en-vragen-analyse.md
Normal 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.*
|
||||
Reference in New Issue
Block a user