Argonaut Data Query Implementation Guide Version 1.0.0

This page is part of the Argonaut Data Query Implementation Guide (v1.0.0: Release) based on FHIR R2. This is the current published version in it's permanent home (it will always be available at this URL). For a full list of available versions, see the Directory of published versions

D.4.1 StructureDefinition-argo-diagnosticreport

Laboratory results are grouped and summarized using the DiagnosticReport resource which typically reference Observation resource(s). When lab test or lab panel, such as CBC, is ordered, a DiagnosticReport represents the order fulfillment and references each of the resulting discrete Observations within that panel. Each Observation resource represents an individual laboratory test and result value, a “nested” panel (such as a microbial susceptibility panel) which references other observations, or rarely a laboratory test with component result values. They can also be presented in report form or as free text. This profile sets minimum expectations for the DiagnosticReport resource to record, search and fetch laboratory results associated with a patient. It identifies which core elements, extensions, vocabularies and value sets SHALL be present in the resource when using this profile.

Example Usage Scenarios:

The following are example usage scenarios for the Argonaut DiagnosticReport profile:

  • Query for lab reports belonging to a Patient
  • Record a lab report for a specific Patient
Mandatory Data Elements and Terminology

The following data-elements are mandatory (i.e data MUST be present). These are presented below in a simple human-readable explanation. Profile specific guidance and examples are provided as well. The Formal Profile Definition below provides the formal summary, definitions, and terminology requirements.

Each DiagnosticReport must have:

  1. a status
  2. a category code of ‘LAB’
  3. a code (preferably a LOINC code) which tells you what is being measured
  4. a patient
  5. a time indicating when the measurement was taken
  6. a time indicating when the measurement was reported
  7. who issues the report

Each DiagnosticReport Must Support:

  1. at least one result (discrete observation or image or text representation of the entire result)

Profile specific implementation guidance:

  • Additional codes that translate or map to the DiagnosticReport codes or category codes are allowed. For example:
    • providing both a local system codes and a LOINC code that it map to
    • providing a more specific category codes such as “CH” (chemistry) in addition to the “LAB” category code.
  • Results represented purely by free text or report form may be represented using the valueAttachment element in Observation or alternatively using the presentedForm element in DiagnosticReport.

Examples

D.4.1.1 Formal Views of Profile Content

The official URL for this profile is:

http://fhir.org/guides/argonaut/StructureDefinition/argo-diagnosticreport

This profile builds on DiagnosticReport.

This profile was published on Tue Oct 18 00:00:00 AEDT 2016 as a draft by Argonaut Project.

Description of Profiles, Differentials, Snapshots, and how the XML and JSON presentations work.

Complete Summary of the Mandatory Requirements

  1. One status in DiagnosticReport.status which has an required binding to:
  2. One category in DiagnosticReport.category which must have:
    • a fixed DiagnosticReport.category.coding.system= “http://hl7.org/fhir/DiagnosticReport-category”
    • a fixed DiagnosticReport.category.coding.code= “LAB”
  3. One code in DiagnosticReport.code which has an extensible binding to:
  4. One patient in DiagnosticReport.subject
  5. A date and time in DiagnosticReport.effectiveDateTime or DiagnosticReport.effectivePeriod
  6. A date and time in DiagnosticReport.issued
  7. A practitioner or organization in DiagnosticReport.performer

Each DiagnosticReport Must Support:

  1. One or more DiagnosticReport.result and/or DiagnosticReport.image and/or DiagnosticReport.presentedForm
NameFlagsCard.TypeDescription & Constraintsdoco
.. DiagnosticReport 0..*Argonaut DiagnosticReport Profile
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: IETF BCP-47 (required)
... text I0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional Content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier Σ0..*IdentifierId for external references to this report
... status ?!S1..1coderegistered | partial | final | corrected | appended | cancelled | entered-in-error
Binding: DiagnosticReportStatus (required)
... category S1..1CodeableConceptService category
Binding: Diagnostic Service Section Codes (example)
Required Pattern: {"coding":[{"system":"http://hl7.org/fhir/ValueSet/diagnostic-service-sections","code":"LAB"}]}
... code S1..1CodeableConceptName/Code for this diagnostic report
Binding: LOINC Diagnostic Report Codes (extensible)
... subject S1..1Reference(Argonaut Patient Profile)The subject of the report, usually, but not always, the patient
... encounter Σ0..1Reference(Encounter)Health care event when test ordered
... effective[x] S1..1dateTime, PeriodClinically Relevant time/time-period for report
... issued S1..1instantDateTime this version was released
... performer S1..1Reference(Practitioner), Reference(Organization)Responsible Diagnostic Service
... request 0..*Reference(DiagnosticOrder), Reference(ProcedureRequest), Reference(ReferralRequest)What was requested
... specimen 0..*Reference(Specimen)Specimens this report is based on
... result S0..*Reference(Argonaut Observation Results Profile)Observations - simple, or complex nested groups
... imagingStudy 0..*Reference(ImagingStudy), Reference(ImagingObjectSelection)Reference to full details of imaging associated with the diagnostic report
... image S0..*BackboneElementKey images associated with this report
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
.... comment 0..1stringComment about the image (e.g. explanation)
.... link Σ1..1Reference(Media)Reference to the image source
... conclusion 0..1stringClinical Interpretation of test results
... codedDiagnosis 0..*CodeableConceptCodes for the conclusion
Binding: SNOMED CT Clinical Findings (example)
... presentedForm S0..*AttachmentEntire report as issued

doco Documentation for this format

Complete Summary of the Mandatory Requirements

  1. One status in DiagnosticReport.status which has an required binding to:
  2. One category in DiagnosticReport.category which must have:
    • a fixed DiagnosticReport.category.coding.system= “http://hl7.org/fhir/DiagnosticReport-category”
    • a fixed DiagnosticReport.category.coding.code= “LAB”
  3. One code in DiagnosticReport.code which has an extensible binding to:
  4. One patient in DiagnosticReport.subject
  5. A date and time in DiagnosticReport.effectiveDateTime or DiagnosticReport.effectivePeriod
  6. A date and time in DiagnosticReport.issued
  7. A practitioner or organization in DiagnosticReport.performer

Each DiagnosticReport Must Support:

  1. One or more DiagnosticReport.result and/or DiagnosticReport.image and/or DiagnosticReport.presentedForm

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. DiagnosticReport 0..*Argonaut DiagnosticReport Profile
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: IETF BCP-47 (required)
... text I0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional Content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier Σ0..*IdentifierId for external references to this report
... status ?!S1..1coderegistered | partial | final | corrected | appended | cancelled | entered-in-error
Binding: DiagnosticReportStatus (required)
... category S1..1CodeableConceptService category
Binding: Diagnostic Service Section Codes (example)
Required Pattern: {"coding":[{"system":"http://hl7.org/fhir/ValueSet/diagnostic-service-sections","code":"LAB"}]}
... code S1..1CodeableConceptName/Code for this diagnostic report
Binding: LOINC Diagnostic Report Codes (extensible)
... subject S1..1Reference(Argonaut Patient Profile)The subject of the report, usually, but not always, the patient
... encounter Σ0..1Reference(Encounter)Health care event when test ordered
... effective[x] S1..1dateTime, PeriodClinically Relevant time/time-period for report
... issued S1..1instantDateTime this version was released
... performer S1..1Reference(Practitioner), Reference(Organization)Responsible Diagnostic Service
... request 0..*Reference(DiagnosticOrder), Reference(ProcedureRequest), Reference(ReferralRequest)What was requested
... specimen 0..*Reference(Specimen)Specimens this report is based on
... result S0..*Reference(Argonaut Observation Results Profile)Observations - simple, or complex nested groups
... imagingStudy 0..*Reference(ImagingStudy), Reference(ImagingObjectSelection)Reference to full details of imaging associated with the diagnostic report
... image S0..*BackboneElementKey images associated with this report
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
.... comment 0..1stringComment about the image (e.g. explanation)
.... link Σ1..1Reference(Media)Reference to the image source
... conclusion 0..1stringClinical Interpretation of test results
... codedDiagnosis 0..*CodeableConceptCodes for the conclusion
Binding: SNOMED CT Clinical Findings (example)
... presentedForm S0..*AttachmentEntire report as issued

doco Documentation for this format

Downloads: StructureDefinition: (XML, JSON, CSV), Schema: XML Schematron

 

D.4.1.2 Quick Start

Below is an overview of the required search and read operations for this profile. See the Conformance requirements for the Argonaut Data Query implementation guide server for a complete list of supported RESTful operations and search parameters for this IG.


GET [base]/DiagnosticReport?patient=[id]&category=LAB

Example:

GET http://spark.furore.com/fhir/DiagnosticReport?patient=f201&category=LAB

Support: Mandatory to support search by patient and category code = ‘LAB’.

Implementation Notes: Search based on diagnostic report category code = ‘LAB’. This fetches a bundle of all lab related DiagnosticReport resources for the specified patient (how to search by reference) and (how to search by token).

Response Class:

  • (Status 200): successful operation
  • (Status 400): invalid parameter
  • (Status 401/4xx): unauthorized request
  • (Status 403): insufficient scope

GET [base]/DiagnosticReport?patient=[id]&code=[LOINC{,LOINC2,LOINC3,...}]

Example: Search for all metabolic panel reports (LOINC = 24323-8 Comprehensive metabolic 2000 panel - Serum or Plasma) for a patient

GET https://fhir-open-api-dstu2.smarthealthit.org/DiagnosticReport?patient=1032702&code=24323-8

Example: Search for all cbc (LOINC = 58410-2 Complete blood count (hemogram) panel - Blood by Automated count), metabolic panel, and urinalysis panels (LOINC = 24356-8 Urinalysis complete panel - Urine) for a patient

GET https://fhir-open-api-dstu2.smarthealthit.org/DiagnosticReport?patient=1032702&code=24323-8,58410-2,24356-8

Support: Mandatory support search by a laboratory order code. SHOULD support search by multiple order codes.

Implementation Notes: Search based on DiagnosticReport code(s). This fetches a bundle of all DiagnosticReport resources for a specific diagnostic order code(s) for the specified patient (how to search by reference) and (how to search by token).

Response Class:

  • (Status 200): successful operation
  • (Status 400): invalid parameter
  • (Status 401/4xx): unauthorized request
  • (Status 403): insufficient scope

GET [base]/DiagnosticReport?patient=[id]&category=LAB&date=[date]{&date=[date]}

Example: Find all the lab reports issued after 2010-01-14

GET http://spark.furore.com/fhir/DiagnosticReport?patient=f201&category=LAB&date=ge2010-01-14

Support: Mandatory support search by category code = ‘LAB’ and date or period.

Implementation Notes: Search based on laboratory category code and date. This fetches a bundle of all DiagnosticReport resources with category ‘LAB’ for the specified patient for a specified time period (how to search by reference), (how to search by token) amd (how to search by date).

Response Class:

  • (Status 200): successful operation
  • (Status 400): invalid parameter
  • (Status 401/4xx): unauthorized request
  • (Status 403): insufficient scope