Canonical Resource Management Infrastructure Implementation Guide
1.0.0 - STU1

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

## Extensions

This implementation guide defines and makes use of several categories of extensions to support various aspects of knowledge artifact definition, packaging, and implementation. The following sections provide an index of each of these categories of extensions.

Note that most of these extensions are defined in the FHIR Extensions pack, but are referenced here to provide documentation and guidance about how they are used by the profiles in this implementation guide.

### Artifact Extensions

The `artifact-` extensions are to support representing artifact metadata for resources that are not already `CanonicalResource` or `MetadataResource` that have the given element.

Extension | Description | FMM
--- | --- | ---
Artifact Approval Date | When the artifact was approved by publisher. | 2
Artifact Author | An individual or organization primarily involved in the creation and maintenance of the artifact. | 2
Artifact Canonical Reference | A reference to a canonical resource. | 1
Artifact URI Reference | Create a reference, following canonical reference semantics, to an artifact that uses non-canonical extensions artifact-url and artifact-version as business identifiers. | 1
Artifact Contact | Contact details to assist a user in finding and communicating with the publisher. | 2
Artifact Copyright | A copyright statement relating to the artifact and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the artifact. | 2
Artifact Copyright Label | A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. ‘All rights reserved’, ‘Some rights reserved’). | 1
Artifact Date | The date (and optionally time) when the artifact was last significantly changed. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the artifact changes. | 2
Artifact Description | A free text natural language description of the artifact from a consumer’s perspective. | 2
Artifact Editor | An individual or organization primarily responsible for internal coherence of the artifact. | 2
Artifact Effective Period | When the artifact is expected to be used. | 1
Artifact Endorser | An individual or organization responsible for officially endorsing the artifact for use in some setting. | 2
Artifact Experimental | A Boolean value to indicate that this artifact is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage. | 2
Artifact Identifier | A formal identifier that is used to identify this artifact when it is represented in other formats, or referenced in a specification, model, design or an instance. | 2
Artifact Is Owned | Whether or not the referenced artifact is owned by the referencing artifact. | 1
Artifact Last Review Date | When the artifact was last reviewed by the publisher. | 1
Artifact Name | A natural language name identifying the artifact. This name should be usable as an identifier for the module by machine processing applications such as code generation. | 1
Artifact Publisher | The name of the organization or individual responsible for the release and ongoing maintenance of the artifact. | 1
Artifact Purpose | Explanation of why this artifact is needed and why it has been designed as it has. | 1
Artifact Release Description | Release notes for a release of an artifact. | 1
Artifact Release Label | A human-friendly release label assigned for the version. | 1
Artifact Related Artifact | Related artifacts such as additional documentation, justification, dependencies, bibliographic references, and predecessor and successor artifacts. | 2
Artifact Reviewer | An individual or organization primarily responsible for review of some aspect of the artifact. | 1
Artifact Status | The status of this artifact. Enables tracking the life-cycle of the content. | 1
Artifact Title | A short, descriptive, user-friendly title for the artifact. | 1
Artifact Topic | Descriptive topics related to the content of the artifact. Topics provide a high-level categorization of the artifact that can be useful for filtering and searching. | 1
Artifact URL | An absolute URI that is used to identify this artifact when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This **SHOULD** be globally unique and **SHOULD** be a literal address at which an authoritative instance of this artifact is (or will be) published. This URL can be the target of a canonical reference. It **SHALL** remain the same when the artifact is stored on different servers. | 1
Artifact Usage | Describes the clinical usage of the artifact. | 1
Artifact UseContext | The artifact was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, …) or may be references to specific programs (insurance plans, studies, …) and may be used to assist with indexing and searching for appropriate artifact instances. | 1
Artifact Version | The identifier that is used to identify this version of the artifact when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the artifact author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence. | 1
Artifact Version Algorithm | Indicates the mechanism used to compare versions to determine which is more current. | 1
Artifact Version Policy | Describes the versioning policy of the artifact. | 1
Artifact Comment | A comment containing additional documentation, a review comment, usage guidance, or other relevant information from a particular user. | 3
Definition Term | Specifies a term and its associated definition. | 3
Is Primary Citation | Specifies whether the related artifact is defining a primary citation for the artifact (i.e. one that should appear in the narrative for the artifact specification. | 3

### Terminology Extensions

These extensions provide terminology-related capabilities for specifying expansion parameters as part of a knowledge artifact or version-manifest, as well as providing a value set reference to indicate that a particular event was not done.

Extension | Description | FMM
--- | --- | ---
Expansion Parameters | Specifies the expansion parameters that should be used to expand the ValueSet, or any ValueSets in the Library (or referenced by components of the Library). | 3

### Packaging and Dependency Tracing Extensions

These extensions are used to support packaging and dependency tracing capabilities.

Extension | Description | FMM
--- | --- | ---
Resource Type | Specifies the type of resource the canonical references. | 1
Scope | Defines the scope of an artifact as a string of the form {namespace-name}[@{namespace-uri}]. Namespace name **SHALL** be a valid NPM package id, and namespace uri **SHALL** be a valid uri. For FHIR implementation guides, scope is inferred using the package id and the base canonical. e.g. fhir.cqf.common@http://fhir.org/guides/cqf/common. This extension can be used on Implementation Guides, Libraries, on any knowledge artifact, to declare the scope of the artifact. In the absence of an explicit scope declaration, the scope of an artifact is inferred based on the IG in which the artifact is defined. | 1
Should Trace Dependency | Indicates whether the extension or profile element on which it appears represents a dependency that should be traced for the purposes of artifact packaging and distribution | 1
Test Artifact | The artifact under test for this test content | 1
CRMI Software System | Specifies the software systems used in the packaging and testing of knowledge artifacts. Specifically to support explicitly stating which versions of the various software components were used in the authoring, packaging, and testing. | 3

### Logic-related Extensions

These extensions provide capabilities related to the specification of logic and data requirements as part of knowledge artifacts.

Extension | Description | FMM
--- | --- | ---
Default Value | Provides a default value for a parameter definition. | 3
FHIR Query Pattern | A FHIR Query URL pattern that corresponds to the data specified by the data requirement. If multiple FHIR Query URLs are present, they each contribute to the data specified by the data requirement (i.e. the union of the results of the FHIR Queries represents the complete data for the data requirement). This is not a resolveable URL, in that it will contain 1) No base canonical (i.e. it's a relative query), and 2) Parameters using tokens that are delimited using double-braces and the context parameters are dependent solely on the subjectType, according to the following: Patient: context.patientId, Practitioner: context.practitionerId, Organization: context.organizationId, Location: context.locationId, Device: context.deviceId. | 3
Is Selective | This extension is useful for helping implementing systems determine which data requirements are expected to be most selective of the target population. A common use case is to identify a subset of the data requirements for an artifact as "selective", meaning that they can be used as an initial filter to establish the overall set of data. For example, the selective requirements can be used to construct an initial query or queries for data, with the non-selective requirements used for subsequent filtering on the resulting data. Although this extension may be used by artifact authors as a way to indicate expected selectivity of a data requirement, it will more typically be used by implementers and downstream packaging repositories to indicate selectivity of a data requirement given known data heuristics in particular datasets. | 3
Messages | An OperationOutcome that contains any information, warning, and/or error messages that were generated while processing an operation such as $evaluate or $prepopulate. | 3
Value Filter | Allows additional value-based filters to be specified as part of a data requirement. | 3
CRMI Effective Data Requirements | A module definition library that contains the effective data requirements for an artifact (i.e. the calculated data requirements for the expressions directly referenced by the artifact structure). | 3
CRMI Configuration Endpoint | This extension allows module configuration libraries to indicate which endpoint the configuration is for | 3
CRMI Configuration Endpoint | This extension allows module configuration libraries to indicate which artifact the configuration is for | 3
CRMI Configuration Endpoint | This extension allows module configuration libraries to indicate whether the endpoint they are configuring supports the POST style of search interaction. | 3