STU 3 Ballot

This page is part of the FHIR Specification (v1.6.0: STU 3 Ballot 4). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3

10.1.19 Resource Observation - Operations

This resource has 1 operation associated with it:

$statsObservation Statistics

For more information about operations, including how they are invoked, see Operations.

10.1.19.1 Observation Statistics

The Statistics operation performs a set of statistical calculations on a set of clinical measurements such as a blood pressure. This operation is limited to Observation resources with valueQuantity elements.

The set of Observations is defined by a the input parameters patient,code and duration and params. The set of statistical calculation depends upon the value of the params parameter:

  • average - for example if code = 55284-4 the mean of 55284-4 over the stated period from an operation
  • max - for example if code = 55284-4 the max of 55284-4 over the stated period from an operation
  • min - for example if code = 55284-4 the min of 55284-4 over the stated period from an operation
  • count - for example if code = 55284-4 the number of occurances of value x of 55284-4 over the stated period from an operation

If successful, the operation returns an Observation resource with the results of the statistical calculations as component value pairs where the component code = the params code. The Observation also contains the the input parameters patient,code and duration parameters. If unsuccessful, an OperationOutcome with an error message will be returned.

Formal Definition (as a OperationDefinition).

URL: [base]/Observation/$stats

URL: [base]/Observation/[id]/$stats

In Parameters:
NameCardinalityTypeBindingProfileDocumentation
patient1..1id

The FHIR Patient resource id of the relevant Observations. For example The patient id = "123" in Observation.subject.reference = Patient/123.

code1..1string

The test code upon which the statistics are being performed. For example, the code = "45667-2" will evaluate all relevant Observations with this code in Observation.code.

duration1..1decimal

The time period of interest given as hours. For example, the duration = "1" is the last hour

params1..4code

average|max|min|count The statistical operations to be performed on the relevant operations. These codes are defined here

Out Parameters:
NameCardinalityTypeBindingProfileDocumentation
obs1..2Observation

The Observation.component.code is relative to the Observation.code and cannot be interpreted independently. The code input parameter is returned as the code element. The 'patient' parameter is returned as the patient element. The period input parameter is returned as the appliesPeriod element. The status is fixed to final.

10.1.19.1.1 Examples

Get the average, min, max and count of a series of BP measurements for a patient (Request):

GET [base]/Observation/$stats?patient=13&code=55284-4&duration=1&params=average,min,max,count

Will produce this Bundle containing 2 Observation resources: (Response):


<?xml version="1.0" encoding="UTF-8"?>
<!--The outcome for this particular operation results in a bundle consisting of 2 Observation resources - one for the diastolic and one for the systolic components-->
<Bundle xmlns="http://hl7.org/fhir">
   <type value="searchset"/>
   <total value="2"/>
   <entry>
      <fullUrl value="https://example.com/base/Observation/????"/>
      <!--    the matching resource    -->
      <resource>
         <Observation>
            <id value="stats-diastolic"/>
            <identifier>
               <system value="urn:ietf:rfc:3986"/>
               <value value="urn:uuid:187e0c12-8dd2-67e2-99b2-bf273c878281"/>
            </identifier>
            <status value="final"/>
            <category>
               <coding>
                  <system value="http://hl7.org/fhir/observation-category"/>
                  <code value="vital-signs"/>
                  <display value="Vital Signs"/>
               </coding>
            </category>
            <code>
               <!--    LOINC -code    -->
               <coding>
                  <system value="http://loinc.org"/>
                  <code value="8462-4"/>
                  <display value="Diastolic blood pressure"/>
               </coding>
            </code>
            <subject>
               <reference value="Patient/123"/>
            </subject>
            <effectivePeriod>
               <start value="2016-05-25T19:26:16Z"/>
               <end value="2016-05-25T20:26:16Z"/>
            </effectivePeriod>
            <!--The Observation.component.code is relative to the Observation.code and cannot be interpreted independently.-->
            <component>
               <code>
                  <!--   the average parameter code -->
                  <coding>
                     <system value="http://hl7.org/fhir/observation-paramcode"/>
                     <code value="average"/>
                     <display value="Average"/>
                  </coding>
               </code>
               <valueQuantity>
                  <value value="79.7"/>
                  <unit value="mmHg"/>
                  <system value="http://unitsofmeasure.org"/>
                  <code value="mm[Hg]"/>
               </valueQuantity>
            </component>
            <component>
               <!--  the max parameter code -->
               <code>
                  <coding>
                     <system value="http://hl7.org/fhir/observation-paramcode"/>
                     <code value="max"/>
                     <display value="Maximum"/>
                  </coding>
               </code>
               <valueQuantity>
                  <value value="110"/>
                  <unit value="mmHg"/>
                  <system value="http://unitsofmeasure.org"/>
                  <code value="mm[Hg]"/>
               </valueQuantity>
            </component>
            <component>
               <!--  the min parameter code -->
               <code>
                  <coding>
                     <system value="http://hl7.org/fhir/observation-paramcode"/>
                     <code value="min"/>
                     <display value="Minimum"/>
                  </coding>
               </code>
               <valueQuantity>
                  <value value="56"/>
                  <unit value="mmHg"/>
                  <system value="http://unitsofmeasure.org"/>
                  <code value="mm[Hg]"/>
               </valueQuantity>
            </component>
            <component>
               <!--  the count parameter code -->
               <code>
                  <coding>
                     <system value="http://hl7.org/fhir/observation-paramcode"/>
                     <code value="min"/>
                     <display value="Minimum"/>
                  </coding>
               </code>
               <valueQuantity>
                  <value value="7"/>
                  <system value="http://unitsofmeasure.org"/>
                  <code value="{observations}"/>
               </valueQuantity>
            </component>
         </Observation>
      </resource>
      <search>
         <mode value="match"/>
      </search>
   </entry>
   <entry>
      <resource>
         <Observation>
            <id value="stats-diastolic"/>
            <identifier>
               <system value="urn:ietf:rfc:3986"/>
               <value value="urn:uuid:187e0c12-8dd2-67e2-99b2-bf273c878281"/>
            </identifier>
            <status value="final"/>
            <category>
               <coding>
                  <system value="http://hl7.org/fhir/observation-category"/>
                  <code value="vital-signs"/>
                  <display value="Vital Signs"/>
               </coding>
            </category>
            <code>
               <!--    LOINC -code    -->
               <coding>
                  <system value="http://loinc.org"/>
                  <code value="8462-4"/>
                  <display value="Diastolic blood pressure"/>
               </coding>
            </code>
            <subject>
               <reference value="Patient/123"/>
            </subject>
            <effectivePeriod>
               <start value="2016-05-25T19:26:16Z"/>
               <end value="2016-05-25T20:26:16Z"/>
            </effectivePeriod>
            <!--The Observation.component.code is relative to the Observation.code and cannot be interpreted independently.-->
            <component>
               <code>
                  <!--   the average parameter code -->
                  <coding>
                     <system value="http://hl7.org/fhir/observation-paramcode"/>
                     <code value="average"/>
                     <display value="Average"/>
                  </coding>
               </code>
               <valueQuantity>
                  <value value="79.7"/>
                  <unit value="mmHg"/>
                  <system value="http://unitsofmeasure.org"/>
                  <code value="mm[Hg]"/>
               </valueQuantity>
            </component>
            <component>
               <!--  the max parameter code -->
               <code>
                  <coding>
                     <system value="http://hl7.org/fhir/observation-paramcode"/>
                     <code value="max"/>
                     <display value="Maximum"/>
                  </coding>
               </code>
               <valueQuantity>
                  <value value="110"/>
                  <unit value="mmHg"/>
                  <system value="http://unitsofmeasure.org"/>
                  <code value="mm[Hg]"/>
               </valueQuantity>
            </component>
            <component>
               <!--  the min parameter code -->
               <code>
                  <coding>
                     <system value="http://hl7.org/fhir/observation-paramcode"/>
                     <code value="min"/>
                     <display value="Minimum"/>
                  </coding>
               </code>
               <valueQuantity>
                  <value value="56"/>
                  <unit value="mmHg"/>
                  <system value="http://unitsofmeasure.org"/>
                  <code value="mm[Hg]"/>
               </valueQuantity>
            </component>
            <component>
               <!--  the count parameter code -->
               <code>
                  <coding>
                     <system value="http://hl7.org/fhir/observation-paramcode"/>
                     <code value="count"/>
                     <display value="Count"/>
                  </coding>
               </code>
               <valueQuantity>
                  <value value="7"/>
                  <system value="http://unitsofmeasure.org"/>
                  <code value="{observations}"/>
               </valueQuantity>
            </component>
         </Observation>
      </resource>
      <search>
         <mode value="match"/>
      </search>
   </entry>
</Bundle>

              </component>
                <component>
                   <!--  the count parameter code -->
                   <code>
                      <coding>
                         <system value="http://hl7.org/fhir/observation-paramcode"/>
                         <code value="count"/>
                         <display value="Count"/>
                      </coding>
                   </code>
                   <valueQuantity>
                      <value value="7"/>
                      <system value="http://unitsofmeasure.org"/>
                      <code value="{observations}"/>
                   </valueQuantity>
                </component>
             </Observation>
          </resource>
          <search>
             <mode value="match"/>
          </search>
       </entry>
    </Bundle>


"