Current Build

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

2.28.0 Элемент

FHIR Infrastructure Work GroupMaturity Level: 5Ballot Status: Normative

Normative Candidate Note: This page is candidate normative content for R4 in the Infrastructure Package. Once normative, it will lose it's Maturity Level, and breaking changes will no longer be made.

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

Есть 3 типа-потомка Element:

  • Примитивные типы данных, которые добавляют свойство примитивного значения указанного типа
  • Комплексные типы данных, которые добавляют своих собственных потомков (которые также являются элементами)
  • BackboneElement, специализация, которая добавляет modifierExtension, являющийся супертипом всех типов элементов, заданных в определениях ресурсов (например Patient.contact)

Обратите внимание, что сами ресурсы наследуют базовый тип Resource.

Структура

NameFlagsCard.TypeDescription & Constraintsdoco
.. ElementIn/aBase for all elements
All FHIR elements must have a @value or children
... id0..1stringxml:id (or equivalent in JSON)
... extension0..*ExtensionAdditional content defined by implementations

doco Documentation for this format

XML Template

<[name] xmlns="http://hl7.org/fhir" id="Internal id (e.g. like xml:id) (string)"> doco
 <extension><!-- 0..* Extension Additional content defined by implementations --></extension>
</[name]>

JSON Template

// complex types:

{doco
  "id" : "<string>", // Internal Id
  "extension" : [{//  Additional content defined by implementations
    // from Element: extension (recursive)
    "url" : "<uri>", // R!  определяет смысловое значение расширения
    "value[x]" : <*> // identifies the meaning of the extension
  }]
}
// primitive types:

{doco
  "{name}" : "value",  // The primitive value
  "{name}_" : { // Special syntax for the id and extensions
    "id" : "<string>", // Internal Id
    "extension" : [{//  Дополнительное содержимое, определенное реализаторами
      // from Element: extension (recursive)
      "url" : "<uri>", // R!  определяет смысловое значение расширения
      "value[x]" : <*> // определяет смысловое значение расширения
    }]
  }
}

Структура

ИмяФлагиКард.ТипОписание и ограничивающие условияdoco
.. ЭлементIЭлементБаза для всех элементов
Все FHIR-элементы должны иметь @value или элементы-потомки
... id0..1stringxml:id (or equivalent in JSON)
... extension0..*ExtensionДополнительное содержимое, определенное реализаторами

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

XML-шаблон

<[name] xmlns="http://hl7.org/fhir" id="Внутренний ID (например xml:id) (string)"> doco
 <extension><!-- 0..* Extension Дополнительное содержимое, определенное реализаторами --></extension>
</[name]>

JSON-шаблон

// complex types:

{doco
  "id" : "<string>", // Внутренний Id
  "extension" : [{//  Дополнительное содержимое, определенное реализаторами
    // from Element: extension (recursive)
    "url" : "<uri>", // R!  определяет смысловое значение расширения
    "value[x]" : <*> // определяет смысловое значение расширения
  }]
}
// primitive types:
    
{doco
  "{name}" : "value",  // The primitive value
  "{name}_" : { // Особый синтаксис для ID и расширений  
    "id" : "<string>", // Internal Id
    "extension" : [{//  Дополнительное содержимое, определенное реализаторами
      // from Element: extension (recursive)
      "url" : "<uri>", // R!  определяет смысловое значение расширения
      "value[x]" : <*> // определяет смысловое значение расширения
    }]
  }
}

 

Ограничения

idLevelLocationОпределениеExpression
ele-1Rule (base)All FHIR elements must have a @value or childrenhasValue() or (children().count() > id.count())

Это ограничение введено для снижения синтаксической вариации в содержимом ресурсов. Если у элемента нет потомков, то он будет опущен в ресурсе, в отличие от опционального присутствия без всякого содержимого.

Element - базовый тип всех элементов, входящих в ресурс, является важным структурным элементом в FHIR. Даже примитивные типы наследуют основные характеристики и правила представления, применяемые к типу Element.

Элементы описываются с помощью XML-элемента. Имя элемента берется из контекста, в котором оно используется, а не из типа. Внутренний id представляется атрибутом (аналогично xml:id, но см. ниже про область действия). Расширения представляют с помощью XML-элементов. Вот пример представления элемента 'use' типа данных Coding:

  <use id="[internal id]">
    <extension url="..."/>
      ... if there are any extensions
    <extension>
    .. elements of Coding type...
  </use>

Примитивные типы имеют такое же представление; фактическое примитивное значение появляется в виде XML-атрибута value в XML-элементе. Например свойство "name" будет представлено так:

  <status id="[internal id]" value="[value of code]"">
    <extension url="..."/>
      ... if there are any extensions
    <extension>
  </status>

Элементы (за исключением примитивных типов, см. ниже) представлены свойством JSON-объекта. Имя свойства идет из контекста, в котором оно используется, а не из типа. Внутренний id представляется в виде JSON-свойства с именем "id". Расширения представляют с помощью JSON-массива объекта с именем "extension". Вот пример представления свойства 'use' типа данных Coding:

  {
    "use" : {
      "id" : "[internal id]",
      "extension" : [
        ..extensions, if present...
      ],
      .. properties of Coding type...
    }
  }

Примитивные типы представлены по-разному; фактическое примитивное значение появляется в виде JSON-строки или порядкового номера. Если есть внутренние идентификаторы или расширения, они появляются в виде JSON-объекта с именем свойства примитивного значения с добавлением впереди символа "_". Например свойство "status" типа данных code будет представлено следующим образом:

  {
    "status" : "[value of code]",
    "_status" : {
      "id" : "[internal id]",
      "extension" : [
        ..extensions, if present...
      ]
    }
  }

Использование этого шаблона описано здесь.

Свойство элемента id задаётся, чтобы позволить реализаторами создавать функциональность, которая использует внутренние ссылки в ресурсе. Данная спецификация никаким образом не использует внутренний идентификатор на этом элементе.

Внутренний идентификатор является уникальным в пределах ресурса, который его содержит. В частности, это означает:

  • Этот идентификатор ДОЛЖЕН быть уникальным в пределах данного ресурса
  • область действия требования уникальности распространяется и на вложенные ресурсы, т. е. вложенный ресурс не может иметь такой же идентификатор, как любой из элементов в ресурсе, который его содержит, или в любых других вложенных ресурсах
  • требования к уникальности различны для Bundle.entry.resource и Parameters.parameter.resource, поскольку это элементы, которые обобщают различные ресурсы
  • The id element does not have extensions itself

Выполнение этих правил гарантируют, что не возникнет необходимость в изменении внутренних идентификаторов при обмене ресурсами.