# 🧩 Functioneel Ontwerp (FO) β€” Verpleegkundige Overdracht Dashboard **Projectnaam:** Verpleegkundige Overdracht Dashboard **Versie:** v1.1 (met Dagregistratie Module) **Datum:** 05-12-2024 **Auteur:** Colin Lit --- ## 1. Doel en relatie met het PRD 🎯 **Doel van dit document:** Dit Functioneel Ontwerp beschrijft **hoe** het Overdracht Dashboard uit het PRD functioneel zal werken β€” wat de verpleegkundige ziet, doet en ervaart. Waar het PRD uitlegt *wat en waarom*, laat dit FO zien *hoe dit in de praktijk werkt*. πŸ“˜ **Relatie met PRD:** - PRD-referentie: `prd-overdracht-dashboard-v1.md` - Dit FO is de functionele uitwerking van PRD secties 3 (Kernfunctionaliteiten) en 4 (Gebruikersflows) **Kernprincipe:** > Elke getoonde informatie moet **traceerbaar** zijn naar de bron. De gebruiker moet kunnen zien waar data vandaan komt en kunnen doorklikken naar het originele record. **Nieuw in v1.1:** > **Dagregistratie Module** - Verpleegkundigen kunnen tijdens hun dienst snelle notities maken (medicatie, ADL, gedrag, incidenten) en markeren welke relevant zijn voor overdracht. Dit scheidt operationele dagregistratie van behandelrapportages die in het decursus komen. --- ## 2. Overzicht van de belangrijkste onderdelen 🎯 **Doel:** Kort overzicht van schermen en componenten binnen het Overdracht Dashboard. | # | Onderdeel | Beschrijving | Route | |---|-----------|--------------|-------| | 1 | **Overdracht Overzicht** | Grid van alle patiΓ«nten voor vandaag | `/epd/overdracht/` | | 2 | **PatiΓ«nt Detail** | Informatieblokken + AI samenvatting | `/epd/overdracht/[patientId]` | | 3 | **Dagregistratie Module** | Snelle verpleegkundige notities met overdracht-markering | `/epd/dagregistratie/[patientId]` | | 4 | **Vitale Functies Blok** | Metingen vandaag met trend indicators | Detail pagina | | 5 | **Rapportages Blok** | Behandelrapportages (24u) met bronlinks | Detail pagina | | 6 | **Dagnotities Blok** | Verpleegkundige registraties vandaag | Detail pagina | | 7 | **Medicatie Blok** | Huidige medicatie *(placeholder)* | Detail pagina | | 8 | **Risico's Blok** | Actieve risicotaxaties | Detail pagina | | 9 | **AI Samenvatting Blok** | Gegenereerde overdracht met bronverwijzingen | Detail pagina | --- ## 3. User Stories 🎯 **Doel:** Beschrijven wat gebruikers moeten kunnen doen, vanuit hun perspectief. ### MVP User Stories (origineel) | ID | Rol | Doel / Actie | Verwachte waarde | Prio | |----|-----|--------------|------------------|------| | **OD-US01** | Verpleegkundige | Overzicht zien van alle patiΓ«nten voor vandaag | Weet wie ik moet overdragen | πŸ”΄ Hoog | | **OD-US02** | Verpleegkundige | Filteren op patiΓ«nten met alerts | Focus op urgente cases | πŸ”΄ Hoog | | **OD-US03** | Verpleegkundige | Doorklikken naar patiΓ«nt detail | Zie alle relevante info | πŸ”΄ Hoog | | **OD-US04** | Verpleegkundige | Vitale functies zien met afwijkingen gemarkeerd | Direct zien wat er aan de hand is | πŸ”΄ Hoog | | **OD-US05** | Verpleegkundige | Recente rapportages lezen | Context voor overdracht | πŸ”΄ Hoog | | **OD-US06** | Verpleegkundige | Doorklikken naar originele rapportage | Bronverificatie | πŸ”΄ Hoog | | **OD-US07** | Verpleegkundige | Risico's zien met ernst-niveau | Weet wat aandacht nodig heeft | 🟑 Middel | | **OD-US08** | Verpleegkundige | AI-samenvatting genereren | Snelle overdracht in 30 sec | πŸ”΄ Hoog | | **OD-US09** | Verpleegkundige | In AI-samenvatting bronnen zien | Weet waar info vandaan komt | πŸ”΄ Hoog | | **OD-US10** | Verpleegkundige | Vanuit AI-samenvatting doorklikken naar bron | Kan details checken | 🟑 Middel | ### Nieuwe User Stories (Dagregistratie) | ID | Rol | Doel / Actie | Verwachte waarde | Prio | |----|-----|--------------|------------------|------| | **OD-US11** | Verpleegkundige | Tijdens dienst snelle notitie toevoegen | Registreer gebeurtenis direct | πŸ”΄ Hoog | | **OD-US12** | Verpleegkundige | Notitie categoriseren (medicatie/ADL/gedrag/incident) | Heldere structuur | πŸ”΄ Hoog | | **OD-US13** | Verpleegkundige | Markeren welke notities relevant zijn voor overdracht | Controle over wat gedeeld wordt | πŸ”΄ Hoog | | **OD-US14** | Verpleegkundige | Overzicht van dagnotities zien | Snel terugkijken wat er gebeurd is | πŸ”΄ Hoog | | **OD-US15** | Verpleegkundige | Dagnotitie bewerken/verwijderen | Correctie mogelijk | 🟑 Middel | | **OD-US16** | Psychiater | Alleen relevante notities in overdracht zien | Geen informatie-overload | πŸ”΄ Hoog | | **OD-US17** | Psychiater | AI-samenvatting inclusief dagnotities | Compleet beeld van dienst | πŸ”΄ Hoog | --- ## 4. Functionele werking per onderdeel 🎯 **Doel:** Per hoofdonderdeel beschrijven wat de gebruiker kan doen en wat het systeem doet. ### 4.1 Dagregistratie Module (NIEUW) **Route:** `/epd/dagregistratie/[patientId]` **Doel:** Snelle registratie tijdens dienst van operationele gebeurtenissen die relevant kunnen zijn voor overdracht, maar niet in het behandelverloop (decursus) horen. **Functionaliteit:** | Actie | Beschrijving | Systeem reactie | |-------|--------------|-----------------| | **Nieuwe notitie** | Klik "+ Registratie" | Toon quick-entry form | | **Categorie selecteren** | Dropdown: Medicatie, ADL, Gedrag, Incident, Observatie | Icoon + kleurcodering | | **Tijd instellen** | Standaard: nu, Aanpasbaar | Timestamp registratie | | **Tekst invoeren** | Kort tekstveld (max 500 chars) | Autosave draft | | **Overdracht markeren** | Checkbox "Opnemen in overdracht" | Badge in lijst | | **Opslaan** | Submit form | Insert nursing_log, refresh lijst | | **Bewerken** | Klik op notitie | Inline edit mode | | **Verwijderen** | Trash icon | Confirm dialog β†’ delete | **UI Componenten:** ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Dagregistratie - Jan de Vries β”‚ β”‚ Donderdag 5 december 2024 β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ [+ Nieuwe registratie] Filter: [Alle]β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ 14:30 πŸ”΄ Incident [Overdracht] β”‚ β”‚ Verbale escalatie bij groepsactiviteit β”‚ β”‚ Collega heeft de-escalatie gedaan β”‚ β”‚ [Bewerken] [Verwijderen] β”‚ β”‚ β”‚ β”‚ 12:00 πŸ’Š Medicatie [Overdracht] β”‚ β”‚ Lithium geweigerd - "Voel me goed" β”‚ β”‚ [Bewerken] [Verwijderen] β”‚ β”‚ β”‚ β”‚ 08:00 πŸ’Š Medicatie β”‚ β”‚ Olanzapine 10mg toegediend conform β”‚ β”‚ [Bewerken] [Verwijderen] β”‚ β”‚ β”‚ β”‚ 07:30 🍽️ ADL β”‚ β”‚ Ontbijt volledig genuttigd β”‚ β”‚ [Bewerken] [Verwijderen] β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` **Quick Entry Form:** ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Nieuwe registratie β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ Categorie: [Incident β–Ό] β”‚ β”‚ πŸ’Š Medicatie β”‚ β”‚ 🍽️ ADL/verzorging β”‚ β”‚ πŸ‘€ Gedragsobservatie β”‚ β”‚ πŸ”΄ Incident β”‚ β”‚ πŸ“ Algemene observatie β”‚ β”‚ β”‚ β”‚ Tijd: [14:30] [Nu] β”‚ β”‚ β”‚ β”‚ Omschrijving: β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ PatiΓ«nt werd geprikkeld tijdens β”‚ β”‚ β”‚ β”‚ groepsactiviteit, verbale β”‚ β”‚ β”‚ β”‚ escalatie. Collega heeft... β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ 234 / 500 karakters β”‚ β”‚ β”‚ β”‚ β˜‘οΈ Opnemen in overdracht β”‚ β”‚ β”‚ β”‚ [Annuleren] [Opslaan] β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` **Data Flow:** ``` User input ↓ nursing_logs table ↓ Overdracht Detail (indien marked) ↓ AI Samenvatting (contextueel) ``` --- ### 4.2 Overdracht Overzicht (`/epd/overdracht/`) **Context:** Level 1 - Alle patiΓ«nten voor vandaag [Rest blijft hetzelfde als origineel FO] **Layout:** ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ EPD Sidebar β”‚ Overdracht β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚Dashboardβ”‚ β”‚ β”‚ Overdracht πŸ”΄ 3 alerts β”‚ β”‚ β”‚ │─────────│ β”‚ β”‚ Donderdag 5 december 2024 Β· 8 patiΓ«nten β”‚ β”‚ β”‚ β”‚CliΓ«nten β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ │─────────│ β”‚ β”‚ [Alle patiΓ«nten (8)] [Met alerts (3)] β”‚ β”‚ β”‚ β”‚Agenda β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ │─────────│ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚β–ΊOverdrachtβ”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ │─────────│ β”‚ β”‚ β”‚ Jan V. β”‚ β”‚ Marie K.β”‚ β”‚ Piet B. β”‚ β”‚ β”‚ β”‚ β”‚Rapportageβ”‚ β”‚ β”‚ β”‚ πŸ”΄ 2 β”‚ β”‚ OK β”‚ β”‚ 🟑 1 β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ 67 jaar β”‚ β”‚ 45 jaar β”‚ β”‚ 52 jaar β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ [β†’] β”‚ β”‚ [β†’] β”‚ β”‚ [β†’] β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └───────── └───────── └───────── β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` **PatiΓ«nt Card Inhoud:** | Element | Toelichting | |---------|-------------| | Naam | Voornaam + initiaal achternaam | | Alert badge | πŸ”΄ Aantal hoog-risico items | | Leeftijd | Berekend uit geboortedatum | | Klik | β†’ Navigeer naar detail pagina | **Filter Functionaliteit:** ```typescript // Pseudo-code if (filter === 'met-alerts') { patients = patients.filter(p => p.high_risk_count > 0 || p.abnormal_vitals_count > 0 || p.marked_nursing_logs > 0 // NIEUW ) } ``` --- ### 4.3 PatiΓ«nt Detail (`/epd/overdracht/[patientId]`) **Context:** Level 2 - specifieke patiΓ«nt overdracht informatie **Layout (uitgebreid met Dagnotities blok):** ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ ← Terug naar overzicht β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ Jan de Vries β”‚ β”‚ β™‚ 67 jaar Β· Depressieve stoornis, recidiverend β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ β”‚ β”Œβ”€ Vitale Functies ────────┐ β”‚ β”Œβ”€ AI Samenvatting ────────┐ β”‚ β”‚ β”‚ ... β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ [Genereer samenvatting] β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€ Rapportages ─────────────┐ β”‚ β”‚ Samenvatting... β”‚ β”‚ β”‚ β”‚ Behandelverslagen (24u) β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ [3 rapportages] β”‚ β”‚ β”‚ Aandachtspunten: β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β€’ Medicatie geweigerd β”‚ β”‚ β”‚ β”‚ β”‚ β€’ Incident vanmiddag β”‚ β”‚ β”‚ β”Œβ”€ Dagnotities ─────────────┐ β”‚ β”‚ β”‚ β”‚ ← NIEUW β”‚ β”‚ VPK registraties vandaag β”‚ β”‚ β”‚ Actiepunten: β”‚ β”‚ β”‚ β”‚ [5 notities, 2 relevant] β”‚ β”‚ β”‚ β€’ Bloeddruk checken β”‚ β”‚ β”‚ β”‚ β†’ [Dagregistratie] β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€ Medicatie ───────────────┐ β”‚ β”‚ β”‚ β”‚ [Placeholder] β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€ Risico's ────────────────┐ β”‚ β”‚ β”‚ β”‚ ... β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ### 4.4 Dagnotities Blok (NIEUW) **Doel:** Toon relevante verpleegkundige registraties in overdracht context **Inhoud:** ``` β”Œβ”€ Dagnotities ─────────────────────────────────────┐ β”‚ Verpleegkundige registraties vandaag β”‚ β”‚ β”‚ β”‚ 14:30 πŸ”΄ Incident [Overdracht] β”‚ β”‚ Verbale escalatie bij groepsactiviteit β”‚ β”‚ Collega heeft de-escalatie gedaan β”‚ β”‚ Bron: nursing_logs/789 β”‚ β”‚ β”‚ β”‚ 12:00 πŸ’Š Medicatie [Overdracht] β”‚ β”‚ Lithium geweigerd - "Voel me goed" β”‚ β”‚ Bron: nursing_logs/788 β”‚ β”‚ β”‚ β”‚ [Toon alle registraties (5)] β†’ /dagregistratie/ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` **Business Rules:** | Regel | Implementatie | |-------|---------------| | Toon alleen gemarkeerde notities | `WHERE include_in_handover = true` | | Sorteer chronologisch (nieuw β†’ oud) | `ORDER BY timestamp DESC` | | Max 5 items inline | Rest via link naar dagregistratie | | Urgentie kleuren | πŸ”΄ Incident > πŸ’Š Medicatie > πŸ‘€ Gedrag > 🍽️ ADL | --- ## 5. Interacties met AI (functionele beschrijving) 🎯 **Doel:** Uitleggen waar AI in de flow voorkomt en wat de gebruiker ziet. ### 5.1 AI Overdracht Generator (uitgebreid) | Aspect | Beschrijving | |--------|--------------| | **Locatie** | AI Samenvatting blok op patiΓ«nt detail pagina | | **Trigger** | Klik op "Genereer samenvatting" button | | **Input context** | Vitals (vandaag) + Reports (24u) + **Nursing Logs (marked)** + Risks (actief) + Conditions (actief) | | **Processing** | ~3-5 seconden, progress indicator | | **Output** | Samenvatting + aandachtspunten (met bronnen) + actiepunten | ### 5.2 AI Prompt Strategie (aangepast) **System Prompt Kernpunten:** - Rol: Ervaren verpleegkundige die overdrachten maakt - Taal: Nederlands, zakelijk, beknopt - Focus: Veranderingen, zorgen, actiepunten - **Bronvermelding:** Bij elk aandachtspunt de databron vermelden - **Nieuwe data:** Verwerk nursing_logs als operationele context **Context Structuur voor AI (uitgebreid):** ``` PATIENT: [naam], [leeftijd] jaar DIAGNOSES: - [diagnose 1] (source: conditions/[id]) - [diagnose 2] (source: conditions/[id]) VITALE FUNCTIES (vandaag): - Bloeddruk: 145/92 mmHg [VERHOOGD] (source: observations/[id], 14:30) - Hartslag: 78 bpm [NORMAAL] (source: observations/[id], 14:30) RAPPORTAGES (laatste 24u): - [14:15] Voortgangsnotitie: "..." (source: reports/[id]) - [09:30] Contactmoment: "..." (source: reports/[id]) DAGREGISTRATIES (dienst vandaag, relevant voor overdracht): ← NIEUW - [14:30] [INCIDENT] Verbale escalatie bij groepsactiviteit... (source: nursing_logs/789) - [12:00] [MEDICATIE] Lithium geweigerd - "Voel me goed" (source: nursing_logs/788) RISICO'S: - [HOOG] SuΓ―cidaliteit: "..." (source: risk_assessments/[id]) - [MIDDEL] Zelfverwaarlozing: "..." (source: risk_assessments/[id]) ``` **Expected Output (voorbeeld):** ```json { "samenvatting": "67-jarige man met recidiverende depressie. Medicatie-therapietrouw problematisch vandaag (Lithium geweigerd), incident vanmiddag met verbale escalatie.", "aandachtspunten": [ { "tekst": "Lithium medicatie geweigerd om 12:00 - patiΓ«nt geeft aan zich goed te voelen", "urgent": false, "bron": { "type": "dagnotitie", "id": "nursing-788", "datum": "05-12-2024 12:00", "label": "Medicatie registratie" } }, { "tekst": "Incident 14:30 - verbale escalatie tijdens groepsactiviteit, de-escalatie door collega", "urgent": true, "bron": { "type": "dagnotitie", "id": "nursing-789", "datum": "05-12-2024 14:30", "label": "Incident registratie" } }, { "tekst": "Bloeddruk verhoogd (145/92) - monitoring nodig", "urgent": false, "bron": { "type": "observatie", "id": "obs-456", "datum": "05-12-2024 14:30", "label": "Vitale functies" } } ], "actiepunten": [ "Overleg arts over medicatie-weigering en compliance", "Bloeddruk controleren over 2 uur", "Evalueer triggers voor incident in behandelplan" ] } ``` --- ## 6. Database Schema (NIEUW) 🎯 **Doel:** Duidelijk maken welke nieuwe data-structuren nodig zijn. ### 6.1 Nieuwe Tabel: nursing_logs ```sql CREATE TABLE nursing_logs ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), patient_id UUID NOT NULL REFERENCES patients(id) ON DELETE CASCADE, -- Timing shift_date DATE NOT NULL, -- Voor filtering per dienst timestamp TIMESTAMPTZ NOT NULL DEFAULT NOW(), -- Content category TEXT NOT NULL CHECK (category IN ('medicatie', 'adl', 'gedrag', 'incident', 'observatie')), content TEXT NOT NULL, -- Max 500 chars in UI -- Overdracht include_in_handover BOOLEAN NOT NULL DEFAULT false, -- Metadata created_by UUID NOT NULL REFERENCES auth.users(id), created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); -- Indexes CREATE INDEX idx_nursing_logs_patient ON nursing_logs(patient_id); CREATE INDEX idx_nursing_logs_shift ON nursing_logs(shift_date); CREATE INDEX idx_nursing_logs_handover ON nursing_logs(patient_id, include_in_handover); ``` **Verschil met reports tabel:** | Aspect | reports | nursing_logs | |--------|---------|--------------| | **Doel** | Behandelverloof (decursus) | Operationele dagregistratie | | **Lengte** | Lang (rich text) | Kort (max 500 chars) | | **Levensduur** | Jaren | Dagen/weken | | **In overdracht** | Soms | Frequent | | **Gebruiker** | Behandelaar + VPK | Voornamelijk VPK | --- ## 7. Gebruikersflows (uitgebreid) 🎯 **Doel:** Laten zien hoe de gebruiker stap-voor-stap door het systeem gaat. ### Flow 1: Dagelijkse Overdracht (aangepast) ``` 1. Verpleegkundige opent Overdracht pagina 2. Ziet grid van alle patiΓ«nten voor vandaag 3. Filtert eventueel op "Met alerts" 4. Klikt op patiΓ«nt voor detail view 5. Bekijkt informatieblokken: - Vitals - Behandelrapportages - Dagnotities (NIEUW) - Risico's 6. Klikt "Genereer samenvatting" 7. AI maakt beknopte overdracht (incl. dagnotities) 8. Verpleegkundige gebruikt samenvatting voor overdracht aan psychiater ``` ### Flow 2: Registratie Tijdens Dienst (NIEUW) ``` 1. Verpleegkundige tijdens dienst: gebeurtenis met patiΓ«nt 2. Opent Dagregistratie module voor die patiΓ«nt 3. Klikt "+ Nieuwe registratie" 4. Vult in: - Categorie (bijv. Incident) - Tijd (standaard: nu) - Omschrijving (kort, 2-3 zinnen) - β˜‘οΈ "Opnemen in overdracht" 5. Slaat op 6. Notitie verschijnt in lijst met [Overdracht] badge 7. Aan eind dienst: notitie automatisch in overdracht-view ``` ### Flow 3: Psychiater Bekijkt Overdracht (NIEUW) ``` 1. Psychiater opent Overdracht dashboard 2. Ziet lijst met patiΓ«nten waarvan VPK dienst had 3. Opent patiΓ«nt detail 4. Bekijkt Dagnotities blok: - Ziet alleen gemarkeerde items - Leest 2 incidenten + 1 medicatie-weigering 5. Klikt "Genereer samenvatting" 6. AI vat samen: "Vandaag 2 incidenten, medicatie geweigerd, verhoogde bloeddruk" 7. Psychiater bespreekt met VPK of patiΓ«nt ``` --- ## 8. Gebruikersrollen en rechten 🎯 **Doel:** Beschrijven welke rollen toegang hebben. ### MVP: Uniform toegangsmodel | Rol | Dagregistratie | Overdracht Dashboard | Beperkingen | |-----|----------------|---------------------|-------------| | Verpleegkundige | Volledige CRUD | Volledige functionaliteit | Alleen eigen patiΓ«nten | | Psychiater | Read-only | Volledige functionaliteit | Alleen eigen patiΓ«nten | ### Data Scoping (uitgebreid) - **PatiΓ«nten:** Gefilterd op actieve encounters vandaag - **Reports:** Gefilterd op `created_by` of team-toegang - **Nursing Logs:** Gefilterd op shift_date (vandaag) en `created_by` - **Risico's:** Via intake β†’ patient relatie --- ## 9. Niet in Scope (aangepast) 🎯 **Doel:** Duidelijk maken wat (nog) niet wordt gebouwd. | Feature | Reden exclusie | |---------|----------------| | Medicatie-invoer | Alleen weergave, CRUD is aparte module | | Templating dagnotities | Vrije tekst is sneller voor MVP | | Historische dagnotities | Alleen vandaag, archivering later | | Multi-afdeling view | Te complex voor MVP, alleen eigen patiΓ«nten | | Historische trends | Geen grafieken of lange termijn overzichten | | Notificaties/push | Geen realtime alerts | | Print/export | Geen PDF of print functionaliteit | | Rechten per rol | Beperkt onderscheid VPK/arts (komt later) | | Metingen invoer | Aparte functionaliteit, hier alleen weergave | | Dicteer-functie | Typen is snel genoeg voor korte notities | --- ## 10. Succescriteria (uitgebreid) 🎯 **Doel:** Objectieve meetlat voor een geslaagde oplevering. - [ ] Overzicht laadt binnen 2 seconden - [ ] PatiΓ«nt detail toont alle 6 informatieblokken correct (incl. dagnotities) - [ ] Dagregistratie form submit < 1 seconde - [ ] AI samenvatting genereert binnen 5 seconden - [ ] AI output is begrijpelijk en medisch relevant - [ ] AI integreert dagnotities correct in samenvatting - [ ] Navigatie tussen overzicht, detail en dagregistratie werkt vlot - [ ] Alerts (hoog risico, afwijkende vitals, markeerde notities) zijn direct zichtbaar - [ ] Empty states bij ontbrekende data zijn informatief - [ ] Dagnotities met [Overdracht] badge zijn duidelijk herkenbaar --- ## 11. Risico's & Mitigatie (uitgebreid) 🎯 **Doel:** Risico's vroeg signaleren en plannen hoe ermee om te gaan. | Risico | Impact | Mitigatie | |--------|--------|-----------| | AI samenvatting te lang/vaag | Hoog | Strikte prompt met max lengte, testen met echte data | | Geen vitale functies in systeem | Middel | Graceful empty state, instructie om metingen toe te voegen | | Medicatie tabel bestaat niet | Middel | Placeholder blok met "Binnenkort beschikbaar" | | Performance bij veel patiΓ«nten | Middel | Parallel queries, pagination indien nodig | | Risico's gekoppeld aan intake ipv patient | Laag | Query via intake tabel | | VPK vergeet notities markeren | Hoog | AI pre-selectie als backup | | Dubbele registratie (reports + nursing_logs) | Middel | Duidelijke UI scheiding + training | | Nursing_logs niet archiveren | Laag | Auto-delete na 30 dagen (fase 2) | --- ## 12. Roadmap / Vervolg (Post-MVP) 🎯 **Doel:** Richting geven aan toekomstige uitbreidingen. | Fase | Feature | Beschrijving | |------|---------|--------------| | 2 | Medicatie module | Volledige CRUD voor medicatie, koppeling met nursing_logs | | 3 | Templates dagnotities | Snelle keuzes: "Medicatie conform", "Eetpatroon normaal" | | 4 | Archivering | Auto-delete nursing_logs > 30 dagen, export naar archief | | 5 | Trend grafieken | Vitale functies over tijd | | 6 | PDF export | Formele overdracht documenten | | 7 | Agenda integratie | Koppeling met encounters/afspraken | | 8 | Notificaties | Alerts bij kritieke waarden | | 9 | Multi-afdeling | Overzicht meerdere afdelingen | | 10 | Spraak-naar-tekst | Dicteer dagnotities (Deepgram integratie) | --- ## 13. Bijlagen & Referenties 🎯 **Doel:** Linken naar gerelateerde documenten. ### Interne Documenten | Document | Status | |----------|--------| | PRD Overdracht Dashboard v1.0 | βœ… Gereed | | FO Overdracht Dashboard v1.1 | βœ… Gereed (dit document) | | TO Overdracht Dashboard | πŸ“‹ Nog te schrijven | | UX Stylesheet | βœ… Beschikbaar | ### Database Tabellen (uitgebreid) | Tabel | Velden gebruikt | Nieuw? | |-------|-----------------|--------| | `nursing_logs` | id, patient_id, shift_date, timestamp, category, content, include_in_handover, created_by | βœ… Ja | | `observations` | id, patient_id, code_display, value_quantity_value, interpretation_code, effective_datetime | Bestaand | | `reports` | id, patient_id, type, content, created_at, created_by | Bestaand | | `risk_assessments` | id, intake_id, risk_type, risk_level, rationale, measures, assessment_date | Bestaand | | `conditions` | id, patient_id, code_display, clinical_status | Bestaand | | `patients` | id, name_given, name_family, birth_date, gender | Bestaand | | `encounters` | id, patient_id, period_start, type_display | Bestaand | ### Externe Referenties | Bron | Gebruik | |------|---------| | shadcn/ui | Card, Button, Badge, Form components | | Lucide React | Icons (Pill, Utensils, User, AlertTriangle) | | Anthropic Claude API | AI samenvatting generatie | | Supabase RLS | Row-level security voor nursing_logs | ### UI Component Hergebruik | Component | Locatie | Hergebruik voor | |-----------|---------|-----------------| | Quick Entry Form | Rapportage module | Nursing logs form | | Badge component | Risico's | Overdracht marker | | Card layout | Behandelplan | Informatie blokken | | AI Button | Behandelplan | Genereer samenvatting | --- ## Changelog | Versie | Datum | Auteur | Wijziging | |--------|-------|--------|-----------| | v1.1 | 05-12-2024 | Colin | Dagregistratie module toegevoegd, nursing_logs tabel, uitgebreide flows | | v1.0 | 05-12-2024 | Colin | Initieel FO met focus op traceerbaarheid en bronvermelding | --- **Einde Functioneel Ontwerp - Overdracht Dashboard v1.1**