import React from "react"; import { VisionPrescription, VisionPrescriptionLensSpecification } from "fhir/r4"; import { SheetBody, SheetHeader } from "../ui/sheet"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/tabs"; import { ChevronRight, Circle, Clock, Eye, Gauge, Tag } from "lucide-react"; import { formatDateForDisplay } from "../../lib/utils"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "../ui/accordion"; import { FhirCodeableConceptDisplay } from "../../utils/fhirCodeableConcept"; import { FhirReferenceDisplay } from "../../utils/fhirReference"; import { FhirIdentifierDisplay } from "../../utils/fhirIdentifier"; import { FhirAnnotationDisplay } from "../../utils/fhirAnnotation"; import { FhirQuantityDisplay } from "../../utils/fhirQuantity"; 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 FhirVisionPrescriptionDisplayProps { visionPrescription: VisionPrescription; isOpen: boolean; onClose: () => void; title?: string; } /** * Clinically load-bearing: OD (oculus dexter) is the RIGHT eye, OS (oculus sinister) is the LEFT * eye. Must be derived from the real `eye` value -- never hardcoded -- or a left-lens prescription * renders labeled as the right eye. */ const getEyeAbbreviation = ( eye: VisionPrescriptionLensSpecification["eye"] | undefined, ): string | undefined => { if (eye === "right") return "OD"; if (eye === "left") return "OS"; return undefined; }; const getProductLabel = ( product: VisionPrescriptionLensSpecification["product"] | undefined, ): string | undefined => { return product?.text || product?.coding?.[0]?.display; }; export const FhirVisionPrescriptionDisplay: React.FC< FhirVisionPrescriptionDisplayProps > = ({ visionPrescription, 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 renderStatusPill = (status: string | undefined): React.ReactNode => ( ); return (
{title || "Vision Prescription Details"}

{visionPrescription?.resourceType ? visionPrescription.resourceType .replace(/([A-Z])/g, " $1") .trim() : "Vision prescription not available"}

Overview Lens Specifications } /> } /> } /> } /> {visionPrescription?.lensSpecification && visionPrescription.lensSpecification.length > 0 ? ( visionPrescription.lensSpecification.map( (lensSpecification, index) => { const eyeAbbreviation = getEyeAbbreviation( lensSpecification.eye, ); const productLabel = getProductLabel( lensSpecification.product, ); return (
{index + 1}

Lens specification {index + 1}

{eyeAbbreviation && ( {eyeAbbreviation} )} {productLabel && ( {productLabel} )}

Basic Information

{lensSpecification.eye} ) : undefined } /> } />

Lens Parameters

Additional Information

{" "} {lensSpecification.color} ) : undefined } /> {" "} {lensSpecification.brand} ) : undefined } /> } />

Prisms

{lensSpecification.prism && lensSpecification.prism.length > 0 ? ( lensSpecification.prism.map( (prism, prismIndex) => ( Amount{" "} {prism.amount} · Base{" "} {prism.base} } /> ), ) ) : ( )}
} />
); }, ) ) : (

No lens specifications recorded

)}
); }; export default FhirVisionPrescriptionDisplay;