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-vitalsigns

This profile sets minimum expectations for the Observation resource to record, search and fetch vital signs 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 VitalSigns profile:

  • Query for vital signs of a particular patient
  • Record vital signs of a particular 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 Observation must have:

  1. a status
  2. a category code of ‘vital-signs’
  3. a LOINC code which tells you what is being measured and is taken from the “LOINC Code” column in the table below.
  4. a patient
  5. a time indicating when the measurement was taken
  6. a numeric result value and standard UCUM unit which is taken from the “LOINC Code” column in the table below.
    • note: if there is no numeric result then you have to supply a reason

Profile specific implementation guidance:

  • This table represents a minimum set of vital sign concepts, the required LOINC codes, and UCUM units of measure codes used for representing vitals signs observations (See the General Guidance Section for further guidance on using UCUM). These are extensible bindings and require that when a system support of any of these vital signs concepts, they must represent them using these codes. In addition, if you have a blood pressure observation, you must have both a systolic and a diastolic component, though one or both may have dataAbsentReason instead of a value.

  • Alternate codes may be provided in addition to the standard LOINC and UCUM codes defined here. For exsample, if a more specific code is recorded (method specific LOINC Codes, SNOMED CT concepts, system specific codes), both code listed below and the more specific code must be sent. The examples illustrate using other codes as translations.

  • Other profiles may make rules about which vital sign must be present or must be present as part of a panel.


Vital Sign Name LOINC Code LOINC Name and Comments UCUM Unit Code
Vital Signs Panel 8716-3 Vital signs - This is the top-level grouping structure for a set of vital signs. It has no value in Observation.valueQuantity ; instead, it just includes related links (with type=has-member) to the Observations in this set (e.g. respiratory rate, heart rate, BP). Note that querying for the panel may miss individual results that are not part of an actual panel. -
Respiratory Rate 9279-1 Respiratory Rate /min
Heart rate 8867-4 Heart rate /min
Oxygen saturation 59408-5 Oxygen saturation in Arterial blood by Pulse oximetry - This LOINC replaces the deprecated code 2710-2 Deprecated Oxygen saturation in Capillary blood by Oximetry which had been listed in C-CDA. %
Body temperature 8310-5 Body temperature Cel, [degF]
Body height 8302-2 Body height cm, [in_i]
Body length 8306-3 Body height --lying - Like height, but lying down, typically this is used for infants cm, [in_i]
Head circumference 8287-5 Head Occipital-frontal circumference by Tape measure cm, [in_i]
Body weight 29463-7 Body weight g, kg,[lb_av]
Body mass index 39156-5 Body mass index (BMI) [Ratio] kg/m2
Blood pressure systolic and diastolic 55284-4 Blood pressure systolic and diastolic - This is a grouping structure. It has no value in Observation.valueQuantity but contains at least one component (systolic and/or diastolic). -
Systolic blood pressure 8480-6 Systolic blood pressure - Observation.component code for a blood pressure Observation mm[Hg]
Diastolic blood pressure 8462-4 Diastolic blood pressure - Observation.component code for a blood pressure Observation mm[Hg]

Examples

D.4.1.1 Formal Views of Profile Content

The official URL for this profile is:

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

This profile builds on Observation.

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 Observation.statuswhich has an extensible binding to:
  2. One category in Observation.category which must have:
    • a fixed Observation.category.coding.system=”http://hl7.org/fhir/observation-category”
    • a fixed Observation.category.coding.code=“vital-signs”
  3. A code in Observation.code
  4. One patient in Observation.subject
  5. A date and time in effectiveDateTime or effectivePeriod
  6. Either one Observation.valueQuantity or, if there is no value, one code in Observation.DataAbsentReason
  7. When using component observations (Note: See the comments regarding blood pressure in the table above)
    1. one or more Observation.component.code each of which must have:
    2. Either one Observation.component.valueQuantity or, if there is no value, one code in Observation.component.DataAbsentReason
      • Each Observation.component.valueQuantity must have:
        • One numeric value in Observation.component.valueQuantity.value
        • a fixed Observation.component.valueQuantity.system=“http://unitsofmeasure.org
        • a UCUM unit code in Observation.component.valueQuantity.code which has an extensible binding to:
      • Observation.component.DataAbsentReason is bound to Observation Value Absent Reason value set.
  8. When using related observations, one or more reference to Observations in Observation.related.target
    • a fixed Observation.related.type=“has-member”
NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation I0..*Argonaut Vital Signs Observation Profile
arg-2: If there is no component or related element then either a value[x] or a data absent reason must be present
... status S1..1codeBinding: ObservationStatus (required)
... category S1..1CodeableConceptRequired Pattern: {"coding":[{"system":"http://hl7.org/fhir/observation-category","code":"vital-signs"}]}
... code S1..1CodeableConceptCoded Responses from C-CDA Vital Sign Results
Binding: Argonaut Vital Sign Codes (extensible)
... subject S1..1Reference(Argonaut Patient Profile)
... effective[x] SI1..1dateTime, PeriodOften just a dateTime for Vital Signs
arg-1: Datetime must be at least to day.
... valueQuantity SI0..1QuantityVital Sign Value recorded with UCUM
Binding: Argonaut Vital Signs Units (extensible)
.... value S1..1decimal
.... unit S1..1string
.... system S1..1uriFixed Value: http://unitsofmeasure.org
.... code S1..1codeCoded responses from the common UCUM units for vital signs value set.
... dataAbsentReason SI0..1CodeableConceptBinding: Observation Value Absent Reason (extensible)
... related S0..*BackboneElementUsed when reporting systolic and diastolic blood pressure.
.... type S1..1codeFixed Value: has-member
.... target S1..1Reference(Argonaut Vital Signs Observation Profile)
... component SI0..*BackboneElementUsed when reporting systolic and diastolic blood pressure.
arg-3: If there is no a value a data absent reason must be present
.... code S1..1CodeableConceptBinding: Argonaut Vital Sign Codes (extensible)
.... valueQuantity SI0..1QuantityVital Sign Value recorded with UCUM
Binding: Argonaut Vital Signs Units (extensible)
..... value S1..1decimal
..... unit S1..1string
..... system S1..1uriFixed Value: http://unitsofmeasure.org
..... code S1..1codeCoded responses from the common UCUM units for vital signs value set.
.... dataAbsentReason SI0..1CodeableConceptBinding: Observation Value Absent Reason (extensible)

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation I0..*Argonaut Vital Signs Observation Profile
obs-6: SHALL only be present if Observation.value[x] is not present
obs-7: Component code SHALL not be same as observation code
arg-2: If there is no component or related element then either a value[x] or a data absent reason must be present
... 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..*IdentifierUnique Id for this particular observation
... status ?!S1..1coderegistered | preliminary | final | amended +
Binding: ObservationStatus (required)
... category S1..1CodeableConceptClassification of type of observation
Binding: Observation Category Codes (example)
Required Pattern: {"coding":[{"system":"http://hl7.org/fhir/observation-category","code":"vital-signs"}]}
... code S1..1CodeableConceptCoded Responses from C-CDA Vital Sign Results
Binding: Argonaut Vital Sign Codes (extensible)
... subject S1..1Reference(Argonaut Patient Profile)Who and/or what this is about
... encounter 0..1Reference(Encounter)Healthcare event during which this observation is made
... effective[x] SI1..1dateTime, PeriodOften just a dateTime for Vital Signs
arg-1: Datetime must be at least to day.
... issued Σ0..1instantDate/Time this was made available
... performer Σ0..*Reference(Practitioner), Reference(Organization), Reference(Patient), Reference(RelatedPerson)Who is responsible for the observation
... valueQuantity S0..1QuantityVital Sign Value recorded with UCUM
Binding: Argonaut Vital Signs Units (extensible)
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... value S1..1decimalNumerical value (with implicit precision)
.... comparator ?!Σ0..1code< | <= | >= | > - how to understand the value
Binding: QuantityComparator (required)
.... unit S1..1stringUnit representation
.... system SI1..1uriSystem that defines coded unit form
Fixed Value: http://unitsofmeasure.org
.... code S1..1codeCoded responses from the common UCUM units for vital signs value set.
... dataAbsentReason SI0..1CodeableConceptWhy the result is missing
Binding: Observation Value Absent Reason (extensible)
... interpretation 0..1CodeableConceptHigh, low, normal, etc.
Binding: Observation Interpretation Codes (extensible)
... comments 0..1stringComments about result
... bodySite 0..1CodeableConceptObserved body part
Binding: SNOMED CT Body Structures (example)
... method 0..1CodeableConceptHow it was done
Binding: Observation Methods (example)
... specimen 0..1Reference(Specimen)Specimen used for this observation
... device 0..1Reference(Device), Reference(DeviceMetric)(Measurement) Device
... referenceRange I0..*BackboneElementProvides guide for interpretation
obs-3: Must have at least a low or a high or text
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
.... low I0..1SimpleQuantityLow Range, if relevant
.... high I0..1SimpleQuantityHigh Range, if relevant
.... meaning 0..1CodeableConceptIndicates the meaning/use of this range of this range
Binding: Observation Reference Range Meaning Codes (example)
.... age 0..1RangeApplicable age range, if relevant
.... text 0..1stringText based reference range in an observation
... related S0..*BackboneElementUsed when reporting systolic and diastolic blood pressure.
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
.... type S1..1codehas-member | derived-from | sequel-to | replaces | qualified-by | interfered-by
Binding: ObservationRelationshipType (required)
Fixed Value: has-member
.... target S1..1Reference(Argonaut Vital Signs Observation Profile)Resource that is related to this one
... component SI0..*BackboneElementUsed when reporting systolic and diastolic blood pressure.
arg-3: If there is no a value a data absent reason must be present
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
.... code SI1..1CodeableConceptType of component observation (code / type)
Binding: Argonaut Vital Sign Codes (extensible)
.... valueQuantity S0..1QuantityVital Sign Value recorded with UCUM
Binding: Argonaut Vital Signs Units (extensible)
..... id 0..1idxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
..... value S1..1decimalNumerical value (with implicit precision)
..... comparator ?!Σ0..1code< | <= | >= | > - how to understand the value
Binding: QuantityComparator (required)
..... unit S1..1stringUnit representation
..... system SI1..1uriSystem that defines coded unit form
Fixed Value: http://unitsofmeasure.org
..... code S1..1codeCoded responses from the common UCUM units for vital signs value set.
.... dataAbsentReason SI0..1CodeableConceptWhy the component result is missing
Binding: Observation Value Absent Reason (extensible)
.... referenceRange 0..*Unknown reference to #Observation:argoprofile.referenceRange
Provides guide for interpretation of component result

doco Documentation for this format

Complete Summary of the Mandatory Requirements

  1. One status in Observation.statuswhich has an extensible binding to:
  2. One category in Observation.category which must have:
    • a fixed Observation.category.coding.system=”http://hl7.org/fhir/observation-category”
    • a fixed Observation.category.coding.code=“vital-signs”
  3. A code in Observation.code
  4. One patient in Observation.subject
  5. A date and time in effectiveDateTime or effectivePeriod
  6. Either one Observation.valueQuantity or, if there is no value, one code in Observation.DataAbsentReason
  7. When using component observations (Note: See the comments regarding blood pressure in the table above)
    1. one or more Observation.component.code each of which must have:
    2. Either one Observation.component.valueQuantity or, if there is no value, one code in Observation.component.DataAbsentReason
      • Each Observation.component.valueQuantity must have:
        • One numeric value in Observation.component.valueQuantity.value
        • a fixed Observation.component.valueQuantity.system=“http://unitsofmeasure.org
        • a UCUM unit code in Observation.component.valueQuantity.code which has an extensible binding to:
      • Observation.component.DataAbsentReason is bound to Observation Value Absent Reason value set.
  8. When using related observations, one or more reference to Observations in Observation.related.target
    • a fixed Observation.related.type=“has-member”

Differential View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation I0..*Argonaut Vital Signs Observation Profile
arg-2: If there is no component or related element then either a value[x] or a data absent reason must be present
... status S1..1codeBinding: ObservationStatus (required)
... category S1..1CodeableConceptRequired Pattern: {"coding":[{"system":"http://hl7.org/fhir/observation-category","code":"vital-signs"}]}
... code S1..1CodeableConceptCoded Responses from C-CDA Vital Sign Results
Binding: Argonaut Vital Sign Codes (extensible)
... subject S1..1Reference(Argonaut Patient Profile)
... effective[x] SI1..1dateTime, PeriodOften just a dateTime for Vital Signs
arg-1: Datetime must be at least to day.
... valueQuantity SI0..1QuantityVital Sign Value recorded with UCUM
Binding: Argonaut Vital Signs Units (extensible)
.... value S1..1decimal
.... unit S1..1string
.... system S1..1uriFixed Value: http://unitsofmeasure.org
.... code S1..1codeCoded responses from the common UCUM units for vital signs value set.
... dataAbsentReason SI0..1CodeableConceptBinding: Observation Value Absent Reason (extensible)
... related S0..*BackboneElementUsed when reporting systolic and diastolic blood pressure.
.... type S1..1codeFixed Value: has-member
.... target S1..1Reference(Argonaut Vital Signs Observation Profile)
... component SI0..*BackboneElementUsed when reporting systolic and diastolic blood pressure.
arg-3: If there is no a value a data absent reason must be present
.... code S1..1CodeableConceptBinding: Argonaut Vital Sign Codes (extensible)
.... valueQuantity SI0..1QuantityVital Sign Value recorded with UCUM
Binding: Argonaut Vital Signs Units (extensible)
..... value S1..1decimal
..... unit S1..1string
..... system S1..1uriFixed Value: http://unitsofmeasure.org
..... code S1..1codeCoded responses from the common UCUM units for vital signs value set.
.... dataAbsentReason SI0..1CodeableConceptBinding: Observation Value Absent Reason (extensible)

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation I0..*Argonaut Vital Signs Observation Profile
obs-6: SHALL only be present if Observation.value[x] is not present
obs-7: Component code SHALL not be same as observation code
arg-2: If there is no component or related element then either a value[x] or a data absent reason must be present
... 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..*IdentifierUnique Id for this particular observation
... status ?!S1..1coderegistered | preliminary | final | amended +
Binding: ObservationStatus (required)
... category S1..1CodeableConceptClassification of type of observation
Binding: Observation Category Codes (example)
Required Pattern: {"coding":[{"system":"http://hl7.org/fhir/observation-category","code":"vital-signs"}]}
... code S1..1CodeableConceptCoded Responses from C-CDA Vital Sign Results
Binding: Argonaut Vital Sign Codes (extensible)
... subject S1..1Reference(Argonaut Patient Profile)Who and/or what this is about
... encounter 0..1Reference(Encounter)Healthcare event during which this observation is made
... effective[x] SI1..1dateTime, PeriodOften just a dateTime for Vital Signs
arg-1: Datetime must be at least to day.
... issued Σ0..1instantDate/Time this was made available
... performer Σ0..*Reference(Practitioner), Reference(Organization), Reference(Patient), Reference(RelatedPerson)Who is responsible for the observation
... valueQuantity S0..1QuantityVital Sign Value recorded with UCUM
Binding: Argonaut Vital Signs Units (extensible)
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... value S1..1decimalNumerical value (with implicit precision)
.... comparator ?!Σ0..1code< | <= | >= | > - how to understand the value
Binding: QuantityComparator (required)
.... unit S1..1stringUnit representation
.... system SI1..1uriSystem that defines coded unit form
Fixed Value: http://unitsofmeasure.org
.... code S1..1codeCoded responses from the common UCUM units for vital signs value set.
... dataAbsentReason SI0..1CodeableConceptWhy the result is missing
Binding: Observation Value Absent Reason (extensible)
... interpretation 0..1CodeableConceptHigh, low, normal, etc.
Binding: Observation Interpretation Codes (extensible)
... comments 0..1stringComments about result
... bodySite 0..1CodeableConceptObserved body part
Binding: SNOMED CT Body Structures (example)
... method 0..1CodeableConceptHow it was done
Binding: Observation Methods (example)
... specimen 0..1Reference(Specimen)Specimen used for this observation
... device 0..1Reference(Device), Reference(DeviceMetric)(Measurement) Device
... referenceRange I0..*BackboneElementProvides guide for interpretation
obs-3: Must have at least a low or a high or text
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
.... low I0..1SimpleQuantityLow Range, if relevant
.... high I0..1SimpleQuantityHigh Range, if relevant
.... meaning 0..1CodeableConceptIndicates the meaning/use of this range of this range
Binding: Observation Reference Range Meaning Codes (example)
.... age 0..1RangeApplicable age range, if relevant
.... text 0..1stringText based reference range in an observation
... related S0..*BackboneElementUsed when reporting systolic and diastolic blood pressure.
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
.... type S1..1codehas-member | derived-from | sequel-to | replaces | qualified-by | interfered-by
Binding: ObservationRelationshipType (required)
Fixed Value: has-member
.... target S1..1Reference(Argonaut Vital Signs Observation Profile)Resource that is related to this one
... component SI0..*BackboneElementUsed when reporting systolic and diastolic blood pressure.
arg-3: If there is no a value a data absent reason must be present
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
.... code SI1..1CodeableConceptType of component observation (code / type)
Binding: Argonaut Vital Sign Codes (extensible)
.... valueQuantity S0..1QuantityVital Sign Value recorded with UCUM
Binding: Argonaut Vital Signs Units (extensible)
..... id 0..1idxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
..... value S1..1decimalNumerical value (with implicit precision)
..... comparator ?!Σ0..1code< | <= | >= | > - how to understand the value
Binding: QuantityComparator (required)
..... unit S1..1stringUnit representation
..... system SI1..1uriSystem that defines coded unit form
Fixed Value: http://unitsofmeasure.org
..... code S1..1codeCoded responses from the common UCUM units for vital signs value set.
.... dataAbsentReason SI0..1CodeableConceptWhy the component result is missing
Binding: Observation Value Absent Reason (extensible)
.... referenceRange 0..*Unknown reference to #Observation:argoprofile.referenceRange
Provides guide for interpretation of component result

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]/Observation?patient=[id]&category=vital-signs

Support: Mandatory to support search by category code.

Implementation Notes: Search based on vital sign category code. This search fetches a bundle of all Observation resources with category ‘vital-signs’ for the specified patient (how to search by reference) and (how to search by token). The table above is the minimum set, additional vital signs are allowed.

Response Class:

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

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

Example: Search for all heart rate observations for a patient:

GET https://fhir-open-api-dstu2.smarthealthit.org/Observation?patient=1186747&code=8867-4

Example: Search for all heart rate, respiratory rate and blood pressure observations for a patient

GET https://fhir-open-api-dstu2.smarthealthit.org/Observation?patient=1186747&code=8867-4,9279-1,55284-4

Support: Mandatory to support search by vital sign LOINC(s) listed above.

Implementation Notes: 1)Search based on vital sign LOINC code(s). This fetches a bundle of all Observation resources for specific vital sign(s) listed in the table above for the specified patient (how to search by reference) and [how to search by token)]. 2) The Argonaut Observation “code” parameter has been defined to search both in both Observation.code and Observation.component.code. For example when fetching blood pressures the same resources will be returned whether the search is based on 55284-4(Systolic and Diastolic BP), or the component codes 8480-6(Systolic BP) or 8462-4 (Diastolic BP).

Response Class:

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

GET [base]/Observation?patient=[id]&category=vital-signs&date=[date]{&date=[date]}

Example: Find all the blood pressures after 2013-03-14

GET http://fhir2.healthintersections.com.au/open/Observation?patient=555580&code=55284-4&date=ge2015-01-14

Support: Mandatory to support search by category code and date

Implementation Notes: Search based on vital sign category code and date. This fetches a bundle of all Observation resources with category ‘vital-signs’ for the specified patient for a specified time period (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