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: Artifact Operation

Official URL: http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-artifact-operation Version: 1.1.0-cibuild
Active as of 2025-02-17 Computable Name: ArtifactOperation
Other Identifiers: OID:2.16.840.1.113883.4.642.40.38.42.3

Profile for knowledge artifact operations.

This establishes input parameters when the operation is involked at the resource type level. The parameters are used to identify or specify the resource for the operation.

  • url: artifact URL* for the resource
  • version: artifact version* for the resource
  • identifier: business identifier for the resource
  • resource: instance of a canonical resource

*The artifact URL for canonical resources is .url, for non-canonical resources, it is the extension artifact-url. The version for canonical resources is .version, for non-canonical resources it is the extension artifact-version.

NOTE: When invoking canonical operations using any combination of url, version, and identifier:

  • if there is one-and-only-one matching resource, the operation should apply, otherwise an error state.
  • if resource is specified then url, version, and identifier should be ignored.

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:url SC 0..1 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
crmi-artifact-operation-1: Parameter url type is uri 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: url
..... 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: 1
.... parameter:version SC 0..1 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: version
..... 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: 1
..... 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: string
.... parameter:identifier SC 0..1 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: identifier
..... 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: 1
..... 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: string
..... searchType C 0..1 code number | date | string | token | reference | composite | quantity | uri | special
Binding: SearchParamType (required): Data types allowed to be used for search parameters.


ele-1: All FHIR elements must have a @value or children
Required Pattern: token
.... parameter:resource SC 0..1 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: resource
..... 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: 1
..... type C 0..1 code What type this parameter has
Binding: Artifact Resource Types (required)
ele-1: All FHIR elements must have a @value or children

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:url.userequiredPattern: in
http://hl7.org/fhir/ValueSet/operation-parameter-use|4.0.1
from the FHIR Standard
OperationDefinition.parameter:version.userequiredPattern: in
http://hl7.org/fhir/ValueSet/operation-parameter-use|4.0.1
from the FHIR Standard
OperationDefinition.parameter:version.typerequiredPattern: string
http://hl7.org/fhir/ValueSet/all-types|4.0.1
from the FHIR Standard
OperationDefinition.parameter:identifier.userequiredPattern: in
http://hl7.org/fhir/ValueSet/operation-parameter-use|4.0.1
from the FHIR Standard
OperationDefinition.parameter:identifier.typerequiredPattern: string
http://hl7.org/fhir/ValueSet/all-types|4.0.1
from the FHIR Standard
OperationDefinition.parameter:identifier.searchTyperequiredPattern: token
http://hl7.org/fhir/ValueSet/search-param-type|4.0.1
from the FHIR Standard
OperationDefinition.parameter:resource.userequiredPattern: in
http://hl7.org/fhir/ValueSet/operation-parameter-use|4.0.1
from the FHIR Standard
OperationDefinition.parameter:resource.typerequiredArtifactResourceTypes
http://terminology.hl7.org/ValueSet/artifact-resource-types
from this IG

Constraints

IdGradePath(s)DetailsRequirements
crmi-artifact-operation-1errorOperationDefinition.parameter:urlParameter url type is uri or canonical
: type='uri' or type='canonical'
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:url, OperationDefinition.parameter:version, OperationDefinition.parameter:identifier, OperationDefinition.parameter:resourceEither a type must be provided, or parts
: type.exists() or part.exists()
opd-2errorOperationDefinition.parameter, OperationDefinition.parameter:url, OperationDefinition.parameter:version, OperationDefinition.parameter:identifier, OperationDefinition.parameter:resourceA search type can only be specified for parameters of type string
: searchType.exists() implies type = 'string'
opd-3errorOperationDefinition.parameter, OperationDefinition.parameter:url, OperationDefinition.parameter:version, OperationDefinition.parameter:identifier, OperationDefinition.parameter:resourceA 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