Files
triqura-ecd/docs/specs/behandelplan/fo-behandelplan-v1.md
colinislit 621e1c90f9 | 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
2025-12-04 09:09:23 +01:00

27 KiB

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

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

Technische Specificaties

  • Database: treatment_plans tabel met JSONB structuur
  • API: /api/behandelplan/generate (POST, JSON response)
  • AI Model: Claude 3.5 Sonnet

Externe Bronnen


Document Status: v1.0 Draft Volgende Review: Na implementatie Fase 1-2 Eigenaar: Colin Lit