# Functioneel Ontwerp (FO) - Cortex Use Case: No Show Afhandeling **Project:** Cortex Intent System (Mini-EPD Prototype) **Focus:** Casus 2 (Journaliseren Consult - No Show) **Datum:** Vandaag **Link:** [PRD - Casus No Show](./prd-cortex-casus-noshow.md) --- ## 1. Gedetailleerde User Flow (Stap-voor-stap) De interactie verloopt volledig conversationeel via het Cortex Chat venster en de stateful UI (Artifacts). * **Stap 1: Registratie** * **User:** Opent (of is in) het dossier van de patiënt en typt in de inputbalk: *"Patiënt is niet verschenen - no show."* * **Systeem:** De NLP checkt intents en ziet `register_no_show`. * **Stap 2: Context Analyse & Waarschuwing (Nudge)** * **Systeem:** Achterhaalt de actieve afspraak. Rule engine check: is `is_billable` waar? Ja. * **Cortex AI Bericht:** *"Ik zie een declarabel consult in de agenda. Volgens inkoopvoorwaarden mag deze afspraak NIET gedeclareerd worden. Wil je dat ik deze annuleer als 'No Show'?"* * **UI Component:** Toont knoppen (Nudge Suggestions) eronder: `[Ja, annuleer]` | `[Nee, laat staan]` * **Stap 3: Activering Brief Check** * **User:** Klikt op `[Ja, annuleer]`. * **Systeem:** Verstuurt signaal naar backend. Wijzigt afspraak status naar 'cancelled_no_show'. Systeem zoekt naar openstaande taken voor deze patiënt en vindt Concept Huisartsbrief. * **Cortex AI Bericht:** *"Afspraak geannuleerd. Er staat nog een concept huisartsbrief klaar. Zal ik daar de No Show in verwerken?"* * **UI Component:** Toont knoppen: `[Ja, pas brief aan]` | `[Nee]` * **Stap 4: AI Generatie & Beoordeling (Artifact)** * **User:** Klikt op `[Ja, pas brief aan]`. * **Systeem:** Roept LLM API aan in de backend met de originele tekst + "Integreer dat de afspraak vandaag gepauzeerd is wegens no show." * **Cortex AI Bericht:** *"Huisartsbrief is aangepast. Kijk of je hiermee akkoord bent."* * **UI Component:** Triggert `openArtifact` en het rechtervenster met de bewerkte brief schuift in beeld. * **Stap 5: Accordering** * **User:** Leest de brief in het Artifact venster, eventuele handmatige typ-aanpassingen, en klikt op `[Akkoord & Verzendklaar]`. * **Systeem:** Slaat document/state op (status naar `ready_for_dispatch`). Toont kleine succesmelding in chat. --- ## 2. Componenten Matrix (Hergebruik vs. Nieuw) Hier is in kaart gebracht welke React/Next.js store- en UI componenten we nodig hebben en wat hun huidige status is in de codebase. ### 2.1 UI Componenten (Frontend) | Component | Status | Toelichting | Locatie verwachting | | :--- | :--- | :--- | :--- | | **Cortex Chat Input** | ♻️ Hergebruik | De bestaande inputbalk / command center waar de "no show" in getypt wordt. Omdat intent-herkenning centraal op de tekst werkt, hebben we geen nieuwe velden nodig. | `components/cortex/chat/...` of `command-center/...` | | **Cortex Chat Message** | ♻️ Hergebruik | De 'bubbels' waarin Cortex reageert. Deze renderen al responses. | `components/cortex/chat/...` | | **Nudge Suggestion Card** | 🛠️ Aanpassen | Deze tonen de UI knoppen (zoals `[Ja, annuleren]`). We moeten in de component bevestigen dat we via een klik een onzichtbaar of command-response kunnen terug sturen naar de orchestrator voor Stap 3. | `components/cortex/chat/nudge-suggestion.tsx` (indien apart) | | **Document Artifact Window**| ♻️ Hergebruik | We hebben de Artifact functionaliteit open staan in de store (`openArtifacts`). In dat artefact paneel kunnen we document content afbeelden. | `components/cortex/artifacts/...` | | **Rich Text Editor** | ♻️ Hergebruik | Binnenin het Artifact tonen we de Huisartsbrief via de editor component, zodat de arts nog kan bewerken. | `components/cortex/rich-text-editor.tsx` | | **Artifact Action Bar** | ✨ Nieuw | Een component (of extra 'footer') aan het Artifact component, met een knop `[Akkoord & Verzendklaar]`. Nu is het vaak readonly. | `components/cortex/artifacts/` of als los element. | ### 2.2 Logica & Backend Componenten | Component / Module | Status | Toelichting | Huidige locatie | | :--- | :--- | :--- | :--- | | **Intent Classifier** | 🛠️ Aanpassen | Toevoegen van het `register_no_show` label in de mapping. | `lib/cortex/intent-labels.ts` & `lib/cortex/types.ts` | | **Nudge Protocol Rules** | 🛠️ Aanpassen | Hier integreren we The "Declarabele Check" en "Brief Alert". We programmeren een regel af in `nudge.ts` die luistert naar de no_show. | `lib/cortex/nudge.ts` | | **Cortex Store** | ♻️ Hergebruik | Functies zoals `addSuggestion` en `openArtifact` zijn klaar voor gebruik! Hier is geen redesign van state voor nodig. | `stores/cortex-store.ts` | | **No-Show Orchestrator/API** | ✨ Nieuw | Specifieke API call en/of uitbreiding in AI logica die de database context opzoekt, LLM (via Langchain) aanstuurt en de brief herschrijft. | `app/api/cortex/...` | --- ## 3. Implementatie Fasering (FO -> Bouw) 1. **Interface Prep:** `register_no_show` in alle TypeScript Types & configuraties toevoegen. De Nudge Rule definiëren (*Fase 1 is statisch zonder database checks om UI op te pikken*). 2. **Acties (Nudges):** Knoppen reageren: we zorgen dat het klikken op de Chat Suggestie door praat met de store, zodat het volgende venster / bericht ('Zal ik conceptbrief openen?') getriggerd kan worden. 3. **Artifact Opening:** `rich-text-editor.tsx` integreren in een Artifact layout, openen doormiddel van `openArtifact`. Knoppen 'Akkoord' toevoegen (console logs voorlopig). 4. **Backend (API & DB):** Bouw van server-side checks. Echt data mocken en een route voor de LLM brief-rescript uitschrijven.