"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'; 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 */}
Mini-ECD
{/* Center: Patient Selector (only in Level 2) */}
{(selectedPatient || isLoading) && patientId && ( )}
{/* Right: Search */}
); }