diff --git a/app/epd/components/epd-header.tsx b/app/epd/components/epd-header.tsx index 884b2bb..0a64048 100644 --- a/app/epd/components/epd-header.tsx +++ b/app/epd/components/epd-header.tsx @@ -1,49 +1,12 @@ "use client"; -import React, { useState, useEffect } from 'react'; -import { Search, ChevronDown } from 'lucide-react'; -import { usePathname } from 'next/navigation'; -import { getPatient } from '../patients/actions'; -import type { FHIRPatient } from '@/lib/fhir'; +import React from 'react'; +import { Search } from 'lucide-react'; interface EPDHeaderProps { className?: string; } export function EPDHeader({ className = "" }: EPDHeaderProps) { - const pathname = usePathname(); - const [selectedPatient, setSelectedPatient] = useState(null); - const [isLoading, setIsLoading] = useState(false); - - // Context detection: Level 2 if URL contains /patients/[id] - const isPatientContext = pathname.match(/\/epd\/patients\/[^\/]+/); - const patientId = isPatientContext ? pathname.split('/')[3] : null; - - useEffect(() => { - async function fetchPatient() { - if (!patientId) { - setSelectedPatient(null); - return; - } - - // Don't re-fetch if we already have the correct patient - if (selectedPatient?.id === patientId) return; - - setIsLoading(true); - try { - const patient = await getPatient(patientId); - if (patient) { - setSelectedPatient(patient); - } - } catch (error) { - console.error('Failed to fetch patient for header:', error); - } finally { - setIsLoading(false); - } - } - - fetchPatient(); - }, [patientId, selectedPatient?.id]); - return (
{/* Left: Logo */} @@ -51,28 +14,8 @@ export function EPDHeader({ className = "" }: EPDHeaderProps) { Mini-ECD - {/* Center: Patient Selector (only in Level 2) */} -
- {(selectedPatient || isLoading) && patientId && ( - - )} -
+ {/* Center: Empty space (patient info is shown in ClientHeader below) */} +
{/* Right: Search */}
diff --git a/docs/release/ops-log.md b/docs/release/ops-log.md index 21b44e2..32b559b 100644 --- a/docs/release/ops-log.md +++ b/docs/release/ops-log.md @@ -25,3 +25,11 @@ - Vereenvoudigd: patient detail layout gebruikt nu alleen PatientLayoutClient zonder eigen sidebar rendering - Resultaat: Eén sidebar component die automatisch switcht, -117 regels duplicate code, DRY principle hersteld +## 2025-11-23 — EPDHeader patient selector cleanup (Colin) +- **Bug fix**: Dubbele patient naam in UI (EPDHeader top bar + ClientHeader) verwijderd +- Design conflict ontstaan tijdens parallel development: EPDHeader (Epic 1) en ClientHeader (Epic 2) toonden beide patient naam +- EPDHeader's patient selector (center section met naam, ID, geboortedatum) was redundant na toevoegen ClientHeader +- Verwijderd: Patient fetch logic (useState, useEffect), patient selector UI, onnodige imports uit EPDHeader +- Component ownership verduidelijkt: EPDHeader = algemene navigatie (logo, search), ClientHeader = patient context (naam, status, acties) +- Resultaat: EPDHeader vereenvoudigd van 91 naar 34 regels (-57 regels), duidelijke separation of concerns +