diff --git a/src/components/call-desk/appointment-form.tsx b/src/components/call-desk/appointment-form.tsx index 9aa475a..e1c2142 100644 --- a/src/components/call-desk/appointment-form.tsx +++ b/src/components/call-desk/appointment-form.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from 'react'; +import { useState, useEffect, useMemo } from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faUserPen } from '@fortawesome/pro-duotone-svg-icons'; import { Input } from '@/components/base/input/input'; @@ -242,7 +242,19 @@ export const AppointmentForm = ({ const filteredDoctors = department ? doctors.filter(d => d.department === department) : doctors; - const doctorSelectItems = filteredDoctors.map(d => ({ id: d.id, label: d.name })); + // Always include the currently-selected doctor even if the department + // filter would exclude them. Needed for edit mode: the saved + // Appointment.department may be stored as a display string ("ENT") or + // a legacy value that doesn't match the doctor's current department + // enum — without this, the Select renders blank. + const doctorSelectItems = useMemo(() => { + const items = filteredDoctors.map(d => ({ id: d.id, label: d.name })); + if (doctor && !items.some(i => i.id === doctor)) { + const selected = doctors.find(d => d.id === doctor); + if (selected) items.unshift({ id: selected.id, label: selected.name }); + } + return items; + }, [filteredDoctors, doctors, doctor]); const timeSlotSelectItems = timeSlotItems.map(slot => ({ ...slot,