import React, { useState } from "react";
import { Practitioner, PractitionerRole } from "fhir/r4";
import { FhirCodeableConceptDisplay } from "../../utils/fhirCodeableConcept";
import { FHIRAddressDisplay } from "../../utils/fhirAddress";
import { FHIRContactPointDisplay } from "../../utils/fhirContactPoint";
import { FhirIdentifierDisplay } from "../../utils/fhirIdentifier";
import { FhirReferenceDisplay } from "../../utils/fhirReference";
import { FhirPeriodDisplay } from "../../utils/fhirPeriod";
import { FhirOperationalHoursDisplay } from "../../utils/fhirOperationalHours";
import { formatDate } from "../../utils/dateUtils";
import { ProfilePhoto } from "../index.ts";
import { useAuthServiceContext } from "../../services";
import { FhirPractitionerRoleDisplay } from "../../components";
import { Dialog, DialogContent, DialogTitle } from "../ui/dialog";
import {
CalendarCheck2,
Clock4,
Hospital,
MessageSquareText,
Stethoscope,
UserRoundPlus,
} from "lucide-react";
import {
CardTitle,
CardDescription,
Card,
CardContent,
CardHeader,
} from "../ui/card.tsx";
import { Button } from "../ui/button.tsx";
import { Link } from "react-router-dom";
import { isPatientFacingPractitionerRole } from "../../utils/staffRoleCatalog.ts";
import { formatFhirHumanName } from "../../utils/fhirHumanName.tsx";
import {
FieldHistoryProvider,
FieldHistoryScope,
} from "../FieldHistory/FieldHistoryProvider";
import { ShowFieldHistoryToggle } from "../FieldHistory/ShowFieldHistoryToggle";
import { RecordEditedMarker } from "../FieldHistory/RecordEditedMarker";
import { Field } from "../FieldHistory/Field";
import { FieldGroup, Section } from "../FieldHistory/FieldLayout";
interface FhirPractitionerDisplayProps {
practitioner: Practitioner;
roles?: PractitionerRole[];
isOpen?: boolean;
onClose?: () => void;
title?: string;
asModal?: boolean;
showRoles?: boolean;
// Chat and Book Appointment open the READER's own patient portal; a staff reader is not booking a colleague.
showPatientActions?: boolean;
}
const renderYesNo = (value: boolean | undefined): string | undefined => {
if (value === undefined) return undefined;
return value ? "Yes" : "No";
};
export const FhirPractitionerDisplay: React.FC<
FhirPractitionerDisplayProps
> = ({
practitioner,
roles,
isOpen = true,
onClose,
title = "Practitioner Details",
asModal = true,
showRoles = false,
showPatientActions = true,
}) => {
const { getCognitoGroup } = useAuthServiceContext();
const [segment, setSegment] = useState<"practitioner" | "roles">(
"practitioner",
);
const getPrimaryRole = () => {
if (!roles || roles.length === 0) return null;
return roles[0];
};
const renderLanguagesValue = () => {
if (
!practitioner?.communication ||
practitioner.communication.length === 0
) {
return undefined;
}
return (
No qualifications recorded
); } return ({fullName}