Canonical Resource Management Infrastructure Implementation Guide
1.1.0-cibuild - cibuild 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.1.0-cibuild 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

Resource Profile: CRMI Operation Profile: Canonical Version Bindable

Official URL: http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-canonical-version-bindable-operation Version: 1.1.0-cibuild
Active as of 2025-02-17 Computable Name: CanonicalVersionBindableOperation
Other Identifiers: OID:2.16.840.1.113883.4.642.40.38.42.5

Operation where default canonical version(s) can be specified

NOTE: This profile is here for backwards compatibility, see ArtifactVersionBindableOperation profile as a successor.

  • canonicalVersion: 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
  • checkCanonicalVersion: 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
  • forceCanonicalVersion: 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.

Usage:

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

NameFlagsCard.TypeDescription & Constraintsdoco
.. OperationDefinition C 0..* OperationDefinition Definition of an operation or a named query
dom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources
dom-3: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
dom-5: If a resource is contained in another resource, it SHALL NOT have a security label
dom-6: A resource should have narrative for robust management
opd-0: Name should be usable as an identifier for the module by machine processing applications such as code generation
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
ele-1: All FHIR elements must have a @value or children
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
... name ΣC 1..1 string Name for this operation definition (computer friendly)
ele-1: All FHIR elements must have a @value or children
... kind Σ 1..1 code operation | query
Binding: OperationKind (required): Whether an operation is a normal operation or a query.


ele-1: All FHIR elements must have a @value or children
... code Σ 1..1 code Name used to invoke the operation
ele-1: All FHIR elements must have a @value or children
... system Σ 1..1 boolean Invoke at the system level?
ele-1: All FHIR elements must have a @value or children
... type Σ 1..1 boolean Invoke at the type level?
ele-1: All FHIR elements must have a @value or children
... instance Σ 1..1 boolean Invoke on an instance?
ele-1: All FHIR elements must have a @value or children
... Slices for parameter C 0..* BackboneElement Parameters for the operation/query
Slice: Unordered, Open by value:name
ele-1: All FHIR elements must have a @value or children
opd-1: Either a type must be provided, or parts
opd-2: A search type can only be specified for parameters of type string
opd-3: A targetProfile can only be specified for parameters of type Reference or Canonical
.... parameter:All Slices Content/Rules for all slices
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
..... name 1..1 code Name in Parameters.parameter.name or in URL
ele-1: All FHIR elements must have a @value or children
..... use 1..1 code in | out
Binding: OperationParameterUse (required): Whether an operation parameter is an input or an output parameter.


ele-1: All FHIR elements must have a @value or children
..... min 1..1 integer Minimum Cardinality
ele-1: All FHIR elements must have a @value or children
..... max 1..1 string Maximum Cardinality (a number or *)
ele-1: All FHIR elements must have a @value or children
.... parameter:canonicalVersion SC 0..* BackboneElement Parameters for the operation/query
ele-1: All FHIR elements must have a @value or children
opd-1: Either a type must be provided, or parts
opd-2: A search type can only be specified for parameters of type string
opd-3: A targetProfile can only be specified for parameters of type Reference or Canonical
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
..... name 1..1 code Name in Parameters.parameter.name or in URL
ele-1: All FHIR elements must have a @value or children
Fixed Value: canonicalVersion
..... use 1..1 code in | out
Binding: OperationParameterUse (required): Whether an operation parameter is an input or an output parameter.


ele-1: All FHIR elements must have a @value or children
Required Pattern: in
..... min 1..1 integer Minimum Cardinality
ele-1: All FHIR elements must have a @value or children
Required Pattern: 0
..... max 1..1 string Maximum Cardinality (a number or *)
ele-1: All FHIR elements must have a @value or children
Required Pattern: *
..... type C 0..1 code What type this parameter has
Binding: FHIRAllTypes (required): A list of all the concrete types defined in this version of the FHIR specification - Abstract Types, Data Types and Resource Types.


ele-1: All FHIR elements must have a @value or children
Required Pattern: canonical
.... parameter:checkCanonicalVersion SC 0..* BackboneElement Parameters for the operation/query
ele-1: All FHIR elements must have a @value or children
opd-1: Either a type must be provided, or parts
opd-2: A search type can only be specified for parameters of type string
opd-3: A targetProfile can only be specified for parameters of type Reference or Canonical
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
..... name 1..1 code Name in Parameters.parameter.name or in URL
ele-1: All FHIR elements must have a @value or children
Fixed Value: checkCanonicalVersion
..... use 1..1 code in | out
Binding: OperationParameterUse (required): Whether an operation parameter is an input or an output parameter.


ele-1: All FHIR elements must have a @value or children
Required Pattern: in
..... min 1..1 integer Minimum Cardinality
ele-1: All FHIR elements must have a @value or children
Required Pattern: 0
..... max 1..1 string Maximum Cardinality (a number or *)
ele-1: All FHIR elements must have a @value or children
Required Pattern: *
..... type C 0..1 code What type this parameter has
Binding: FHIRAllTypes (required): A list of all the concrete types defined in this version of the FHIR specification - Abstract Types, Data Types and Resource Types.


ele-1: All FHIR elements must have a @value or children
Required Pattern: canonical
.... parameter:forceCanonicalVersion SC 0..* BackboneElement Parameters for the operation/query
ele-1: All FHIR elements must have a @value or children
opd-1: Either a type must be provided, or parts
opd-2: A search type can only be specified for parameters of type string
opd-3: A targetProfile can only be specified for parameters of type Reference or Canonical
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
..... name 1..1 code Name in Parameters.parameter.name or in URL
ele-1: All FHIR elements must have a @value or children
Fixed Value: forceCanonicalVersion
..... use 1..1 code in | out
Binding: OperationParameterUse (required): Whether an operation parameter is an input or an output parameter.


ele-1: All FHIR elements must have a @value or children
Required Pattern: in
..... min 1..1 integer Minimum Cardinality
ele-1: All FHIR elements must have a @value or children
Required Pattern: 0
..... max 1..1 string Maximum Cardinality (a number or *)
ele-1: All FHIR elements must have a @value or children
Required Pattern: *
..... type C 0..1 code What type this parameter has
Binding: FHIRAllTypes (required): A list of all the concrete types defined in this version of the FHIR specification - Abstract Types, Data Types and Resource Types.


ele-1: All FHIR elements must have a @value or children
Required Pattern: canonical

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
OperationDefinition.statusrequiredPublicationStatus
http://hl7.org/fhir/ValueSet/publication-status|4.0.1
from the FHIR Standard
OperationDefinition.kindrequiredOperationKind
http://hl7.org/fhir/ValueSet/operation-kind|4.0.1
from the FHIR Standard
OperationDefinition.parameter.userequiredOperationParameterUse
http://hl7.org/fhir/ValueSet/operation-parameter-use|4.0.1
from the FHIR Standard
OperationDefinition.parameter:canonicalVersion.userequiredPattern: in
http://hl7.org/fhir/ValueSet/operation-parameter-use|4.0.1
from the FHIR Standard
OperationDefinition.parameter:canonicalVersion.typerequiredPattern: canonical
http://hl7.org/fhir/ValueSet/all-types|4.0.1
from the FHIR Standard
OperationDefinition.parameter:checkCanonicalVersion.userequiredPattern: in
http://hl7.org/fhir/ValueSet/operation-parameter-use|4.0.1
from the FHIR Standard
OperationDefinition.parameter:checkCanonicalVersion.typerequiredPattern: canonical
http://hl7.org/fhir/ValueSet/all-types|4.0.1
from the FHIR Standard
OperationDefinition.parameter:forceCanonicalVersion.userequiredPattern: in
http://hl7.org/fhir/ValueSet/operation-parameter-use|4.0.1
from the FHIR Standard
OperationDefinition.parameter:forceCanonicalVersion.typerequiredPattern: canonical
http://hl7.org/fhir/ValueSet/all-types|4.0.1
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorOperationDefinitionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorOperationDefinitionIf the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource
: contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4errorOperationDefinitionIf a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
: contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5errorOperationDefinitionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceOperationDefinitionA resource should have narrative for robust management
: text.`div`.exists()
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
opd-0warningOperationDefinitionName should be usable as an identifier for the module by machine processing applications such as code generation
: name.matches('[A-Z]([A-Za-z0-9_]){0,254}')
opd-1errorOperationDefinition.parameter, OperationDefinition.parameter:canonicalVersion, OperationDefinition.parameter:checkCanonicalVersion, OperationDefinition.parameter:forceCanonicalVersionEither a type must be provided, or parts
: type.exists() or part.exists()
opd-2errorOperationDefinition.parameter, OperationDefinition.parameter:canonicalVersion, OperationDefinition.parameter:checkCanonicalVersion, OperationDefinition.parameter:forceCanonicalVersionA search type can only be specified for parameters of type string
: searchType.exists() implies type = 'string'
opd-3errorOperationDefinition.parameter, OperationDefinition.parameter:canonicalVersion, OperationDefinition.parameter:checkCanonicalVersion, OperationDefinition.parameter:forceCanonicalVersionA targetProfile can only be specified for parameters of type Reference or Canonical
: targetProfile.exists() implies (type = 'Reference' or type = 'canonical')

 

Other representations of profile: CSV, Excel, Schematron