FHIR Release 3 (STU)

Переводит компания Health Samurai . Приглашаем поучаствовать в русификации стандарта FHIR: GitHub , Email.

4.8 Ресурс ValueSet - Назначение

Vocabulary Work GroupMaturity Level: 5 Trial UseCompartments: Not linked to any defined compartments

Набор значений устанавливает набор кодов, взятых из одной или нескольких кодовых систем.

The FHIR terminology specification is based on 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 understood
  • ValueSet - selects a set of codes from those defined by one or more code systems to specify which codes can be used in a particular context

Value 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.

  • Value sets use CodeSystem resources by referring to them via their canonical URLs
  • Value sets are used in ElementDefinition and Questionnaire resources to specify the allowable contents for coded elements
  • Concept Maps describe mappings between value sets
  • The ValueSet resource design is based on the functionality described in the OMG CTS 2 specification, along with metadata in the HL7 Value Set Definition specification. Value set resources can be converted to CTS2 value set and code system resources.
  • The value set resource is aligned with the Value Set Definition (VSD) project. Not all of the elements defined by the VSD are part of the base resource - some are defined as part of the ValueSet Extensions. In the ValueSet resource, the 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 possible
  • ValueSet.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.

На этот ресурс ссылаются ConceptMap, OperationDefinition и Questionnaire

Структура

ИмяФлагиКард.ТипОписание и ограниченияdoco
.. ValueSet IDomainResourceНабор кодов, взятых из одной или нескольких кодовых систем
+ Набор значений ДОЛЖЕН содержать по крайней мере один из элементов codeSystem, compose или expansion
Элементы, определённые в прародителе: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... url Σ0..1uriLogical URI to reference this value set (globally unique)
... identifier Σ0..*IdentifierAdditional identifier for the value set
... version Σ0..1stringBusiness version of the value set
... name Σ0..1stringName for this value set (computer friendly)
... title Σ0..1stringName for this value set (human friendly)
... status ?!Σ1..1codedraft | active | retired | unknown
PublicationStatus (Required)
... experimental ?!Σ0..1booleanFor testing purposes, not real usage
... date Σ0..1dateTimeDate this was last changed
... publisher Σ0..1stringName of the publisher (organization or individual)
... contact Σ0..*ContactDetailContact details for the publisher
... description 0..1markdownNatural language description of the value set
... useContext Σ0..*UsageContextContext the content is intended to support
... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for value set (if applicable)
Jurisdiction ValueSet (Extensible)
... immutable Σ0..1booleanУказывает, может ли или нет произойти какое-либо изменение логического определения содержимого
... purpose 0..1markdownWhy this value set is defined
... copyright 0..1markdownUse and/or publishing restrictions
... extensible Σ0..1booleanПредназначено ли это для использования с расширяемой привязкой
... compose I0..1BackboneElementDefinition of the content of the value set (CLD)
.... lockedDate Σ0..1dateFixed date for version-less references (transitive)
.... inactive Σ0..1booleanWhether inactive codes are in the value set
.... include ΣI1..*BackboneElementInclude one or more codes from a code system or other value set(s)
+ A value set with concepts or filters SHALL include a system
+ Не может иметь одновременно элементы concept и filter
+ A value set include/exclude SHALL have a value set or a system
..... system ΣI0..1uriСистема, из которой взяты коды
..... version Σ0..1stringКонкретная версия вышеупомянутой кодовой системы
..... concept I0..*BackboneElementКонцепт, определенный в системе
...... code 1..1codeКод или выражение из системы
...... display 0..1stringText to display for this code for this value set in this valueset
...... designation 0..*BackboneElementAdditional representations for this concept
....... language 0..1codeЕстественный язык обозначения
Common Languages (Extensible but limited to All Languages)
....... use 0..1CodingПодробно описывает, как это обозначение будет использоваться
Designation Use (Extensible)
....... value 1..1stringThe text value for this designation
..... filter ?!ΣI0..*BackboneElementВыбор кодов/концептов по их свойствам (включая отношения)
...... property Σ1..1codeA property defined by the code system
...... op Σ1..1code= | is-a | descendent-of | is-not-a | regex | in | not-in | generalizes | exists
FilterOperator (Required)
...... value Σ1..1codeКод из системы либо регулярное выражение, or boolean value for exists
..... valueSet ΣI0..*uriSelect only contents included in this value set
.... exclude I0..*see includeExplicitly exclude codes from a code system or other value sets
... expansion I0..1BackboneElementИспользуется, когда набор значений "расширен"
.... identifier 1..1uriУникальным образом идентифицирует это разложение
.... timestamp 1..1dateTimeВремя выполнения развёртки набора значений
.... total 0..1integerОбщее количество кодов в развёртке
.... offset 0..1integerСмещение, относительно которого начинается этот ресурс
.... parameter 0..*BackboneElementПараметр, управлявший процессом разворачивания
..... name 1..1stringИмя, которое было назначено сервером
..... value[x] 0..1Значение именованного параметра
...... valueStringstring
...... valueBooleanboolean
...... valueIntegerinteger
...... valueDecimaldecimal
...... valueUriuri
...... valueCodecode
.... contains I0..*BackboneElementКоды в этом наборе значений
+ Должен иметь элемент code или display
+ Должен иметь код, если не абстрактный
+ Должен иметь систему, если код указан
..... system 0..1uriЗначение системы для этого кода
..... abstract 0..1booleanЕсли пользователь не может выбирать этот пункт
..... inactive 0..1booleanIf concept is inactive in the code system
..... version 0..1stringВерсия, в которой определен этот код / значение для отображения
..... code I0..1codeКод - если пустой, то его не возможно выбрать
..... display I0..1stringЗначение концепта для отображения пользователю
..... designation 0..*see designationAdditional representations for this item
..... contains 0..*see containsКоды, входящие в эту запись

doco Документация по этому формату

UML-диаграмма (Legend)

ValueSet (DomainResource)An absolute URI that is used to identify this value set when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this value set is (or will be) published. The URL SHOULD include the major version of the value set. For more information see [Technical and Business Versions](resource.html#versions)url : uri [0..1]A formal identifier that is used to identify this value set when it is represented in other formats, or referenced in a specification, model, design or an instanceidentifier : Identifier [0..*]The identifier that is used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the value set author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequenceversion : string [0..1]A natural language name identifying the value set. This name should be usable as an identifier for the module by machine processing applications such as code generationname : string [0..1]A short, descriptive, user-friendly title for the value settitle : string [0..1]The status of this value set. Enables tracking the life-cycle of the content (this element modifies the meaning of other elements)status : code [1..1] The lifecycle status of a Value Set or Concept Map. (Strength=Required)PublicationStatus! A boolean value to indicate that this value set is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage (this element modifies the meaning of other elements)experimental : boolean [0..1]The date (and optionally time) when the value set was published. The date must change if and when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the value set changes. (e.g. the 'content logical definition')date : dateTime [0..1]The name of the individual or organization that published the value setpublisher : string [0..1]Contact details to assist a user in finding and communicating with the publishercontact : ContactDetail [0..*]A free text natural language description of the value set from a consumer's perspectivedescription : markdown [0..1]The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate value set instancesuseContext : UsageContext [0..*]A legal or geographic region in which the value set is intended to be usedjurisdiction : CodeableConcept [0..*] Countries and regions within which this artifact is targeted for use (Strength=Extensible)Jurisdiction ValueSet+ 'true', . : immutable : boolean [0..1]Explaination of why this value set is needed and why it has been designed as it haspurpose : markdown [0..1]A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value setcopyright : markdown [0..1] extensible : boolean [0..1]ComposeIf a locked date is defined, then the Content Logical Definition must be evaluated using the current version as of the locked date for referenced code system(s) and value set instances where ValueSet.compose.include.version is not definedlockedDate : date [0..1]Whether inactive codes - codes that are not approved for current use - are in the value set. If inactive = true, inactive codes are to be included in the expansion, if inactive = false, the inactive codes will not be included in the expansion. If absent, the behavior is determined by the implementation, or by the applicable ExpansionProfile (but generally, inactive codes would be expected to be included)inactive : boolean [0..1]ConceptSet URI, , system : uri [0..1] , version : string [0..1]Selects concepts found in this value set. This is an absolute URI that is a reference to ValueSet.urlvalueSet : uri [0..*]ConceptReference , code : code [1..1]The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the systemdisplay : string [0..1]Designation, language : code [0..1] . (Strength=Extensible)Common Languages+ , , use : Coding [0..1] , (Strength=Extensible)Designation Use+ The text value for this designationvalue : string [1..1]Filter, , property : code [1..1] , op : code [1..1] (Strength=Required)FilterOperator! , , , when the operation is 'regex', or one of the values (true and false), when the operation is 'exists'value : code [1..1]Expansion, . , , identifier : uri [1..1], timestamp : dateTime [1..1] . , , , offsettotal : integer [0..1] , , . . . . , offset : integer [0..1]Parameter name : string [1..1] value[x] : Type [0..1] string|boolean|integer|decimal|uri|code Contains URI , system : uri [0..1] true, , abstract : boolean [0..1]If the concept is inactive in the code system that defines it. Inactive codes are those that are no longer to be used, but are maintained by the code system for understanding legacy datainactive : boolean [0..1] , / . , version : string [0..1] . , ( ), code : code [0..1] display : string [0..1]Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etcdesignation[0..*]Specifies a concept to be included or excludedconcept[0..*] , ( ), . , true (this element modifies the meaning of other elements)filter[0..*]Include one or more codes from a code system or other value set(s)include[1..*]Exclude one or more codes from the value set based on code system filters and/or other value setsexclude[0..*]A set of criteria that define the content logical definition of the value set by including or excluding codes from outside this value set. This I also known as the "Content Logical Definition" (CLD)compose[0..1], . , , parameter[0..*]Additional representations for this item - other languages, aliases, specialized purposes, used for particular purposes, etc. These are relevant when the conditions of the expansion do not fix to a single correct representationdesignation[0..*] , contains[0..*], contains[0..*] , . , expansion[0..1]

XML-шаблон

<ValueSet xmlns="http://hl7.org/fhir"> doco
 <!-- 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 | unknown -->
 <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage -->
 <date value="[dateTime]"/><!-- 0..1 Date this was last changed -->
 <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) -->
 <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>
 <description value="[markdown]"/><!-- 0..1 Natural language description of the value set -->
 <useContext><!-- 0..* UsageContext Context the content is intended to support --></useContext>
 <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for value set (if applicable) --></jurisdiction>
 <immutable value="[boolean]"/><!-- 0..1 Указывает, может ли или нет произойти какое-либо изменение логического определения содержимого -->
 <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 Предназначено ли это для использования с расширяемой привязкой -->
 <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 Система, из которой взяты коды -->
   <version value="[string]"/><!-- 0..1 Конкретная версия вышеупомянутой кодовой системы -->
   <concept>  <!-- ?? 0..* Концепт, определенный в системе -->
    <code value="[code]"/><!-- 1..1 Код или выражение из системы -->
    <display value="[string]"/><!-- 0..1 Text to display for this code for this value set in this valueset -->
    <designation>  <!-- 0..* Additional representations for this concept -->
     <language value="[code]"/><!-- 0..1 Естественный язык обозначения -->
     <use><!-- 0..1 Coding Подробно описывает, как это обозначение будет использоваться --></use>
     <value value="[string]"/><!-- 1..1 The text value for this designation -->
    </designation>
   </concept>
   <filter>  <!-- ?? 0..* Выбор кодов/концептов по их свойствам (включая отношения) -->
    <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 Код из системы либо регулярное выражение, or boolean value for exists -->
   </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 Используется, когда набор значений "расширен" -->
  <identifier value="[uri]"/><!-- 1..1 Уникальным образом идентифицирует это разложение -->
  <timestamp value="[dateTime]"/><!-- 1..1 Время выполнения развёртки набора значений -->
  <total value="[integer]"/><!-- 0..1 Общее количество кодов в развёртке -->
  <offset value="[integer]"/><!-- 0..1 Смещение, относительно которого начинается этот ресурс -->
  <parameter>  <!-- 0..* Параметр, управлявший процессом разворачивания -->
   <name value="[string]"/><!-- 1..1 Имя, которое было назначено сервером -->
   <value[x]><!-- 0..1 string|boolean|integer|decimal|uri|code Значение именованного параметра --></value[x]>
  </parameter>
  <contains>  <!-- 0..* Коды в этом наборе значений -->
   <system value="[uri]"/><!-- 0..1 Значение системы для этого кода -->
   <abstract value="[boolean]"/><!-- 0..1 Если пользователь не может выбирать этот пункт -->
   <inactive value="[boolean]"/><!-- 0..1 If concept is inactive in the code system -->
   <version value="[string]"/><!-- 0..1 Версия, в которой определен этот код / значение для отображения -->
   <code value="[code]"/><!-- ?? 0..1 Код - если пустой, то его не возможно выбрать -->
   <display value="[string]"/><!-- ?? 0..1 Значение концепта для отображения пользователю -->
   <designation><!-- 0..* Content as for ValueSet.compose.include.concept.designation Additional representations for this item --></designation>
   <contains><!-- 0..* Content as for ValueSet.expansion.contains Коды, входящие в эту запись --></contains>
  </contains>
 </expansion>
</ValueSet>

JSON-шаблон

{doco
  "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 | unknown
  "experimental" : <boolean>, // For testing purposes, not real usage
  "date" : "<dateTime>", // Date this was last changed
  "publisher" : "<string>", // Name of the publisher (organization or individual)
  "contact" : [{ ContactDetail }], // Contact details for the publisher
  "description" : "<markdown>", // Natural language description of the value set
  "useContext" : [{ UsageContext }], // Context the content is intended to support
  "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for value set (if applicable)
  "immutable" : <boolean>, // Указывает, может ли или нет произойти какое-либо изменение логического определения содержимого
  "purpose" : "<markdown>", // Why this value set is defined
  "copyright" : "<markdown>", // Use and/or publishing restrictions
  "extensible" : <boolean>, // Предназначено ли это для использования с расширяемой привязкой
  "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? Система, из которой взяты коды
      "version" : "<string>", // Конкретная версия вышеупомянутой кодовой системы
      "concept" : [{ // C? Концепт, определенный в системе
        "code" : "<code>", // R!  Код или выражение из системы
        "display" : "<string>", // Text to display for this code for this value set in this valueset
        "designation" : [{ // Additional representations for this concept
          "language" : "<code>", // Естественный язык обозначения
          "use" : { Coding }, // Подробно описывает, как это обозначение будет использоваться
          "value" : "<string>" // R!  The text value for this designation
        }]
      }],
      "filter" : [{ // C? Выбор кодов/концептов по их свойствам (включая отношения)
        "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!  Код из системы либо регулярное выражение, or boolean value for exists
      }],
      "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? Используется, когда набор значений "расширен"
    "identifier" : "<uri>", // R!  Уникальным образом идентифицирует это разложение
    "timestamp" : "<dateTime>", // R!  Время выполнения развёртки набора значений
    "total" : <integer>, // Общее количество кодов в развёртке
    "offset" : <integer>, // Смещение, относительно которого начинается этот ресурс
    "parameter" : [{ // Параметр, управлявший процессом разворачивания
      "name" : "<string>", // R!  Имя, которое было назначено сервером
      // value[x]: Значение именованного параметра. One of these 6:
      "valueString" : "<string>"
      "valueBoolean" : <boolean>
      "valueInteger" : <integer>
      "valueDecimal" : <decimal>
      "valueUri" : "<uri>"
      "valueCode" : "<code>"
    }],
    "contains" : [{ // Коды в этом наборе значений
      "system" : "<uri>", // Значение системы для этого кода
      "abstract" : <boolean>, // Если пользователь не может выбирать этот пункт
      "inactive" : <boolean>, // If concept is inactive in the code system
      "version" : "<string>", // Версия, в которой определен этот код / значение для отображения
      "code" : "<code>", // C? Код - если пустой, то его не возможно выбрать
      "display" : "<string>", // C? Значение концепта для отображения пользователю
      "designation" : [{ Content as for ValueSet.compose.include.concept.designation }], // Additional representations for this item
      "contains" : [{ Content as for ValueSet.expansion.contains }] // Коды, входящие в эту запись
    }]
  }
}

Turtle-шаблон

@prefix fhir: <http://hl7.org/fhir/> .doco


[ 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 | unknown
  fhir:ValueSet.experimental [ boolean ]; # 0..1 For testing purposes, not real usage
  fhir:ValueSet.date [ dateTime ]; # 0..1 Date this was last changed
  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.description [ markdown ]; # 0..1 Natural language description of the value set
  fhir:ValueSet.useContext [ UsageContext ], ... ; # 0..* Context the content is intended to support
  fhir:ValueSet.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for value set (if applicable)
  fhir:ValueSet.immutable [ boolean ]; # 0..1 Указывает, может ли или нет произойти какое-либо изменение логического определения содержимого
  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 Предназначено ли это для использования с расширяемой привязкой
  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 Система, из которой взяты коды
      fhir:ValueSet.compose.include.version [ string ]; # 0..1 Конкретная версия вышеупомянутой кодовой системы
      fhir:ValueSet.compose.include.concept [ # 0..* Концепт, определенный в системе
        fhir:ValueSet.compose.include.concept.code [ code ]; # 1..1 Код или выражение из системы
        fhir:ValueSet.compose.include.concept.display [ string ]; # 0..1 Text to display for this code for this value set in this valueset
        fhir:ValueSet.compose.include.concept.designation [ # 0..* Additional representations for this concept
          fhir:ValueSet.compose.include.concept.designation.language [ code ]; # 0..1 Естественный язык обозначения
          fhir:ValueSet.compose.include.concept.designation.use [ Coding ]; # 0..1 Подробно описывает, как это обозначение будет использоваться
          fhir:ValueSet.compose.include.concept.designation.value [ string ]; # 1..1 The text value for this designation
        ], ...;
      ], ...;
      fhir:ValueSet.compose.include.filter [ # 0..* Выбор кодов/концептов по их свойствам (включая отношения)
        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 Код из системы либо регулярное выражение, or boolean value for exists
      ], ...;
      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 Используется, когда набор значений "расширен"
    fhir:ValueSet.expansion.identifier [ uri ]; # 1..1 Уникальным образом идентифицирует это разложение
    fhir:ValueSet.expansion.timestamp [ dateTime ]; # 1..1 Время выполнения развёртки набора значений
    fhir:ValueSet.expansion.total [ integer ]; # 0..1 Общее количество кодов в развёртке
    fhir:ValueSet.expansion.offset [ integer ]; # 0..1 Смещение, относительно которого начинается этот ресурс
    fhir:ValueSet.expansion.parameter [ # 0..* Параметр, управлявший процессом разворачивания
      fhir:ValueSet.expansion.parameter.name [ string ]; # 1..1 Имя, которое было назначено сервером
      # ValueSet.expansion.parameter.value[x] : 0..1 Значение именованного параметра. 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..* Коды в этом наборе значений
      fhir:ValueSet.expansion.contains.system [ uri ]; # 0..1 Значение системы для этого кода
      fhir:ValueSet.expansion.contains.abstract [ boolean ]; # 0..1 Если пользователь не может выбирать этот пункт
      fhir:ValueSet.expansion.contains.inactive [ boolean ]; # 0..1 If concept is inactive in the code system
      fhir:ValueSet.expansion.contains.version [ string ]; # 0..1 Версия, в которой определен этот код / значение для отображения
      fhir:ValueSet.expansion.contains.code [ code ]; # 0..1 Код - если пустой, то его не возможно выбрать
      fhir:ValueSet.expansion.contains.display [ string ]; # 0..1 Значение концепта для отображения пользователю
      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..* Коды, входящие в эту запись
    ], ...;
  ];
]

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 Renamed from requirements to purpose
Type changed from string to markdown
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 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.codeSystem deleted
ValueSet.compose.import deleted

See the Full Difference for further information

See R2 <--> R3 Conversion Maps (status = 11 tests that all execute ok. 5 fail round-trip testing and 4 r3 resources are invalid (4 errors).).

Структура

ИмяФлагиКард.ТипОписание и ограниченияdoco
.. ValueSet IDomainResourceНабор кодов, взятых из одной или нескольких кодовых систем
+ Набор значений ДОЛЖЕН содержать по крайней мере один из элементов codeSystem, compose или expansion
Элементы, определённые в прародителе: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... url Σ0..1uriLogical URI to reference this value set (globally unique)
... identifier Σ0..*IdentifierAdditional identifier for the value set
... version Σ0..1stringBusiness version of the value set
... name Σ0..1stringName for this value set (computer friendly)
... title Σ0..1stringName for this value set (human friendly)
... status ?!Σ1..1codedraft | active | retired | unknown
PublicationStatus (Required)
... experimental ?!Σ0..1booleanFor testing purposes, not real usage
... date Σ0..1dateTimeDate this was last changed
... publisher Σ0..1stringName of the publisher (organization or individual)
... contact Σ0..*ContactDetailContact details for the publisher
... description 0..1markdownNatural language description of the value set
... useContext Σ0..*UsageContextContext the content is intended to support
... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for value set (if applicable)
Jurisdiction ValueSet (Extensible)
... immutable Σ0..1booleanУказывает, может ли или нет произойти какое-либо изменение логического определения содержимого
... purpose 0..1markdownWhy this value set is defined
... copyright 0..1markdownUse and/or publishing restrictions
... extensible Σ0..1booleanПредназначено ли это для использования с расширяемой привязкой
... compose I0..1BackboneElementDefinition of the content of the value set (CLD)
.... lockedDate Σ0..1dateFixed date for version-less references (transitive)
.... inactive Σ0..1booleanWhether inactive codes are in the value set
.... include ΣI1..*BackboneElementInclude one or more codes from a code system or other value set(s)
+ A value set with concepts or filters SHALL include a system
+ Не может иметь одновременно элементы concept и filter
+ A value set include/exclude SHALL have a value set or a system
..... system ΣI0..1uriСистема, из которой взяты коды
..... version Σ0..1stringКонкретная версия вышеупомянутой кодовой системы
..... concept I0..*BackboneElementКонцепт, определенный в системе
...... code 1..1codeКод или выражение из системы
...... display 0..1stringText to display for this code for this value set in this valueset
...... designation 0..*BackboneElementAdditional representations for this concept
....... language 0..1codeЕстественный язык обозначения
Common Languages (Extensible but limited to All Languages)
....... use 0..1CodingПодробно описывает, как это обозначение будет использоваться
Designation Use (Extensible)
....... value 1..1stringThe text value for this designation
..... filter ?!ΣI0..*BackboneElementВыбор кодов/концептов по их свойствам (включая отношения)
...... property Σ1..1codeA property defined by the code system
...... op Σ1..1code= | is-a | descendent-of | is-not-a | regex | in | not-in | generalizes | exists
FilterOperator (Required)
...... value Σ1..1codeКод из системы либо регулярное выражение, or boolean value for exists
..... valueSet ΣI0..*uriSelect only contents included in this value set
.... exclude I0..*see includeExplicitly exclude codes from a code system or other value sets
... expansion I0..1BackboneElementИспользуется, когда набор значений "расширен"
.... identifier 1..1uriУникальным образом идентифицирует это разложение
.... timestamp 1..1dateTimeВремя выполнения развёртки набора значений
.... total 0..1integerОбщее количество кодов в развёртке
.... offset 0..1integerСмещение, относительно которого начинается этот ресурс
.... parameter 0..*BackboneElementПараметр, управлявший процессом разворачивания
..... name 1..1stringИмя, которое было назначено сервером
..... value[x] 0..1Значение именованного параметра
...... valueStringstring
...... valueBooleanboolean
...... valueIntegerinteger
...... valueDecimaldecimal
...... valueUriuri
...... valueCodecode
.... contains I0..*BackboneElementКоды в этом наборе значений
+ Должен иметь элемент code или display
+ Должен иметь код, если не абстрактный
+ Должен иметь систему, если код указан
..... system 0..1uriЗначение системы для этого кода
..... abstract 0..1booleanЕсли пользователь не может выбирать этот пункт
..... inactive 0..1booleanIf concept is inactive in the code system
..... version 0..1stringВерсия, в которой определен этот код / значение для отображения
..... code I0..1codeКод - если пустой, то его не возможно выбрать
..... display I0..1stringЗначение концепта для отображения пользователю
..... designation 0..*see designationAdditional representations for this item
..... contains 0..*see containsКоды, входящие в эту запись

doco Документация по этому формату

UML-диаграмма (Legend)

ValueSet (DomainResource)An absolute URI that is used to identify this value set when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this value set is (or will be) published. The URL SHOULD include the major version of the value set. For more information see [Technical and Business Versions](resource.html#versions)url : uri [0..1]A formal identifier that is used to identify this value set when it is represented in other formats, or referenced in a specification, model, design or an instanceidentifier : Identifier [0..*]The identifier that is used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the value set author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequenceversion : string [0..1]A natural language name identifying the value set. This name should be usable as an identifier for the module by machine processing applications such as code generationname : string [0..1]A short, descriptive, user-friendly title for the value settitle : string [0..1]The status of this value set. Enables tracking the life-cycle of the content (this element modifies the meaning of other elements)status : code [1..1] The lifecycle status of a Value Set or Concept Map. (Strength=Required)PublicationStatus! A boolean value to indicate that this value set is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage (this element modifies the meaning of other elements)experimental : boolean [0..1]The date (and optionally time) when the value set was published. The date must change if and when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the value set changes. (e.g. the 'content logical definition')date : dateTime [0..1]The name of the individual or organization that published the value setpublisher : string [0..1]Contact details to assist a user in finding and communicating with the publishercontact : ContactDetail [0..*]A free text natural language description of the value set from a consumer's perspectivedescription : markdown [0..1]The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate value set instancesuseContext : UsageContext [0..*]A legal or geographic region in which the value set is intended to be usedjurisdiction : CodeableConcept [0..*] Countries and regions within which this artifact is targeted for use (Strength=Extensible)Jurisdiction ValueSet+ 'true', . : immutable : boolean [0..1]Explaination of why this value set is needed and why it has been designed as it haspurpose : markdown [0..1]A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value setcopyright : markdown [0..1] extensible : boolean [0..1]ComposeIf a locked date is defined, then the Content Logical Definition must be evaluated using the current version as of the locked date for referenced code system(s) and value set instances where ValueSet.compose.include.version is not definedlockedDate : date [0..1]Whether inactive codes - codes that are not approved for current use - are in the value set. If inactive = true, inactive codes are to be included in the expansion, if inactive = false, the inactive codes will not be included in the expansion. If absent, the behavior is determined by the implementation, or by the applicable ExpansionProfile (but generally, inactive codes would be expected to be included)inactive : boolean [0..1]ConceptSet URI, , system : uri [0..1] , version : string [0..1]Selects concepts found in this value set. This is an absolute URI that is a reference to ValueSet.urlvalueSet : uri [0..*]ConceptReference , code : code [1..1]The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the systemdisplay : string [0..1]Designation, language : code [0..1] . (Strength=Extensible)Common Languages+ , , use : Coding [0..1] , (Strength=Extensible)Designation Use+ The text value for this designationvalue : string [1..1]Filter, , property : code [1..1] , op : code [1..1] (Strength=Required)FilterOperator! , , , when the operation is 'regex', or one of the values (true and false), when the operation is 'exists'value : code [1..1]Expansion, . , , identifier : uri [1..1], timestamp : dateTime [1..1] . , , , offsettotal : integer [0..1] , , . . . . , offset : integer [0..1]Parameter name : string [1..1] value[x] : Type [0..1] string|boolean|integer|decimal|uri|code Contains URI , system : uri [0..1] true, , abstract : boolean [0..1]If the concept is inactive in the code system that defines it. Inactive codes are those that are no longer to be used, but are maintained by the code system for understanding legacy datainactive : boolean [0..1] , / . , version : string [0..1] . , ( ), code : code [0..1] display : string [0..1]Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etcdesignation[0..*]Specifies a concept to be included or excludedconcept[0..*] , ( ), . , true (this element modifies the meaning of other elements)filter[0..*]Include one or more codes from a code system or other value set(s)include[1..*]Exclude one or more codes from the value set based on code system filters and/or other value setsexclude[0..*]A set of criteria that define the content logical definition of the value set by including or excluding codes from outside this value set. This I also known as the "Content Logical Definition" (CLD)compose[0..1], . , , parameter[0..*]Additional representations for this item - other languages, aliases, specialized purposes, used for particular purposes, etc. These are relevant when the conditions of the expansion do not fix to a single correct representationdesignation[0..*] , contains[0..*], contains[0..*] , . , expansion[0..1]

XML-шаблон

<ValueSet xmlns="http://hl7.org/fhir"> doco
 <!-- 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 | unknown -->
 <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage -->
 <date value="[dateTime]"/><!-- 0..1 Date this was last changed -->
 <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) -->
 <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>
 <description value="[markdown]"/><!-- 0..1 Natural language description of the value set -->
 <useContext><!-- 0..* UsageContext Context the content is intended to support --></useContext>
 <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for value set (if applicable) --></jurisdiction>
 <immutable value="[boolean]"/><!-- 0..1 Указывает, может ли или нет произойти какое-либо изменение логического определения содержимого -->
 <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 Предназначено ли это для использования с расширяемой привязкой -->
 <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 Система, из которой взяты коды -->
   <version value="[string]"/><!-- 0..1 Конкретная версия вышеупомянутой кодовой системы -->
   <concept>  <!-- ?? 0..* Концепт, определенный в системе -->
    <code value="[code]"/><!-- 1..1 Код или выражение из системы -->
    <display value="[string]"/><!-- 0..1 Text to display for this code for this value set in this valueset -->
    <designation>  <!-- 0..* Additional representations for this concept -->
     <language value="[code]"/><!-- 0..1 Естественный язык обозначения -->
     <use><!-- 0..1 Coding Подробно описывает, как это обозначение будет использоваться --></use>
     <value value="[string]"/><!-- 1..1 The text value for this designation -->
    </designation>
   </concept>
   <filter>  <!-- ?? 0..* Выбор кодов/концептов по их свойствам (включая отношения) -->
    <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 Код из системы либо регулярное выражение, or boolean value for exists -->
   </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 Используется, когда набор значений "расширен" -->
  <identifier value="[uri]"/><!-- 1..1 Уникальным образом идентифицирует это разложение -->
  <timestamp value="[dateTime]"/><!-- 1..1 Время выполнения развёртки набора значений -->
  <total value="[integer]"/><!-- 0..1 Общее количество кодов в развёртке -->
  <offset value="[integer]"/><!-- 0..1 Смещение, относительно которого начинается этот ресурс -->
  <parameter>  <!-- 0..* Параметр, управлявший процессом разворачивания -->
   <name value="[string]"/><!-- 1..1 Имя, которое было назначено сервером -->
   <value[x]><!-- 0..1 string|boolean|integer|decimal|uri|code Значение именованного параметра --></value[x]>
  </parameter>
  <contains>  <!-- 0..* Коды в этом наборе значений -->
   <system value="[uri]"/><!-- 0..1 Значение системы для этого кода -->
   <abstract value="[boolean]"/><!-- 0..1 Если пользователь не может выбирать этот пункт -->
   <inactive value="[boolean]"/><!-- 0..1 If concept is inactive in the code system -->
   <version value="[string]"/><!-- 0..1 Версия, в которой определен этот код / значение для отображения -->
   <code value="[code]"/><!-- ?? 0..1 Код - если пустой, то его не возможно выбрать -->
   <display value="[string]"/><!-- ?? 0..1 Значение концепта для отображения пользователю -->
   <designation><!-- 0..* Content as for ValueSet.compose.include.concept.designation Additional representations for this item --></designation>
   <contains><!-- 0..* Content as for ValueSet.expansion.contains Коды, входящие в эту запись --></contains>
  </contains>
 </expansion>
</ValueSet>

JSON-шаблон

{doco
  "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 | unknown
  "experimental" : <boolean>, // For testing purposes, not real usage
  "date" : "<dateTime>", // Date this was last changed
  "publisher" : "<string>", // Name of the publisher (organization or individual)
  "contact" : [{ ContactDetail }], // Contact details for the publisher
  "description" : "<markdown>", // Natural language description of the value set
  "useContext" : [{ UsageContext }], // Context the content is intended to support
  "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for value set (if applicable)
  "immutable" : <boolean>, // Указывает, может ли или нет произойти какое-либо изменение логического определения содержимого
  "purpose" : "<markdown>", // Why this value set is defined
  "copyright" : "<markdown>", // Use and/or publishing restrictions
  "extensible" : <boolean>, // Предназначено ли это для использования с расширяемой привязкой
  "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? Система, из которой взяты коды
      "version" : "<string>", // Конкретная версия вышеупомянутой кодовой системы
      "concept" : [{ // C? Концепт, определенный в системе
        "code" : "<code>", // R!  Код или выражение из системы
        "display" : "<string>", // Text to display for this code for this value set in this valueset
        "designation" : [{ // Additional representations for this concept
          "language" : "<code>", // Естественный язык обозначения
          "use" : { Coding }, // Подробно описывает, как это обозначение будет использоваться
          "value" : "<string>" // R!  The text value for this designation
        }]
      }],
      "filter" : [{ // C? Выбор кодов/концептов по их свойствам (включая отношения)
        "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!  Код из системы либо регулярное выражение, or boolean value for exists
      }],
      "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? Используется, когда набор значений "расширен"
    "identifier" : "<uri>", // R!  Уникальным образом идентифицирует это разложение
    "timestamp" : "<dateTime>", // R!  Время выполнения развёртки набора значений
    "total" : <integer>, // Общее количество кодов в развёртке
    "offset" : <integer>, // Смещение, относительно которого начинается этот ресурс
    "parameter" : [{ // Параметр, управлявший процессом разворачивания
      "name" : "<string>", // R!  Имя, которое было назначено сервером
      // value[x]: Значение именованного параметра. One of these 6:
      "valueString" : "<string>"
      "valueBoolean" : <boolean>
      "valueInteger" : <integer>
      "valueDecimal" : <decimal>
      "valueUri" : "<uri>"
      "valueCode" : "<code>"
    }],
    "contains" : [{ // Коды в этом наборе значений
      "system" : "<uri>", // Значение системы для этого кода
      "abstract" : <boolean>, // Если пользователь не может выбирать этот пункт
      "inactive" : <boolean>, // If concept is inactive in the code system
      "version" : "<string>", // Версия, в которой определен этот код / значение для отображения
      "code" : "<code>", // C? Код - если пустой, то его не возможно выбрать
      "display" : "<string>", // C? Значение концепта для отображения пользователю
      "designation" : [{ Content as for ValueSet.compose.include.concept.designation }], // Additional representations for this item
      "contains" : [{ Content as for ValueSet.expansion.contains }] // Коды, входящие в эту запись
    }]
  }
}

Turtle-шаблон

@prefix fhir: <http://hl7.org/fhir/> .doco


[ 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 | unknown
  fhir:ValueSet.experimental [ boolean ]; # 0..1 For testing purposes, not real usage
  fhir:ValueSet.date [ dateTime ]; # 0..1 Date this was last changed
  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.description [ markdown ]; # 0..1 Natural language description of the value set
  fhir:ValueSet.useContext [ UsageContext ], ... ; # 0..* Context the content is intended to support
  fhir:ValueSet.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for value set (if applicable)
  fhir:ValueSet.immutable [ boolean ]; # 0..1 Указывает, может ли или нет произойти какое-либо изменение логического определения содержимого
  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 Предназначено ли это для использования с расширяемой привязкой
  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 Система, из которой взяты коды
      fhir:ValueSet.compose.include.version [ string ]; # 0..1 Конкретная версия вышеупомянутой кодовой системы
      fhir:ValueSet.compose.include.concept [ # 0..* Концепт, определенный в системе
        fhir:ValueSet.compose.include.concept.code [ code ]; # 1..1 Код или выражение из системы
        fhir:ValueSet.compose.include.concept.display [ string ]; # 0..1 Text to display for this code for this value set in this valueset
        fhir:ValueSet.compose.include.concept.designation [ # 0..* Additional representations for this concept
          fhir:ValueSet.compose.include.concept.designation.language [ code ]; # 0..1 Естественный язык обозначения
          fhir:ValueSet.compose.include.concept.designation.use [ Coding ]; # 0..1 Подробно описывает, как это обозначение будет использоваться
          fhir:ValueSet.compose.include.concept.designation.value [ string ]; # 1..1 The text value for this designation
        ], ...;
      ], ...;
      fhir:ValueSet.compose.include.filter [ # 0..* Выбор кодов/концептов по их свойствам (включая отношения)
        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 Код из системы либо регулярное выражение, or boolean value for exists
      ], ...;
      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 Используется, когда набор значений "расширен"
    fhir:ValueSet.expansion.identifier [ uri ]; # 1..1 Уникальным образом идентифицирует это разложение
    fhir:ValueSet.expansion.timestamp [ dateTime ]; # 1..1 Время выполнения развёртки набора значений
    fhir:ValueSet.expansion.total [ integer ]; # 0..1 Общее количество кодов в развёртке
    fhir:ValueSet.expansion.offset [ integer ]; # 0..1 Смещение, относительно которого начинается этот ресурс
    fhir:ValueSet.expansion.parameter [ # 0..* Параметр, управлявший процессом разворачивания
      fhir:ValueSet.expansion.parameter.name [ string ]; # 1..1 Имя, которое было назначено сервером
      # ValueSet.expansion.parameter.value[x] : 0..1 Значение именованного параметра. 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..* Коды в этом наборе значений
      fhir:ValueSet.expansion.contains.system [ uri ]; # 0..1 Значение системы для этого кода
      fhir:ValueSet.expansion.contains.abstract [ boolean ]; # 0..1 Если пользователь не может выбирать этот пункт
      fhir:ValueSet.expansion.contains.inactive [ boolean ]; # 0..1 If concept is inactive in the code system
      fhir:ValueSet.expansion.contains.version [ string ]; # 0..1 Версия, в которой определен этот код / значение для отображения
      fhir:ValueSet.expansion.contains.code [ code ]; # 0..1 Код - если пустой, то его не возможно выбрать
      fhir:ValueSet.expansion.contains.display [ string ]; # 0..1 Значение концепта для отображения пользователю
      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..* Коды, входящие в эту запись
    ], ...;
  ];
]

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 Renamed from requirements to purpose
Type changed from string to markdown
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 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.codeSystem deleted
ValueSet.compose.import deleted

See the Full Difference for further information

See R2 <--> R3 Conversion Maps (status = 11 tests that all execute ok. 5 fail round-trip testing and 4 r3 resources are invalid (4 errors).).

 

Альтернативные определения: Основное определение (XML, JSON), XML Schema/Schematron (for ) + JSON Schema, ShEx (for Turtle)

ПутьОписаниеТипСсылка
ValueSet.status The lifecycle status of a Value Set or Concept Map.RequiredPublicationStatus
ValueSet.jurisdiction Countries and regions within which this artifact is targeted for useExtensibleJurisdiction ValueSet
ValueSet.compose.include.concept.designation.language Естественный язык.Extensible, but limited to All LanguagesCommon Languages
ValueSet.compose.include.concept.designation.use Описание того, как обозначение будет использоватьсяExtensibleDesignation Use
ValueSet.compose.include.filter.op Вид операции для совершения в рамках фильтра на основе свойстваRequiredFilterOperator

  • vsd-1: On ValueSet.compose.include: A value set include/exclude SHALL have a value set or a system (expression on ValueSet.compose.include: valueSet.exists() or system.exists())
  • vsd-10: On ValueSet.expansion.contains: Должен иметь систему, если код указан (expression on ValueSet.expansion.contains: code.empty() or system.exists())
  • vsd-2: On ValueSet.compose.include: A value set with concepts or filters SHALL include a system (expression on ValueSet.compose.include: (concept.exists() or filter.exists()) implies system.exists())
  • vsd-3: On ValueSet.compose.include: Не может иметь одновременно элементы concept и filter (expression on ValueSet.compose.include: concept.empty() or filter.empty())
  • vsd-5: Набор значений ДОЛЖЕН содержать по крайней мере один из элементов codeSystem, compose или expansion (expression : compose.exists() or expansion.exists())
  • vsd-6: On ValueSet.expansion.contains: Должен иметь элемент code или display (expression on ValueSet.expansion.contains: code.exists() or display.exists())
  • vsd-9: On ValueSet.expansion.contains: Должен иметь код, если не абстрактный (expression on ValueSet.expansion.contains: code.exists() or abstract = true)

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:

  • Multiple include statements are cumulative - e.g. the value set contains the union of all the includes
  • Within an include, all the criterion apply -e.g. the value set contains the intersection of the criterion
  • Within an include, 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 sets
    • System 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 sets
  • If a system is specified, the following rules apply:
    • no concept or filter: All codes in the system are included
    • concept: Only the enumerated codes are selected
    • filter: Any codes meeting the filter criteria are selected
  • If the system reference is not version specific and filters are present, then the contents of the value set are open and change over time as the underlying code systems are updated
  • Using the property filters is only possible where the code system in use defines the relevant properties. Note that in some cases the underlying code system defines the logical concepts but not the syntax for exercising them. In such cases, the literal definitions may be provided by a third party
  • In addition to include rules, codes may be excluded. Rules for interpretation of exclude statements match those for includes, but codes in the exlude statements are never in the value set
  • Value sets may include abstract codes - that is, codes designated by the underlying code system as not for use as a selectable concept in a particular context. These abstract codes are typically used as a grouping/searching mechanism, and can be included either by enumerating them, or by using a filter.

When 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:

  • The system that defines the code or expression doesn't provide a display for this code (or any codes).
  • The system that defines the code or expression defines multiple choices for display.
  • The system provides a very long display name that is unnecessary or inappropriate in the context of this value set (e.g. a display name of "Glucose [Mass/volume] in Serum or Plasma --10 PM specimen" for LOINC code 48991-4, when the value set only includes Glucose mass/vol in serum/plasma codes). As the display names get longer, this becomes more important.

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:

  • If the value set already has an expansion (e.g., a stored expansion), simply take the existing expansion as it is. If not, then:
  • For each compose.include:
    1. If there is a system, identify the correct version of the code system, and then:
      • If there are no codes or filters, add every code in the code system to the result set.
      • If codes are listed, check that they are valid, and check their active status, and if ok, add them to the result set (the profile parameter to the $expand operation may be used to control whether active codes are included).
      • If any filters are present, process them in order (as explained above), and add the intersection of their results to the result set.
    2. For each 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.
    3. Add the intersection of the result set from the system and the result sets from the value sets to the expansion
  • For each compose.exclude, follow the same process as for compose.include, but remove any codes from the result set, instead of adding them.

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 hierarchy, 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 CodeSystem resource and ValueSet.compose offer no support for defining hierarchies and groups, 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.

It is important that expansions be identified properly. Any value set definition may produce an infinite number of expansions, depending on the expansion profile and $expand operation parameters. Any expansions produced must be clearly identified so that there is no confusion. The following rules apply:

  • The canonical URL for the expansion is the same as the value set it was expanded from
  • Each expansion SHALL have a unique identifier in ValueSet.expansion.identifier
  • The result of an $expand operation may use the same identifier in ValueSet.expansion.identifier as a previous expansion, but if it does, the canonical representation of the value set expansion SHALL be identical (e.g. a cached response)

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). If expansions are shared, users need to be aware of how expansion identifiers (which may be server specific) work.

Параметры поиска для этого ресурса. Также к нему применяются общие параметры. Более подробную информацию о поиске в REST, обмене сообщениями и сервисах см. в разделе Поиск.

ИмяТипОписаниеВыражениеIn Common
datedateThe value set publication dateValueSet.date
descriptionstringThe description of the value setValueSet.description
expansionuriУникальным образом идентифицирует это разложениеValueSet.expansion.identifier
identifiertokenExternal identifier for the value setValueSet.identifier
jurisdictiontokenIntended jurisdiction for the value setValueSet.jurisdiction
namestringComputationally friendly name of the value setValueSet.name
publisherstringName of the publisher of the value setValueSet.publisher
referenceuriКодовая система, включенная или исключенная из этого набора значений, или импортированный набор значенийValueSet.compose.include.system
statustokenThe current status of the value setValueSet.status
titlestringThe human-friendly name of the value setValueSet.title
urluriThe uri that identifies the value setValueSet.url
versiontokenThe business version of the value setValueSet.version