Canonical Resource Management Infrastructure Implementation Guide
1.0.0 - STU1 International flag

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 1.0.0 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

OperationDefinition: CRMI Package Operation

Official URL: http://hl7.org/fhir/uv/crmi/OperationDefinition/crmi-package Version: 1.0.0
Active as of 2024-05-31 Computable Name: CRMIPackage
Other Identifiers: OID:2.16.840.1.113883.4.642.40.38.33.5

Packages a specified canonical resource for use in a target environment, optionally including related content such as dependencies, components, and testing cases and data.

See $package and $data-requirements

URL: [base]/ActivityDefinition/$package

URL: [base]/ActivityDefinition/[id]/$package

URL: [base]/CapabilityStatement/$package

URL: [base]/CapabilityStatement/[id]/$package

URL: [base]/CodeSystem/$package

URL: [base]/CodeSystem/[id]/$package

URL: [base]/CompartmentDefinition/$package

URL: [base]/CompartmentDefinition/[id]/$package

URL: [base]/ConceptMap/$package

URL: [base]/ConceptMap/[id]/$package

URL: [base]/ExampleScenario/$package

URL: [base]/ExampleScenario/[id]/$package

URL: [base]/GraphDefinition/$package

URL: [base]/GraphDefinition/[id]/$package

URL: [base]/ImplementationGuide/$package

URL: [base]/ImplementationGuide/[id]/$package

URL: [base]/Library/$package

URL: [base]/Library/[id]/$package

URL: [base]/Measure/$package

URL: [base]/Measure/[id]/$package

URL: [base]/Medication/$package

URL: [base]/Medication/[id]/$package

URL: [base]/MedicationKnowledge/$package

URL: [base]/MedicationKnowledge/[id]/$package

URL: [base]/MessageDefinition/$package

URL: [base]/MessageDefinition/[id]/$package

URL: [base]/NamingSystem/$package

URL: [base]/NamingSystem/[id]/$package

URL: [base]/OperationDefinition/$package

URL: [base]/OperationDefinition/[id]/$package

URL: [base]/PlanDefinition/$package

URL: [base]/PlanDefinition/[id]/$package

URL: [base]/Questionnaire/$package

URL: [base]/Questionnaire/[id]/$package

URL: [base]/SearchParameter/$package

URL: [base]/SearchParameter/[id]/$package

URL: [base]/StructureDefinition/$package

URL: [base]/StructureDefinition/[id]/$package

URL: [base]/StructureMap/$package

URL: [base]/StructureMap/[id]/$package

URL: [base]/Substance/$package

URL: [base]/Substance/[id]/$package

URL: [base]/TerminologyCapabilities/$package

URL: [base]/TerminologyCapabilities/[id]/$package

URL: [base]/TestScript/$package

URL: [base]/TestScript/[id]/$package

URL: [base]/ValueSet/$package

URL: [base]/ValueSet/[id]/$package

Parameters

UseNameScopeCardinalityTypeBindingDocumentation
INid0..1string

The logical id of an existing Resource to package on the server.

INurl0..1uri

A canonical or artifact reference to a Resource to package on the server.

INversion0..1string

The version of the Resource

INidentifier0..1string
(token)

A business identifier of the Resource.

INcapability0..*string

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.

INterminologyCapabilities0..1TerminologyCapabilities

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).

INartifactVersion0..*uri

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.

INcheckArtifactVersion0..*uri

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.

INforceArtifactVersion0..*uri

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.

INmanifest0..1canonical (CRMI Manifest Library)

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.

INoffset0..1integer

Paging support - where to start if a subset is desired (default = 0). Offset is number of records (not number of pages). If offset > 0 the resulting bundle will be of type collection.

INcount0..1integer

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 > 0 but less than the total number of resources, the result will be a bundle of type collection.

INinclude0..*code

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)

INincludeUri0..*uri

Specifies what contents should be included in the resulting package by canonical URL, can take the form {url} or {url}|{version}.

INexclude0..*code

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)

INexcludeUri0..*uri

Specifies what contents should be excluded in the resulting package by canonical URL, can take the form {url} or {url}|{version}.

INpackageOnly0..1boolean

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.

INartifactEndpointConfiguration0..*

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 artifactEndpointConfigurations
    • 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 artifactEndpointConfigurations, order as defined in the OperationDefinition.

INartifactEndpointConfiguration.artifactRoute0..1uri
INartifactEndpointConfiguration.endpointUri0..1uri
INartifactEndpointConfiguration.endpoint0..1Endpoint
INterminologyEndpoint0..1Endpoint

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 evaluation will attempt to use the server on which the operation is being performed as the terminology server.

OUTreturn1..1Bundle

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.

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.

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.