Files
triqura-ecd/docs/specs/behandelplan/prd-behandelplan-v2-final.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

47 KiB
Raw Blame History

📄 Product Requirements Document (PRD) — Behandelplan Module

Projectnaam: Mini-ECD Prototype - AI Speedrun
Versie: v2.0 (volgens template, incl. Leefgebieden)
Datum: 2 december 2024
Auteur: Colin Lit

Changelog:

  • v2.0: Herstructurering volgens PRD template, duidelijke MVP/post-MVP scheiding, expliciete UX sectie
  • v1.1: Leefgebieden methodiek toegevoegd
  • v1.0: Initiële versie

1. Doelstelling

🎯 Doel van deze sectie: Beschrijf waarom dit product of prototype wordt gebouwd en wat het beoogde resultaat is.

1.1 Waarom

Huidige EPD-systemen behandelen het behandelplan als een statisch administratief document dat:

  • Eenmalig wordt geschreven en zelden wordt geëvalueerd
  • Geen duidelijke koppeling heeft met het feitelijke behandelproces
  • Voor cliënten ontoegankelijk of onbegrijpelijk is
  • Voor behandelaars veel handmatig schrijfwerk kost (30+ minuten)
  • Niet helpt bij het structureren van de daadwerkelijke zorg

Resultaat: Het behandelplan is een "vinkje voor de administratie" in plaats van een levend werkdocument.

1.2 Wat

Een werkend MVP-behandelplan dat demonstreert hoe AI:

  1. Tijdsbesparing realiseert: van 30+ minuten naar 2-5 minuten
  2. Kwaliteitsverbetering biedt: SMART-doelen, evidence-based interventies, recovery-gericht
  3. Transparantie creëert: cliënt kan eigen plan begrijpen en volgen
  4. Praktische workflow ondersteunt: intake → diagnose → behandelplan → sessies → evaluatie

1.3 Voor Wie

Dit is een demo-prototype voor:

  • AI Speedrun LinkedIn Serie - Build in public content
  • Product Owners & GGZ Managers - AI-toegevoegde waarde zien
  • Zorgprofessionals - Herkenbare workflow met directe meerwaarde
  • Developers - Inspiratie voor AI-integratie in healthcare

1.4 Type Release

MVP Prototype - Focus op demo-readiness en core value proposition. Geen productie-systeem.


2. Doelgroep

🎯 Doel: Schets wie de eindgebruikers, stakeholders en testers zijn.

2.1 Primaire Gebruikers (voor Demo)

Behandelaar (GGZ-professional)

  • Rol: Psycholoog, psychiater, POH-GGZ, verpleegkundig specialist
  • Behoefte: Snel behandelplan opstellen zonder kwaliteit in te leveren
  • Pijnpunten:
    • Te veel schrijfwerk
    • Moeilijk om SMART-doelen te formuleren
    • Leeg vel syndroom ("waar begin ik?")
    • Veel copy-paste van oude plannen
  • Gebruik in demo: Primaire gebruiker die hele flow doorloopt

Cliënt (patiënt/deelnemer)

  • Rol: Persoon in GGZ-behandeling
  • Behoefte: Begrijpen wat er gaat gebeuren, waar we naar toewerken
  • Pijnpunten:
    • Behandelplan vol vakjargon
    • Onduidelijk wat verwachting is
    • Plan voelt als "van de behandelaar", niet van mij
  • Gebruik in demo: Cliëntportaal-weergave als laatste stap

2.2 Secundaire Stakeholders

Product Owner / Manager

  • Inzicht in AI als enabler (niet vervanger)
  • ROI-berekening: 30 min → 5 min = 83% tijdsbesparing

Developer / Tech Lead

  • Inspiratie voor AI-integratie patterns
  • Ziet hoe AI prompt engineering werkt in praktijk

LinkedIn Audience

  • Leert van transparant development proces
  • Ziet concrete AI-toepassing in healthcare

3. Kernfunctionaliteiten (MVP-scope)

🎯 Doel: Afbakenen van de minimale werkende functies.

3.1 MUST HAVE (Week 3 - Core MVP)

F-01: AI Behandelplan Generatie

Input:

  • Intake-notities (vrije tekst uit rich text editor)
  • DSM-categorie (uit Diagnose module)
  • Severity (Laag/Middel/Hoog)
  • Leefgebieden scores (7 domeinen met score 1-5 + prioriteit)

AI Processing:

  • Claude 3.5 Sonnet API call
  • Gestructureerde prompt met context
  • JSON response volgens schema
  • Response tijd: < 5 seconden

Output:

  • Behandelstructuur (duur, frequentie, aantal sessies)
  • 2-4 SMART doelen (elk gekoppeld aan leefgebied)
  • Evidence-based interventies per doel
  • Sessie-planning (grove indeling, 8-12 sessies)
  • 2 evaluatiemomenten (tussentijds + eind)
  • Veiligheidsplan (bij severity "Hoog")

Status: Concept (bewerkbaar, niet gepubliceerd)


F-02: Leefgebieden Tracking

7 Levensdomeinen:

  1. Dagelijkse Levensverrichtingen (DLV) - Zelfzorg, structuur
  2. Wonen - Woonsituatie, veiligheid
  3. Werk/Dagbesteding - Baan, opleiding, vrijwilligerswerk
  4. Sociaal netwerk - Familie, vrienden, relaties
  5. Vrijetijd/Zingeving - Hobby's, levensdoel, spiritualiteit
  6. Financiën - Schulden, inkomen, budgettering
  7. Lichamelijke gezondheid - Slaap, beweging, voeding

Intake-fase:

  • Formulier met 7 leefgebieden
  • Per gebied: score 1-5 (slider), toelichting (tekst), prioriteit (dropdown)
  • Opslaan in intake data (JSONB veld)

Behandelplan-fase:

  • Spindiagram (Recharts radar chart)
  • 3 lijnen: Baseline (grijs), Huidig (blauw), Doel (groen gestippeld)
  • Elk doel heeft leefgebied-tag (emoji + label)

Evaluatie-fase:

  • Update "Huidig" scores
  • Spindiagram update in real-time
  • Zichtbaar welke gebieden verbeteren/achter blijven

F-03: SMART Doelen (Behandelaar-versie)

Per doel:

  • Titel (kort, 1 zin)
  • Beschrijving (SMART-uitwerking, 2-3 zinnen)
  • Leefgebied-tag (dlv/wonen/werk/sociaal/vrijetijd/financien/gezondheid)
  • Prioriteit (hoog/middel/laag)
  • Meetbaarheid (hoe meten we vooruitgang?)
  • Tijdslijn (binnen X weken)
  • Status (niet_gestart/bezig/gehaald/bijgesteld)
  • Voortgang (0-100% progress bar)

Acties:

  • [Bewerk]: Inline editing
  • [↻ Regenereer]: AI genereert alternatief
  • [+]: Handmatig doel toevoegen

AI-gedrag:

  • Focus op prioriteit "Hoog" leefgebieden
  • Mix van verschillende leefgebieden (niet alles op 1 domein)
  • Concreet en meetbaar (geen vage termen)

F-04: Cliënt-vriendelijke Doelen (B1-taal)

Per doel EXTRA veld:

  • "Cliënt-versie" in B1-Nederlands
  • Geen jargon, concrete voorbeelden

Voorbeeld:

Behandelaar: "Reductie van vermijdingsgedrag met 50% binnen 8 weken"
Cliënt: "Ik ga weer naar de supermarkt zonder paniek te krijgen"

Validatie:

  • AI genereert automatisch cliënt-versie
  • Behandelaar kan aanpassen
  • Cliëntportaal toont alleen cliënt-versies

F-05: Evidence-based Interventies

Per interventie:

  • Naam (CGT, Exposure, EMDR, ACT, Schematherapie, IPT, etc.)
  • Beschrijving (2-3 zinnen)
  • Rationale (waarom past dit bij deze cliënt?)
  • Gekoppelde doelen (welke doelen worden hiermee benaderd?)

AI-mapping:

DSM-Categorie Primaire Interventies Severity → Intensiteit
Angststoornissen CGT, Exposure, ACT Hoog → 12-16 sessies
Stemmingsklachten CGT, IPT, Gedragsactivatie Middel → 8-12 sessies
Trauma/PTSS EMDR, Narratieve therapie Hoog → 12+ sessies
Persoonlijkheid Schematherapie, MBT Hoog → 20+ sessies

F-06: Sessie-planning

Tabel-weergave:

# Focus Datum Status Gekoppelde Doelen Notities
1 Psycho-educatie angst 15-11 ✓ Afgerond Doel 1, 2 Ging goed
2 Start exposure oefeningen 22-11 ⏵ Gepland Doel 2 -
3 Exposure + huiswerk review 29-11 ⏵ Gepland Doel 2 -

Functionaliteit:

  • AI genereert grove planning (Sessie 1-2: X, Sessie 3-6: Y, etc.)
  • Behandelaar kan aanpassen, toevoegen, verwijderen
  • Status wijzigen: Gepland → Afgerond/No-show/Verzet/Geannuleerd
  • Korte notitie na sessie (optioneel)

F-07: Evaluatiemomenten

Minimaal 2 evaluaties:

  1. Tussentijdse evaluatie (na ca. 1/3 behandeling)
  2. Eindevaluatie (einde behandeling)

Per evaluatie:

  • Type (tussentijds/eind/crisis)
  • Geplande datum (automatisch berekend, aanpasbaar)
  • Werkelijke datum (invullen bij uitvoeren)
  • Status (gepland/afgerond/overgeslagen)
  • Uitkomst (vrije tekst, 2-5 zinnen)
  • Aanpassingen (wat is gewijzigd in plan?)
  • ROM-scores (optioneel, indien beschikbaar)
  • Leefgebieden update (nieuwe scores voor "Huidig")

Triggers:

  • Bij evaluatiedatum: visuele indicator in UI
  • Na evaluatie: optie om nieuwe versie te starten (v2)

F-08: Versie-beheer

Statussen:

  • Concept: Bewerkbaar, niet zichtbaar voor cliënt
  • Actief: Gepubliceerd, zichtbaar voor cliënt, nog bewerkbaar
  • In evaluatie: Evaluatiemoment gepland/bezig
  • Afgerond: Behandeling afgerond, plan gearchiveerd
  • Gearchiveerd: Bij nieuwe versie wordt oude versie gearchiveerd

Versie-nummering:

  • v1, v2, v3, etc.
  • Bij significante wijziging (na evaluatie, nieuwe doelen): nieuwe versie starten
  • Oude versies blijven zichtbaar (read-only)

Versie-overzicht:

┌─────────────────────────────────────────────────┐
│ Versie | Status    | Datum      | Behandelaar  │
│────────┼───────────┼────────────┼──────────────│
│ v2     │ ● Actief  │ 15-11-2024 │ Jansen, M.   │
│ v1     │ Afgerond  │ 01-10-2024 │ Jansen, M.   │
└─────────────────────────────────────────────────┘

F-09: Concept → Actief Publicatie

Workflow:

  1. Behandelaar genereert plan (of maakt handmatig)
  2. Plan is in status "Concept"
  3. Behandelaar reviewt en bewerkt
  4. Knop "Publiceer" → Plan wordt "Actief"
  5. Publicatiedatum wordt vastgelegd
  6. Plan is nu zichtbaar in cliëntportaal

Validatie voor publicatie:

  • Minimaal 1 doel ingevuld
  • Minimaal 1 interventie gekoppeld
  • Behandelstructuur compleet
  • Evaluatiemomenten gepland

F-10: Micro-regeneratie

Per sectie/item een [↻ Regenereer] knop:

  • Behandelaar kan specifiek onderdeel laten hergenereren
  • AI behoudt context van rest van plan
  • Optioneel: korte instructie meegeven ("maak concreter", "focus op werk")

Voorbeeld:

  • Doel 2 past niet goed → klik [↻ Regenereer]
  • Popup: "Geef optioneel extra instructie" (tekstveld)
  • AI genereert nieuw voorstel voor Doel 2
  • Behandelaar accepteert of verwerpt

3.2 SHOULD HAVE (Week 3 - Nice to have)

F-11: Crisis/Veiligheidsplan

Trigger: Alleen bij severity "Hoog" Inhoud:

  • Waarschuwingssignalen (3-5 items)
  • Coping strategieën (3-5 items)
  • Belangrijke contacten (behandelaar, crisis, 113)
  • Restricties (bijv. "Geen alcohol tijdens behandeling")

Zichtbaar voor cliënt: Ja, prominente weergave met urgentie-styling


F-12: Betrokkenen

Wie: Partner, werkgever, huisarts, etc. Per betrokkene:

  • Naam
  • Rol/relatie
  • Betrokkenheid bij behandeling (tekst)

Voorbeeld: "Partner aanwezig bij intake en evaluaties"


F-13: Behandelaar Notities (intern)

Niet zichtbaar voor cliënt

  • Vrij tekstveld voor interne aantekeningen
  • Bijv. "Let op: vermijdt oogcontact, mogelijk trauma-gerelateerd"

3.3 COULD HAVE (Week 3 - Stretch goals)

F-14: Manual Mode (zonder AI)

  • Behandelaar kan volledig handmatig plan opstellen
  • Leeg canvas met secties
  • Voor als AI-output niet passend is

F-15: Templates

  • Vooraf ingevulde templates voor veelvoorkomende behandeltypes
  • Bijv. "CGT Angststoornissen 12 sessies"
  • Behandelaar past aan voor specifieke cliënt

F-16: Copy from Previous

  • Delen kopiëren uit eerder behandelplan van deze cliënt
  • Bijv. als cliënt terugkeert na afronding

F-17: Diff View

  • Verschil tussen versies visualiseren
  • Wat is gewijzigd van v1 naar v2?

4. Gebruikersflows (Demo- en MVP-flows)

🎯 Doel: Laten zien hoe de gebruiker stap-voor-stap door het systeem gaat.

Flow 1: Happy Path — Intake → Behandelplan (Demo-ready)

Tijd: < 3 minuten totaal

┌─────────────────────────────────────────────────────────┐
│ 1. Behandelaar voltooit intake                         │
│    → Rich text editor met notities                     │
│    → Leefgebieden formulier invullen (7 domeinen)      │
│    → Slaat op                                           │
│    ↓                                                    │
│ 2. Navigeert naar Diagnose tab                         │
│    → Klikt [AI ⚡ Analyseer intake]                     │
│    → AI genereert DSM-categorie + Severity (3 sec)     │
│    ↓                                                    │
│ 3. Accepteert of bewerkt diagnose                      │
│    → Slaat probleemprofiel op                          │
│    ↓                                                    │
│ 4. Navigeert naar Behandelplan tab                     │
│    → Ziet: "⚡ AI kan een concept genereren"           │
│    → Klikt [Genereer Behandelplan]                     │
│    ↓                                                    │
│ 5. AI genereert compleet plan (< 5 sec)                │
│    → 3 SMART doelen (verdeeld over leefgebieden)       │
│    → 2 Interventies (CGT, Exposure)                    │
│    → 8 Sessies met focus per sessie                    │
│    → 2 Evaluatiemomenten                               │
│    → Spindiagram met leefgebieden                      │
│    ↓                                                    │
│ 6. Behandelaar reviewt en past aan (optioneel)         │
│    → Doel 2 niet passend? Klik [↻ Regenereer]          │
│    → Bewerk teksten inline                             │
│    ↓                                                    │
│ 7. Klikt [Accepteer & Publiceer]                       │
│    → Plan v1 wordt actief                              │
│    → Zichtbaar in cliëntportaal                        │
└─────────────────────────────────────────────────────────┘

Demo-highlight momenten:

  • Moment 1: Leefgebieden spindiagram visualiseert problematiek
  • Moment 2: AI generatie in real-time (< 5 sec, teller tonen)
  • Moment 3: Doelen hebben leefgebied-tags (recovery-gericht)
  • Moment 4: Cliënt-versie in simpele taal (B1-niveau)

Flow 2: Regeneratie van specifiek onderdeel

Tijd: < 30 seconden

┌─────────────────────────────────────────────────────────┐
│ 1. Behandelaar vindt Doel 2 niet passend                │
│    → Klik [↻ Regenereer] bij Doel 2                     │
│    ↓                                                    │
│ 2. Popup verschijnt                                     │
│    → "Geef optioneel instructie voor AI" (tekstveld)    │
│    → Behandelaar typt: "maak meer gefocust op werk"     │
│    → Klik [Regenereer]                                  │
│    ↓                                                    │
│ 3. AI genereert alternatief doel (< 3 sec)              │
│    → Behoudt context van rest van plan                  │
│    → Nieuw doel focust op werksituatie                  │
│    ↓                                                    │
│ 4. Behandelaar kiest                                    │
│    → [Accepteer nieuw voorstel] of [Behoud origineel]   │
└─────────────────────────────────────────────────────────┘

Flow 3: Evaluatie → Nieuwe Versie

Tijd: ~5 minuten

┌─────────────────────────────────────────────────────────┐
│ 1. Tussentijdse evaluatie gepland (week 4)              │
│    → Indicator in UI: "⏰ Evaluatie vandaag"            │
│    → Klik [Evaluatie invullen]                          │
│    ↓                                                    │
│ 2. Evaluatie-formulier                                  │
│    → Uitkomst (vrije tekst): "Goed op weg..."          │
│    → Leefgebieden scores updaten (spindiagram update)   │
│    → Voortgang per doel: Doel 1 60%, Doel 2 40%         │
│    ↓                                                    │
│ 3. Beslissing                                           │
│    → [Ga door met huidig plan] (kleine aanpassingen)    │
│    → [Start nieuwe versie v2] (grote wijzigingen)       │
│    ↓                                                    │
│ 4. Indien nieuwe versie                                 │
│    → v1 wordt "Afgerond"                                │
│    → v2 start als concept (kopie van v1)                │
│    → Behandelaar past aan, publiceert                   │
└─────────────────────────────────────────────────────────┘

Flow 4: Cliënt bekijkt eigen plan (Cliëntportaal)

Tijd: ~2 minuten bekijken

┌─────────────────────────────────────────────────────────┐
│ 1. Cliënt logt in op portaal                            │
│    → Ziet eigen dashboard                               │
│    → Tab "Mijn Behandelplan"                            │
│    ↓                                                    │
│ 2. Behandelplan-overzicht in B1-taal                    │
│    → "Waar we aan werken" (doelen in eigen woorden)     │
│    → Spindiagram: "Hoe het met je gaat" (visueel)       │
│    → "Wat we gaan doen" (interventies uitgelegd)        │
│    → "Planning" (wanneer zijn de gesprekken)            │
│    ↓                                                    │
│ 3. Acties                                               │
│    → [Print dit plan]                                   │
│    → [Stel een vraag] (chat met behandelaar)            │
└─────────────────────────────────────────────────────────┘

5. Niet in Scope

🎯 Doel: Duidelijk maken wat (nog) niet wordt gebouwd.

5.1 Definitief NIET in MVP (Week 3)

  1. ROM-vragenlijst afname binnen systeem

    • Reden: Complexe vragenlijsten (OQ-45, PHQ-9) zijn apart domein
    • Alternatief: Alleen scores tonen als ze er zijn, verwijzing naar externe tool
  2. Multi-disciplinaire behandelplannen (MDO)

    • Reden: Vereist samenwerking tussen meerdere behandelaars, complexe workflows
    • Alternatief: Enkelvoudige behandelaar alleen
  3. DBC/ZPM declaratie-koppeling

    • Reden: Vereist integratie met zorgadministratie-systemen
    • Alternatief: Niet nodig voor demo
  4. Medicatie-management

    • Reden: Apart domein met eigen complexiteit (medicatiehistorie, interacties)
    • Alternatief: Niet in behandelplan MVP
  5. Real-time samenwerking (concurrent editing)

    • Reden: Technisch complex, WebSockets/multiplayer sync
    • Alternatief: Laatste opslag wint, audit trail toont wie wat wijzigde
  6. Notificaties/Reminders via email/SMS

    • Reden: Vereist notification service, scheduling
    • Alternatief: Alleen visuele indicators in UI
  7. Integratie met externe agenda's (Google Calendar, Outlook)

    • Reden: OAuth flows, sync complexity
    • Alternatief: Handmatige datums in systeem
  8. Cliënt kan plan aanpassen/suggesties doen

    • Reden: UX flow voor "suggest changes" nog niet uitgewerkt
    • Alternatief: Cliënt kan alleen lezen, niet wijzigen (MVP)
  9. Terugvalpreventieplan als apart document

    • Reden: Kan onderdeel zijn van behandelplan
    • Alternatief: Opnemen in laatste sessie-planning of veiligheidsplan
  10. Fancy voortgangsgrafieken en dashboards

    • Reden: Recharts charts zijn nice-to-have, niet essentieel
    • Alternatief: Simpele progress bars (0-100%) en spindiagram
  11. Productie-grade audit logging

    • Reden: Demo-only, geen compliance vereist
    • Alternatief: Basis audit trail (wie, wat, wanneer)
  12. Meerdere AI providers (model switching)

    • Reden: Alleen Claude 3.5 Sonnet voor MVP
    • Alternatief: Hardcoded model, geen keuze

6. Succescriteria

🎯 Doel: Objectieve meetlat voor een geslaagde oplevering.

6.1 Demo Succescriteria (Week 3 Oplevering)

Performance:

  • AI behandelplan generatie: < 5 seconden
  • Page load behandelplan: < 1 seconde
  • Spindiagram render: < 500ms
  • Auto-save behandelplan: < 500ms response time

Functionaliteit:

  • Happy Path werkt zonder errors (intake → diagnose → behandelplan → publiceer)
  • AI genereert plan in ≥80% van gevallen bruikbaar zonder grote edits
  • Micro-regeneratie werkt per onderdeel
  • Leefgebieden spindiagram toont 3 lijnen (baseline, huidig, doel)
  • Doelen hebben leefgebied-tags en zijn verdeeld over minimaal 2 verschillende gebieden
  • Cliëntportaal toont behandelplan in B1-taal

UX/UI:

  • Behandelplan-pagina werkt op tablet (belangrijkste use case)
  • Spindiagram is begrijpelijk zonder uitleg voor ≥80% testgebruikers
  • Cliënt-versie doelen zijn begrijpelijk voor ≥90% testgebruikers (B1-validatie)
  • Demo flow doorlooptijd: intake → behandelplan < 3 minuten

Content:

  • Dummy-data voor 3 cliënten met behandelplannen (verschillende severities)
  • Help-tooltips bij complexe velden (SMART-criteria, severity, leefgebieden)
  • Onboarding hint wijst op AI-generatie feature

Technical:

  • Database schema geïmplementeerd (incl. leefgebieden JSONB)
  • API endpoints beschikbaar (CRUD behandelplan)
  • Row-level security policies actief
  • Audit trail logt alle wijzigingen (wie, wat, wanneer)

6.2 Post-MVP Succescriteria (Productie)

Tijdsbesparing:

  • Traditioneel handmatig: 30+ minuten
  • Met AI: < 5 minuten
  • Besparing: 83%

Kwaliteit:

  • Plan voldoet aan richtlijnen in ≥95% van gevallen
  • Behandelaar-tevredenheid: ≥4/5 sterren
  • Cliënt kan plan begrijpen zonder uitleg: ≥90%

Adoptie:

  • ≥70% behandelaars gebruikt AI-generatie feature
  • ≥50% behandelaars past micro-regeneratie toe
  • Sessie-planning wordt in ≥60% van plannen gebruikt

7. Risico's & Mitigatie

🎯 Doel: Risico's vroeg signaleren en plannen hoe ermee om te gaan.

# Risico Impact Kans Mitigatie
R-01 AI genereert onzinnig/gevaarlijk plan 🔴 Hoog 🟡 Laag • Duidelijke prompt engineering met voorbeelden
• Behandelaar reviewt ALTIJD (AI is suggestie, geen besluit)
• Validatie: plan moet minimaal 1 doel, 1 interventie bevatten
• Fallback: behandelaar kan handmatig plan maken
R-02 Behandelaar vindt AI-plan niet bruikbaar 🟠 Hoog 🟡 Middel • Manual mode beschikbaar (volledig handmatig)
• Micro-regeneratie per onderdeel (niet alles opnieuw)
• Templates als alternatief
• User feedback tijdens testing → prompt verbeteren
R-03 Leefgebieden spindiagram te complex 🟡 Middel 🟡 Middel • Uitleg bij eerste gebruik (tooltip/walkthrough)
• Hover toont details per gebied
• Kan verborgen worden als niet gewenst
• Test met niet-technische gebruikers
R-04 Versie-beheer wordt te complex 🟡 Middel 🟡 Middel • Start simpel: v1, v2, v3 (geen branching)
• Diff-view is optioneel (stretch)
• Duidelijke labels: "Actief", "Afgerond"
• Max 5-10 versies verwacht, overzichtelijk
R-05 Cliënt begrijpt B1-taal niet 🟡 Middel 🟢 Laag • Test cliënt-versies met echte cliënten
• Behandelaar kan aanpassen na AI-generatie
• Voorbeelden in UI (hover/tooltip)
• Versie voor lage geletterdheid (post-MVP)
R-06 Sessie-planning wordt niet gebruikt 🟢 Laag 🟡 Middel • Sessie-planning is optioneel, niet verplicht
• AI genereert grove planning (makkelijk starten)
• Behandelaar kan ook alleen evaluaties bijhouden
R-07 AI API rate limits / downtime 🟠 Hoog 🟢 Laag • Error handling: duidelijke foutmeldingen
• Retry logic (3x met backoff)
• Fallback: "AI tijdelijk niet beschikbaar, probeer later of maak handmatig"
• Cached responses voor demo (pre-generated)
R-08 Scope creep (te veel features) 🟡 Middel 🟠 Hoog • Strikte PRD met "Niet in Scope" sectie
• Weekly review: focus op MVP
• Post-MVP backlog voor ideeën
• Demo-readiness prioriteit #1
R-09 Privacy concerns (test met echte data) 🔴 Hoog 🟢 Laag • ALLEEN demo-data (fictieve cliënten)
• Duidelijke disclaimer in UI: "Demo-omgeving"
• Geen productie-data tijdens Speedrun
R-10 Time crunch Week 3 🟡 Middel 🟡 Middel • Prioriteer Must Have > Should Have > Could Have
• Spindiagram kan laatste dag (1 uur werk)
• Manual mode kan post-MVP
• Focus: 1 perfecte demo-flow

Mitigatie Overzicht:

  • 🔴 Hoog impact: Behandelaar blijft decision maker (AI = tool)
  • 🟠 Middel impact: Fallbacks en optionaliteit
  • 🟢 Laag impact: Monitoring en duidelijke scope

8. Roadmap / Vervolg (Post-MVP)

🎯 Doel: Richting geven aan toekomstige uitbreidingen.

8.1 Week 4 (Direct na MVP)

Polish & Testing:

  • User testing met 2-3 GGZ-professionals
  • Feedback verwerken in prompt engineering
  • Bug fixes naar aanleiding van testing
  • Performance optimalisatie (lazy loading, caching)

8.2 Fase 2: Productie-ready maken (Maand 2)

Veiligheid & Compliance:

  • Full audit logging (GGZ-dossier eisen)
  • Logging van AI-interacties (traceability)
  • Encryptie at rest voor behandelplannen
  • Backup & restore procedures

Rollen & Rechten:

  • Behandelaar-rollen (psycholoog, psychiater, POH)
  • Supervisor kan plannen reviewen
  • Team-leads hebben overzicht
  • Cliënt-toegang per behandelaar instellen

ROM-integratie:

  • Import ROM-scores (OQ-45, PHQ-9, etc.)
  • Toon scores in spindiagram als extra laag
  • Link evaluatiemomenten aan ROM-afname
  • Trendgrafiek ROM-scores over tijd

8.3 Fase 3: Geavanceerde features (Maand 3-4)

Multi-disciplinaire plannen (MDO):

  • Meerdere behandelaars kunnen bijdragen
  • Rol-specifieke doelen (psycholoog, psychiater, maatschappelijk werk)
  • Shared ownership van plan
  • Notificaties bij wijzigingen

Terugvalpreventie module:

  • Apart document gegenereerd na behandeling
  • Waarschuwingssignalen + actieplan
  • Cliënt kan zelf bijwerken (self-management)
  • Trigger bij crisis: "Bekijk je terugvalplan"

Trendanalyse & BI:

  • Dashboard behandelaar: welke interventies werken best
  • Organisatie-niveau: gemiddelde behandelduur per DSM-categorie
  • Leefgebieden-analyse: waar zitten meeste knelpunten
  • AI-effectiviteit: hoe vaak wordt AI-plan gebruikt vs. aangepast

Notificaties & Reminders:

  • Email/SMS bij naderende evaluatie
  • Cliënt reminder voor sessie (opt-in)
  • Behandelaar reminder voor niet-ingevulde evaluaties
  • Weekly digest: "3 plannen te evalueren deze week"

8.4 Fase 4: Integraties (Maand 5-6)

Externe systemen:

  • Koppeling met bestaande EPD's (PinkRoccade, Nedap, Zorgdomein)
  • FHIR-compliance (CarePlan resource)
  • MedMij/Koppeltaal koppelingen
  • API voor externe tools

Agenda-integratie:

  • Google Calendar sync voor sessies
  • Outlook integratie
  • iCal export voor cliënt

DBC/Declaratie:

  • Automatische DBC-registratie bij starten plan
  • Koppeling sessies aan DBC-productcodes
  • Export naar zorgadministratie

8.5 Backlog Ideeën (Toekomst)

AI-uitbreidingen:

  • Voice-to-text voor intake (tijdens gesprek)
  • AI-suggesties tijdens sessie ("Misschien wil je doel 2 bijstellen")
  • Predictive analytics: "Gebaseerd op vergelijkbare cliënten, verwachte behandelduur 10 weken"

Cliënt-participatie:

  • Cliënt kan voortgang zelf updaten ("Hoe ging het deze week?")
  • Cliënt kan suggesties doen voor doelen
  • Dagboek-functie voor cliënt (tussen sessies)

Gamification:

  • Voortgangsbadges voor cliënt ("3 sessies voltooid!")
  • Visuele mijlpalen in behandeling
  • Shared celebration bij behaalde doelen

9. UX/UI Specificatie

🎯 Doel: Expliciete beschrijving van user experience en interface design.

9.1 Design Principes

Behandelaar-perspectief:

  1. Efficiency first: Minimale clicks, snelle toegang
  2. Control over AI: AI is hulp, geen baas
  3. Progressive disclosure: Complexiteit verbergen tot nodig
  4. Tablet-optimized: Veel behandelaars werken op iPad

Cliënt-perspectief:

  1. Simplicity: Geen jargon, duidelijke taal
  2. Visual over text: Spindiagram > lange teksten
  3. Empowerment: Inzicht = controle over eigen proces
  4. Accessible: WCAG 2.1 AA, B1-taalniveau

9.2 Kleurenschema (uit UX Stylesheet)

Primary colors:

  • Primary Blue: #3b82f6 (buttons, links, actieve elementen)
  • Primary Dark: #1e40af (hover states)

Status colors:

  • Success Green: #10b981 (afgerond, behaald)
  • Warning Orange: #f59e0b (prioriteit hoog, let op)
  • Error Red: #ef4444 (severity hoog, crisis)
  • Info Blue: #60a5fa (concept, in bewerking)

Neutral colors:

  • Gray 900: #111827 (headings)
  • Gray 700: #374151 (body text)
  • Gray 500: #6b7280 (secondary text)
  • Gray 300: #d1d5db (borders)
  • Gray 100: #f3f4f6 (backgrounds)

Leefgebieden colors:

  • DLV: #8b5cf6 (paars)
  • Wonen: #ec4899 (roze)
  • Werk: #f59e0b (oranje)
  • Sociaal: #3b82f6 (blauw)
  • Vrijetijd: #10b981 (groen)
  • Financiën: #eab308 (geel)
  • Gezondheid: #ef4444 (rood)

9.3 Typography

Fonts:

  • Primary: Inter (sans-serif, schermgeoptimaliseerd)
  • Monospace: 'Courier New', monospace (voor code/data)

Sizes:

  • H1: 32px / 2rem - bold (Page titles)
  • H2: 24px / 1.5rem - semibold (Section headers)
  • H3: 20px / 1.25rem - semibold (Subsection headers)
  • Body: 16px / 1rem - regular (Default text)
  • Small: 14px / 0.875rem - regular (Labels, captions)
  • Tiny: 12px / 0.75rem - regular (Timestamps, metadata)

9.4 Behandelplan Hoofdpagina - Wireframe

┌─────────────────────────────────────────────────────────────┐
│ HEADER                                                       │
│ Mini-ECD Logo    [Bas Jansen ▼]      [Zoek cliënt...]      │
│                  ID: CL0002 | 20-11-1992                    │
├─────────────────────────────────────────────────────────────┤
│ SIDEBAR         │ MAIN CONTENT                              │
│                 │                                           │
│ ← Cliënten      │ ┌───────────────────────────────────────┐│
│ ─────────       │ │ Behandelplan v2                       ││
│ □ Dashboard     │ │ Status: ● Actief sinds 15-11-2024     ││
│ □ Intake        │ │ [Bewerken] [Nieuwe Versie] [Print]    ││
│ □ Diagnose      │ └───────────────────────────────────────┘│
│ ■ Behandelplan  │                                           │
│ □ Rapportage    │ 📋 Behandelstructuur                      │
│                 │ ┌───────────────────────────────────────┐│
│                 │ │ Duur: 8 weken                         ││
│                 │ │ Frequentie: Wekelijks                 ││
│                 │ │ Sessies: 8                            ││
│                 │ │ Vorm: Individueel                     ││
│                 │ └───────────────────────────────────────┘│
│                 │                                           │
│                 │ 🌐 Leefgebieden Overzicht                 │
│                 │ ┌───────────────────────────────────────┐│
│                 │ │  [SPINDIAGRAM: 7-hoekige radar]       ││
│                 │ │                                       ││
│                 │ │         Gezondheid (4)                ││
│                 │ │              │                        ││
│                 │ │    DLV (3) ──┼── Wonen (4)           ││
│                 │ │             │ ╲                     ││
│                 │ │  Financiën(3)─●─ Werk (2) ⚠️         ││
│                 │ │            ╲ │                      ││
│                 │ │    Vrijetijd ─┴─ Sociaal (2) ⚠️      ││
│                 │ │       (3)                            ││
│                 │ │                                       ││
│                 │ │ ━━ Baseline (grijs - start)          ││
│                 │ │ ── Huidig (blauw - week 4)           ││
│                 │ │ ·· Doel (groen gestippeld - week 8)  ││
│                 │ └───────────────────────────────────────┘│
│                 │                                           │
│                 │ 🎯 SMART Doelen (3)                       │
│                 │ ┌───────────────────────────────────────┐│
│                 │ │ 1. [💼 Werk] Terugkeer 4 dagen/week   ││
│                 │ │    "Ik werk weer 4 dagen zonder panic"││
│                 │ │    Voortgang: ██████░░░░ 60%          ││
│                 │ │    Status: Bezig | Deadline: 8 weken  ││
│                 │ │    [Bewerk] [↻ Regenereer] [Details▼]││
│                 │ ├───────────────────────────────────────┤│
│                 │ │ 2. [👥 Sociaal] 1x/week activiteit    ││
│                 │ │    "Ik zie elke week een vriend"      ││
│                 │ │    Voortgang: ████░░░░░░ 40%          ││
│                 │ │    Status: Bezig | Deadline: 8 weken  ││
│                 │ │    [Bewerk] [↻ Regenereer] [Details▼]││
│                 │ ├───────────────────────────────────────┤│
│                 │ │ 3. [🏃 DLV] Dagstructuur opbouwen     ││
│                 │ │    "Ik sta elke dag op voor 9 uur"    ││
│                 │ │    Voortgang: ███░░░░░░░ 30%          ││
│                 │ │    Status: Bezig | Deadline: 8 weken  ││
│                 │ │    [Bewerk] [↻ Regenereer] [Details▼]││
│                 │ └───────────────────────────────────────┘│
│                 │                                           │
│                 │ 💡 Interventies                           │
│                 │ ┌───────────────────────────────────────┐│
│                 │ │ • CGT - Cognitieve herstructurering   ││
│                 │ │   Gekoppeld aan: Doel 1, 2            ││
│                 │ │   [Details ▼]                         ││
│                 │ ├───────────────────────────────────────┤│
│                 │ │ • Exposure therapie (gradueel)        ││
│                 │ │   Gekoppeld aan: Doel 2               ││
│                 │ │   [Details ▼]                         ││
│                 │ └───────────────────────────────────────┘│
│                 │                                           │
│                 │ 📅 Sessie-planning (8 sessies)            │
│                 │ ┌───────────────────────────────────────┐│
│                 │ │ # | Focus          | Datum  | Status  ││
│                 │ │───┼────────────────┼────────┼─────────││
│                 │ │ 1 | Psycho-educatie| 15-11  |✓Afgerond││
│                 │ │ 2 | Start exposure | 22-11  |⏵Gepland ││
│                 │ │ 3 | Exposure +     | 29-11  |⏵Gepland ││
│                 │ │ 4 | ...            | ...    | ...     ││
│                 │ │                                       ││
│                 │ │ [+ Sessie toevoegen]                  ││
│                 │ └───────────────────────────────────────┘│
│                 │                                           │
│                 │ 📊 Evaluatiemomenten                      │
│                 │ ┌───────────────────────────────────────┐│
│                 │ │ ⏰ Tussentijds: 13-12-2024            ││
│                 │ │    Status: Gepland                    ││
│                 │ │    [Evaluatie invullen]               ││
│                 │ ├───────────────────────────────────────┤│
│                 │ │ ⏰ Eind: 10-01-2025                   ││
│                 │ │    Status: Gepland                    ││
│                 │ └───────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘

9.5 Micro-interacties

Doel Regeneratie:

  1. User klikt [↻ Regenereer] bij Doel 2
  2. Doel 2 card "pulseert" licht (opacity animation)
  3. Modal popup verschijnt met fade-in (200ms)
  4. Tekstveld heeft focus, placeholder: "Geef extra instructie (optioneel)"
  5. User typt instructie
  6. Klikt [Regenereer] knop
  7. Modal toont loader (spinner + "AI genereert nieuw voorstel...")
  8. Na 2-3 sec: nieuw voorstel verschijnt met slide-in
  9. User ziet [Accepteer] en [Behoud origineel] knoppen
  10. Bij accepteren: smooth transition naar nieuw doel
  11. Toast notification: "Doel 2 bijgewerkt"

Spindiagram Interactie:

  1. Hover over gebied (bijv. "Werk")
  2. Highlight die sectie in chart (opacity +20%)
  3. Tooltip verschijnt met:
    • "Werk/Dagbesteding"
    • "Baseline: 2/5 - Werkt 4 dagen, verzuim toegenomen"
    • "Huidig: 3/5 - Terug naar 3 dagen, minder verzuim"
    • "Doel: 4/5 - Weer 4 dagen stabiel"
  4. Click op gebied: scroll naar gekoppelde doelen (smooth scroll)

Sessie Afvinken:

  1. User klikt status-dropdown bij Sessie 2
  2. Dropdown opent met opties: Afgerond, No-show, Verzet, Geannuleerd
  3. User selecteert "Afgerond"
  4. Status wijzigt naar ✓ (groen check)
  5. Notities-veld wordt zichtbaar (slide-down)
  6. User kan korte notitie typen
  7. Auto-save na 2 seconden inactiviteit
  8. Check mark verschijnt in notities-veld: "Opgeslagen"

9.6 Responsive Design (Tablet)

Breakpoints:

  • Desktop: ≥1024px (sidebar + main content naast elkaar)
  • Tablet: 768-1023px (sidebar collapsible)
  • Mobile: <768px (niet primair, maar basis support)

Tablet layout:

  • Sidebar wordt "hamburger menu" (☰) in header
  • Main content full-width
  • Spindiagram blijft zichtbaar, maar kleinere radius (300px → 250px)
  • Doelen kaarten stapelen verticaal
  • Sessie-tabel horizontaal scrollable

9.7 Accessibility (WCAG 2.1 AA)

Keyboard navigation:

  • Tab order logisch (top → bottom, left → right)
  • Focus indicators duidelijk (blue outline 2px)
  • Enter/Space triggeren buttons
  • Escape sluit modals

Screen readers:

  • Alt teksten voor spindiagram (beschrijvende tabel als fallback)
  • ARIA labels voor interactive elements
  • Heading hierarchy correct (H1 → H2 → H3)
  • Form labels expliciet gekoppeld aan inputs

Color contrast:

  • Text op white: minimaal 4.5:1 ratio
  • Status colors: voldoen aan contrast eisen
  • Severity "Hoog" (rood): niet alleen kleur, ook icon (⚠️)

B1-taalniveau (cliënt-versies):

  • Zinnen max 15-20 woorden
  • Geen moeilijke woorden (jargon, Latijn)
  • Actieve vorm ("Je gaat oefenen" ipv "Er zal worden geoefend")
  • Concrete voorbeelden ("supermarkt" ipv "sociale situaties")

9.8 Loading States & Feedback

AI Generatie (5 seconden):

┌─────────────────────────────────────┐
│ ⚡ AI genereert behandelplan...     │
│                                     │
│ [====================   ] 80%       │
│                                     │
│ Analyseren van intake-notities ✓    │
│ Bepalen behandelfocus ✓             │
│ Genereren SMART doelen ⏳            │
│ Interventies koppelen ...           │
│ Sessie-planning opstellen ...       │
└─────────────────────────────────────┘

Auto-save Indicator:

  • Kleine indicator rechtsbovenin: "Opgeslagen 2 sec geleden"
  • Bij typen: "Aan het opslaan..."
  • Check mark bij succes: "✓ Opgeslagen"

Error States:

  • AI niet beschikbaar: "AI tijdelijk niet beschikbaar. Je kunt handmatig een plan opstellen of het later opnieuw proberen."
  • Validatie fout: Inline error onder veld (rood, met icon)
  • Network error: Toast notification onderaan: "Verbinding verloren. Controleer je internet."

9.9 Empty States

Geen behandelplan:

┌───────────────────────────────────────┐
│                                       │
│         📋                            │
│                                       │
│    Nog geen behandelplan              │
│                                       │
│    Vul eerst de intake en diagnose    │
│    in, dan kan AI een behandelplan   │
│    genereren.                         │
│                                       │
│    [Naar Intake]  [Naar Diagnose]    │
│                                       │
└───────────────────────────────────────┘

Geen sessies gepland:

┌───────────────────────────────────────┐
│  Nog geen sessies gepland             │
│  AI genereert een grove planning,     │
│  die je daarna kunt aanpassen.        │
│                                       │
│  [+ Sessie toevoegen]                 │
└───────────────────────────────────────┘

9.10 Cliëntportaal - Vereenvoudigde Weergave

Layout Verschillen:

  • Sidebar: Minder opties (Dashboard, Mijn Plan, Afspraken, Contact)
  • Taal: Alles in B1-Nederlands
  • Acties: Alleen read-only, geen edit buttons
  • Spindiagram: Labels uitgeschreven ("Dagelijks leven" ipv "DLV")
  • Doelen: Alleen cliënt-versies tonen
  • Interventies: Uitleg in eenvoudige taal + waarom dit helpt

Voorbeeld Doel in Cliëntportaal:

┌───────────────────────────────────────┐
│ 💼 Werk                               │
│                                       │
│ Ik werk weer 4 dagen per week         │
│ zonder paniek te krijgen              │
│                                       │
│ Hoe gaat het?                         │
│ ██████░░░░ 60% behaald                │
│                                       │
│ Wat doen we?                          │
│ • Oefenen met werk-situaties          │
│ • Ontspanningstechnieken leren        │
│ • Stapje voor stapje opbouwen         │
│                                       │
│ Wanneer klaar?                        │
│ Over 4 weken (8 januari)              │
└───────────────────────────────────────┘

10. Bijlagen & Referenties

🎯 Doel: Bronnen koppelen voor context en consistentie.

10.1 Interne Documenten

Project Management:

Eerdere PRD's:


10.2 Externe Bronnen

GGZ Richtlijnen & Standaarden:

AI & Prompting:

UX/UI Resources:


10.3 Tools & Libraries

Frontend:

  • Next.js 15 (React framework)
  • TailwindCSS + shadcn/ui (styling)
  • Recharts (spindiagram)
  • Tiptap (rich text editor)

Backend:

  • Supabase (database + auth)
  • Claude 3.5 Sonnet API (AI generation)
  • PostgreSQL (data storage)

Development:

  • pnpm (package manager)
  • TypeScript (type safety)
  • Playwright (E2E testing)

Document Status: Final v2.0
Volgende Review: Na Week 3 development
Eigenaar: Colin van Zeeland
Contact: colin@ikbenlit.nl