CodeSystem
The CodeSystem resource is used to declare the existence of and describe a code system or code system supplement and its key properties, and optionally define a part or all of its content.
- Schema
- Usage
- Relationships
- Background and Context
- Referenced By
Elements
Name | Required | Type | Description |
---|---|---|---|
url | uri | Canonical identifier for this code system, represented as a URI (globally unique) (Coding.system) DetailsAn absolute URI that is used to identify this code system 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 at which an authoritative instance of this code system is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the code system is stored on different servers. This is used in [Coding](datatypes.html#Coding).system. Can be a urn:uuid: or a urn:oid: but real http: addresses are preferred. Multiple instances may share the same URL if they have a distinct version. The determination of when to create a new version of a resource (same url, new version) vs. defining a new artifact is up to the author. Considerations for making this decision are found in [Technical and Business Versions](resource.html#versions). In some cases, the resource can no longer be found at the stated url, but the url itself cannot change. Implementations can use the [meta.source](resource.html#meta) element to indicate where the current master source of the resource can be found. | |
identifier | Identifier[] | Additional identifier for the code system (business identifier) DetailsA formal identifier that is used to identify this code system when it is represented in other formats, or referenced in a specification, model, design or an instance. Typically, this is used for identifiers that can go in an HL7 V3 II (instance identifier) data type, and can then identify this code system outside of FHIR, where it is not possible to use the logical URI. Note that HL7 defines at least three identifiers for many of its code systems - the FHIR canonical URL, the OID and the V2 Table 0396 mnemonic code. | |
version | string | Business version of the code system (Coding.version) DetailsThe identifier that is used to identify this version of the code system when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the code system 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. This is used in [Coding](datatypes.html#Coding).version. There may be different code system instances that have the same identifier but different versions. The version can be appended to the url in a reference to allow a reference to a particular business version of the code system with the format [url]|[version]. | |
name | string | Name for this code system (computer friendly) DetailsA natural language name identifying the code system. This name should be usable as an identifier for the module by machine processing applications such as code generation. The name is not expected to be globally unique. The name should be a simple alphanumeric type name to ensure that it is machine-processing friendly. | |
title | string | Name for this code system (human friendly) DetailsA short, descriptive, user-friendly title for the code system. This name does not need to be machine-processing friendly and may contain punctuation, white-space, etc. | |
status | ✓ | code | draft | active | retired | unknown DetailsThe date (and optionally time) when the code system resource was created or revised. Allows filtering of code systems that are appropriate for use versus not. |
experimental | boolean | For testing purposes, not real usage DetailsA Boolean value to indicate that this code system is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage. Allows filtering of code systems that are appropriate for use versus not. | |
date | dateTime | Date last changed DetailsThe date (and optionally time) when the code system was published. 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 code system changes. Note that this is not the same as the resource last-modified-date, since the resource may be a secondary representation of the code system. Additional specific dates may be added as extensions or be found by consulting Provenances associated with past versions of the resource. | |
publisher | string | Name of the publisher (organization or individual) DetailsThe name of the organization or individual that published the code system. Usually an organization but may be an individual. The publisher (or steward) of the code system is the organization or individual primarily responsible for the maintenance and upkeep of the code system. This is not necessarily the same individual or organization that developed and initially authored the content. The publisher is the primary point of contact for questions or issues with the code system. This item SHOULD be populated unless the information is available from context. | |
contact | ContactDetail[] | Contact details for the publisher DetailsContact details to assist a user in finding and communicating with the publisher. May be a web site, an email address, a telephone number, etc. | |
description | markdown | Natural language description of the code system DetailsA free text natural language description of the code system from a consumer's perspective. This description can be used to capture details such as why the code system was built, comments about misuse, instructions for clinical use and interpretation, literature references, examples from the paper world, etc. It is not a rendering of the code system as conveyed in the 'text' field of the resource itself. This item SHOULD be populated unless the information is available from context (e.g. the language of the code system is presumed to be the predominant language in the place the code system was created). | |
useContext | UsageContext[] | The context that the content is intended to support DetailsThe content 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 code system instances. When multiple useContexts are specified, there is no expectation that all or any of the contexts apply. | |
jurisdiction | CodeableConcept[] | Intended jurisdiction for code system (if applicable) DetailsA legal or geographic region in which the code system is intended to be used. It may be possible for the code system to be used in jurisdictions other than those for which it was originally designed or intended. | |
purpose | markdown | Why this code system is defined DetailsExplanation of why this code system is needed and why it has been designed as it has. This element does not describe the usage of the code system. Instead, it provides traceability of ''why'' the resource is either needed or ''why'' it is defined as it is. This may be used to point to source materials or specifications that drove the structure of this code system. | |
copyright | markdown | Use and/or publishing restrictions DetailsA copyright statement relating to the code system and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the code system. ... Sometimes, the copyright differs between the code system and the codes that are included. The copyright statement should clearly differentiate between these when required. | |
caseSensitive | boolean | If code comparison is case sensitive DetailsIf code comparison is case sensitive when codes within this system are compared to each other. If this value is missing, then it is not specified whether a code system is case sensitive or not. When the rule is not known, Postel's law should be followed: produce codes with the correct case, and accept codes in any case. This element is primarily provided to support validation software. | |
valueSet | canonical | Canonical reference to the value set with entire code system DetailsCanonical reference to the value set that contains the entire code system. The definition of the value set SHALL include all codes from this code system and only codes from this code system, and it SHALL be immutable. | |
hierarchyMeaning | code | grouped-by | is-a | part-of | classified-with DetailsThe meaning of the hierarchy of concepts as represented in this resource. Note that other representations might have a different hierarchy or none at all, and represent the information using properties. | |
compositional | boolean | If code system defines a compositional grammar DetailsThe code system defines a compositional (post-coordination) grammar. Note that the code system resource does not define what the compositional grammar is, only whether or not there is one. | |
versionNeeded | boolean | If definitions are not stable DetailsThis flag is used to signify that the code system does not commit to concept permanence across versions. If true, a version must be specified when referencing this code system. Best practice is that code systems do not redefine concepts, or that if concepts are redefined, a new code system definition is created. But this is not always possible, so some code systems may be defined as 'versionNeeded'. Most code systems occasionally refine the displays defined for concepts between versions. Contexts in which the concept display values are validated may require that the version be specified for some code systems irrespective of the value of this property. | |
content | ✓ | code | not-present | example | fragment | complete | supplement DetailsThe extent of the content of the code system (the concepts and codes it defines) are represented in this resource instance. |
supplements | canonical | Canonical URL of Code System this adds designations and properties to DetailsThe canonical URL of the code system that this code system supplement is adding designations and properties to. The most common use of a code system supplement is to add additional language support. | |
count | unsignedInt | Total concepts in the code system DetailsThe total number of concepts defined by the code system. Where the code system has a compositional grammar, the basis of this count is defined by the system steward. The count of concepts defined in this resource cannot be more than this value but may be less for several reasons - see the content element. | |
filter | CodeSystemfilter[] | Filter that can be used in a value set DetailsA filter that can be used in a value set compose statement when selecting concepts using a filter. Note that filters defined in code systems usually require custom code on the part of any terminology engine that will make them available for use in value set filters. For this reason, they are generally only seen in high value published terminologies. | |
id | string | Unique id for inter-element referencing DetailsUnique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. | |
extension | Extension[] | Additional content defined by implementations DetailsMay be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
modifierExtension | Extension[] | Extensions that cannot be ignored even if unrecognized DetailsMay be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
code | ✓ | code | Code that identifies the filter DetailsThe code that identifies this filter when it is used as a filter in [ValueSet](valueset.html#).compose.include.filter. |
description | string | How or why the filter is used DetailsA description of how or why the filter is used. | |
operator | ✓ | code[] | = | is-a | descendent-of | is-not-a | regex | in | not-in | generalizes | exists DetailsA list of operators that can be used with the filter. |
value | ✓ | string | What to use for the value DetailsA description of what the value for the filter should be. |
property | CodeSystemproperty[] | Additional information supplied about each concept DetailsA property defines an additional slot through which additional information can be provided about a concept. | |
id | string | Unique id for inter-element referencing DetailsUnique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. | |
extension | Extension[] | Additional content defined by implementations DetailsMay be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
modifierExtension | Extension[] | Extensions that cannot be ignored even if unrecognized DetailsMay be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
code | ✓ | code | Identifies the property on the concepts, and when referred to in operations DetailsA code that is used to identify the property. The code is used internally (in CodeSystem.concept.property.code) and also externally, such as in property filters. |
uri | uri | Formal identifier for the property DetailsReference to the formal meaning of the property. One possible source of meaning is the [Concept Properties](codesystem-concept-properties.html) code system. | |
description | string | Why the property is defined, and/or what it conveys DetailsA description of the property- why it is defined, and how its value might be used. | |
type | ✓ | code | code | Coding | string | integer | boolean | dateTime | decimal DetailsThe type of the property value. Properties of type "code" contain a code defined by the code system (e.g. a reference to another defined concept). |
concept | CodeSystemconcept[] | Concepts in the code system DetailsConcepts that are in the code system. The concept definitions are inherently hierarchical, but the definitions must be consulted to determine what the meanings of the hierarchical relationships are. If this is empty, it means that the code system resource does not represent the content of the code system. | |
id | string | Unique id for inter-element referencing DetailsUnique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. | |
extension | Extension[] | Additional content defined by implementations DetailsMay be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
modifierExtension | Extension[] | Extensions that cannot be ignored even if unrecognized DetailsMay be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
code | ✓ | code | Code that identifies concept DetailsA code - a text symbol - that uniquely identifies the concept within the code system. |
display | string | Text to display to the user DetailsA human readable string that is the recommended default way to present this concept to a user. | |
definition | string | Formal definition DetailsThe formal definition of the concept. The code system resource does not make formal definitions required, because of the prevalence of legacy systems. However, they are highly recommended, as without them there is no formal meaning associated with the concept. | |
designation | CodeSystemconceptdesignation[] | Additional representations for the concept DetailsAdditional representations for the concept - other languages, aliases, specialized purposes, used for particular purposes, etc. Concepts have both a ```display``` and an array of ```designation```. The display is equivalent to a special designation with an implied ```designation.use``` of "primary code" and a language equal to the [Resource Language](resource.html#language). | |
id | string | Unique id for inter-element referencing DetailsUnique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. | |
extension | Extension[] | Additional content defined by implementations DetailsMay be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
modifierExtension | Extension[] | Extensions that cannot be ignored even if unrecognized DetailsMay be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
language | code | Human language of the designation DetailsThe language this designation is defined for. In the absence of a language, the resource language applies. | |
use | Coding | Details how this designation would be used DetailsA code that details how this designation would be used. If no use is provided, the designation can be assumed to be suitable for general display to a human user. | |
value | ✓ | string | The text value for this designation DetailsThe text value for this designation. |
property | CodeSystemconceptproperty[] | Property value for the concept DetailsA property value for this concept. | |
id | string | Unique id for inter-element referencing DetailsUnique id for the element within a resource (for internal references). This may be any string value that does not contain spaces. | |
extension | Extension[] | Additional content defined by implementations DetailsMay be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
modifierExtension | Extension[] | Extensions that cannot be ignored even if unrecognized DetailsMay be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
code | ✓ | code | Reference to CodeSystem.property.code DetailsA code that is a reference to CodeSystem.property.code. |
value[x] | ✓ | code, Coding, string, integer, boolean, dateTime, decimal | Value of the property for this concept DetailsThe value of this property. |
concept | [] | Child Concepts (is-a/contains/categorizes) DetailsDefines children of a concept to produce a hierarchy of concepts. The nature of the relationships is variable (is-a/contains/categorizes) - see hierarchyMeaning. |
Search Parameters
Name | Type | Description | Expression |
---|---|---|---|
context | token | A use context assigned to the code system | CodeSystem.useContext.value as CodeableConcept |
context-quantity | quantity | A quantity- or range-valued use context assigned to the code system | CodeSystem.useContext.value as Quantity | CodeSystem.useContext.value as Range |
context-type | token | A type of use context assigned to the code system | CodeSystem.useContext.code |
date | date | The code system publication date | CodeSystem.date |
description | string | The description of the code system | CodeSystem.description |
jurisdiction | token | Intended jurisdiction for the code system | CodeSystem.jurisdiction |
name | string | Computationally friendly name of the code system | CodeSystem.name |
publisher | string | Name of the publisher of the code system | CodeSystem.publisher |
status | token | The current status of the code system | CodeSystem.status |
title | string | The human-friendly name of the code system | CodeSystem.title |
url | uri | The uri that identifies the code system | CodeSystem.url |
version | token | The business version of the code system | CodeSystem.version |
context-type-quantity | composite | A use context type and quantity- or range-based value assigned to the code system | CodeSystem.useContext |
context-type-value | composite | A use context type and value assigned to the code system | CodeSystem.useContext |
code | token | A code defined in the code system | CodeSystem.concept.code |
content-mode | token | not-present | example | fragment | complete | supplement | CodeSystem.content |
identifier | token | External identifier for the code system | CodeSystem.identifier |
language | token | A language in which a designation is provided | CodeSystem.concept.designation.language |
supplements | reference | Find code system supplements for the referenced code system | CodeSystem.supplements |
system | uri | The system for any codes defined by this code system (same as 'url') | CodeSystem.url |
Inherited Elements
Name | Required | Type | Description |
---|---|---|---|
id | string | Logical id of this artifact DetailsThe logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes. The only time that a resource does not have an id is when it is being submitted to the server using a create operation. | |
meta | Meta | Metadata about the resource DetailsThe metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource. | |
implicitRules | uri | A set of rules under which this content was created DetailsA reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc. Asserting this rule set restricts the content to be only understood by a limited set of trading partners. This inherently limits the usefulness of the data in the long term. However, the existing health eco-system is highly fractured, and not yet ready to define, collect, and exchange data in a generally computable sense. Wherever possible, implementers and/or specification writers should avoid using this element. Often, when used, the URL is a reference to an implementation guide that defines these special rules as part of it's narrative along with other profiles, value sets, etc. | |
language | code | Language of the resource content DetailsThe base language in which the resource is written. Language is provided to support indexing and accessibility (typically, services such as text to speech use the language tag). The html language tag in the narrative applies to the narrative. The language tag on the resource may be used to specify the language of other presentations generated from the data in the resource. Not all the content has to be in the base language. The Resource.language should not be assumed to apply to the narrative automatically. If a language is specified, it should it also be specified on the div element in the html (see rules in HTML5 for information about the relationship between xml:lang and the html lang attribute). | |
text | Narrative | Text summary of the resource, for human interpretation DetailsA human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it "clinically safe" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety. Contained resources do not have narrative. Resources that are not contained SHOULD have a narrative. In some cases, a resource may only have text with little or no additional discrete data (as long as all minOccurs=1 elements are satisfied). This may be necessary for data from legacy systems where information is captured as a "text blob" or where text is additionally entered raw or narrated and encoded information is added later. | |
contained | Resource[] | Contained, inline Resources DetailsThese resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope. This should never be done when the content can be identified properly, as once identification is lost, it is extremely difficult (and context dependent) to restore it again. Contained resources may have profiles and tags In their meta elements, but SHALL NOT have security labels. | |
extension | Extension[] | Additional content defined by implementations DetailsMay be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. | |
modifierExtension | Extension[] | Extensions that cannot be ignored DetailsMay be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions. Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself). There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone. |
The FHIR terminology specification is based on two key concepts, originally defined in HL7 v3 Core Principles :
- code system - declares the existence of and describes a code system or code system supplement and its key properties, and optionally defines a part or all of its content. Also known as Ontology, Terminology, or Enumeration
- value set - specifies a set of codes drawn from one or more code systems, intended for use in a particular context. Value sets link between
CodeSystem
definitions and their use in coded elements
Code systems define which codes (symbols and/or expressions) exist, and how they are understood. Value sets select a set of codes from one or more code systems to specify which codes can be used in a particular context.
The CodeSystem resource is used to declare the existence of a code system, and its key properties:
- Identifying URL and version
- Description, Copyright, publication date, and other metadata
- Some key properties of the code system itself - e.g. whether it exhibits concept permanence, whether it defines a compositional grammar, and whether the codes that it defines are case sensitive
- What filters can be used in value sets that use the code system in a ValueSet.compose element
- What concept properties are defined by the code system
In addition, the CodeSystem resource may list some or all of the concepts in the code system, along with their basic properties (code, display, definition), designations, and additional properties. Code System resources may also be used to define supplements, which extend an existing code system with additional designations and properties.
The CodeSystem resource is not intended to support the process of maintaining code systems. Instead, the focus is on publishing the properties and optionally the content of a code system for use throughout the FHIR eco-system, such as to support value set expansion and validation. Note that the important existing (large) code systems (SNOMED CT, LOINC, RxNorm, ICD family, etc.) all have their own maintenance systems and distribution formats, and CodeSystem is generally not an efficient way to distribute their content, though it is used as one way of declaring the filters and properties associated with those code systems.
- Code systems are used in ValueSet resources
- The Coding data type refers to CodeSystem resources by their canonical URL
- The CodeSystem resource design is based, in part, on the code system functionality described in the HL7 CTS 2 specification. A CTS2 server can be used to maintain code systems which are then published using the CodeSystem resource
- The CodeSystem resource documents the inherent structure and capabilities of code system, whereas the TerminologyCapabilities resource documents what a server hosting the code system is capable of
The CodeSystem
resource declares the existence of a code system and its key properties including its preferred identifier. The NamingSystem
resource identifies the existence of a code or identifier system, and its possible and preferred identifiers. The key difference between the resources is who creates and manages them - CodeSystem
resources are managed by the owner or publisher of the code system, who can properly define the code system features and content. NamingSystem
resources, on the other hand, are frequently defined by 3rd parties that encounter the code system in use, and need to describe the use, but do not have the authority to define the features and content. Additionally, there may be multiple authoritative NamingSystem
resources for a code system, but ideally there would be only one authoritative CodeSystem
resource (identified by its canonical URL) that is provided by the code system publisher, with multiple copies distributed on additional FHIR servers or elsewhere and used where needed.
Both Code System supplements and Concept Maps may be used to define relationships between concepts in different systems. ConceptMaps are assertions of the relationships between different concepts that are associated with particular contexts of use, while CodeSystem supplements are used to define inherent properties and semantics of the concepts in the code system
When using code systems and value sets, proper differentiation between a code system and a value set is important. This is one very common area where significant clinical safety risks occur in practice. Implementers should be familiar with the content in Using Codes in Resources.
CodeSystem Identification
A code system has three identifiers. The first two can be used to reference the code system in the FHIR context:
CodeSystem.id
: The logical id on the system that holds the CodeSystem resource instance - this typically is expected to change as the resource moves from server to server. The location URI is constructed by appending the logical id to the server base address where the instance is found and the resource type. This URI should be a resolvable URL by which the resource instance may be retrieved, usually from a FHIR server, and it may be a relative reference typically to the server base URL.CodeSystem.url
: The canonical URL that never changes for this code system - it is the same in every copy. The element is namedurl
rather thanuri
for legacy reasons and to strongly encourage providing a resolvable URL as the identifier whenever possible. This canonical URL is used to refer to all instances of this particular code system across all servers and systems. Ideally, this URI should be a URL which resolves to the location of the master version of the code system, though this is not always possible.
For example, the code systems published as part of the FHIR specification all have a location ("literal") URI which is the URL where they may be accessed in the FHIR specification itself. However, while a new version of the FHIR specification is being prepared, code systems that are published in the drafts will not be found in the current FHIR specification version.
Because it is common practice to copy (cache) code systems locally, most references to code systems can use either the canonical URL or the location ("literal") URL.
The third code system identifier is used typically for external references to the code system outside of FHIR:
CodeSystem.identifier
: A system/value pair that is used to identify the code system in other contexts (such as an OID in an HL7 v3 specification)
For further information regarding resource identification, see Resource Identity.
This means that each code system has 2 different URIs that can be used to reference it - its canonical URL (the url
element), and its local location from which it may be retrieved (which includes the id
element). Because it is common practice to copy (cache) code systems locally, most references to code systems use the canonical URL.
Alternatively, the identifier
and version
elements may be used to reference this code system in a design, a profile, a CDA template or HL7 v3 message (in the CD data type codeSystem and codeSystemVersion properties). These different contexts may make additional restrictions on the possible values of these elements. The identifier
is generally not needed when using code systems in a FHIR context, where the canonical URL is always the focus.