Canonical Resource Management Infrastructure Implementation Guide
1.0.0 - STU1

Publication Build: This will be filled in by the publication tooling

## Operations

This implementation guide defines operations related to packaging and dependency management, as well as establishing several operation definition profiles that provide patterns for common capabilities of knowledge artifact operations.

### Operations

#### Packaging and Dependency Tracing

These operations are defined to support artifact packaging and dependency tracing, including data requirements determination. See the Packaging discussion for more information.

Operation | Description
--- | ---
CRMI Package | Packages a specified canonical resource for use in a target environment, optionally including related content such as dependencies, components, and testing cases and data.
CRMI DataRequirements | Determines the effective data requirements for the artifact, including known components and dependencies, optionally informed by a version manifest. The data requirements operation is used for dependency gathering, as a way to understand the set of dependencies of a given artifact, as well as for data requirements determination, as a way to understand the complete set of data requirements for a given artifact.

#### Terminology

These operations are defined to support terminology capabilities expected in an Artifact Terminology Service. See the Capabilities discussion for more information.

Operation | Description
--- | ---
CRMI ValueSet Expand | Requests the expansion of a given value set. This extension to the $expand operation adds support for artifact version binding information, as well as version manifest support

#### Artifact Authoring

These operations are defined to support artifact authoring capabilities expected in an Artifact Authoring Service. See the Capabilities discussion for more information.

Operation | Description
--- | ---
CRMI Approve | The approve operation supports applying an approval to an existing artifact, regardless of status. The operation sets the date and approvalDate elements of the approved artifact, and is otherwise only allowed to create ArtifactAssessment (Basic or cqf-artifactAssessment extensions in R4) resources in the repository.
CRMI Artifact Diff | Describes the differences between two knowledge artifacts in FHIR Patch format by recursively resolving dependencies to get a holistic diff.
CRMI Clone | Creates a clone version of a knowledge artifact, as well as for all resources it is composed of.
CRMI Draft | Creates a draft version of a knowledge artifact, as well as for all resources it is composed of.
CRMI Release | The release operation supports updating the status of an existing draft artifact to active. The operation sets the date element of the resource and pins versions of all direct and transitive references and records them in the program’s manifest. Child artifacts (i.e. artifacts of which the existing artifact is composed) are also released, recursively.
CRMI Review | The review operation supports applying an review to an existing artifact, regardless of status. The operation sets the date and lastReviewDate elements of the reviewed artifact, and is otherwise only allowed to create ArtifactAssessment (Basic or cqf-artifactAssessment extensions in R4) resources in the repository.

### Operation Pattern Profiles

Operations on knowledge artifacts SHOULD consider conforming to one or more of the following profiles to ensure consistent naming of operation parameters when providing the same capabilities across operations:

Operation Profile | Purpose
--- | ---
Artifact | Defines parameters used to identify artifact resource
Canonical Version Bindable | DEPRECATED, see Artifact Version Bindable: Defines parameters used to specify missing versions in canonical references
Artifact Version Bindable | Defines parameters used to specify missing versions in all artifact references
Manifestable | Defines parameters used to provide a version manifest
Pageable | Defines parameters for an operation with pageable options
Artifact Endpoint Configurable | Defines parameters to provide endpoints to resolve canonical artifacts
Data Configurable (Roadmap) | Defines parameters to specify how to resolve data requirements
Parameterizable (Roadmap) | Defines parameters passed to logic evaluation (e.g. CQL parameters)

Note that the `CanonicalVersionBindable` profile is already used in at some published operation definitions (such as ValueSet$expand) but is declared as deprecated because this implementation guide is proposing the more general `ArtifactVersionBindable` to support version-binding behavior for both canonical and non-canonical knowledge artifacts.