Files
triqura-ecd/docs/swift/archive/taken-en-vragen-analyse.md
2025-12-27 13:17:00 +01:00

26 KiB

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.