Current Build

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

FHIR Infrastructure Work GroupMaturity Level: 3Ballot 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.

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

Каждое расширение в ресурсе ссылается непосредственно на свое определение, которое доступно в виде StructureDefinition. Ресурс можно профилировать для указания, где в нем используются конкретные расширения.

При любом обмене ресурсами, содержащими расширения, определения этих расширений ДОЛЖНЫ быть доступны для всех сторон-участников совместного использования этих ресурсов. Каждое расширение содержит URI, который ссылается на источник определений как на StructureDefinition. Этот источник ДОЛЖЕН быть буквальной ссылкой, например http: URL, которая ведет на точку взаимодействия, которая возвращает содержимое этих определений - предпочтительно FHIR RESTful сервер, поддерживающий профили ресурсов StructureDefinition, либо логической ссылкой (например используя urn:) - к примеру, на государственный опубликованный стандарт. Расширения могут определяться любым проектом или юрисдикцией, вплоть до международных организаций по разработке стандартов, как сам HL7.

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

См. также Best Practice Guidance for defining extensions .

Элементы главным образом являются частью FHIR ресурсов и типов данных на основании текущих мировых практик использования. Используется политика, что если существенное большинство систем по всему миру, которые будут использовать ресурс или тип данных будут использовать элемент, тогда этот элемент будет включен в ресурс/тип данных. Если нет, его можно будет реализовать через расширение. Это справедливо даже в случае очень распространенных элементов или даже обязательных элементов в одной-двух конкретных юрисдикциях/странах.

Предложения , предлагающие новый основной элемент, могут быть созданы любым. (Требуется бесплатная регистрация). Однако учитывая timelines новых FHIR релизов наряду с неопределенностями, связанными с процессом проверки спецификации через процесс голосования, все еще может быть необходимо определять расширения даже для элементов, которые очень вероятно будут поддержаны спецификацией в будущих релизах.

Расширения всегда определяются в каком-то конкретном контексте - какие элементы они могут расширять. Далее перечислены 3 способа определения, в каких элементах может быть расширение:

КодТип контекстаФормат контекстаПримеры
fhirpath FHIRPath-выражение для выбора набора элементов, на которых может появиться это расширение FHIRPath-выражение всегда начинается от корня ресурса, который может содержать этот элемент Condition
(Condition | Observation).code
element Официальный Element Id этого элемента Идентификаторы элемента уникальны в пределах спецификации и структурного определения. Полны путь до элемента будет таким: [url]#[elementid]. Если знака "#" нет, значит id элемента тот, что определен в основной спецификации. Address.part.value
http://hl7.org/fhir/StructureDefinition/resprate#Observation.category:vscat.coding
extension Другое расширение Каноничный URL расширения, за которым необязательно идёт #code расширения, которое входит в состав комплексного расширения http://hl7.org/fhir/StructureDefinition/device-din

Расширения ДОЛЖЫН использоваться только на цели, которая перечислена в их списке контекстов.

Ограничения кардинального числа, утвержденные самим определением расширения, применяются ко всем контекстам, где используется это расширение.

Минимальное кардинальное число

Если минимальное кардинальное число равно 0, тогда это расширение является необязательным, где бы оно ни появлялось. Профиль, определяющий использование расширения, может установить минимальное кардинальное число в любое число вплоть до значения максимального кардинального числа самого расширения. Пример: Patient birthplace.

Если минимальное кардинальное число равно 1, тогда это расширение должно иметь минимальное кардинальное число по крайней мере равное этому минимальному кардинальному числу в любом из профилей, который определяет применение этого расширения. Минимальное кардинальное число может быть любым числом вплоть до значения максимального кардинального числа этого расширения. Даже с минимальным кардинальным числом 0 такое расширение должно будет присутствовать только в экземплярах, если эти экземпляры явно или неявно соответствуют профилю, который определяет использование этого расширения. Пример: CapabilityStatement Expectation.

Максимальное кардинальное число

Если максимальное кардинальное число расширения равно 1, тогда это расширение разрешается только один раз в любом элементе, где оно может появиться. Профиль, предписывающие использование расширения, может устанавливать макс. кард. число 1 (или 0, если мин. кард. число равно 0, и профиль ограничивает другой профиль, который разрешает это расширение). Пример: Mother's Maiden Name.

Если макс. кард. число расширения равно 1, тогда это расширение разрешается указывать вплоть до указанного количества раз на любом элементе, где оно может появиться. Профиль, предписывающий использование расширения может устанавливать макс. кард. число в любое значение вплоть до указанного максимума. Пример: Patient Disability.

Инварианты контекста

Расширения также могут определять инварианты контекста, это правило, которое выполняется на элементе, который содержит расширение, когда оно присутствует, для проверки, что локальные требования к кард. числу и другие бизнес-правила выполняются.

Например, если вы используете расширение для указания номера дома, элемент Address.line также необходимо заполнять:

  <contextInvariant value="line.exists()"/>

Отметьте, что поскольку инвариант контекста вычисляется только когда расширение присутствует, существует неявное "line.extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName').exists() implies" в начале выражения. Инвариант контекста, который проверяет, что расширение присутствует, при определенных обстоятельствах не может быть определен в самом расширении и должен быть определен в профиле, который вводит использование этого расширения.

Расширение - это обертка для URL и либо значения, либо другого расширения. Как таковой, некоторые из свойств расширения определены на самом расширении, в то время как другие определены в Extension.value. Данный список показывает варианты корректного использования:

  • Корневой элемент расширения:
    • Cardinality
    • Short, Definition, Comments
    • IsModifier
    • Обязателен к поддержке (применяется при вызове расширения)
    • Условия и ограничения. Их никогда не должно быть на элементах url/value[x]
    • Мэппинги. Никогда не должны быть на url/value[x]
  • Extension.url:
    • Cardinality = 1...1 (fixed)
    • value = canonical URL (fixed)
  • Extension.value[x]:
    • Type
    • Кардинальное число для простых расширений (не вложенных): 1..1. Используйте 0..0 для вложенных. Отметьте, что фактическая кардинальность расширения определяется его корневым элементом
    • Binding
    • MaxLength, DefaultValue, Pattern, Example, MinValue, MaxValue
  • Extension.extension:
    • Кардинальное число для комплексных расширений (вложенных): 0..*, при этом хотя бы одно вложенное расширение должно присутствовать. Используйте 0..0 в случае простых (не вложенных) расширений
    • .extension автоматически слайсится/нарезается по url
    • вложенные расширения можно определять прямо внутри (как дочерние элементы от Extension.extension, или ссылаясь на них (в элементе .type.profile)

Примечание: расширения всегда нарезаются по их свойству url. Повторная нарезка расширений по дополнительным свойствам разрешена (см. Profiling/Slicing).

Наряду с определением базовой структуры элементов ресурса, HL7 также публикует расширения, включая те, что являются частью спецификации. HL7 публикует такие определения данных в виде расширений, а не как часть базовой структуры ресурса, чтобы сохранить базовую структуру ресурсов простой и краткой, а также освобождает реализаторов от необходимости иметь дело с функциональностью со всего мира.

Перед тем как использовать расширение в экземплярах, НЕОБХОДИМО опубликовать его определение. HL7 предлагает 2 реестра расширений:

  1. реестр расширений, одобренных HL7, утвержденных соответствующей частью HL7-сообщества после процесса проверки, которые имеют официальный статус
  2. реестр, предлагаемый сообществу в виде сервиса, в котором каждый может зарегистрировать расширение

Пользователям рекомендуется регистрировать свои расширения во втором реестре, хотя это и не является обязательным. Всё, что требуется, это чтобы расширение было опубликовано в контексте, доступном для пользователей этого расширения. Поэтому, например, если определенное расширение используется только в пределах одного учреждения, определение такого расширения может быть размещено во внутренней сети этого учреждения. Однако поскольку по своей природе ресурсы предназначены для широкого распространения, всегда лучше публиковать их на публичном веб-сайте. Использование реестра FHIR или других общедоступных реестров расширений не только дает возможность опубликовать расширение, но и упрощает его поиск и поощряет его повторное использование и, следовательно, непротиворечивость между реализациями.

HL7 FHIR реестр находится по адресу http://hl7.org/fhir/registry .

Определения расширений HL7 могут участвовать в голосовании наряду с содержимым ресурсов как часть спецификации FHIR, либо могут публиковаться как отдельные спецификации. Когда HL7 публикует определения расширений в рамках спецификации FHIR, эти расширения ДОЛЖНЫ использоваться для этих данных всякий раз, когда эти данные представляются в экземплярах. Приложениям СЛЕДУЕТ использовать другие, определенные HL7 и опубликованные расширения для представления эквивалентных данных в интересах максимальной совместимости.

Для минимизации сложности для разработчиков, HL7 не будет улучшать широко используемые расширения (определенные HL7 или другими организациями) до контекста, определенного в основном ресурсе в будущих версиях ресурса, если только нет широкого одобрения такой миграции от сообщества реализаторов. Такая политика обеспечивает, что широкое распространение расширения не выльется в форсированную миграцию в основной элемент. Расширения, помеченные как черновик, могут двигаться в любом из направлений, однако после утверждения расширений как нормативных они уже не будут перемещаться.

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

Реализаторам рекомендуется использовать их расширения совместно с HL7 и регистрировать их в реестре расширений HL7. Комитеты этой доменной области будут работать над повышением этих расширений до публикуемых HL7 расширений или, если они будут приняты достаточно широкой частью сообщества реализаторов, до самой структуры базовых ресурсов.

Чтобы избежать проблем с совместимостью, расширения НЕ ДОЛЖНЫ изменять свои определения после публикации. (Допустимы небольшие разъяснения к описаниям, которые не влияют на совместимость). Вместо изменения существующего расширения, следует вводить новое расширение. Ревизии расширения могут расширить набор контекстов, в которых применяется это расширение, однако не должны удалять или ограничивать никакой контекст, перечисленный ранее