# 🧩 Functioneel Ontwerp (FO) — Swift: Diagnostiek Workflow

**Projectnaam:** Swift — Contextual UI EPD  
**Versie:** v1.0  
**Datum:** 23-12-2024  
**Auteur:** Colin Lit

---

## 1. Doel en relatie met het PRD

🎯 **Doel van dit document:**
Dit Functioneel Ontwerp beschrijft **hoe** de diagnostiek workflow in Swift functioneel werkt — van het plannen van een diagnostiek-afspraak tot het stellen en bijstellen van diagnoses. Dit document focust specifiek op de complete flow die behandelaars doorlopen tijdens een diagnostiek-traject.

📘 **Relatie met andere documenten:**
- **PRD:** `swift-prd.md` — Product visie en requirements
- **FO Algemeen:** `swift-fo-ai.md` — Algemene Swift functionaliteit
- **Bouwplan:** `bouwplan-swift-v1.md` — Technische implementatie planning
- **UX/UI:** `swift-ux-v2.1.md` — Visuele specificaties

**Kernprincipe:**
> Een behandelaar kan een volledig diagnostiek-traject doorlopen via natuurlijke taal: van afspraak plannen, via rapportage schrijven, tot diagnose stellen — alles in één vloeiende flow zonder menu-navigatie.

---

## 2. Overzicht van de belangrijkste onderdelen

🎯 **Doel:** Overzicht van de modules en blocks binnen de diagnostiek workflow.

### 2.1 Workflow Componenten

| # | Component | Beschrijving | Type |
|---|-----------|--------------|------|
| 1 | **AfspraakBlock** | Diagnostiek-afspraak plannen | Block |
| 2 | **RapportageBlock** | Verslag schrijven na afspraak | Block |
| 3 | **DiagnoseBlock** | Overzicht van diagnoses | Block |
| 4 | **DiagnoseFormBlock** | Diagnose aanmaken/bijstellen | Block |

### 2.2 Workflow Flow

```
Afspraak Plannen → Rapportage Schrijven → Diagnose Bekijken → Diagnose Aanmaken/Bijstellen
```

### 2.3 Relatie met Bestaande Blocks

| Block | Relatie met Diagnostiek Workflow |
|-------|----------------------------------|
| **ZoekenBlock** | Wordt gebruikt voor patiëntselectie |
| **PatientContextCard** | Toont actieve diagnoses in overzicht |
| **AgendaBlock** | Toont geplande diagnostiek-afspraken |

---

## 3. User Stories

🎯 **Doel:** Beschrijven wat behandelaars moeten kunnen doen tijdens een diagnostiek-traject.

### 3.1 Diagnostiek Workflow Stories

| ID | Rol | Doel / Actie | Verwachte waarde | Prio |
|----|-----|--------------|------------------|------|
| US-D01 | Behandelaar | Diagnostiek-afspraak plannen via spraak/tekst | Afspraak in < 30 sec zonder menu-navigatie | 🟡 P2 |
| US-D02 | Behandelaar | Rapportage schrijven en koppelen aan afspraak | Verslag automatisch gekoppeld aan encounter | 🟡 P2 |
| US-D03 | Behandelaar | Alle diagnoses van patiënt bekijken | Overzicht in één oogopslag | 🟡 P2 |
| US-D04 | Behandelaar | Nieuwe diagnose toevoegen met ICD-10 zoeker | Diagnose toegevoegd met correcte code | 🟡 P2 |
| US-D05 | Behandelaar | Bestaande diagnose bijstellen (status, ernst) | Wijzigingen direct zichtbaar | 🟡 P2 |

### 3.2 User Story Details

**US-D01: Diagnostiek-afspraak plannen**
> Als behandelaar wil ik een diagnostiek-afspraak kunnen plannen door te zeggen "afspraak diagnostiek met Jan morgen 10:00" zodat ik snel kan plannen zonder door menu's te navigeren.

**US-D02: Rapportage koppelen aan afspraak**
> Als behandelaar wil ik een rapportage kunnen schrijven die automatisch gekoppeld wordt aan de diagnostiek-afspraak zodat ik niet handmatig hoef te koppelen.

**US-D03: Diagnoses bekijken**
> Als behandelaar wil ik alle diagnoses van een patiënt kunnen bekijken door te zeggen "diagnose Jan" zodat ik snel een overzicht heb zonder te navigeren.

**US-D04: Diagnose toevoegen**
> Als behandelaar wil ik een nieuwe diagnose kunnen toevoegen met een ICD-10 zoeker zodat ik de juiste code kan vinden zonder handmatig te zoeken.

**US-D05: Diagnose bijstellen**
> Als behandelaar wil ik een bestaande diagnose kunnen bijstellen (status, ernst) zodat ik diagnoses kan actualiseren na behandeling.

---

## 4. Functionele werking per onderdeel

🎯 **Doel:** Per component beschrijven wat de gebruiker kan doen en wat het systeem doet.

### 4.1 AfspraakBlock

**Functie:** Diagnostiek-afspraak plannen via natuurlijke taal.

**Trigger patterns:**
- "afspraak diagnostiek met [patient] [datum] [tijd]"
- "plan diagnostiek voor [patient] morgen"
- "afspraak [patient] volgende week dinsdag 10:00"

**Pre-fill logica:**

| Extracted | Pre-fill |
|-----------|----------|
| patient_name → match | Patiënt selector |
| "diagnostiek" keyword | Type = Diagnostiek |
| "morgen", "vandaag", datum | Datum picker |
| Tijd (10:00, 14:30) | Starttijd |
| Geen tijd | Default 09:00 |

**Form velden:**

| Veld | Type | Verplicht | Default |
|------|------|-----------|---------|
| Patiënt | Dropdown + search | Ja | Pre-filled of ZoekenBlock |
| Datum | Date picker | Ja | Pre-filled of vandaag |
| Starttijd | Time picker | Ja | Pre-filled of 09:00 |
| Eindtijd | Time picker | Nee | Starttijd + 1 uur |
| Type | Dropdown | Ja | Diagnostiek (pre-selected) |
| Locatie | Dropdown | Nee | AMB |

**Afspraak types:**
- Diagnostiek
- Behandeling
- Evaluatie
- Consult
- Overig

**Acties:**

| Knop | Actie | Keyboard |
|------|-------|----------|
| Opslaan | POST naar API, sluit block, retourneert encounter_id | `⌘Enter` |
| Annuleren | Sluit block zonder opslaan | `Escape` |

**Na opslaan:**
1. Toast: "✓ Afspraak diagnostiek met Jan de Vries aangemaakt voor morgen 10:00"
2. Block verdwijnt (200ms animatie)
3. Recent strip: badge "[📅 Jan - Diagnostiek]"
4. Encounter_id wordt opgeslagen in context voor volgende stap

**API:**
```
POST /api/appointments
Body: {
  patient_id: string,
  period_start: datetime,
  period_end: datetime,
  type_code: 'diagnostiek',
  class_code: 'AMB',
  notes?: string
}
Response: {
  id: string (encounter_id),
  success: boolean
}
```

---

### 4.2 RapportageBlock (Uitgebreid)

**Functie:** Verslag schrijven na diagnostiek-afspraak, gekoppeld aan encounter.

**Trigger patterns:**
- "rapportage diagnostiek gesprek met [patient]"
- "verslag van diagnostiek afspraak [patient]"
- "rapportage [patient]" (als recente diagnostiek-afspraak bestaat)

**Pre-fill logica:**

| Extracted | Pre-fill |
|-----------|----------|
| patient_name → match | Patiënt selector |
| "diagnostiek" keyword | Type = Diagnostiek |
| Recente encounter (diagnostiek) | Encounter_id gekoppeld |
| Geen encounter | Geen koppeling, suggestie tonen |

**Form velden:**

| Veld | Type | Verplicht | Default |
|------|------|-----------|---------|
| Patiënt | Dropdown | Ja | Pre-filled |
| Gekoppeld aan | Link naar encounter | Nee | Recente diagnostiek-afspraak |
| Type | Button group | Ja | Diagnostiek (pre-selected) |
| Inhoud | Rich text editor | Ja | Leeg |
| Datum/tijd | DateTime | Ja | Nu |

**Rapportage types:**
- Diagnostiek
- Gesprek
- Evaluatie
- Telefonisch
- Consult

**AI acties:**

| Actie | Beschrijving | Output |
|-------|--------------|--------|
| ✨ Samenvatten | Bullets van kernpunten | Zijpaneel |
| 📖 B1-niveau | Herschrijf leesbaar | Zijpaneel |
| 🔍 Problemen | Extraheer klinische issues | Zijpaneel |

**Acties:**

| Knop | Actie | Keyboard |
|------|-------|----------|
| Opslaan | POST naar API met encounter_id, sluit block | `⌘Enter` |
| Annuleren | Sluit block zonder opslaan | `Escape` |

**Na opslaan:**
1. Toast: "✓ Rapportage opgeslagen en gekoppeld aan afspraak"
2. Block verdwijnt
3. Recent strip: badge "[📋 Jan - Diagnostiek]"

**API:**
```
POST /api/reports
Body: {
  patient_id: string,
  encounter_id: string, // Nieuwe: koppeling aan afspraak
  type: 'diagnostiek',
  content: string (HTML),
  timestamp: datetime
}
```

---

### 4.3 DiagnoseBlock

**Functie:** Overzicht van alle diagnoses van een patiënt.

**Trigger patterns:**
- "diagnose [patient]"
- "diagnoses van [patient]"
- "wat zijn de diagnoses van [patient]"
- Klik op "Diagnoses" in PatientContextCard

**Layout:**

```
┌─────────────────────────────────────────────────────────────┐
│ 🏥 Diagnoses van Jan de Vries                    [×]      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ Filter: [Actief ✓] [Inactief] [Alle]                       │
│                                                             │
│ ┌───────────────────────────────────────────────────────┐   │
│ │ F41.1 Gegeneraliseerde angststoornis                  │   │
│ │ Status: Actief | Ernst: Matig                         │   │
│ │ Toegevoegd: 15 nov 2024 | Intake: Intake 1           │   │
│ │ [Bewerken] [Details]                                  │   │
│ └───────────────────────────────────────────────────────┘   │
│                                                             │
│ ┌───────────────────────────────────────────────────────┐   │
│ │ F32.1 Depressieve stoornis                            │   │
│ │ Status: Actief | Ernst: Mild                         │   │
│ │ Toegevoegd: 20 dec 2024 | Intake: Intake 2           │   │
│ │ [Bewerken] [Details]                                  │   │
│ └───────────────────────────────────────────────────────┘   │
│                                                             │
│ [+ Nieuwe diagnose toevoegen]                              │
│                                                             │
└─────────────────────────────────────────────────────────────┘
```

**Gedrag:**
- Toont lijst met diagnoses, gesorteerd op datum (nieuwste eerst)
- Filter tabs: Actief / Inactief / Alle
- Per diagnose: code, omschrijving, status, ernst, datum, intake
- Klik op diagnose → DiagnoseFormBlock (edit mode)
- Klik "Nieuwe diagnose" → DiagnoseFormBlock (create mode)

**Empty state:**
"Geen diagnoses gevonden voor [patient]. [+ Nieuwe diagnose toevoegen]"

**API:**
```
GET /api/diagnoses/:patientId
Response: {
  diagnoses: [
    {
      id: string,
      code_code: string,
      code_display: string,
      clinical_status: 'active' | 'inactive' | 'resolved',
      severity_display: string,
      recorded_date: datetime,
      encounter_id: string,
      intake?: {
        id: string,
        title: string
      }
    }
  ]
}
```

---

### 4.4 DiagnoseFormBlock

**Functie:** Diagnose aanmaken of bijstellen met ICD-10 zoeker.

**Trigger patterns:**
- "diagnose toevoegen [patient] [ICD-10 code]"
- "diagnose wijzigen [patient]"
- "diagnose bijstellen [patient]"
- Klik op diagnose in DiagnoseBlock
- Klik "Nieuwe diagnose" in DiagnoseBlock

**Pre-fill logica (create mode):**

| Extracted | Pre-fill |
|-----------|----------|
| patient_name → match | Patiënt selector (read-only) |
| ICD-10 code (F41.1) | Code + omschrijving via zoeker |
| Geen code | ICD-10 zoeker open |

**Pre-fill logica (edit mode):**

| Veld | Pre-fill |
|------|----------|
| Patiënt | Read-only, huidige waarde |
| ICD-10 code | Huidige code |
| Omschrijving | Huidige omschrijving |
| Type | Huidige type (hoofd/neven) |
| Status | Huidige status |
| Ernst | Huidige ernst |
| Intake | Huidige intake koppeling |
| Toelichting | Huidige toelichting |

**Form velden:**

| Veld | Type | Verplicht | Default |
|------|------|-----------|---------|
| Patiënt | Read-only | Ja | Pre-filled |
| ICD-10 zoeker | Search + dropdown | Ja | Leeg of pre-filled |
| Code | Text (read-only na selectie) | Ja | Uit zoeker |
| Omschrijving | Text (read-only na selectie) | Ja | Uit zoeker |
| Type | Radio buttons | Ja | Hoofddiagnose |
| Status | Dropdown | Ja | Actief |
| Ernst | Dropdown | Nee | Geen |
| Intake koppeling | Dropdown | Nee | Geen |
| Toelichting | Textarea | Nee | Leeg |

**ICD-10 zoeker gedrag:**
- Fuzzy search tijdens typen (minimaal 2 karakters)
- Resultaten dropdown met code + omschrijving
- Bij selectie: code en omschrijving worden ingevuld
- Zoek op code (F41.1) of omschrijving (angst)

**Status opties:**
- Actief
- Inactief
- Resolved
- Remission
- Recurrence
- Relapse

**Ernst opties:**
- Geen
- Mild
- Matig
- Ernstig

**Type opties:**
- Hoofddiagnose
- Nevendiagnose

**Acties:**

| Knop | Actie | Keyboard |
|------|-------|----------|
| Opslaan | POST/PATCH naar API, sluit block | `⌘Enter` |
| Annuleren | Sluit block zonder opslaan | `Escape` |
| Verwijderen | Bevestigingsdialog → soft delete | - |

**Na opslaan:**
1. Toast: "✓ Diagnose F41.1 - Gegeneraliseerde angststoornis toegevoegd" (of "bijgewerkt")
2. Block verdwijnt
3. DiagnoseBlock wordt automatisch getoond met nieuwe/bijgewerkte diagnose

**API:**
```
POST /api/diagnoses
Body: {
  patient_id: string,
  encounter_id?: string,
  code_code: string,
  code_display: string,
  code_system: 'ICD-10',
  clinical_status: 'active' | 'inactive' | 'resolved',
  severity_display?: string,
  category: 'primary-diagnosis' | 'encounter-diagnosis',
  note?: string
}

PATCH /api/diagnoses/:id
Body: {
  code_code?: string,
  code_display?: string,
  clinical_status?: string,
  severity_display?: string,
  category?: string,
  note?: string
}
```

---

## 5. UI-overzicht (visuele structuur)

🎯 **Doel:** Globale schermopbouw voor diagnostiek workflow blocks.

### 5.1 AfspraakBlock Layout

```
┌─────────────────────────────────────────────────────────────┐
│ 📅 Nieuwe Afspraak                                [−] [×]  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ Patiënt *                                                   │
│ ┌───────────────────────────────────────────────────────┐   │
│ │ Jan de Vries                                 ✓     │   │
│ │ 59 jaar • Kamer 12B                      [← Auto]   │   │
│ └───────────────────────────────────────────────────────┘   │
│                                                             │
│ Datum *              Van *          Tot                     │
│ ┌─────────────┐     ┌─────────┐   ┌─────────┐              │
│ │ 2024-12-24  │     │ 10:00   │   │ 11:00   │              │
│ └─────────────┘     └─────────┘   └─────────┘              │
│                                                             │
│ Type afspraak *                                             │
│ ┌───────────────────────────────────────────────────────┐   │
│ │ [Diagnostiek ▼]                                       │   │
│ └───────────────────────────────────────────────────────┘   │
│                                                             │
│ Locatie                                                     │
│ ┌───────────────────────────────────────────────────────┐   │
│ │ [AMB ▼]                                               │   │
│ └───────────────────────────────────────────────────────┘   │
│                                                             │
│ Notities (optioneel)                                        │
│ ┌───────────────────────────────────────────────────────┐   │
│ │                                                       │   │
│ └───────────────────────────────────────────────────────┘   │
│                                                             │
│                                    [Annuleren] [Opslaan]   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
```

### 5.2 RapportageBlock Layout (met encounter koppeling)

```
┌─────────────────────────────────────────────────────────────┐
│ 📋 Rapportage                                    [−] [×]    │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ Patiënt: Jan de Vries                              [Wijzig] │
│                                                             │
│ Gekoppeld aan: Afspraak diagnostiek - 24 dec 2024 10:00    │
│                                                             │
│ Type                                                       │
│ [Diagnostiek ✓] [Gesprek] [Evaluatie] [Telefonisch]       │
│                                                             │
│ ┌───────────────────────────────────────────────────────┐   │
│ │ [B] [I] [•] [1.] ["]                     🎤 Dicteer  │   │
│ ├───────────────────────────────────────────────────────┤   │
│ │                                                       │   │
│ │ Verslag van diagnostiek gesprek...                   │   │
│ │                                                       │   │
│ └───────────────────────────────────────────────────────┘   │
│                                                             │
│ AI-acties                                                   │
│ [✨ Samenvatten] [📖 B1-niveau] [🔍 Problemen extraheren]   │
│                                                             │
│                                    [Annuleren] [Opslaan]   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
```

### 5.3 DiagnoseBlock Layout

```
┌─────────────────────────────────────────────────────────────┐
│ 🏥 Diagnoses van Jan de Vries                    [−] [×]    │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ Filter: [Actief ✓] [Inactief] [Alle]                       │
│                                                             │
│ ┌───────────────────────────────────────────────────────┐   │
│ │ F41.1 Gegeneraliseerde angststoornis                  │   │
│ │ Status: Actief | Ernst: Matig                         │   │
│ │ Toegevoegd: 15 nov 2024 | Intake: Intake 1           │   │
│ │                                                       │   │
│ │ [Bewerken] [Details]                                  │   │
│ └───────────────────────────────────────────────────────┘   │
│                                                             │
│ ┌───────────────────────────────────────────────────────┐   │
│ │ F32.1 Depressieve stoornis                            │   │
│ │ Status: Actief | Ernst: Mild                         │   │
│ │ Toegevoegd: 20 dec 2024 | Intake: Intake 2           │   │
│ │                                                       │   │
│ │ [Bewerken] [Details]                                  │   │
│ └───────────────────────────────────────────────────────┘   │
│                                                             │
│ [+ Nieuwe diagnose toevoegen]                              │
│                                                             │
└─────────────────────────────────────────────────────────────┘
```

### 5.4 DiagnoseFormBlock Layout

```
┌─────────────────────────────────────────────────────────────┐
│ 🏥 Nieuwe Diagnose                               [−] [×]    │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ Patiënt: Jan de Vries (read-only)                          │
│                                                             │
│ ICD-10 Code *                                               │
│ ┌───────────────────────────────────────────────────────┐   │
│ │ 🔍 Zoek ICD-10 code of omschrijving...               │   │
│ │                                                       │   │
│ │ Resultaten:                                           │   │
│ │ • F41.1 Gegeneraliseerde angststoornis               │   │
│ │ • F41.0 Paniekstoornis                                │   │
│ └───────────────────────────────────────────────────────┘   │
│                                                             │
│ Code: F41.1 (read-only na selectie)                        │
│ Omschrijving: Gegeneraliseerde angststoornis (read-only)   │
│                                                             │
│ Type *                                                      │
│ ○ Hoofddiagnose  ● Nevendiagnose                           │
│                                                             │
│ Status *                                                    │
│ ┌───────────────────────────────────────────────────────┐   │
│ │ [Actief ▼]                                           │   │
│ └───────────────────────────────────────────────────────┘   │
│                                                             │
│ Ernst                                                       │
│ ┌───────────────────────────────────────────────────────┐   │
│ │ [Geen ▼]                                             │   │
│ └───────────────────────────────────────────────────────┘   │
│                                                             │
│ Intake koppeling                                            │
│ ┌───────────────────────────────────────────────────────┐   │
│ │ [Geen ▼]                                             │   │
│ └───────────────────────────────────────────────────────┘   │
│                                                             │
│ Toelichting (optioneel)                                     │
│ ┌───────────────────────────────────────────────────────┐   │
│ │                                                       │   │
│ └───────────────────────────────────────────────────────┘   │
│                                                             │
│                                    [Annuleren] [Opslaan]   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
```

---

## 6. Interacties met AI (functionele beschrijving)

🎯 **Doel:** Waar AI in de diagnostiek workflow voorkomt.

| Locatie | AI-actie | Trigger | Output |
|---------|----------|---------|--------|
| RapportageBlock | Samenvatten | Klik knop "✨ Samenvatten" | Bullets van kernpunten in zijpaneel |
| RapportageBlock | B1-niveau | Klik knop "📖 B1-niveau" | Herschreven tekst in zijpaneel |
| RapportageBlock | Extract problemen | Klik knop "🔍 Problemen" | Gestructureerde lijst met categorie + severity |
| DiagnoseFormBlock | ICD-10 suggestie | Typ in zoeker | Fuzzy search resultaten met relevante codes |

**AI Response Handling:**
- Alle AI outputs tonen in dedicated preview area (zijpaneel)
- Gebruiker moet expliciet accepteren/invoegen
- Bewerken altijd mogelijk
- Annuleren zonder gevolgen

---

## 7. Complete Workflow Flow

🎯 **Doel:** Stap-voor-stap beschrijving van de complete diagnostiek workflow.

### Flow 1: Van Afspraak tot Diagnose (Happy Path)

```
┌─────────────────────────────────────────────────────────────┐
│ STAP 1: AFSPRAAK PLANNEN                                   │
│                                                             │
│ Behandelaar: "afspraak diagnostiek met Jan morgen 10:00"  │
│ → AfspraakBlock verschijnt met pre-fill                    │
│ → Behandelaar controleert → klikt Opslaan                 │
│ → Encounter aangemaakt, encounter_id opgeslagen            │
└─────────────────────────────────────────────────────────────┘
                        ↓
┌─────────────────────────────────────────────────────────────┐
│ STAP 2: RAPPORTAGE SCHRIJVEN (na afspraak)                 │
│                                                             │
│ Behandelaar: "rapportage diagnostiek gesprek met Jan"      │
│ → RapportageBlock verschijnt                               │
│ → Encounter_id automatisch gekoppeld                       │
│ → Behandelaar schrijft/dicteert verslag                    │
│ → Optioneel: AI samenvatten                                │
│ → Klikt Opslaan → Rapportage gekoppeld aan encounter       │
└─────────────────────────────────────────────────────────────┘
                        ↓
┌─────────────────────────────────────────────────────────────┐
│ STAP 3: DIAGNOSE BEKIJKEN                                  │
│                                                             │
│ Behandelaar: "diagnose Jan"                                │
│ → DiagnoseBlock verschijnt met lijst diagnoses            │
│ → Filter: Actief (default)                                 │
│ → Behandelaar ziet overzicht                               │
└─────────────────────────────────────────────────────────────┘
                        ↓
┌─────────────────────────────────────────────────────────────┐
│ STAP 4: DIAGNOSE TOEVOEGEN                                 │
│                                                             │
│ Behandelaar: "diagnose toevoegen Jan F41.1"                │
│ → DiagnoseFormBlock verschijnt                             │
│ → ICD-10 code F41.1 pre-filled                             │
│ → Behandelaar vult type, status, ernst in                 │
│ → Koppelt aan intake (optioneel)                           │
│ → Klikt Opslaan → Diagnose toegevoegd                      │
│ → DiagnoseBlock wordt getoond met nieuwe diagnose          │
└─────────────────────────────────────────────────────────────┘
```

### Flow 2: Diagnose Bijstellen

```
┌─────────────────────────────────────────────────────────────┐
│ Behandelaar: "diagnose wijzigen Jan"                       │
│ → DiagnoseBlock verschijnt                                  │
│ → Behandelaar klikt op diagnose F41.1                      │
│ → DiagnoseFormBlock verschijnt (edit mode)                 │
│ → Alle velden pre-filled met huidige waarden               │
│ → Behandelaar wijzigt status: Actief → Resolved            │
│ → Behandelaar wijzigt ernst: Matig → Mild                  │
│ → Voegt toelichting toe                                    │
│ → Klikt Opslaan → Diagnose bijgewerkt                      │
│ → DiagnoseBlock wordt getoond met bijgewerkte diagnose     │
└─────────────────────────────────────────────────────────────┘
```

---

## 8. Edge Cases & Alternatieve Flows

### Edge Case 1: Meerdere patiënten metzelfde naam
- **Situatie:** Input "diagnose Jan" → meerdere matches
- **Gedrag:** ZoekenBlock verschijnt met resultaten
- **Actie:** Behandelaar selecteert juiste patiënt
- **Vervolg:** DiagnoseBlock voor geselecteerde patiënt

### Edge Case 2: Geen recente afspraak voor rapportage
- **Situatie:** Input "rapportage Jan" → geen encounter gevonden
- **Gedrag:** RapportageBlock opent zonder encounter-koppeling
- **Suggestie:** "Geen recente diagnostiek-afspraak gevonden. Wil je een afspraak koppelen?"
- **Actie:** Optioneel AfspraakBlock openen

### Edge Case 3: ICD-10 code niet gevonden
- **Situatie:** Input "diagnose toevoegen Jan F99.9" → code bestaat niet
- **Gedrag:** Validatie fout: "ICD-10 code F99.9 niet gevonden"
- **Actie:** ICD-10 zoeker blijft open voor correctie

### Edge Case 4: Diagnose al bestaat
- **Situatie:** Input "diagnose toevoegen Jan F41.1" → diagnose bestaat al
- **Gedrag:** Waarschuwing: "Diagnose F41.1 bestaat al. Wil je deze bijwerken?"
- **Actie:** Optioneel DiagnoseFormBlock openen in edit mode

### Edge Case 5: Onvolledige input
- **Situatie:** Input "afspraak diagnostiek" (geen patiënt/datum)
- **Gedrag:** Systeem vraagt om ontbrekende informatie
- **Actie:** ZoekenBlock voor patiënt, datum/tijd picker voor planning

---

## 9. Success Criteria

De diagnostiek workflow is succesvol wanneer:

1. ✅ Behandelaar kan diagnostiek-afspraak plannen in < 30 seconden
2. ✅ Rapportage kan worden geschreven en automatisch gekoppeld aan afspraak
3. ✅ Alle diagnoses van een patiënt zijn in één overzicht zichtbaar
4. ✅ Nieuwe diagnose kan worden toegevoegd met ICD-10 zoeker
5. ✅ Bestaande diagnose kan worden bijgewerkt (status, ernst, etc.)
6. ✅ Alle acties zijn traceerbaar (wie, wanneer, wat)
7. ✅ Workflow kan volledig worden doorlopen zonder menu-navigatie

---

## 10. Bijlagen & Referenties

**Projectdocumenten:**
- PRD: `swift-prd.md`
- FO Algemeen: `swift-fo-ai.md`
- Bouwplan: `bouwplan-swift-v1.md`
- UX/UI: `swift-ux-v2.1.md`
- Taken analyse: `taken-en-vragen-analyse.md`

**Bestaande Code Referenties:**
- Diagnose pagina: `app/epd/patients/[id]/diagnose/page.tsx`
- Diagnose actions: `app/epd/patients/[id]/diagnose/actions.ts`
- Appointment modal: `app/epd/agenda/components/appointment-modal.tsx`
- Rapportage workspace: `app/epd/patients/[id]/rapportage/components/rapportage-workspace-v2.tsx`

**Database Schema:**
- `conditions` tabel voor diagnoses
- `encounters` tabel voor afspraken
- `reports` tabel voor rapportages

---

## Wijzigingslog

| Versie | Datum | Wijzigingen |
|--------|-------|-------------|
| 1.0 | 23-12-2024 | Initiële versie - Diagnostiek workflow beschrijving |

