import React from 'react'; import { ClinicalImpression } from 'fhir/r4'; import { FhirCodeableConceptDisplay } from '../../utils/fhirCodeableConcept'; import { FhirCodeDisplay } from '../../utils/fhirCode'; import { FhirPeriodDisplay } from '../../utils/fhirPeriod'; import { FhirAnnotationDisplay } from '../../utils/fhirAnnotation'; import { formatDateTime } from '../../utils/dateUtils'; import { FhirReferenceDisplay } from '../../utils/fhirReference'; import { renderField } from '../../utils/renderField'; import { Dialog, DialogContent, DialogHeader, DialogTitle } from '../ui/dialog'; import { Card, CardHeader, CardContent } from '../ui/card'; import { FieldHistoryProvider, FieldHistoryScope } from '../FieldHistory/FieldHistoryProvider'; import { ShowFieldHistoryToggle } from '../FieldHistory/ShowFieldHistoryToggle'; import { PrintRecord } from '../ui/print-record'; import { RecordEditedMarker } from '../FieldHistory/RecordEditedMarker'; import { FieldGroup, Section } from '../FieldHistory/FieldLayout'; interface FhirClinicalImpressionDisplayProps { clinicalImpression: ClinicalImpression; isOpen: boolean; onClose: () => void; title?: string; } export const FhirClinicalImpressionDisplay: React.FC = ({ clinicalImpression, isOpen, onClose, title = "Clinical Impression Details" }) => { const renderEffectiveValue = () => { if (clinicalImpression.effectiveDateTime) { return formatDateTime(clinicalImpression.effectiveDateTime); } if (clinicalImpression.effectivePeriod) { return ; } return '-'; }; const renderFindings = () => { if (!clinicalImpression.finding || clinicalImpression.finding.length === 0) { return (

No findings recorded

); } return (
{clinicalImpression.finding.map((finding, index) => (
Finding {index + 1}
{renderField('What was found (Code)', )} {renderField('What was found (Reference)', )} {renderField('Basis for finding', finding.basis)}
))}
); }; const renderInvestigations = () => { if (!clinicalImpression.investigation || clinicalImpression.investigation.length === 0) { return (

No investigations recorded

); } return (
{clinicalImpression.investigation.map((investigation, index) => (
Investigation {index + 1}
{renderField('Investigation Code', )} {renderField('Investigation Items', )}
))}
); }; // `clinicalImpression` is frequently a forced cast over a union of resource types (several // callers keep one `selectedItem`/`selected.resource` and multiplex it across many // `Fhir*Display` modals, gating only via `isOpen`) -- it can be the wrong resource shape, or // undefined, whenever `isOpen` is false. This guard must run before anything below touches // `clinicalImpression.*` so a non-ClinicalImpression/absent value while closed never throws // (mirrors the original `if (!isOpen) return null;` that ran before WP's `` was ever // constructed). if (!isOpen) return null; return ( { if (!next) onClose(); }} >
{title}
{renderField('Status', , 'status')} {renderField('Clinician performing assessment', )} {renderField('Why/how assessment was performed', clinicalImpression.description, 'description')} {renderField('When assessment was documented', formatDateTime(clinicalImpression.date), 'date')} {renderField( 'Time of assessment', renderEffectiveValue(), clinicalImpression.effectiveDateTime ? 'effectiveDateTime' : undefined, )} {renderField('Summary', clinicalImpression.summary, 'summary')} {renderField('Encounter', )} {renderField('Previous assessment', )}
{renderField('Relevant impressions of patient state', )}
{renderFindings()}
{renderInvestigations()}
{renderField('Estimate of likely outcome', )} {renderField('RiskAssessment expressing likely outcome', )}
{renderField('Comments about the Clinical Impression', )}
); }; export default FhirClinicalImpressionDisplay;