FHIR CI-Build

This is the Continuous Integration Build of FHIR (will be incorrect/inconsistent at times).
See the Directory of published versions icon

Responsible Owner: Clinical Quality Information icon Work GroupTrial Use Compartments: N/A

The evaluate operation processes the given Measure(s) to produce the corresponding MeasureReport(s). This operation expects that Measure resources used have a computable representation. The value of title elements in the resulting MeasureReport should be copied from the corresponding elements on the Measure.

The canonical URL for this operation definition is

 http://hl7.org/fhir/OperationDefinition/Measure-evaluate

Formal Definition (as a OperationDefinition).

URL: [base]/Measure/$evaluate

This is an idempotent operation

In Parameters:
Name Scope Cardinality Type Binding Profile Documentation
measureUrl 1..* canonical

The URL of the measure(s) to be evaluated. A measure URL is specified in the url element of the Measure resource. The measure URL remains the same when the measure is stored on different servers.

periodStart 1..1 date

The start of the measurement period. In keeping with the semantics of the date parameter used in the FHIR search operation, the period will start at the beginning of the period implied by the supplied timestamp. E.g. a value of 2014 would set the period start to be 2014-01-01T00:00:00 inclusive

periodEnd 1..1 date

The end of the measurement period. The period will end at the end of the period implied by the supplied timestamp. E.g. a value of 2014 would set the period end to be 2014-12-31T23:59:59 inclusive

subject 0..1 string
(reference)

Subject(s) for which the measure will be calculated. The subject may be a Patient, Practitioner, PractitionerRole, Organization, Location, Device, or Group. Subjects provided in this parameter SHALL match the subjectType of the measure being evaluated (e.g. if the Measure.group.subjectType is Patient, the subject SHALL be a reference to a Patient or a Group of Patients). If no subject is provided, what subjects are evaluated is up to the server. This parameter cannot be used with the subjectGroup parameter.

subjectGroup 0..1 Group

Subjects for which the measure will be evaluated, provided as a Group resource. Subjects provided in this parameter SHALL match the subjectType of the measure being evaluated. (e.g. if the Measure.group.subjectType is Patient, the subject SHALL be a reference to a Patient or a Group of Patients). If no subject is provided, what subjects are evaluated is up to the server. This parameter cannot be used with the subject parameter.

reportType 0..1 code Measure Report Evaluation Type (Required)

The type of measure report: individual, subject-list, or summary. If not specified, a default value of summary will be used if the subject parameter is supplied and is a Group resource; a default value of individual will be used if the subject parameter is supplied and is not a Group resource; otherwise, a default value of summary will be used. NOTE: Implementations should support the use of subject for individual and population for summary for backwards compatibility with existing implementations.

reporter 0..1 string
(reference)

The provider for which the report will be run. This may be a reference to a Practitioner, PractitionerRole, or Organization. If specified, systems MAY use this information to determine subjects for which the measure will be calculated, but how subjects are determined is implementation-specific. This parameter is reflected in the reporter element of the resulting MeasureReport(s). This parameter cannot be used with the reporterResource parameter.

reporterResource 0..1 string
(reference)

The provider for which the report will be run, provided as an Organization resource. This is intended to support the use case in which the organization information is not on the server performing the evaluation, for example an ad-hoc group of practitioners that are part of a provider group. This parameter is reflected in the reporter element of the resulting MeasureReport(s). This parameter cannot be used with the reporter parameter.

location 0..* string
(reference)

The location(s) for which the report will be run. This parameter is reflected in the location element of the resulting MeasureReport(s).

lastReceivedOn 0..1 dateTime

The date the results of this measure were last received. This parameter is only valid for patient-level reports and is used to indicate when the last time a result for this patient was received. This information can be used to limit the set of resources returned for a patient-level report

parameters 0..1 Parameters

Any input parameters for the evaluation. Parameters defined in this input will be made available by name to the CQL expression. Parameter types are mapped to CQL as specified in the Using CQL with FHIR icon implementation guide. If a parameter appears more than once in the input Parameters resource, it is represented with a List in the input CQL. If a parameter has parts, it is represented as a Tuple in the input CQL.

manifest 0..1 canonical(Library)

Specifies an asset-collection library that provides dependency version resolution and expansion rules for the operation. See the version manifest discussion in the Canonical Resource Management Infrastructure IG icon for a complete description of how manifest values are used to provide defaults for dependency version resolution and expansion parameters. Parameters specified directly in the operation override behaviors specified by the manifest parameter. In general, if this parameter is supplied, it is expected to be used in nested operation calls. For example, in evaluating a measure, if the expansion of a value set is required, this parameter SHALL be supplied to that expansion.

stratifier 0..*

Additional stratifier criteria for the measure. The resulting MeasureReport will contain this additional stratifier information as well as any stratifiers defined in the Measure being reported.

stratifier.measureUrl 0..* canonical

If the evaluate operation is for multiple measures, this parameter may be used to specify which measures the additional stratifier should be reported on. If not specified, the stratifier will be reported on all the measures. Note that if this results in a stratifier definition that cannot be interpreted correctly for the measure being reported, the behavior is at server discretion; it may throw an error, or simply ignore the additional stratifier definition.

stratifier.groupId 0..* string

If the measure being evaluated has multiple groups, this parameter may be used to specify which groups the additional stratifier should be reported on. If not specified, the stratifier will be reported on all groups in the measure being reported. Note that if this results in a stratifier definition that cannot be interpreted correctly for the measure group being reported, the behavior is at server discretion; it may throw an error, or simply ignore the additional stratifier definition.

stratifier.component 1..*

One or more components of the stratifier definition. Additional stratifiers are reported in the MeasureReport in the same way as stratifiers defined in the Measure.

stratifier.component.code 0..1 code Measure Stratifier Example (Example)

Meaning of the stratifier component.

stratifier.component.description 0..1 markdown

Human readable description of the stratifier component

stratifier.component.criteria 1..1 Expression

An expression that returns the value of this component of the stratifier for a member of the population. This is typically the name of an expression defined within a referenced library, but it may also be a path to a stratifier element, evaluated from the perspective of the measure subject. If this is a non-subject-based measure, the expression may be a reference to a function that takes an argument of the type of the measure basis, allowing the stratifier value to be determined for each member of the population.

stratifier.component.valueSet 0..1 canonical(ValueSet)

A value set defining possible stratifier values. If both expression and valueset are specified, they SHALL be consistent (i.e. the expression SHALL evaluate to a code that is a member of the specified valueset).

stratifier.component.unit 0..1 string

Indicates what units, if any, stratifier values are expected to be expressed in. This element SHOULD be specified in UCUM units or calendar units. This information SHOULD be provided if it cannot be inferred from the stsratifier expression directly.

supplementalData 0..*

What additional supplemental data should be reported with the measure. This additional data is specified in the same was as supplemental data in the Measure resource, and is reported in the same way in the MeasureReport.

supplementalData.code 0..1 CodeableConcept Measure Supplemental Data Example (Example)

Meaning of the supplemental data.

supplementalData.usage 0..* CodeableConcept MeasureDataUsage icon (Extensible)

supplemental-data | risk-adjustment | factor

supplementalData.description 0..1 markdown

Human readable description of this supplemental data element

supplementalData.criteria 1..1 Expression

Expression describing the additional data to be reported. This may be the name of an expression in a library, or it may be a path to a specific data element, reachable from the subject being evaluated.

Out Parameters:
Name Scope Cardinality Type Binding Profile Documentation
return 0..* Bundle

The results of the measure evaluation, returned as a Bundle for each input subject. The first entries in each Bundle are MeasureReport(s) corresponding to the measures that were calculated. Subsequent entries in each Bundle are resources representing the data that was created or referenced during the calculation of the measures, and referenced from the appropriate element of the corresponding MeasureReport resources. See the guidance on Bundle structure for discussion about the Bundle content and organization.\n\nNote that even though there is a single parameter named return of type Bundle, it is a multi-cardinality parameter, and so will still be returned using a Parameters resource, as described in the general operations framework response.

The effect of invoking this operation is to calculate the specified measure(s) for the given subject(s), or a server-determined set of subjects if no subject is supplied. For individual and subject-list reports, the result is a set of Bundles, one for each evaluated subject, where the first entries in each bundle are MeasureReport resources, and subsequent entries in the Bundle are resources evaluated or created as part of the measure evaluation. For the summary report, the result of this operation is a single bundle with a MeasureReport for each calculated measure with a type of summary. Note that whether or not this operation affects the state of the server depends on whether the server persists the generated MeasureReport. If the MeasureReport is not persisted, this operation can be invoked with GET.

Request: Request evaluation of the CMS146 measure for patient 124 over a measurement period of the first 3 months of 2014

GET [base]/Measure/CMS146/$evaluate?periodStart=2014&periodEnd=2014

GET [base]/Measure/CMS146/$evaluate?subject=124&periodStart=2014-01&periodend=2014-03

Response: Returned on successful evaluation

HTTP/1.1 200 OK

<?xml version="1.0" encoding="UTF-8"?>
<Parameters  xmlns="http://hl7.org/fhir">
  <parameter>
    <name value="return"/>
    <resource>
      <Bundle>
        <type value="transaction-response"/>
        <entry>
          <resource>
            <MeasureReport>
              <id value="evaluate-measure-operation-response"/>
              <text>
                <status value="generated"/>
                <div xmlns="http://www.w3.org/1999/xhtml">
              <!-- Generated... -->
                </div>
              </text>
              <status value="complete"/>
              <type value="summary"/>
              <measure value="http://example.org/fhir/Measure/CMS146"/>
              <reporter>
                <reference value="Organization/reporter"/>
              </reporter>
              <period>
                  <start value="2014-01-01" />
                  <end value="2014-12-31" />
              </period>
              <group id="CMS146-group-1">
                <population>
                  <code><coding><code value="initial-population"/></coding></code>
                  <count value="500"/>
                </population>
                <population>
                  <code><coding><code value="numerator"/></coding></code>
                  <count value="200"/>
                </population>
                <population>
                  <code><coding><code value="denominator"/></coding></code>
                  <count value="500"/>
                </population>
                <population>
                  <code><coding><code value="denominator-exclusion"/></coding></code>
                  <count value="100"/>
                </population>
                <stratifier>
                  <code><text value="stratifier-ages-up-to-9"/></code>
                  <stratum>
                    <value><text value="true"/></value>
                    <population>
                      <code><coding><code value="initial-population"/></coding></code>
                      <count value="250"/>
                    </population>
                    <population>
                      <code><coding><code value="numerator"/></coding></code>
                      <count value="100"/>
                    </population>
                    <population>
                      <code><coding><code value="denominator"/></coding></code>
                      <count value="250"/>
                    </population>
                    <population>
                      <code><coding><code value="denominator-exclusion"/></coding></code>
                      <count value="50"/>
                    </population>
                  </stratum>
                  <stratum>
                    <value><text value="false"/></value>
                    <population>
                      <code><coding><code value="initial-population"/></coding></code>
                      <count value="250"/>
                    </population>
                    <population>
                      <code><coding><code value="numerator"/></coding></code>
                      <count value="100"/>
                    </population>
                    <population>
                      <code><coding><code value="denominator"/></coding></code>
                      <count value="250"/>
                    </population>
                    <population>
                      <code><coding><code value="denominator-exclusion"/></coding></code>
                      <count value="50"/>
                    </population>
                  </stratum>
                </stratifier>
                <stratifier>
                  <code><text value="stratifier-ages-10-plus"/></code>
                  <stratum>
                    <value><text value="true"/></value>
                    <population>
                      <code><coding><code value="initial-population"/></coding></code>
                      <count value="250"/>
                    </population>
                    <population>
                      <code><coding><code value="numerator"/></coding></code>
                      <count value="100"/>
                    </population>
                    <population>
                      <code><coding><code value="denominator"/></coding></code>
                      <count value="250"/>
                    </population>
                    <population>
                      <code><coding><code value="denominator-exclusion"/></coding></code>
                      <count value="50"/>
                    </population>
                  </stratum>
                  <stratum>
                    <value><text value="false"/></value>
                    <population>
                      <code><coding><code value="initial-population"/></coding></code>
                      <count value="250"/>
                    </population>
                    <population>
                      <code><coding><code value="numerator"/></coding></code>
                      <count value="100"/>
                    </population>
                    <population>
                      <code><coding><code value="denominator"/></coding></code>
                      <count value="250"/>
                    </population>
                    <population>
                      <code><coding><code value="denominator-exclusion"/></coding></code>
                      <count value="50"/>
                    </population>
                  </stratum>
                </stratifier>
                <stratifier>
                  <code><text value="stratifier-gender"/></code>
                  <stratum>
                    <value><text value="male"/></value>
                    <population>
                      <code><coding><code value="initial-population"/></coding></code>
                      <count value="250"/>
                    </population>
                    <population>
                      <code><coding><code value="numerator"/></coding></code>
                      <count value="100"/>
                    </population>
                    <population>
                      <code><coding><code value="denominator"/></coding></code>
                      <count value="250"/>
                    </population>
                    <population>
                      <code><coding><code value="denominator-exclusion"/></coding></code>
                      <count value="50"/>
                    </population>
                  </stratum>
                  <stratum>
                    <value><text value="female"/></value>
                    <population>
                      <code><coding><code value="initial-population"/></coding></code>
                      <count value="250"/>
                    </population>
                    <population>
                      <code><coding><code value="numerator"/></coding></code>
                      <count value="100"/>
                    </population>
                    <population>
                      <code><coding><code value="denominator"/></coding></code>
                      <count value="250"/>
                    </population>
                    <population>
                      <code><coding><code value="denominator-exclusion"/></coding></code>
                      <count value="50"/>
                    </population>
                  </stratum>
                  <stratum>
                    <value><text value="other"/></value>
                    <population>
                      <code><coding><code value="initial-population"/></coding></code>
                      <count value="0"/>
                    </population>
                    <population>
                      <code><coding><code value="numerator"/></coding></code>
                      <count value="0"/>
                    </population>
                    <population>
                      <code><coding><code value="denominator"/></coding></code>
                      <count value="0"/>
                    </population>
                    <population>
                      <code><coding><code value="denominator-exclusion"/></coding></code>
                      <count value="0"/>
                    </population>
                  </stratum>
                  <stratum>
                    <value><text value="unknown"/></value>
                    <population>
                      <code><coding><code value="initial-population"/></coding></code>
                      <count value="0"/>
                    </population>
                    <population>
                      <code><coding><code value="numerator"/></coding></code>
                      <count value="0"/>
                    </population>
                    <population>
                      <code><coding><code value="denominator"/></coding></code>
                      <count value="0"/>
                    </population>
                    <population>
                      <code><coding><code value="denominator-exclusion"/></coding></code>
                      <count value="0"/>
                    </population>
                  </stratum>
                </stratifier>
              </group>
            </MeasureReport>
          </resource>
        </entry>
        <entry>
          <resource>
            <Organization>
              <id value="reporter"/>
              <name value="Good Health Hospital"/>
            </Organization>
          </resource>
        </entry>
      </Bundle>
    </resource>
  </parameter>
</Parameters>

 

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