STU3 Candidate

This page is part of the FHIR Specification (v1.8.0: STU 3 Draft). 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

Operation-observation-stats.xml

Raw XML (canonical form)

Operation Definition

<OperationDefinition xmlns="http://hl7.org/fhir">
  <id value="Observation-stats"/>
  <text>
    <status value="generated"/>
    <div xmlns="http://www.w3.org/1999/xhtml">
      <h2>Observation Statistics</h2>
      <p>OPERATION: Observation Statistics</p>
      <div>
        <p>The Statistics operation performs a set of statistical calculations on a set of clinical
           measurements such as a blood pressure as stored on the server.  This operation is focused
           on 
          <a href="observation.html">Observation</a> resources with valueQuantity elements that have UCUM unit codes.
        </p>

        <p>The set of Observations is defined by 4 parameters:</p>

        <ul>

          <li>the subject of the observations for which the statistics are being generated (
            <code>subject</code>)
          </li>

          <li>which observations to generate statistics for (
            <code>code</code> and 'system', or 'coding')
          </li>

          <li>the time period over which to generate statistics ('duration' or 'period')</li>

          <li>the set of statistical analyses to return (
            <code>statistic</code>).
          </li>

        </ul>

        <p>Possible statistical analyses (see 
          <a href="valueset-observation-statistics.html">StatisticsCode</a>):
        </p>

        <ul>

          <li>
            <strong>average</strong> (&quot;Average&quot;): The 
            <a href="https://en.wikipedia.org/wiki/Arithmetic_mean">mean</a> of N measurements over the stated period
          </li>

          <li>
            <strong>maximum</strong> (&quot;Maximum&quot;): The 
            <a href="https://en.wikipedia.org/wiki/Maximal_element">maximum</a> value of N measurements over the stated period
          </li>

          <li>
            <strong>minimum</strong> (&quot;Minimum&quot;): The 
            <a href="https://en.wikipedia.org/wiki/Minimal_element">minimum</a> value of N measurements over the stated period
          </li>

          <li>
            <strong>count</strong> (&quot;Count&quot;): The [number] of valid measurements over the stated period that contributed
             to the other statistical outputs
          </li>

          <li>
            <strong>totalcount</strong> (&quot;Total Count&quot;): The total [number] of valid measurements over the stated period,
             including observations that were ignored because they did not contain valid result values
          </li>

          <li>
            <strong>median</strong> (&quot;Median&quot;): The 
            <a href="https://en.wikipedia.org/wiki/Median">median</a> of N measurements over the stated period
          </li>

          <li>
            <strong>std-dev</strong> (&quot;standard deviation&quot;): The 
            <a href="https://en.wikipedia.org/wiki/Standard_deviation">standard deviation</a> of N measurements over the stated period
          </li>

          <li>
            <strong>sum</strong> (&quot;sum&quot;): The 
            <a href="https://en.wikipedia.org/wiki/Summation">sum</a> of N measurements over the stated period
          </li>

          <li>
            <strong>variance</strong> (&quot;variance&quot;): The 
            <a href="https://en.wikipedia.org/wiki/Variance">variance</a> of N measurements over the stated period
          </li>

          <li>
            <strong>%20</strong> (&quot;20th percentile&quot;): The 20th 
            <a href="https://en.wikipedia.org/wiki/Percentile">Percentile</a> of N measurements over the stated period
          </li>

          <li>
            <strong>%80</strong> (&quot;80th percentile&quot;): The 80th 
            <a href="https://en.wikipedia.org/wiki/Percentile">Percentile</a> of N measurements over the stated period
          </li>

          <li>
            <strong>4-lower</strong> (&quot;lower quartile&quot;): The lower 
            <a href="https://en.wikipedia.org/wiki/Quartile">Quartile</a> Boundary of N measurements over the stated period
          </li>

          <li>
            <strong>4-upper</strong> (&quot;upper quartile&quot;): The upper 
            <a href="https://en.wikipedia.org/wiki/Quartile">Quartile</a> Boundary of N measurements over the stated period
          </li>

          <li>
            <strong>4-dev</strong> (&quot;quartile deviation&quot;): The difference between the upper and lower 
            <a href="https://en.wikipedia.org/wiki/Quartile">Quartiles</a> is called the Interquartile range. (IQR = Q3-Q1) Quartile deviation or Semi-interquartile
             range is one-half the difference between the first and the third quartiles.
          </li>

          <li>
            <strong>5-1</strong> (&quot;1st quintile&quot;): The lowest of four values that divide the N measurementsinto
             a frequency distribution of five classes with each containing one fifth of the total population
          </li>

          <li>
            <strong>5-2</strong> (&quot;2nd quintile&quot;): The second of four values that divide the N measurementsinto
             a frequency distribution of five classes with each containing one fifth of the total population
          </li>

          <li>
            <strong>5-3</strong> (&quot;3rd quintile&quot;): The third of four values that divide the N measurementsinto
             a frequency distribution of five classes with each containing one fifth of the total population
          </li>

          <li>
            <strong>5-4</strong> (&quot;4th quintile&quot;): The fourth of four values that divide the N measurementsinto
             a frequency distribution of five classes with each containing one fifth of the total population
          </li>

        </ul>

        <p>If successful, the operation returns an Observation resource for each code with the results
           of the statistical calculations as component value pairs where the component code = the
           statistical code. The Observation also contains the the input parameters 
          <code>patient</code>,
          <code>code</code> and 
          <code>duration</code> parameters. If unsuccessful, an 
          <a href="operationoutcome.html">OperationOutcome</a> with an error message will be returned.
        </p>

        <p>The client can request that all the observations on which the statistics are based be
           returned as well, using the include parameter. If an include parameter is specified, a
           limit may also be specified; the sources observations are subsetted at the server's discretion
           if count &gt; limit. This functionality is included with the intent of supporting graphical
           presentation</p>

      </div>
      <p>URL: [base]/Observation/$stats</p>
      <p>Parameters</p>
      <table class="grid">
        <tr>
          <td>
            <b>Use</b>
          </td>
          <td>
            <b>Name</b>
          </td>
          <td>
            <b>Cardinality</b>
          </td>
          <td>
            <b>Type</b>
          </td>
          <td>
            <b>Binding</b>
          </td>
          <td>
            <b>Documentation</b>
          </td>
        </tr>
        <tr>
          <td>IN</td>
          <td>subject</td>
          <td>1..1</td>
          <td>uri</td>
          <td/>
          <td>
            <div>
              <p>The subject of the relevant Observations, which has the value of the Observation.subject.reference.
                 E.g. 'Patient/123'. Reference can be to an absolute URL, but servers only perform stats
                 on their own observations</p>

            </div>
          </td>
        </tr>
        <tr>
          <td>IN</td>
          <td>code</td>
          <td>0..*</td>
          <td>string</td>
          <td/>
          <td>
            <div>
              <p>The test code(s) upon which the statistics are being performed. Provide along with a system,
                 or as a coding. For example, the code  = &quot;45667-2&quot;  will evaluate all relevant
                 Observations with this code in Observation.code. For LOINC codes that are panels, (e.g.
                 55284-4) this means to include all the individual codes that are part of a panel</p>

            </div>
          </td>
        </tr>
        <tr>
          <td>IN</td>
          <td>system</td>
          <td>0..1</td>
          <td>uri</td>
          <td/>
          <td>
            <div>
              <p>The system for the code(s). Or provide a coding instead</p>

            </div>
          </td>
        </tr>
        <tr>
          <td>IN</td>
          <td>coding</td>
          <td>0..*</td>
          <td>Coding</td>
          <td/>
          <td>
            <div>
              <p>The test code upon which the statistics are being performed, as a Coding</p>

            </div>
          </td>
        </tr>
        <tr>
          <td>IN</td>
          <td>duration</td>
          <td>0..1</td>
          <td>decimal</td>
          <td/>
          <td>
            <div>
              <p>The time period of interest given as hours.  For example, the duration = &quot;1&quot;
                 represents the last hour - the time period from on hour ago to now</p>

            </div>
          </td>
        </tr>
        <tr>
          <td>IN</td>
          <td>period</td>
          <td>0..1</td>
          <td>Period</td>
          <td/>
          <td>
            <div>
              <p>The time period over which the calculations to be performed, if a duration is not provided</p>

            </div>
          </td>
        </tr>
        <tr>
          <td>IN</td>
          <td>params</td>
          <td>1..*</td>
          <td>code</td>
          <td/>
          <td>
            <div>
              <p>average|max|min|count  The statistical operations to be performed on the relevant operations.
                 Multiple statistics operations can be specified. These codes are defined 
                <a href="valueset-observation-statistics.html">here</a>
              </p>

            </div>
          </td>
        </tr>
        <tr>
          <td>OUT</td>
          <td>return</td>
          <td>1..*</td>
          <td>Observation</td>
          <td/>
          <td>
            <div>
              <p>A set of observations, one observation for each code, each containing one component for
                 each statistic. The Observation.component.code contains the statistic, and is relative
                 to the Observation.code and cannot be interpreted independently.  The Observation will
                 also contain a subject, effectivePeriod, and code reflecting the input parameters.  The
                 status is fixed to 
                <code>final</code>.
              </p>

            </div>
          </td>
        </tr>
        <tr>
          <td>OUT</td>
          <td>source</td>
          <td>0..*</td>
          <td>Observation</td>
          <td/>
          <td>
            <div>
              <p>Source observations on which the statistics are based</p>

            </div>
          </td>
        </tr>
      </table>
    </div>
  </text>
  <url value="http://hl7.org/fhir/OperationDefinition/Observation-stats"/>
  <name value="Observation Statistics"/>
  <status value="draft"/>
  <kind value="operation"/>
  <date value="2016-12-06T12:22:34+11:00"/>
  <publisher value="HL7 (FHIR Project)"/>
  <contact>
    <telecom>
      <system value="url"/>
      <value value="http://hl7.org/fhir"/>
    </telecom>
    <telecom>
      <system value="email"/>
      <value value="fhir@lists.hl7.org"/>
    </telecom>
  </contact>
  <description value="The Statistics operation performs a set of statistical calculations on a set of clinical
   measurements such as a blood pressure as stored on the server.  This operation is focused
   on [Observation](observation.html) resources with valueQuantity elements that have UCUM
   unit codes.  The set of Observations is defined by 4 parameters:   - the subject of the
   observations for which the statistics are being generated (`subject`) - which observations
   to generate statistics for (`code` and 'system', or 'coding') - the time period over which
   to generate statistics ('duration' or 'period') - the set of statistical analyses to return
   (`statistic`).   Possible statistical analyses (see [StatisticsCode](valueset-observation-statistics
  .html)):   - **average** (&quot;Average&quot;): The [mean](https://en.wikipedia.org/wiki/Arithmetic_m
  ean) of N measurements over the stated period  - **maximum** (&quot;Maximum&quot;): The
   [maximum](https://en.wikipedia.org/wiki/Maximal_element) value of N measurements over
   the stated period  - **minimum** (&quot;Minimum&quot;): The [minimum](https://en.wikipedia.org/wiki/
  Minimal_element) value of N measurements over the stated period  - **count** (&quot;Count&quot;):
   The [number] of valid measurements over the stated period that contributed to the other
   statistical outputs  - **totalcount** (&quot;Total Count&quot;): The total [number] of
   valid measurements over the stated period, including observations that were ignored because
   they did not contain valid result values  - **median** (&quot;Median&quot;): The [median](https://en
  .wikipedia.org/wiki/Median) of N measurements over the stated period  - **std-dev** (&quot;standard
   deviation&quot;): The [standard deviation](https://en.wikipedia.org/wiki/Standard_deviation)
   of N measurements over the stated period  - **sum** (&quot;sum&quot;): The [sum](https://en.wikipedi
  a.org/wiki/Summation) of N measurements over the stated period  - **variance** (&quot;variance&quot;)
  : The [variance](https://en.wikipedia.org/wiki/Variance) of N measurements over the stated
   period  - **%20** (&quot;20th percentile&quot;): The 20th [Percentile](https://en.wikipedia.org/wiki
  /Percentile) of N measurements over the stated period  - **%80** (&quot;80th percentile&quot;):
   The 80th [Percentile](https://en.wikipedia.org/wiki/Percentile) of N measurements over
   the stated period  - **4-lower** (&quot;lower quartile&quot;): The lower [Quartile](https://en.wikip
  edia.org/wiki/Quartile) Boundary of N measurements over the stated period  - **4-upper**
   (&quot;upper quartile&quot;): The upper [Quartile](https://en.wikipedia.org/wiki/Quartile)
   Boundary of N measurements over the stated period  - **4-dev** (&quot;quartile deviation&quot;):
   The difference between the upper and lower [Quartiles](https://en.wikipedia.org/wiki/Quartile)
   is called the Interquartile range. (IQR = Q3-Q1) Quartile deviation or Semi-interquartile
   range is one-half the difference between the first and the third quartiles.  - **5-1**
   (&quot;1st quintile&quot;): The lowest of four values that divide the N measurementsinto
   a frequency distribution of five classes with each containing one fifth of the total population
    - **5-2** (&quot;2nd quintile&quot;): The second of four values that divide the N measurementsinto
   a frequency distribution of five classes with each containing one fifth of the total population
    - **5-3** (&quot;3rd quintile&quot;): The third of four values that divide the N measurementsinto
   a frequency distribution of five classes with each containing one fifth of the total population
    - **5-4** (&quot;4th quintile&quot;): The fourth of four values that divide the N measurementsinto
   a frequency distribution of five classes with each containing one fifth of the total population
       If successful, the operation returns an Observation resource for each code with the
   results of the statistical calculations as component value pairs where the component code
   = the statistical code. The Observation also contains the the input parameters `patient`,`code`
   and `duration` parameters. If unsuccessful, an [OperationOutcome](operationoutcome.html)
   with an error message will be returned.   The client can request that all the observations
   on which the statistics are based be returned as well, using the include parameter. If
   an include parameter is specified, a limit may also be specified; the sources observations
   are subsetted at the server's discretion if count &gt; limit. This functionality is included
   with the intent of supporting graphical presentation"/>
  <code value="stats"/>
  <resource value="Observation"/>
  <system value="false"/>
  <type value="true"/>
  <instance value="false"/>
  <parameter>
    <name value="subject"/>
    <use value="in"/>
    <min value="1"/>
    <max value="1"/>
    <documentation value="The subject of the relevant Observations, which has the value of the Observation.subject.reference.
     E.g. 'Patient/123'. Reference can be to an absolute URL, but servers only perform stats
     on their own observations"/>
    <type value="uri"/>
  </parameter>
  <parameter>
    <name value="code"/>
    <use value="in"/>
    <min value="0"/>
    <max value="*"/>
    <documentation value="The test code(s) upon which the statistics are being performed. Provide along with a system,
     or as a coding. For example, the code  = &quot;45667-2&quot;  will evaluate all relevant
     Observations with this code in Observation.code. For LOINC codes that are panels, (e.g.
     55284-4) this means to include all the individual codes that are part of a panel"/>
    <type value="string"/>
  </parameter>
  <parameter>
    <name value="system"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation value="The system for the code(s). Or provide a coding instead"/>
    <type value="uri"/>
  </parameter>
  <parameter>
    <name value="coding"/>
    <use value="in"/>
    <min value="0"/>
    <max value="*"/>
    <documentation value="The test code upon which the statistics are being performed, as a Coding"/>
    <type value="Coding"/>
  </parameter>
  <parameter>
    <name value="duration"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation value="The time period of interest given as hours.  For example, the duration = &quot;1&quot;
     represents the last hour - the time period from on hour ago to now"/>
    <type value="decimal"/>
  </parameter>
  <parameter>
    <name value="period"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation value="The time period over which the calculations to be performed, if a duration is not provided"/>
    <type value="Period"/>
  </parameter>
  <parameter>
    <name value="params"/>
    <use value="in"/>
    <min value="1"/>
    <max value="*"/>
    <documentation value="average|max|min|count  The statistical operations to be performed on the relevant operations.
     Multiple statistics operations can be specified. These codes are defined [here](valueset-observation
    -statistics.html)"/>
    <type value="code"/>
  </parameter>
  <parameter>
    <name value="return"/>
    <use value="out"/>
    <min value="1"/>
    <max value="*"/>
    <documentation value="A set of observations, one observation for each code, each containing one component for
     each statistic. The Observation.component.code contains the statistic, and is relative
     to the Observation.code and cannot be interpreted independently.  The Observation will
     also contain a subject, effectivePeriod, and code reflecting the input parameters.  The
     status is fixed to `final`."/>
    <type value="Observation"/>
  </parameter>
  <parameter>
    <name value="source"/>
    <use value="out"/>
    <min value="0"/>
    <max value="*"/>
    <documentation value="Source observations on which the statistics are based"/>
    <type value="Observation"/>
  </parameter>
</OperationDefinition>

Usage note: every effort has been made to ensure that the examples are correct and useful, but they are not a normative part of the specification.