- Add useDocsChat hook with message state, streaming, error handling - Add ChatMessages component with auto-scroll and streaming cursor - Add ChatInput component with Enter/Shift+Enter support - Add DocsChatWidget floating container with amber styling - Add AI integration specs (PRD, FO, bouwplan) Implements Epic 3 of AI Documentatie Assistent feature. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
12 KiB
📄 Product Requirements Document (PRD) — AI Pre-fill Behandelplan
Projectnaam: Mini-ECD – AI Pre-fill Behandelplan
Versie: v1.0
Datum: 30-11-2025
Auteur: Colin Lit
Status: Draft – Ready for Review
1. Doelstelling
🎯 Doel van deze sectie: Beschrijf waarom dit product wordt gebouwd en wat het beoogde resultaat is.
📘 Toelichting: Een intelligent pre-fill systeem dat automatisch behandelplanconcepten genereert op basis van intake-notities en probleemprofielen. De focus ligt op het drastisch verminderen van administratieve last terwijl klinische kwaliteit behouden blijft.
Kernbelofte: Van 30+ minuten handmatig behandelplan schrijven naar <5 minuten review en publiceren.
Type: MVP Feature binnen Mini-ECD Prototype (Week 3-4 AI Speedrun)
2. Doelgroep
🎯 Doel: Schets wie de eindgebruikers en stakeholders zijn.
Primaire gebruikers
| Rol | Behoefte | Pijnpunt nu |
|---|---|---|
| GGZ Behandelaar | Snel bruikbaar behandelplan | 30+ min typen per plan |
| Regiebehandelaar | Review & accorderen | Wachten op aanlevering |
Secundaire stakeholders
- Demo-bezoekers: Product owners/managers die AI-mogelijkheden willen zien
- Developers: Technische professionals geïnteresseerd in AI-integratie patterns
- Zorgverzekeraars: (toekomst) Compliance met zorgstandaarden
3. Kernfunctionaliteiten (MVP-scope)
🎯 Doel: Afbakenen van de minimale werkende functies.
3.1 Automatische Draft Generatie
| Aspect | Specificatie |
|---|---|
| Trigger | Probleemprofiel opgeslagen → AI genereert draft |
| Input | Intake-notities + DSM-categorie + Severity |
| Output | Concept behandelplan (4 secties) |
| Timing | On-demand bij navigatie naar Behandelplan tab |
3.2 SMART Doelen Generatie
- AI extraheert concrete klachten uit intake-notities
- Genereert 2-4 SMART-doelen afgestemd op DSM-categorie en severity
- Elk doel bevat:
- Specifiek gedrag/situatie
- Meetbaar criterium (frequentie, intensiteit)
- Acceptabel voor cliënt
- Realistisch binnen behandelkader
- Tijdgebonden (X weken)
Voorbeeld output:
"Cliënt ervaart maximaal 1 paniekaanval per week (nu: 3x/week) binnen 8 weken behandeling"
3.3 Evidence-based Interventie 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 |
3.4 Micro-AI Regeneratie
- Per sectie/item een [↻ Regenereer] knop
- Behandelaar kan specifieke onderdelen laten hergenereren
- Behoudt context van overige secties
- Optioneel: korte instructie meegeven ("maak concreter", "focus op werk")
3.5 (Stretch) ROM Score Integratie
- Indien ROM-scores beschikbaar: meenemen in doelbepaling
- Baseline scores automatisch toevoegen aan meetmomenten
- Suggestie voor ROM-instrument bij evaluatiemomenten
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
┌─────────────────────────────────────────────────────────────┐
│ 1. Behandelaar voltooit intake en slaat notities op │
│ ↓ │
│ 2. Klikt [AI › Analyseer intake] │
│ ↓ │
│ 3. Probleemprofiel wordt gegenereerd (DSM + Severity) │
│ ↓ │
│ 4. Accepteert/bewerkt profiel → Slaat op │
│ ↓ │
│ 5. Navigeert naar Behandelplan tab │
│ ↓ │
│ 6. Ziet: "⚡ AI heeft een concept klaargezet" │
│ ↓ │
│ 7. Reviewt SMART-doelen, past aan indien nodig │
│ ↓ │
│ 8. Klikt [Accepteer & Publiceer] → Plan v1 actief │
└─────────────────────────────────────────────────────────────┘
Doorlooptijd: < 3 minuten (vs. 30+ minuten traditioneel)
Flow 2: Regeneratie van specifiek onderdeel
- Behandelaar vindt Doel 2 niet passend
- Klikt [↻ Regenereer] bij Doel 2
- AI genereert alternatief doel met zelfde context
- Behandelaar selecteert nieuw voorstel of bewerkt handmatig
Flow 3: Handmatige start (geen AI)
- Behandelaar opent Behandelplan zonder probleemprofiel
- Ziet melding: "Geen concept beschikbaar. Vul eerst probleemprofiel in of start handmatig."
- Keuze: [Naar Probleemprofiel] of [Start leeg plan]
5. Niet in Scope
🎯 Doel: Duidelijk maken wat (nog) niet wordt gebouwd.
| Feature | Reden |
|---|---|
| Volledige DSM-5 classificatie | Alleen DSM-light (6 categorieën) voor prototype |
| Multi-disciplinaire plannen (MDO) | Complexiteit, geen meerwaarde voor demo |
| DBC/ZPM declaratie-koppeling | Vereist externe integraties |
| Real-time collaboration | Technisch complex, lage prioriteit |
| Volledige ROM-vragenlijst afname | Alleen scores indien al beschikbaar |
| Productie audit logging | Demo-only, geen compliance vereist |
| Meerdere AI providers | Alleen Claude voor nu |
6. Succescriteria
🎯 Doel: Objectieve meetlat voor een geslaagde oplevering.
| Criterium | Target | Meetmethode |
|---|---|---|
| AI Response Time | < 5 seconden | Console timing |
| Draft Kwaliteit | ≥ 80% bruikbaar zonder grote edits | User feedback |
| Tijdsbesparing | Van 30+ min → < 5 min | Stopwatch demo |
| Demo Doorlooptijd | Intake → Plan in < 3 min | Live demo |
| Error Rate | < 5% API failures | Error logging |
| User Acceptance | Min. 2 testers positief | Feedback forms |
7. Risico's & Mitigatie
🎯 Doel: Risico's vroeg signaleren en plannen hoe ermee om te gaan.
| Risico | Impact | Mitigatie |
|---|---|---|
| AI output klinisch onbruikbaar | 🔴 Hoog | Prompts testen met GGZ-professionals; few-shot examples; "AI Concept" label |
| Hallucinaties in doelen/interventies | 🟡 Middel | Strikte JSON schema validatie; verplichte menselijke review |
| API rate limits / kosten | 🟡 Middel | Caching van drafts; prompt optimalisatie voor tokens |
| Trage response (>10s) | 🟡 Middel | Streaming response; skeleton loaders; timeout handling |
| Scope creep ("nog even dit erbij") | 🟡 Middel | Strikte PRD; "Post-MVP" parkeren |
| Privacy concerns demo-data | 🟢 Laag | Alleen fictieve cliëntdata gebruiken |
8. Roadmap / Vervolg (Post-MVP)
🎯 Doel: Richting geven aan toekomstige uitbreidingen.
Fase 2: Enhanced AI (Q1 2026)
- Background Generation — Draft al genereren bij opslaan probleemprofiel
- Template Bibliotheek — Voorgedefinieerde templates per diagnose
- Prompt Tuning — A/B testen van verschillende prompt strategieën
Fase 3: Clinical Intelligence (Q2 2026)
- Sessie-over-Sessie Tracking — AI vergelijkt voortgang vs. doelen
- ROM Integratie — Automatische vragenlijst afname en scoring
- Risico Detectie — Flagging bij zorgwekkende patronen
Fase 4: Compliance & Scale (Q3 2026)
- Zorgstandaard Compliance — Check tegen GGZ richtlijnen
- Multi-provider Support — OpenAI/Gemini fallback
- Audit Trail — Volledige logging voor verantwoording
9. Bijlagen & Referenties
🎯 Doel: Bronnen koppelen voor context en consistentie.
Project Documentatie
- PRD Mini-ECD v1.2 (
prd-mini-ecd-v1_2.md) - Functioneel Ontwerp v2 (
fo-mini-ecd-v2.md) - Technisch Ontwerp (
to-mini-ecd-v1_2.md) - UX Stylesheet (
ux-stylesheet.md) - Live Transcriptie FO (
fo-live-transcriptie-v1.md) - FHIR GGZ Schema (
20241121_fhir_ggz_schema.sql)
Externe Referenties
Appendix A: Technische Specificatie
A.1 Data Flow
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Intake Notities │────▶│ │────▶│ Behandelplan │
│ (document_ref) │ │ Claude API │ │ Draft (JSONB) │
├──────────────────┤ │ │ ├──────────────────┤
│ Probleemprofiel │────▶│ /v1/messages │ │ - doelen[] │
│ (DSM + Severity)│ │ │ │ - interventies[]│
└──────────────────┘ └──────────────────┘ │ - frequentie │
│ - meetmomenten[]│
└──────────────────┘
A.2 API Endpoint
POST /api/ai/generate-behandelplan
Request:
{
"clientId": "uuid",
"intakeIds": ["uuid", "uuid"],
"probleemProfiel": {
"categorie": "Angststoornissen",
"severity": "Hoog",
"opmerkingen": "Paniekaanvallen 3x/week, vermijding openbare ruimtes"
}
}
Response:
{
"success": true,
"draft": {
"doelen": [
{
"id": "doel-1",
"tekst": "Frequentie paniekaanvallen verminderen van 3x/week naar max 1x/week",
"tijdslimiet": "8 weken",
"meetbaar": "Dagboekregistratie"
}
],
"interventies": [
{
"id": "int-1",
"naam": "Cognitieve Gedragstherapie (CGT)",
"sessies": 12,
"rationale": "Evidence-based voor paniekstoornis"
}
],
"frequentie": "Wekelijks, 50 minuten per sessie",
"meetmomenten": [
{ "moment": "Baseline", "week": 0 },
{ "moment": "Tussentijds", "week": 4 },
{ "moment": "Tussentijds", "week": 8 },
{ "moment": "Afsluiting", "week": 12 }
]
},
"metadata": {
"model": "claude-sonnet-4-20250514",
"tokens_used": 1847,
"generation_time_ms": 3200
}
}
A.3 Claude Prompt Template (Conceptueel)
Je bent een ervaren GGZ-behandelaar die behandelplannen opstelt volgens
de Nederlandse zorgstandaarden.
## Context
- Intake notities: {intakeContent}
- DSM-categorie: {categorie}
- Severity: {severity}
- Aanvullende opmerkingen: {opmerkingen}
## Opdracht
Genereer een behandelplan concept met:
1. **SMART Doelen** (2-4 stuks)
- Specifiek, Meetbaar, Acceptabel, Realistisch, Tijdgebonden
- Gebaseerd op de hoofdklachten uit de intake
2. **Interventies**
- Evidence-based methoden passend bij de diagnose
- Inclusief geschat aantal sessies
3. **Frequentie en Duur**
- Behandelintensiteit afgestemd op severity
4. **Meetmomenten**
- Evaluatieschema voor voortgangsbewaking
## Output Format
Antwoord ALLEEN met valid JSON volgens het schema.
Appendix B: UI States
Behandelplan Tab States
| State | Weergave | Actie |
|---|---|---|
| Geen profiel | "Vul eerst probleemprofiel in" | [Naar Profiel] |
| Generating | Skeleton loader + "AI genereert..." | Wacht |
| Draft ready | "⚡ AI Concept" badge + content | Review/Edit |
| Error | "Genereren mislukt" + retry | [Probeer opnieuw] |
| Concept | Oranje badge, bewerkbaar | [Publiceer] |
| Gepubliceerd | Groene badge, read-only | [Nieuwe versie] |
Document gegenereerd als onderdeel van AI Speedrun — Week 3