This page is part of the FHIR Specification (v1.4.0: STU 3 Ballot 3). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3
Vocabulary Work Group | Maturity Level: 0 | Compartments: Not linked to any defined compartments |
A code system resource specifies a set of codes drawn from one or more code systems.
The FHIR terminology specification is based two key concepts, originally defined in HL7 v3 Core Principles :
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 Code system resource is used to declare the existence of a code system, and it's key properties:
In addition, the code system 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.
The Code system resource is not intended to support the process of maintaining a code system. 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 distribution formats, and there is no intent that the code system resource be used for distributing these kind of terminologies. Instead, it is intended to be used for distributing the smaller ad-hoc code systems that are ubiqutiously encountered through out the healthcare process.
lockedDate
, compose
and codeSystem
elements make up the VSD Content Logical definition.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.
Each code system has 2 different URLs that can be used to reference it - its logical identifier, and its location.
The location of the code system is a URL by which it may be retrieved, usually from a FHIR server, and may be a relative reference to a code system on the same server. The logical identifier is in the code system itself, in CodeSystem.url. This is the logical identity (sometimes called the canonical URL) that refers to this code system across all systems. Ideally, the URL should also be 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 FHIR all have a logical URL which is also a location by which 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.
Because it is common practice to copy (cache) code systems locally, most references to code systems can be either a logical or a literal URL.
A code system has 3 identifiers:
For further information, see Resource Identity.
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
CodeSystem | I | DomainResource | A set of codes drawn from one or more code systems Within a code system definition, all the codes SHALL be unique | |
url | Σ | 0..1 | uri | Globally unique logical identifier for code system (Coding.system) |
identifier | Σ | 0..1 | Identifier | Additional identifier for the code system (e.g. HL7 v2 / CDA) |
version | Σ | 0..1 | string | Logical identifier for this version (Coding.version) |
name | Σ | 0..1 | string | Informal name for this code system |
status | ?! Σ | 1..1 | code | draft | active | retired ConformanceResourceStatus (Required) |
experimental | Σ | 0..1 | boolean | If for testing purposes, not real usage |
publisher | Σ | 0..1 | string | Name of the publisher (organization or individual) |
contact | Σ | 0..* | BackboneElement | Contact details of the publisher |
name | Σ | 0..1 | string | Name of an individual to contact |
telecom | Σ | 0..* | ContactPoint | Contact details for individual or publisher |
date | Σ | 0..1 | dateTime | Date for given status |
description | Σ | 0..1 | string | Human language description of the code system |
useContext | Σ | 0..* | CodeableConcept | Content intends to support these contexts Context of Use ValueSet (Extensible) |
requirements | 0..1 | string | Why needed | |
copyright | 0..1 | string | Use and/or publishing restrictions | |
caseSensitive | Σ | 0..1 | boolean | If code comparison is case sensitive |
valueSet | Σ | 0..1 | uri | Canonical URL for value set with entire code system |
compositional | Σ | 0..1 | boolean | If code system defines a post-composition grammar |
versionNeeded | Σ | 0..1 | boolean | If definitions are not stable |
content | Σ | 1..1 | code | not-present | examplar | fragment | complete CodeSystemContentMode (Required) |
count | Σ | 0..1 | unsignedInt | Total concepts in the code system |
filter | Σ | 0..* | BackboneElement | Filter that can be used in a value set |
code | Σ | 1..1 | code | Code that identifies the filter |
description | Σ | 0..1 | string | How or why the filter is used |
operator | Σ | 1..* | code | Operators that can be used with filter FilterOperator (Required) |
value | Σ | 1..1 | string | What to use for the value |
property | Σ | 0..* | BackboneElement | Additional information supplied about each concept |
code | Σ | 1..1 | code | Identifies the property, both internally and externally |
description | Σ | 0..1 | string | Why the property is defined, and/or what it conveys |
type | Σ | 1..1 | code | code | Coding | string | integer | boolean | dateTime PropertyType (Required) |
concept | 0..* | BackboneElement | Concepts in the code system | |
code | 1..1 | code | Code that identifies concept | |
display | 0..1 | string | Text to display to the user | |
definition | 0..1 | string | Formal definition | |
designation | 0..* | BackboneElement | Additional representations for the concept | |
language | 0..1 | code | Human language of the designation Language (Required) | |
use | 0..1 | Coding | Details how this designation would be used Designation Use (Extensible) | |
value | 1..1 | string | The text value for this designation | |
property | 0..* | BackboneElement | Property value for the concept | |
code | 1..1 | code | Reference to CodeSystem.property.code | |
value[x] | 1..1 | Value of the property for this concept | ||
valueCode | code | |||
valueCoding | Coding | |||
valueString | string | |||
valueInteger | integer | |||
valueBoolean | boolean | |||
valueDateTime | dateTime | |||
concept | 0..* | see concept | Child Concepts (is-a/contains/categorizes) | |
Documentation for this format |
UML Diagram
XML Template
<CodeSystem xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <url value="[uri]"/><!-- 0..1 Globally unique logical identifier for code system (Coding.system) --> <identifier><!-- 0..1 Identifier Additional identifier for the code system (e.g. HL7 v2 / CDA) --></identifier> <version value="[string]"/><!-- 0..1 Logical identifier for this version (Coding.version) --> <name value="[string]"/><!-- 0..1 Informal name for this code system --> <status value="[code]"/><!-- 1..1 draft | active | retired --> <experimental value="[boolean]"/><!-- 0..1 If for testing purposes, not real usage --> <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) --> <contact> <!-- 0..* Contact details of the publisher --> <name value="[string]"/><!-- 0..1 Name of an individual to contact --> <telecom><!-- 0..* ContactPoint Contact details for individual or publisher --></telecom> </contact> <date value="[dateTime]"/><!-- 0..1 Date for given status --> <description value="[string]"/><!-- 0..1 Human language description of the code system --> <useContext><!-- 0..* CodeableConcept Content intends to support these contexts --></useContext> <requirements value="[string]"/><!-- 0..1 Why needed --> <copyright value="[string]"/><!-- 0..1 Use and/or publishing restrictions --> <caseSensitive value="[boolean]"/><!-- 0..1 If code comparison is case sensitive --> <valueSet value="[uri]"/><!-- 0..1 Canonical URL for value set with entire code system --> <compositional value="[boolean]"/><!-- 0..1 If code system defines a post-composition grammar --> <versionNeeded value="[boolean]"/><!-- 0..1 If definitions are not stable --> <content value="[code]"/><!-- 1..1 not-present | examplar | fragment | complete --> <count value="[unsignedInt]"/><!-- 0..1 Total concepts in the code system --> <filter> <!-- 0..* Filter that can be used in a value set --> <code value="[code]"/><!-- 1..1 Code that identifies the filter --> <description value="[string]"/><!-- 0..1 How or why the filter is used --> <operator value="[code]"/><!-- 1..* Operators that can be used with filter --> <value value="[string]"/><!-- 1..1 What to use for the value --> </filter> <property> <!-- 0..* Additional information supplied about each concept --> <code value="[code]"/><!-- 1..1 Identifies the property, both internally and externally --> <description value="[string]"/><!-- 0..1 Why the property is defined, and/or what it conveys --> <type value="[code]"/><!-- 1..1 code | Coding | string | integer | boolean | dateTime --> </property> <concept> <!-- 0..* Concepts in the code system --> <code value="[code]"/><!-- 1..1 Code that identifies concept --> <display value="[string]"/><!-- 0..1 Text to display to the user --> <definition value="[string]"/><!-- 0..1 Formal definition --> <designation> <!-- 0..* Additional representations for the concept --> <language value="[code]"/><!-- 0..1 Human language of the designation --> <use><!-- 0..1 Coding Details how this designation would be used --></use> <value value="[string]"/><!-- 1..1 The text value for this designation --> </designation> <property> <!-- 0..* Property value for the concept --> <code value="[code]"/><!-- 1..1 Reference to CodeSystem.property.code --> <value[x]><!-- 1..1 code|Coding|string|integer|boolean|dateTime Value of the property for this concept --></value[x]> </property> <concept><!-- 0..* Content as for CodeSystem.concept Child Concepts (is-a/contains/categorizes) --></concept> </concept> </CodeSystem>
JSON Template
{ "resourceType" : "CodeSystem", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "url" : "<uri>", // Globally unique logical identifier for code system (Coding.system) "identifier" : { Identifier }, // Additional identifier for the code system (e.g. HL7 v2 / CDA) "version" : "<string>", // Logical identifier for this version (Coding.version) "name" : "<string>", // Informal name for this code system "status" : "<code>", // R! draft | active | retired "experimental" : <boolean>, // If for testing purposes, not real usage "publisher" : "<string>", // Name of the publisher (organization or individual) "contact" : [{ // Contact details of the publisher "name" : "<string>", // Name of an individual to contact "telecom" : [{ ContactPoint }] // Contact details for individual or publisher }], "date" : "<dateTime>", // Date for given status "description" : "<string>", // Human language description of the code system "useContext" : [{ CodeableConcept }], // Content intends to support these contexts "requirements" : "<string>", // Why needed "copyright" : "<string>", // Use and/or publishing restrictions "caseSensitive" : <boolean>, // If code comparison is case sensitive "valueSet" : "<uri>", // Canonical URL for value set with entire code system "compositional" : <boolean>, // If code system defines a post-composition grammar "versionNeeded" : <boolean>, // If definitions are not stable "content" : "<code>", // R! not-present | examplar | fragment | complete "count" : "<unsignedInt>", // Total concepts in the code system "filter" : [{ // Filter that can be used in a value set "code" : "<code>", // R! Code that identifies the filter "description" : "<string>", // How or why the filter is used "operator" : ["<code>"], // R! Operators that can be used with filter "value" : "<string>" // R! What to use for the value }], "property" : [{ // Additional information supplied about each concept "code" : "<code>", // R! Identifies the property, both internally and externally "description" : "<string>", // Why the property is defined, and/or what it conveys "type" : "<code>" // R! code | Coding | string | integer | boolean | dateTime }], "concept" : [{ // Concepts in the code system "code" : "<code>", // R! Code that identifies concept "display" : "<string>", // Text to display to the user "definition" : "<string>", // Formal definition "designation" : [{ // Additional representations for the concept "language" : "<code>", // Human language of the designation "use" : { Coding }, // Details how this designation would be used "value" : "<string>" // R! The text value for this designation }], "property" : [{ // Property value for the concept "code" : "<code>", // R! Reference to CodeSystem.property.code // value[x]: Value of the property for this concept. One of these 6: "valueCode" : "<code>" "valueCoding" : { Coding } "valueString" : "<string>" "valueInteger" : <integer> "valueBoolean" : <boolean> "valueDateTime" : "<dateTime>" }], "concept" : [{ Content as for CodeSystem.concept }] // Child Concepts (is-a/contains/categorizes) }] }
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
CodeSystem | I | DomainResource | A set of codes drawn from one or more code systems Within a code system definition, all the codes SHALL be unique | |
url | Σ | 0..1 | uri | Globally unique logical identifier for code system (Coding.system) |
identifier | Σ | 0..1 | Identifier | Additional identifier for the code system (e.g. HL7 v2 / CDA) |
version | Σ | 0..1 | string | Logical identifier for this version (Coding.version) |
name | Σ | 0..1 | string | Informal name for this code system |
status | ?! Σ | 1..1 | code | draft | active | retired ConformanceResourceStatus (Required) |
experimental | Σ | 0..1 | boolean | If for testing purposes, not real usage |
publisher | Σ | 0..1 | string | Name of the publisher (organization or individual) |
contact | Σ | 0..* | BackboneElement | Contact details of the publisher |
name | Σ | 0..1 | string | Name of an individual to contact |
telecom | Σ | 0..* | ContactPoint | Contact details for individual or publisher |
date | Σ | 0..1 | dateTime | Date for given status |
description | Σ | 0..1 | string | Human language description of the code system |
useContext | Σ | 0..* | CodeableConcept | Content intends to support these contexts Context of Use ValueSet (Extensible) |
requirements | 0..1 | string | Why needed | |
copyright | 0..1 | string | Use and/or publishing restrictions | |
caseSensitive | Σ | 0..1 | boolean | If code comparison is case sensitive |
valueSet | Σ | 0..1 | uri | Canonical URL for value set with entire code system |
compositional | Σ | 0..1 | boolean | If code system defines a post-composition grammar |
versionNeeded | Σ | 0..1 | boolean | If definitions are not stable |
content | Σ | 1..1 | code | not-present | examplar | fragment | complete CodeSystemContentMode (Required) |
count | Σ | 0..1 | unsignedInt | Total concepts in the code system |
filter | Σ | 0..* | BackboneElement | Filter that can be used in a value set |
code | Σ | 1..1 | code | Code that identifies the filter |
description | Σ | 0..1 | string | How or why the filter is used |
operator | Σ | 1..* | code | Operators that can be used with filter FilterOperator (Required) |
value | Σ | 1..1 | string | What to use for the value |
property | Σ | 0..* | BackboneElement | Additional information supplied about each concept |
code | Σ | 1..1 | code | Identifies the property, both internally and externally |
description | Σ | 0..1 | string | Why the property is defined, and/or what it conveys |
type | Σ | 1..1 | code | code | Coding | string | integer | boolean | dateTime PropertyType (Required) |
concept | 0..* | BackboneElement | Concepts in the code system | |
code | 1..1 | code | Code that identifies concept | |
display | 0..1 | string | Text to display to the user | |
definition | 0..1 | string | Formal definition | |
designation | 0..* | BackboneElement | Additional representations for the concept | |
language | 0..1 | code | Human language of the designation Language (Required) | |
use | 0..1 | Coding | Details how this designation would be used Designation Use (Extensible) | |
value | 1..1 | string | The text value for this designation | |
property | 0..* | BackboneElement | Property value for the concept | |
code | 1..1 | code | Reference to CodeSystem.property.code | |
value[x] | 1..1 | Value of the property for this concept | ||
valueCode | code | |||
valueCoding | Coding | |||
valueString | string | |||
valueInteger | integer | |||
valueBoolean | boolean | |||
valueDateTime | dateTime | |||
concept | 0..* | see concept | Child Concepts (is-a/contains/categorizes) | |
Documentation for this format |
XML Template
<CodeSystem xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <url value="[uri]"/><!-- 0..1 Globally unique logical identifier for code system (Coding.system) --> <identifier><!-- 0..1 Identifier Additional identifier for the code system (e.g. HL7 v2 / CDA) --></identifier> <version value="[string]"/><!-- 0..1 Logical identifier for this version (Coding.version) --> <name value="[string]"/><!-- 0..1 Informal name for this code system --> <status value="[code]"/><!-- 1..1 draft | active | retired --> <experimental value="[boolean]"/><!-- 0..1 If for testing purposes, not real usage --> <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) --> <contact> <!-- 0..* Contact details of the publisher --> <name value="[string]"/><!-- 0..1 Name of an individual to contact --> <telecom><!-- 0..* ContactPoint Contact details for individual or publisher --></telecom> </contact> <date value="[dateTime]"/><!-- 0..1 Date for given status --> <description value="[string]"/><!-- 0..1 Human language description of the code system --> <useContext><!-- 0..* CodeableConcept Content intends to support these contexts --></useContext> <requirements value="[string]"/><!-- 0..1 Why needed --> <copyright value="[string]"/><!-- 0..1 Use and/or publishing restrictions --> <caseSensitive value="[boolean]"/><!-- 0..1 If code comparison is case sensitive --> <valueSet value="[uri]"/><!-- 0..1 Canonical URL for value set with entire code system --> <compositional value="[boolean]"/><!-- 0..1 If code system defines a post-composition grammar --> <versionNeeded value="[boolean]"/><!-- 0..1 If definitions are not stable --> <content value="[code]"/><!-- 1..1 not-present | examplar | fragment | complete --> <count value="[unsignedInt]"/><!-- 0..1 Total concepts in the code system --> <filter> <!-- 0..* Filter that can be used in a value set --> <code value="[code]"/><!-- 1..1 Code that identifies the filter --> <description value="[string]"/><!-- 0..1 How or why the filter is used --> <operator value="[code]"/><!-- 1..* Operators that can be used with filter --> <value value="[string]"/><!-- 1..1 What to use for the value --> </filter> <property> <!-- 0..* Additional information supplied about each concept --> <code value="[code]"/><!-- 1..1 Identifies the property, both internally and externally --> <description value="[string]"/><!-- 0..1 Why the property is defined, and/or what it conveys --> <type value="[code]"/><!-- 1..1 code | Coding | string | integer | boolean | dateTime --> </property> <concept> <!-- 0..* Concepts in the code system --> <code value="[code]"/><!-- 1..1 Code that identifies concept --> <display value="[string]"/><!-- 0..1 Text to display to the user --> <definition value="[string]"/><!-- 0..1 Formal definition --> <designation> <!-- 0..* Additional representations for the concept --> <language value="[code]"/><!-- 0..1 Human language of the designation --> <use><!-- 0..1 Coding Details how this designation would be used --></use> <value value="[string]"/><!-- 1..1 The text value for this designation --> </designation> <property> <!-- 0..* Property value for the concept --> <code value="[code]"/><!-- 1..1 Reference to CodeSystem.property.code --> <value[x]><!-- 1..1 code|Coding|string|integer|boolean|dateTime Value of the property for this concept --></value[x]> </property> <concept><!-- 0..* Content as for CodeSystem.concept Child Concepts (is-a/contains/categorizes) --></concept> </concept> </CodeSystem>
JSON Template
{ "resourceType" : "CodeSystem", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "url" : "<uri>", // Globally unique logical identifier for code system (Coding.system) "identifier" : { Identifier }, // Additional identifier for the code system (e.g. HL7 v2 / CDA) "version" : "<string>", // Logical identifier for this version (Coding.version) "name" : "<string>", // Informal name for this code system "status" : "<code>", // R! draft | active | retired "experimental" : <boolean>, // If for testing purposes, not real usage "publisher" : "<string>", // Name of the publisher (organization or individual) "contact" : [{ // Contact details of the publisher "name" : "<string>", // Name of an individual to contact "telecom" : [{ ContactPoint }] // Contact details for individual or publisher }], "date" : "<dateTime>", // Date for given status "description" : "<string>", // Human language description of the code system "useContext" : [{ CodeableConcept }], // Content intends to support these contexts "requirements" : "<string>", // Why needed "copyright" : "<string>", // Use and/or publishing restrictions "caseSensitive" : <boolean>, // If code comparison is case sensitive "valueSet" : "<uri>", // Canonical URL for value set with entire code system "compositional" : <boolean>, // If code system defines a post-composition grammar "versionNeeded" : <boolean>, // If definitions are not stable "content" : "<code>", // R! not-present | examplar | fragment | complete "count" : "<unsignedInt>", // Total concepts in the code system "filter" : [{ // Filter that can be used in a value set "code" : "<code>", // R! Code that identifies the filter "description" : "<string>", // How or why the filter is used "operator" : ["<code>"], // R! Operators that can be used with filter "value" : "<string>" // R! What to use for the value }], "property" : [{ // Additional information supplied about each concept "code" : "<code>", // R! Identifies the property, both internally and externally "description" : "<string>", // Why the property is defined, and/or what it conveys "type" : "<code>" // R! code | Coding | string | integer | boolean | dateTime }], "concept" : [{ // Concepts in the code system "code" : "<code>", // R! Code that identifies concept "display" : "<string>", // Text to display to the user "definition" : "<string>", // Formal definition "designation" : [{ // Additional representations for the concept "language" : "<code>", // Human language of the designation "use" : { Coding }, // Details how this designation would be used "value" : "<string>" // R! The text value for this designation }], "property" : [{ // Property value for the concept "code" : "<code>", // R! Reference to CodeSystem.property.code // value[x]: Value of the property for this concept. One of these 6: "valueCode" : "<code>" "valueCoding" : { Coding } "valueString" : "<string>" "valueInteger" : <integer> "valueBoolean" : <boolean> "valueDateTime" : "<dateTime>" }], "concept" : [{ Content as for CodeSystem.concept }] // Child Concepts (is-a/contains/categorizes) }] }
Alternate definitions: Schema/Schematron, Resource Profile (XML, JSON), Questionnaire
Path | Definition | Type | Reference |
---|---|---|---|
CodeSystem.status | The lifecycle status of a Value Set or Concept Map. | Required | ConformanceResourceStatus |
CodeSystem.useContext | Indicates the countries, regions, disciplines and other aspects of use within which this artifact is targeted for use. | Extensible | Context of Use ValueSet |
CodeSystem.content | How much of the content of the code system - the concepts and codes it defines - are represented in a code system resource | Required | CodeSystemContentMode |
CodeSystem.filter.operator | The kind of operation to perform as a part of a property based filter. | Required | FilterOperator |
CodeSystem.property.type | The type of a property value | Required | PropertyType |
CodeSystem.concept.designation.language | A human language. | Required | IETF language tag |
CodeSystem.concept.designation.use | Details of how a designation would be used. | Extensible | Designation Use |
The identifier and version elements may be used to reference this code system in a value set, or 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. These elements are generally not needed when using code systems with FHIR implementations, as they can make use of the innate identifier and versioning mechanism associated with the resource.
Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.
Name | Type | Description | Paths |
code | token | A code defined in the code system | CodeSystem.concept.code |
context | token | A use context assigned to the code system | CodeSystem.useContext |
date | date | The code system publication date | CodeSystem.date |
description | string | Text search in the description of the code system | CodeSystem.description |
identifier | token | The identifier for the code system | CodeSystem.identifier |
language | token | A language in which a designation is provided | CodeSystem.concept.designation.language |
name | string | The name of the code system | CodeSystem.name |
publisher | string | Name of the publisher of the code system | CodeSystem.publisher |
status | token | The status of the code system | CodeSystem.status |
system | uri | The system for any codes defined by this code system (same as 'url') | CodeSystem.url |
url | uri | The logical URL for the code system | CodeSystem.url |
version | token | The version identifier of the code system | CodeSystem.version |