Terminology Fundamentals
0.1.0 - CI Build
Terminology Fundamentals, published by HL7 International / Terminology Infrastructure. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/terminology-fundamentals-ig/ and changes regularly. See the Directory of published versions
Page standards status: Informative |
Value Sets represent the terminology constraint for a data element in a model for a particular use case and, thus, strongly influence the semantics that may be carried in the model. As such, they are usually authored and published using well-controlled processes to ensure quality and consistency. In order for such quality oversight and robust governance operations to be implemented efficiently, a well-designed standard for the content and structure for Value Sets is highly desirable. This standard supplies such a definition and many of the elements described in the next sections are specifically included to support robust governance processes.
When most people think of a Value Set, they think of a list of codes or phrases. These lists may be called member list, code list, etc. While a critical part of the usefulness of a Value Set, the final set of Code System members used by implementers, which is called the Value Set Expansion in this specification, is only one part of the collective information that is a Value Set.
A Value Set is a specification composed of general metadata that is true for all versions of the Value Set8 and version-specific information that describes the content of the Value Set9. Some of the information conveyed in the specification is not intended to be machine computable, but carries information users may interpret. Other elements in the specification are intended to be directly computable so that automated systems may act upon this information and exhibit reliable behavior.
Also included are critical metadata used to identify the people and entities that are responsible for developing and maintaining the Value Set Definition, Value Set Definition versioning information and elements that can support tracking of changes to the Value Set and authoring workflow, and other key provenance information.
Each of the elements of the model is described in the sections below.
The phrase "Value Set" usually is taken to mean both of the following:
Yet as is shown in this specification and in Core Principles, these are not exactly the same thing. In general, when the phrase “Value Set” is used (including within this specification), the intent is to reference both the Value Set Definition and the Value Set Expansion Code Set as one, in that the distinction is immaterial for the point being made. From this point forward in this document one of the more specific phrases is used when one or the other item is under discussion in particular and the difference is important to note.
A Value Set Definition is a set of metadata that describes the scope of the intended member Concept Representations, provenance of the included information and, most importantly, a set of instructions that describe (preferably in a computable manner) which Code System Concept Representation, which is almost always a code, should be in the Value Set Expansion Code Set. As such, the Value Set Definition is then applied to one or more Code System instances to determine the Value Set Expansion Code Set Member Concept Representations. In essence the Value Set Definition (specifically the Content Logical Definition described below) is a set of functions against the Code System to retrieve the concepts as described in the definition. This is true for every Value Set Definition. It is not restricted to only definitions that use a logical or “intensional” definition; it is also true for simple explicit lists of individually selected concepts (“extensional.”) As long as the Value Set Definition is not locked to a single Code System version, even simple code lists can result in changing Value Set Expansion Code Sets if the codes in the original definition are retired in later Code System versions. In summary, only a Value Set Expansion Code Set (see Figure 1 below and also the Value Set Expansion page) will contain the accurate Expansion Code Set Member Concept Representations that are the result of the proper Value Set Definition version applied against the proper Code System version.
There are two approaches to defining Value Sets (think of these as “types” of a value set definition), Intensional and Extensional, repeated in part here for clarity:
Both approaches are used frequently in defining Value Sets but intensional definitions may use text that is not directly computable and therefore requires human interpretation to determine a reliable set of concepts that make up the actual Value Set Expansion Code Set.
The Content Logical Definition page of this document describes how to represent a computable description of the Concept Representations that are intended to be in the Value Set Expansion Code Set. It is through the use of functions included in the Content Logical Definition that any and all concepts included in a Value Set Expansion Code Set will be identified. The difference between Intensional and Extensional is a description of the style used to determine the Value Set Expansion Code Set.
In an Extensional style Value Set if the Value Set Expansion is allowed to change with new Code System versions (i.e., is not LOCKED to a single Code System version), then new concepts will not automatically be added to the Value Set Expansion Code Set because each concept is explicitly identified, but concepts may fall out of the Value Set Expansion Code Set if they are retired. In an Intensional style Value Set the Content Logical Definition contains a logical expression that is to be evaluated against each allowed Code System version and that evaluation can result in both the addition and removal of concepts from the Value Set Expansion Code Set.
The Value Set Definition consists of a collection of Elements, which contain the specification and documentation of the Value Set. The Value Set Expansion Code Set can be generated from these elements and the documentation elements support governance and distribution. Any element with an unstated cardinality is presumed to have a cardinality of 0..*. All elements with a non-zero lower cardinality are required.
Each of the following sections is structured to align with the UML Model categories noted in the diagram above. Each of the primary sections below are sub-divided to indicate if the element described is definitional or non-definitional, where definitional elements, when changed, must result in either an entirely new Value Set (for the Value Set Elements) or a new Value Set version (for Value Set Version Elements). Elements that are derived from other elements are also identified. Each section below describes the details of the components illustrated in Figure 2 - Value Set Metadata.
The class diagram includes “definitional” and “non-definitional” categorization of model elements. By this we mean that when elements in a class that are “definitional” are changed in a substantive way, the model expects that a new instance of the class should be created.
For all elements, except those that are an ST datatype, any change is potentially substantive. For the Scope content, which is a text string, a substantive change is subjective and described more completely in the Scope section. The definitional elements impose baseline process expectations in the Standard, i.e., all compliant implementations of the Standard must create new Value Set Definitions or new Value Set Definition versions when a definitional element has a substantive change. A new Value Set Definition or Value Set Definition version that is based on a change in a non-definitional element is not considered best practice but may occur in certain business scenarios.
Elements described in this section provide identification and descriptive information about the entire Value Set Definition and can be consistently applied to all versions of the Value Set Definition. This collection of elements is made up of an identifier and two categories of model elements: definitional and non-definitional. These categories are described in Implied Constraints above.
Value Set Identifier | |||||
Element | Definition | Description | Usage Notes | Data Type | Cardinality |
---|---|---|---|---|---|
Value Set Identifier | globally unique string identifying this value set | The string must be globally unique, is expected to be a permanent canonical identifier for all versions and associated instances, and is used to reference the value set in a specification, model, design or an instance. | Current implementations at HL7 use URIs or OIDs (a subtype of URI). Identifiers can have attributes, such as "preferred" or "authoritative". | uri | 1..* |
Value Set Definition— Definitional Elements If the elements within this section changes substantively, then a new Value Set Definition must be created and a new Value Set Identifier assigned. | |||||
Element | Definition | Description | Usage Notes | Data Type | Cardinality |
---|---|---|---|---|---|
Scope | textual description of the span of meanings for concepts to be included within the Value Set Expansion Code Set including the intended use and limitations of the Value Set. | This is intended to convey between humans (and not necessarily in a computable fashion) the scope of Concept Representation meanings and capture important elements of the context of use for the Value Set. The scope should describe “the semantic space” the Value Set Expansion is intended to cover. This can also describe the approach taken to build the Value Set Expansion Code Set. Any substantive change is one that changes the meaning of the scope and therefore implies a different Value Set Definition rather than a new Value Set Definition Version. This item is a key component for the meaning of the Value Set. | The Scope should cover the following kinds of information:
|
string | 1..1 |
Immutable | property indicating that no change to the Content Logical Definition may occur. Immutable means no change can occur. | If this is set to ‘true’, then no new versions of the Content Logical Definition can be created. Other metadata might still change and it is possible that the Value Set Expansion Code Set can change if the underlying Code Systems change and the Content Logical Definition (CLD) is not locked to a specific Code System version. |
The default value is FALSE. Note that the implication is that if this is set to ‘true’, thereafter, the current Value Set Definition version must be the last Value Set Definition allowed. The Immutable Flag tends to be set to ‘TRUE’ in one of two cases:
Source workflow control must guarantee that the same URI always yields the same definition. |
boolean | 1..1 |
Value Set Definition— Non-definitional Elements The content of the elements in this section may change without requiring a new Value Set Definition be created. | |||||
Element | Definition | Description | Usage Notes | Data Type | Cardinality |
---|---|---|---|---|---|
Value Set Definition Naming |
human-readable monikers of this Value Set Definition. |
This repeating group of elements contains information about the human- readable strings associated with this Value Set Definition that are used as names. | backbone (listed following) | 1..* | |
Name (sub-element) | word or set of words by which the Value Set is known, addressed or referenced | This name is intended to be human readable, short and as specific as possible and it should relate to the content and intent. It is considered to be the name of the Value Set Definition. | This need not be unique. Some use cases may require uniqueness within a namespace and, therefore, best practice is to make the name unique. | string | 1..1 |
Name Language (sub-element) | code to indicate the system of communication used by a particular country or community in which the name is represented. | This indicates the language system (e.g., US English) in which the name is expressed. | The intention is to use the IETF language tags preference referenced by the current RFC for BCP 47 (add reference). | string (drawn from IETF language tags noted) | 0..1 |
Preferred Name Indicator (sub-element) | identifies the single preferred name for the “Name Language”. | Flag that this Name in this Name Language is the preferred human-readable signifier in this language. The only permissible value of this property is “preferred”. | There may be multiple human readable names in a given language, and this flag indicates which of them is preferred for the given language. The expectation is that only one is preferred for any given language. | string | 0..1 (within each Value Set Naming group of elements) |
Definition URL |
a web pointer to where the Value Set Definition may be located. |
Pointer to the authoritative accessible, persisted source of truth of the entire Value Set Definition, including textual information and available versions. | If provided, the URL should be and remain (through redirection if applicable) resolvable. | url | 0..1 |
Intellectual Property Information | publishing restrictions for the Value Set Definition metadata | These are generally legal restrictions on the use and publishing of the Value Set Expansion and metadata. | This is intended to convey the restrictions, such as copyright, of the directly referenced Value Set Definition and Expansion, including Code System(s). It should also contain contact information. It is a text block of unlimited length and unspecified internal format although markdown is recommended so that specific information types, such as contact, are identified. | string | 0..1 |
Experimental | this Value Set is created for educational or testing purposes and is not intended for production use. | When set to ‘experimental’, this Value Set should not be used in a production system or environment and may be used for exemplary purposes. It must be noted that use of a Value Set Definition designated as Experimental is under the control of the user and is not meant to be controlled by this element. If not populated, the Value Set may be used in a production system or environment. This decision is wholly the judgment of the Value Set steward. | When absent, the Value Set may be used for any purpose. Value Sets noted to be Experimental may also be used for demonstration purposes. | string | 0..1 |
Source Reference | reference to prior work used as a basis in authoring of this Value Set | This text is intended to act as a citation to work done elsewhere that is not part of the current stewarding process where the referenced source is in some way a basis of the current Value Set Definition. | This may refer to other Value Set Definitions, research articles, or other resources. This is not intended to document uses of the Value Set Definition, for this, see Section 5.2.2.3.7 below. For example, the identifier for a Value Set Definition that was cloned to begin the work on this Value Set Definition, or a pointer to a published article that describes appropriate concepts. There may be multiple source references. | string | 0..* |
Keyword | a word or phrase that captures a key aspect of a Value Set Definition |
Word or words that may be used in an information retrieval system to index the contents of the Value Set Definition. The string datatype allows implementers to use strings or coded concepts. |
This may be used to surface indexing terms for a search. |
string | 0..* |
Use | the manner in which the Value Set Definition will be employed or applied. | an optional repeating element used to capture information about consumers of the Value Set Definition and the implementations, projects or standards where the author has utilized the Value Set. |
The information captured in “Use” can and should include names of programs and/or names of organizational entities that use the value set definitions, including standards that require the value set definition. This is likely to be a “point in time” view and should not be considered an authoritative listing of all uses of the Value Set. In the USA, the Value Set Expansions created for electronic quality measures (eCQMs) that are a part of the Meaningful Use requirements could implement this as follows:
|
string | 0..* |
The Value Set Definition Version section contains the information required to computationally produce a Value Set Expansion from the Value Set Definition, metadata specific to the version and an identifier for the Value Set Definition Version. Similar to the overall Value Set Definition, the Value Set Definition version metadata includes an identifier, elements characterized as definitional, elements characterized as non- definitional (both are described in Implied Constraints) and a derived element. Each of the elements in this section applies to a particular version of a Value Set Definition.
Value Set Definition Version Identifier | |||||
Element | Definition | Description | Usage Notes | Data Type | Cardinality |
---|---|---|---|---|---|
Value Set Definition Version Identifier | a unique string labeling a Value Set Definition Version. | A unique identifier within the context of the Value Set Definition that is used to indicate a specific Value Set Definition at a point in time. | The identifier must be updated when any of the "Definitional metadata elements" of the Value Set Definition have changed. In addition, it may be updated under other circumstances. This may be a string identifier of any type or may explicitly be a timestamp, which is often used to simplify dynamic binding processing. If the string is intended to be encoded as a timestamp consistent with HL7 Datatypes R2, the format should be TS.DATETIME.FULL. | string | 1..1 |
Value Set Definition Version — Definitional Elements If either of the elements within this section changes in any way, then a new Value Set Definition Version must be created with a new Value Set Version Identifier assigned but the Value Set Identifier does not change. Note: If a content logical definition content expression contains Concept Representations that can change yet are still considered a representation of the same concept, then the value set version may change due to a Code System Version change alone. | |||||
Element | Definition | Description | Usage Notes | Data Type | Cardinality |
---|---|---|---|---|---|
Content Logical Definition |
formal representation used to determine the coded concept contents to be included in the Value Set Expansion Code Set |
The Content Logical Definition (CLD) is a formal representation of Value Set content and is intended to be machine processable. It is used to generate the coded content of the Value Set Expansion, i.e., the Value Set Expansion Code Set. |
This element uses the ED data type (REFERENCE ED) meaning that the content is structured and that the structure includes an identification of the structure (or the application that must be used to interpret the data). For example, an “HL7 Expression” uses a MIME type of “application/xml”. This flexibility means that subsequent specifications can identify the allowance for additional expression syntaxes. The HL7 Expression functions are an available syntax for the CLD that is described below, possibly including some recursive elements. Each recursive section is considered a “clause”. The Value Set Definition Version contains a single mandatory Content Logical Definition that describes different types of specifications of content, some of which contain or reference Content Logical Definitions; thus the definition is inherently recursive. The list of functions is described in Section 6. |
ED (???) | 1..1 |
Value Set Definition Version — Non-definitional Elements The elements within this section may change without requiring that a new Value Set Definition Version be created. Some elements in this section should never result in a new version (e.g., Activity Status, Effective Date, Workflow Status Description, Completeness), but a change in others could lead a Value Set steward to decide to identify a new version (e.g., Steward, Author, etc.). | |||||
Element | Definition | Description | Usage Notes | Data Type | Cardinality |
---|---|---|---|---|---|
Activity Status |
the release and/or usability state |
The state that represents the current state of the Value Set Definition in the context of the Value Set creation and release process. |
The Activity Status should track the status with regards to the Value Sets availability for use in a publishing environment context. Changes to this element should never result in a new Value Set Definition Version. This element has the following allowed values:
Since activity status is only represented here in Value Set Definition Version information and is a required element, then any Value Set Definition that does not have this is not valid. Furthermore, a Value Set Definition may have more than one Value Set Definition Version with any of the status states noted. Given that this can lead to overlapping Active definitions, external governance must be available to either restrict the allowed overlap or resolve overlap if usage does not specify a particular Value Set Definition Version. |
coding | 1..1 |
Activity Status Date |
the date when the associated Value Set Definition Version activity status is in effect. |
This is the date the associated status for this version began. |
When the Activity Status is set to “Active”, the Activity Status Date defines the Effective Date which is the date-time the Value Set Definition Version becomes active. When the Activity Status is set to “Inactive”, the Activity Status Date is the date-time when the Value Set Definition version becomes Inactive. This cycle may happen multiple times. The specified time is expected to be one second after midnight UTC of the Activity Status Date. The date may be in the future. It is strongly encouraged that the Activity Status be set such that no more than one Value Set Definition Version for a single Value Set Identifier can have an Activity Status of ACTIVE at the same time within a single realm. In cases where this is not true, evaluation of the alignment of a Value Set Expansion Code Set to a specific Value Set Definition, as referenced in a CD, will be problematic. Changes to this element should never result in a new Value Set Definition Version. |
dateTime | 1..1 |
Workflow Status Description |
the state of development of the Value Set Definition while in a single Activity Status. |
Workflow Status Description is used to represent details of the Value Set Definition development process. The development of a Value Set Definition often follows a formal workflow process from initiation to completion and this element carries the state variable for this state machine. The assumption is that when first created, a Value Set Definition would have a workflow state of Draft. Additional workflow states may be used. |
The values that are traditionally used for this element while the Value Set Definition has an Activity Status of Preliminary are assumed to include phrases that capture various stages in review and approval. It is expected that this would be used to manage maintenance activities, but that a terminology service would not be expected to expose this information. Different services might adopt different workflow status description values reflecting their local practices. As an example, the US Value Set Authority Center (VSAC) uses the following workflow status descriptions. The Activity Status is “Preliminary” (see Activity Status) for all these workflow status descriptions:
VSAC allows all Value Set Definition workflow status descriptions to be changed back to the prior status as long as the Value Set Definition has not been “Published” (Activity Status = ACTIVE). A Value Set Definition version can only have one workflow status description at any time. There may be additional states defined by different developers. This is an optional element because the use of Activity Status “Preliminary” may be sufficient for some implementations. Changes to this element should never result in a new Value Set Definition version. |
string | 0..1 |
Steward | the entity that is responsible for the content of the Value Set Definition. |
This is a textual description of the organizational entity responsible for the content and maintenance. |
The information included should include contact information. | string |
1..1 |
Author |
the entity or set of entities that create and may modify the Value Set Definition content. |
The name of a group or an individual. |
This can be any combination of groups or individuals. When known and actively maintained, this should be populated. The information included about the Author may include contact information. |
string | 0..* |
Comments | human-specified notes and other documentation | This optional repeating group of elements contains human-specified notes and other documentation, which consists of a time-stamped list of comments text blocks. |
Changes to this element should never result in a new Value Set Definition Version. |
backbone (listed following) | 0..* |
CommentString (sub-element) | unrestricted field of remarks or other text. | Each comment is an entry of arbitrary length that is only editable by those in the author group. | This element is expected to primarily used by authors of Value Sets in the development and maintenance process. One important use prior to fully defining the Value Set Content Logical Definition, is to include a set of easily understood example concepts that are consistent with concepts expected to be found in the Value Set Expansion Code Set. This use replaces a defined Example Content element included in a prior version of this specification. Changes to this element should never result in a new Value Set Definition Version. | string | 1..1 |
CommentTimeStamp (sub-element) | date/time when the comment was created | The time stamp for the comment | Changes to this element should never result in a new Value Set Definition Version. | dateTime | 0..1 |
Trusted Value Set Expansion Source | list of references to trusted Value Set Expansion Code Sets | This is to be used to provide links to services for existing persisted Value Set Expansions that are known by the Value Set Author where the Value Set Expansion content can be trusted. | This URI should directly yield the Value Set Expansion. | uri | 0..* |
Type |
characterization of the Value Set Definition |
user-defined descriptive phrase meant to characterize the content logical definition (CLD.) |
The following descriptive words have traditionally been used to describe the CLD in HL7 standards. Other phrases may be of use for some users.
|
stringstring | 0..1 |
Value Set Definition Version — Derived Elements Elements in this section are not entered by the author, but are derived values based on other elements in the Value Set Definition metadata. | |||||
Element | Definition | Description | Usage Notes | Data Type | Cardinality |
---|---|---|---|---|---|
Code System Source |
the Code System(s) identifiers explicitly referenced by the Value Set Definition’s Content Logical Definition. |
An exhaustive list of all Code Systems referenced in the Content Logical Definition. |
This list of Code System Identifiers should be derived from the Content Logical Definition to ensure that it is accurate. When the Content Logical Definition does not specify any content types based on Code Systems, this is not populated. It is possible that a Code System will be in the CLD but not generate a concept in the Value Set Expansion Code Set if codes specified in the CLD are inactive or if an expression does not identify any codes; therefore, this may list Code Systems that are not resident in a specific Value Set Expansion Code Set. |
0..* |
Creation Information contains the initial creation user data for the Value Set Definition. Changes to these elements should never result in a new Value Set Definition Version.
Creation Information | |||||
Element | Definition | Description | Usage Notes | Data Type | Cardinality |
---|---|---|---|---|---|
Creation Date | when the Value Set Definition was originally created. | This element records the date-time when the first draft of the Value Set Definition was saved. | The expectation is that if the creation date is unknown, that one will be asserted when the Value Set Definition is entered into the system. | dateTime |
1..1 |
Created By | name of the user entity that created this Value Set Definition. | This records the entity that performed the original Value Set Definition creation step. This data will persist for the life of the Value Set Definition (and is consistently represented in all versions) because the original creation occurs only once. | Some systems may allow an organizational entity as a user, most systems require an individual to be a user. In VSAC, this is the logged in individual user that saved the first view of the Value Set Definition. In most instances it would be best if this were the original Value Set Definition steward to capture that information without requiring a query into the Value Set Definition modification history. | string | 0..1 |
Revision History is used to record individual changes to any element of the Value Set metadata. It is intended to capture changes over time and serves as an audit trail of all such changes. Any change of any kind can result in a revision history item.
Revision History | |||||
Element | Definition | Description | Usage Notes | Data Type | Cardinality |
---|---|---|---|---|---|
Revision Date |
date and time when an element was changed in some way. |
The date-time when a Value Set Definition element was stored |
This should be captured precisely enough to prevent confusion. In most cases, a date may work, but particularly volatile cases may require greater precision such as down to the second. |
dateTime | 1..1 |
Tracking Identifier |
identifier for the changes for each revision |
Unique identifier for the change captured in the revision history. |
This may be used to disambiguate multiple changes and revisions that all carry the same timestamp, such as those done for publishing reasons. It may be best if this is a GUID. |
string | 0..1 |
Revised By | name of user entity responsible for the revision | Carries the name or identification of the user entity that is considered to have made the revision. | Some systems will assign this as the entity that was logged in when the revision occurred. | string | 0..1 |
Change Notes | annotation of revision | Specific narrative description and/or explanation of the changes made to the Value Set Definition, e.g., what was done and perhaps why. | string | 0..1 |
Revision History — Derived Element | |||||
Element | Definition | Description | Usage Notes | Data Type | Cardinality |
---|---|---|---|---|---|
Revision Version Identifier | the Value Set Definition Version Identifier to which the history item applies. | A derived element that captures the current Value Set Definition Version Identifier at the time the revision history item was created. | string | 1..1 |