import React from "react"; import { Dosage, MedicationRequest } from "fhir/r4"; import { SheetBody, SheetHeader } from "../ui/sheet"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/tabs"; import { Card, CardContent, CardHeader } from "../ui/card"; import { Clock, Syringe, TriangleAlert, Zap } from "lucide-react"; import { formatDateForDisplay } from "../../lib/utils"; import { FhirCodeableConceptDisplay } from "../../utils/fhirCodeableConcept"; import { FhirReferenceDisplay } from "../../utils/fhirReference"; import { FhirAnnotationDisplay } from "../../utils/fhirAnnotation"; import { FhirPeriodDisplay } from "../../utils/fhirPeriod"; import { FhirQuantityDisplay } from "../../utils/fhirQuantity"; import { FhirRatioDisplay } from "../../utils/fhirRatio"; import { FieldHistoryProvider, FieldHistoryScope, } from "../FieldHistory/FieldHistoryProvider"; import { ShowFieldHistoryToggle } from "../FieldHistory/ShowFieldHistoryToggle"; import { PrintRecord } from "../ui/print-record"; import { RecordEditedMarker } from "../FieldHistory/RecordEditedMarker"; import { Field } from "../FieldHistory/Field"; import { FieldGroup } from "../FieldHistory/FieldLayout"; import { StatusBadge } from "../ui/status"; import { medicationNameOf } from "../../utils/medicationName"; interface FhirMedicationRequestDisplayProps { medicationRequest: MedicationRequest; isOpen: boolean; onClose: () => void; title?: string; } export const FhirMedicationRequestDisplay: React.FC< FhirMedicationRequestDisplayProps > = ({ medicationRequest, isOpen, title }) => { if (!isOpen) return null; // / D5 - was a hand-rolled pill: a local STATUS_STYLES record of hardcoded hex pairs // applied as an INLINE STYLE, with the raw FHIR code as the text. Colour-only, non-token, and one // of twelve near-identical copies. carries the shared word plus D5's colour AND shape. const statusPill = ; // reported[x] is polymorphic: a boolean flag or a reference to who/what reported it. const renderReported = (): React.ReactNode => { if (medicationRequest.reportedBoolean !== undefined) { return medicationRequest.reportedBoolean ? "Yes" : "No"; } if (medicationRequest.reportedReference) { return ( ); } return undefined; }; // dosage.asNeeded[x] is polymorphic: a boolean or a CodeableConcept. const renderAsNeeded = (dosage: Dosage): React.ReactNode => { if (dosage.asNeededCodeableConcept) { return ( ); } if (dosage.asNeededBoolean !== undefined) { return dosage.asNeededBoolean ? "Yes" : "No"; } return undefined; }; // substitution.allowed[x] is polymorphic: a boolean or a CodeableConcept. const renderSubstitutionAllowed = (): React.ReactNode => { if (medicationRequest.substitution?.allowedBoolean !== undefined) { return medicationRequest.substitution.allowedBoolean ? "Yes" : "No"; } if (medicationRequest.substitution?.allowedCodeableConcept) { return ( ); } return undefined; }; const dispenseRequest = medicationRequest.dispenseRequest; return (
{title || "Medication Request Details"}

{medicationNameOf(medicationRequest) ?? "No name provided"}

Overview Dosage Details {medicationRequest.intent} ) : undefined } path="intent" /> } path="statusReason.coding[0].display" /> } /> } /> {medicationRequest.priority} ) : undefined } path="priority" /> } path="courseOfTherapyType.coding[0].display" /> } /> } /> } />

Reason

} /> } />

Dosages

{medicationRequest.dosageInstruction && medicationRequest.dosageInstruction.length > 0 ? ( medicationRequest.dosageInstruction.map((dos, index) => (
Dosage Instruction {index + 1}

Timing

Route

As Needed

{renderAsNeeded(dos)}

} /> } /> } />

Maximum Dose Limits

} /> } /> } />
)) ) : (

No dosage instructions recorded

)}

Substitution

} path="substitution.reason.coding[0].display" />

Dispense Request

} /> } /> } /> } /> } /> } /> } />
} /> } path="performerType.coding[0].display" /> } /> } />
); }; export default FhirMedicationRequestDisplay;