Clinical Practice Guidelines, published by HL7 International / Clinical Decision Support. 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/cqf-recommendations/ and changes regularly. See the Directory of published versions
Page standards status: Trial-use | Maturity Level: 2 |
<OperationDefinition xmlns="http://hl7.org/fhir">
<id value="cpg-activitydefinition-apply"/>
<text>
<status value="generated"/>
<div xmlns="http://www.w3.org/1999/xhtml"><p class="res-header-id"><b>Generated Narrative: OperationDefinition cpg-activitydefinition-apply</b></p><a name="cpg-activitydefinition-apply"> </a><a name="hccpg-activitydefinition-apply"> </a><a name="cpg-activitydefinition-apply-en-US"> </a><p>URL: [base]/ActivityDefinition/$apply</p><p>URL: [base]/ActivityDefinition/[id]/$apply</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..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#uri">uri</a></td><td/><td><div><p>Canonical URL of the ActivityDefinition when invoked at the resource type level. This is exclusive with the <code>ActivityDefinition</code> parameter.</p>
</div></td></tr><tr><td>IN</td><td>version</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#string">string</a></td><td/><td><div><p>Version of the ActivityDefinition when invoked at the resource type level. This is exclusive with the <code>ActivityDefinition</code> parameter.</p>
</div></td></tr><tr><td>IN</td><td>activityDefinition</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/activitydefinition.html">ActivityDefinition</a></td><td/><td><div><p>The activity definition to apply. If the operation is invoked on an instance, this parameter is not allowed. If the operation is invoked at the type level, this parameter is required</p>
</div></td></tr><tr><td>IN</td><td>subject</td><td/><td>1..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#string">string</a><br/>(<a href="http://hl7.org/fhir/R4/search.html#reference">reference</a>)</td><td/><td><div><p>The subject(s) that is/are the target of the activity definition to be applied. The subject may be a Patient, Practitioner, Organization, Location, Device, or Group. Subjects provided in this parameter will be resolved as the subject of the ActivityDefinition based on the type of the subject. If multiple subjects of the same type are provided, the behavior is implementation-defined</p>
</div></td></tr><tr><td>IN</td><td>encounter</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#string">string</a><br/>(<a href="http://hl7.org/fhir/R4/search.html#reference">reference</a>)</td><td/><td><div><p>The encounter in context, if any</p>
</div></td></tr><tr><td>IN</td><td>practitioner</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#string">string</a><br/>(<a href="http://hl7.org/fhir/R4/search.html#reference">reference</a>)</td><td/><td><div><p>The practitioner in context</p>
</div></td></tr><tr><td>IN</td><td>organization</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#string">string</a><br/>(<a href="http://hl7.org/fhir/R4/search.html#reference">reference</a>)</td><td/><td><div><p>The organization in context</p>
</div></td></tr><tr><td>IN</td><td>userType</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#CodeableConcept">CodeableConcept</a></td><td/><td><div><p>The type of user initiating the request, e.g. patient, healthcare provider, or specific type of healthcare provider (physician, nurse, etc.)</p>
</div></td></tr><tr><td>IN</td><td>userLanguage</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#CodeableConcept">CodeableConcept</a></td><td/><td><div><p>Preferred language of the person using the system</p>
</div></td></tr><tr><td>IN</td><td>userTaskContext</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#CodeableConcept">CodeableConcept</a></td><td/><td><div><p>The task the system user is performing, e.g. laboratory results review, medication list review, etc. This information can be used to tailor decision support outputs, such as recommended information resources</p>
</div></td></tr><tr><td>IN</td><td>setting</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#CodeableConcept">CodeableConcept</a></td><td/><td><div><p>The current setting of the request (inpatient, outpatient, etc.)</p>
</div></td></tr><tr><td>IN</td><td>settingContext</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#CodeableConcept">CodeableConcept</a></td><td/><td><div><p>Additional detail about the setting of the request, if any</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 defined in libraries referenced by the ActivityDefinition. Parameter types are mapped to CQL as specified in the Using CQL section of this 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>useServerData</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#boolean">boolean</a></td><td/><td><div><p>Whether to use data from the server performing the evaluation. If this parameter is true (the default), then the operation will use data first from any bundles provided as parameters (through the data and prefetch parameters), second data from the server performing the operation, and third, data from the dataEndpoint parameter (if provided). If this parameter is false, the operation will use data first from the bundles provided in the data or prefetch parameters, and second from the dataEndpoint parameter (if provided).</p>
</div></td></tr><tr><td>IN</td><td>data</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/bundle.html">Bundle</a></td><td/><td><div><p>Data to be made available to the ActivityDefinition evaluation. This parameter is exclusive with the prefetchData parameter (i.e. either provide all data as a single bundle, or provide data using multiple bundles with prefetch descriptions).</p>
</div></td></tr><tr><td>IN</td><td>prefetchData</td><td/><td>0..*</td><td></td><td/><td><div><p>Data to be made available to the ActivityDefinition evaluation, organized as prefetch response bundles. Each prefetchData parameter specifies either the name of the prefetchKey it is satisfying, a DataRequirement describing the prefetch, or both.</p>
</div></td></tr><tr><td>IN</td><td>prefetchData.key</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#string">string</a></td><td/><td><div><p>The key of the prefetch item. This typically corresponds to the name of a parameter in a library, or the name of a prefetch item in a CDS Hooks discovery response</p>
</div></td></tr><tr><td>IN</td><td>prefetchData.descriptor</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/metadatatypes.html#DataRequirement">DataRequirement</a></td><td/><td><div><p>A DataRequirement describing the content of the prefetch item.</p>
</div></td></tr><tr><td>IN</td><td>prefetchData.data</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/bundle.html">Bundle</a></td><td/><td><div><p>The prefetch data as a Bundle. If the prefetchData has no prefetchResult part, it indicates there is no data associated with this prefetch item.</p>
</div></td></tr><tr><td>IN</td><td>dataEndpoint</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/endpoint.html">Endpoint</a></td><td/><td><div><p>An endpoint to use to access data referenced by retrieve operations in libraries referenced by the ActivityDefinition. If provided, this endpoint is used after the data or prefetchData bundles, and the server, if the useServerData parameter is true.</p>
</div></td></tr><tr><td>IN</td><td>artifactEndpointConfiguration</td><td/><td>0..*</td><td></td><td/><td><div><p>Configuration information to resolve canonical artifacts</p>
<p>Processing Semantics:</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 <code>artifactRoute</code> <em>starts with</em> canonical or artifact reference</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> <code>artifactRoute</code> <em>starts with</em> canonical or artifact reference: 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><div><p>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)</p>
</div></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><div><p>The URI of the endpoint, exclusive with the <code>endpoint</code> parameter</p>
</div></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><div><p>An Endpoint resource describing the endpoint, exclusive with the <code>endpointUri</code> parameter</p>
</div></td></tr><tr><td>IN</td><td>terminologyEndpoint</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/endpoint.html">Endpoint</a></td><td/><td><div><p>An endpoint to use to access terminology (i.e. valuesets, codesystems, and membership testing) referenced by the ActivityDefinition. If no terminology endpoint is supplied, the evaluation will attempt to use the server on which the operation is being performed as the terminology server.</p>
</div></td></tr><tr><td>OUT</td><td>return</td><td/><td>1..1</td><td><a href="http://hl7.org/fhir/R4/resource.html">Resource</a></td><td/><td><div><p>The request resource that is the result of applying the definition</p>
</div></td></tr></table><div><p>The result of invoking this operation is a resource of the type specified by the activity definition, with all the definitions resolved as appropriate for the type of resource. Any dynamicValue elements will be evaluated (in the order in which they appear in the resource) and the results applied to the returned resource.</p>
<p>If the ActivityDefinition includes library references, those libraries will be available to the evaluated expressions. If those libraries have parameters, those parameters will be bound by name to the parameters given to the operation. In addition, parameters to the $apply operation are available within dynamicValue expressions as context variables, accessible by the name of the parameter, prefixed with a percent (%) symbol. For a more detailed description, refer to the ActivityDefinition resource.</p>
<p>Note that the result of this operation is transient (i.e. the resource created by the operation is not persisted in the server, but returned as a contained resource in the result). The result effectively represents a proposed activity, and it is up to the caller to determine whether and how the activity is carried out.</p>
</div></div>
</text>
<extension
url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm">
<valueInteger value="2"/>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status">
<valueCode value="trial-use"/>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/structuredefinition-wg">
<valueCode value="cds"/>
</extension>
<url
value="http://hl7.org/fhir/uv/cpg/OperationDefinition/cpg-activitydefinition-apply"/>
<version value="2.0.0"/>
<name value="CPGActivityDefinitionApply"/>
<title value="CPG ActivityDefinition Apply"/>
<status value="active"/>
<kind value="operation"/>
<date value="2024-11-21T04:10:48+00:00"/>
<publisher value="HL7 International / Clinical Decision Support"/>
<contact>
<name value="HL7 International / Clinical Decision Support"/>
<telecom>
<system value="url"/>
<value value="http://www.hl7.org/Special/committees/dss"/>
</telecom>
</contact>
<description
value="The apply operation applies a activityDefinition to a given context"/>
<jurisdiction>
<coding>
<system value="http://unstats.un.org/unsd/methods/m49/m49.htm"/>
<code value="001"/>
<display value="World"/>
</coding>
</jurisdiction>
<code value="apply"/>
<comment
value="The result of invoking this operation is a resource of the type specified by the activity definition, with all the definitions resolved as appropriate for the type of resource. Any dynamicValue elements will be evaluated (in the order in which they appear in the resource) and the results applied to the returned resource.
If the ActivityDefinition includes library references, those libraries will be available to the evaluated expressions. If those libraries have parameters, those parameters will be bound by name to the parameters given to the operation. In addition, parameters to the $apply operation are available within dynamicValue expressions as context variables, accessible by the name of the parameter, prefixed with a percent (%) symbol. For a more detailed description, refer to the ActivityDefinition resource.
Note that the result of this operation is transient (i.e. the resource created by the operation is not persisted in the server, but returned as a contained resource in the result). The result effectively represents a proposed activity, and it is up to the caller to determine whether and how the activity is carried out."/>
<resource value="ActivityDefinition"/>
<system value="false"/>
<type value="true"/>
<instance value="true"/>
<parameter>
<name value="url"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="Canonical URL of the ActivityDefinition when invoked at the resource type level. This is exclusive with the `ActivityDefinition` parameter."/>
<type value="uri"/>
</parameter>
<parameter>
<name value="version"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="Version of the ActivityDefinition when invoked at the resource type level. This is exclusive with the `ActivityDefinition` parameter."/>
<type value="string"/>
</parameter>
<parameter>
<name value="activityDefinition"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="The activity definition to apply. If the operation is invoked on an instance, this parameter is not allowed. If the operation is invoked at the type level, this parameter is required"/>
<type value="ActivityDefinition"/>
</parameter>
<parameter>
<name value="subject"/>
<use value="in"/>
<min value="1"/>
<max value="*"/>
<documentation
value="The subject(s) that is/are the target of the activity definition to be applied. The subject may be a Patient, Practitioner, Organization, Location, Device, or Group. Subjects provided in this parameter will be resolved as the subject of the ActivityDefinition based on the type of the subject. If multiple subjects of the same type are provided, the behavior is implementation-defined"/>
<type value="string"/>
<searchType value="reference"/>
</parameter>
<parameter>
<name value="encounter"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation value="The encounter in context, if any"/>
<type value="string"/>
<searchType value="reference"/>
</parameter>
<parameter>
<name value="practitioner"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation value="The practitioner in context"/>
<type value="string"/>
<searchType value="reference"/>
</parameter>
<parameter>
<name value="organization"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation value="The organization in context"/>
<type value="string"/>
<searchType value="reference"/>
</parameter>
<parameter>
<name value="userType"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="The type of user initiating the request, e.g. patient, healthcare provider, or specific type of healthcare provider (physician, nurse, etc.)"/>
<type value="CodeableConcept"/>
</parameter>
<parameter>
<name value="userLanguage"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation value="Preferred language of the person using the system"/>
<type value="CodeableConcept"/>
</parameter>
<parameter>
<name value="userTaskContext"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="The task the system user is performing, e.g. laboratory results review, medication list review, etc. This information can be used to tailor decision support outputs, such as recommended information resources"/>
<type value="CodeableConcept"/>
</parameter>
<parameter>
<name value="setting"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="The current setting of the request (inpatient, outpatient, etc.)"/>
<type value="CodeableConcept"/>
</parameter>
<parameter>
<name value="settingContext"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="Additional detail about the setting of the request, if any"/>
<type value="CodeableConcept"/>
</parameter>
<parameter>
<name value="parameters"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="Any input parameters defined in libraries referenced by the ActivityDefinition. Parameter types are mapped to CQL as specified in the Using CQL section of this 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="useServerData"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="Whether to use data from the server performing the evaluation. If this parameter is true (the default), then the operation will use data first from any bundles provided as parameters (through the data and prefetch parameters), second data from the server performing the operation, and third, data from the dataEndpoint parameter (if provided). If this parameter is false, the operation will use data first from the bundles provided in the data or prefetch parameters, and second from the dataEndpoint parameter (if provided)."/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="data"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="Data to be made available to the ActivityDefinition evaluation. This parameter is exclusive with the prefetchData parameter (i.e. either provide all data as a single bundle, or provide data using multiple bundles with prefetch descriptions)."/>
<type value="Bundle"/>
</parameter>
<parameter>
<name value="prefetchData"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="Data to be made available to the ActivityDefinition evaluation, organized as prefetch response bundles. Each prefetchData parameter specifies either the name of the prefetchKey it is satisfying, a DataRequirement describing the prefetch, or both."/>
<part>
<name value="key"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="The key of the prefetch item. This typically corresponds to the name of a parameter in a library, or the name of a prefetch item in a CDS Hooks discovery response"/>
<type value="string"/>
</part>
<part>
<name value="descriptor"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="A DataRequirement describing the content of the prefetch item."/>
<type value="DataRequirement"/>
</part>
<part>
<name value="data"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="The prefetch data as a Bundle. If the prefetchData has no prefetchResult part, it indicates there is no data associated with this prefetch item."/>
<type value="Bundle"/>
</part>
</parameter>
<parameter>
<name value="dataEndpoint"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="An endpoint to use to access data referenced by retrieve operations in libraries referenced by the ActivityDefinition. If provided, this endpoint is used after the data or prefetchData bundles, and the server, if the useServerData parameter is true."/>
<type value="Endpoint"/>
</parameter>
<parameter>
<name value="artifactEndpointConfiguration"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="Configuration information to resolve canonical artifacts
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 `artifactRoute` *starts with* canonical or artifact reference
* 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* `artifactRoute` *starts with* canonical or artifact reference: 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"/>
<documentation
value="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)"/>
<type value="uri"/>
</part>
<part>
<name value="endpointUri"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="The URI of the endpoint, exclusive with the `endpoint` parameter"/>
<type value="uri"/>
</part>
<part>
<name value="endpoint"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="An Endpoint resource describing the endpoint, exclusive with the `endpointUri` parameter"/>
<type value="Endpoint"/>
</part>
</parameter>
<parameter>
<name value="terminologyEndpoint"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="An endpoint to use to access terminology (i.e. valuesets, codesystems, and membership testing) referenced by the ActivityDefinition. If no terminology endpoint is supplied, the evaluation will attempt to use the server on which the operation is being performed as the terminology server."/>
<type value="Endpoint"/>
</parameter>
<parameter>
<name value="return"/>
<use value="out"/>
<min value="1"/>
<max value="1"/>
<documentation
value="The request resource that is the result of applying the definition"/>
<type value="Resource"/>
</parameter>
</OperationDefinition>