This page is part of the Canonical Resource Management Infrastructure Implementation Guide (v1.0.0-snapshot: STU1 Draft) based on FHIR (HL7® FHIR® Standard) R4. . For a full list of available versions, see the Directory of published versions
For definitional artifacts, this implementation guide defines categories of profiles to represent knowledge capabilities for shareable, computable, publishable, and executable knowledge artifacts. These categories are proposed as a way to help facilitate management of expectations in the content development lifecycle, as well as address common challenges that have been encountered in the development of knowledge artifacts across the quality improvement spectrum, including guideline development, public health reporting specifications, clinical decision support rules, and quality measures. The expectation is that these same challenges will arise in any knowledge artifact development effort, and that the profiles and solutions proposed here will be useful in addressing those challenges.
Most knowledge artifacts are typically at least shareable, and where appropriate for the target environment, artifacts SHOULD declare the capabilities they support using the cqf-knowledgeCapability extension, as well as the knowledge representation level of the artifact using the cqf-knowledgeRepresentationLevel extension, as defined in the shareable profiles.
These capabilities are introduced to support separation of concerns along the spectrum from authoring to distribution to consumption, as illustrated by the following diagram:
A given artifact may provide all knowledge capabilities (Shareable, Computable, Publishable, and Executable), or it may be focused on a particular capability. For example, a ValueSet may be only Shareable and Expanded because it is intended for use in environments without access to a terminology service capable of expanding the Computable definition of the value set.
The profile categories are expressed as independent profiles to support separation of concerns. For example, a contained ValueSet included in a Questionnaire may not meet the Shareable profile (because it doesn’t have a stand-alone life-cycle) but it may still meet Computable expectations.
Profiles along the various axes may have different names appropriate to what capabilities are being provided. For example, ValueSet uses ExpandedValueSet, rather than ExecutableValueSet, to make clear what run-time capability is being provided by the profile.
Note that explicit profiles for capabilities are only defined when there are specific elements of the artifact involved in supporting that capability. For example, there is no executable ActivityDefinition profile, but that doesn’t mean that ActivityDefinition artifacts cannot be executable, only that there are no additional conformance expectations for executable ActivityDefinitions specified by this implementation guide.
For knowledge artifacts, a shareable artifact defines the minimum expectations for knowledge artifact resources to be shared between authoring, publishing, and implementation systems. This pattern is intended to apply to Canonical Resources such as ValueSet, CodeSystem, StructureDefinition, Library, and so on. The pattern is defined to ensure that an artifact has enough metadata to make sharing it through a public repository reliable. The following table provides guidance for which elements should be present in a Shareable resource profile:
Element | Guidance |
---|---|
url | SHALL be provided because it provides the globally unique identity for the artifact |
version | SHALL be provided because it ensures version tracking is possible for the artifact |
versionAlgorithm | SHOULD be provided to ensure systems understand how to interpret the version element of the artifact |
name | SHOULD be provided to ensure systems can reliably make use of code-generation and other system-level processing for the artifact |
title | SHALL be provided to ensure systems can provide a user-friendly identifier for the artifact |
status | SHALL be provided to ensure systems can track the life-cycle of the artifact |
experimental | SHOULD be provided to ensure systems can differentiate production from experimental content |
publisher | SHOULD be provided to ensure consumers can identify the publisher (i.e. steward) of the artifact |
description | SHALL be provided to ensure systems can provide a meaningful human-readable description of the artifact |
knowledgeRepresentationLevel | SHOULD be provided to allow systems to understand the levels of representation of content provided by the artifact |
For knowledge artifacts, a publishable artifact defines the expectations for publication and distribution of an artifact, typically as part of an artifact repository. The Publishable pattern is defined to ensure that artifacts have enough metadata to understand when, where, and why a particular artifact would be used, as well as who contributed to it, who reviewed or endorsed it, and what evidence supports its use. The pattern is about ensuring artifacts can establish trust and credibility, as well as carry enough metadata to be discoverable in a public repository or artifact catalog. All “publishable” artifacts are also “shareable”. This pattern is intended to apply to Canonical Resources such as ValueSet, CodeSystem, StructureDefinition, Library, and so on. The following table provides guidance for which elements should be present in a Publishable resource profile:
Element | Guidance |
---|---|
identifier | MAY be provided to allow for additional identifiers beyond the URL (e.g. the OID) |
date | SHALL be provided to ensure systems have a mechanism to detect changes that may not be tracked by the version |
contact | SHOULD be provided to allow consumers to understand how to contact the publisher (i.e. steward) of the artifact |
useContext | SHOULD be provided to allow systems to categorize by and consumers to understand the appropriate context of use for the artifact |
jurisdiction | DEPRECATED, artifacts SHOULD use a useContext with a code of jurisdiction to provide this information for the artifact |
purpose | SHOULD be provided to allow consumers to understand why an artifact was created and the intended purpose of use |
copyright | SHOULD be provided to inform consumers about use and/or publishing restrictions |
copyrightLabel | SHOULD be provided to allow systems to display and consumers to understand copyright information |
approvalDate | SHOULD be provided to inform consumers about the primary approval date of the artifact |
lastReviewDate | SHOULD be provided to inform consumers when the artifact content was last reviewed |
effectivePeriod | SHOULD be provided to inform consumers what timeframe the artifact is intended to be used |
topic | DEPRECATED, artifact SHOULD use a useContext instead |
author | SHOULD be provided to inform consumers what authors contributed to the artifact |
editor | SHOULD be provided to inform consumers what editors were involved in the artifact |
reviewer | SHOULD be provided to inform consumers what individuals or organizations were involved in the review of the artifact |
endorser | SHOULD be provided to inform consumers what individuals or organizations have endorsed the artifact |
relatedArtifact | SHOULD be provided to support additional documentation, citations, etc. for the artifact |
For knowledge artifacts a computable artifact identifies the aspects of the artifact that are primarily focused on authoring or design-time/compile-time considerations. For example, the compose
element of a ValueSet is a computable definition of the members of the value set. Because the computable capabilities of each type of knowledge artifact vary based on what the knowledge artifact is representing, guidance on individual elements for each profile are defined in the computable profiles.
For knowledge artifacts an executable artifact identifies the aspects of the artifact that are primarily focused on implementation or run-time considerations. For example, the expansion
element of a ValueSet is an explicit representation of the members of the value set for a particular expansion (i.e. without requiring the use of a terminology server to understand the computable definition). Because the executable capabilities of each type of knowledge artifact vary based on what the knowledge artifact is representing, guidance on individual elements for each profile are defined in the executable profile.
The following table lists the capability profiles defined for each type of knowledge artifact:
Artifact | Shareable | Computable | Publishable | Executable |
---|---|---|---|---|
ActivityDefinition | CRMIShareableActivityDefinition | N/A (no requirements) | CRMIPublishableActivityDefinition | N/A (no requirements) |
CapabilityStatement | CRMIShareableCapabilityStatement | N/A (no requirements) | CRMIPublishableCapabilityStatement | N/A (no requirements) |
ClinicalUseDefinition | CRMIShareableClinicalUseDefinition (Roadmap Item) | N/A (no requirements) | CRMIPublishableClinicalUseDefinition (Roadmap Item) | N/A (no requirements) |
CodeSystem | CRMIShareableCodeSystem | N/A (no requirements) | CRMIPublishableCodeSystem | N/A (no requirements) |
CompartmentDefinition | CRMIShareableCompartmentDefinition (Roadmap Item) | N/A (no requirements) | CRMIPublishableCompartmentDefinition (Roadmap Item) | N/A (no requirements) |
ConditionDefinition | CRMIShareableConditionDefinition (Roadmap Item) | N/A (no requirements) | CRMIPublishableConditionDefinition (Roadmap Item) | N/A (no requirements) |
ConceptMap | CRMIShareableConceptMap | N/A (no requirements) | CRMIPublishableConceptMap | N/A (no requirements) |
DeviceDefinition | CRMIShareableDeviceDefinition (Roadmap Item) | N/A (no requirements) | CRMIPublishableDeviceDefinition (Roadmap Item) | N/A (no requirements) |
ExampleScenario | CRMIShareableExampleScenario (Roadmap Item) | N/A (no requirements) | CRMIPublishableExampleScenario (Roadmap Item) | N/A (no requirements) |
GraphDefinition | CRMIShareableGraphDefinition | N/A (no requirements) | CRMIPublishableGraphDefinition | N/A (no requirements) |
Group | CRMIShareableGroup (Roadmap Item) | N/A (no requirements) | CRMIPublishableGroup (Roadmap Item) | N/A (no requirements) |
ImplementationGuide | CRMIShareableImplementationGuide | N/A (no requirements) | CRMIPublishableImplementationGuide | N/A (no requirements) |
Library | CRMIShareableLibrary | CRMIComputableLibrary | CRMIPublishableLibrary | CRMIExecutableLibrary |
Measure | CRMIShareableMeasure | N/A (no requirements) | CRMIPublishableMeasure | N/A (no requirements) |
Medication | CRMIShareableMedication (Roadmap Item) | N/A (no requirements) | CRMIPublishableMedication (Roadmap Item) | N/A (no requirements) |
MedicationKnowledge | CRMIShareableMedicationKnowledge (Roadmap Item) | N/A (no requirements) | CRMIPublishableMedicationKnowledge (Roadmap Item) | N/A (no requirements) |
MessageDefinition | CRMIShareableMessageDefinition (Roadmap Item) | N/A (no requirements) | CRMIPublishableMessageDefinition (Roadmap Item) | N/A (no requirements) |
NamingSystem | CRMIShareableNamingSystem | N/A (no requirements) | CRMIPublishableNamingSystem | N/A (no requirements) |
ObservationDefinition | CRMIShareableObservationDefinition (Roadmap Item) | N/A (no requirements) | CRMIPublishableObservationDefinition (Roadmap Item) | N/A (no requirements) |
OperationDefinition | CRMIShareableOperationDefinition | N/A (no requirements) | CRMIPublishableOperationDefinition | N/A (no requirements) |
PlanDefinition | CRMIShareablePlanDefinition | N/A (no requirements) | CRMIPublishablePlanDefinition | N/A (no requirements) |
Questionnaire | CRMIShareableQuestionnaire | N/A (no requirements) | CRMIPublishableQuestionnaire | N/A (no requirements) |
SearchParameter | CRMIShareableSearchParameter | N/A (no requirements) | CRMIPublishableSearchParameter | N/A (no requirements) |
SpecimenDefinition | CRMIShareableSpecimenDefinition (Roadmap Item) | N/A (no requirements) | CRMIPublishableSpecimenDefinition (Roadmap Item) | N/A (no requirements) |
Substance | CRMIShareableSubstance (Roadmap Item) | N/A (no requirements) | CRMIPublishableSubstance (Roadmap Item) | N/A (no requirements) |
SubscriptionTopic | CRMIShareableSubscriptionTopic (Roadmap Item) | N/A (no requirements) | CRMIPublishableSubscriptionTopic (Roadmap Item) | N/A (no requirements) |
StructureDefinition | CRMIShareableStructureDefinition | N/A (no requirements) | CRMIPublishableStructureDefinition | N/A (no requirements) |
StructureMap | CRMIShareableStructureMap (Roadmap Item) | N/A (no requirements) | CRMIPublishableStructureMap (Roadmap Item) | N/A (no requirements) |
TerminologyCapabilities | CRMIShareableTerminologyCapabilities | N/A (no requirements) | CRMIPublishableTerminologyCapabilities | N/A (no requirements) |
ValueSet | CRMIShareableValueSet | CRMIComputableValueSet | CRMIPublishableValueSet | CRMIExpandedValueSet |
Note that the terminology-related profiles (on CodeSystem, ConceptMap, NamingSystem, and ValueSet) are defined to support usage in R4 implementations. These profiles are aligned with the same profiles defined in the R6 base specification, and when an R6 version of this implementation guide is produced, these profiles will be removed from this IG in favor of the R6 profiles in the base specification.
To support packaging, testing, and distribution of knowledge artifacts, this implementation guide defines the following additional profiles:
Profile | Description |
---|---|
CRMIGroupDefinition | A profile of Group that supports context-independent representation of groups for use in definitional contexts. |
CRMIManifestLibrary | A library profile used to define artifact collections that provide complete dependency and version resolution information for the artifacts in the collection. |
CRMIMedicationDefinition | A profile of Medication that supports context-independent representation of medications for use in definitional contexts. |
CRMIMedicationKnowledgeDefinition | A profile of MedicationKnowledge that supports context-independent representation of medication knowledge for use in definitional contexts. |
CRMIModuleConfigurationLibrary | A library profile used to define and exchange configuration information for an artifact (or collection of artifacts) for a specific endpoint. |
CRMIModuleDefinitionLibrary | A library profile used to define and exchange effective data requirements and usage information for an artifact (or collection of artifacts). |
CRMISoftwareSystemDevice | A software device used in the creation, validation, evaluation, packaging, and/or testing of a library or measure artifact. |
CRMISubstanceDefinition | A profile of Substance that supports context-independent representation of substances for use in definitional contexts |