Quality Measure Implementation Guide, published by HL7 International / Clinical Quality Information. This guide is not an authorized publication; it is the continuous build for version 2.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/fhir-cqm/ and changes regularly. See the Directory of published versions
| Page standards status: Trial-use | Maturity Level: 4 |
<OperationDefinition xmlns="http://hl7.org/fhir">
<id value="cqm-data-requirements"/>
<language value="en"/>
<text>
<status value="generated"/>
<div xmlns="http://www.w3.org/1999/xhtml"><p class="res-header-id"><b>Generated Narrative: OperationDefinition cqm-data-requirements</b></p><a name="cqm-data-requirements"> </a><a name="hccqm-data-requirements"> </a><p>URL: [base]/$data-requirements</p><p>URL: [base]/Measure/$data-requirements</p><p>URL: [base]/Measure/[id]/$data-requirements</p><p>URL: [base]/Library/$data-requirements</p><p>URL: [base]/Library/[id]/$data-requirements</p><h3>Parameters</h3><table class="grid"><tr><td><b>Use</b></td><td><b>Name</b></td><td><b>Scope</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>url</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#uri">uri</a></td><td/><td><div><p>Identifies a measure or other artifact for which data requirements will be determined (specified as an optionally-versioned canonical reference). The server must know the measure or artifact (i.e. it is defined explicitly in the server's measures or artifacts). It is an error to use this parameter when the operation is invoked on an instance. Note that for backwards compatibility, canonical references in artifact operation parameters are represented using the <code>uri</code> type, rather than the R4 <code>canonical</code> type.</p>
</div></td></tr><tr><td>IN</td><td>parameters</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/parameters.html">Parameters</a></td><td/><td><div><p>Any input parameters for the artifact(s). If the artifact is a logic library, or references logic libraries, parameters defined in this input will be bound by name to parameters defined in the logic library (or referenced libraries). If the logic library is a CQL library, parameter types are mapped to CQL as specified in the Using CQL with FHIR 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.</p>
</div></td></tr><tr><td>IN</td><td>periodStart</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#date">date</a></td><td/><td><div><p>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</p>
</div></td></tr><tr><td>IN</td><td>periodEnd</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#date">date</a></td><td/><td><div><p>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</p>
</div></td></tr><tr><td>IN</td><td>defaultArtifactVersion</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#uri">uri</a></td><td/><td><div><p>Specifies a version to use for a canonical or artifact resource if the artifact referencing
the resource does not already specify a version. The format is the same as a canonical URL:
[url]|[version] - e.g. http://loinc.org|2.56</p>
<p>Note that this is a generalization of the <code>system-version</code> parameter defined in the $expand operation
to apply to any canonical resource, including code systems.</p>
</div></td></tr><tr><td>IN</td><td>checkArtifactVersion</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#uri">uri</a></td><td/><td><div><p>Edge Case: Specifies a version to use for a canonical or artifact resource. If the artifact referencing
the resource specifies a different version, an error is returned instead of the package. The
format is the same as a canonical URL: [url]|[version] - e.g. http://loinc.org|2.56</p>
<p>Note that this is a generalization of the <code>check-system-version</code> parameter defined in the $expand operation to
apply to any canonical resource, including code systems.</p>
</div></td></tr><tr><td>IN</td><td>forceArtifactVersion</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#uri">uri</a></td><td/><td><div><p>Edge Case: Specifies a version to use for a canonical or artifact resource. This parameter overrides any
specified version in the artifact (and any artifacts it depends on). The
format is the same as a canonical URL: [system]|[version] - e.g.
http://loinc.org|2.56. Note that this has obvious safety issues, in that it may
result in a value set expansion giving a different list of codes that is both
wrong and unsafe, and implementers should only use this capability reluctantly.</p>
<p>It primarily exists to deal with situations where specifications have fallen
into decay as time passes. If the version of a canonical is overridden, the version used SHALL
explicitly be represented in the expansion parameters.</p>
<p>Note that this is a generalization of the <code>force-system-version</code> parameter defined in the $expand operation
to apply to any canonical resource, including code systems.</p>
</div></td></tr><tr><td>IN</td><td>manifest</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#canonical">canonical</a> (<a href="http://hl7.org/fhir/uv/crmi/STU2/StructureDefinition-crmi-manifestlibrary.html" title="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-manifestlibrary">CRMI Manifest Library</a>)</td><td/><td><div><p>Specifies an asset-collection library that defines version
bindings for code systems and other canonical resources referenced by the value
set(s) being expanded and other canonical resources referenced by the artifact.
When specified, the expansion parameters of the manifest are used to provide expansion
behavior and canonical resolution for dependencies encountered while processing the
operation.</p>
</div></td></tr><tr><td>IN</td><td>artifactEndpointConfiguration</td><td/><td>0..*</td><td/><td/><td><div><p>Configuration information to resolve canonical artifacts</p>
<ul>
<li><code>artifactRoute</code>: An optional route used to determine whether this endpoint is expected to be able to resolve artifacts that match the route (i.e. start with the route, up to and including the entire url)</li>
<li><code>endpointUri</code>: The URI of the endpoint, exclusive with the <code>endpoint</code> parameter</li>
<li><code>endpoint</code>: An Endpoint resource describing the endpoint, exclusive with the <code>endpointUri</code> parameter</li>
</ul>
<p><strong>Processing semantics</strong>:</p>
<p>Create a canonical-like reference (e.g.
<code>{canonical.url}|{canonical.version}</code> or similar extensions for non-canonical artifacts).</p>
<ul>
<li>Given a single <code>artifactEndpointConfiguration</code>
<ul>
<li>When <code>artifactRoute</code> is present
<ul>
<li>And canonical or artifact reference <em>starts with</em> <code>artifactRoute</code></li>
<li>Then attempt to resolve with <code>endpointUri</code> or <code>endpoint</code></li>
</ul>
</li>
<li>When <code>artifactRoute</code> is not present
<ul>
<li>Then attempt to resolve with <code>endpointUri</code> or <code>endpoint</code></li>
</ul>
</li>
</ul>
</li>
<li>Given multiple <code>artifactEndpointConfiguration</code>s
<ul>
<li>Then rank order each configuration (see below)</li>
<li>And attempt to resolve with <code>endpointUri</code> or <code>endpoint</code> in order until resolved</li>
</ul>
</li>
</ul>
<p>Rank each <code>artifactEndpointConfiguration</code> such that:</p>
<ul>
<li>if <code>artifactRoute</code> is present <em>and</em> canonical or artifact reference <em>starts with</em> <code>artifactRoute</code>: rank based on number of matching characters</li>
<li>if <code>artifactRoute</code> is <em>not</em> present: include but rank lower</li>
</ul>
<p>NOTE: For evenly ranked <code>artifactEndpointConfiguration</code>s, order as defined in the
OperationDefinition.</p>
</div></td></tr><tr><td>IN</td><td>artifactEndpointConfiguration.artifactRoute</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#uri">uri</a></td><td/><td/></tr><tr><td>IN</td><td>artifactEndpointConfiguration.endpointUri</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#uri">uri</a></td><td/><td/></tr><tr><td>IN</td><td>artifactEndpointConfiguration.endpoint</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/endpoint.html">Endpoint</a></td><td/><td/></tr><tr><td>OUT</td><td>return</td><td/><td>1..1</td><td><a href="http://hl7.org/fhir/R4/library.html">Library</a></td><td/><td><div><p>The result of the requirements gathering is a module-definition Library that describes the aggregate parameters, data requirements, and dependencies of the measure(s).</p>
</div></td></tr></table><div><p>The effect of invoking this operation is to determine the aggregate set of data requirements and dependencies for the measure or set of measures. The result is a Library resource with a type of module-definition that contains all the parameter definitions and data requirements of the libraries referenced by the measures. Implementations SHOULD aggregate data requirements intelligently (i.e. by collapsing overlapping data requirements). This operation defines what resources are subsequently referenced in the evaluatedResources element of the MeasureReport when submitting measure data</p>
</div></div>
</text>
<extension
url="http://hl7.org/fhir/StructureDefinition/structuredefinition-wg">
<valueCode value="cqi"/>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm">
<valueInteger value="4">
<extension
url="http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom">
<valueCanonical
value="http://hl7.org/fhir/uv/cqm/ImplementationGuide/hl7.fhir.uv.cqm"/>
</extension>
</valueInteger>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status">
<valueCode value="trial-use">
<extension
url="http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom">
<valueCanonical
value="http://hl7.org/fhir/uv/cqm/ImplementationGuide/hl7.fhir.uv.cqm"/>
</extension>
</valueCode>
</extension>
<url
value="http://hl7.org/fhir/uv/cqm/OperationDefinition/cqm-data-requirements"/>
<version value="2.0.0"/>
<name value="DataRequirements"/>
<status value="active"/>
<kind value="operation"/>
<date value="2026-06-22"/>
<publisher value="HL7 International / Clinical Quality Information"/>
<contact>
<telecom>
<system value="url"/>
<value value="http://www.hl7.org/Special/committees/cqi"/>
</telecom>
</contact>
<description
value="The data-requirements operation aggregates and returns the parameters and data requirements for a measure or set of measures and all dependencies as a single module definition"/>
<jurisdiction>
<coding>
<system value="http://unstats.un.org/unsd/methods/m49/m49.htm"/>
<code value="001"/>
</coding>
</jurisdiction>
<code value="data-requirements"/>
<comment
value="The effect of invoking this operation is to determine the aggregate set of data requirements and dependencies for the measure or set of measures. The result is a Library resource with a type of module-definition that contains all the parameter definitions and data requirements of the libraries referenced by the measures. Implementations SHOULD aggregate data requirements intelligently (i.e. by collapsing overlapping data requirements). This operation defines what resources are subsequently referenced in the evaluatedResources element of the MeasureReport when submitting measure data"/>
<resource value="Measure"/>
<resource value="Library"/>
<system value="true"/>
<type value="true"/>
<instance value="true"/>
<parameter>
<name value="url"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="Identifies a measure or other artifact for which data requirements will be determined (specified as an optionally-versioned canonical reference). The server must know the measure or artifact (i.e. it is defined explicitly in the server's measures or artifacts). It is an error to use this parameter when the operation is invoked on an instance. Note that for backwards compatibility, canonical references in artifact operation parameters are represented using the `uri` type, rather than the R4 `canonical` type."/>
<type value="uri"/>
</parameter>
<parameter>
<name value="parameters"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="Any input parameters for the artifact(s). If the artifact is a logic library, or references logic libraries, parameters defined in this input will be bound by name to parameters defined in the logic library (or referenced libraries). If the logic library is a CQL library, parameter types are mapped to CQL as specified in the Using CQL with FHIR 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."/>
<type value="Parameters"/>
</parameter>
<parameter>
<name value="periodStart"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="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"/>
<type value="date"/>
</parameter>
<parameter>
<name value="periodEnd"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="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"/>
<type value="date"/>
</parameter>
<parameter>
<name value="defaultArtifactVersion"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="Specifies a version to use for a canonical or artifact resource if the artifact referencing
the resource does not already specify a version. The format is the same as a canonical URL:
[url]|[version] - e.g. http://loinc.org|2.56
Note that this is a generalization of the `system-version` parameter defined in the $expand operation
to apply to any canonical resource, including code systems."/>
<type value="uri"/>
</parameter>
<parameter>
<name value="checkArtifactVersion"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="Edge Case: Specifies a version to use for a canonical or artifact resource. If the artifact referencing
the resource specifies a different version, an error is returned instead of the package. The
format is the same as a canonical URL: [url]|[version] - e.g. http://loinc.org|2.56
Note that this is a generalization of the `check-system-version` parameter defined in the $expand operation to
apply to any canonical resource, including code systems."/>
<type value="uri"/>
</parameter>
<parameter>
<name value="forceArtifactVersion"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="Edge Case: Specifies a version to use for a canonical or artifact resource. This parameter overrides any
specified version in the artifact (and any artifacts it depends on). The
format is the same as a canonical URL: [system]|[version] - e.g.
http://loinc.org|2.56. Note that this has obvious safety issues, in that it may
result in a value set expansion giving a different list of codes that is both
wrong and unsafe, and implementers should only use this capability reluctantly.
It primarily exists to deal with situations where specifications have fallen
into decay as time passes. If the version of a canonical is overridden, the version used SHALL
explicitly be represented in the expansion parameters.
Note that this is a generalization of the `force-system-version` parameter defined in the $expand operation
to apply to any canonical resource, including code systems."/>
<type value="uri"/>
</parameter>
<parameter>
<name value="manifest"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="Specifies an asset-collection library that defines version
bindings for code systems and other canonical resources referenced by the value
set(s) being expanded and other canonical resources referenced by the artifact.
When specified, the expansion parameters of the manifest are used to provide expansion
behavior and canonical resolution for dependencies encountered while processing the
operation."/>
<type value="canonical"/>
<targetProfile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-manifestlibrary"/>
</parameter>
<parameter>
<name value="artifactEndpointConfiguration"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="Configuration information to resolve canonical artifacts
* `artifactRoute`: An optional route used to determine whether this endpoint is expected to be able to resolve artifacts that match the route (i.e. start with the route, up to and including the entire url)
* `endpointUri`: The URI of the endpoint, exclusive with the `endpoint` parameter
* `endpoint`: An Endpoint resource describing the endpoint, exclusive with the `endpointUri` parameter
**Processing semantics**:
Create a canonical-like reference (e.g.
`{canonical.url}|{canonical.version}` or similar extensions for non-canonical artifacts).
* Given a single `artifactEndpointConfiguration`
* When `artifactRoute` is present
* And canonical or artifact reference *starts with* `artifactRoute`
* Then attempt to resolve with `endpointUri` or `endpoint`
* When `artifactRoute` is not present
* Then attempt to resolve with `endpointUri` or `endpoint`
* Given multiple `artifactEndpointConfiguration`s
* Then rank order each configuration (see below)
* And attempt to resolve with `endpointUri` or `endpoint` in order until resolved
Rank each `artifactEndpointConfiguration` such that:
* if `artifactRoute` is present *and* canonical or artifact reference *starts with* `artifactRoute`: rank based on number of matching characters
* if `artifactRoute` is *not* present: include but rank lower
NOTE: For evenly ranked `artifactEndpointConfiguration`s, order as defined in the
OperationDefinition."/>
<part>
<name value="artifactRoute"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<type value="uri"/>
</part>
<part>
<name value="endpointUri"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<type value="uri"/>
</part>
<part>
<name value="endpoint"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<type value="Endpoint"/>
</part>
</parameter>
<parameter>
<name value="return"/>
<use value="out"/>
<min value="1"/>
<max value="1"/>
<documentation
value="The result of the requirements gathering is a module-definition Library that describes the aggregate parameters, data requirements, and dependencies of the measure(s)."/>
<type value="Library"/>
</parameter>
</OperationDefinition>