Report Display Title Extension¶
| Canonical | ../StructureDefinition/report-display-title |
|---|---|
| Status | draft · 1.26.0 |
| Base | Extension (constraint) |
| Context | DiagnosticReport (element) |
| Source | FSH · JSON |
A clinician's own display title for one diagnostic report, replacing the title a reader would
otherwise compute from the report's code.
FSH
The authored source of truth: extensions/DiagnosticReportDisplayTitleExtension.fsh (edit on GitHub). One FSH file may define several related artifacts.
// DiagnosticReportDisplayTitleExtension.fsh
// A clinician's own title for a diagnostic report.
//
// WHY IT EXISTS. R4 gives `DiagnosticReport` no title element. What a report is called is
// therefore computed from its `code` -- the panel or test name -- and a clinician who wants a
// result to read as something else in a long chart ("Fasting lipids", "Ada's follow-up") has
// nowhere to put that. This extension is that place.
//
// IT DOES NOT REPLACE `code`, AND IS NOT A SECOND NAME FOR THE TEST. `code` says what was
// measured and is the element every clinical reader, every query and every mapping uses. This is a
// label a person chose for one report in one chart, and it carries no coded meaning at all. A
// consumer reasoning about WHAT a report is reads `code`; a consumer PRINTING a report in a list
// reads this first and falls back to `code`.
//
// THE FALLBACK IS PART OF THE CONTRACT, not an implementation detail, which is why the Description
// below spells it out. Absent means "no one has renamed this", and the reader computes a title
// rather than showing nothing -- so a consumer that renders this element alone, with no fallback,
// shows a blank heading on almost every report in the chart.
//
// THE ADDRESS THIS IS PUBLISHED AT IS NOT THE ONE THE SOFTWARE WRITES TODAY. The migration note is
// in the Description below, which is the text that travels inside the package; the handbook states
// the rule and indexes every published artifact in this position, in
// `docs/guide/patterns/canonical-urls.md`.
Extension: ReportDisplayTitle
Id: report-display-title
Title: "Report Display Title Extension"
Description: """
A clinician's own display title for one diagnostic report, replacing the title a reader would
otherwise compute from the report's `code`.
**Not a second `code`, and not a coded value.** `code` states what was measured and is what a
clinical reader, a query or a mapping uses. This is free text one person chose for one report, and
nothing should be inferred from it.
**Absent means the report has not been renamed -- not that it has no title.** A reader computes the
title in that case: the report's `code.text` where it has one, otherwise the `display` values of
`code.coding` joined in order, otherwise a generic placeholder. A consumer that renders this element
with no fallback shows a blank heading on almost every report. Clearing a title removes the
extension rather than writing an empty string, so a reader that treats present-but-blank as a title
renders an empty heading; trim the value and fall back when nothing is left.
**At most one per report.** A writer replaces the existing occurrence rather than adding a second,
and a reader encountering more than one should take the first.
**Nexus EMR writes this today at `http://services.well.com/fhir/report-display-title`
(FHIR-371)**: it is live in stored `DiagnosticReport.extension` values and in code, and is under
migration to the canonical declared here. Write the canonical; expect both until the migration
completes, and match both addresses exactly rather than deriving one from the other.
"""
* ^url = "../StructureDefinition/report-display-title"
* ^status = #draft
* ^context[0].type = #element
* ^context[0].expression = "DiagnosticReport"
* extension 0..0
* url 1..1
* value[x] 1..1 MS
* value[x] only string
* valueString ^short = "The clinician-set title for this report"
* valueString ^definition = "The title a clinician gave this report, trimmed of surrounding whitespace. Free text with no coded meaning. An empty or whitespace-only value is not written -- the extension is removed instead -- so a reader that finds one should treat it as absent and compute the title from `code`."