Canadian Baseline
1.2.0 - CI Build Canada flag

Canadian Baseline, published by HL7 Canada - FHIR Implementation Work Group. This guide is not an authorized publication; it is the continuous build for version 1.2.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7-Canada/ca-baseline/ and changes regularly. See the Directory of published versions

Resource Profile: DiagnosticReportProfile - Detailed Descriptions

Draft as of 2024-12-27

Definitions for the profile-diagnosticreport resource profile.

Guidance on how to interpret the contents of this table can be found here

0. DiagnosticReport
Definition

Diagnostic Report Profile is based upon the core FHIR DiagnosticReport resource and created to meet the Laboratory test(s) and Laboratory value(s)/result(s) requirements.


The findings and interpretation of diagnostic tests performed on patients, groups of patients, devices, and locations, and/or specimens derived from these. The report includes clinical context such as requesting and provider information, and some mix of atomic results, images, textual and coded interpretations, and formatted representation of diagnostic reports.

ShortDiagnosticReport ProfileA Diagnostic report - a combination of request information, atomic results, images, interpretation, as well as formatted reports
Comments

This is intended to capture a single report and is not suitable for use in displaying summary information that covers multiple reports. For example, this resource has not been designed for laboratory cumulative reporting formats nor detailed structured reports for sequencing.

Control0..*
Is Modifierfalse
Summaryfalse
Alternate NamesReport, Test, Result, Results, Labs, Laboratory
Invariantsdom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources (contained.contained.empty())
dom-3: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource (contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty())
dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated (contained.meta.versionId.empty() and contained.meta.lastUpdated.empty())
dom-5: If a resource is contained in another resource, it SHALL NOT have a security label (contained.meta.security.empty())
dom-6: A resource should have narrative for robust management (text.`div`.exists())
2. DiagnosticReport.implicitRules
Definition

A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc.

ShortA set of rules under which this content was created
Comments

Asserting this rule set restricts the content to be only understood by a limited set of trading partners. This inherently limits the usefulness of the data in the long term. However, the existing health eco-system is highly fractured, and not yet ready to define, collect, and exchange data in a generally computable sense. Wherever possible, implementers and/or specification writers should avoid using this element. Often, when used, the URL is a reference to an implementation guide that defines these special rules as part of it's narrative along with other profiles, value sets, etc.

Control0..1
Typeuri
Is Modifiertrue because This element is labeled as a modifier because the implicit rules may provide additional knowledge about the resource that modifies it's meaning or interpretation
Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
Summarytrue
Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
4. DiagnosticReport.extension:note
Slice Namenote
Definition

Optional Extension Element - found in all resources.

ShortOptional Extensions Element
Comments

This extension is used to preadopt the DiagnosticReport.note element that was introduced in FHIR R5. This was done to socialize a standardized method for conveying notes that apply to the entirety of a diagnostic report as is seen in some Canadian implementations (e.g., OLIS). Before using this extension in your implementation, consider if its fit-for-purpose/fit-for-use applicable for your needs. Users are encouraged to review the https://build.fhir.org/versions.html#extensions.

Control0..*
This element is affected by the following invariants: ele-1
TypeExtension(Extension Definition for DiagnosticReport.note for Version 5.0) (Extension Type: Annotation)
Is Modifierfalse
Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
6. DiagnosticReport.modifierExtension
Definition

May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.

Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).

ShortExtensions that cannot be ignored
Comments

There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

Control0..*
TypeExtension
Is Modifiertrue because Modifier extensions are expected to modify the meaning or interpretation of the resource that contains them
Summaryfalse
Requirements

Modifier extensions allow for extensions that cannot be safely ignored to be clearly distinguished from the vast majority of extensions which can be safely ignored. This promotes interoperability by eliminating the need for implementers to prohibit the presence of extensions. For further information, see the definition of modifier extensions.

Alternate Namesextensions, user content
Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
8. DiagnosticReport.status
Definition

The status of the diagnostic report.

Shortregistered | partial | preliminary | final +
Control1..1
BindingThe codes SHALL be taken from DiagnosticReportStatushttp://hl7.org/fhir/ValueSet/diagnostic-report-status|4.0.1
(required to http://hl7.org/fhir/ValueSet/diagnostic-report-status|4.0.1)

The status of the diagnostic report.

Typecode
Is Modifiertrue because This element is labeled as a modifier because it is a status element that contains status entered-in-error which means that the resource should not be treated as valid
Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
Summarytrue
Requirements

Diagnostic services routinely issue provisional/incomplete reports, and sometimes withdraw previously released reports.

Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
10. DiagnosticReport.category
Definition

A code that classifies the clinical discipline, department or diagnostic service that created the report (e.g. cardiology, biochemistry, hematology, MRI). This is used for searching, sorting and display purposes.

ShortService category
Comments

Multiple categories are allowed using various categorization schemes. The level of granularity is defined by the category concepts in the value set. More fine-grained filtering can be performed using the metadata and/or terminology hierarchy in DiagnosticReport.code.

Control0..*
BindingFor example codes, see DiagnosticServiceSectionCodeshttp://hl7.org/fhir/ValueSet/diagnostic-service-sections
(example to http://hl7.org/fhir/ValueSet/diagnostic-service-sections)

Codes for diagnostic service sections.

TypeCodeableConcept
Is Modifierfalse
Must Supporttrue
Summarytrue
Alternate NamesDepartment, Sub-department, Service, Discipline
Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
SlicingThis element introduces a set of slices on DiagnosticReport.category. The slices areUnordered and Open, and can be differentiated using the following discriminators:
  • pattern @ $this
  • 12. DiagnosticReport.category:LabResult
    Slice NameLabResult
    Definition

    A code that classifies the Laboratory test(s) and Laboratory result(s). This is used for searching, sorting and display purposes.


    A code that classifies the clinical discipline, department or diagnostic service that created the report (e.g. cardiology, biochemistry, hematology, MRI). This is used for searching, sorting and display purposes.

    ShortService category
    Comments

    Multiple categories are allowed using various categorization schemes but at least one SHALL come from the FHIR defined value set that includes codes from HL7v2 Table 0074


    Multiple categories are allowed using various categorization schemes. The level of granularity is defined by the category concepts in the value set. More fine-grained filtering can be performed using the metadata and/or terminology hierarchy in DiagnosticReport.code.

    Control0..*
    BindingFor example codes, see DiagnosticServiceSectionCodeshttp://hl7.org/fhir/ValueSet/diagnostic-service-sections
    (example to http://hl7.org/fhir/ValueSet/diagnostic-service-sections)

    Codes for diagnostic service sections.

    TypeCodeableConcept
    Is Modifierfalse
    Summarytrue
    Alternate NamesDepartment, Sub-department, Service, Discipline
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    14. DiagnosticReport.code
    Definition

    A code or name that describes this diagnostic report.

    ShortName/Code for this diagnostic report
    Control1..1
    BindingThe codes SHOULD be taken from LOINCDiagnosticReportCodeshttp://hl7.org/fhir/ValueSet/report-codes
    (preferred to http://hl7.org/fhir/ValueSet/report-codes)

    Codes that describe Diagnostic Reports.

    TypeCodeableConcept
    Is Modifierfalse
    Must Supporttrue
    Summarytrue
    Alternate NamesType
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    16. DiagnosticReport.code.coding
    Definition

    A reference to a code defined by a terminology system.

    ShortCode defined by a terminology system
    Comments

    Codes may be defined very casually in enumerations, or code lists, up to very formal definitions such as SNOMED CT - see the HL7 v3 Core Principles for more information. Ordering of codings is undefined and SHALL NOT be used to infer meaning. Generally, at most only one of the coding values will be labeled as UserSelected = true.

    Control0..*
    TypeCoding
    Is Modifierfalse
    Summarytrue
    Requirements

    Allows for alternative encodings within a code system, and translations to other code systems.

    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    SlicingThis element introduces a set of slices on DiagnosticReport.code.coding. The slices areUnordered and Open, and can be differentiated using the following discriminators:
    • pattern @ $this
    • 18. DiagnosticReport.code.coding:LabResult
      Slice NameLabResult
      Definition

      A code that classifies the Laboratory test(s) and Laboratory result(s). This is used for searching, sorting and display purposes.


      A reference to a code defined by a terminology system.

      ShortCode defined by a terminology system
      Comments

      The code SHALL be LOINC 11502-2 'Laboratory report' code


      Codes may be defined very casually in enumerations, or code lists, up to very formal definitions such as SNOMED CT - see the HL7 v3 Core Principles for more information. Ordering of codings is undefined and SHALL NOT be used to infer meaning. Generally, at most only one of the coding values will be labeled as UserSelected = true.

      Control0..*
      TypeCoding
      Is Modifierfalse
      Summarytrue
      Requirements

      Allows for alternative encodings within a code system, and translations to other code systems.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      20. DiagnosticReport.code.coding:LabResult.system
      Definition

      The identification of the code system that defines the meaning of the symbol in the code.

      ShortIdentity of the terminology system
      Comments

      The URI may be an OID (urn:oid:...) or a UUID (urn:uuid:...). OIDs and UUIDs SHALL be references to the HL7 OID registry. Otherwise, the URI should come from HL7's list of FHIR defined special URIs or it should reference to some definition that establishes the system clearly and unambiguously.

      Control10..1
      Typeuri
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Summarytrue
      Requirements

      Need to be unambiguous about the source of the definition of the symbol.

      Fixed Valuehttp://loinc.org
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      22. DiagnosticReport.code.coding:LabResult.code
      Definition

      A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).

      ShortSymbol in syntax defined by the system
      Control10..1
      Typecode
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Summarytrue
      Requirements

      Need to refer to a particular code in the system.

      Fixed Value11502-2
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      24. DiagnosticReport.code.coding:@default
      Slice Name@default
      Definition

      A code that classifies the report(s) or result(s). This is used for searching, sorting and display purposes.


      A reference to a code defined by a terminology system.

      ShortCode defined by a terminology system
      Comments

      It is preferrable that the coding comes from the LOINC code system


      Codes may be defined very casually in enumerations, or code lists, up to very formal definitions such as SNOMED CT - see the HL7 v3 Core Principles for more information. Ordering of codings is undefined and SHALL NOT be used to infer meaning. Generally, at most only one of the coding values will be labeled as UserSelected = true.

      Control0..*
      TypeCoding
      Is Modifierfalse
      Summarytrue
      Requirements

      Allows for alternative encodings within a code system, and translations to other code systems.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      26. DiagnosticReport.code.coding:@default.system
      Definition

      The identification of the code system that defines the meaning of the symbol in the code.

      ShortIdentity of the terminology system
      Comments

      The URI may be an OID (urn:oid:...) or a UUID (urn:uuid:...). OIDs and UUIDs SHALL be references to the HL7 OID registry. Otherwise, the URI should come from HL7's list of FHIR defined special URIs or it should reference to some definition that establishes the system clearly and unambiguously.

      Control10..1
      Typeuri
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Summarytrue
      Requirements

      Need to be unambiguous about the source of the definition of the symbol.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      28. DiagnosticReport.code.coding:@default.code
      Definition

      A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).

      ShortSymbol in syntax defined by the system
      Control10..1
      Typecode
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Summarytrue
      Requirements

      Need to refer to a particular code in the system.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      30. DiagnosticReport.subject
      Definition

      The subject of the report. Usually, but not always, this is a patient. However, diagnostic services also perform analyses on specimens collected from a variety of other sources.

      ShortThe subject of the report - usually, but not always, the patient
      Control0..1
      TypeReference(Patient Profile, Device Profile (Implantable), Location Profile, Patient, Group, Device, Location)
      Is Modifierfalse
      Must Supporttrue
      Must Support TypesNo must-support rules about the choice of types/profiles
      Summarytrue
      Requirements

      SHALL know the subject context.

      Alternate NamesPatient
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      32. DiagnosticReport.encounter
      Definition

      The healthcare event (e.g. a patient and healthcare provider interaction) which this DiagnosticReport is about.

      ShortHealth care event when test ordered
      Comments

      This will typically be the encounter the event occurred within, but some events may be initiated prior to or after the official completion of an encounter but still be tied to the context of the encounter (e.g. pre-admission laboratory tests).

      Control0..1
      TypeReference(Encounter Profile, Encounter)
      Is Modifierfalse
      Summarytrue
      Requirements

      Links the request to the Encounter context.

      Alternate NamesContext
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      34. DiagnosticReport.effective[x]
      Definition

      This is the Datetime or Period when the report or note was written.


      The time or time-period the observed values are related to. When the subject of the report is a patient, this is usually either the time of the procedure or of specimen collection(s), but very often the source of the date/time is not known, only the date/time itself.

      ShortTime of the report or noteClinically relevant time/time-period for report
      Comments

      If the diagnostic procedure was performed on the patient, this is the time it was performed. If there are specimens, the diagnostically relevant time can be derived from the specimen collection times, but the specimen information is not always available, and the exact relationship between the specimens and the diagnostically relevant time is not always automatic.

      Control0..1
      TypeChoice of: dateTime, Period
      [x] NoteSeeChoice of Data Typesfor further information about how to use [x]
      Is Modifierfalse
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      Summarytrue
      Requirements

      Need to know where in the patient history to file/present this report.

      Alternate NamesObservation time, Effective Time, Occurrence
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      36. DiagnosticReport.performer
      Definition

      The diagnostic service that is responsible for issuing the report.

      ShortResponsible Diagnostic Service
      Comments

      This is not necessarily the source of the atomic data items or the entity that interpreted the results. It is the entity that takes responsibility for the clinical report.

      Control0..*
      TypeReference(Practitioner Profile (General), PractitionerRole Profile (General), Organization Profile, Practitioner, PractitionerRole, Organization, CareTeam)
      Is Modifierfalse
      Summarytrue
      Requirements

      Need to know whom to contact if there are queries about the results. Also may need to track the source of reports for secondary data analysis.

      Alternate NamesLaboratory, Service, Practitioner, Department, Company, Authorized by, Director
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      38. DiagnosticReport.resultsInterpreter
      Definition

      The practitioner or organization that is responsible for the report's conclusions and interpretations.

      ShortPrimary result interpreter
      Comments

      Might not be the same entity that takes responsibility for the clinical report.

      Control0..*
      TypeReference(Practitioner Profile (General), PractitionerRole Profile (General), Organization Profile, Practitioner, PractitionerRole, Organization, CareTeam)
      Is Modifierfalse
      Summarytrue
      Requirements

      Need to know whom to contact if there are queries about the results. Also may need to track the source of reports for secondary data analysis.

      Alternate NamesAnalyzed by, Reported by
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      40. DiagnosticReport.specimen
      Definition

      Details about the specimens on which this diagnostic report is based.

      ShortSpecimens this report is based on
      Comments

      If the specimen is sufficiently specified with a code in the test result name, then this additional data may be redundant. If there are multiple specimens, these may be represented per observation or group.

      Control0..*
      TypeReference(Specimen)
      Is Modifierfalse
      Summaryfalse
      Requirements

      Need to be able to report information about the collected specimens on which the report is based.

      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      SlicingThis element introduces a set of slices on DiagnosticReport.specimen. The slices areUnordered and Open, and can be differentiated using the following discriminators:
      • pattern @ $this
      • 42. DiagnosticReport.specimen:LabResult
        Slice NameLabResult
        Definition

        Details about the specimens on which this diagnostic report is based.

        ShortSpecimens this report is based on
        Comments

        Details about the specimen(s) on which this laboratory report is based on.


        If the specimen is sufficiently specified with a code in the test result name, then this additional data may be redundant. If there are multiple specimens, these may be represented per observation or group.

        Control0..*
        TypeReference(Specimen)
        Is Modifierfalse
        Summaryfalse
        Requirements

        Need to be able to report information about the collected specimens on which the report is based.

        Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
        44. DiagnosticReport.specimen:@default
        Slice Name@default
        Definition

        Details about the specimens on which this diagnostic report is based.

        ShortSpecimens this report is based on
        Comments

        Details about specimen(s) on which this report is based on.


        If the specimen is sufficiently specified with a code in the test result name, then this additional data may be redundant. If there are multiple specimens, these may be represented per observation or group.

        Control0..*
        TypeReference(Specimen)
        Is Modifierfalse
        Summaryfalse
        Requirements

        Need to be able to report information about the collected specimens on which the report is based.

        Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
        46. DiagnosticReport.result
        Definition

        Observations that are part of this diagnostic report.

        ShortObservations
        Comments

        Observations can contain observations.

        Control0..*
        TypeReference(Observation)
        Is Modifierfalse
        Must Supporttrue
        Summaryfalse
        Requirements

        Need to support individual results, or groups of results, where the result grouping is arbitrary, but meaningful.

        Alternate NamesData, Atomic Value, Result, Atomic result, Data, Test, Analyte, Battery, Organizer
        Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
        SlicingThis element introduces a set of slices on DiagnosticReport.result. The slices areUnordered and Open, and can be differentiated using the following discriminators:
        • profile @ $this
        • 48. DiagnosticReport.result:LabResult
          Slice NameLabResult
          Definition

          Observations that are part of this diagnostic report.

          ShortObservations
          Comments

          Observations that represent results produced by laboratory tests or panels/studies


          Observations can contain observations.

          Control0..*
          TypeReference(Observation Profile (Laboratory Results), Observation)
          Is Modifierfalse
          Summaryfalse
          Requirements

          Need to support individual results, or groups of results, where the result grouping is arbitrary, but meaningful.

          Alternate NamesData, Atomic Value, Result, Atomic result, Data, Test, Analyte, Battery, Organizer
          Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
          50. DiagnosticReport.result:@default
          Slice Name@default
          Definition

          Observations that are part of this diagnostic report.

          ShortObservations
          Comments

          Observations that represent results produced for report


          Observations can contain observations.

          Control0..*
          TypeReference(Observation Profile (General Use), Observation)
          Is Modifierfalse
          Must Supporttrue
          Summaryfalse
          Requirements

          Need to support individual results, or groups of results, where the result grouping is arbitrary, but meaningful.

          Alternate NamesData, Atomic Value, Result, Atomic result, Data, Test, Analyte, Battery, Organizer
          Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
          52. DiagnosticReport.conclusionCode
          Definition

          The code that represents relevant clinical problems, conditions, diagnoses, symptoms, findings and complaints taken from CHI Health Concern Code


          One or more codes that represent the summary conclusion (interpretation/impression) of the diagnostic report.

          ShortCHI identification of the condition, problem or diagnosisCodes for the clinical conclusion of test results
          Comments

          The binding strength of this element is Example, meaning that the Canada Health Infoway Health Concern Code value set provides examples of the types of concepts intended to be included

          Control0..*
          BindingFor example codes, see HealthConcernCode .http://hl7.org/fhir/ValueSet/clinical-findings
          (example to https://fhir.infoway-inforoute.ca/ValueSet/healthconcerncode)

          Represents the patient's relevant clinical problems, conditions, diagnoses, symptoms, findings and complaints, as interpreted by the provider.


          Diagnosis codes provided as adjuncts to the report.

          TypeCodeableConcept
          Is Modifierfalse
          Summaryfalse
          Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))