Canonical Resource Management Infrastructure Implementation Guide
2.0.0-ballot - STU 2 - Ballot International flag

This page is part of the Canonical Resource Management Infrastructure Implementation Guide (v2.0.0-ballot: STU 2 Ballot) based on FHIR (HL7® FHIR® Standard) R4. This version is a pre-release. The current official version is 1.0.0. For a full list of available versions, see the Directory of published versions

: CRMI Package Operation - XML Representation

Page standards status: Trial-use Maturity Level: 4

Raw xml | Download


<OperationDefinition xmlns="http://hl7.org/fhir">
  <id value="crmi-package"/>
  <text>
    <status value="generated"/>
    <div xmlns="http://www.w3.org/1999/xhtml"><p class="res-header-id"><b>Generated Narrative: OperationDefinition crmi-package</b></p><a name="crmi-package"> </a><a name="hccrmi-package"> </a><p>URL: [base]/ActivityDefinition/$package</p><p>URL: [base]/ActivityDefinition/[id]/$package</p><p>URL: [base]/CapabilityStatement/$package</p><p>URL: [base]/CapabilityStatement/[id]/$package</p><p>URL: [base]/CodeSystem/$package</p><p>URL: [base]/CodeSystem/[id]/$package</p><p>URL: [base]/CompartmentDefinition/$package</p><p>URL: [base]/CompartmentDefinition/[id]/$package</p><p>URL: [base]/ConceptMap/$package</p><p>URL: [base]/ConceptMap/[id]/$package</p><p>URL: [base]/ExampleScenario/$package</p><p>URL: [base]/ExampleScenario/[id]/$package</p><p>URL: [base]/GraphDefinition/$package</p><p>URL: [base]/GraphDefinition/[id]/$package</p><p>URL: [base]/ImplementationGuide/$package</p><p>URL: [base]/ImplementationGuide/[id]/$package</p><p>URL: [base]/Library/$package</p><p>URL: [base]/Library/[id]/$package</p><p>URL: [base]/Measure/$package</p><p>URL: [base]/Measure/[id]/$package</p><p>URL: [base]/Medication/$package</p><p>URL: [base]/Medication/[id]/$package</p><p>URL: [base]/MedicationKnowledge/$package</p><p>URL: [base]/MedicationKnowledge/[id]/$package</p><p>URL: [base]/MessageDefinition/$package</p><p>URL: [base]/MessageDefinition/[id]/$package</p><p>URL: [base]/NamingSystem/$package</p><p>URL: [base]/NamingSystem/[id]/$package</p><p>URL: [base]/OperationDefinition/$package</p><p>URL: [base]/OperationDefinition/[id]/$package</p><p>URL: [base]/PlanDefinition/$package</p><p>URL: [base]/PlanDefinition/[id]/$package</p><p>URL: [base]/Questionnaire/$package</p><p>URL: [base]/Questionnaire/[id]/$package</p><p>URL: [base]/SearchParameter/$package</p><p>URL: [base]/SearchParameter/[id]/$package</p><p>URL: [base]/StructureDefinition/$package</p><p>URL: [base]/StructureDefinition/[id]/$package</p><p>URL: [base]/StructureMap/$package</p><p>URL: [base]/StructureMap/[id]/$package</p><p>URL: [base]/Substance/$package</p><p>URL: [base]/Substance/[id]/$package</p><p>URL: [base]/TerminologyCapabilities/$package</p><p>URL: [base]/TerminologyCapabilities/[id]/$package</p><p>URL: [base]/TestScript/$package</p><p>URL: [base]/TestScript/[id]/$package</p><p>URL: [base]/ValueSet/$package</p><p>URL: [base]/ValueSet/[id]/$package</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>id</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 logical id of an existing Resource to package on the server.</p>
</div></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>A canonical or artifact reference to a Resource to package on the server.</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>The version of the Resource</p>
</div></td></tr><tr><td>IN</td><td>identifier</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#string">string</a><br/>(<a href="https://hl7.org/fhir/R4/search.html#token">token</a>)</td><td/><td><div><p>A business identifier of the Resource.</p>
</div></td></tr><tr><td>IN</td><td>capability</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#string">string</a></td><td/><td><div><p>A desired capability of the resulting package. <code>computable</code> to include
computable elements in packaged content; <code>executable</code> to include executable
elements in packaged content; <code>publishable</code> to include publishable elements in
packaged content.</p>
<p>If no capabilities are specified, the capabilities of resulting artifacts in the package are decided by the server.
If a server has been requested to produce an executable package, and for whatever reason, cannot expand a value set
that is part of the package, it SHALL include an operation outcome warning detailed the value sets that could not be
expanded, as described in the <a href="distribution.html#outcome-manifest">Outcome Manifest</a> topic.</p>
<p>In addition, so long as the errorBehavior parameter is not <code>strict</code>, the server MAY include a computable representation of
value sets that could not be expanded.</p>
</div></td></tr><tr><td>IN</td><td>terminologyCapabilities</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/terminologycapabilities.html">TerminologyCapabilities</a></td><td/><td><div><p>A TerminologyCapabilities resource describing the expected terminology capabilities
of the target environment. For example, an environment may be capable of processing
specific types of value set definitions, but not others (e.g. LOINC panel definitions,
but not SNOMED hierarchies).</p>
</div></td></tr><tr><td>IN</td><td>artifactVersion</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 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>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 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>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.
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
<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>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="StructureDefinition-crmi-manifestlibrary.html" title="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-manifestlibrary">CRMI Manifest Library</a>)</td><td/><td><div><p>Specifies a reference to 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, code systems and other canonical resources identified as
<code>depends-on</code> related artifacts in the manifest library have the same meaning as
specifying that code system or other canonical version in the <code>system-version</code>
parameter of an expand or the <code>canonicalVersion</code> parameter.</p>
</div></td></tr><tr><td>IN</td><td>offset</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#integer">integer</a></td><td/><td><div><p>Paging support - where to start if a subset is desired (default = 0). Offset is
number of records (not number of pages). If offset &gt; 0 the resulting bundle will be of type <code>collection</code>.</p>
</div></td></tr><tr><td>IN</td><td>count</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#integer">integer</a></td><td/><td><div><p>Paging support - how many resources should be provided in a partial page view.
If count = 0, the client is asking how large the package is. If count &gt; 0 but less than the total number of resources, the result will be a bundle of type <code>collection</code>.</p>
</div></td></tr><tr><td>IN</td><td>include</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#code">code</a></td><td/><td><div><p>Specifies what contents should only be included in the resulting package. The
codes indicate which types of resources should be included, but note that the
set of possible resources is determined as all known (i.e. present on the
server) dependencies and related artifacts.</p>
<p>Possible values are either a code to mean a category of resource types:</p>
<ul>
<li><code>all</code> (default) - all resource types</li>
<li><code>artifact</code> - the specified artifact</li>
<li><code>canonical</code> - canonical resources (i.e. resources with a defined url element or that can be canonical resources using the artifact-url extension)</li>
<li><code>terminology</code> - terminology resources (i.e. CodeSystem, ValueSet, NamingSystem, ConceptMap)</li>
<li><code>conformance</code> - conformance resources (i.e. StructureDefinition, StructureMap, SearchParameter, CompartmentDefinition)</li>
<li><code>profiles</code> - profile definitions (i.e. StructureDefinition resources that define profiles)</li>
<li><code>extensions</code> - extension definitions (i.e. StructureDefinition resources that define extensions)</li>
<li><code>knowledge</code> - knowledge artifacts (i.e. ActivityDefinition, Library, PlanDefinition, Measure, Questionnaire)</li>
<li><code>tests</code> - test cases and data (i.e. test cases as defined by the testing specification in this implementation guide)</li>
<li><code>examples</code> - example resources (i.e. resources identified as examples in the implementation guide)</li>
</ul>
<p>Or a valid FHIR resource Type (e.g. <code>PlanDefinition</code>, <code>MedicationKnowledge</code>, etc)</p>
</div></td></tr><tr><td>IN</td><td>includeUri</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#uri">uri</a></td><td/><td><div><p>Specifies what contents should be included in the resulting package by canonical
URL, can take the form <code>{url}</code> or <code>{url}|{version}</code>.</p>
</div></td></tr><tr><td>IN</td><td>exclude</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#code">code</a></td><td/><td><div><p>Specifies what contents should be excluded in the resulting package. The codes
indicate which types of resources should be excluded, but note that the set of
possible resources is determined as all known (i.e. present on the server)
dependencies and related artifacts.</p>
<p>Possible values are either a code to mean a category of resource types:</p>
<ul>
<li><code>all</code> (default) - all resource types</li>
<li><code>artifact</code> - the specified artifact</li>
<li><code>canonical</code> - canonical resources (i.e. resources with a defined url element or that can be canonical resources using the artifact-url extension)</li>
<li><code>terminology</code> - terminology resources (i.e. CodeSystem, ValueSet, NamingSystem, ConceptMap)</li>
<li><code>conformance</code> - conformance resources (i.e. StructureDefinition, StructureMap, SearchParameter, CompartmentDefinition)</li>
<li><code>profiles</code> - profile definitions (i.e. StructureDefinition resources that define profiles)</li>
<li><code>extensions</code> - extension definitions (i.e. StructureDefinition resources that define extensions)</li>
<li><code>knowledge</code> - knowledge artifacts (i.e. ActivityDefinition, Library, PlanDefinition, Measure, Questionnaire)</li>
<li><code>tests</code> - test cases and data (i.e. test cases as defined by the testing specification in this implementation guide)</li>
<li><code>examples</code> - example resources (i.e. resources identified as examples in the implementation guide)</li>
</ul>
<p>Or a valid FHIR resource Type (e.g. <code>PlanDefinition</code>, <code>MedicationKnowledge</code>, etc)</p>
</div></td></tr><tr><td>IN</td><td>excludeUri</td><td/><td>0..*</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#uri">uri</a></td><td/><td><div><p>Specifies what contents should be excluded in the resulting package by canonical
URL, can take the form <code>{url}</code> or <code>{url}|{version}</code>.</p>
</div></td></tr><tr><td>IN</td><td>packageOnly</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#boolean">boolean</a></td><td/><td><div><p>True to indicate that the resulting package should only include resources that are defined in the implementation guide
or specification that defines the artifact being packaged. False (default) to indicate that the resulting package should
include resources regardless of what implementation guide or specification they are defined in.</p>
</div></td></tr><tr><td>IN</td><td>errorBehavior</td><td/><td>0..1</td><td><a href="http://hl7.org/fhir/R4/datatypes.html#code">code</a></td><td/><td><div><p>A code that determines whether issues encountered during the packaging should prevent the return of the package, or should
just be included in the resulting package with a description of the issues. A code of <code>loose</code> indicates that the server
should continue processing and return any issues such as &quot;resource not found&quot; and &quot;could not expand value set&quot; as issues in
the messages element of the resulting outcome manifest, whereas a code of <code>strict</code> indicates that if the server cannot '
provide the package that was requested, an error should be returned. (i.e. the result of the operation will be an OperationOutcome
resource describing the issues that occurred, as opposed to the OperationOutcome being included in the result). Note that servers
may still decide what constitutes an error severe enough to stop processing, this error behavior parameter is an indication from the
client that they want as much of the package as the server can provide, and will examine the messages to determine where the package
differs from what was requested.</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 <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/></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>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, naming systems, concept maps, and
membership testing) referenced by the Resource. If no terminology endpoint is
supplied, the server may use whatever mechanism is appropriate for accessing terminology.
This could be the server on which the operation is invoked or a third party server accessible to the environment.
When a terminology endpoint is provided, the server or third party servers may still be used as fallbacks.</p>
</div></td></tr><tr><td>OUT</td><td>return</td><td/><td>1..1</td><td><a href="http://hl7.org/fhir/R4/bundle.html">Bundle</a></td><td/><td><div><p>The result of the packaging. If the resulting bundle is paged using <code>count</code> or <code>offset</code>, it will be of type <code>collection</code>. In the special case where <code>count = 0</code> it will be of type <code>searchset</code>.</p>
<p>The first resource returned in the resulting package will be an <a href="distribution.html#outcome-manifest"><em>outcome manifest</em></a>
that describes the results of the packaging operation. Clients consuming package bundles SHALL examine the contents of
these OperationOutcome resources to understand whether the bundle contains the expected content (e.g. if a ValueSet could not be expanded).</p>
<p>Servers generating packages SHALL include all the
dependency resources referenced by the artifact that are known to the server and
specified by the include parameters.</p>
<p>For example, a measure repository SHALL include
all the required library resources, but would not necessarily have the
ValueSet resources referenced by the measure.</p>
</div></td></tr></table><div><p>The package operation supports producing a complete package of a particular artifact
supporting the capabilities expected to be available in a particular target environment.
For example, a Questionnaire may be packaged together with the value sets referenced by
elements of the questionnaire, and those value sets may be definitions (Computable) or
expansions (Expanded), depending on the parameters to the operation.</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-package"/>
  <version value="2.0.0-ballot"/>
  <name value="CRMIPackage"/>
  <title value="CRMI Package"/>
  <status value="active"/>
  <kind value="operation"/>
  <date value="2025-08-01T18:39:13+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="Packages a specified canonical resource for use in a target environment, optionally 
including related content such as dependencies, components, and test cases and data.

See [$package and $data-requirements](distribution.html#package-and-data-requirements)"/>
  <jurisdiction>
    <coding>
      <system value="http://unstats.un.org/unsd/methods/m49/m49.htm"/>
      <code value="001"/>
      <display value="World"/>
    </coding>
  </jurisdiction>
  <code value="package"/>
  <comment
           value="The package operation supports producing a complete package of a particular artifact 
supporting the capabilities expected to be available in a particular target environment. 
For example, a Questionnaire may be packaged together with the value sets referenced by 
elements of the questionnaire, and those value sets may be definitions (Computable) or 
expansions (Expanded), depending on the parameters to the operation. "/>
  <resource value="ActivityDefinition"/>
  <resource value="CapabilityStatement"/>
  <resource value="CodeSystem"/>
  <resource value="CompartmentDefinition"/>
  <resource value="ConceptMap"/>
  <resource value="ExampleScenario"/>
  <resource value="GraphDefinition"/>
  <resource value="ImplementationGuide"/>
  <resource value="Library"/>
  <resource value="Measure"/>
  <resource value="Medication"/>
  <resource value="MedicationKnowledge"/>
  <resource value="MessageDefinition"/>
  <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="TestScript"/>
  <resource value="ValueSet"/>
  <system value="false"/>
  <type value="true"/>
  <instance value="true"/>
  <parameter>
    <name value="id"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation
                   value="The logical id of an existing Resource to package on the server."/>
    <type value="string"/>
  </parameter>
  <parameter>
    <name value="url"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation
                   value="A canonical or artifact reference to a Resource to package on the server."/>
    <type value="uri"/>
  </parameter>
  <parameter>
    <name value="version"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation value="The version of the Resource"/>
    <type value="string"/>
  </parameter>
  <parameter>
    <name value="identifier"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation value="A business identifier of the Resource."/>
    <type value="string"/>
    <searchType value="token"/>
  </parameter>
  <parameter>
    <name value="capability"/>
    <use value="in"/>
    <min value="0"/>
    <max value="*"/>
    <documentation
                   value="A desired capability of the resulting package. `computable` to include
computable elements in packaged content; `executable` to include executable
elements in packaged content; `publishable` to include publishable elements in
packaged content.

If no capabilities are specified, the capabilities of resulting artifacts in the package are decided by the server.
If a server has been requested to produce an executable package, and for whatever reason, cannot expand a value set 
that is part of the package, it SHALL include an operation outcome warning detailed the value sets that could not be
expanded, as described in the [Outcome Manifest](distribution.html#outcome-manifest) topic.

In addition, so long as the errorBehavior parameter is not `strict`, the server MAY include a computable representation of
value sets that could not be expanded."/>
    <type value="string"/>
  </parameter>
  <parameter>
    <name value="terminologyCapabilities"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation
                   value="A TerminologyCapabilities resource describing the expected terminology capabilities 
of the target environment. For example, an environment may be capable of processing 
specific types of value set definitions, but not others (e.g. LOINC panel definitions, 
but not SNOMED hierarchies)."/>
    <type value="TerminologyCapabilities"/>
  </parameter>
  <parameter>
    <name value="artifactVersion"/>
    <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 to 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 to 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 to 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 a reference to 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, code systems and other canonical resources identified as
`depends-on` related artifacts in the manifest library have the same meaning as
specifying that code system or other canonical version in the `system-version`
parameter of an expand or the `canonicalVersion` parameter."/>
    <type value="canonical"/>
    <targetProfile
                   value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-manifestlibrary"/>
  </parameter>
  <parameter>
    <name value="offset"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation
                   value="Paging support - where to start if a subset is desired (default = 0). Offset is
number of records (not number of pages). If offset &gt; 0 the resulting bundle will be of type `collection`."/>
    <type value="integer"/>
  </parameter>
  <parameter>
    <name value="count"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation
                   value="Paging support - how many resources should be provided in a partial page view.
If count = 0, the client is asking how large the package is. If count &gt; 0 but less than the total number of resources, the result will be a bundle of type `collection`."/>
    <type value="integer"/>
  </parameter>
  <parameter>
    <name value="include"/>
    <use value="in"/>
    <min value="0"/>
    <max value="*"/>
    <documentation
                   value="Specifies what contents should only be included in the resulting package. The
codes indicate which types of resources should be included, but note that the
set of possible resources is determined as all known (i.e. present on the
server) dependencies and related artifacts. 

Possible values are either a code to mean a category of resource types:
* `all` (default) - all resource types
* `artifact` - the specified artifact
* `canonical` - canonical resources (i.e. resources with a defined url element or that can be canonical resources using the artifact-url extension)
* `terminology` - terminology resources (i.e. CodeSystem, ValueSet, NamingSystem, ConceptMap)
* `conformance` - conformance resources (i.e. StructureDefinition, StructureMap, SearchParameter, CompartmentDefinition)
* `profiles` - profile definitions (i.e. StructureDefinition resources that define profiles)
* `extensions` - extension definitions (i.e. StructureDefinition resources that define extensions) 
* `knowledge` - knowledge artifacts (i.e. ActivityDefinition, Library, PlanDefinition, Measure, Questionnaire)
* `tests` - test cases and data (i.e. test cases as defined by the testing specification in this implementation guide)
* `examples` - example resources (i.e. resources identified as examples in the implementation guide)

Or a valid FHIR resource Type (e.g. `PlanDefinition`, `MedicationKnowledge`, etc)"/>
    <type value="code"/>
  </parameter>
  <parameter>
    <name value="includeUri"/>
    <use value="in"/>
    <min value="0"/>
    <max value="*"/>
    <documentation
                   value="Specifies what contents should be included in the resulting package by canonical
URL, can take the form `{url}` or `{url}|{version}`."/>
    <type value="uri"/>
  </parameter>
  <parameter>
    <name value="exclude"/>
    <use value="in"/>
    <min value="0"/>
    <max value="*"/>
    <documentation
                   value="Specifies what contents should be excluded in the resulting package. The codes
indicate which types of resources should be excluded, but note that the set of
possible resources is determined as all known (i.e. present on the server)
dependencies and related artifacts. 

Possible values are either a code to mean a category of resource types:
* `all` (default) - all resource types
* `artifact` - the specified artifact
* `canonical` - canonical resources (i.e. resources with a defined url element or that can be canonical resources using the artifact-url extension)
* `terminology` - terminology resources (i.e. CodeSystem, ValueSet, NamingSystem, ConceptMap)
* `conformance` - conformance resources (i.e. StructureDefinition, StructureMap, SearchParameter, CompartmentDefinition)
* `profiles` - profile definitions (i.e. StructureDefinition resources that define profiles)
* `extensions` - extension definitions (i.e. StructureDefinition resources that define extensions) 
* `knowledge` - knowledge artifacts (i.e. ActivityDefinition, Library, PlanDefinition, Measure, Questionnaire)
* `tests` - test cases and data (i.e. test cases as defined by the testing specification in this implementation guide)
* `examples` - example resources (i.e. resources identified as examples in the implementation guide)

Or a valid FHIR resource Type (e.g. `PlanDefinition`, `MedicationKnowledge`, etc)"/>
    <type value="code"/>
  </parameter>
  <parameter>
    <name value="excludeUri"/>
    <use value="in"/>
    <min value="0"/>
    <max value="*"/>
    <documentation
                   value="Specifies what contents should be excluded in the resulting package by canonical
URL, can take the form `{url}` or `{url}|{version}`."/>
    <type value="uri"/>
  </parameter>
  <parameter>
    <name value="packageOnly"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation
                   value="True to indicate that the resulting package should only include resources that are defined in the implementation guide 
or specification that defines the artifact being packaged. False (default) to indicate that the resulting package should 
include resources regardless of what implementation guide or specification they are defined in."/>
    <type value="boolean"/>
  </parameter>
  <parameter>
    <name value="errorBehavior"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation
                   value="A code that determines whether issues encountered during the packaging should prevent the return of the package, or should
just be included in the resulting package with a description of the issues. A code of `loose` indicates that the server 
should continue processing and return any issues such as &quot;resource not found&quot; and &quot;could not expand value set&quot; as issues in
the messages element of the resulting outcome manifest, whereas a code of `strict` indicates that if the server cannot '
provide the package that was requested, an error should be returned. (i.e. the result of the operation will be an OperationOutcome
resource describing the issues that occurred, as opposed to the OperationOutcome being included in the result). Note that servers
may still decide what constitutes an error severe enough to stop processing, this error behavior parameter is an indication from the
client that they want as much of the package as the server can provide, and will examine the messages to determine where the package 
differs from what was requested."/>
    <type value="code"/>
  </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 `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"/>
      <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="terminologyEndpoint"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation
                   value="An endpoint to use to access terminology (i.e. valuesets, codesystems, naming systems, concept maps, and
membership testing) referenced by the Resource. If no terminology endpoint is
supplied, the server may use whatever mechanism is appropriate for accessing terminology. 
This could be the server on which the operation is invoked or a third party server accessible to the environment. 
When a terminology endpoint is provided, the server or third party servers may still be used as fallbacks."/>
    <type value="Endpoint"/>
  </parameter>
  <parameter>
    <name value="return"/>
    <use value="out"/>
    <min value="1"/>
    <max value="1"/>
    <documentation
                   value="The result of the packaging. If the resulting bundle is paged using `count` or `offset`, it will be of type `collection`. In the special case where `count = 0` it will be of type `searchset`.

The first resource returned in the resulting package will be an [_outcome manifest_](distribution.html#outcome-manifest) 
that describes the results of the packaging operation. Clients consuming package bundles SHALL examine the contents of 
these OperationOutcome resources to understand whether the bundle contains the expected content (e.g. if a ValueSet could not be expanded).

Servers generating packages SHALL include all the
dependency resources referenced by the artifact that are known to the server and 
specified by the include parameters. 

For example, a measure repository SHALL include
all the required library resources, but would not necessarily have the
ValueSet resources referenced by the measure."/>
    <type value="Bundle"/>
  </parameter>
</OperationDefinition>