PATIENT ADMINISTRTAION (PA) Workgroup Development Draft

4.20 Resource Observation - Content

This resource maintained by the Orders and Observations Work Group

Measurements and simple assertions made about a patient, device or other subject.

4.20.1 Scope and Usage

Observations are a central element in healthcare, used to support diagnosis, monitor progress, determine baselines and patterns and even capture demographic characteristics. Most observations are simple name/value pair assertions with some metadata, but some observations group other observations together logically, or even are multi-component observations. Note that the DiagnosticReport resource provide a clinical or workflow context for a set of observations. Expected uses for the Observation resource include:

  • Vital signs: temperature, blood pressure, respiration rate
  • Laboratory Data
  • Imaging results like bone density or fetal measurements
  • Devices Measurements such as EKG data or Pulse Oximetry data
  • Clinical assessment tools such as APGAR
  • Personal characteristics: height, weight, eye-color
  • Social history: tobacco use, family supports, cognitive status
  • Core characteristics: pregnancy status, death assertion

Normally, an observation will have either a value (e.g. a blood glucose measurement) or a set of related observations ( e.g. an electrolyte panel) and not both. A few observations (e.g. apgar store) may have both a value and related observations (for apgar, the observations from which the measure is derived).

4.20.2 Boundaries and Relationships

In contrast to the Observation resource, the DiagnosticReport resource typically includes additional clinical context and and some mix of atomic results, images, imaging reports, textual and coded interpretation, and formatted representations. Laboratory reports, pathology reports, and imaging reports should be represented using the DiagnosticReport resource. The Observation resource is referenced by the DiagnosticReport to provide the atomic results for a particular investigation.

The Observation resources should not be used to record diagnosis or clinical assessments about a patient or subject that are typically captured in the Condition resource. However, the Observation resource is often referenced by the Condition resource to provide specific subjective and objective data to support its assertions. There are other resources that can be considered "specializations" of the Observation resource and should be used for those specific contexts and use cases. They include AllergyIntolerance resource, FamilyMemberHistory resource, Procedure resource, and Questionnaire resource.

In some cases, such as when source data is coming from a v2 feed, a system may not have information that allows it to distinguish diagnosis, allergy and other "specialized" types of observations from lab, vital sign and other observation types intended to be conveyed with this resource. In those circumstances, such specialized observations may also appear using this resource.

This resource is referenced by ClinicalImpression, Condition, DiagnosticOrder, DiagnosticReport, Goal, Immunization, ImmunizationRecommendation and Procedure

4.20.3 Resource Content

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation IDomainResourceMeasurements and simple assertions
Component code Shall not be same as observation code
Shall only be present if Observation.value[x] is not present
... code Σ1..1CodeableConceptType of observation (code / type)
LOINC Codes (Example)
... category 0..1CodeableConceptClassification of type of observation
Diagnostic Service Section Codes (Example)
... value[x] ΣActual result
SNOMED CT Codes (Example)
.... valueQuantity0..1Quantity
.... valueCodeableConcept0..1CodeableConcept
.... valueString0..1string
.... valueRange0..1Range
.... valueRatio0..1Ratio
.... valueSampledData0..1SampledData
.... valueAttachment0..1Attachment
.... valueTime0..1time
.... valueDateTime0..1dateTime
.... valuePeriod0..1Period
... dataAbsentReason I0..1CodeableConceptWhy the result is missing
Observation Value Absent Reason (Extensible)
... interpretation 0..1CodeableConceptHigh, low, normal, etc.
Observation Interpretation Codes (Extensible)
... comments 0..1stringComments about result
... effective[x] ΣClinically Relevant time/time-period for observation
.... effectiveDateTime0..1dateTime
.... effectivePeriod0..1Period
... issued Σ0..1instantDate/Time this was made available
... status ?! Σ1..1coderegistered | preliminary | final | amended +
ObservationStatus (Required)
... reliability ?!0..1codeok | ongoing | early | questionable | calibrating | error +
ObservationReliability (Required)
... bodySite[x] Observed body part
SNOMED CT Body Structures (Example)
.... bodySiteCodeableConcept0..1CodeableConcept
.... bodySiteReference0..1BodySite
... method 0..1CodeableConceptHow it was done
Observation Methods (Example)
... identifier 0..*IdentifierUnique Id for this particular observation
... subject Σ0..1Patient | Group | Device | LocationWho and/or what this is about
... specimen 0..1SpecimenSpecimen used for this observation
... performer Σ0..*Practitioner | Organization | Patient | RelatedPersonWho is responsible for the observation
... device 0..1Device | DeviceMetric(Measurement) Device
... encounter 0..1EncounterHealthcare event during which this observation is made
... referenceRange I0..*ElementProvides guide for interpretation
Must have at least a low or a high or text
.... low I0..1QuantityLow Range, if relevant
Low range comparators can only be '>' or '>=' or empty
.... high I0..1QuantityHigh Range, if relevant
High range comparators can only be '<' or '<=' or empty
.... meaning 0..1CodeableConceptIndicates the meaning/use of this range of this range
Observation Reference Range Meaning Codes (Example)
.... age 0..1RangeApplicable age range, if relevant
.... text 0..1stringText based reference range in an observation
... derivedFrom Σ0..*AllergyIntolerance | Condition | FamilyMemberHistory | ImagingStudy | Immunization | MedicationStatement | Procedure | QuestionnaireAnswers | ObservationThe resource from which an observation is derived
... related Σ0..*ElementObservations related to this observation
.... type 0..1codehas-member | sequel-to | replaces | qualified-by | interfered-by
ObservationRelationshipType (Required)
.... target 1..1ObservationObservation that is related to this one
... component Σ0..*ElementComponent results
.... code Σ I1..1CodeableConceptType of component observation (code / type)
LOINC Codes (Example)
.... value[x] ΣActual component result
SNOMED CT Codes (Example)
..... valueQuantity0..1Quantity
..... valueCodeableConcept0..1CodeableConcept
..... valueString0..1string
..... valueRange0..1Range
..... valueRatio0..1Ratio
..... valueSampledData0..1SampledData
..... valueAttachment0..1Attachment
..... valueTime0..1time
..... valueDateTime0..1dateTime
..... valuePeriod0..1Period
.... dataAbsentReason I0..1CodeableConceptWhy the component result is missing
Observation Value Absent Reason (Extensible)
.... referenceRange 0..*see referenceRangeProvides guide for interpretation ofcomponent result

UML Diagram

Observation (DomainResource)Describes what was observed. Sometimes this is called the observation "name"code : CodeableConcept 1..1 « (Codes identifying types of simple observationsLOINC Codes) »Describes the general type of observation being made and is used to group or limit searching of observationscategory : CodeableConcept 0..1 « (Codes for diagnostic service sectionsDiagnostic Service Section Codes) »The information determined as a result of making the observation, if the information has a simple valuevalue[x] : Quantity|CodeableConcept|string|Range| Ratio|SampledData|Attachment|time| dateTime|Period 0..1 « (Codes identifying atomic results of observations when value is type codeableConceptSNOMED CT Codes) »Provides a reason why the expected value in the element Observation.value[x] is missingdataAbsentReason : CodeableConcept 0..1 « Codes specifying why the result (Observation.value[x]) is missingObservation Value Absent Reason+ »The assessment made based on the result of the observationinterpretation : CodeableConcept 0..1 « Codes identifying interpretations of observationsObservation Interpretation Codes+ »May include statements about significant, unexpected or unreliable values, or information about the source of the value where this may be relevant to the interpretation of the resultcomments : string 0..1The time or time-period the observed value is asserted as being true. For biological subjects - e.g. human patients - this is usually called the "physiologically relevant time". This is usually either the time of the procedure or of specimen collection, but very often the source of the date/time is not known, only the date/time itselfeffective[x] : dateTime|Period 0..1The date and time this observation was made availableissued : instant 0..1The status of the result value (this element modifies the meaning of other elements)status : code 1..1 « Codes providing the status of an observationObservationStatus »An estimate of the degree to which quality issues have impacted on the value reported (this element modifies the meaning of other elements)reliability : code 0..1 « Codes that provide an estimate of the degree to which quality issues have impacted on the value of an observationObservationReliability »Indicates the site on the subject's body where the observation was made ( i.e. the target site)bodySite[x] : CodeableConcept|Reference(BodySite) 0..1 « (Codes describing anatomical locations. May include lateralitySNOMED CT Body Structures) »Indicates the mechanism used to perform the observationmethod : CodeableConcept 0..1 « (Methods for simple observationsObservation Methods) »A unique identifier for the simple observationidentifier : Identifier 0..*The patient, or group of patients, location, or device whose characteristics (direct or indirect) are described by the observation and into whose record the observation is placed. Comments: Indirect characteristics may be those of a specimen, fetus, donor, other observer (for example a relative or EMT), or any observation made about the subjectsubject : Reference(Patient|Group|Device|Location) 0..1The specimen that was used when this observation was madespecimen : Reference(Specimen) 0..1Who was responsible for asserting the observed value as "true"performer : Reference(Practitioner|Organization| Patient|RelatedPerson) 0..*The device used to generate the observation datadevice : Reference(Device|DeviceMetric) 0..1The healthcare event ( e.g. a patient and healthcare provider interaction ) during which this observation is madeencounter : Reference(Encounter) 0..1A reference to a resource from which this observation value is derived. For example an Observation resource for a calculated anion gap or Apgar score Observation or a QuestionnaireAnswer resource for an Assessment Tool Observation.( 5/18/2015 EH: TODO need to get a specific example /use cases for example using something other than Observtion)derivedFrom : Reference(AllergyIntolerance|Condition| FamilyMemberHistory|ImagingStudy| Immunization|MedicationStatement| Procedure|QuestionnaireAnswers| Observation) 0..*ReferenceRangeThe value of the low bound of the reference range. If this element is omitted, the low bound of the reference range is assumed to be meaningless. (e.g. reference range is <2.3) If the low.comparator element is missing, it is assumed to be '>'low : Quantity 0..1The value of the high bound of the reference range. If this element is omitted, the high bound of the reference range is assumed to be meaningless. (e.g. reference range is > 5) If the low.comparator element is missing , it is assumed to be '<'high : Quantity 0..1Code for the meaning of the reference rangemeaning : CodeableConcept 0..1 « (Code for the meaning of a reference rangeObservation Reference Range Meaning Codes) »The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says soage : Range 0..1Text based reference range in an observation which may be used when a quantitative range is not appropriate for an observation. An example would be a reference value of "Negative" or a list or table of 'normals'text : string 0..1RelatedA code specifying the kind of relationship that exists with the target observationtype : code 0..1 « Codes specifying how two observations are relatedObservationRelationshipType »A reference to the observation that is related to this observationtarget : Reference(Observation) 1..1ComponentDescribes what was observed. Sometimes this is called the observation "code"code : CodeableConcept 1..1 « (Codes identifying types of simple observationsLOINC Codes) »The information determined as a result of making the observation, if the information has a simple valuevalue[x] : Quantity|CodeableConcept|string|Range| Ratio|SampledData|Attachment|time| dateTime|Period 0..1 « (Codes identifying atomic results of observations when value is type codeableConceptSNOMED CT Codes) »Provides a reason why the expected value in the element Observation.value[x] is missingdataAbsentReason : CodeableConcept 0..1 « Codes specifying why the result (Observation.value[x]) is missingObservation Value Absent Reason+ »Guidance on how to interpret the value by comparison to a normal or recommended rangereferenceRange0..*A reference to another observations whose relationship is defined by the relationship type coderelated0..*Guidance on how to interpret the value by comparison to a normal or recommended rangereferenceRange0..*Some observations have multiple component observations. These component observations are expressed as separate code value pairs that share the same attributes. Examples include systolic and diastolic component observations for blood pressure measurement and multiple component observations for for genetics observationscomponent0..*

XML Template

<Observation xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <code><!-- 1..1 CodeableConcept Type of observation (code / type) --></code>
 <category><!-- 0..1 CodeableConcept Classification of  type of observation --></category>
 <value[x]><!-- 0..1 Quantity|CodeableConcept|string|Range|Ratio|SampledData|
   Attachment|time|dateTime|Period Actual result --></value[x]>
 <dataAbsentReason><!-- ?? 0..1 CodeableConcept Why the result is missing --></dataAbsentReason>
 <interpretation><!-- 0..1 CodeableConcept High, low, normal, etc. --></interpretation>
 <comments value="[string]"/><!-- 0..1 Comments about result -->
 <effective[x]><!-- 0..1 dateTime|Period Clinically Relevant time/time-period for observation --></effective[x]>
 <issued value="[instant]"/><!-- 0..1 Date/Time this was made available -->
 <status value="[code]"/><!-- 1..1 registered | preliminary | final | amended + -->
 <reliability value="[code]"/><!-- 0..1 ok | ongoing | early | questionable | calibrating | error + -->
 <bodySite[x]><!-- 0..1 CodeableConcept|Reference(BodySite) Observed body part --></bodySite[x]>
 <method><!-- 0..1 CodeableConcept How it was done --></method>
 <identifier><!-- 0..* Identifier Unique Id for this particular observation --></identifier>
 <subject><!-- 0..1 Reference(Patient|Group|Device|Location) Who and/or what this is about --></subject>
 <specimen><!-- 0..1 Reference(Specimen) Specimen used for this observation --></specimen>
 <performer><!-- 0..* Reference(Practitioner|Organization|Patient|RelatedPerson) Who is responsible for the observation --></performer>
 <device><!-- 0..1 Reference(Device|DeviceMetric) (Measurement) Device --></device>
 <encounter><!-- 0..1 Reference(Encounter) Healthcare event during which this observation is made --></encounter>
 <referenceRange>  <!-- 0..* Provides guide for interpretation -->
  <low><!-- ?? 0..1 Quantity Low Range, if relevant --></low>
  <high><!-- ?? 0..1 Quantity High Range, if relevant --></high>
  <meaning><!-- 0..1 CodeableConcept Indicates the meaning/use of this range of this range --></meaning>
  <age><!-- 0..1 Range Applicable age range, if relevant --></age>
  <text value="[string]"/><!-- 0..1 Text based reference range in an observation -->
 </referenceRange>
 <derivedFrom><!-- 0..* Reference(AllergyIntolerance|Condition|
   FamilyMemberHistory|ImagingStudy|Immunization|MedicationStatement|Procedure|
   QuestionnaireAnswers|Observation) The resource from which an observation is derived --></derivedFrom>
 <related>  <!-- 0..* Observations related to this observation -->
  <type value="[code]"/><!-- 0..1 has-member | sequel-to | replaces | qualified-by | interfered-by -->
  <target><!-- 1..1 Reference(Observation) Observation that is related to this one --></target>
 </related>
 <component>  <!-- 0..* Component results -->
  <code><!-- ?? 1..1 CodeableConcept Type of component observation (code / type) --></code>
  <value[x]><!-- 0..1 Quantity|CodeableConcept|string|Range|Ratio|SampledData|
    Attachment|time|dateTime|Period Actual component result --></value[x]>
  <dataAbsentReason><!-- ?? 0..1 CodeableConcept Why the component result is missing --></dataAbsentReason>
  <referenceRange><!-- 0..* Content as for Observation.referenceRange Provides guide for interpretation ofcomponent result --></referenceRange>
 </component>
</Observation>

JSON Template

{doco
  "resourceType" : "Observation",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "code" : { CodeableConcept }, // R!  Type of observation (code / type)
  "category" : { CodeableConcept }, // Classification of  type of observation
  // value[x]: Actual result. One of these 10:
  "valueQuantity" : { Quantity },
  "valueCodeableConcept" : { CodeableConcept },
  "valueString" : "<string>",
  "valueRange" : { Range },
  "valueRatio" : { Ratio },
  "valueSampledData" : { SampledData },
  "valueAttachment" : { Attachment },
  "valueTime" : "<time>",
  "valueDateTime" : "<dateTime>",
  "valuePeriod" : { Period },
  "dataAbsentReason" : { CodeableConcept }, // C? Why the result is missing
  "interpretation" : { CodeableConcept }, // High, low, normal, etc.
  "comments" : "<string>", // Comments about result
  // effective[x]: Clinically Relevant time/time-period for observation. One of these 2:
  "effectiveDateTime" : "<dateTime>",
  "effectivePeriod" : { Period },
  "issued" : "<instant>", // Date/Time this was made available
  "status" : "<code>", // R!  registered | preliminary | final | amended +
  "reliability" : "<code>", // ok | ongoing | early | questionable | calibrating | error +
  // bodySite[x]: Observed body part. One of these 2:
  "bodySiteCodeableConcept" : { CodeableConcept },
  "bodySiteReference" : { Reference(BodySite) },
  "method" : { CodeableConcept }, // How it was done
  "identifier" : [{ Identifier }], // Unique Id for this particular observation
  "subject" : { Reference(Patient|Group|Device|Location) }, // Who and/or what this is about
  "specimen" : { Reference(Specimen) }, // Specimen used for this observation
  "performer" : [{ Reference(Practitioner|Organization|Patient|RelatedPerson) }], // Who is responsible for the observation
  "device" : { Reference(Device|DeviceMetric) }, // (Measurement) Device
  "encounter" : { Reference(Encounter) }, // Healthcare event during which this observation is made
  "referenceRange" : [{ // Provides guide for interpretation
    "low" : { Quantity }, // C? Low Range, if relevant
    "high" : { Quantity }, // C? High Range, if relevant
    "meaning" : { CodeableConcept }, // Indicates the meaning/use of this range of this range
    "age" : { Range }, // Applicable age range, if relevant
    "text" : "<string>" // Text based reference range in an observation
  }],
  "derivedFrom" : [{ Reference(AllergyIntolerance|Condition|
   FamilyMemberHistory|ImagingStudy|Immunization|MedicationStatement|Procedure|
   QuestionnaireAnswers|Observation) }], // The resource from which an observation is derived
  "related" : [{ // Observations related to this observation
    "type" : "<code>", // has-member | sequel-to | replaces | qualified-by | interfered-by
    "target" : { Reference(Observation) } // R!  Observation that is related to this one
  }],
  "component" : [{ // Component results
    "code" : { CodeableConcept }, // C? R!  Type of component observation (code / type)
    // value[x]: Actual component result. One of these 10:
    "valueQuantity" : { Quantity },
    "valueCodeableConcept" : { CodeableConcept },
    "valueString" : "<string>",
    "valueRange" : { Range },
    "valueRatio" : { Ratio },
    "valueSampledData" : { SampledData },
    "valueAttachment" : { Attachment },
    "valueTime" : "<time>",
    "valueDateTime" : "<dateTime>",
    "valuePeriod" : { Period },
    "dataAbsentReason" : { CodeableConcept }, // C? Why the component result is missing
    "referenceRange" : [{ Content as for Observation.referenceRange }] // Provides guide for interpretation ofcomponent result
  }]
}

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation IDomainResourceMeasurements and simple assertions
Component code Shall not be same as observation code
Shall only be present if Observation.value[x] is not present
... code Σ1..1CodeableConceptType of observation (code / type)
LOINC Codes (Example)
... category 0..1CodeableConceptClassification of type of observation
Diagnostic Service Section Codes (Example)
... value[x] ΣActual result
SNOMED CT Codes (Example)
.... valueQuantity0..1Quantity
.... valueCodeableConcept0..1CodeableConcept
.... valueString0..1string
.... valueRange0..1Range
.... valueRatio0..1Ratio
.... valueSampledData0..1SampledData
.... valueAttachment0..1Attachment
.... valueTime0..1time
.... valueDateTime0..1dateTime
.... valuePeriod0..1Period
... dataAbsentReason I0..1CodeableConceptWhy the result is missing
Observation Value Absent Reason (Extensible)
... interpretation 0..1CodeableConceptHigh, low, normal, etc.
Observation Interpretation Codes (Extensible)
... comments 0..1stringComments about result
... effective[x] ΣClinically Relevant time/time-period for observation
.... effectiveDateTime0..1dateTime
.... effectivePeriod0..1Period
... issued Σ0..1instantDate/Time this was made available
... status ?! Σ1..1coderegistered | preliminary | final | amended +
ObservationStatus (Required)
... reliability ?!0..1codeok | ongoing | early | questionable | calibrating | error +
ObservationReliability (Required)
... bodySite[x] Observed body part
SNOMED CT Body Structures (Example)
.... bodySiteCodeableConcept0..1CodeableConcept
.... bodySiteReference0..1BodySite
... method 0..1CodeableConceptHow it was done
Observation Methods (Example)
... identifier 0..*IdentifierUnique Id for this particular observation
... subject Σ0..1Patient | Group | Device | LocationWho and/or what this is about
... specimen 0..1SpecimenSpecimen used for this observation
... performer Σ0..*Practitioner | Organization | Patient | RelatedPersonWho is responsible for the observation
... device 0..1Device | DeviceMetric(Measurement) Device
... encounter 0..1EncounterHealthcare event during which this observation is made
... referenceRange I0..*ElementProvides guide for interpretation
Must have at least a low or a high or text
.... low I0..1QuantityLow Range, if relevant
Low range comparators can only be '>' or '>=' or empty
.... high I0..1QuantityHigh Range, if relevant
High range comparators can only be '<' or '<=' or empty
.... meaning 0..1CodeableConceptIndicates the meaning/use of this range of this range
Observation Reference Range Meaning Codes (Example)
.... age 0..1RangeApplicable age range, if relevant
.... text 0..1stringText based reference range in an observation
... derivedFrom Σ0..*AllergyIntolerance | Condition | FamilyMemberHistory | ImagingStudy | Immunization | MedicationStatement | Procedure | QuestionnaireAnswers | ObservationThe resource from which an observation is derived
... related Σ0..*ElementObservations related to this observation
.... type 0..1codehas-member | sequel-to | replaces | qualified-by | interfered-by
ObservationRelationshipType (Required)
.... target 1..1ObservationObservation that is related to this one
... component Σ0..*ElementComponent results
.... code Σ I1..1CodeableConceptType of component observation (code / type)
LOINC Codes (Example)
.... value[x] ΣActual component result
SNOMED CT Codes (Example)
..... valueQuantity0..1Quantity
..... valueCodeableConcept0..1CodeableConcept
..... valueString0..1string
..... valueRange0..1Range
..... valueRatio0..1Ratio
..... valueSampledData0..1SampledData
..... valueAttachment0..1Attachment
..... valueTime0..1time
..... valueDateTime0..1dateTime
..... valuePeriod0..1Period
.... dataAbsentReason I0..1CodeableConceptWhy the component result is missing
Observation Value Absent Reason (Extensible)
.... referenceRange 0..*see referenceRangeProvides guide for interpretation ofcomponent result

UML Diagram

Observation (DomainResource)Describes what was observed. Sometimes this is called the observation "name"code : CodeableConcept 1..1 « (Codes identifying types of simple observationsLOINC Codes) »Describes the general type of observation being made and is used to group or limit searching of observationscategory : CodeableConcept 0..1 « (Codes for diagnostic service sectionsDiagnostic Service Section Codes) »The information determined as a result of making the observation, if the information has a simple valuevalue[x] : Quantity|CodeableConcept|string|Range| Ratio|SampledData|Attachment|time| dateTime|Period 0..1 « (Codes identifying atomic results of observations when value is type codeableConceptSNOMED CT Codes) »Provides a reason why the expected value in the element Observation.value[x] is missingdataAbsentReason : CodeableConcept 0..1 « Codes specifying why the result (Observation.value[x]) is missingObservation Value Absent Reason+ »The assessment made based on the result of the observationinterpretation : CodeableConcept 0..1 « Codes identifying interpretations of observationsObservation Interpretation Codes+ »May include statements about significant, unexpected or unreliable values, or information about the source of the value where this may be relevant to the interpretation of the resultcomments : string 0..1The time or time-period the observed value is asserted as being true. For biological subjects - e.g. human patients - this is usually called the "physiologically relevant time". This is usually either the time of the procedure or of specimen collection, but very often the source of the date/time is not known, only the date/time itselfeffective[x] : dateTime|Period 0..1The date and time this observation was made availableissued : instant 0..1The status of the result value (this element modifies the meaning of other elements)status : code 1..1 « Codes providing the status of an observationObservationStatus »An estimate of the degree to which quality issues have impacted on the value reported (this element modifies the meaning of other elements)reliability : code 0..1 « Codes that provide an estimate of the degree to which quality issues have impacted on the value of an observationObservationReliability »Indicates the site on the subject's body where the observation was made ( i.e. the target site)bodySite[x] : CodeableConcept|Reference(BodySite) 0..1 « (Codes describing anatomical locations. May include lateralitySNOMED CT Body Structures) »Indicates the mechanism used to perform the observationmethod : CodeableConcept 0..1 « (Methods for simple observationsObservation Methods) »A unique identifier for the simple observationidentifier : Identifier 0..*The patient, or group of patients, location, or device whose characteristics (direct or indirect) are described by the observation and into whose record the observation is placed. Comments: Indirect characteristics may be those of a specimen, fetus, donor, other observer (for example a relative or EMT), or any observation made about the subjectsubject : Reference(Patient|Group|Device|Location) 0..1The specimen that was used when this observation was madespecimen : Reference(Specimen) 0..1Who was responsible for asserting the observed value as "true"performer : Reference(Practitioner|Organization| Patient|RelatedPerson) 0..*The device used to generate the observation datadevice : Reference(Device|DeviceMetric) 0..1The healthcare event ( e.g. a patient and healthcare provider interaction ) during which this observation is madeencounter : Reference(Encounter) 0..1A reference to a resource from which this observation value is derived. For example an Observation resource for a calculated anion gap or Apgar score Observation or a QuestionnaireAnswer resource for an Assessment Tool Observation.( 5/18/2015 EH: TODO need to get a specific example /use cases for example using something other than Observtion)derivedFrom : Reference(AllergyIntolerance|Condition| FamilyMemberHistory|ImagingStudy| Immunization|MedicationStatement| Procedure|QuestionnaireAnswers| Observation) 0..*ReferenceRangeThe value of the low bound of the reference range. If this element is omitted, the low bound of the reference range is assumed to be meaningless. (e.g. reference range is <2.3) If the low.comparator element is missing, it is assumed to be '>'low : Quantity 0..1The value of the high bound of the reference range. If this element is omitted, the high bound of the reference range is assumed to be meaningless. (e.g. reference range is > 5) If the low.comparator element is missing , it is assumed to be '<'high : Quantity 0..1Code for the meaning of the reference rangemeaning : CodeableConcept 0..1 « (Code for the meaning of a reference rangeObservation Reference Range Meaning Codes) »The age at which this reference range is applicable. This is a neonatal age (e.g. number of weeks at term) if the meaning says soage : Range 0..1Text based reference range in an observation which may be used when a quantitative range is not appropriate for an observation. An example would be a reference value of "Negative" or a list or table of 'normals'text : string 0..1RelatedA code specifying the kind of relationship that exists with the target observationtype : code 0..1 « Codes specifying how two observations are relatedObservationRelationshipType »A reference to the observation that is related to this observationtarget : Reference(Observation) 1..1ComponentDescribes what was observed. Sometimes this is called the observation "code"code : CodeableConcept 1..1 « (Codes identifying types of simple observationsLOINC Codes) »The information determined as a result of making the observation, if the information has a simple valuevalue[x] : Quantity|CodeableConcept|string|Range| Ratio|SampledData|Attachment|time| dateTime|Period 0..1 « (Codes identifying atomic results of observations when value is type codeableConceptSNOMED CT Codes) »Provides a reason why the expected value in the element Observation.value[x] is missingdataAbsentReason : CodeableConcept 0..1 « Codes specifying why the result (Observation.value[x]) is missingObservation Value Absent Reason+ »Guidance on how to interpret the value by comparison to a normal or recommended rangereferenceRange0..*A reference to another observations whose relationship is defined by the relationship type coderelated0..*Guidance on how to interpret the value by comparison to a normal or recommended rangereferenceRange0..*Some observations have multiple component observations. These component observations are expressed as separate code value pairs that share the same attributes. Examples include systolic and diastolic component observations for blood pressure measurement and multiple component observations for for genetics observationscomponent0..*

XML Template

<Observation xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <code><!-- 1..1 CodeableConcept Type of observation (code / type) --></code>
 <category><!-- 0..1 CodeableConcept Classification of  type of observation --></category>
 <value[x]><!-- 0..1 Quantity|CodeableConcept|string|Range|Ratio|SampledData|
   Attachment|time|dateTime|Period Actual result --></value[x]>
 <dataAbsentReason><!-- ?? 0..1 CodeableConcept Why the result is missing --></dataAbsentReason>
 <interpretation><!-- 0..1 CodeableConcept High, low, normal, etc. --></interpretation>
 <comments value="[string]"/><!-- 0..1 Comments about result -->
 <effective[x]><!-- 0..1 dateTime|Period Clinically Relevant time/time-period for observation --></effective[x]>
 <issued value="[instant]"/><!-- 0..1 Date/Time this was made available -->
 <status value="[code]"/><!-- 1..1 registered | preliminary | final | amended + -->
 <reliability value="[code]"/><!-- 0..1 ok | ongoing | early | questionable | calibrating | error + -->
 <bodySite[x]><!-- 0..1 CodeableConcept|Reference(BodySite) Observed body part --></bodySite[x]>
 <method><!-- 0..1 CodeableConcept How it was done --></method>
 <identifier><!-- 0..* Identifier Unique Id for this particular observation --></identifier>
 <subject><!-- 0..1 Reference(Patient|Group|Device|Location) Who and/or what this is about --></subject>
 <specimen><!-- 0..1 Reference(Specimen) Specimen used for this observation --></specimen>
 <performer><!-- 0..* Reference(Practitioner|Organization|Patient|RelatedPerson) Who is responsible for the observation --></performer>
 <device><!-- 0..1 Reference(Device|DeviceMetric) (Measurement) Device --></device>
 <encounter><!-- 0..1 Reference(Encounter) Healthcare event during which this observation is made --></encounter>
 <referenceRange>  <!-- 0..* Provides guide for interpretation -->
  <low><!-- ?? 0..1 Quantity Low Range, if relevant --></low>
  <high><!-- ?? 0..1 Quantity High Range, if relevant --></high>
  <meaning><!-- 0..1 CodeableConcept Indicates the meaning/use of this range of this range --></meaning>
  <age><!-- 0..1 Range Applicable age range, if relevant --></age>
  <text value="[string]"/><!-- 0..1 Text based reference range in an observation -->
 </referenceRange>
 <derivedFrom><!-- 0..* Reference(AllergyIntolerance|Condition|
   FamilyMemberHistory|ImagingStudy|Immunization|MedicationStatement|Procedure|
   QuestionnaireAnswers|Observation) The resource from which an observation is derived --></derivedFrom>
 <related>  <!-- 0..* Observations related to this observation -->
  <type value="[code]"/><!-- 0..1 has-member | sequel-to | replaces | qualified-by | interfered-by -->
  <target><!-- 1..1 Reference(Observation) Observation that is related to this one --></target>
 </related>
 <component>  <!-- 0..* Component results -->
  <code><!-- ?? 1..1 CodeableConcept Type of component observation (code / type) --></code>
  <value[x]><!-- 0..1 Quantity|CodeableConcept|string|Range|Ratio|SampledData|
    Attachment|time|dateTime|Period Actual component result --></value[x]>
  <dataAbsentReason><!-- ?? 0..1 CodeableConcept Why the component result is missing --></dataAbsentReason>
  <referenceRange><!-- 0..* Content as for Observation.referenceRange Provides guide for interpretation ofcomponent result --></referenceRange>
 </component>
</Observation>

JSON Template

{doco
  "resourceType" : "Observation",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "code" : { CodeableConcept }, // R!  Type of observation (code / type)
  "category" : { CodeableConcept }, // Classification of  type of observation
  // value[x]: Actual result. One of these 10:
  "valueQuantity" : { Quantity },
  "valueCodeableConcept" : { CodeableConcept },
  "valueString" : "<string>",
  "valueRange" : { Range },
  "valueRatio" : { Ratio },
  "valueSampledData" : { SampledData },
  "valueAttachment" : { Attachment },
  "valueTime" : "<time>",
  "valueDateTime" : "<dateTime>",
  "valuePeriod" : { Period },
  "dataAbsentReason" : { CodeableConcept }, // C? Why the result is missing
  "interpretation" : { CodeableConcept }, // High, low, normal, etc.
  "comments" : "<string>", // Comments about result
  // effective[x]: Clinically Relevant time/time-period for observation. One of these 2:
  "effectiveDateTime" : "<dateTime>",
  "effectivePeriod" : { Period },
  "issued" : "<instant>", // Date/Time this was made available
  "status" : "<code>", // R!  registered | preliminary | final | amended +
  "reliability" : "<code>", // ok | ongoing | early | questionable | calibrating | error +
  // bodySite[x]: Observed body part. One of these 2:
  "bodySiteCodeableConcept" : { CodeableConcept },
  "bodySiteReference" : { Reference(BodySite) },
  "method" : { CodeableConcept }, // How it was done
  "identifier" : [{ Identifier }], // Unique Id for this particular observation
  "subject" : { Reference(Patient|Group|Device|Location) }, // Who and/or what this is about
  "specimen" : { Reference(Specimen) }, // Specimen used for this observation
  "performer" : [{ Reference(Practitioner|Organization|Patient|RelatedPerson) }], // Who is responsible for the observation
  "device" : { Reference(Device|DeviceMetric) }, // (Measurement) Device
  "encounter" : { Reference(Encounter) }, // Healthcare event during which this observation is made
  "referenceRange" : [{ // Provides guide for interpretation
    "low" : { Quantity }, // C? Low Range, if relevant
    "high" : { Quantity }, // C? High Range, if relevant
    "meaning" : { CodeableConcept }, // Indicates the meaning/use of this range of this range
    "age" : { Range }, // Applicable age range, if relevant
    "text" : "<string>" // Text based reference range in an observation
  }],
  "derivedFrom" : [{ Reference(AllergyIntolerance|Condition|
   FamilyMemberHistory|ImagingStudy|Immunization|MedicationStatement|Procedure|
   QuestionnaireAnswers|Observation) }], // The resource from which an observation is derived
  "related" : [{ // Observations related to this observation
    "type" : "<code>", // has-member | sequel-to | replaces | qualified-by | interfered-by
    "target" : { Reference(Observation) } // R!  Observation that is related to this one
  }],
  "component" : [{ // Component results
    "code" : { CodeableConcept }, // C? R!  Type of component observation (code / type)
    // value[x]: Actual component result. One of these 10:
    "valueQuantity" : { Quantity },
    "valueCodeableConcept" : { CodeableConcept },
    "valueString" : "<string>",
    "valueRange" : { Range },
    "valueRatio" : { Ratio },
    "valueSampledData" : { SampledData },
    "valueAttachment" : { Attachment },
    "valueTime" : "<time>",
    "valueDateTime" : "<dateTime>",
    "valuePeriod" : { Period },
    "dataAbsentReason" : { CodeableConcept }, // C? Why the component result is missing
    "referenceRange" : [{ Content as for Observation.referenceRange }] // Provides guide for interpretation ofcomponent result
  }]
}

 

Alternate definitions: Schema/Schematron, Resource Profile (XML, JSON)

4.20.3.1 Terminology Bindings

PathDefinitionTypeReference
Observation.code
Observation.component.code
Codes identifying types of simple observationsExamplehttp://hl7.org/fhir/vs/observation-codes
Observation.category Codes for diagnostic service sectionsExamplehttp://hl7.org/fhir/vs/diagnostic-service-sections
Observation.value[x]
Observation.component.value[x]
Codes identifying atomic results of observations when value is type codeableConceptExamplehttp://hl7.org/fhir/vs/observation-values
Observation.dataAbsentReason
Observation.component.dataAbsentReason
Codes specifying why the result (Observation.value[x]) is missingExtensiblehttp://hl7.org/fhir/vs/observation-valueabsentreason
Observation.interpretation Codes identifying interpretations of observationsExtensiblehttp://hl7.org/fhir/vs/observation-interpretation
Observation.status Codes providing the status of an observationRequiredhttp://hl7.org/fhir/observation-status
Observation.reliability Codes that provide an estimate of the degree to which quality issues have impacted on the value of an observationRequiredhttp://hl7.org/fhir/observation-reliability
Observation.bodySite[x] Codes describing anatomical locations. May include lateralityExamplehttp://hl7.org/fhir/vs/body-site
Observation.method Methods for simple observationsExamplehttp://hl7.org/fhir/vs/observation-methods
Observation.referenceRange.meaning Code for the meaning of a reference rangeExamplehttp://hl7.org/fhir/vs/referencerange-meaning
Observation.related.type Codes specifying how two observations are relatedRequiredhttp://hl7.org/fhir/observation-relationshiptypes

4.20.3.2 Constraints

  • obs-3: On Observation.referenceRange: Must have at least a low or a high or text (xpath on f:Observation/f:referenceRange: (exists(f:low) or exists(f:high)or exists(f:text)))
  • obs-4: On Observation.referenceRange.low: Low range comparators can only be '>' or '>=' or empty (xpath on f:Observation/f:referenceRange/f:low: not(exists(f:comparator)) or boolean(f:comparator/@value = '<') or boolean(f:comparator/@value = '<='))
  • obs-5: On Observation.referenceRange.high: High range comparators can only be '<' or '<=' or empty (xpath on f:Observation/f:referenceRange/f:high: not(exists(f:comparator)) or boolean(f:comparator/@value = '>') or boolean(f:comparator/@value = '>='))
  • obs-6: Shall only be present if Observation.value[x] is not present (xpath: not(exists(f:dataAbsentReason)) or (not(exists(*[starts-with(local-name(.), 'value')]))))
  • obs-7: Component code Shall not be same as observation code (xpath: f:code/@value != f:component.code/@value)

4.20.4 Notes:

  • The element, Observation.value[x], has a variable name depending on the type as follows:
    • valueQuantity
    • valueCodeableConcept
    • valueAttachment
    • valueRatio
    • valuePeriod
    • valueSampledData
    • valueString
  • The appliesDateTime or appliesPeriod is the time that the observation is most relevant as an observation of the subject. For a biological subject (e.g. a human patient), this is the physiologically relevant time of the observation. In the case of an observation using a specimen, this represents the start and end of the specimen collection (e.g. 24 hour Urine Sodium), but if the collection time is sufficiently short, this is reported as a point in time value (e.g. normal venepuncture). In the case of an observation obtained directly from a subject (e.g., BP, Chest X-ray), this is the start and end time of the observation process, which again, is often reported as a single point in time.
  • At its simplest, resource instances can consist of only a type and a value, with a reliability and status flag. The relevance of other properties will vary based on the type of observation. Reference ranges may be useful for lab tests and other measures like systolic blood pressure, but will have little relevance for something like "pregnancy status"
  • Most observations only have one generic reference range. Systems MAY choose to restrict to only supplying the relevant reference range based on knowledge about the patient (e.g. specific to the patient's age, gender, weight and other factors), but this may not be possible or appropriate. Whenever more than one reference range is supplied, the differences between them SHOULD be provided in the reference range and/or age properties
  • Profiles will be created to provide guidance on capturing certain types of simple observations. This resource focuses on the level of detail captured by most systems. However, any "simple" observation can easily be broken into numerous components and sub-components to provide additional information relevant in certain circumstances. As with other resources, extensions can be used to introduce this additional complexity.
  • Because there are multiple types allowed for the value element, multiple value search parameters are defined. There is no standard parameter for searching values of type Attachment, or Ratio

4.20.5 Search Parameters

Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.

NameTypeDescriptionPaths
categorytokenThe classification of the type of observationObservation.category
codetokenThe code of the observation typeObservation.code
code-value-[x]compositeBoth code and one of the value parameters
component-codetokenThe component code of the observation typeObservation.component.code
component-code-value-[x]compositeBoth component code and one of the component value parameters
component-data-absent-reasontokenThe reason why the expected value in the element Observation.component.value[x] is missing.Observation.component.dataAbsentReason
component-value-concepttokenThe value of the component observation, if the value is a CodeableConceptObservation.component.valueCodeableConcept
component-value-quantityquantityThe value of the component observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data)Observation.component.valueQuantity
component-value-stringstringThe value of the component observation, if the value is a string, and also searches in CodeableConcept.textObservation.component.valueString
data-absent-reasontokenThe reason why the expected value in the element Observation.value[x] is missing.Observation.dataAbsentReason
datedateObtained date/time. If the obtained element is a period, a date that falls in the periodObservation.effective[x]
devicereferenceThe Device that generated the observation data.Observation.device
(Device, DeviceMetric)
encounterreferenceHealthcare event related to the observationObservation.encounter
(Encounter)
identifiertokenThe unique Id for a particular observationObservation.identifier
patientreferenceThe subject that the observation is about (if patient)Observation.subject
(Patient)
performerreferenceWho performed the observationObservation.performer
(Practitioner, Organization, Patient, RelatedPerson)
relatedcompositeRelated Observations - search on related-type and related-target together
related-targetreferenceObservation that is related to this oneObservation.related.target
(Observation)
related-typetokenhas-member | sequel-to | replaces | qualified-by | interfered-byObservation.related.type
reliabilitytokenThe reliability of the observationObservation.reliability
specimenreferenceSpecimen used for this observationObservation.specimen
(Specimen)
statustokenThe status of the observationObservation.status
subjectreferenceThe subject that the observation is aboutObservation.subject
(Group, Device, Patient, Location)
value-concepttokenThe value of the observation, if the value is a CodeableConceptObservation.valueCodeableConcept
value-datedateThe value of the observation, if the value is a date or period of timeObservation.valueDateTime, Observation.valuePeriod
value-quantityquantityThe value of the observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data)Observation.valueQuantity
value-stringstringThe value of the observation, if the value is a string, and also searches in CodeableConcept.textObservation.valueString