This page is part of the US Core (v0.0.0: STU1 Ballot 1) based on FHIR v1.8.0. The current version which supercedes this version is 5.0.1. For a full list of available versions, see the Directory of published versions
Laboratory results are grouped and summarized using the DiagnosticReport resource which reference Observation resources. 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. This profile sets minimum expectations for the Observation resource resource to record, search and fetch laboratory test 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 US Core-Results profile:
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 Observation must have:
Each Observation should have:
Profile specific implementation guidance:
The official URL for this profile is:
http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults
This profile builds on Observation.
This profile was published on Mon Aug 01 00:00:00 AEST 2016 as a draft by Health Level Seven International (FHIR-Infrastructure).
Description of Profiles, Differentials, Snapshots, and how the XML and JSON presentations work.
Observation.status
which has an required binding to ObservationStatusObservation.category
which must have:
Observation.category.coding.system
=“http://hl7.org/fhir/observation-category”Observation.category.coding.code
=“laboratory”Observation.code
which has an extensible binding to LOINC Observation Codes
Observation.subject
Observation.value[x]
or one code in Observation.DataAbsentReason
(unless the Observation.code is a panel code)
Observation.valueQuantity.value
Observation.valueQuantity.system
=“http://unitsofmeasure.org”Observation.valueQuantity.code
which has an required binding to UCUM unitsObservation.valueCodeableConcept.coding.code
and code system in Observation.valueCodeableConcept.coding.sytem
which has an preferred binding to Observation Value Codes (SNOMED-CT)Observation.valueCodeableConcept.text
Each Observation SHOULD have:
effectiveDateTime
or effectivePeriod
Observation.referenceRange
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Observation | I | 0..* | US Core Result Observation us-core-2: If there is no component or related element then either a value[x] or a data absent reason must be present | |
status | S | 1..1 | code | Binding: ObservationStatus (required) |
category | S | 1..1 | CodeableConcept | Required Pattern: {"coding":[{"system":"http://hl7.org/fhir/observation-category","code":"laboratory"}]} |
code | S | 1..1 | CodeableConcept | US Realm Laboratory Test Name Binding: LOINC Codes (extensible) |
coding | S | 1..* | Coding | Standard and local codes may be included here by repeating the coding element with a different coding.system. |
system | S | 1..1 | uri | |
code | S | 1..1 | code | |
display | S | 0..1 | string | |
text | S | 0..1 | string | Display text |
subject | S | 1..1 | Reference(US Core Patient Profile) | |
effective[x] | SI | 0..1 | dateTime, Period | us-core-1: Datetime must be at least to day. |
value[x] | SI | string, Range, Ratio, SampledData, Attachment, time, dateTime, Period | Slice: Unordered, Open, by @type | |
valueQuantity | S | 0..1 | Quantity | Binding: UCUM units (required) |
valueCodeableConcept | S | 0..1 | CodeableConcept | Binding: Observation Value Codes (SNOMED-CT) (preferred) |
dataAbsentReason | SI | 0..1 | CodeableConcept | Binding: Observation Value Absent Reason (extensible) |
Documentation for this format |
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Observation | I | 0..* | US Core Result Observation us-core-2: If there is no component or related element then either a value[x] or a data absent reason must be present | |
id | ∑ | 0..1 | id | Logical id of this artifact |
meta | ∑ | 0..1 | Meta | Metadata about the resource |
implicitRules | ?!∑ | 0..1 | uri | A set of rules under which this content was created |
language | 0..1 | code | Language of the resource content Binding: Common Languages (extensible) | |
text | I | 0..1 | Narrative | Text summary of the resource, for human interpretation |
contained | 0..* | Resource | Contained, inline Resources | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
identifier | 0..* | Identifier | Unique Id for this particular observation | |
status | ?!S | 1..1 | code | registered | preliminary | final | amended + Binding: ObservationStatus (required) |
category | S | 1..1 | CodeableConcept | Classification of type of observation Binding: Observation Category Codes (example) Required Pattern: {"coding":[{"system":"http://hl7.org/fhir/observation-category","code":"laboratory"}]} |
code | S | 1..1 | CodeableConcept | US Realm Laboratory Test Name Binding: LOINC Codes (extensible) |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
coding | S | 1..* | Coding | Standard and local codes may be included here by repeating the coding element with a different coding.system. |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
system | S | 1..1 | uri | Identity of the terminology system |
version | ∑ | 0..1 | string | Version of the system - if relevant |
code | S | 1..1 | code | Symbol in syntax defined by the system |
display | S | 0..1 | string | Representation defined by the system |
userSelected | ∑ | 0..1 | boolean | If this coding was chosen directly by the user |
text | S | 0..1 | string | Display text |
subject | S | 1..1 | Reference(US Core Patient Profile) | Who and/or what this is about |
encounter | 0..1 | Reference(Encounter) | Healthcare event during which this observation is made | |
effective[x] | SI | 0..1 | dateTime, Period | Clinically relevant time/time-period for observation us-core-1: Datetime must be at least to day. |
issued | ∑ | 0..1 | instant | Date/Time this was made available |
performer | ∑ | 0..* | Reference(Practitioner), Reference(Organization), Reference(Patient), Reference(RelatedPerson) | Who is responsible for the observation |
value[x] | ∑I | Quantity, CodeableConcept, string, Range, Ratio, SampledData, Attachment, time, dateTime, Period | Actual result Slice: Unordered, Open, by @type | |
value[x] | SI | 0..1 | string, Range, Ratio, SampledData, Attachment, time, dateTime, Period | Actual result |
valueQuantity | SI | 0..1 | Quantity | Actual result Binding: UCUM units (required) |
valueCodeableConcept | SI | 0..1 | CodeableConcept | Actual result Binding: Observation Value Codes (SNOMED-CT) (preferred) |
dataAbsentReason | SI | 0..1 | CodeableConcept | Why the result is missing Binding: Observation Value Absent Reason (extensible) |
interpretation | 0..1 | CodeableConcept | High, low, normal, etc. Binding: Observation Interpretation Codes (extensible) | |
comment | 0..1 | string | Comments about result | |
bodySite | 0..1 | CodeableConcept | Observed body part Binding: SNOMED CT Body Structures (example) | |
method | 0..1 | CodeableConcept | How it was done Binding: Observation Methods (example) | |
specimen | 0..1 | Reference(Specimen) | Specimen used for this observation | |
device | 0..1 | Reference(Device), Reference(DeviceMetric) | (Measurement) Device | |
referenceRange | I | 0..* | BackboneElement | Provides guide for interpretation obs-3: Must have at least a low or a high or text |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?!∑ | 0..* | Extension | Extensions that cannot be ignored |
low | I | 0..1 | SimpleQuantity | Low Range, if relevant |
high | I | 0..1 | SimpleQuantity | High Range, if relevant |
meaning | 0..* | CodeableConcept | Reference range qualifier Binding: Observation Reference Range Meaning Codes (example) | |
age | 0..1 | Range | Applicable age range, if relevant | |
text | 0..1 | string | Text based reference range in an observation | |
related | ∑I | 0..* | BackboneElement | Resource related to this observation |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?!∑ | 0..* | Extension | Extensions that cannot be ignored |
type | 0..1 | code | has-member | derived-from | sequel-to | replaces | qualified-by | interfered-by Binding: ObservationRelationshipType (required) | |
target | 1..1 | Reference(Observation), Reference(QuestionnaireResponse), Reference(Sequence) | Resource that is related to this one | |
component | ∑I | 0..* | BackboneElement | Component results |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?!∑ | 0..* | Extension | Extensions that cannot be ignored |
code | ∑ | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINC Codes (example) |
value[x] | ∑ | 0..1 | Quantity, CodeableConcept, string, Range, Ratio, SampledData, Attachment, time, dateTime, Period | Actual component result |
dataAbsentReason | I | 0..1 | CodeableConcept | Why the component result is missing Binding: Observation Value Absent Reason (extensible) |
interpretation | 0..1 | CodeableConcept | High, low, normal, etc. Binding: Observation Interpretation Codes (extensible) | |
referenceRange | 0..* | Unknown reference to #Observation:uscoreobss.referenceRange Provides guide for interpretation of component result | ||
Documentation for this format |
Observation.status
which has an required binding to ObservationStatusObservation.category
which must have:
Observation.category.coding.system
=“http://hl7.org/fhir/observation-category”Observation.category.coding.code
=“laboratory”Observation.code
which has an extensible binding to LOINC Observation Codes
Observation.subject
Observation.value[x]
or one code in Observation.DataAbsentReason
(unless the Observation.code is a panel code)
Observation.valueQuantity.value
Observation.valueQuantity.system
=“http://unitsofmeasure.org”Observation.valueQuantity.code
which has an required binding to UCUM unitsObservation.valueCodeableConcept.coding.code
and code system in Observation.valueCodeableConcept.coding.sytem
which has an preferred binding to Observation Value Codes (SNOMED-CT)Observation.valueCodeableConcept.text
Each Observation SHOULD have:
effectiveDateTime
or effectivePeriod
Observation.referenceRange
Differential View
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Observation | I | 0..* | US Core Result Observation us-core-2: If there is no component or related element then either a value[x] or a data absent reason must be present | |
status | S | 1..1 | code | Binding: ObservationStatus (required) |
category | S | 1..1 | CodeableConcept | Required Pattern: {"coding":[{"system":"http://hl7.org/fhir/observation-category","code":"laboratory"}]} |
code | S | 1..1 | CodeableConcept | US Realm Laboratory Test Name Binding: LOINC Codes (extensible) |
coding | S | 1..* | Coding | Standard and local codes may be included here by repeating the coding element with a different coding.system. |
system | S | 1..1 | uri | |
code | S | 1..1 | code | |
display | S | 0..1 | string | |
text | S | 0..1 | string | Display text |
subject | S | 1..1 | Reference(US Core Patient Profile) | |
effective[x] | SI | 0..1 | dateTime, Period | us-core-1: Datetime must be at least to day. |
value[x] | SI | string, Range, Ratio, SampledData, Attachment, time, dateTime, Period | Slice: Unordered, Open, by @type | |
valueQuantity | S | 0..1 | Quantity | Binding: UCUM units (required) |
valueCodeableConcept | S | 0..1 | CodeableConcept | Binding: Observation Value Codes (SNOMED-CT) (preferred) |
dataAbsentReason | SI | 0..1 | CodeableConcept | Binding: Observation Value Absent Reason (extensible) |
Documentation for this format |
Snapshot View
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Observation | I | 0..* | US Core Result Observation us-core-2: If there is no component or related element then either a value[x] or a data absent reason must be present | |
id | ∑ | 0..1 | id | Logical id of this artifact |
meta | ∑ | 0..1 | Meta | Metadata about the resource |
implicitRules | ?!∑ | 0..1 | uri | A set of rules under which this content was created |
language | 0..1 | code | Language of the resource content Binding: Common Languages (extensible) | |
text | I | 0..1 | Narrative | Text summary of the resource, for human interpretation |
contained | 0..* | Resource | Contained, inline Resources | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
identifier | 0..* | Identifier | Unique Id for this particular observation | |
status | ?!S | 1..1 | code | registered | preliminary | final | amended + Binding: ObservationStatus (required) |
category | S | 1..1 | CodeableConcept | Classification of type of observation Binding: Observation Category Codes (example) Required Pattern: {"coding":[{"system":"http://hl7.org/fhir/observation-category","code":"laboratory"}]} |
code | S | 1..1 | CodeableConcept | US Realm Laboratory Test Name Binding: LOINC Codes (extensible) |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
coding | S | 1..* | Coding | Standard and local codes may be included here by repeating the coding element with a different coding.system. |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
system | S | 1..1 | uri | Identity of the terminology system |
version | ∑ | 0..1 | string | Version of the system - if relevant |
code | S | 1..1 | code | Symbol in syntax defined by the system |
display | S | 0..1 | string | Representation defined by the system |
userSelected | ∑ | 0..1 | boolean | If this coding was chosen directly by the user |
text | S | 0..1 | string | Display text |
subject | S | 1..1 | Reference(US Core Patient Profile) | Who and/or what this is about |
encounter | 0..1 | Reference(Encounter) | Healthcare event during which this observation is made | |
effective[x] | SI | 0..1 | dateTime, Period | Clinically relevant time/time-period for observation us-core-1: Datetime must be at least to day. |
issued | ∑ | 0..1 | instant | Date/Time this was made available |
performer | ∑ | 0..* | Reference(Practitioner), Reference(Organization), Reference(Patient), Reference(RelatedPerson) | Who is responsible for the observation |
value[x] | ∑I | Quantity, CodeableConcept, string, Range, Ratio, SampledData, Attachment, time, dateTime, Period | Actual result Slice: Unordered, Open, by @type | |
value[x] | SI | 0..1 | string, Range, Ratio, SampledData, Attachment, time, dateTime, Period | Actual result |
valueQuantity | SI | 0..1 | Quantity | Actual result Binding: UCUM units (required) |
valueCodeableConcept | SI | 0..1 | CodeableConcept | Actual result Binding: Observation Value Codes (SNOMED-CT) (preferred) |
dataAbsentReason | SI | 0..1 | CodeableConcept | Why the result is missing Binding: Observation Value Absent Reason (extensible) |
interpretation | 0..1 | CodeableConcept | High, low, normal, etc. Binding: Observation Interpretation Codes (extensible) | |
comment | 0..1 | string | Comments about result | |
bodySite | 0..1 | CodeableConcept | Observed body part Binding: SNOMED CT Body Structures (example) | |
method | 0..1 | CodeableConcept | How it was done Binding: Observation Methods (example) | |
specimen | 0..1 | Reference(Specimen) | Specimen used for this observation | |
device | 0..1 | Reference(Device), Reference(DeviceMetric) | (Measurement) Device | |
referenceRange | I | 0..* | BackboneElement | Provides guide for interpretation obs-3: Must have at least a low or a high or text |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?!∑ | 0..* | Extension | Extensions that cannot be ignored |
low | I | 0..1 | SimpleQuantity | Low Range, if relevant |
high | I | 0..1 | SimpleQuantity | High Range, if relevant |
meaning | 0..* | CodeableConcept | Reference range qualifier Binding: Observation Reference Range Meaning Codes (example) | |
age | 0..1 | Range | Applicable age range, if relevant | |
text | 0..1 | string | Text based reference range in an observation | |
related | ∑I | 0..* | BackboneElement | Resource related to this observation |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?!∑ | 0..* | Extension | Extensions that cannot be ignored |
type | 0..1 | code | has-member | derived-from | sequel-to | replaces | qualified-by | interfered-by Binding: ObservationRelationshipType (required) | |
target | 1..1 | Reference(Observation), Reference(QuestionnaireResponse), Reference(Sequence) | Resource that is related to this one | |
component | ∑I | 0..* | BackboneElement | Component results |
id | 0..1 | string | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?!∑ | 0..* | Extension | Extensions that cannot be ignored |
code | ∑ | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINC Codes (example) |
value[x] | ∑ | 0..1 | Quantity, CodeableConcept, string, Range, Ratio, SampledData, Attachment, time, dateTime, Period | Actual component result |
dataAbsentReason | I | 0..1 | CodeableConcept | Why the component result is missing Binding: Observation Value Absent Reason (extensible) |
interpretation | 0..1 | CodeableConcept | High, low, normal, etc. Binding: Observation Interpretation Codes (extensible) | |
referenceRange | 0..* | Unknown reference to #Observation:uscoreobss.referenceRange Provides guide for interpretation of component result | ||
Documentation for this format |
Downloads: StructureDefinition: (XML, JSON, CSV), Schema: XML Schematron
Below is an overview of the required search and read operations.
Summary of Argonaut Search Criteria for StructureDefinition-us-core-observationresults
Clients
GET [base]/Observation?patient=[id]&category=laboratory
.GET [base]/Observation?patient=[id]&category=laboratory&date=[date]{&date=[date]}
.A client has connected to a server and fetched all of all of a patient’s laboratory results searching by category and code using GET [base]/Observation?patient=[id]&category=laboratory&code=[LOINC]
.
GET [base]/Observation?patient=[id]&category=laboratory&code=[LOINC1{,LOINC2,LOINC3,...}]&date=[date]{&date=[date]}
.Servers
GET [base]/Observation?patient=[id]&category=laboratory
.GET [base]/Observation?patient=[id]&category=laboratory&date=[date]{&date=[date]}
.A server is capable of returning all of a patient’s laboratory results queried by category and code using GET [base]/Observation?patient=[id]&category=laboratory&code=[LOINC]
.
A server SHOULD be capable of returning all of a patient’s laboratory results queried by category and one or more codes and date range using GET [base]/Observation?patient=[id]&category=laboratory&code=[LOINC1{,LOINC2,LOINC3,...}]&date=[date]{&date=[date]}
.
GET [base]/Observation?patient=[id]&category=laboratory
Support: Mandatory to support search by patient and category code = ‘laboratory’.
Implementation Notes: Search based on laboratory category code = “laboratory”. This fetches a bundle of all Observation resources with laboratory categories for the specified patient (how to search by reference) and (how to search by token).
Response Class:
Example:
GET https://fhir-open-api-dstu2.smarthealthit.org/Observation?patient=1134281&category=laboratory
GET [base]/Observation?patient=[id]&code=[LOINC{,LOINC2,LOINC3,...}]
Support: Mandatory support search by a laboratory LOINC code. SHOULD support search by multiple LOINC codes.
Implementation Notes: 1) Search based on laboratory LOINC code(s). This fetches a bundle of all Observation resources for a specific observation LOINC code(s) for the specified patient (how to search by reference) and (how to search by token). 2) The Observation “code” parameter searches both in both Observation.code and Observation.component.code.
Response Class:
Example: Search for all blood glucose lab results for a patient:
GET https://fhir-open-api-dstu2.smarthealthit.org/Observation?patient=1134281&code=2339-0
Example: Search for all blood glucose, urine glucose and urine ketones for a patient
GET [base]/Observation?patient=[id]&category=laboratory&date=[date]{&date=[date]}
Support: Mandatory support search by category code =”laboratory” and date or period
Implementation Notes: Search based on laboratory category code and date. This fetches a bundle of all Observation resources with category ‘laboratory’ 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:
Example: Find all the laboratory results after 2013-03-14