Canonical Resource Management Infrastructure Implementation Guide, published by HL7 International / Clinical Decision Support. This guide is not an authorized publication; it is the continuous build for version 2.0.0-ballot built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/crmi-ig/ 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="crmi-resolve"/>
<text>
<status value="generated"/>
<div xmlns="http://www.w3.org/1999/xhtml"><p class="res-header-id"><b>Generated Narrative: OperationDefinition crmi-resolve</b></p><a name="crmi-resolve"> </a><a name="hccrmi-resolve"> </a><p>URL: [base]/$$resolve</p><p>URL: [base]/ActivityDefinition/$resolve</p><p>URL: [base]/CapabilityStatement/$resolve</p><p>URL: [base]/CodeSystem/$resolve</p><p>URL: [base]/ConceptMap/$resolve</p><p>URL: [base]/Evidence/$resolve</p><p>URL: [base]/EvidenceVariable/$resolve</p><p>URL: [base]/ExampleScenario/$resolve</p><p>URL: [base]/GraphDefinition/$resolve</p><p>URL: [base]/Group/$resolve</p><p>URL: [base]/ImplementationGuide/$resolve</p><p>URL: [base]/Library/$resolve</p><p>URL: [base]/Measure/$resolve</p><p>URL: [base]/Medication/$resolve</p><p>URL: [base]/MedicationKnowledge/$resolve</p><p>URL: [base]/NamingSystem/$resolve</p><p>URL: [base]/OperationDefinition/$resolve</p><p>URL: [base]/PlanDefinition/$resolve</p><p>URL: [base]/Questionnaire/$resolve</p><p>URL: [base]/SearchParameter/$resolve</p><p>URL: [base]/StructureDefinition/$resolve</p><p>URL: [base]/StructureMap/$resolve</p><p>URL: [base]/Substance/$resolve</p><p>URL: [base]/TerminologyCapabilities/$resolve</p><p>URL: [base]/ValueSet/$resolve</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>resourceType</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#code">code</a></td><td/><td><div><p>The kind of resource the canonical reference refers to. This parameter is only used when this operation is invoked at the server level.</p>
</div></td></tr><tr><td>IN</td><td>canonical</td><td/><td>1..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#canonical">canonical</a></td><td/><td><div><p>The canonical reference to be resolved. This may or may not be a versioned referenced. If the reference is versionless, the operation uses the <em>latest version</em> algorithm specified in the version manifest topic of this implementation guide to determine the version to be returned.</p>
</div></td></tr><tr><td>IN</td><td>sourceCanonical</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#canonical">canonical</a></td><td/><td><div><p>A canonical reference to the resource that contains the reference being resolved.</p>
</div></td></tr><tr><td>IN</td><td>sourceReference</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#string">string</a></td><td/><td><div><p>A reference to the specific instance of the resource (on this server) that contains the reference to be resolved (to avoid having to resolve the source canonical as well) (e.g. PlanDefinition/123).</p>
</div></td></tr><tr><td>IN</td><td>duplicateBehavior</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#code">code</a></td><td/><td><div><p>Indicates what to do if the resolution results in multiple possible targets (i.e. multiple versions of the same resource url). Note that this only applies to duplicates of url, not to duplicates of url and version. For example, a server may have multiple instances of a ValueSet with the same url and version representing the different expansions of the same value set. Possible values are error (default), most-recent, and all.</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/R4/library.html" title="http://hl7.org/fhir/StructureDefinition/Library">Library</a>)</td><td/><td><div><p>Specifies a manifest library that provides pinned canonicals. If the canonical being resolved is versionless, the manifest is used to attempt a look up of the canonical version. This parameter is exclusive with manifestParameters.</p>
</div></td></tr><tr><td>IN</td><td>manifestParameters</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/parameters.html">Parameters</a></td><td/><td><div><p>Specifies manifest parameters that provide pinned canonicals. If the canonical being resolved is versionless, the manifest parameters are used to attempt a look up of the canonical version. This parameter is exclusive with manifest.</p>
</div></td></tr><tr><td>IN</td><td>system-version</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#canonical">canonical</a></td><td/><td><div><p>(Deprecated, use default-system-version). Specifies a version to use for a system, if the value set does not specify which one to use. The format is the same as a canonical URL: [system]|[version] - e.g. http://loinc.org|2.56</p>
</div></td></tr><tr><td>IN</td><td>default-system-version</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#canonical">canonical</a></td><td/><td><div><p>Specifies a version to use for a system, if the value set does not specify which one to use. The format is the same as a canonical URL: [system]|[version] - e.g. http://loinc.org|2.56</p>
</div></td></tr><tr><td>IN</td><td>check-system-version</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#canonical">canonical</a></td><td/><td><div><p>Edge Case: Specifies a version to use for a system. If a value set specifies a different version, an error is returned instead of the expansion. The format is the same as a canonical URL: [system]|[version] - e.g. http://loinc.org|2.56</p>
</div></td></tr><tr><td>IN</td><td>force-system-version</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#canonical">canonical</a></td><td/><td><div><p>Edge Case: Specifies a version to use for a system. This parameter overrides any specified version in the value set (and any 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 value is override, the version used SHALL explicitly be represented in the expansion parameters</p>
</div></td></tr><tr><td>IN</td><td>default-valueset-version</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#canonical">canonical</a></td><td/><td><div><p>Specifies a version to use for a value set if the artifact referencing the value set does not already specify a version. The format is the same as a canonical URL: [url]|[version] - e.g. http://example.org/ValueSet/example|1.0.0.</p>
</div></td></tr><tr><td>IN</td><td>check-valueset-version</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#canonical">canonical</a></td><td/><td><div><p>Edge Case: Specifies a version to use for a value set. 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://example.org/ValueSet/example|1.0.0.</p>
</div></td></tr><tr><td>IN</td><td>force-valueset-version</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#canonical">canonical</a></td><td/><td><div><p>Edge Case: Specifies a version to use for a value set. This parameter overrides any specified version in the artifact (and any artifacts it depends on). The format is the same as a canonical URL: [url]|[version] - e.g. http://example.org/ValueSet/example|1.0.0.</p>
</div></td></tr><tr><td>IN</td><td>default-canonical-version</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#canonical">canonical</a></td><td/><td><div><p>Specifies a version to use for a canonical 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 <code>system-version</code>
parameter to the $expand operation to apply to any canonical resource, including code systems.</p>
</div></td></tr><tr><td>IN</td><td>check-canonical-version</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#canonical">canonical</a></td><td/><td><div><p>Edge Case: Specifies a version to use for a canonical 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 <code>check-system-version</code> parameter to the $expand operation to
apply to any canonical resource, including code systems.</p>
</div></td></tr><tr><td>IN</td><td>force-canonical-version</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#canonical">canonical</a></td><td/><td><div><p>Edge Case: Specifies a version to use for a canonical 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 overriden, the version used SHALL
explicitly be represented in the expansion parameters. Note that this is a generalization of the
<code>force-system-version</code> parameter to the $expand operation to apply to any canonical resource,
including code systems.</p>
</div></td></tr><tr><td>OUT</td><td>return</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/resource.html">Resource</a></td><td/><td><div><p>The result of the resolve. Note that even for a versioned canonical reference it is still possible for the resolve to return multiple instances. For example, a server may have multiple expansions for a single version of a value set.</p>
</div></td></tr></table><div><p>If the canonical reference is unversioned, this operation uses the <em>latest version</em> algorithm specified in the version manifest topic of this implementation guide to determine the version to be returned.</p>
</div></div>
</text>
<extension
url="http://hl7.org/fhir/StructureDefinition/structuredefinition-wg">
<valueCode value="cds"/>
</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/crmi/ImplementationGuide/hl7.fhir.uv.crmi"/>
</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/crmi/ImplementationGuide/hl7.fhir.uv.crmi"/>
</extension>
</valueCode>
</extension>
<url value="http://hl7.org/fhir/uv/crmi/OperationDefinition/crmi-resolve"/>
<version value="2.0.0-ballot"/>
<name value="CRMIResolve"/>
<title value="CRMI Resolve"/>
<status value="active"/>
<kind value="operation"/>
<date value="2025-08-01T16:38:28+00:00"/>
<publisher value="HL7 International / Clinical Decision Support"/>
<contact>
<telecom>
<system value="url"/>
<value value="http://www.hl7.org/Special/committees/dss"/>
</telecom>
</contact>
<description
value="Resolves a canonical reference, returning the resource (or resources) resolved."/>
<jurisdiction>
<coding>
<system value="http://unstats.un.org/unsd/methods/m49/m49.htm"/>
<code value="001"/>
<display value="World"/>
</coding>
</jurisdiction>
<affectsState value="false"/>
<code value="resolve"/>
<comment
value="If the canonical reference is unversioned, this operation uses the _latest version_ algorithm specified in the version manifest topic of this implementation guide to determine the version to be returned."/>
<base value="http://hl7.org/fhir/OperationDefinition/ValueSet-expand"/>
<resource value="ActivityDefinition"/>
<resource value="CapabilityStatement"/>
<resource value="CodeSystem"/>
<resource value="ConceptMap"/>
<resource value="Evidence"/>
<resource value="EvidenceVariable"/>
<resource value="ExampleScenario"/>
<resource value="GraphDefinition"/>
<resource value="Group"/>
<resource value="ImplementationGuide"/>
<resource value="Library"/>
<resource value="Measure"/>
<resource value="Medication"/>
<resource value="MedicationKnowledge"/>
<resource value="NamingSystem"/>
<resource value="OperationDefinition"/>
<resource value="PlanDefinition"/>
<resource value="Questionnaire"/>
<resource value="SearchParameter"/>
<resource value="StructureDefinition"/>
<resource value="StructureMap"/>
<resource value="Substance"/>
<resource value="TerminologyCapabilities"/>
<resource value="ValueSet"/>
<system value="true"/>
<type value="true"/>
<instance value="false"/>
<parameter>
<name value="resourceType"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="The kind of resource the canonical reference refers to. This parameter is only used when this operation is invoked at the server level."/>
<type value="code"/>
</parameter>
<parameter>
<name value="canonical"/>
<use value="in"/>
<min value="1"/>
<max value="1"/>
<documentation
value="The canonical reference to be resolved. This may or may not be a versioned referenced. If the reference is versionless, the operation uses the _latest version_ algorithm specified in the version manifest topic of this implementation guide to determine the version to be returned."/>
<type value="canonical"/>
</parameter>
<parameter>
<name value="sourceCanonical"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="A canonical reference to the resource that contains the reference being resolved."/>
<type value="canonical"/>
</parameter>
<parameter>
<name value="sourceReference"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="A reference to the specific instance of the resource (on this server) that contains the reference to be resolved (to avoid having to resolve the source canonical as well) (e.g. PlanDefinition/123)."/>
<type value="string"/>
</parameter>
<parameter>
<name value="duplicateBehavior"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="Indicates what to do if the resolution results in multiple possible targets (i.e. multiple versions of the same resource url). Note that this only applies to duplicates of url, not to duplicates of url and version. For example, a server may have multiple instances of a ValueSet with the same url and version representing the different expansions of the same value set. Possible values are error (default), most-recent, and all."/>
<type value="code"/>
</parameter>
<parameter>
<name value="manifest"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="Specifies a manifest library that provides pinned canonicals. If the canonical being resolved is versionless, the manifest is used to attempt a look up of the canonical version. This parameter is exclusive with manifestParameters."/>
<type value="canonical"/>
<targetProfile value="http://hl7.org/fhir/StructureDefinition/Library"/>
</parameter>
<parameter>
<name value="manifestParameters"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<documentation
value="Specifies manifest parameters that provide pinned canonicals. If the canonical being resolved is versionless, the manifest parameters are used to attempt a look up of the canonical version. This parameter is exclusive with manifest."/>
<type value="Parameters"/>
</parameter>
<parameter>
<name value="system-version"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="(Deprecated, use default-system-version). Specifies a version to use for a system, if the value set does not specify which one to use. The format is the same as a canonical URL: [system]|[version] - e.g. http://loinc.org|2.56"/>
<type value="canonical"/>
</parameter>
<parameter>
<name value="default-system-version"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="Specifies a version to use for a system, if the value set does not specify which one to use. The format is the same as a canonical URL: [system]|[version] - e.g. http://loinc.org|2.56"/>
<type value="canonical"/>
</parameter>
<parameter>
<name value="check-system-version"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="Edge Case: Specifies a version to use for a system. If a value set specifies a different version, an error is returned instead of the expansion. The format is the same as a canonical URL: [system]|[version] - e.g. http://loinc.org|2.56"/>
<type value="canonical"/>
</parameter>
<parameter>
<name value="force-system-version"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="Edge Case: Specifies a version to use for a system. This parameter overrides any specified version in the value set (and any 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 value is override, the version used SHALL explicitly be represented in the expansion parameters"/>
<type value="canonical"/>
</parameter>
<parameter>
<name value="default-valueset-version"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="Specifies a version to use for a value set if the artifact referencing the value set does not already specify a version. The format is the same as a canonical URL: [url]|[version] - e.g. http://example.org/ValueSet/example|1.0.0."/>
<type value="canonical"/>
</parameter>
<parameter>
<name value="check-valueset-version"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="Edge Case: Specifies a version to use for a value set. 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://example.org/ValueSet/example|1.0.0."/>
<type value="canonical"/>
</parameter>
<parameter>
<name value="force-valueset-version"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="Edge Case: Specifies a version to use for a value set. This parameter overrides any specified version in the artifact (and any artifacts it depends on). The format is the same as a canonical URL: [url]|[version] - e.g. http://example.org/ValueSet/example|1.0.0."/>
<type value="canonical"/>
</parameter>
<parameter>
<name value="default-canonical-version"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="Specifies a version to use for a canonical 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 to the $expand operation to apply to any canonical resource, including code systems."/>
<type value="canonical"/>
</parameter>
<parameter>
<name value="check-canonical-version"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="Edge Case: Specifies a version to use for a canonical 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 to the $expand operation to
apply to any canonical resource, including code systems."/>
<type value="canonical"/>
</parameter>
<parameter>
<name value="force-canonical-version"/>
<use value="in"/>
<min value="0"/>
<max value="*"/>
<documentation
value="Edge Case: Specifies a version to use for a canonical 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 overriden, the version used SHALL
explicitly be represented in the expansion parameters. Note that this is a generalization of the
`force-system-version` parameter to the $expand operation to apply to any canonical resource,
including code systems."/>
<type value="canonical"/>
</parameter>
<parameter>
<name value="return"/>
<use value="out"/>
<min value="0"/>
<max value="*"/>
<documentation
value="The result of the resolve. Note that even for a versioned canonical reference it is still possible for the resolve to return multiple instances. For example, a server may have multiple expansions for a single version of a value set."/>
<type value="Resource"/>
</parameter>
</OperationDefinition>