This page is part of the FHIR Specification (v1.8.0: STU 3 Draft). 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 R2
Vocabulary Work Group | Maturity Level: 3 | Compartments: Not linked to any defined compartments |
A value set 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 :
CodeSystem
- defines a set of codes with meanings (also known as enumeration, terminology, classification, and/or ontology) - e.g. define which codes (symbols and/or expressions) exist, and how they are understoodValueSet
- selects a set of codes from those defined by one or more code systems to specify which codes can be used in a particular contextValue sets have 2 aspects:
.compose
: A definition of which codes are intended to be in the value set ("intension").expansion
: The list of codes that are actually in the value set under a given set of conditions ("extension")
The ValueSet
resource can carry either the .compose
or the .expansion
,
or both. There is a "$expand" operation which can be used to ask a server to generate
an expansion given the composition rules.
compose
element is the VSD "Content Logical definition".When using 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.
A value set has 3 identifiers:
ValueSet.id
: the logical id on the system that holds the value set - this changes as it moves from server to server (this id, with the server address prepended, is called the 'literal identity' of the resource)ValueSet.url
: the canonical url that never changes for this value set - it is the same in every copy. Ideally, the URL should also be the location of the master version of the value set, though this is not always possibleValueSet.identifier
: A system/value pair that is used to identify the value set 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 value set has 2 different URLs that can be used to reference it -
its canonical url
, and its local location from which it may be retrieved.
Because it is common practice to copy (cache) value sets locally, most references to
value sets use the canonical URL.
For example, the value sets published as part of FHIR all have a canonical URL which is also a location by which they may be accessed in the FHIR specification itself. Note, though, that while a new version of the FHIR Specification is being prepared, value sets that are published in the drafts will not be found in the published FHIR specification at their canonical URL.
Alternatively, the identifier
and version
elements may be used to reference this value set in a
design, a profile, a CDA template
or HL7 v3 message (in the CD data
type valueSet and valueSetVersion properties). These different contexts may make additional restrictions on the
possible values of these elements. The identifier
is generally not needed when using value sets in
a FHIR context, where the canonical URL is always the focus.
This resource is referenced by ConceptMap, OperationDefinition and Questionnaire
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
ValueSet | I | DomainResource | A set of codes drawn from one or more code systems Value set SHALL contain at least one of a a compose, or an expansion element | |
url | Σ | 0..1 | uri | Logical uri to reference this value set (globally unique) |
identifier | Σ | 0..* | Identifier | Additional identifier for the value set |
version | Σ | 0..1 | string | Business version of the value set |
name | Σ | 0..1 | string | Name for this value set (Computer friendly) |
title | Σ | 0..1 | string | Name for this value set (Human friendly) |
status | ?!Σ | 1..1 | code | draft | active | retired PublicationStatus (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..* | ContactDetail | Contact details for the publisher |
date | Σ | 0..1 | dateTime | Date this was last changed |
description | 0..1 | markdown | Natural language description of the value set | |
useContext | Σ | 0..* | UsageContext | Content intends to support these contexts |
jurisdiction | Σ | 0..* | CodeableConcept | Intended jurisdiction for value set (if applicable) Jurisdiction ValueSet (Extensible) |
immutable | Σ | 0..1 | boolean | Indicates whether or not any change to the content logical definition may occur |
purpose | 0..1 | markdown | Why this value set is defined | |
copyright | 0..1 | markdown | Use and/or publishing restrictions | |
extensible | Σ | 0..1 | boolean | Whether this is intended to be used with an extensible binding |
compose | I | 0..1 | BackboneElement | Definition of the content of the value set (CLD) |
lockedDate | Σ | 0..1 | date | Fixed date for version-less references (transitive) |
inactive | Σ | 0..1 | boolean | Whether inactive codes are in the value set |
include | ΣI | 1..* | BackboneElement | Include one or more codes from a code system or other value set(s) A value set with concepts or filters SHALL include a system Cannot have both concept and filter A value set include/exclude SHALL have a value set or a system |
system | ΣI | 0..1 | uri | The system the codes come from |
version | Σ | 0..1 | string | Specific version of the code system referred to |
concept | I | 0..* | BackboneElement | A concept defined in the system |
code | 1..1 | code | Code or expression from system | |
display | 0..1 | string | Text to display for this code for this value set | |
designation | 0..* | BackboneElement | Additional representations for this concept | |
language | 0..1 | code | Human language of the designation Common Languages (Extensible but limited to All Languages) | |
use | 0..1 | Coding | Details how this designation would be used Designation Use (Extensible) | |
value | 1..1 | string | The text value for this designation | |
filter | I | 0..* | BackboneElement | Select codes/concepts by their properties (including relationships) |
property | 1..1 | code | A property defined by the code system | |
op | ?! | 1..1 | code | = | is-a | descendent-of | is-not-a | regex | in | not-in | generalizes | exists FilterOperator (Required) |
value | 1..1 | code | Code from the system, or regex criteria | |
valueSet | ΣI | 0..* | uri | Select only contents included in this value set |
exclude | I | 0..* | see include | Explicitly exclude codes from a code system or other value sets |
expansion | I | 0..1 | BackboneElement | Used when the value set is "expanded" |
identifier | 1..1 | uri | Uniquely identifies this expansion | |
timestamp | 1..1 | dateTime | Time ValueSet expansion happened | |
total | 0..1 | integer | Total number of codes in the expansion | |
offset | 0..1 | integer | Offset at which this resource starts | |
parameter | 0..* | BackboneElement | Parameter that controlled the expansion process | |
name | 1..1 | string | Name as assigned by the server | |
value[x] | 0..1 | Value of the named parameter | ||
valueString | string | |||
valueBoolean | boolean | |||
valueInteger | integer | |||
valueDecimal | decimal | |||
valueUri | uri | |||
valueCode | code | |||
contains | I | 0..* | BackboneElement | Codes in the value set SHALL have a code or a display Must have a code if not abstract Must have a system if a code is present |
system | 0..1 | uri | System value for the code | |
abstract | 0..1 | boolean | If user cannot select this entry | |
inactive | 0..1 | boolean | If concept is inactive in the code system | |
version | 0..1 | string | Version in which this code/display is defined | |
code | I | 0..1 | code | Code - if blank, this is not a selectable code |
display | I | 0..1 | string | User display for the concept |
designation | 0..* | see designation | Additional representations for this item | |
contains | 0..* | see contains | Codes contained under this entry | |
Documentation for this format |
UML Diagram (Legend)
XML Template
<ValueSet xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <url value="[uri]"/><!-- 0..1 Logical uri to reference this value set (globally unique) --> <identifier><!-- 0..* Identifier Additional identifier for the value set --></identifier> <version value="[string]"/><!-- 0..1 Business version of the value set --> <name value="[string]"/><!-- 0..1 Name for this value set (Computer friendly) --> <title value="[string]"/><!-- 0..1 Name for this value set (Human friendly) --> <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..* ContactDetail Contact details for the publisher --></contact> <date value="[dateTime]"/><!-- 0..1 Date this was last changed --> <description value="[markdown]"/><!-- 0..1 Natural language description of the value set --> <useContext><!-- 0..* UsageContext Content intends to support these contexts --></useContext> <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for value set (if applicable) --></jurisdiction> <immutable value="[boolean]"/><!-- 0..1 Indicates whether or not any change to the content logical definition may occur --> <purpose value="[markdown]"/><!-- 0..1 Why this value set is defined --> <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions --> <extensible value="[boolean]"/><!-- 0..1 Whether this is intended to be used with an extensible binding --> <compose> <!-- 0..1 Definition of the content of the value set (CLD) --> <lockedDate value="[date]"/><!-- 0..1 Fixed date for version-less references (transitive) --> <inactive value="[boolean]"/><!-- 0..1 Whether inactive codes are in the value set --> <include> <!-- 1..* Include one or more codes from a code system or other value set(s) --> <system value="[uri]"/><!-- 0..1 The system the codes come from --> <version value="[string]"/><!-- 0..1 Specific version of the code system referred to --> <concept> <!-- 0..* A concept defined in the system --> <code value="[code]"/><!-- 1..1 Code or expression from system --> <display value="[string]"/><!-- 0..1 Text to display for this code for this value set --> <designation> <!-- 0..* Additional representations for this 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> </concept> <filter> <!-- 0..* Select codes/concepts by their properties (including relationships) --> <property value="[code]"/><!-- 1..1 A property defined by the code system --> <op value="[code]"/><!-- 1..1 = | is-a | descendent-of | is-not-a | regex | in | not-in | generalizes | exists --> <value value="[code]"/><!-- 1..1 Code from the system, or regex criteria --> </filter> <valueSet value="[uri]"/><!-- 0..* Select only contents included in this value set --> </include> <exclude><!-- 0..* Content as for ValueSet.compose.include Explicitly exclude codes from a code system or other value sets --></exclude> </compose> <expansion> <!-- 0..1 Used when the value set is "expanded" --> <identifier value="[uri]"/><!-- 1..1 Uniquely identifies this expansion --> <timestamp value="[dateTime]"/><!-- 1..1 Time ValueSet expansion happened --> <total value="[integer]"/><!-- 0..1 Total number of codes in the expansion --> <offset value="[integer]"/><!-- 0..1 Offset at which this resource starts --> <parameter> <!-- 0..* Parameter that controlled the expansion process --> <name value="[string]"/><!-- 1..1 Name as assigned by the server --> <value[x]><!-- 0..1 string|boolean|integer|decimal|uri|code Value of the named parameter --></value[x]> </parameter> <contains> <!-- 0..* Codes in the value set --> <system value="[uri]"/><!-- 0..1 System value for the code --> <abstract value="[boolean]"/><!-- 0..1 If user cannot select this entry --> <inactive value="[boolean]"/><!-- 0..1 If concept is inactive in the code system --> <version value="[string]"/><!-- 0..1 Version in which this code/display is defined --> <code value="[code]"/><!-- 0..1 Code - if blank, this is not a selectable code --> <display value="[string]"/><!-- 0..1 User display for the concept --> <designation><!-- 0..* Content as for ValueSet.compose.include.concept.designation Additional representations for this item --></designation> <contains><!-- 0..* Content as for ValueSet.expansion.contains Codes contained under this entry --></contains> </contains> </expansion> </ValueSet>
JSON Template
{ "resourceType" : "ValueSet", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "url" : "<uri>", // Logical uri to reference this value set (globally unique) "identifier" : [{ Identifier }], // Additional identifier for the value set "version" : "<string>", // Business version of the value set "name" : "<string>", // Name for this value set (Computer friendly) "title" : "<string>", // Name for this value set (Human friendly) "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" : [{ ContactDetail }], // Contact details for the publisher "date" : "<dateTime>", // Date this was last changed "description" : "<markdown>", // Natural language description of the value set "useContext" : [{ UsageContext }], // Content intends to support these contexts "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for value set (if applicable) "immutable" : <boolean>, // Indicates whether or not any change to the content logical definition may occur "purpose" : "<markdown>", // Why this value set is defined "copyright" : "<markdown>", // Use and/or publishing restrictions "extensible" : <boolean>, // Whether this is intended to be used with an extensible binding "compose" : { // C? Definition of the content of the value set (CLD) "lockedDate" : "<date>", // Fixed date for version-less references (transitive) "inactive" : <boolean>, // Whether inactive codes are in the value set "include" : [{ // R! Include one or more codes from a code system or other value set(s) "system" : "<uri>", // C? The system the codes come from "version" : "<string>", // Specific version of the code system referred to "concept" : [{ // C? A concept defined in the system "code" : "<code>", // R! Code or expression from system "display" : "<string>", // Text to display for this code for this value set "designation" : [{ // Additional representations for this 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 }] }], "filter" : [{ // C? Select codes/concepts by their properties (including relationships) "property" : "<code>", // R! A property defined by the code system "op" : "<code>", // R! = | is-a | descendent-of | is-not-a | regex | in | not-in | generalizes | exists "value" : "<code>" // R! Code from the system, or regex criteria }], "valueSet" : ["<uri>"] // C? Select only contents included in this value set }], "exclude" : [{ Content as for ValueSet.compose.include }] // C? Explicitly exclude codes from a code system or other value sets }, "expansion" : { // C? Used when the value set is "expanded" "identifier" : "<uri>", // R! Uniquely identifies this expansion "timestamp" : "<dateTime>", // R! Time ValueSet expansion happened "total" : <integer>, // Total number of codes in the expansion "offset" : <integer>, // Offset at which this resource starts "parameter" : [{ // Parameter that controlled the expansion process "name" : "<string>", // R! Name as assigned by the server // value[x]: Value of the named parameter. One of these 6: "valueString" : "<string>" "valueBoolean" : <boolean> "valueInteger" : <integer> "valueDecimal" : <decimal> "valueUri" : "<uri>" "valueCode" : "<code>" }], "contains" : [{ // Codes in the value set "system" : "<uri>", // System value for the code "abstract" : <boolean>, // If user cannot select this entry "inactive" : <boolean>, // If concept is inactive in the code system "version" : "<string>", // Version in which this code/display is defined "code" : "<code>", // C? Code - if blank, this is not a selectable code "display" : "<string>", // C? User display for the concept "designation" : [{ Content as for ValueSet.compose.include.concept.designation }], // Additional representations for this item "contains" : [{ Content as for ValueSet.expansion.contains }] // Codes contained under this entry }] } }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ a fhir:ValueSet; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension fhir:ValueSet.url [ uri ]; # 0..1 Logical uri to reference this value set (globally unique) fhir:ValueSet.identifier [ Identifier ], ... ; # 0..* Additional identifier for the value set fhir:ValueSet.version [ string ]; # 0..1 Business version of the value set fhir:ValueSet.name [ string ]; # 0..1 Name for this value set (Computer friendly) fhir:ValueSet.title [ string ]; # 0..1 Name for this value set (Human friendly) fhir:ValueSet.status [ code ]; # 1..1 draft | active | retired fhir:ValueSet.experimental [ boolean ]; # 0..1 If for testing purposes, not real usage fhir:ValueSet.publisher [ string ]; # 0..1 Name of the publisher (Organization or individual) fhir:ValueSet.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:ValueSet.date [ dateTime ]; # 0..1 Date this was last changed fhir:ValueSet.description [ markdown ]; # 0..1 Natural language description of the value set fhir:ValueSet.useContext [ UsageContext ], ... ; # 0..* Content intends to support these contexts fhir:ValueSet.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for value set (if applicable) fhir:ValueSet.immutable [ boolean ]; # 0..1 Indicates whether or not any change to the content logical definition may occur fhir:ValueSet.purpose [ markdown ]; # 0..1 Why this value set is defined fhir:ValueSet.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions fhir:ValueSet.extensible [ boolean ]; # 0..1 Whether this is intended to be used with an extensible binding fhir:ValueSet.compose [ # 0..1 Definition of the content of the value set (CLD) fhir:ValueSet.compose.lockedDate [ date ]; # 0..1 Fixed date for version-less references (transitive) fhir:ValueSet.compose.inactive [ boolean ]; # 0..1 Whether inactive codes are in the value set fhir:ValueSet.compose.include [ # 1..* Include one or more codes from a code system or other value set(s) fhir:ValueSet.compose.include.system [ uri ]; # 0..1 The system the codes come from fhir:ValueSet.compose.include.version [ string ]; # 0..1 Specific version of the code system referred to fhir:ValueSet.compose.include.concept [ # 0..* A concept defined in the system fhir:ValueSet.compose.include.concept.code [ code ]; # 1..1 Code or expression from system fhir:ValueSet.compose.include.concept.display [ string ]; # 0..1 Text to display for this code for this value set fhir:ValueSet.compose.include.concept.designation [ # 0..* Additional representations for this concept fhir:ValueSet.compose.include.concept.designation.language [ code ]; # 0..1 Human language of the designation fhir:ValueSet.compose.include.concept.designation.use [ Coding ]; # 0..1 Details how this designation would be used fhir:ValueSet.compose.include.concept.designation.value [ string ]; # 1..1 The text value for this designation ], ...; ], ...; fhir:ValueSet.compose.include.filter [ # 0..* Select codes/concepts by their properties (including relationships) fhir:ValueSet.compose.include.filter.property [ code ]; # 1..1 A property defined by the code system fhir:ValueSet.compose.include.filter.op [ code ]; # 1..1 = | is-a | descendent-of | is-not-a | regex | in | not-in | generalizes | exists fhir:ValueSet.compose.include.filter.value [ code ]; # 1..1 Code from the system, or regex criteria ], ...; fhir:ValueSet.compose.include.valueSet [ uri ], ... ; # 0..* Select only contents included in this value set ], ...; fhir:ValueSet.compose.exclude [ See ValueSet.compose.include ], ... ; # 0..* Explicitly exclude codes from a code system or other value sets ]; fhir:ValueSet.expansion [ # 0..1 Used when the value set is "expanded" fhir:ValueSet.expansion.identifier [ uri ]; # 1..1 Uniquely identifies this expansion fhir:ValueSet.expansion.timestamp [ dateTime ]; # 1..1 Time ValueSet expansion happened fhir:ValueSet.expansion.total [ integer ]; # 0..1 Total number of codes in the expansion fhir:ValueSet.expansion.offset [ integer ]; # 0..1 Offset at which this resource starts fhir:ValueSet.expansion.parameter [ # 0..* Parameter that controlled the expansion process fhir:ValueSet.expansion.parameter.name [ string ]; # 1..1 Name as assigned by the server # ValueSet.expansion.parameter.value[x] : 0..1 Value of the named parameter. One of these 6 fhir:ValueSet.expansion.parameter.valueString [ string ] fhir:ValueSet.expansion.parameter.valueBoolean [ boolean ] fhir:ValueSet.expansion.parameter.valueInteger [ integer ] fhir:ValueSet.expansion.parameter.valueDecimal [ decimal ] fhir:ValueSet.expansion.parameter.valueUri [ uri ] fhir:ValueSet.expansion.parameter.valueCode [ code ] ], ...; fhir:ValueSet.expansion.contains [ # 0..* Codes in the value set fhir:ValueSet.expansion.contains.system [ uri ]; # 0..1 System value for the code fhir:ValueSet.expansion.contains.abstract [ boolean ]; # 0..1 If user cannot select this entry fhir:ValueSet.expansion.contains.inactive [ boolean ]; # 0..1 If concept is inactive in the code system fhir:ValueSet.expansion.contains.version [ string ]; # 0..1 Version in which this code/display is defined fhir:ValueSet.expansion.contains.code [ code ]; # 0..1 Code - if blank, this is not a selectable code fhir:ValueSet.expansion.contains.display [ string ]; # 0..1 User display for the concept fhir:ValueSet.expansion.contains.designation [ See ValueSet.compose.include.concept.designation ], ... ; # 0..* Additional representations for this item fhir:ValueSet.expansion.contains.contains [ See ValueSet.expansion.contains ], ... ; # 0..* Codes contained under this entry ], ...; ]; ]
Changes since DSTU2
ValueSet | |
ValueSet.identifier | Max Cardinality changed from 1 to * |
ValueSet.title | added Element |
ValueSet.status | Change value set from http://hl7.org/fhir/ValueSet/conformance-resource-status to http://hl7.org/fhir/ValueSet/publication-status |
ValueSet.experimental | Now marked as Modifier |
ValueSet.contact | Type changed from BackboneElement to ContactDetail |
ValueSet.description | Type changed from string to markdown |
ValueSet.useContext |
Type changed from CodeableConcept to UsageContext Remove Binding http://hl7.org/fhir/ValueSet/use-context (extensible) |
ValueSet.jurisdiction | added Element |
ValueSet.purpose | added Element |
ValueSet.copyright | Type changed from string to markdown |
ValueSet.compose.lockedDate | added Element |
ValueSet.compose.inactive | added Element |
ValueSet.compose.include | Min Cardinality changed from 0 to 1 |
ValueSet.compose.include.system | Min Cardinality changed from 1 to 0 |
ValueSet.compose.include.concept.designation.language | added Element |
ValueSet.compose.include.concept.designation.use | added Element |
ValueSet.compose.include.concept.designation.value | added Element |
ValueSet.compose.include.filter.op | Now marked as Modifier |
ValueSet.compose.include.valueSet | added Element |
ValueSet.expansion.contains.abstract | Default Value "false" added |
ValueSet.expansion.contains.inactive | added Element |
ValueSet.expansion.contains.designation | added Element |
ValueSet.contact.name | deleted |
ValueSet.contact.telecom | deleted |
ValueSet.lockedDate | deleted |
ValueSet.requirements | deleted |
ValueSet.codeSystem | deleted |
ValueSet.compose.import | deleted |
See the Full Difference for further information
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
ValueSet | I | DomainResource | A set of codes drawn from one or more code systems Value set SHALL contain at least one of a a compose, or an expansion element | |
url | Σ | 0..1 | uri | Logical uri to reference this value set (globally unique) |
identifier | Σ | 0..* | Identifier | Additional identifier for the value set |
version | Σ | 0..1 | string | Business version of the value set |
name | Σ | 0..1 | string | Name for this value set (Computer friendly) |
title | Σ | 0..1 | string | Name for this value set (Human friendly) |
status | ?!Σ | 1..1 | code | draft | active | retired PublicationStatus (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..* | ContactDetail | Contact details for the publisher |
date | Σ | 0..1 | dateTime | Date this was last changed |
description | 0..1 | markdown | Natural language description of the value set | |
useContext | Σ | 0..* | UsageContext | Content intends to support these contexts |
jurisdiction | Σ | 0..* | CodeableConcept | Intended jurisdiction for value set (if applicable) Jurisdiction ValueSet (Extensible) |
immutable | Σ | 0..1 | boolean | Indicates whether or not any change to the content logical definition may occur |
purpose | 0..1 | markdown | Why this value set is defined | |
copyright | 0..1 | markdown | Use and/or publishing restrictions | |
extensible | Σ | 0..1 | boolean | Whether this is intended to be used with an extensible binding |
compose | I | 0..1 | BackboneElement | Definition of the content of the value set (CLD) |
lockedDate | Σ | 0..1 | date | Fixed date for version-less references (transitive) |
inactive | Σ | 0..1 | boolean | Whether inactive codes are in the value set |
include | ΣI | 1..* | BackboneElement | Include one or more codes from a code system or other value set(s) A value set with concepts or filters SHALL include a system Cannot have both concept and filter A value set include/exclude SHALL have a value set or a system |
system | ΣI | 0..1 | uri | The system the codes come from |
version | Σ | 0..1 | string | Specific version of the code system referred to |
concept | I | 0..* | BackboneElement | A concept defined in the system |
code | 1..1 | code | Code or expression from system | |
display | 0..1 | string | Text to display for this code for this value set | |
designation | 0..* | BackboneElement | Additional representations for this concept | |
language | 0..1 | code | Human language of the designation Common Languages (Extensible but limited to All Languages) | |
use | 0..1 | Coding | Details how this designation would be used Designation Use (Extensible) | |
value | 1..1 | string | The text value for this designation | |
filter | I | 0..* | BackboneElement | Select codes/concepts by their properties (including relationships) |
property | 1..1 | code | A property defined by the code system | |
op | ?! | 1..1 | code | = | is-a | descendent-of | is-not-a | regex | in | not-in | generalizes | exists FilterOperator (Required) |
value | 1..1 | code | Code from the system, or regex criteria | |
valueSet | ΣI | 0..* | uri | Select only contents included in this value set |
exclude | I | 0..* | see include | Explicitly exclude codes from a code system or other value sets |
expansion | I | 0..1 | BackboneElement | Used when the value set is "expanded" |
identifier | 1..1 | uri | Uniquely identifies this expansion | |
timestamp | 1..1 | dateTime | Time ValueSet expansion happened | |
total | 0..1 | integer | Total number of codes in the expansion | |
offset | 0..1 | integer | Offset at which this resource starts | |
parameter | 0..* | BackboneElement | Parameter that controlled the expansion process | |
name | 1..1 | string | Name as assigned by the server | |
value[x] | 0..1 | Value of the named parameter | ||
valueString | string | |||
valueBoolean | boolean | |||
valueInteger | integer | |||
valueDecimal | decimal | |||
valueUri | uri | |||
valueCode | code | |||
contains | I | 0..* | BackboneElement | Codes in the value set SHALL have a code or a display Must have a code if not abstract Must have a system if a code is present |
system | 0..1 | uri | System value for the code | |
abstract | 0..1 | boolean | If user cannot select this entry | |
inactive | 0..1 | boolean | If concept is inactive in the code system | |
version | 0..1 | string | Version in which this code/display is defined | |
code | I | 0..1 | code | Code - if blank, this is not a selectable code |
display | I | 0..1 | string | User display for the concept |
designation | 0..* | see designation | Additional representations for this item | |
contains | 0..* | see contains | Codes contained under this entry | |
Documentation for this format |
XML Template
<ValueSet xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <url value="[uri]"/><!-- 0..1 Logical uri to reference this value set (globally unique) --> <identifier><!-- 0..* Identifier Additional identifier for the value set --></identifier> <version value="[string]"/><!-- 0..1 Business version of the value set --> <name value="[string]"/><!-- 0..1 Name for this value set (Computer friendly) --> <title value="[string]"/><!-- 0..1 Name for this value set (Human friendly) --> <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..* ContactDetail Contact details for the publisher --></contact> <date value="[dateTime]"/><!-- 0..1 Date this was last changed --> <description value="[markdown]"/><!-- 0..1 Natural language description of the value set --> <useContext><!-- 0..* UsageContext Content intends to support these contexts --></useContext> <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for value set (if applicable) --></jurisdiction> <immutable value="[boolean]"/><!-- 0..1 Indicates whether or not any change to the content logical definition may occur --> <purpose value="[markdown]"/><!-- 0..1 Why this value set is defined --> <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions --> <extensible value="[boolean]"/><!-- 0..1 Whether this is intended to be used with an extensible binding --> <compose> <!-- 0..1 Definition of the content of the value set (CLD) --> <lockedDate value="[date]"/><!-- 0..1 Fixed date for version-less references (transitive) --> <inactive value="[boolean]"/><!-- 0..1 Whether inactive codes are in the value set --> <include> <!-- 1..* Include one or more codes from a code system or other value set(s) --> <system value="[uri]"/><!-- 0..1 The system the codes come from --> <version value="[string]"/><!-- 0..1 Specific version of the code system referred to --> <concept> <!-- 0..* A concept defined in the system --> <code value="[code]"/><!-- 1..1 Code or expression from system --> <display value="[string]"/><!-- 0..1 Text to display for this code for this value set --> <designation> <!-- 0..* Additional representations for this 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> </concept> <filter> <!-- 0..* Select codes/concepts by their properties (including relationships) --> <property value="[code]"/><!-- 1..1 A property defined by the code system --> <op value="[code]"/><!-- 1..1 = | is-a | descendent-of | is-not-a | regex | in | not-in | generalizes | exists --> <value value="[code]"/><!-- 1..1 Code from the system, or regex criteria --> </filter> <valueSet value="[uri]"/><!-- 0..* Select only contents included in this value set --> </include> <exclude><!-- 0..* Content as for ValueSet.compose.include Explicitly exclude codes from a code system or other value sets --></exclude> </compose> <expansion> <!-- 0..1 Used when the value set is "expanded" --> <identifier value="[uri]"/><!-- 1..1 Uniquely identifies this expansion --> <timestamp value="[dateTime]"/><!-- 1..1 Time ValueSet expansion happened --> <total value="[integer]"/><!-- 0..1 Total number of codes in the expansion --> <offset value="[integer]"/><!-- 0..1 Offset at which this resource starts --> <parameter> <!-- 0..* Parameter that controlled the expansion process --> <name value="[string]"/><!-- 1..1 Name as assigned by the server --> <value[x]><!-- 0..1 string|boolean|integer|decimal|uri|code Value of the named parameter --></value[x]> </parameter> <contains> <!-- 0..* Codes in the value set --> <system value="[uri]"/><!-- 0..1 System value for the code --> <abstract value="[boolean]"/><!-- 0..1 If user cannot select this entry --> <inactive value="[boolean]"/><!-- 0..1 If concept is inactive in the code system --> <version value="[string]"/><!-- 0..1 Version in which this code/display is defined --> <code value="[code]"/><!-- 0..1 Code - if blank, this is not a selectable code --> <display value="[string]"/><!-- 0..1 User display for the concept --> <designation><!-- 0..* Content as for ValueSet.compose.include.concept.designation Additional representations for this item --></designation> <contains><!-- 0..* Content as for ValueSet.expansion.contains Codes contained under this entry --></contains> </contains> </expansion> </ValueSet>
JSON Template
{ "resourceType" : "ValueSet", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "url" : "<uri>", // Logical uri to reference this value set (globally unique) "identifier" : [{ Identifier }], // Additional identifier for the value set "version" : "<string>", // Business version of the value set "name" : "<string>", // Name for this value set (Computer friendly) "title" : "<string>", // Name for this value set (Human friendly) "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" : [{ ContactDetail }], // Contact details for the publisher "date" : "<dateTime>", // Date this was last changed "description" : "<markdown>", // Natural language description of the value set "useContext" : [{ UsageContext }], // Content intends to support these contexts "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for value set (if applicable) "immutable" : <boolean>, // Indicates whether or not any change to the content logical definition may occur "purpose" : "<markdown>", // Why this value set is defined "copyright" : "<markdown>", // Use and/or publishing restrictions "extensible" : <boolean>, // Whether this is intended to be used with an extensible binding "compose" : { // C? Definition of the content of the value set (CLD) "lockedDate" : "<date>", // Fixed date for version-less references (transitive) "inactive" : <boolean>, // Whether inactive codes are in the value set "include" : [{ // R! Include one or more codes from a code system or other value set(s) "system" : "<uri>", // C? The system the codes come from "version" : "<string>", // Specific version of the code system referred to "concept" : [{ // C? A concept defined in the system "code" : "<code>", // R! Code or expression from system "display" : "<string>", // Text to display for this code for this value set "designation" : [{ // Additional representations for this 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 }] }], "filter" : [{ // C? Select codes/concepts by their properties (including relationships) "property" : "<code>", // R! A property defined by the code system "op" : "<code>", // R! = | is-a | descendent-of | is-not-a | regex | in | not-in | generalizes | exists "value" : "<code>" // R! Code from the system, or regex criteria }], "valueSet" : ["<uri>"] // C? Select only contents included in this value set }], "exclude" : [{ Content as for ValueSet.compose.include }] // C? Explicitly exclude codes from a code system or other value sets }, "expansion" : { // C? Used when the value set is "expanded" "identifier" : "<uri>", // R! Uniquely identifies this expansion "timestamp" : "<dateTime>", // R! Time ValueSet expansion happened "total" : <integer>, // Total number of codes in the expansion "offset" : <integer>, // Offset at which this resource starts "parameter" : [{ // Parameter that controlled the expansion process "name" : "<string>", // R! Name as assigned by the server // value[x]: Value of the named parameter. One of these 6: "valueString" : "<string>" "valueBoolean" : <boolean> "valueInteger" : <integer> "valueDecimal" : <decimal> "valueUri" : "<uri>" "valueCode" : "<code>" }], "contains" : [{ // Codes in the value set "system" : "<uri>", // System value for the code "abstract" : <boolean>, // If user cannot select this entry "inactive" : <boolean>, // If concept is inactive in the code system "version" : "<string>", // Version in which this code/display is defined "code" : "<code>", // C? Code - if blank, this is not a selectable code "display" : "<string>", // C? User display for the concept "designation" : [{ Content as for ValueSet.compose.include.concept.designation }], // Additional representations for this item "contains" : [{ Content as for ValueSet.expansion.contains }] // Codes contained under this entry }] } }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ a fhir:ValueSet; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension fhir:ValueSet.url [ uri ]; # 0..1 Logical uri to reference this value set (globally unique) fhir:ValueSet.identifier [ Identifier ], ... ; # 0..* Additional identifier for the value set fhir:ValueSet.version [ string ]; # 0..1 Business version of the value set fhir:ValueSet.name [ string ]; # 0..1 Name for this value set (Computer friendly) fhir:ValueSet.title [ string ]; # 0..1 Name for this value set (Human friendly) fhir:ValueSet.status [ code ]; # 1..1 draft | active | retired fhir:ValueSet.experimental [ boolean ]; # 0..1 If for testing purposes, not real usage fhir:ValueSet.publisher [ string ]; # 0..1 Name of the publisher (Organization or individual) fhir:ValueSet.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher fhir:ValueSet.date [ dateTime ]; # 0..1 Date this was last changed fhir:ValueSet.description [ markdown ]; # 0..1 Natural language description of the value set fhir:ValueSet.useContext [ UsageContext ], ... ; # 0..* Content intends to support these contexts fhir:ValueSet.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for value set (if applicable) fhir:ValueSet.immutable [ boolean ]; # 0..1 Indicates whether or not any change to the content logical definition may occur fhir:ValueSet.purpose [ markdown ]; # 0..1 Why this value set is defined fhir:ValueSet.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions fhir:ValueSet.extensible [ boolean ]; # 0..1 Whether this is intended to be used with an extensible binding fhir:ValueSet.compose [ # 0..1 Definition of the content of the value set (CLD) fhir:ValueSet.compose.lockedDate [ date ]; # 0..1 Fixed date for version-less references (transitive) fhir:ValueSet.compose.inactive [ boolean ]; # 0..1 Whether inactive codes are in the value set fhir:ValueSet.compose.include [ # 1..* Include one or more codes from a code system or other value set(s) fhir:ValueSet.compose.include.system [ uri ]; # 0..1 The system the codes come from fhir:ValueSet.compose.include.version [ string ]; # 0..1 Specific version of the code system referred to fhir:ValueSet.compose.include.concept [ # 0..* A concept defined in the system fhir:ValueSet.compose.include.concept.code [ code ]; # 1..1 Code or expression from system fhir:ValueSet.compose.include.concept.display [ string ]; # 0..1 Text to display for this code for this value set fhir:ValueSet.compose.include.concept.designation [ # 0..* Additional representations for this concept fhir:ValueSet.compose.include.concept.designation.language [ code ]; # 0..1 Human language of the designation fhir:ValueSet.compose.include.concept.designation.use [ Coding ]; # 0..1 Details how this designation would be used fhir:ValueSet.compose.include.concept.designation.value [ string ]; # 1..1 The text value for this designation ], ...; ], ...; fhir:ValueSet.compose.include.filter [ # 0..* Select codes/concepts by their properties (including relationships) fhir:ValueSet.compose.include.filter.property [ code ]; # 1..1 A property defined by the code system fhir:ValueSet.compose.include.filter.op [ code ]; # 1..1 = | is-a | descendent-of | is-not-a | regex | in | not-in | generalizes | exists fhir:ValueSet.compose.include.filter.value [ code ]; # 1..1 Code from the system, or regex criteria ], ...; fhir:ValueSet.compose.include.valueSet [ uri ], ... ; # 0..* Select only contents included in this value set ], ...; fhir:ValueSet.compose.exclude [ See ValueSet.compose.include ], ... ; # 0..* Explicitly exclude codes from a code system or other value sets ]; fhir:ValueSet.expansion [ # 0..1 Used when the value set is "expanded" fhir:ValueSet.expansion.identifier [ uri ]; # 1..1 Uniquely identifies this expansion fhir:ValueSet.expansion.timestamp [ dateTime ]; # 1..1 Time ValueSet expansion happened fhir:ValueSet.expansion.total [ integer ]; # 0..1 Total number of codes in the expansion fhir:ValueSet.expansion.offset [ integer ]; # 0..1 Offset at which this resource starts fhir:ValueSet.expansion.parameter [ # 0..* Parameter that controlled the expansion process fhir:ValueSet.expansion.parameter.name [ string ]; # 1..1 Name as assigned by the server # ValueSet.expansion.parameter.value[x] : 0..1 Value of the named parameter. One of these 6 fhir:ValueSet.expansion.parameter.valueString [ string ] fhir:ValueSet.expansion.parameter.valueBoolean [ boolean ] fhir:ValueSet.expansion.parameter.valueInteger [ integer ] fhir:ValueSet.expansion.parameter.valueDecimal [ decimal ] fhir:ValueSet.expansion.parameter.valueUri [ uri ] fhir:ValueSet.expansion.parameter.valueCode [ code ] ], ...; fhir:ValueSet.expansion.contains [ # 0..* Codes in the value set fhir:ValueSet.expansion.contains.system [ uri ]; # 0..1 System value for the code fhir:ValueSet.expansion.contains.abstract [ boolean ]; # 0..1 If user cannot select this entry fhir:ValueSet.expansion.contains.inactive [ boolean ]; # 0..1 If concept is inactive in the code system fhir:ValueSet.expansion.contains.version [ string ]; # 0..1 Version in which this code/display is defined fhir:ValueSet.expansion.contains.code [ code ]; # 0..1 Code - if blank, this is not a selectable code fhir:ValueSet.expansion.contains.display [ string ]; # 0..1 User display for the concept fhir:ValueSet.expansion.contains.designation [ See ValueSet.compose.include.concept.designation ], ... ; # 0..* Additional representations for this item fhir:ValueSet.expansion.contains.contains [ See ValueSet.expansion.contains ], ... ; # 0..* Codes contained under this entry ], ...; ]; ]
Changes since DSTU2
ValueSet | |
ValueSet.identifier | Max Cardinality changed from 1 to * |
ValueSet.title | added Element |
ValueSet.status | Change value set from http://hl7.org/fhir/ValueSet/conformance-resource-status to http://hl7.org/fhir/ValueSet/publication-status |
ValueSet.experimental | Now marked as Modifier |
ValueSet.contact | Type changed from BackboneElement to ContactDetail |
ValueSet.description | Type changed from string to markdown |
ValueSet.useContext |
Type changed from CodeableConcept to UsageContext Remove Binding http://hl7.org/fhir/ValueSet/use-context (extensible) |
ValueSet.jurisdiction | added Element |
ValueSet.purpose | added Element |
ValueSet.copyright | Type changed from string to markdown |
ValueSet.compose.lockedDate | added Element |
ValueSet.compose.inactive | added Element |
ValueSet.compose.include | Min Cardinality changed from 0 to 1 |
ValueSet.compose.include.system | Min Cardinality changed from 1 to 0 |
ValueSet.compose.include.concept.designation.language | added Element |
ValueSet.compose.include.concept.designation.use | added Element |
ValueSet.compose.include.concept.designation.value | added Element |
ValueSet.compose.include.filter.op | Now marked as Modifier |
ValueSet.compose.include.valueSet | added Element |
ValueSet.expansion.contains.abstract | Default Value "false" added |
ValueSet.expansion.contains.inactive | added Element |
ValueSet.expansion.contains.designation | added Element |
ValueSet.contact.name | deleted |
ValueSet.contact.telecom | deleted |
ValueSet.lockedDate | deleted |
ValueSet.requirements | deleted |
ValueSet.codeSystem | deleted |
ValueSet.compose.import | deleted |
See the Full Difference for further information
Alternate definitions: Master Definition (XML, JSON), XML Schema/Schematron (for ) + JSON Schema, ShEx (for Turtle), JSON-LD (for RDF as JSON-LD),
Path | Definition | Type | Reference |
---|---|---|---|
ValueSet.status | The lifecycle status of a Value Set or Concept Map. | Required | PublicationStatus |
ValueSet.jurisdiction | Countries and regions within which this artifact is targeted for use | Extensible | Jurisdiction ValueSet |
ValueSet.compose.include.concept.designation.language | A human language. | Extensible, but limited to All Languages | Common Languages |
ValueSet.compose.include.concept.designation.use | Details of how a designation would be used. | Extensible | Designation Use |
ValueSet.compose.include.filter.op | The kind of operation to perform as a part of a property based filter. | Required | FilterOperator |
A value set can be a simple list of included codes, or it can be some kind of general selection criteria using the facilities provided by the code system. For these value sets:
include
statements are cumulative - e.g. the value set contains the union of all the includesinclude
, all the criterion apply -e.g. the value set contains the intersection of the criterioninclude
, a single system with selection criteria may be listed, and/or one or more value sets may be listed. Rules for
interpretation:
System
only: Codes are 'selected' for inclusion if they are selected by the code system selection (see next point)valueSet
only: Codes are 'selected' for inclusion if they are in all the referenced value setsSystem
and valueSet
: Codes are 'selected' for inclusion if they are selected by the code system selection and if they are in all the referenced value setsconcept
or filter
: All codes in the system are includedconcept
: Only the enumerated codes are selectedfilter
: Any codes meeting the filter criteria are selectedWhen a value set enumerates codes, it is sometimes useful to define an alternative display for the code that is to be used wherever the value set is expanded and used in a UI. This facility is provided to cover the following circumstances:
Note that care must be taken in order to avoid "changing the meaning" of the concept by implying that it means something other than the explicit definition of the concept in the underlying code system (e.g., in the case above, using a display of "Glucose Concentration at 10pm"). For this reason, some contexts of use do not allow a display to be associated with a specific code in a value set.
Any display name for a concept provided in the value set is only used in the UI. The display in a Coding must be taken from the underlying code system definition, even if a value set is referenced explicitly in the Coding (e.g. by an extension). The alternative display specified in the value set would go in CodeableConcept.text, perhaps appended to the UI label for the matching data element.
Value sets may select codes from multiple code systems - either by including codes from different systems, or importing other value sets that include them. A typical use for crossing code systems is when including a set of codes, and adding a few additional codes to cover cases not catered to by the included codes (e.g. Data missing or workflow error codes).
Best Practice Note: Mixing definitional systems offers the potential for confusing, overlapping, and inconsistent definitions. Creating value sets that cross code systems should be done with care to avoid creating definitional confusion.
Each Code System defines which filters can be
used in ValueSet.compose.include.filter
. All code systems have
base filters and any additional
filters defined in in (CodeSystem.filter).
This specification also defines filters for various published code systems:
A value set can be "expanded", where the definition of the value set is used to create a simple collection of codes suitable for use for data entry or validation. There is a defined operation $expand to ask a server to perform this expansion. Expansions are most useful when a value set includes all the codes in a code system, or a set of codes by filter.
A resource that represents a value set expansion includes the same
identification details as the definition of the value set, and MAY
include the definition of the value set (.compose
). In
addition, it has an .expansion
element which contains
the list of codes that constitute the value set expansion.
If the expansion has nested contains
elements, there is
no implication about the logical relationship between them, and the
structure cannot be used for logical inferencing. The structure
exists to provide navigational assistance for helping human users to
locate codes in the expansion.
When a request for an expansion is received (e.g., for the $expand operation), the following process should be followed:
valueSet
, find the referenced value set by ValueSet.url, expand that (e.g., using the $expand operation: GET [base]/ValueSet/$expand$url=[compose.include.valueSet]), and add it to the result set. This means that expansion across imports is a recursive process.The final "result set" is then represented in expansion. Note that the expansion structure is inherently ordered, and also provides support for a hierarchical tree of items. This specification does not fix the meaning of use of either the order or the heirarchy, and the conceptual approach described should not be understood to prohibit any implementation approach in these regards. In addition, note that the method described above is a conceptual approach; individual servers may choose to follow alternative approaches that are more efficient, as long as the outcome is the same.
An expansion may include entries in the expansion that only serve an arbitrary grouping purpose, to make it easier
for a human to use the list. These entries have no system or code, and must be marked as abstract. Note that the
value set codeSystem
and compose
offer no support for defining these, but this does not exclude servers from using
extensions or other knowledge to introduce such groups as an implementation feature.
The codes in the expansion should be treated as case sensitive - implementers should use the correct case. Implementers can consult the definition of the underlying code systems to determine whether the code system that defines the code is case sensitive or not.
Whether to store expanded value sets, or simply to store their definitions and expand on the fly is a matter for system deployment. Some servers, including public value sets servers, only store expansions. However any system that stores an expansion must be concerned with how to determine whether the expansion is still current, and this requires deep knowledge of how the expansion was created. A system with a dedicated terminology server that returns expansions on demand avoids this problem, but leaves open the question of how to audit the specific expansion that was used for a particular case. One solution to this is to use a dedicated terminology server, and have the clients ask for expansions on demand based on the value set definitions, and for the server to store (and reuse as appropriate) the returned expansion (when it reuses the expansion, ValueSet.expansion.identifier will be the same).
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 | In Common |
date | date | The value set publication date | ValueSet.date | |
description | string | Text search against the description of the value set | ValueSet.description | |
expansion | uri | Uniquely identifies this expansion | ValueSet.expansion.identifier | |
identifier | token | External identifiers for the value set | ValueSet.identifier | |
jurisdiction | token | Intended jurisdiction for value set | ValueSet.jurisdiction | |
name | string | Name of the value set | ValueSet.name | |
publisher | string | Name of the publisher of the value set | ValueSet.publisher | |
reference | uri | A code system included or excluded in the value set or an imported value set | ValueSet.compose.include.system | |
status | token | The current status of the value set | ValueSet.status | |
title | string | Text search against the title of the value set | ValueSet.title | |
url | uri | The uri that identifies the value set | ValueSet.url | |
version | token | The version identifier of the value set | ValueSet.version |