| Epic | Status | Wat is gedaan |
|---------------------|---------------|---------------------| | E0: Foundation | ✅ Afgerond | Types + DB migratie | | E1: Leefgebieden | ✅ Afgerond | 3 componenten | | E2: AI Generatie | ⏳ Nog te doen | - | | E3: Behandelplan UI | ⏳ Nog te doen | - | Gemaakte bestanden: - lib/types/leefgebieden.ts - 7 domeinen met kleuren/emoji's - lib/types/behandelplan.ts - SMART doelen, interventies, Zod schemas - components/behandelplan/leefgebieden-form.tsx - Intake formulier - components/behandelplan/leefgebieden-scores.tsx - Score weergave - components/behandelplan/leefgebieden-badge.tsx - Domain badges - components/behandelplan/index.ts - Exports
This commit is contained in:
566
docs/specs/behandelplan/fo-behandelplan-v1.md
Normal file
566
docs/specs/behandelplan/fo-behandelplan-v1.md
Normal file
@@ -0,0 +1,566 @@
|
||||
# Functioneel Ontwerp (FO) — Behandelplan Module
|
||||
|
||||
**Projectnaam:** Mini-EPD Prototype - AI Speedrun
|
||||
**Versie:** v1.0
|
||||
**Datum:** 03-12-2024
|
||||
**Auteur:** Colin Lit
|
||||
|
||||
---
|
||||
|
||||
## 1. Doel en relatie met het PRD
|
||||
|
||||
**Doel van dit document:**
|
||||
Dit Functioneel Ontwerp beschrijft **hoe** de Behandelplan module uit het PRD functioneel werkt — wat de behandelaar ziet, doet en ervaart bij het genereren en beheren van behandelplannen met AI-ondersteuning.
|
||||
|
||||
**Relatie met PRD:**
|
||||
- PRD: `prd-behandelplan-v2-final.md` — beschrijft *wat* en *waarom*
|
||||
- FO (dit document): beschrijft *hoe* dit in de praktijk werkt
|
||||
|
||||
**Scope:**
|
||||
- MVP-functionaliteit (Fase 1-4 uit implementatieplan)
|
||||
- Foundation first aanpak (types → componenten → AI → UI)
|
||||
- Simpele leefgebieden visualisatie (progress bars, geen radar chart)
|
||||
- Simple JSON API (geen streaming)
|
||||
|
||||
---
|
||||
|
||||
## 2. Overzicht van de belangrijkste onderdelen
|
||||
|
||||
De Behandelplan module bestaat uit de volgende onderdelen:
|
||||
|
||||
| # | Onderdeel | Beschrijving |
|
||||
|---|-----------|--------------|
|
||||
| 1 | **Leefgebieden Intake** | Formulier voor 7 levensdomeinen met scores en prioriteiten |
|
||||
| 2 | **AI Generatie** | Knop om behandelplan te laten genereren op basis van intake + diagnose |
|
||||
| 3 | **Behandelplan Overzicht** | Hoofdpagina met structuur, doelen, interventies |
|
||||
| 4 | **SMART Doelen** | Lijst van 2-4 behandeldoelen met voortgang |
|
||||
| 5 | **Interventies** | Evidence-based interventies gekoppeld aan doelen |
|
||||
| 6 | **Sessie-planning** | Tabel met geplande sessies (stretch) |
|
||||
| 7 | **Evaluatiemomenten** | Tussentijdse en eindevaluatie (stretch) |
|
||||
|
||||
---
|
||||
|
||||
## 3. User Stories
|
||||
|
||||
### Primaire User Stories (MVP)
|
||||
|
||||
| ID | Rol | Doel / Actie | Verwachte waarde | Prioriteit |
|
||||
|----|-----|--------------|------------------|------------|
|
||||
| US-01 | Behandelaar | Leefgebieden scores invullen bij intake | Gestructureerd beeld van cliëntsituatie | Hoog |
|
||||
| US-02 | Behandelaar | AI behandelplan laten genereren | Van 30 min naar 2-5 min tijdsbesparing | Hoog |
|
||||
| US-03 | Behandelaar | SMART doelen bekijken en aanpassen | Kwaliteitsverbetering, passend bij cliënt | Hoog |
|
||||
| US-04 | Behandelaar | Interventies koppelen aan doelen | Evidence-based behandeling | Hoog |
|
||||
| US-05 | Behandelaar | Specifiek doel laten regenereren | Fijnafstelling zonder alles opnieuw | Middel |
|
||||
| US-06 | Behandelaar | Plan publiceren (concept → actief) | Cliënt kan plan inzien | Middel |
|
||||
|
||||
### Secundaire User Stories (Stretch)
|
||||
|
||||
| ID | Rol | Doel / Actie | Verwachte waarde | Prioriteit |
|
||||
|----|-----|--------------|------------------|------------|
|
||||
| US-07 | Behandelaar | Sessie-planning invullen | Overzicht behandeltraject | Laag |
|
||||
| US-08 | Behandelaar | Evaluatiemoment vastleggen | Voortgang meten en bijsturen | Laag |
|
||||
| US-09 | Cliënt | Eigen behandelplan bekijken (B1-taal) | Transparantie en begrip | Laag |
|
||||
|
||||
---
|
||||
|
||||
## 4. Functionele werking per onderdeel
|
||||
|
||||
### 4.1 Leefgebieden Intake
|
||||
|
||||
**Locatie:** Onderdeel van intake-flow of aparte tab binnen cliëntdossier
|
||||
|
||||
**Functionaliteit:**
|
||||
- Formulier met 7 levensdomeinen (leefgebieden)
|
||||
- Per domein:
|
||||
- **Score slider:** 1-5 (1 = zeer problematisch, 5 = goed)
|
||||
- **Toelichting:** Vrij tekstveld voor context
|
||||
- **Prioriteit:** Dropdown (Laag / Middel / Hoog)
|
||||
|
||||
**De 7 Leefgebieden:**
|
||||
|
||||
| # | Domein | Emoji | Kleur | Voorbeeldvragen |
|
||||
|---|--------|-------|-------|-----------------|
|
||||
| 1 | Dagelijkse Levensverrichtingen (DLV) | 🏠 | `#8b5cf6` | Zelfzorg, structuur, dagritme |
|
||||
| 2 | Wonen | 🏡 | `#ec4899` | Woonsituatie, veiligheid thuis |
|
||||
| 3 | Werk/Dagbesteding | 💼 | `#f59e0b` | Baan, opleiding, vrijwilligerswerk |
|
||||
| 4 | Sociaal netwerk | 👥 | `#3b82f6` | Familie, vrienden, relaties |
|
||||
| 5 | Vrijetijd/Zingeving | 🎯 | `#10b981` | Hobby's, levensdoel, spiritualiteit |
|
||||
| 6 | Financiën | 💰 | `#eab308` | Schulden, inkomen, budgettering |
|
||||
| 7 | Lichamelijke gezondheid | 🏃 | `#ef4444` | Slaap, beweging, voeding |
|
||||
|
||||
**Gedrag:**
|
||||
- Opslaan: Data wordt opgeslagen als JSONB in intake/care_plan record
|
||||
- Validatie: Alle 7 domeinen moeten een score hebben
|
||||
- Weergave: Na opslaan worden scores getoond als progress bars met kleuren
|
||||
|
||||
**States:**
|
||||
- **Leeg:** "Vul de leefgebieden in om een compleet beeld te krijgen"
|
||||
- **Gedeeltelijk:** Waarschuwing bij minder dan 7 domeinen
|
||||
- **Compleet:** Groen vinkje, klaar voor behandelplan generatie
|
||||
|
||||
---
|
||||
|
||||
### 4.2 AI Behandelplan Generatie
|
||||
|
||||
**Locatie:** Behandelplan tab binnen cliëntdossier
|
||||
|
||||
**Trigger:** Knop `[⚡ Genereer Behandelplan]`
|
||||
|
||||
**Voorwaarden:**
|
||||
- Intake notities aanwezig (uit rich text editor)
|
||||
- Diagnose/probleemprofiel ingevuld (DSM-categorie + severity)
|
||||
- Leefgebieden scores ingevuld (7 domeinen)
|
||||
|
||||
**Input naar AI:**
|
||||
```
|
||||
- Intake tekst (samenvatting of volledige notities)
|
||||
- DSM-categorie (bijv. "Angststoornissen")
|
||||
- Severity niveau (Laag / Middel / Hoog)
|
||||
- Leefgebieden scores met prioriteiten
|
||||
- Optioneel: extra instructies van behandelaar
|
||||
```
|
||||
|
||||
**AI Processing:**
|
||||
- Model: Claude 3.5 Sonnet
|
||||
- Response tijd: < 5 seconden
|
||||
- Output: Gestructureerde JSON
|
||||
|
||||
**Output van AI:**
|
||||
1. **Behandelstructuur:** Duur, frequentie, aantal sessies, vorm
|
||||
2. **SMART Doelen:** 2-4 doelen verdeeld over leefgebieden
|
||||
3. **Interventies:** Evidence-based, gekoppeld aan doelen
|
||||
4. **Sessie-planning:** Grove indeling (8-12 sessies)
|
||||
5. **Evaluatiemomenten:** Tussentijds + eind
|
||||
6. **Veiligheidsplan:** Alleen bij severity "Hoog"
|
||||
|
||||
**UI tijdens generatie:**
|
||||
```
|
||||
┌─────────────────────────────────────┐
|
||||
│ ⚡ Behandelplan wordt gegenereerd...│
|
||||
│ │
|
||||
│ [████████████░░░░░░░] 75% │
|
||||
│ │
|
||||
│ Even geduld, dit duurt ~5 seconden │
|
||||
└─────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Na generatie:**
|
||||
- Plan verschijnt in bewerkbare vorm
|
||||
- Status: "Concept" (niet gepubliceerd)
|
||||
- Behandelaar kan reviewen en aanpassen
|
||||
|
||||
---
|
||||
|
||||
### 4.3 Behandelplan Overzicht (Hoofdpagina)
|
||||
|
||||
**Locatie:** `/epd/patients/[id]/behandelplan`
|
||||
|
||||
**Layout:**
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ HEADER │
|
||||
│ Behandelplan v1 Status: ● Concept │
|
||||
│ [Bewerken] [Publiceer] [Nieuwe Versie] │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ 📋 BEHANDELSTRUCTUUR │
|
||||
│ ┌─────────────────────────────────────────────────────────┐│
|
||||
│ │ Duur: 8 weken | Frequentie: Wekelijks | Sessies: 8 ││
|
||||
│ │ Vorm: Individueel ││
|
||||
│ └─────────────────────────────────────────────────────────┘│
|
||||
│ │
|
||||
│ 🌐 LEEFGEBIEDEN OVERZICHT │
|
||||
│ ┌─────────────────────────────────────────────────────────┐│
|
||||
│ │ DLV ████████░░ 4/5 Baseline: 3 ││
|
||||
│ │ Wonen ████████░░ 4/5 Baseline: 4 ││
|
||||
│ │ Werk ⚠️ ████░░░░░░ 2/5 Baseline: 2 [Prioriteit] ││
|
||||
│ │ Sociaal ⚠️ ████░░░░░░ 2/5 Baseline: 2 [Prioriteit] ││
|
||||
│ │ Vrijetijd ██████░░░░ 3/5 Baseline: 3 ││
|
||||
│ │ Financiën ██████░░░░ 3/5 Baseline: 3 ││
|
||||
│ │ Gezondheid ████████░░ 4/5 Baseline: 4 ││
|
||||
│ └─────────────────────────────────────────────────────────┘│
|
||||
│ │
|
||||
│ 🎯 SMART DOELEN (3) │
|
||||
│ [Doel cards - zie 4.4] │
|
||||
│ │
|
||||
│ 💡 INTERVENTIES (2) │
|
||||
│ [Interventie cards - zie 4.5] │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Acties:**
|
||||
- `[Bewerken]`: Opent inline editing modus
|
||||
- `[Publiceer]`: Wijzigt status naar "Actief", zichtbaar voor cliënt
|
||||
- `[Nieuwe Versie]`: Maakt v2 aan op basis van huidige versie
|
||||
|
||||
**Status indicatoren:**
|
||||
- 🔵 Concept - Bewerkbaar, niet zichtbaar voor cliënt
|
||||
- 🟢 Actief - Gepubliceerd, zichtbaar voor cliënt
|
||||
- 🟡 In evaluatie - Evaluatiemoment gepland
|
||||
- ⚫ Afgerond - Behandeling afgerond
|
||||
|
||||
---
|
||||
|
||||
### 4.4 SMART Doelen
|
||||
|
||||
**Weergave per doel:**
|
||||
```
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ 💼 Werk Prioriteit│
|
||||
│ [Hoog] │
|
||||
│ Terugkeer naar 4 werkdagen per week │
|
||||
│ │
|
||||
│ "Ik werk weer 4 dagen zonder paniek te krijgen" │
|
||||
│ (cliënt-versie) │
|
||||
│ │
|
||||
│ Voortgang: ██████░░░░ 60% │
|
||||
│ Status: Bezig | Deadline: 8 weken │
|
||||
│ │
|
||||
│ Meetbaarheid: Aantal werkdagen per week bijhouden │
|
||||
│ │
|
||||
│ [Bewerk] [↻ Regenereer] [Details ▼] │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Velden per doel:**
|
||||
| Veld | Type | Beschrijving |
|
||||
|------|------|--------------|
|
||||
| Titel | Tekst | Korte beschrijving (1 zin) |
|
||||
| Beschrijving | Tekst | SMART-uitwerking (2-3 zinnen) |
|
||||
| Cliënt-versie | Tekst | B1-taal versie voor cliënt |
|
||||
| Leefgebied | Tag | DLV/Wonen/Werk/Sociaal/etc. |
|
||||
| Prioriteit | Dropdown | Hoog/Middel/Laag |
|
||||
| Meetbaarheid | Tekst | Hoe meten we vooruitgang? |
|
||||
| Tijdslijn | Getal | Binnen X weken |
|
||||
| Status | Dropdown | Niet gestart/Bezig/Gehaald/Bijgesteld |
|
||||
| Voortgang | Slider | 0-100% |
|
||||
|
||||
**Acties:**
|
||||
- `[Bewerk]`: Inline editing van alle velden
|
||||
- `[↻ Regenereer]`: AI genereert alternatief doel (zie 4.6)
|
||||
- `[Details ▼]`: Uitklappen voor SMART-details
|
||||
- `[+]`: Handmatig doel toevoegen
|
||||
- `[🗑️]`: Doel verwijderen
|
||||
|
||||
**AI-gedrag bij generatie:**
|
||||
- Focust op leefgebieden met prioriteit "Hoog"
|
||||
- Verdeelt doelen over minimaal 2 verschillende domeinen
|
||||
- Maakt concrete, meetbare doelen (geen vage termen)
|
||||
- Genereert automatisch B1-taal cliënt-versie
|
||||
|
||||
---
|
||||
|
||||
### 4.5 Interventies
|
||||
|
||||
**Weergave per interventie:**
|
||||
```
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ 🧠 Cognitieve Gedragstherapie (CGT) │
|
||||
│ │
|
||||
│ Beschrijving: │
|
||||
│ Identificeren en uitdagen van negatieve gedachtenpatronen │
|
||||
│ die angst en vermijding in stand houden. │
|
||||
│ │
|
||||
│ Rationale: │
|
||||
│ CGT is de eerste keuze behandeling bij angststoornissen │
|
||||
│ met sterke evidentie voor effectiviteit. │
|
||||
│ │
|
||||
│ Gekoppeld aan: [💼 Doel 1] [👥 Doel 2] │
|
||||
│ │
|
||||
│ [Bewerk] [Details ▼] │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Velden per interventie:**
|
||||
| Veld | Type | Beschrijving |
|
||||
|------|------|--------------|
|
||||
| Naam | Tekst | CGT, Exposure, EMDR, ACT, etc. |
|
||||
| Beschrijving | Tekst | Uitleg van de interventie |
|
||||
| Rationale | Tekst | Waarom past dit bij deze cliënt? |
|
||||
| Gekoppelde doelen | Multi-select | Welke doelen worden benaderd? |
|
||||
|
||||
**AI-mapping (evidence-based):**
|
||||
| DSM-Categorie | Primaire Interventies | Sessies bij Hoog |
|
||||
|---------------|----------------------|------------------|
|
||||
| Angststoornissen | CGT, Exposure, ACT | 12-16 sessies |
|
||||
| Stemmingsklachten | CGT, IPT, Gedragsactivatie | 8-12 sessies |
|
||||
| Trauma/PTSS | EMDR, Narratieve therapie | 12+ sessies |
|
||||
| Persoonlijkheid | Schematherapie, MBT | 20+ sessies |
|
||||
|
||||
---
|
||||
|
||||
### 4.6 Micro-regeneratie (Stretch)
|
||||
|
||||
**Trigger:** Klik op `[↻ Regenereer]` bij specifiek doel of interventie
|
||||
|
||||
**Flow:**
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ ↻ Doel regenereren [X] │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ Huidige doel: │
|
||||
│ "Terugkeer naar 4 werkdagen per week" │
|
||||
│ │
|
||||
│ Extra instructie voor AI (optioneel): │
|
||||
│ ┌─────────────────────────────────────────────────────────┐│
|
||||
│ │ Maak meer gefocust op geleidelijke opbouw ││
|
||||
│ └─────────────────────────────────────────────────────────┘│
|
||||
│ │
|
||||
│ [Annuleren] [↻ Regenereer] │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Na regeneratie:**
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ Nieuw voorstel: │
|
||||
│ │
|
||||
│ "Stapsgewijze opbouw naar 4 werkdagen via 2→3→4 schema" │
|
||||
│ │
|
||||
│ [Behoud origineel] [✓ Accepteer nieuw voorstel] │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Gedrag:**
|
||||
- AI behoudt context van rest van plan
|
||||
- Alleen het specifieke onderdeel wordt vervangen
|
||||
- Toast notification bij succes: "Doel bijgewerkt"
|
||||
|
||||
---
|
||||
|
||||
### 4.7 Publicatie Workflow
|
||||
|
||||
**Statussen:**
|
||||
```
|
||||
Concept ──→ Actief ──→ In evaluatie ──→ Afgerond
|
||||
│ │
|
||||
└──→ Gearchiveerd ←──────────┘
|
||||
(bij nieuwe versie)
|
||||
```
|
||||
|
||||
**Validatie voor publicatie:**
|
||||
- ✓ Minimaal 1 doel ingevuld
|
||||
- ✓ Minimaal 1 interventie gekoppeld
|
||||
- ✓ Behandelstructuur compleet (duur, frequentie)
|
||||
- ✓ Evaluatiemomenten gepland (tussentijds + eind)
|
||||
|
||||
**Publicatie actie:**
|
||||
1. Behandelaar klikt `[Publiceer]`
|
||||
2. Systeem valideert compleetheid
|
||||
3. Bij succes: status → "Actief", publicatiedatum vastgelegd
|
||||
4. Toast: "Behandelplan gepubliceerd"
|
||||
5. Plan zichtbaar in cliëntportaal
|
||||
|
||||
**Versie-beheer:**
|
||||
- Nummering: v1, v2, v3, etc.
|
||||
- Bij "Nieuwe Versie": huidige → "Gearchiveerd", nieuwe kopie → "Concept"
|
||||
- Oude versies blijven zichtbaar (read-only)
|
||||
|
||||
---
|
||||
|
||||
## 5. UI-overzicht (visuele structuur)
|
||||
|
||||
### Behandelplan Pagina Layout
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ HEADER │
|
||||
│ Mini-EPD Logo [Cliëntnaam ▼] [Zoek...] [Profiel] │
|
||||
├─────────────────┬───────────────────────────────────────────────┤
|
||||
│ SIDEBAR │ MAIN CONTENT │
|
||||
│ │ │
|
||||
│ ← Cliënten │ ┌───────────────────────────────────────────┐ │
|
||||
│ ───────── │ │ Behandelplan v1 Status: Concept │ │
|
||||
│ □ Dashboard │ │ [Bewerken] [Publiceer] [Print] │ │
|
||||
│ □ Intake │ └───────────────────────────────────────────┘ │
|
||||
│ □ Diagnose │ │
|
||||
│ ■ Behandelplan │ ┌── Behandelstructuur ──────────────────────┐ │
|
||||
│ □ Rapportage │ │ Duur: 8 weken | Freq: Wekelijks | 8 sess │ │
|
||||
│ □ Agenda │ └───────────────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ │ ┌── Leefgebieden ────────────────────────────┐ │
|
||||
│ │ │ [Progress bars met scores per domein] │ │
|
||||
│ │ └───────────────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ │ ┌── SMART Doelen ────────────────────────────┐ │
|
||||
│ │ │ [Doel 1 - Werk] │ │
|
||||
│ │ │ [Doel 2 - Sociaal] │ │
|
||||
│ │ │ [Doel 3 - DLV] │ │
|
||||
│ │ │ [+ Doel toevoegen] │ │
|
||||
│ │ └───────────────────────────────────────────┘ │
|
||||
│ │ │
|
||||
│ │ ┌── Interventies ────────────────────────────┐ │
|
||||
│ │ │ [CGT] [Exposure] │ │
|
||||
│ │ └───────────────────────────────────────────┘ │
|
||||
│ │ │
|
||||
├─────────────────┴───────────────────────────────────────────────┤
|
||||
│ FOOTER: Auto-saved 2 sec ago │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Responsive (Tablet)
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ [☰] Mini-EPD Cliëntnaam [Zoek] │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ Behandelplan v1 │
|
||||
│ Status: ● Concept │
|
||||
│ [Bewerken] [Publiceer] │
|
||||
│ │
|
||||
│ ┌── Behandelstructuur ────────────────────┐│
|
||||
│ │ Duur: 8 weken | Wekelijks | 8 sessies ││
|
||||
│ └─────────────────────────────────────────┘│
|
||||
│ │
|
||||
│ ┌── Leefgebieden ─────────────────────────┐│
|
||||
│ │ [Compacte progress bars] ││
|
||||
│ └─────────────────────────────────────────┘│
|
||||
│ │
|
||||
│ ┌── Doelen ───────────────────────────────┐│
|
||||
│ │ [Gestapelde doel cards] ││
|
||||
│ └─────────────────────────────────────────┘│
|
||||
│ │
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. Interacties met AI (functionele beschrijving)
|
||||
|
||||
| Locatie | AI-actie | Trigger | Input | Output |
|
||||
|---------|----------|---------|-------|--------|
|
||||
| Behandelplan tab | Genereer plan | Klik `[⚡ Genereer]` | Intake + diagnose + leefgebieden | Compleet behandelplan (JSON) |
|
||||
| Doel card | Regenereer doel | Klik `[↻ Regenereer]` | Context plan + instructie | Alternatief doel |
|
||||
| Interventie card | Regenereer interventie | Klik `[↻ Regenereer]` | Context plan + instructie | Alternatieve interventie |
|
||||
| Doel card | Genereer cliënt-versie | Automatisch bij nieuw doel | Behandelaar-tekst | B1-taal versie |
|
||||
|
||||
### AI Response Format
|
||||
|
||||
```typescript
|
||||
interface AIGeneratedPlan {
|
||||
behandelstructuur: {
|
||||
duur: string // "8 weken"
|
||||
frequentie: string // "Wekelijks"
|
||||
aantalSessies: number // 8
|
||||
vorm: string // "Individueel"
|
||||
}
|
||||
doelen: Array<{
|
||||
id: string
|
||||
title: string
|
||||
description: string // SMART uitwerking
|
||||
clientVersion: string // B1-taal
|
||||
lifeDomain: string // "werk" | "sociaal" | etc.
|
||||
priority: string // "hoog" | "middel" | "laag"
|
||||
measurability: string
|
||||
timelineWeeks: number
|
||||
}>
|
||||
interventies: Array<{
|
||||
name: string
|
||||
description: string
|
||||
rationale: string
|
||||
linkedGoalIds: string[]
|
||||
}>
|
||||
evaluatiemomenten: Array<{
|
||||
type: string // "tussentijds" | "eind"
|
||||
weekNumber: number
|
||||
}>
|
||||
veiligheidsplan?: { // Alleen bij severity "Hoog"
|
||||
waarschuwingssignalen: string[]
|
||||
copingStrategieen: string[]
|
||||
contacten: string[]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Gebruikersrollen en rechten
|
||||
|
||||
| Rol | Toegang tot | Acties | Beperkingen |
|
||||
|-----|------------|--------|-------------|
|
||||
| Behandelaar | Eigen cliëntdossiers | Volledig CRUD, AI generatie | Alleen eigen cliënten |
|
||||
| Behandelaar (collega) | Gedeelde cliënten | Lezen, commentaar | Geen bewerken |
|
||||
| Cliënt | Eigen behandelplan | Alleen lezen | Ziet B1-versie, geen edit |
|
||||
| Demo-user | Alle fictieve data | Lezen + AI testen | Geen opslaan |
|
||||
|
||||
---
|
||||
|
||||
## 8. States en Foutafhandeling
|
||||
|
||||
### Empty States
|
||||
|
||||
**Geen behandelplan:**
|
||||
```
|
||||
┌───────────────────────────────────────────┐
|
||||
│ 📋 │
|
||||
│ │
|
||||
│ Nog geen behandelplan │
|
||||
│ │
|
||||
│ Vul eerst de intake en diagnose in, │
|
||||
│ dan kan AI een behandelplan genereren. │
|
||||
│ │
|
||||
│ [Naar Intake] [Naar Diagnose] │
|
||||
└───────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Incomplete voorwaarden:**
|
||||
```
|
||||
┌───────────────────────────────────────────┐
|
||||
│ ⚠️ Nog niet klaar voor behandelplan │
|
||||
│ │
|
||||
│ □ Intake notities ✓ │
|
||||
│ □ Diagnose/probleemprofiel ✗ │
|
||||
│ □ Leefgebieden scores ✗ │
|
||||
│ │
|
||||
│ Vul de ontbrekende onderdelen in. │
|
||||
└───────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Error States
|
||||
|
||||
| Situatie | Bericht | Actie |
|
||||
|----------|---------|-------|
|
||||
| AI niet beschikbaar | "AI tijdelijk niet beschikbaar" | Retry knop, handmatig alternatief |
|
||||
| Validatie fout | Inline error onder veld | Focus op fout veld |
|
||||
| Netwerk error | Toast: "Verbinding verloren" | Auto-retry, lokale opslag |
|
||||
| Rate limit | "Even wachten..." | Countdown timer |
|
||||
|
||||
### Loading States
|
||||
|
||||
**AI generatie:**
|
||||
```
|
||||
⚡ Behandelplan wordt gegenereerd...
|
||||
[████████████░░░░░░░] 75%
|
||||
Even geduld, dit duurt ~5 seconden
|
||||
```
|
||||
|
||||
**Auto-save:**
|
||||
- Tijdens typen: "Opslaan..."
|
||||
- Na succes: "✓ Opgeslagen 2 sec geleden"
|
||||
|
||||
---
|
||||
|
||||
## 9. Bijlagen & Referenties
|
||||
|
||||
### Interne Documenten
|
||||
- [PRD Behandelplan v2.0](./prd-behandelplan-v2-final.md) — Requirements
|
||||
- [Implementatieplan](~/.claude/plans/) — Technische aanpak
|
||||
- [UX Stylesheet](../ux-stylesheet.md) — Kleuren, typography
|
||||
|
||||
### Technische Specificaties
|
||||
- Database: `treatment_plans` tabel met JSONB structuur
|
||||
- API: `/api/behandelplan/generate` (POST, JSON response)
|
||||
- AI Model: Claude 3.5 Sonnet
|
||||
|
||||
### Externe Bronnen
|
||||
- [GGZ Richtlijnen](https://www.ggzrichtlijnen.nl/) — Evidence-based interventies
|
||||
- [WCAG 2.1 AA](https://www.w3.org/WAI/WCAG21/quickref/) — Accessibility
|
||||
|
||||
---
|
||||
|
||||
**Document Status:** v1.0 Draft
|
||||
**Volgende Review:** Na implementatie Fase 1-2
|
||||
**Eigenaar:** Colin Lit
|
||||
Reference in New Issue
Block a user