import type { DiagnosticReport } from "fhir/r4"; const FORMAT_URL = "https://akashichealthrecords.com/fhir/StructureDefinition/report-text-format"; const FINDINGS_URL = "https://akashichealthrecords.com/fhir/StructureDefinition/report-findings"; /** * An imaging report's findings and impression. A report marked as split keeps its findings beside * `conclusion`, which is then the impression; an unmarked report's conclusion is its findings. */ export const readReportText = (report: DiagnosticReport | undefined): { findings?: string; impression?: string } => { const part = (url: string) => (report?.extension ?? []).find((e) => e.url === url); const conclusion = report?.conclusion?.trim() || undefined; if (part(FORMAT_URL)?.valueCode !== "findings-and-impression") return conclusion ? { findings: conclusion } : {}; const findings = part(FINDINGS_URL)?.valueString?.trim() || undefined; return { ...(findings ? { findings } : {}), ...(conclusion ? { impression: conclusion } : {}) }; }; /** Both halves as one passage, the impression named, for a screen that shows a report's words in one place. */ export const reportTextAsOne = (report: DiagnosticReport | undefined): string | undefined => { const { findings, impression } = readReportText(report); const parts = [findings, impression ? "Impression: " + impression : undefined].filter(Boolean); return parts.length ? parts.join(" ") : undefined; };