docs: add architecture and intake intent documentation
- Add architecture overview, implementation plan, and intent overview - Add intake intent process specs (gap analyse, bouwplan, testplan) - Add swift architecture specs and visualization prompts - Remove obsolete aispeedrun-manifesto template Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
330
docs/intent/intake-intent-proces/intake-process-intents.md
Normal file
330
docs/intent/intake-intent-proces/intake-process-intents.md
Normal file
@@ -0,0 +1,330 @@
|
||||
# Intake Proces: Flow, Intents & UI
|
||||
|
||||
**Datum:** 03-02-2026
|
||||
**Status:** Ontwerp
|
||||
**Doel:** Documentatie van het intake proces met bijbehorende Cortex intents en UI componenten
|
||||
|
||||
---
|
||||
|
||||
## 1. Procesoverzicht
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ INTAKE PROCES │
|
||||
├─────────────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │
|
||||
│ │ SCREENING │ ──▶ │ INTAKE START │ ──▶ │ INTAKE UITVOERING │ │
|
||||
│ │ │ │ │ │ │ │
|
||||
│ │ • Hulpvraag │ │ • Titel │ │ ┌────────────────────┐ │ │
|
||||
│ │ • Documenten │ │ • Afdeling │ │ │ 1. Algemeen │ │ │
|
||||
│ │ • Activiteit │ │ • Startdatum │ │ │ 2. Contactmomenten │ │ │
|
||||
│ │ • Besluit │ │ │ │ │ 3. Kindcheck │ │ │
|
||||
│ └──────────────┘ └──────────────┘ │ │ 4. Risicotaxatie │ │ │
|
||||
│ │ │ │ │ 5. Anamnese │ │ │
|
||||
│ ▼ │ │ │ 6. Onderzoeken │ │ │
|
||||
│ geschikt? ───▶ NEE ───▶ STOP │ │ 7. ROM │ │ │
|
||||
│ │ │ │ 8. Diagnose │ │ │
|
||||
│ JA │ │ 9. Behandeladvies │ │ │
|
||||
│ └────────────────────┘ │ └────────────────────┘ │ │
|
||||
│ │ │ │ │
|
||||
│ └─────────────┼────────────┘ │
|
||||
│ ▼ │
|
||||
│ ┌──────────────────────────┐ │
|
||||
│ │ INTAKE AFSLUITEN │ │
|
||||
│ │ │ │
|
||||
│ │ • Status: afgerond │ │
|
||||
│ │ • Einddatum │ │
|
||||
│ │ → Start Behandelplan │ │
|
||||
│ └──────────────────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Fase 1: Screening
|
||||
|
||||
### 2.1 Procesbeschrijving
|
||||
|
||||
De screening is de eerste beoordeling of een patiënt geschikt is voor behandeling. Hier wordt de hulpvraag vastgelegd, documenten verzameld (verwijsbrief), en een besluit genomen.
|
||||
|
||||
### 2.2 UI Componenten
|
||||
|
||||
| Component | Pad | Beschrijving |
|
||||
|-----------|-----|--------------|
|
||||
| `ScreeningPage` | `app/epd/patients/[id]/screening/page.tsx` | Container pagina |
|
||||
| `HelpRequestCard` | `screening/components/help-request-card.tsx` | Hulpvraag invoer (textarea) |
|
||||
| `DecisionCard` | `screening/components/decision-card.tsx` | Besluit: geschikt/niet_geschikt + afdeling |
|
||||
| `DocumentCard` | `screening/components/document-card.tsx` | Upload verwijsbrief en documenten |
|
||||
| `ActivityLog` | `screening/components/activity-log.tsx` | Chronologisch activiteitenlog |
|
||||
|
||||
### 2.3 Intents & Queries
|
||||
|
||||
| Intent | Type | Input Voorbeelden | Output/Actie |
|
||||
|--------|------|-------------------|--------------|
|
||||
| `screening_query` | Query | "Toon screening van Jan"<br>"Wat is de hulpvraag?" | `ScreeningBlock` - overzicht hulpvraag, besluit, status |
|
||||
| `hulpvraag_invoer` | Actie | "Hulpvraag: angstklachten en slaapproblemen"<br>"Noteer hulpvraag: depressieve klachten" | Vult `HelpRequestCard` in |
|
||||
| `screening_besluit` | Actie | "Jan is geschikt voor behandeling"<br>"Niet geschikt, doorverwijzen" | Vult `DecisionCard` in |
|
||||
| `screening_activiteit` | Actie | "Gebeld met huisarts over verwijzing"<br>"Verwijsbrief ontvangen" | Voegt toe aan `ActivityLog` |
|
||||
|
||||
### 2.4 Nudges
|
||||
|
||||
| Trigger | Nudge | Priority |
|
||||
|---------|-------|----------|
|
||||
| Hulpvraag ingevuld, geen verwijsbrief | "Verwijsbrief uploaden?" | medium |
|
||||
| Verwijsbrief + hulpvraag compleet | "Screeningsbesluit nemen?" | medium |
|
||||
| Besluit = geschikt | "Intake starten voor deze patiënt?" | low |
|
||||
|
||||
---
|
||||
|
||||
## 3. Fase 2: Intake Starten
|
||||
|
||||
### 3.1 Procesbeschrijving
|
||||
|
||||
Na een positief screeningsbesluit wordt een nieuwe intake aangemaakt met basisgegevens.
|
||||
|
||||
### 3.2 UI Componenten
|
||||
|
||||
| Component | Pad | Beschrijving |
|
||||
|-----------|-----|--------------|
|
||||
| `NewIntakePage` | `intakes/new/page.tsx` | Formulier voor nieuwe intake |
|
||||
| `NewIntakeForm` | `intakes/components/new-intake-form.tsx` | Titel, afdeling, startdatum |
|
||||
| `IntakeList` | `intakes/components/intake-list.tsx` | Overzicht alle intakes van patiënt |
|
||||
|
||||
### 3.3 Intents & Queries
|
||||
|
||||
| Intent | Type | Input Voorbeelden | Output/Actie |
|
||||
|--------|------|-------------------|--------------|
|
||||
| `intake_starten` | Actie | "Start intake voor Jan"<br>"Nieuwe intake afdeling Volwassenen" | Opent `NewIntakeForm` met prefill |
|
||||
| `intake_lijst` | Query | "Toon intakes van Jan"<br>"Welke intakes heeft Marie?" | `IntakeListBlock` - lijst met status |
|
||||
|
||||
---
|
||||
|
||||
## 4. Fase 3: Intake Uitvoering
|
||||
|
||||
### 4.1 Overzicht Tabs
|
||||
|
||||
| # | Tab | Verplicht | Component | Beschrijving |
|
||||
|---|-----|-----------|-----------|--------------|
|
||||
| 1 | Algemeen | ✅ | `IntakePage` | Basisgegevens intake |
|
||||
| 2 | Contactmomenten | ❌ | `ContactManager` | Gesprekken, telefoontjes |
|
||||
| 3 | Kindcheck | ⚠️* | `KindcheckForm` | Kinderen in beeld, zorgen, acties |
|
||||
| 4 | Risicotaxatie | ✅ | `RiskManager` | Suïcidaliteit, agressie, etc. |
|
||||
| 5 | Anamnese | ✅ | `AnamneseManager` | Psychiatrisch, sociaal, somatisch |
|
||||
| 6 | Onderzoeken | ❌ | `ExaminationManager` | Lichamelijk, psychologisch onderzoek |
|
||||
| 7 | ROM | ❌ | `ExaminationManager` (isRom) | Vragenlijsten (OQ-45, etc.) |
|
||||
| 8 | Diagnose | ✅ | `DiagnosisManager` | ICD-10 classificaties |
|
||||
| 9 | Behandeladvies | ✅ | `TreatmentAdviceForm` | Advies, programma, behandelaar |
|
||||
|
||||
*Kindcheck is wettelijk verplicht bij patiënten met kinderen
|
||||
|
||||
### 4.2 Tab-specifieke Intents
|
||||
|
||||
#### 4.2.1 Algemeen
|
||||
|
||||
| Intent | Type | Input | Output |
|
||||
|--------|------|-------|--------|
|
||||
| `intake_algemeen` | Query | "Toon intake gegevens"<br>"Wanneer is de intake gestart?" | Toont algemene info |
|
||||
| `intake_status` | Query | "Wat is de status van de intake?"<br>"Is de intake compleet?" | Status + checklist onvolledige secties |
|
||||
|
||||
#### 4.2.2 Contactmomenten
|
||||
|
||||
| Intent | Type | Input | Output |
|
||||
|--------|------|-------|--------|
|
||||
| `contact_toevoegen` | Actie | "Intakegesprek gehad met Jan"<br>"Telefonisch contact: besproken wachttijd" | Voegt contactmoment toe |
|
||||
| `contacten_query` | Query | "Welke contactmomenten zijn er geweest?" | Lijst contactmomenten |
|
||||
|
||||
#### 4.2.3 Kindcheck
|
||||
|
||||
| Intent | Type | Input | Output |
|
||||
|--------|------|-------|--------|
|
||||
| `kindcheck_invullen` | Actie | "Kindcheck: 2 kinderen, geen zorgen"<br>"Geen kinderen in beeld" | Vult kindcheck formulier |
|
||||
| `kindcheck_query` | Query | "Is de kindcheck gedaan?"<br>"Hoeveel kinderen heeft Jan?" | Status + samenvatting |
|
||||
|
||||
#### 4.2.4 Risicotaxatie
|
||||
|
||||
| Intent | Type | Input | Output |
|
||||
|--------|------|-------|--------|
|
||||
| `risico_toevoegen` | Actie | "Risico suïcidaliteit: matig"<br>"Agressierisico laag" | Voegt risico toe aan `RiskManager` |
|
||||
| `risico_query` | Query | "Wat zijn de risico's van Jan?"<br>"Toon risicotaxatie" | Risico overzicht met levels |
|
||||
|
||||
#### 4.2.5 Anamnese
|
||||
|
||||
| Intent | Type | Input | Output |
|
||||
|--------|------|-------|--------|
|
||||
| `anamnese_toevoegen` | Actie | "Psychiatrische anamnese: eerste depressie 2019"<br>"Sociale anamnese: woont alleen" | Voegt anamnese sectie toe |
|
||||
| `anamnese_query` | Query | "Wat is de voorgeschiedenis?"<br>"Toon anamnese" | Anamnese overzicht |
|
||||
|
||||
#### 4.2.6 Onderzoeken
|
||||
|
||||
| Intent | Type | Input | Output |
|
||||
|--------|------|-------|--------|
|
||||
| `onderzoek_toevoegen` | Actie | "Psychologisch onderzoek aangevraagd"<br>"Lab: bloedonderzoek normaal" | Voegt onderzoek toe |
|
||||
| `onderzoeken_query` | Query | "Welke onderzoeken zijn gedaan?" | Lijst onderzoeken + resultaten |
|
||||
|
||||
#### 4.2.7 ROM
|
||||
|
||||
| Intent | Type | Input | Output |
|
||||
|--------|------|-------|--------|
|
||||
| `rom_toevoegen` | Actie | "ROM: OQ-45 score 82"<br>"PHQ-9 afgenomen, score 14" | Voegt ROM-meting toe |
|
||||
| `rom_query` | Query | "Wat zijn de ROM scores?"<br>"Toon vragenlijsten" | ROM overzicht met scores |
|
||||
|
||||
#### 4.2.8 Diagnose
|
||||
|
||||
| Intent | Type | Input | Output |
|
||||
|--------|------|-------|--------|
|
||||
| `diagnose_toevoegen` | Actie | "Diagnose: depressieve stoornis"<br>"Hoofddiagnose F32.1" | Opent ICD-10 zoeken + voegt toe |
|
||||
| `diagnose_query` | Query | "Wat zijn de diagnoses?"<br>"Welke diagnose heeft Jan?" | Diagnose overzicht |
|
||||
|
||||
#### 4.2.9 Behandeladvies
|
||||
|
||||
| Intent | Type | Input | Output |
|
||||
|--------|------|-------|--------|
|
||||
| `behandeladvies_invoer` | Actie | "Behandeladvies: CGT bij angst"<br>"Advies: EMDR voor trauma" | Vult behandeladvies formulier |
|
||||
| `behandeladvies_query` | Query | "Wat is het behandeladvies?"<br>"Toon advies" | Behandeladvies overzicht |
|
||||
|
||||
### 4.3 Navigatie Intents
|
||||
|
||||
| Intent | Type | Input | Output |
|
||||
|--------|------|-------|--------|
|
||||
| `intake_navigeer` | Navigatie | "Ga naar risicotaxatie"<br>"Open kindcheck"<br>"Naar diagnose" | Navigeert naar specifieke tab |
|
||||
| `intake_volgende` | Navigatie | "Volgende stap"<br>"Ga verder" | Navigeert naar volgende tab |
|
||||
| `intake_vorige` | Navigatie | "Vorige"<br>"Terug" | Navigeert naar vorige tab |
|
||||
|
||||
---
|
||||
|
||||
## 5. Fase 4: Intake Afsluiten
|
||||
|
||||
### 5.1 Procesbeschrijving
|
||||
|
||||
Wanneer alle verplichte secties zijn ingevuld, kan de intake worden afgesloten.
|
||||
|
||||
### 5.2 Intents
|
||||
|
||||
| Intent | Type | Input | Output |
|
||||
|--------|------|-------|--------|
|
||||
| `intake_afsluiten` | Actie | "Sluit intake af"<br>"Intake afronden" | Zet status op 'afgerond' + einddatum |
|
||||
| `intake_samenvatting` | Query | "Samenvatting intake"<br>"Geef overzicht van de intake" | AI-gegenereerde samenvatting |
|
||||
| `intake_checklist` | Query | "Wat moet ik nog doen?"<br>"Is de intake compleet?" | Checklist onvolledige secties |
|
||||
|
||||
### 5.3 Nudges
|
||||
|
||||
| Trigger | Nudge | Priority |
|
||||
|---------|-------|----------|
|
||||
| Alle verplichte secties ingevuld | "Intake afsluiten?" | medium |
|
||||
| Intake afgesloten | "Behandelplan opstellen?" | low |
|
||||
| Intake > 4 weken open | "Intake nog actueel? Afsluiten of voortzetten?" | low |
|
||||
|
||||
---
|
||||
|
||||
## 6. Intent Matrix (Totaaloverzicht)
|
||||
|
||||
### 6.1 Alle Intents
|
||||
|
||||
| # | Intent ID | Type | Fase | Priority |
|
||||
|---|-----------|------|------|----------|
|
||||
| 1 | `screening_query` | Query | Screening | 🔴 Hoog |
|
||||
| 2 | `hulpvraag_invoer` | Actie | Screening | 🟡 Middel |
|
||||
| 3 | `screening_besluit` | Actie | Screening | 🟡 Middel |
|
||||
| 4 | `screening_activiteit` | Actie | Screening | 🔵 Laag |
|
||||
| 5 | `intake_starten` | Actie | Start | 🔴 Hoog |
|
||||
| 6 | `intake_lijst` | Query | Start | 🟡 Middel |
|
||||
| 7 | `intake_navigeer` | Navigatie | Uitvoering | 🔴 Hoog |
|
||||
| 8 | `intake_status` | Query | Uitvoering | 🔴 Hoog |
|
||||
| 9 | `contact_toevoegen` | Actie | Uitvoering | 🟡 Middel |
|
||||
| 10 | `kindcheck_invullen` | Actie | Uitvoering | 🟡 Middel |
|
||||
| 11 | `kindcheck_query` | Query | Uitvoering | 🟡 Middel |
|
||||
| 12 | `risico_toevoegen` | Actie | Uitvoering | 🔴 Hoog |
|
||||
| 13 | `risico_query` | Query | Uitvoering | 🔴 Hoog |
|
||||
| 14 | `anamnese_toevoegen` | Actie | Uitvoering | 🟡 Middel |
|
||||
| 15 | `anamnese_query` | Query | Uitvoering | 🟡 Middel |
|
||||
| 16 | `onderzoek_toevoegen` | Actie | Uitvoering | 🔵 Laag |
|
||||
| 17 | `onderzoeken_query` | Query | Uitvoering | 🔵 Laag |
|
||||
| 18 | `rom_toevoegen` | Actie | Uitvoering | 🟡 Middel |
|
||||
| 19 | `rom_query` | Query | Uitvoering | 🟡 Middel |
|
||||
| 20 | `diagnose_toevoegen` | Actie | Uitvoering | 🔴 Hoog |
|
||||
| 21 | `diagnose_query` | Query | Uitvoering | 🔴 Hoog |
|
||||
| 22 | `behandeladvies_invoer` | Actie | Uitvoering | 🔴 Hoog |
|
||||
| 23 | `behandeladvies_query` | Query | Uitvoering | 🔴 Hoog |
|
||||
| 24 | `intake_afsluiten` | Actie | Afsluiten | 🟡 Middel |
|
||||
| 25 | `intake_samenvatting` | Query | Afsluiten | 🟡 Middel |
|
||||
| 26 | `intake_checklist` | Query | Afsluiten | 🟡 Middel |
|
||||
|
||||
### 6.2 Verdeling
|
||||
|
||||
| Type | Aantal |
|
||||
|------|--------|
|
||||
| Query | 13 |
|
||||
| Actie | 11 |
|
||||
| Navigatie | 2 |
|
||||
| **Totaal** | **26** |
|
||||
|
||||
| Priority | Aantal |
|
||||
|----------|--------|
|
||||
| 🔴 Hoog | 10 |
|
||||
| 🟡 Middel | 13 |
|
||||
| 🔵 Laag | 3 |
|
||||
|
||||
---
|
||||
|
||||
## 7. UI Blocks (Nieuw te bouwen)
|
||||
|
||||
Voor Cortex moeten we nieuwe blocks bouwen die de intent resultaten tonen:
|
||||
|
||||
| Block | Toont | Bron Data |
|
||||
|-------|-------|-----------|
|
||||
| `ScreeningBlock` | Hulpvraag, besluit, status | `getScreeningSummary()` |
|
||||
| `IntakeStatusBlock` | Checklist tabs, voortgang | Nieuwe functie nodig |
|
||||
| `IntakeListBlock` | Lijst intakes van patiënt | `getIntakesByPatient()` |
|
||||
| `KindcheckBlock` | Samenvatting kindcheck | `getKindcheck()` |
|
||||
| `RisicoBlock` | Risico's met levels | `getRiskAssessments()` |
|
||||
| `AnamneseBlock` | Anamnese samenvatting | `getAnamneses()` |
|
||||
| `DiagnoseBlock` | Diagnoses lijst | `getDiagnoses()` |
|
||||
| `BehandeladviesBlock` | Behandeladvies | `getTreatmentAdvice()` |
|
||||
| `IntakeSamenvattingBlock` | AI-samenvatting hele intake | Nieuwe AI functie nodig |
|
||||
|
||||
---
|
||||
|
||||
## 8. Implementatie Prioriteit
|
||||
|
||||
### 8.1 MVP (Fase 1)
|
||||
|
||||
Focus op de meest waardevolle intents:
|
||||
|
||||
1. **`intake_status`** - "Wat moet ik nog doen?" → Checklist
|
||||
2. **`intake_navigeer`** - "Ga naar risicotaxatie" → Direct navigeren
|
||||
3. **`risico_query`** - "Wat zijn de risico's?" → Risico overzicht
|
||||
4. **`diagnose_query`** - "Welke diagnoses?" → Diagnose overzicht
|
||||
5. **`intake_samenvatting`** - "Samenvatting intake" → AI samenvatting
|
||||
|
||||
### 8.2 Fase 2
|
||||
|
||||
6. **`screening_query`** - Screening overzicht
|
||||
7. **`kindcheck_query`** - Kindcheck status
|
||||
8. **`behandeladvies_query`** - Behandeladvies tonen
|
||||
9. **`intake_starten`** - Nieuwe intake via spraak
|
||||
|
||||
### 8.3 Fase 3 (Actie intents)
|
||||
|
||||
10. **`risico_toevoegen`** - Risico toevoegen via spraak
|
||||
11. **`diagnose_toevoegen`** - Diagnose toevoegen
|
||||
12. **`kindcheck_invullen`** - Kindcheck invullen
|
||||
13. Overige actie intents...
|
||||
|
||||
---
|
||||
|
||||
## 9. Open Vragen
|
||||
|
||||
1. **Contextbeheer**: Hoe weet Cortex welke intake actief is als een patiënt meerdere intakes heeft?
|
||||
2. **Navigatie vs Blocks**: Navigeren we naar bestaande pagina's of tonen we data in Cortex blocks?
|
||||
3. **Actie confirmatie**: Welke acties vereisen bevestiging voordat ze uitgevoerd worden?
|
||||
4. **Integratie behandelplan**: Hoe koppelen we intake-afsluiting aan behandelplan-start?
|
||||
|
||||
---
|
||||
|
||||
## Versiehistorie
|
||||
|
||||
| Versie | Datum | Auteur | Wijziging |
|
||||
|--------|-------|--------|-----------|
|
||||
| v0.1 | 03-02-2026 | Colin Lit | Initieel ontwerp |
|
||||
Reference in New Issue
Block a user