import React from "react"; import { NutritionOrder, NutritionOrderEnteralFormulaAdministration, } from "fhir/r4"; import { SheetHeader, SheetBody } from "../ui/sheet"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/tabs"; import { formatDateForDisplay } from "../../lib/utils"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "../ui/accordion"; import { ChevronRight } from "lucide-react"; import { FhirCodeableConceptDisplay } from "../../utils/fhirCodeableConcept"; import { FhirReferenceDisplay } from "../../utils/fhirReference"; import { FhirAnnotationDisplay } from "../../utils/fhirAnnotation"; import { FhirQuantityDisplay } from "../../utils/fhirQuantity"; import { FhirRatioDisplay } from "../../utils/fhirRatio"; import { FhirTimingDisplay } from "../../utils/fhirTiming"; 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"; interface FhirNutritionOrderDisplayProps { nutritionOrder: NutritionOrder; isOpen: boolean; onClose: () => void; title?: string; } export const FhirNutritionOrderDisplay: React.FC< FhirNutritionOrderDisplayProps > = ({ nutritionOrder, isOpen, title }) => { if (!isOpen) return null; // Hero summary of which order components are present. Was producing "2 s" for supplements // (`${length} ${length !== 1 ? "s": ""}` never included the word "Supplement"). const getOrderDetails = (nutritionOrder: NutritionOrder): string => { const details: string[] = []; if (nutritionOrder?.oralDiet) { details.push("Oral Diet"); } if (nutritionOrder?.supplement && nutritionOrder.supplement.length > 0) { const count = nutritionOrder.supplement.length; details.push(`${count} Supplement${count !== 1 ? "s" : ""}`); } if (nutritionOrder?.enteralFormula) { details.push("Enteral Formula"); } return details.join(", "); }; const orderDetails = getOrderDetails(nutritionOrder); // / 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 renderStatusPill = (status: string | undefined): React.ReactNode => ( ); // administration.rate[x] is polymorphic: a Quantity (e.g. "50 mL/hr") or a Ratio (e.g. // "200 mL/4 hrs" when the denominator isn't "1"). const renderAdministrationRate = ( administration: NutritionOrderEnteralFormulaAdministration, ): React.ReactNode => { if (administration.rateQuantity) { return ; } if (administration.rateRatio) { return ; } return undefined; }; return (
{title || "Nutrition Order Details"}

{orderDetails} {orderDetails ? " - " : ""} {nutritionOrder?.resourceType ? nutritionOrder.resourceType.replace(/([A-Z])/g, " $1").trim() : "Nutrition Order"}

Overview Admin & Preferences {nutritionOrder.intent} ) : undefined } path="intent" /> } /> } /> } /> } /> } /> } /> } />

Oral Diet

} /> } /> } />

Nutrients

{nutritionOrder.oralDiet?.nutrient && nutritionOrder.oralDiet.nutrient.length > 0 ? ( nutritionOrder.oralDiet.nutrient.map( (nutrient, index) => (

Nutrient {index + 1}

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

No nutrients recorded

)}

Texture

{nutritionOrder.oralDiet?.texture && nutritionOrder.oralDiet.texture.length > 0 ? ( nutritionOrder.oralDiet.texture.map( (texture, index) => (

Texture {index + 1}

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

No textures recorded

)}

Supplements

{nutritionOrder.supplement && nutritionOrder.supplement.length > 0 ? ( nutritionOrder.supplement.map((supplement, index) => (

Supplement {index + 1}

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

No supplements recorded

)}

Enteral Formula

} /> } /> } /> } /> } />

Administration

{nutritionOrder.enteralFormula?.administration && nutritionOrder.enteralFormula.administration.length > 0 ? ( nutritionOrder.enteralFormula.administration.map( (administration, index) => (

Administration {index + 1}

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

No administration details recorded

)}
); }; export default FhirNutritionOrderDisplay;