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
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:
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:
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] |
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.
Observation.status
which has an extensible binding to:
Observation.category
which must have:
Observation.category.coding.system
=”http://hl7.org/fhir/observation-category”Observation.category.coding.code
=“vital-signs”Observation.code
Observation.code.coding.system
=“http://loinc.org”Observation.code.coding.code
which has an extensible binding to:
Observation.subject
effectiveDateTime
or effectivePeriod
Observation.valueQuantity
or, if there is no value, one code in Observation.DataAbsentReason
Observation.valueQuantity.value
Observation.valueQuantity.system
=”http://unitsofmeasure”Observation.valueQuantity.code
which has an extensible binding to:
Observation.component.code
each of which must have:
Observation.component.code.coding.system
=“http://loinc.org”
- a LOINC code in Observation.code.coding.code
which has an extensible binding to:
Observation.component.valueQuantity
or, if there is
no value, one code in Observation.component.DataAbsentReason
Observation.component.valueQuantity.value
Observation.component.valueQuantity.system
=“http://unitsofmeasure.org”Observation.component.valueQuantity.code
which has an extensible binding to:
Observation.related.target
Observation.related.type
=“has-member”Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Observation | I | 0..* | 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 | S | 1..1 | code | Binding: ObservationStatus (required) |
category | S | 1..1 | CodeableConcept | Required Pattern: {"coding":[{"system":"http://hl7.org/fhir/observation-category","code":"vital-signs"}]} |
code | S | 1..1 | CodeableConcept | Coded Responses from C-CDA Vital Sign Results Binding: Argonaut Vital Sign Codes (extensible) |
subject | S | 1..1 | Reference(Argonaut Patient Profile) | |
effective[x] | SI | 1..1 | dateTime, Period | Often just a dateTime for Vital Signs arg-1: Datetime must be at least to day. |
valueQuantity | SI | 0..1 | Quantity | Vital Sign Value recorded with UCUM Binding: Argonaut Vital Signs Units (extensible) |
value | S | 1..1 | decimal | |
unit | S | 1..1 | string | |
system | S | 1..1 | uri | Fixed Value: http://unitsofmeasure.org |
code | S | 1..1 | code | Coded responses from the common UCUM units for vital signs value set. |
dataAbsentReason | SI | 0..1 | CodeableConcept | Binding: Observation Value Absent Reason (extensible) |
related | S | 0..* | BackboneElement | Used when reporting systolic and diastolic blood pressure. |
type | S | 1..1 | code | Fixed Value: has-member |
target | S | 1..1 | Reference(Argonaut Vital Signs Observation Profile) | |
component | SI | 0..* | BackboneElement | Used when reporting systolic and diastolic blood pressure. arg-3: If there is no a value a data absent reason must be present |
code | S | 1..1 | CodeableConcept | Binding: Argonaut Vital Sign Codes (extensible) |
valueQuantity | SI | 0..1 | Quantity | Vital Sign Value recorded with UCUM Binding: Argonaut Vital Signs Units (extensible) |
value | S | 1..1 | decimal | |
unit | S | 1..1 | string | |
system | S | 1..1 | uri | Fixed Value: http://unitsofmeasure.org |
code | S | 1..1 | code | Coded responses from the common UCUM units for vital signs value set. |
dataAbsentReason | SI | 0..1 | CodeableConcept | Binding: Observation Value Absent Reason (extensible) |
Documentation for this format |
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Observation | I | 0..* | 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..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: IETF BCP-47 (required) | |
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":"vital-signs"}]} |
code | S | 1..1 | CodeableConcept | Coded Responses from C-CDA Vital Sign Results Binding: Argonaut Vital Sign Codes (extensible) |
subject | S | 1..1 | Reference(Argonaut 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 | 1..1 | dateTime, Period | Often just a dateTime for Vital Signs arg-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 |
valueQuantity | S | 0..1 | Quantity | Vital Sign Value recorded with UCUM Binding: Argonaut Vital Signs Units (extensible) |
id | 0..1 | id | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
value | S | 1..1 | decimal | Numerical value (with implicit precision) |
comparator | ?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value Binding: QuantityComparator (required) |
unit | S | 1..1 | string | Unit representation |
system | SI | 1..1 | uri | System that defines coded unit form Fixed Value: http://unitsofmeasure.org |
code | S | 1..1 | code | Coded responses from the common UCUM units for vital signs value set. |
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) | |
comments | 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 | id | 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..1 | CodeableConcept | Indicates the meaning/use of this range of this range 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 | S | 0..* | BackboneElement | Used when reporting systolic and diastolic blood pressure. |
id | 0..1 | id | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
type | S | 1..1 | code | has-member | derived-from | sequel-to | replaces | qualified-by | interfered-by Binding: ObservationRelationshipType (required) Fixed Value: has-member |
target | S | 1..1 | Reference(Argonaut Vital Signs Observation Profile) | Resource that is related to this one |
component | SI | 0..* | BackboneElement | Used when reporting systolic and diastolic blood pressure. arg-3: If there is no a value a data absent reason must be present |
id | 0..1 | id | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
code | SI | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: Argonaut Vital Sign Codes (extensible) |
valueQuantity | S | 0..1 | Quantity | Vital Sign Value recorded with UCUM Binding: Argonaut Vital Signs Units (extensible) |
id | 0..1 | id | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
value | S | 1..1 | decimal | Numerical value (with implicit precision) |
comparator | ?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value Binding: QuantityComparator (required) |
unit | S | 1..1 | string | Unit representation |
system | SI | 1..1 | uri | System that defines coded unit form Fixed Value: http://unitsofmeasure.org |
code | S | 1..1 | code | Coded responses from the common UCUM units for vital signs value set. |
dataAbsentReason | SI | 0..1 | CodeableConcept | Why 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 | ||
Documentation for this format |
Observation.status
which has an extensible binding to:
Observation.category
which must have:
Observation.category.coding.system
=”http://hl7.org/fhir/observation-category”Observation.category.coding.code
=“vital-signs”Observation.code
Observation.code.coding.system
=“http://loinc.org”Observation.code.coding.code
which has an extensible binding to:
Observation.subject
effectiveDateTime
or effectivePeriod
Observation.valueQuantity
or, if there is no value, one code in Observation.DataAbsentReason
Observation.valueQuantity.value
Observation.valueQuantity.system
=”http://unitsofmeasure”Observation.valueQuantity.code
which has an extensible binding to:
Observation.component.code
each of which must have:
Observation.component.code.coding.system
=“http://loinc.org”
- a LOINC code in Observation.code.coding.code
which has an extensible binding to:
Observation.component.valueQuantity
or, if there is
no value, one code in Observation.component.DataAbsentReason
Observation.component.valueQuantity.value
Observation.component.valueQuantity.system
=“http://unitsofmeasure.org”Observation.component.valueQuantity.code
which has an extensible binding to:
Observation.related.target
Observation.related.type
=“has-member”Differential View
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Observation | I | 0..* | 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 | S | 1..1 | code | Binding: ObservationStatus (required) |
category | S | 1..1 | CodeableConcept | Required Pattern: {"coding":[{"system":"http://hl7.org/fhir/observation-category","code":"vital-signs"}]} |
code | S | 1..1 | CodeableConcept | Coded Responses from C-CDA Vital Sign Results Binding: Argonaut Vital Sign Codes (extensible) |
subject | S | 1..1 | Reference(Argonaut Patient Profile) | |
effective[x] | SI | 1..1 | dateTime, Period | Often just a dateTime for Vital Signs arg-1: Datetime must be at least to day. |
valueQuantity | SI | 0..1 | Quantity | Vital Sign Value recorded with UCUM Binding: Argonaut Vital Signs Units (extensible) |
value | S | 1..1 | decimal | |
unit | S | 1..1 | string | |
system | S | 1..1 | uri | Fixed Value: http://unitsofmeasure.org |
code | S | 1..1 | code | Coded responses from the common UCUM units for vital signs value set. |
dataAbsentReason | SI | 0..1 | CodeableConcept | Binding: Observation Value Absent Reason (extensible) |
related | S | 0..* | BackboneElement | Used when reporting systolic and diastolic blood pressure. |
type | S | 1..1 | code | Fixed Value: has-member |
target | S | 1..1 | Reference(Argonaut Vital Signs Observation Profile) | |
component | SI | 0..* | BackboneElement | Used when reporting systolic and diastolic blood pressure. arg-3: If there is no a value a data absent reason must be present |
code | S | 1..1 | CodeableConcept | Binding: Argonaut Vital Sign Codes (extensible) |
valueQuantity | SI | 0..1 | Quantity | Vital Sign Value recorded with UCUM Binding: Argonaut Vital Signs Units (extensible) |
value | S | 1..1 | decimal | |
unit | S | 1..1 | string | |
system | S | 1..1 | uri | Fixed Value: http://unitsofmeasure.org |
code | S | 1..1 | code | Coded responses from the common UCUM units for vital signs value set. |
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..* | 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..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: IETF BCP-47 (required) | |
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":"vital-signs"}]} |
code | S | 1..1 | CodeableConcept | Coded Responses from C-CDA Vital Sign Results Binding: Argonaut Vital Sign Codes (extensible) |
subject | S | 1..1 | Reference(Argonaut 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 | 1..1 | dateTime, Period | Often just a dateTime for Vital Signs arg-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 |
valueQuantity | S | 0..1 | Quantity | Vital Sign Value recorded with UCUM Binding: Argonaut Vital Signs Units (extensible) |
id | 0..1 | id | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
value | S | 1..1 | decimal | Numerical value (with implicit precision) |
comparator | ?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value Binding: QuantityComparator (required) |
unit | S | 1..1 | string | Unit representation |
system | SI | 1..1 | uri | System that defines coded unit form Fixed Value: http://unitsofmeasure.org |
code | S | 1..1 | code | Coded responses from the common UCUM units for vital signs value set. |
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) | |
comments | 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 | id | 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..1 | CodeableConcept | Indicates the meaning/use of this range of this range 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 | S | 0..* | BackboneElement | Used when reporting systolic and diastolic blood pressure. |
id | 0..1 | id | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
type | S | 1..1 | code | has-member | derived-from | sequel-to | replaces | qualified-by | interfered-by Binding: ObservationRelationshipType (required) Fixed Value: has-member |
target | S | 1..1 | Reference(Argonaut Vital Signs Observation Profile) | Resource that is related to this one |
component | SI | 0..* | BackboneElement | Used when reporting systolic and diastolic blood pressure. arg-3: If there is no a value a data absent reason must be present |
id | 0..1 | id | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored |
code | SI | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: Argonaut Vital Sign Codes (extensible) |
valueQuantity | S | 0..1 | Quantity | Vital Sign Value recorded with UCUM Binding: Argonaut Vital Signs Units (extensible) |
id | 0..1 | id | xml:id (or equivalent in JSON) | |
extension | 0..* | Extension | Additional Content defined by implementations | |
value | S | 1..1 | decimal | Numerical value (with implicit precision) |
comparator | ?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value Binding: QuantityComparator (required) |
unit | S | 1..1 | string | Unit representation |
system | SI | 1..1 | uri | System that defines coded unit form Fixed Value: http://unitsofmeasure.org |
code | S | 1..1 | code | Coded responses from the common UCUM units for vital signs value set. |
dataAbsentReason | SI | 0..1 | CodeableConcept | Why 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 | ||
Documentation for this format |
Downloads: StructureDefinition: (XML, JSON, CSV), Schema: XML Schematron
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:
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
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:
GET [base]/Observation?patient=[id]&category=vital-signs&date=[date]{&date=[date]}
Example: Find all the blood pressures after 2013-03-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: