Skip to content

DiagnosticReport Profile

Canonical../StructureDefinition/nexus-emr-core-diagnosticreport
Statusdraft · 1.26.0
BaseDiagnosticReport (constraint)
SourceFSH · JSON

Defines the Nexus EMR FHIR profile for DiagnosticReport resources, based on CA-Core constraints, for aggregating diagnostic reports (e.g., Lab, Imaging) from multiple EMRs.

TypedFhir API / Pydantic schema

The typed accessor surface DiagnosticReport exposes for DiagnosticReport — generated from this IG's compiled profile; each typed accessor has a validating raw-FHIR twin (xRaw) where marked. The three ports are parity-enforced.

The AI-facing shape: from typed_fhir.facade.generated.schemas import DiagnosticReportSchemamodel_json_schema() is a structured-output / tool definition; instantiating validates an extraction. Generated source.

class DiagnosticReportSchema(BaseModel):
    """AI-facing shape of the DiagnosticReport profile: the facade's typed accessor
    surface (curated + salient fields) as a pydantic model. `model_json_schema()` is a
    structured-output / tool schema; instantiating validates an extraction."""

    model_config = ConfigDict(extra="forbid")

    status: Literal[
        "amended",
        "appended",
        "cancelled",
        "corrected",
        "entered-in-error",
        "final",
        "partial",
        "preliminary",
        "registered",
        "unknown",
    ] | None = Field(
        None,
        description=(
            "Where the report is in its lifecycle. The status of the diagnostic report. Indicates "
            "whether the report is complete and verified. Note: This is a modifier element. "
            "Preliminary reports should be interpreted with caution. DiagnosticReport.status — "
            "1..1"
        ),
    )
    category: Concept | None = Field(
        None,
        description=(
            "Service category with raw code support. Classification of the clinical discipline, "
            "department or diagnostic service that created the report. RECOMMENDED: Standard "
            "terminology codes (e.g., HL7 Diagnostic Service Section Codes) OPTIONAL: Raw EMR "
            "codes for source system preservation Multiple categories may be specified to "
            "classify the report in different ways. Note: 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. "
            "DiagnosticReport.category — 0..*"
        ),
    )
    code: Concept | None = Field(
        None,
        description=(
            "Diagnostic report type with raw code support. Type of diagnostic report (e.g., CBC, "
            "Chest X-ray, Lipid Panel). REQUIRED: text element for human readability RECOMMENDED: "
            "LOINC or other standard terminology when available OPTIONAL: Raw EMR codes for "
            "source system preservation Nexus EMR does not mandate a specific coding system for "
            "diagnostic report types. The text element ensures human readability even when coded "
            "values are not recognized. Note: Where this code was mapped from a source system's "
            "own vocabulary, carry the raw coding alongside the mapped one, flagged `userSelected "
            "= true`. See [Carrying the raw "
            "code](../guide/patterns/raw-codes.md). DiagnosticReport.code "
            "— 1..1"
        ),
    )
    subject: Reference | None = Field(
        None,
        description=(
            "The subject of the report - usually a patient. The patient who is the subject of the "
            "diagnostic report. Must reference using Nexus EMR patient identifier. Note: "
            "References should use identifier-based references following Nexus EMR patterns. "
            "DiagnosticReport.subject — 1..1"
        ),
    )
    encounter: Reference | None = Field(
        None,
        description=(
            "Healthcare event when report was generated. The encounter during which this "
            "diagnostic report was generated. Optional but provides important clinical context. "
            "Note: Linking to encounter helps establish the clinical context and timing of the "
            "diagnostic testing. DiagnosticReport.encounter — 0..1"
        ),
    )
    issued: FuzzyDate | None = Field(
        None,
        description=(
            "DateTime report was released. The date and time that this version of the report was "
            "made available to providers. Note: May be different from the effective date, "
            "especially for amended reports. DiagnosticReport.issued — 0..1"
        ),
    )
    result: Reference | None = Field(
        None,
        description=(
            "Observations that are part of this report. References to the Observations that are "
            "part of this diagnostic report. Note: Individual results are represented as separate "
            "Observation resources. DiagnosticReport.result — 0..*"
        ),
    )
    imaging_study: Reference | None = Field(
        None,
        description=(
            "Reference to full details of imaging associated with the diagnostic report. One or "
            "more links to full details of any imaging performed during the diagnostic "
            "investigation. Typically, this is imaging performed by DICOM enabled modalities, but "
            "this is not required. A fully enabled PACS viewer can use this information to "
            "provide views of the source images. Note: Left at base R4. This guide withdrew its "
            "ImagingStudy profile in 1.22.0 and models the imaging report rather than the DICOM "
            "acquisition, so nothing here produces this reference and no consumer is required to "
            "resolve it. DiagnosticReport.imagingStudy — 0..*"
        ),
    )
    conclusion: str | None = Field(
        None,
        description=(
            "Clinical conclusion (interpretation) of test results. Concise and clinically "
            "contextualized summary conclusion of the diagnostic report. Note: The narrative "
            "conclusion shall only contain filtered information from the report. "
            "DiagnosticReport.conclusion — 0..1"
        ),
    )
    conclusion_code: Concept | None = Field(
        None,
        description=(
            "Codes for the clinical conclusion. Coded representation of the conclusion. Note: "
            "Where this code was mapped from a source system's own vocabulary, carry the raw "
            "coding alongside the mapped one, flagged `userSelected = true`. See [Carrying the "
            "raw code](../guide/patterns/raw-codes.md). "
            "DiagnosticReport.conclusionCode — 0..*"
        ),
    )
    presented_form: dict | None = Field(
        None,
        description=(
            "Entire report as issued. Rich text representation of the entire result as issued by "
            "the diagnostic service. Note: Multiple formats of the same report may be provided "
            "(e.g., PDF and HTML). DiagnosticReport.presentedForm — 0..*"
        ),
    )
    effective: FuzzyDate | None = Field(
        None,
        description=(
            "Clinically relevant time/time-period for report. The time or time-period the "
            "observed values are related to. This is usually the time specimen was collected or "
            "imaging was performed. Note: For lab reports, this is typically when specimen was "
            "collected. For imaging, when the images were taken. Salient field — "
            "effectiveDateTime | effectivePeriod.start"
        ),
    )
    data: str | None = Field(
        None,
        description=(
            "Data inline, base64 encoded. The actual data of the attachment - a sequence of "
            "bytes, base64 encoded. Note: The base64-encoded data SHALL be expressed in the same "
            "character set as the base resource XML or JSON. Salient field — "
            "presentedForm.first().data"
        ),
    )