Iteratie 1 - Parallel Fetching: - Patient dashboard: Promise.all voor 3 data fetches - Resultaat: ~45% sneller (800ms → 440ms) Iteratie 2 - Loading States: - Skeleton loaders voor EPD, patient, agenda, rapportage - Betere perceived performance tijdens laden Iteratie 3 - Lazy Load FullCalendar: - Dynamic import met next/dynamic (ssr: false) - ~150KB minder in initiële bundle Iteratie 4 - Reports API Optimalisatie: - Selectieve kolommen (10 i.p.v. 20) - Server-side pagination (limit/offset) - Database indexes voor timeline queries - Resultaat: 89% sneller (1671ms → 188ms) Overige fixes: - Type casts voor Json → Behandelstructuur/SmartGoal/etc. - Metadata template fix in layout.tsx Documentatie: - docs/audit-rapport.md - PO-vriendelijk audit rapport - docs/performance/baseline-2025-12-12.md - Metingen + resultaten 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
192 lines
6.0 KiB
Markdown
192 lines
6.0 KiB
Markdown
# Technische Audit - Mini-EPD Prototype
|
|
## Rapport voor Product Owner
|
|
|
|
**Datum:** December 2025
|
|
**Doel:** Overzicht van technische staat en aandachtspunten
|
|
|
|
---
|
|
|
|
## Context
|
|
|
|
Dit is een **prototype/experiment** om te demonstreren hoe ver je komt met AI-tooling in zorgsoftware ontwikkeling. Het systeem bevat **geen echte cliëntgegevens** - alleen testdata voor demonstratiedoeleinden.
|
|
|
|
**Doel van dit rapport:** Inzicht geven in de technische staat en wat nodig zou zijn als dit prototype ooit doorontwikkeld wordt naar productie.
|
|
|
|
---
|
|
|
|
## Samenvatting
|
|
|
|
| Gebied | Status | Relevantie voor Prototype | Bij Doorontwikkeling |
|
|
|--------|--------|---------------------------|----------------------|
|
|
| Beveiliging | Basis | Voldoende voor demo | Moet verbeterd worden |
|
|
| Prestaties | Matig | Acceptabel voor demo | Optimalisatie nodig |
|
|
| Onderhoud | Matig | Prima voor experiment | Refactoring wenselijk |
|
|
| Schaalbaarheid | Beperkt | Niet relevant nu | Kritiek bij groei |
|
|
|
|
**Kernboodschap:** Voor een prototype dat AI-tooling demonstreert is de huidige staat prima. Dit rapport documenteert wat er nodig zou zijn voor eventuele doorontwikkeling.
|
|
|
|
---
|
|
|
|
## 1. Beveiliging
|
|
|
|
### Huidige staat (acceptabel voor prototype)
|
|
|
|
**Punt 1: Next.js versie**
|
|
- De huidige versie heeft een bekende kwetsbaarheid
|
|
- **Voor prototype:** Geen risico (geen echte data)
|
|
- **Bij doorontwikkeling:** Update naar nieuwste versie nodig
|
|
|
|
**Punt 2: Gegevensscheiding**
|
|
- Alle ingelogde gebruikers kunnen alle testdata zien
|
|
- **Voor prototype:** Bewuste keuze voor eenvoud
|
|
- **Bij doorontwikkeling:** Rollen en rechten per afdeling/organisatie
|
|
|
|
**Punt 3: Geen geautomatiseerde tests**
|
|
- Typisch voor een prototype/experiment
|
|
- **Voor prototype:** Acceptabel
|
|
- **Bij doorontwikkeling:** Testsuite opzetten voor stabiliteit
|
|
|
|
### Bij doorontwikkeling nodig
|
|
|
|
| Actie | Inspanning | Wanneer |
|
|
|-------|------------|---------|
|
|
| Next.js updaten | 30 minuten | Voor productie |
|
|
| Toegangsrechten implementeren | 1-2 dagen | Voor productie |
|
|
| Testsuite opzetten | 2-3 dagen | Voor productie |
|
|
|
|
---
|
|
|
|
## 2. Prestaties
|
|
|
|
### Huidige staat (acceptabel voor prototype)
|
|
|
|
**Punt 1: Laden van grote hoeveelheden data**
|
|
- Het systeem haalt alle gegevens in één keer op
|
|
- **Voor prototype:** Prima met testdata
|
|
- **Bij doorontwikkeling:** Pagination nodig bij veel records
|
|
|
|
**Punt 2: Sequentieel laden**
|
|
- Pagina's laden gegevens één voor één (sequentieel)
|
|
- **Voor prototype:** Merkbaar maar acceptabel
|
|
- **Bij doorontwikkeling:** Parallel laden maakt 2-3x sneller
|
|
|
|
**Punt 3: Laad-feedback**
|
|
- Geen loading indicators of foutmeldingen
|
|
- **Voor prototype:** Werkt voor demo's
|
|
- **Bij doorontwikkeling:** Professionelere UX wenselijk
|
|
|
|
### Bij doorontwikkeling nodig
|
|
|
|
| Actie | Inspanning | Effect |
|
|
|-------|------------|--------|
|
|
| Pagination toevoegen | 4 uur | Schaalbaarheid |
|
|
| Parallel laden | 2 uur | 2-3x sneller |
|
|
| Loading states | 4 uur | Betere UX |
|
|
|
|
---
|
|
|
|
## 3. Schaalbaarheid
|
|
|
|
### Huidige capaciteit (voldoende voor prototype)
|
|
|
|
| Scenario | Gedrag | Status |
|
|
|----------|--------|--------|
|
|
| <50 cliënten | Soepel | Prototype |
|
|
| 50-200 cliënten | Acceptabel | Lichte optimalisatie |
|
|
| >200 cliënten | Aanpassingen nodig | Productie-ready maken |
|
|
|
|
**Conclusie:** Voor een demo/experiment met testdata is de huidige capaciteit ruim voldoende.
|
|
|
|
### Bij doorontwikkeling nodig
|
|
|
|
Als het prototype ooit doorgroeit naar productie:
|
|
- Database indexen toevoegen
|
|
- Pagination in API's
|
|
- Caching strategie
|
|
|
|
---
|
|
|
|
## 4. Onderhoudbaarheid
|
|
|
|
### Huidige staat (typisch voor prototype)
|
|
|
|
**Punt 1: Code duplicatie**
|
|
- Sommige logica staat op meerdere plekken
|
|
- **Voor prototype:** Normale trade-off voor snelheid van ontwikkeling
|
|
- **Bij doorontwikkeling:** Centraliseren voor onderhoudbaarheid
|
|
|
|
**Punt 2: Codestructuur**
|
|
- Business logica zit verspreid
|
|
- **Voor prototype:** Acceptabel - snel itereren was prioriteit
|
|
- **Bij doorontwikkeling:** Service-laag introduceren
|
|
|
|
**Punt 3: Foutafhandeling**
|
|
- Niet overal consistent
|
|
- **Voor prototype:** Werkt voor demo's
|
|
- **Bij doorontwikkeling:** Standaardiseren
|
|
|
|
### Bij doorontwikkeling nodig
|
|
|
|
| Actie | Inspanning | Effect |
|
|
|-------|------------|--------|
|
|
| Code centraliseren | 4 uur | Minder duplicatie |
|
|
| Foutafhandeling standaardiseren | 4 uur | Consistentie |
|
|
| Service-laag | 2-3 dagen | Betere structuur |
|
|
|
|
---
|
|
|
|
## 5. Wat laat dit prototype zien?
|
|
|
|
### Succesvol gedemonstreerd met AI-tooling
|
|
|
|
Dit prototype toont aan wat mogelijk is met moderne AI-assisted development:
|
|
|
|
| Functionaliteit | Status | Opmerking |
|
|
|-----------------|--------|-----------|
|
|
| Volledige EPD basis | Werkend | Patiëntdossiers, rapportages, intakes |
|
|
| AI-gestuurde samenvattingen | Werkend | Overdrachtsrapporten |
|
|
| Spraak-naar-tekst | Werkend | Deepgram integratie |
|
|
| Agenda & planning | Werkend | FullCalendar |
|
|
| Behandelplannen | Werkend | SMART-doelen, interventies |
|
|
| Nederlandse UI | Volledig | Alle teksten in het Nederlands |
|
|
|
|
### Technische stack
|
|
|
|
- **Frontend:** Next.js 14, React, Tailwind CSS
|
|
- **Backend:** Supabase (PostgreSQL + Auth)
|
|
- **AI:** Claude API, Deepgram
|
|
- **Ontwikkeld met:** AI-tooling (Claude Code)
|
|
|
|
---
|
|
|
|
## 6. Roadmap bij doorontwikkeling
|
|
|
|
Mocht dit prototype doorontwikkeld worden naar productie, dan is dit de aanbevolen volgorde:
|
|
|
|
### Fase 1: Productie-ready maken
|
|
1. Next.js updaten (30 min)
|
|
2. Toegangsrechten implementeren (1-2 dagen)
|
|
3. Basis testsuite (2-3 dagen)
|
|
|
|
### Fase 2: Schaalbaarheid
|
|
4. Pagination in API's (4 uur)
|
|
5. Loading states (4 uur)
|
|
6. Database optimalisatie (1 dag)
|
|
|
|
### Fase 3: Professionalisering
|
|
7. Code refactoring (2-3 dagen)
|
|
8. Monitoring & logging (1 dag)
|
|
9. CI/CD pipeline (1 dag)
|
|
|
|
---
|
|
|
|
## 7. Conclusie
|
|
|
|
Dit prototype demonstreert succesvol hoe ver je kunt komen met AI-tooling in zorgsoftware ontwikkeling. De technische staat is **passend voor een experiment** - functioneel, demonstreerbaar, maar niet productie-ready.
|
|
|
|
**Belangrijkste inzicht:** Met relatief beperkte investering kan dit prototype doorontwikkeld worden naar een productie-waardig systeem. De basis is solide.
|
|
|
|
---
|
|
|
|
*Dit rapport is gegenereerd op basis van een technische analyse van de codebase (december 2025).*
|