Vital Signs

From HL7 Argonaut Project Wiki
Jump to: navigation, search

Back to Argonaut Implementation Guide

**********************PLEASE NOTE********************************
This guide is no longer being actively maintained and updated.
On January 1st 2017, This guide is being superseded by the online 
version of the Argonaut-DSTU2 Implemenation Guide.
hosted at:  http://fhir.org/guides/argonaut
The working CI build is avaible now at : 
http://build.fhir.org/ig/Healthedata1/Argo-DSTU2/  

Introduction

The Argonaut Vitals Signs guide provides the API documentation for searching and fetching Vitals Signs. It is based on the Data Access Framework (DAF) Vital Signs and draws requirements from Argonaut Sprint 7. The search criteria provided in the Quick Start are intended to support the 2015 Edition ONC Certification criterion Data Category Request 170.315(g)(8).

Minimum Requirements

Clients

A client SHOULD be capable of connecting to a server and fetching any of a patient's vital signs searching by one or more of the codes listed below and date range using GET [base]/Observation?patient=[id]&code=[LOINC{,LOINC2...}]vital-signs&date=[date]{&date=[date]}.

Servers

  • A server has ensured that every API request includes a valid Authorization token, supplied via:Authorization: Bearer {server-specific-token-here}
  • A server has rejected any unauthorized requests by returning an HTTP 401 Unauthorized response code.

A server SHOULD be capable of returning any of a patient's vital signs queried by one or more of the codes listed below and date range using GET [base]/Observation?patient=[id]&code=[LOINC{,LOINC2...}]vital-signs&date=[date]{&date=[date]}.

Mandatory Data Elements

The following data-elements in the Observation resource are mandatory (i.e data MUST be present). These are presented below in simple human-readable explanation and a more thorough summary of the requirements. The table below identifies the minimum set of vital sign concepts and the required codes and units used for representing vitals signs. See that section for additional guidance and examples for each vital sign.


Each Observation must have:

  • a patient
  • a time indicating when the measurement was taken
  • a LOINC code which tells you what is being measured and is taken from the "LOINC Code" column in the table below.
    • note: If a more specific code is recorded, the generic code and the translated coded must be sent - e.g. method specific LOINC Codes, SNOMED CT concepts, system specific codes
  • 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
  • a status
  • a category code of 'vital-signs'

Vital Signs Table

This table represents a minimum set of vital sign concepts, the required LOINC codes (Argonaut Vital Signs), and UCUM units of measure codes (Argonaut Vital Signs Units) used for representing vitals signs observations. These are extensible bindings defined for this IG 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. An example of using multiple codes is provided. Other profiles may make rules about which vital sign must be present or must be present as part of a panel.

Vital LOINC Code Units Notes Examples
Vital Signs 8716-3 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) Example Note that querying for the panel may miss individual results that are not part of an actual panel.
Respiratory Rate 9279-1 /min Example
Heart rate 8867-4 /min Example
Oxygen saturation 59408-5  % LOINC has deprecated 2710-2 and replaced it with 59408-5 (Oxygen saturation in Arterial blood by Pulse oximetry). The previous term (2710-2) listed in C-CDA. See O2 Saturation by Pulse Ox LOINCS for a list of LOINCs that can be translations to this LOINC Example
Body temperature 8310-5 Cel, [degF] Example
Body height 8302-2 cm, [in_i] Example
Body length 8306-3 cm, [in_i] Like height, but lying down, typically this is used for infants Example
Head circumference 8287-5 cm, [in_i] Example
Body weight 29463-7 g, kg,[lb_av] Example
Body mass index 39156-5 kg/m2 Example
Blood pressure systolic and diastolic 55284-4 This is a grouping structure. It has no value in Observation.valueQuantity but contains at least one component (systolic and/or diastolic). Example
Systolic blood pressure 8480-6 mm[Hg] This lives in in the Observation.component structure on a "systolic and diastolic" Observation Example
Diastolic blood pressure 8462-4 mm[Hg] This lives in Observation.component structure on a "systolic and diastolic" Observation Example

DataAbsentReason Example

Complete Summary of the Mandatory Requirements

  1. One status in Observation.status
  2. One category in Observation.category which must have:
  3. A code in Observation.code
  4. Either one Observation.valueQuantity or, if there is no value, one code in Observation.DataAbsentReason (Note: See the comments in the table for exceptions)
  5. When using a panel code to group component observations (Note: See the comments regarding blood pressure in the table above), one or more Observation.component.code each of which must have:
    • a fixed Observation.component.code.coding.system="http://loinc.org"
    • a LOINC code in Observation.component.code.coding.code which must be taken from the extensible Argonaut Vital Signs valueset
  6. 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 taken from the extensible Argonaut Vital Signs Units valueset
    • Observation.component.DataAbsentReason is bound to Observation Value Absent Reason Value set (Code set)
  7. When using a panel code to group observations, one or more reference to Observations in Observation.related.target(Note: See the comments for Vital Signs in the table)
    • a fixed Observation.related.type="has-member"
  8. One patient in Observation.subject
  9. A date and time in effectiveDateTime or effectivePeriod

Quick Start

Below is a quick overview of the required search and read operations

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

Example:

[GET https://fhir-open-api-dstu2.smarthealthit.org/Observation?patient=1186747&category=vital-signs]


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

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

Example:

Search for all heart rate observations for a patient:

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

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]


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

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) and (how to search by date).

Response Class:

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

Example:

Find all the vital signs after 2013-03-14

[GET http://fhir2.healthintersections.com.au/open/Observation?patient=555580&category=vital-signs&date=ge2015-01-14]

GET [base]/Observation?patient=[id]&code=[LOINC{,LOINC2...}]vital-signs&date=[date]{&date=[date]}

Support: SHOULD support search by code and date

Implementation Notes: Search based on vital sign code and date.This fetches a bundle of all Observation resources for a specific vital sign listed in the table above for the specified patient for a specified time period (how to search by reference)and (how to search by token) and (how to search by date).

Response Class:

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

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]

Open Issues

Issues for the vitals IG have been identified and tracked HERE

Resources

Formalized testing with test scripts and objective results reporting is available through the participation of AEGIS and MITRE (Crucible). The testscript provided can be used to test servers: [todo]

References



Back to Argonaut Implementation Guide

Copyright © Health Level Seven International ® ALL RIGHTS RESERVED. The reproduction of this material in any form is strictly forbidden without the written permission of the publisher.