Files
triqura-ecd/docs/intent/intake-intent-proces/gap-analyse-intake-cortex.md
colinislit af88ac9446 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>
2026-02-04 19:26:14 +01:00

14 KiB
Raw Permalink Blame History

Gap Analyse: Intake Proces × Cortex

Datum: 03-02-2026 Status: Analyse Bron: docs/intent/intake-process-intents.md


1. Executive Summary

Laag Status Conclusie
EPD Backend 90% compleet Server actions, database, API's zijn uitgebreid aanwezig
EPD UI 95% compleet Alle 9 intake tabs + screening hebben werkende componenten
Cortex Intents 0% Geen van de 26 intake intents bestaat
Cortex Blocks 0% Geen intake-specifieke blocks
Cortex API 0% Geen /api/cortex/intake/* routes

Conclusie: De EPD-functionaliteit is robuust gebouwd. De koppeling met Cortex ontbreekt volledig.


2. Wat Bestaat ()

2.1 Cortex Core (7 intents)

// lib/cortex/types.ts
type CortexIntent =
  | 'dagnotitie'        // ✅ Block + patterns
  | 'zoeken'            // ✅ Block + patterns
  | 'overdracht'        // ✅ Block + patterns
  | 'agenda_query'      // ✅ Patterns (geen dedicated block)
  | 'create_appointment'    // ✅ Patterns
  | 'cancel_appointment'    // ✅ Patterns
  | 'reschedule_appointment'// ✅ Patterns
  | 'unknown';

2.2 Cortex Blocks (6 stuks)

Block Pad Functie
dagnotitie-block.tsx components/cortex/blocks/ Notitie invoer
zoeken-block.tsx components/cortex/blocks/ Patiënt zoeken
overdracht-block.tsx components/cortex/blocks/ Overdracht samenvatting
patient-dashboard-block.tsx components/cortex/blocks/ Patiënt overzicht
patient-context-card.tsx components/cortex/blocks/ Context weergave
fallback-picker.tsx components/cortex/blocks/ Unknown intent handler

2.3 Cortex API Routes

Route Methode Functie
/api/cortex/classify POST Intent classificatie
/api/cortex/chat POST Streaming chat
/api/cortex/context GET Context ophalen
/api/cortex/agenda GET Agenda query
/api/cortex/agenda/create POST Afspraak maken
/api/cortex/agenda/cancel POST Afspraak annuleren
/api/cortex/agenda/reschedule POST Afspraak verzetten
/api/cortex/patients/search GET Patiënt zoeken

2.4 EPD Screening (Volledig)

UI Componenten:

Component Status Functie
HelpRequestCard Hulpvraag invoer (textarea)
DecisionCard Besluit: geschikt/niet_geschikt
DocumentCard Document upload
ActivityLog Activiteiten timeline

Server Actions:

Action Status Functie
getScreeningSummary() Screening data ophalen
saveHelpRequest() Hulpvraag opslaan
saveScreeningDecision() Besluit opslaan
addScreeningActivity() Activiteit toevoegen

2.5 EPD Intake (Volledig)

9 Tabs met UI + Actions:

Tab UI Component GET Action CREATE Action
Algemeen IntakePage getIntakeById() createIntake()
Contactmomenten ContactManager getContactMoments() createContactMoment()
Kindcheck KindcheckForm getKindcheck() saveKindcheck()
Risicotaxatie RiskManager getRiskAssessments() createRiskAssessment()
Anamnese AnamneseManager getAnamneses() createAnamnese()
Onderzoeken ExaminationManager getExaminations() createExamination()
ROM ExaminationManager getExaminations() createExamination()
Diagnose DiagnosisManager getDiagnoses() createDiagnosis()
Behandeladvies TreatmentAdviceForm getTreatmentAdvice() saveTreatmentAdvice()

3. Wat Ontbreekt ()

3.1 Intents (26 ontbreken)

Geen van de intake-gerelateerde intents uit intake-process-intents.md bestaat:

Screening Intents (4)

Intent Type Patterns nodig
screening_query Query ^(toon\s+)?screening, wat is de hulpvraag
hulpvraag_invoer Actie hulpvraag:, noteer hulpvraag
screening_besluit Actie geschikt voor behandeling, niet geschikt
screening_activiteit Actie gebeld met, verwijsbrief ontvangen

Intake Start Intents (2)

Intent Type Patterns nodig
intake_starten Actie start intake, nieuwe intake
intake_lijst Query toon intakes, welke intakes

Intake Navigatie (3)

Intent Type Patterns nodig
intake_navigeer Navigatie ga naar risico, open kindcheck
intake_volgende Navigatie volgende stap, ga verder
intake_vorige Navigatie vorige, terug

Intake Tab Intents (14)

Intent Type Tab
contact_toevoegen Actie Contactmomenten
contacten_query Query Contactmomenten
kindcheck_invullen Actie Kindcheck
kindcheck_query Query Kindcheck
risico_toevoegen Actie Risicotaxatie
risico_query Query Risicotaxatie
anamnese_toevoegen Actie Anamnese
anamnese_query Query Anamnese
onderzoek_toevoegen Actie Onderzoeken
onderzoeken_query Query Onderzoeken
rom_toevoegen Actie ROM
rom_query Query ROM
diagnose_toevoegen Actie Diagnose
diagnose_query Query Diagnose
behandeladvies_invoer Actie Behandeladvies
behandeladvies_query Query Behandeladvies

Intake Afsluiten (3)

Intent Type Patterns nodig
intake_afsluiten Actie sluit intake af, intake afronden
intake_samenvatting Query samenvatting intake
intake_checklist Query wat moet ik nog doen, is intake compleet

3.2 Cortex Blocks (9 ontbreken)

Block Doel Data bron
ScreeningBlock Screening overzicht getScreeningSummary()
IntakeListBlock Lijst intakes van patiënt getIntakesByPatientId()
IntakeStatusBlock Voortgang/checklist Nieuwe functie nodig
KindcheckBlock Kindcheck samenvatting getKindcheck()
RisicoBlock Risico's met levels getRiskAssessments()
AnamneseBlock Anamnese samenvatting getAnamneses()
DiagnoseBlock Diagnoses lijst getDiagnoses()
BehandeladviesBlock Behandeladvies tonen getTreatmentAdvice()
IntakeSamenvattingBlock AI samenvatting Nieuwe AI functie nodig

3.3 Cortex API Routes (ontbreken)

Route Methode Functie
/api/cortex/screening GET Screening data voor Cortex
/api/cortex/intake GET Intake lijst
/api/cortex/intake/[id] GET Intake details
/api/cortex/intake/[id]/status GET Intake voortgang/checklist
/api/cortex/intake/[id]/risks GET Risico's van intake
/api/cortex/intake/[id]/diagnoses GET Diagnoses van intake
/api/cortex/intake/[id]/summary GET AI samenvatting

3.4 Reflex Patterns (ontbreken)

In lib/cortex/reflex-classifier.ts moeten patterns worden toegevoegd voor alle 26 intents.


4. Architectuur Gap

┌─────────────────────────────────────────────────────────────────────────┐
│                         HUIDIGE SITUATIE                                 │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│   CORTEX                           EPD                                  │
│   ┌─────────────────┐              ┌─────────────────┐                 │
│   │ 7 Intents       │              │ Screening UI    │                 │
│   │ 6 Blocks        │     ❌       │ Intake UI (9)   │                 │
│   │ 8 API routes    │ ─ ─ ─ ─ ─ ─ │ Server Actions  │                 │
│   └─────────────────┘  GEEN LINK   └─────────────────┘                 │
│                                                                         │
├─────────────────────────────────────────────────────────────────────────┤
│                         GEWENSTE SITUATIE                               │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│   CORTEX                           EPD                                  │
│   ┌─────────────────┐              ┌─────────────────┐                 │
│   │ 7 + 26 Intents  │              │ Screening UI    │                 │
│   │ 6 + 9 Blocks    │     ✅       │ Intake UI (9)   │                 │
│   │ 8 + 7 API routes│ ◀──────────▶ │ Server Actions  │                 │
│   └─────────────────┘   GEKOPPELD  └─────────────────┘                 │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

5. Implementatie Roadmap

Fase 1: Foundation (Query Intents)

Doel: Informatie opvragen via spraak

# Taak Effort Prioriteit
1.1 Intent types toevoegen aan types.ts S 🔴
1.2 Patterns toevoegen aan reflex-classifier.ts M 🔴
1.3 IntakeStatusBlock bouwen M 🔴
1.4 RisicoBlock bouwen S 🔴
1.5 DiagnoseBlock bouwen S 🟡
1.6 /api/cortex/intake/* routes M 🔴

Resultaat: "Wat zijn de risico's?", "Is de intake compleet?" werken

Fase 2: Navigation (Navigatie Intents)

Doel: Navigeren via spraak

# Taak Effort Prioriteit
2.1 intake_navigeer patterns S 🔴
2.2 Navigation handler in orchestrator M 🔴
2.3 Router integratie M 🟡

Resultaat: "Ga naar diagnose", "Open kindcheck" werken

Fase 3: Actions (Actie Intents)

Doel: Data invoeren via spraak

# Taak Effort Prioriteit
3.1 intake_starten intent + handler M 🟡
3.2 risico_toevoegen intent + handler L 🟡
3.3 diagnose_toevoegen intent + handler L 🟡
3.4 Confirmatie dialogen M 🟡

Resultaat: "Start intake", "Risico suïcidaliteit matig" werken

Fase 4: Intelligence (AI Features)

Doel: Slimme AI functionaliteit

# Taak Effort Prioriteit
4.1 IntakeSamenvattingBlock met AI L 🔵
4.2 Intake-gerelateerde nudges M 🔵
4.3 Context-aware suggestions L 🔵

Resultaat: "Samenvatting intake", proactieve suggesties werken


6. Effort Schatting

Fase Items Effort
Fase 1: Foundation 6 taken ~3-4 dagen
Fase 2: Navigation 3 taken ~1-2 dagen
Fase 3: Actions 4 taken ~3-4 dagen
Fase 4: Intelligence 3 taken ~2-3 dagen
Totaal 16 taken ~10-13 dagen

7. Quick Wins

Snel te implementeren met hoge waarde:

7.1 intake_status Query (1 dag)

// Input: "Wat moet ik nog doen?" / "Is de intake compleet?"
// Output: Checklist met voltooide/openstaande tabs

// Nieuwe functie nodig:
async function getIntakeCompletionStatus(intakeId: string) {
  const intake = await getIntakeById(intakeId);
  const kindcheck = await getKindcheck(intakeId);
  const risks = await getRiskAssessments(intakeId);
  const diagnoses = await getDiagnoses(intakeId);
  // etc...

  return {
    algemeen: !!intake,
    kindcheck: !!kindcheck.hasChildren !== undefined,
    risicotaxatie: risks.length > 0,
    diagnose: diagnoses.length > 0,
    // ...
  };
}

7.2 risico_query (0.5 dag)

// Input: "Wat zijn de risico's?"
// Output: RisicoBlock met bestaande getRiskAssessments()

// Block template:
<RisicoBlock
  risks={[
    { type: 'suicidaliteit', level: 'matig', rationale: '...' },
    { type: 'agressie', level: 'laag', rationale: '...' }
  ]}
/>

7.3 intake_navigeer (0.5 dag)

// Input: "Ga naar diagnose"
// Output: router.push() naar juiste tab

// Pattern matching:
{ pattern: /^ga\s+naar\s+(risico|diagnose|kindcheck|anamnese)/i, weight: 1.0 }

8. Dependencies

types.ts (intent definitions)
    ↓
reflex-classifier.ts (patterns)
    ↓
/api/cortex/intake/* (data routes)
    ↓
blocks/*.tsx (UI components)
    ↓
canvas-area.tsx (block rendering)

9. Risico's

Risico Impact Mitigatie
Intake context niet beschikbaar Hoog ActiveIntake store toevoegen
Meerdere intakes per patiënt Middel Intent clarification bij ambiguïteit
Performance bij grote datasets Laag Pagination in queries
Pattern overlap met bestaande intents Middel Goede escalation logic

10. Aanbeveling

Start met Fase 1 (Query Intents) omdat:

  1. Hergebruikt bestaande server actions
  2. Geen destructieve acties (veilig)
  3. Direct waarde voor gebruiker
  4. Legt foundation voor actie intents

Eerste implementatie:

  1. intake_status - "Wat moet ik nog doen?"
  2. risico_query - "Wat zijn de risico's?"
  3. intake_navigeer - "Ga naar diagnose"

Deze 3 intents dekken de belangrijkste use case: snel navigeren en informatie opvragen tijdens een intake sessie.