import type { CodeableConcept } from 'fhir/r4'; export type ConditionStatusKind = 'clinical' | 'verification'; const SYSTEMS: Record = { clinical: 'http://terminology.hl7.org/CodeSystem/condition-clinical', verification: 'http://terminology.hl7.org/CodeSystem/condition-ver-status', }; const LABELS: Record> = { clinical: { active: 'Active', recurrence: 'Recurrence', relapse: 'Relapse', inactive: 'Inactive', remission: 'Remission', resolved: 'Resolved' }, verification: { unconfirmed: 'Unconfirmed', provisional: 'Provisional', differential: 'Differential', confirmed: 'Confirmed', refuted: 'Refuted', 'entered-in-error': 'Entered in error', }, }; /** * A Condition's clinical or verification status as recorded: its own text or display first, then the standard label of * a code from that status's own code system. Any other code is shown as recorded, never given a meaning, and a status * that was not recorded says so rather than implying one. */ export const conditionStatusText = (concept: CodeableConcept | undefined | null, kind: ConditionStatusKind): string => { const text = concept?.text?.trim(); if (text) return text; const codings = (concept?.coding ?? []).filter((coding) => coding?.code?.trim() || coding?.display?.trim()); const known = codings.find((coding) => coding.system === SYSTEMS[kind] && coding.code && Object.prototype.hasOwnProperty.call(LABELS[kind], coding.code)); if (known) return known.display?.trim() || LABELS[kind][known.code as string]; const shown = codings.find((coding) => coding.display?.trim()); if (shown) return (shown.display as string).trim(); const code = codings[0]?.code?.trim(); return code ? `Recorded as "${code}", not a recognised ${kind} status` : 'Not recorded'; };