diff --git a/app/epd/patients/[id]/basisgegevens/page.tsx b/app/epd/patients/[id]/basisgegevens/page.tsx
new file mode 100644
index 0000000..e7ac9dd
--- /dev/null
+++ b/app/epd/patients/[id]/basisgegevens/page.tsx
@@ -0,0 +1,62 @@
+/**
+ * Basisgegevens Page
+ * E2.S3: Patient basic information with edit functionality
+ */
+
+import { getPatient } from '../../actions';
+import { PatientForm } from '../../components/patient-form';
+import { AlertCircle } from 'lucide-react';
+
+export default async function BasisgegevensPage({
+ params,
+}: {
+ params: Promise<{ id: string }>;
+}) {
+ const { id } = await params;
+ const patient = await getPatient(id);
+
+ // Check if John Doe
+ const isJohnDoe = (patient as any).extension?.find(
+ (ext: any) => ext.url === 'http://mini-epd.local/fhir/StructureDefinition/john-doe'
+ )?.valueBoolean;
+
+ // Check if BSN is missing or placeholder
+ const bsn = patient.identifier?.find(
+ (id) => id.system === 'http://fhir.nl/fhir/NamingSystem/bsn'
+ )?.value;
+ const hasMissingBSN = !bsn || bsn === '999999990';
+
+ return (
+
+ {/* Page Header */}
+
+
Basisgegevens
+
+ NAW-gegevens en contactinformatie
+
+
+
+ {/* John Doe Warning */}
+ {isJohnDoe && hasMissingBSN && (
+
+
+
+
+
+ Incomplete gegevens - John Doe registratie
+
+
+ Vul BSN aan zodra deze beschikbaar is voor volledige registratie.
+
+
+
+
+ )}
+
+ {/* Patient Form */}
+
+
+ );
+}
diff --git a/app/epd/patients/[id]/behandelplan/page.tsx b/app/epd/patients/[id]/behandelplan/page.tsx
new file mode 100644
index 0000000..a28e3da
--- /dev/null
+++ b/app/epd/patients/[id]/behandelplan/page.tsx
@@ -0,0 +1,40 @@
+/**
+ * Behandelplan Page
+ * E2.S3: Placeholder for behandelplan functionality (future epic)
+ */
+
+import { Calendar } from 'lucide-react';
+
+export default async function BehandelplanPage({
+ params,
+}: {
+ params: Promise<{ id: string }>;
+}) {
+ const { id } = await params;
+
+ return (
+
+ {/* Page Header */}
+
+
Behandelplan
+
+ Behandeldoelen, interventies en planning
+
+
+
+ {/* Placeholder */}
+
+
+
+
+
+ Behandelplan Module - Coming Soon
+
+
+ De behandelplan functionaliteit wordt in een latere fase geïmplementeerd.
+ Dit omvat doelstellingen, interventies en planning van de behandeling.
+
+
+
+ );
+}
diff --git a/app/epd/patients/[id]/diagnose/page.tsx b/app/epd/patients/[id]/diagnose/page.tsx
new file mode 100644
index 0000000..746d937
--- /dev/null
+++ b/app/epd/patients/[id]/diagnose/page.tsx
@@ -0,0 +1,40 @@
+/**
+ * Diagnose Page
+ * E2.S3: Placeholder for diagnose functionality (to be implemented in Epic 6)
+ */
+
+import { Stethoscope } from 'lucide-react';
+
+export default async function DiagnosePage({
+ params,
+}: {
+ params: Promise<{ id: string }>;
+}) {
+ const { id } = await params;
+
+ return (
+
+ {/* Page Header */}
+
+
Diagnose
+
+ DSM-5 diagnoses en behandeladvies
+
+
+
+ {/* Placeholder */}
+
+
+
+
+
+ Diagnose Module - Coming Soon
+
+
+ De diagnose functionaliteit wordt geïmplementeerd in Epic 6. Dit omvat
+ DSM-5 diagnose registratie en behandeladvies formulering.
+
+
+
+ );
+}
diff --git a/app/epd/patients/[id]/intake/page.tsx b/app/epd/patients/[id]/intake/page.tsx
new file mode 100644
index 0000000..426fc8d
--- /dev/null
+++ b/app/epd/patients/[id]/intake/page.tsx
@@ -0,0 +1,41 @@
+/**
+ * Intake Page
+ * E2.S3: Placeholder for intake functionality (to be implemented in Epic 4)
+ */
+
+import { FileText } from 'lucide-react';
+
+export default async function IntakePage({
+ params,
+}: {
+ params: Promise<{ id: string }>;
+}) {
+ const { id } = await params;
+
+ return (
+
+ {/* Page Header */}
+
+
Intake
+
+ Overzicht van intakes en intake details
+
+
+
+ {/* Placeholder */}
+
+
+
+
+
+ Intake Module - Coming Soon
+
+
+ De intake functionaliteit wordt geïmplementeerd in Epic 4 en 5. Dit omvat
+ intake overzicht, contactmomenten, kindcheck, risicotaxatie, anamnese,
+ onderzoek en ROM-metingen.
+
+
+
+ );
+}
diff --git a/app/epd/patients/[id]/rapportage/page.tsx b/app/epd/patients/[id]/rapportage/page.tsx
new file mode 100644
index 0000000..760f309
--- /dev/null
+++ b/app/epd/patients/[id]/rapportage/page.tsx
@@ -0,0 +1,40 @@
+/**
+ * Rapportage Page
+ * E2.S3: Placeholder for rapportage functionality (future epic)
+ */
+
+import { FileBarChart } from 'lucide-react';
+
+export default async function RapportagePage({
+ params,
+}: {
+ params: Promise<{ id: string }>;
+}) {
+ const { id } = await params;
+
+ return (
+
+ {/* Page Header */}
+
+
Rapportage
+
+ Overzichten, statistieken en export mogelijkheden
+
+
+
+ {/* Placeholder */}
+
+
+
+
+
+ Rapportage Module - Coming Soon
+
+
+ De rapportage functionaliteit wordt in een latere fase geïmplementeerd.
+ Dit omvat overzichten, statistieken en exportfunctionaliteit.
+
+
+
+ );
+}
diff --git a/app/epd/patients/[id]/screening/page.tsx b/app/epd/patients/[id]/screening/page.tsx
new file mode 100644
index 0000000..247af7b
--- /dev/null
+++ b/app/epd/patients/[id]/screening/page.tsx
@@ -0,0 +1,40 @@
+/**
+ * Screening Page
+ * E2.S3: Placeholder for screening functionality (to be implemented in Epic 3)
+ */
+
+import { ClipboardList } from 'lucide-react';
+
+export default async function ScreeningPage({
+ params,
+}: {
+ params: Promise<{ id: string }>;
+}) {
+ const { id } = await params;
+
+ return (
+
+ {/* Page Header */}
+
+
Screening
+
+ Activiteitenlog, documenten, hulpvraag en screeningsbesluit
+
+
+
+ {/* Placeholder */}
+
+
+
+
+
+ Screening Module - Coming Soon
+
+
+ De screening functionaliteit wordt geïmplementeerd in Epic 3. Dit omvat
+ activiteitenlog, documentbeheer, hulpvraag registratie en screeningsbesluit.
+
+
+
+ );
+}
diff --git a/docs/specs/screening-intake/bouwplan-screening-intake-v1.0.md b/docs/specs/screening-intake/bouwplan-screening-intake-v1.0.md
index e48abb9..1678e74 100644
--- a/docs/specs/screening-intake/bouwplan-screening-intake-v1.0.md
+++ b/docs/specs/screening-intake/bouwplan-screening-intake-v1.0.md
@@ -42,7 +42,7 @@
| Epic ID | Titel | Doel | Status | Stories |
|---------|-------|------|--------|---------|
| E1 | Database & Types | Datamodel implementeren in Supabase | ✅ Done | 3 |
-| E2 | Cliëntenbeheer | Lijstweergave en aanmaken cliënten | 🔨 In Progress | 3 |
+| E2 | Cliëntenbeheer | Lijstweergave en aanmaken cliënten | ✅ Done | 3 |
| E3 | Screening Module | Screening tab en functionaliteit | ⏳ To Do | 4 |
| E4 | Intake Core | Intake overzicht en navigatie | ✅ Done | 3 |
| E5 | Intake Details | Specifieke tabbladen (Contact, Risico, etc.) | ⏳ To Do | 5 |
@@ -62,15 +62,15 @@
| E1.S2 | ✅ Done | Migration toepassen | Migration succesvol toegepast op Supabase database met:
- Foreign keys en constraints
- RLS policies voor alle nieuwe tabellen
- Indexes voor performance
- Triggers voor `updated_at` timestamps |
| E1.S3 | ✅ Done | TypeScript Types genereren | Types gegenereerd met `supabase gen types` en geëxporteerd naar `lib/supabase/database.types.ts`
- 2148+ regels TypeScript types
- Alle nieuwe tabellen en enums geëxporteerd |
-### Epic 2 — Cliëntenbeheer (Level 1) 🔨
+### Epic 2 — Cliëntenbeheer (Level 1) ✅
**Doel:** Behandelaars kunnen cliënten vinden en nieuwe cliënten aanmaken.
-**Status:** In Progress - 2 van 3 stories voltooid op 22-11-2025
+**Status:** Done - Alle stories voltooid op 22-11-2025
| Story ID | Status | Beschrijving | Acceptatiecriteria |
|----------|--------|--------------|---------------------|
| E2.S1 | ✅ Done | Cliëntenlijst | Tabel met zoekfunctie, filters en status badges:
- `patient-list.tsx` geüpdatet met client-side search bar
- Status filter dropdown (alle/screening/actief/afgerond/afgemeld)
- StatusBadge component met color-coded badges
- Tabel kolommen: Status, Naam, BSN, Laatst gewijzigd
- API route `/api/fhir/Patient` ondersteunt status filtering
- FHIR transform aangepast voor status extension |
| E2.S2 | ✅ Done | Nieuwe Cliënt Flow | Formulier voor aanmaken cliënt met John Doe logica:
- `patient-form.tsx` compleet herschreven met alle FO velden
- John Doe checkbox met conditional BSN requirement
- BSN validatie met Modulo-11 check
- Alle velden: naam, BSN, geboortedatum, geslacht, adres (straat, postcode, plaats), contact (telefoon, email), verzekering (verzekeraar, polisnummer)
- Warning messages voor John Doe patiënten
- Status altijd 'planned' voor nieuwe patiënten
- Redirect naar patient detail page na aanmaken
- FHIR transform ondersteunt insurance extension (bidirectioneel) |
-| E2.S3 | ⏳ To Do | Cliënt Header & Nav | Context-aware header en sidebar navigatie (Level 2). |
+| E2.S3 | ✅ Done | Cliënt Header & Nav | Context-aware header en sidebar navigatie (Level 2):
- `ClientHeader` component met naam, status badge, laatst gewijzigd en John Doe indicator
- `ClientSidebar` component met navigatie naar alle tabs
- Patient detail layout met header en sidebar
- Dashboard pagina met quick actions en volgende stappen
- Basisgegevens pagina met patient form en John Doe warning
- Placeholder paginas voor alle tabs: Screening, Intake, Diagnose, Behandelplan, Rapportage
- Alle tabs altijd zichtbaar, ongeacht status |
### Epic 3 — Screening Module (Level 2)
**Doel:** Faciliteren van het screeningsproces.