Скачать PDF

ПНСТ 995-2024. Предварительный национальный стандарт Российской Федерации. Системы киберфизические. Персональные медицинские помощники. Форматы обмена данными. Общие требования

Федеральное агентство по техническому регулированию и метрологии · № ПНСТ 995-2024Действующий акт

Актуально на 01.11.2026.

Как цитировать: "ПНСТ 995-2024. Предварительный национальный стандарт Российской Федерации. Системы киберфизические. Персональные медицинские помощники. Форматы обмена данными. Общие требования". ПНСТ 995-2024. https://bukva.ai/docs/standart-pnst-995-2024

формула

В обоих представлениях должна использоваться кодировка UTF-8.

9.4.9.3 Ссылки на изображения

Текст в формате XHTML может содержать ссылки на изображения при условии, что эти изображения представлены в экземпляре ресурса в форме вложенных экземпляров ресурсов DocumentReference или Binary, например:

... . ....

В этом примере атрибут src содержит значение идентификатора id вложенного экземпляра ресурса Binary. Это значение указано с префиксом #, который должен предшествовать любой ссылке на вложенный экземпляр ресурса.

Чтобы обозреватель Интернет мог воспроизвести повествовательное содержание с такими ссылками, оно должно быть предварительно обработано, например, можно сохранить изображение в виде файла в месте, доступном обозревателю, и заменить <img src ...> на соответствующую ссылку.

9.4.9.4 Перекрестные ссылки внутри экземпляра ресурса

Перекрестные ссылки между повествовательным содержанием и структурированным содержанием экземпляра ресурса (в обоих направлениях) осуществляются с помощью XML-конструкции id/idref. Соответственно цель ссылки (id) должна иметь имя, уникальное в пределах полного содержания экземпляра ресурса и начинающееся с буквы или подчеркивания. Пробельные элементы внутри имени не допускаются.

В представлении JSON свойство id эквивалентно XML-атрибуту id.

9.4.9.5 Рекомендованные стили

В таблице 138 приведены рекомендованные стили разметки повествовательного содержания экземпляра ресурса.

Таблица 138

Рекомендованные стили разметки повествовательного содержания

Имя стиляОписаниеПредставление
boldПолужирный текст{ font-weight: bold }
italicsКурсив{ font-style: italic }
underlineПодчеркнутый текст{ text-decoration: underline }
strikethroughПеречеркнутый текст{ text-decoration: line-through }
leftВыравнивание влево{ text-align : left }
rightВыравнивание вправо{ text-align : right }
centerВыравнивание по центру{ text-align : center }
justifyВыравнивание по ширине{ text-align : justify }
border-leftГраница слева{ border-left: 1px solid grey }
border-rightГраница справа{ border-right: 1px solid grey }
border-topГраница сверху{ border-top: 1px solid grey }
border-bottomГраница снизу{ border-bottom: 1px solid grey }
arabicНумерованный список (арабские цифры: 1, 2, 3, ...){ list-style-type: decimal }
little-romanНумерованный список (римские цифры в нижнем регистре: i, ii, iii, ...){ list-style-type: lower-roman }
little-roman
Нумерованный список (римские цифры в нижнем регистре: i, ii, iii, ...)
{ list-style-type: lower-roman }little-romanНумерованный список (римские цифры в нижнем регистре: i, ii, iii, ...)
{ list-style-type: lower-roman }big-romanНумерованный список (римские цифры в верхнем регистре: I, II, III, ...)
{ list-style-type: upper-roman }little-alphaНумерованный список (символы в нижнем регистре: a, b, c, ...)
{ list-style-type: lower-alpha }big-alphaНумерованный список (символы в верхнем регистре: A, B, C, ...)
{ list-style-type: upper-alpha }discМаркированный список (сплошные кружки)
{ list-style-type: disc }circleМаркированный список (кружки с отверстиями)
{ list-style-type : circle }squareМаркированный список (сплошные квадраты)
{ list-style-type: square }unlistНемаркированный список
{ list-style-type: none }9.4.9.6 Связывание повествовательного и структурированного содержания

В ряде случаев может оказаться полезным указание связи между повествовательным и структурированным содержанием экземпляра ресурса. Для этой цели используются расширения extension, имеющие следующие идентификаторы url:

Пример использования расширения originalText:

{

«resourceType» : «Condition»,

«text» : {

«status» : «additional»,

«div»: «<div xmlns=»http://www.w3.org/1999/xhtml«>В анамнезе <span id=»a1«>астма»

«»

},

«code» : {

«coding» : {

«system» : «urn:oid:1.2.643.5.1.13.13.11.1005»,

«code» : «J45.9»,

«display» : «астма неуточненная»

},

«extension» : [{

«url» : «http://hl7.org/fhir/StructureDefinition/originalText»,

формула valueUrl формула : формула #a1 формула

}]

}

}

В этом примере фрагменту повествовательного содержания «астма» присвоен идентификатор a1. Элемент структурированного содержания code имеет тип CodeableConcept. Его кодированный компонент coding имеет тип Coding с компонентами system (идентификатор системы кодирования), code (код понятия) и display (краткое описание понятия). Компонент system имеет значение urn:oid:1.2.643.5.1.13.13.11.1005 (объектный идентификатор классификации МКБ-10 в нормативно-справочной информации Минздрава России), компонент code имеет значение J45.9, а display — «астма неуточненная».

В элемент структурированного содержания code добавлено расширение с идентификатором url = http://hl7.org/fhir/StructureDefinition/originalText и значением valueUrl = #a1, представляющим собой внутреннюю ссылку на фрагмент текста с идентификатором a1, послуживший основанием для присваивания кода МКБ.

Аналогичный метод может быть использован для ссылок в пределах контейнера Bundle. Но в этом случае идентификатору a1 должен предшествовать полный URL того экземпляра ресурса, внутри которого содержится ссылочный фрагмент:

...

...

В анамнезе астма

...

9.4.10 Тип данных Reference
9.4.10.1 Общие требования, состав и ограничения

Тип данных Reference используется для представления ссылки на экземпляр ресурса. Например, экземпляр ресурса Organization (организация) может ссылаться на экземпляр ресурса EndPoint, описывающий сервис, предоставляемый организацией в сети Интернет. Общие сведения о типе данных Reference приведены в таблице 139, а состав элементов — в таблице 140. Ограничения типа данных Reference описаны в таблице 141.

Таблица 139

Общие сведения о типе данных Reference

Имя Описание Связи с другими элементами модели
Reference Ссылка на экземпляр ресурса Отношение генерализации от Reference к Element

Таблица 140

Состав элементов типа данных Reference

ИмяОписаниеТипКратность
Унаследованные элементы
idУникальный идентификатор для ссылок между элементамиstring0..1
extensionДополнительное содержаниеExtension0..*
Собственные элементы
referenceЛитеральная ссылка (абсолютный, внутренний или относительный URL)string0..1
typeТип ссылочного ресурсаuri0..1
identifierЛогический идентификатор экземпляра ресурса, если литеральный идентификатор не известенIdentifier0..1
displayТекстовая альтернатива ссылочного экземпляра ресурсаstring0..1

Таблица 141

Ограничения типа данных Reference

Идентификатор Вид Путь Описание Выражение
ref-1 Правило Базовый Если ссылка является локальной, то она должна указывать на вложенный экземпляр ресурса reference.exists() implies (reference.startsWith('#').not() or (reference.substring(1).trace('url') in %rootResource.contained.id.trace('ids')) or (reference='#' and %rootResource!=%resource))
ref-2 Правило Базовый Если расширение отсутствует, то хотя бы один из элементов reference, identifier и display должен присутствовать reference.exists() or identifier.exists() or display.exists() or extension.exists()
9.4.10.2 Тип целевого ресурса

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

формула subject формула : {

формула reference формула : формула http://someserver/some-path формула ,

формула type формула : формула Patient формула

}

Если тип указан в ссылке, то он должен совпадать с типом ресурса, разрешенного по значению элемента reference. Элемент type имеет тип uri и должен представляться по отношению к базовому URL http://hl7.org/fhir/StructureDefinition/, то есть содержать просто имя типа ресурса, например Patient.

9.4.10.3 Литеральные ссылки

Экземпляры ресурсов идентифицируются и адресуются по их адресу URL. Элемент reference может содержать следующие варианты URL:

  • абсолютный URL;
  • относительный URL (дополняющий базовый URL сервера или, если экземпляр ресурса включен в контейнер Bundle, дополняющий значение базового URL, содержащегося в значении элемента Bundle.entry.fullUrl);
  • фрагмент внутренней ссылки.

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

9.4.10.4 Логические ссылки

Во многих случаях литеральный идентификатор ссылочного объекта недоступен или не существует, например:

В этих случаях в ссылке может быть указан логический идентификатор ссылочного объекта, присвоенный какой-либо внешней организацией или информационной системой. Например, ссылка на объект, содержащий информацию о пациенте, имеющим СНИЛС 12345678901, может иметь следующий вид:

<value value= формула 12345678901 формула />

Компонент identifier ссылки типа Reference не обязан указывать на фактически существующий экземпляр ресурса REST, достаточно того, что ссылочный объект в принципе может быть представлен в виде такого экземпляра.

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

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

9.4.11 Тип данных xhtml

Тип данных xhtml используется для представления форматированного текста с упрощенной разметкой XHTML. Общие сведения о типе данных xhtml приведены в таблице 142. Этот тип данных не имеет собственных элементов.

Таблица 142

Общие сведения о типе данных xhtml

Имя Описание Связи с другими элементами модели
xhtml Текст в формате упрощенного XHTML Отношение генерализации от Reference к Element

Примечания

1 Упрощенный XHTML содержит только базовые элементы и атрибуты HTML, описанные в главах 7 — 11 и 15 стандарта HTML 4.0 (исключая раздел 4 главы 9), элементы a (с атрибутами name или href), изображения и атрибуты стилей.

2 Допускается использовать только ссылки на стили, указываемые в атрибутах class и id элементов XHTML. Разрешены стили, приведенные в таблице 138.

3 При сериализации в XML следует указывать пространство имен http://www.w3.org/1999/xhtml, например:

<div xmlns= формула http://www.w3.org/1999/xhtml формула >

Пример системы кодирования

bКод

bЗначение

bОписание

1/

мужской мужской пол
2 женский женский пол

9.5 Типы метаданных

9.5.1 Общие сведения

Типы метаданных используются для представления метаданных описаний типов ресурсов и типов данных. Диаграмма классов, описывающая эти типы данных, показана на рисунке 18.

9.5 Типы метаданных

Рисунок 18 — Типы метаданных

Перечень типов метаданных приведен в таблице 143.

Таблица 143

Типы метаданных

Имя Описание Пункт
Availability Сведения о доступности 9.5.2
ContactDetail Детальная контактная информация 9.5.3
Contributor Сведения об участнике ресурса знаний 9.5.4
DataRequirement Общие требования к данным ресурса знаний 9.5.5
Expression Выражение на определенном языке, которое может использоваться для получения значения 9.5.6
ExtendedContactDetail Детальная контактная информация лица или организации 9.5.7
MonetaryComponent Компонент цены 9.5.8
ParameterDefinition Определение параметра 9.5.9
RelatedArtifact Сведения об артефакте, связанном с ресурсом знаний 9.5.10
TriggerDefinition Описание события, инициирующего применение ресурса знаний 9.5.11
UsageContext Контекст использования 9.5.12
VirtualServiceDetail Идентификация службы дистанционной коммуникации 9.5.13
9.5.2 Тип данных Availability

Тип данных Availability используется для сведений о доступности физического места, службы или медицинского работника. Общие сведения о типе данных Availability приведены в таблице 144, а состав элементов — на рисунке 19 и в таблице 145.

Таблица 144

Общие сведения о типе данных Availability

Имя Описание Связи с другими элементами модели
Availability Сведения о доступности Отношение генерализации от Availability к DataType

9.5 Типы метаданных

Рисунок 19 — Тип данных Availability

Таблица 145

Состав элементов типа данных Availability

ИмяОписаниеТипКратность
Унаследованные элементы
idУникальный идентификатор для ссылок между элементамиstring0..1
extensionДополнительное содержаниеExtension0..*
Собственные элементы
availableTimeДоступные дни и времяElement0..*
availableTime.daysOfWeekДень недели. Допустимые значения: mon | tue | wed | thu | fri | sat | suncode0..*
availableTime.allDayДоступно 24/7boolean0..1
availableTime.availableStartTimeВремя начала доступности (игнорируется, если allDay=true)time0..1
availableTime.availableEndTimeВремя завершения доступности (игнорируется, если allDay=true)time0..1
notAvailableTimeНедоступное времяElement0..*
notAvailableTime.descriptionПричина, по которой это время недоступноstring0..1
notAvailableTime.duringВ течение этого интервала служба недоступнаPeriod0..1

Ограничения описаны в таблице 146, привязки к наборам значений — в таблице 147.

Таблица 146

Ограничения типа данных Availability

Идентификатор Вид Путь Описание Выражение
av-1 Правило Availability.availableTime Если allDay = true, то элементы availableStartTime и availableEndTime должны отсутствовать allDay.exists().not() or (allDay implies availableStartTime.exists().not() and availableEndTime.exists().not())

Таблица 147

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
Availability.availableTime.daysOfWeek http://hl7.org/fhir/Value-Set/days-of-week Обязательная Дни недели
9.5.3 Тип данных ContactDetail

Тип данных ContactDetail используется для представления списка контактных данных лица или организации. Общие сведения о типе данных ContactDetail приведены в таблице 148, а состав элементов — в таблице 149.

Таблица 148

Общие сведения о типе данных ContactDetail

Имя Описание Связи с другими элементами модели
ContactDetail Детальная контактная информация Отношение генерализации от ContactDetail к DataType

Таблица 149

Состав элементов типа данных ContactDetail

ИмяОписаниеТипКратность
Унаследованные элементы
idУникальный идентификатор для ссылок между элементамиstring0..1
extensionДополнительное содержаниеExtension0..*
Собственные элементы
nameФ.И.О. лица или наименование организацииstring0..1
telecomКонтактный телекоммуникационный адрес лица или организацииContactPoint0..*
9.5.4 Тип данных Contributor

Тип данных Contributor используется для представления сведений об участнике ресурса знаний. Общие сведения о типе данных Contributor приведены в таблице 150, а состав элементов — в таблице 151.

Таблица 150

Общие сведения о типе данных Contributor

Имя Описание Связи с другими элементами модели
Contributor Сведения об участнике ресурса знаний Отношение генерализации от Contributor к DataType

Таблица 151

Состав элементов типа данных Contributor

ИмяОписаниеТипКратность
Унаследованные элементы
idУникальный идентификатор для ссылок между элементамиstring0..1
extensionДополнительное содержаниеExtension0..*
Собственные элементы
typeТип участника. Допустимые значения: author (автор) | editor (редактор) | reviewer (рецензент) | endorser (рекомендатель)code0..1
nameИменование физического лица или наименование организации, ответственной за вклад в ресурс знанийstring1
contactКонтактная информация участника ресурса знанийContactDetail0..*
9.5.5 Тип данных DataRequirement

Тип данных DataRequirement определяет общие требования к данным ресурса знаний. Общие сведения о типе данных DataRequirement приведены в таблице 152, а состав элементов — на рисунке 20 и в таблице 153.

Таблица 152

Общие сведения о типе данных DataRequirement

Имя Описание Связи с другими элементами модели
DataRequirement Общие требования к данным ресурса знаний Отношение генерализации от DataRequirement к DataType

9.5 Типы метаданных

Рисунок 20 — Тип данных DataRequirement

Таблица 153

Состав элементов типа данных DataRequirement

ИмяОписаниеТипКратность
Унаследованные элементы
idУникальный идентификатор для ссылок между элементамиstring0..1
extensionДополнительное содержаниеExtension0..*
Собственные элементы
typeТип требуемых данныхcode1
profileИдентификация профиля требуемых данныхcanonical0..1
subject[x]Объект данных (тип ресурса со сведениями об участнике)*0..1
mustSupportУказывает специфичные структурные элементы, на которые ссылается модуль знанийstring0..*
codeFilterОжидаемые кодыElement0..*
codeFilter.pathПуть к кодированному элементу, используемому в фильтреstring0..1
codeFilter.searchParamПараметр поиска по кодированному значению (типа token)string0..1
codeFilter.valueSetНабор допустимых значений, которые могут быть указаны в фильтреcanonical0..*
codeFilter.codeОжидаемые кодыCoding0..*
dateFilterОжидаемые даты/интервалы дат/длительностьElement0..*
dateFilter.pathПуть к элементу, содержащему дату, интервал дат или длительность, используемому в фильтреstring0..1
dateFilter.searchParamПараметр поиска по значению даты, интервалу дат или длительностиstring0..1
dateFilter.value[x]Значение фильтра. Допустимые типы данных: dateTime | Period | Duration*0..1
valueFilterОжидаемые значенияElement0..*
valueFilter.pathПуть к элементу, используемому в фильтреstring0..1
valueFilter.searchParamПараметр поискаstring0..1
valueFilter.comparatorОператор сравнения eq (равно) | gt (больше) | lt (меньше) | ge (больше или равно) | le (меньше или равно) | sa (начинается после) | eb (завершается до)code0..1
valueFilter.value[x]Значение периода, даты или длительности. Допустимые типы данных: dateTime | Period | Duration*0..1
limitЧисло результатовpositiveInt0..1
sortСортировка результатовElement0..*
sort.pathПуть к сортируемому элементуstring0..1
sort.directionНаправление сортировки: ascending (по возрастанию) | descending (по убыванию)code0..1

Ограничения описаны в таблице 154, привязки к наборам значений — в таблице 155.

Таблица 154

Ограничения типа данных DataRequirement

Идентификатор Вид Путь Описание Выражение
drq-1 Правило DataRequirement.code-Filter Должны быть указаны или путь path, или параметр поиска searchParam, но не оба вместе path.exists() xor searchParam.exists()
drq-2 Правило DataRequirement.date-Filter Должны быть указаны или путь path, или параметр поиска searchParam, но не оба вместе path.exists() xor searchParam.exists

Таблица 155

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
DataRequirement http://hl7.org/fhir/ValueSet/fhir-types Обязательная Все типы данных и типы ресурсов
DataRequirement.subject[x] http://hl7.org/fhir/ValueSet/participant-resource-types Расширяемая Типы ресурсов, содержащих сведения об участниках
DataRequirement.valueFilter.comparator http://hl7.org/fhir/ValueSet/value-filter-comparator Обязательная Операторы сравнения
DataRequirement.sort.direction http://hl7.org/fhir/ValueSet/sort-direction Обязательная Направления сортировки
9.5.6 Тип данных Expression

Тип данных Expression описывает выражение на определенном языке (идентифицируемом типом среды MIME), которое может использоваться для получения значения. Общие сведения о типе данных Expression приведены в таблице 156, а состав элементов — в таблице 157.

Таблица 156

Общие сведения о типе данных Expression

Имя Описание Связи с другими элементами модели
Expression Выражение на определенном языке, которое может использоваться для получения значения Отношение генерализации от Expression к DataType

Таблица 157

Состав элементов типа данных Expression

ИмяОписаниеТипКратность
Унаследованные элементы
idУникальный идентификатор для ссылок между элементамиstring0..1
extensionДополнительное содержаниеExtension0..*
Собственные элементы
descriptionЧеловеко-читаемое описание выраженияstring0..1
nameИмя, присвоенное выражению для последующих ссылокcode0..1
languageИдентификация языка выраженияcode0..1
expressionВыражение на указанном языкеstring0..1
referenceСсылка на определение выраженияuri0..1

Ограничения описаны в таблице 158, привязки к наборам значений — в таблице 159.

Таблица 158

Ограничения типа данных Expression

Идентификатор Вид Путь Описание Выражение
exp-1 Правило Базовый Должен быть указан хотя бы один из элементов expression и reference expression.exists() or reference.exists()
exp-2 Правило Базовый Значение имени name должно быть валидным для большинства языков программирования name.hasValue() implies name.matches('[A-Za-z][A-Za-z0-9\_]{0,63}')

Таблица 159

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
Expression.language http://hl7.org/fhir/ValueSet/expression-language Расширяемая Коды, описанные в таблице 160

Таблица 160

Наиболее широко используемые коды языков программирования

Код Значение Определение
text/cql CQL Язык Clinical Quality Language
text/fhirpath FHIRPath Язык FHIRPath
text/x-fhir-query FHIR Query Синтаксис HTTP-запросов FHIR (обычно не включая базовый URL)
text/cql-identifier CQL Identifier Идентификатор выражения на языке Clinical Quality Language, обычно имя определения верхнего уровня
text/cql-expression CQL Expression Выражение на языке Clinical Quality Language
9.5.7 Тип данных ExtendedContactDetail

Тип данных ExtendedContactDetail описывает детальную контактную информацию лица или организации. Общие сведения о типе данных ExtendedContactDetail приведены в таблице 161, а состав элементов — в таблице 162.

Таблица 161

Общие сведения о типе данных ExtendedContactDetail

Имя Описание Связи с другими элементами модели
Extended-ContactDetail Детальная контактная информация лица или организации Отношение генерализации от ExtendedContactDetail к DataType

Таблица 162

Состав элементов типа данных ExtendedContactDetail

ИмяОписаниеТипКратность
Унаследованные элементы
idУникальный идентификатор для ссылок между элементамиstring0..1
extensionДополнительное содержаниеExtension0..*
Собственные элементы
purposeЦель контактаCodeableConcept0..1
nameИменование контактного лицаHumanName0..1
telecomКонтактный телекоммуникационный адрес лица или организацииContactPoint0..*
addressКонтактный адресAddress0..1
organizationСсылка на организацию, отвечающую за содержание контактной информацииReference0..1
periodСрок действия контактной информацииPeriod0..1

Привязки к наборам значений описаны в таблице 163.

Таблица 163

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
ExtendedContact-Detail.purpose http://terminology.hl7.org/ValueSet/contactentity-type Предпочтительная Цель контакта с лицом или организацией
9.5.8 Тип данных MonetaryComponent

Тип данных MonetaryComponent описывает компонент цены, например, скидка, налог, вычет. Общие сведения о типе данных MonetaryComponent приведены в таблице 164, а состав элементов — в таблице 165.

Таблица 164

Общие сведения о типе данных MonetaryComponent

Имя Описание Связи с другими элементами модели
MonetaryComponent Компонент цены Отношение генерализации от MonetaryComponent к DataType

Таблица 165

Состав элементов типа данных MonetaryComponent

ИмяОписаниеТипКратность
Унаследованные элементы
idУникальный идентификатор для ссылок между элементамиstring0..1
extensionДополнительное содержаниеExtension0..*
Собственные элементы
typeКомпонент цены. Допустимые значения: base (базовая цена) | surcharge (надбавка) | deduction (вычет) | discount (скидка) | tax (налог) | informational (сумма для информации, в цену не входит)code1
codeПодкатегория компонента цены, например, налог на добавленную стоимостьCodeableConcept0..1
factorМножительdecimal0..1
amountСумма (до умножения на множитель)Money0..1

Привязки к наборам значений приведены в таблице 166.

Таблица 166

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
MonetaryComponent.type http://hl7.org/fhir/ValueSet/price-component-type Обязательная Тип компонента цены
9.5.9 Тип данных ParameterDefinition

Тип данных ParameterDefinition используется для описания входных или выходных параметров. Общие сведения о типе данных ParameterDefinition приведены в таблице 167, а состав элементов — в таблице 168.

Таблица 167

Общие сведения о типе данных ParameterDefinition

Имя Описание Связи с другими элементами модели
ParameterDefinition Определение параметра Отношение генерализации от ParameterDefinition к DataType

Таблица 168

Состав элементов типа данных ParameterDefinition

Имя Описание Тип Кратность
name Имя параметра. Используется для доступа к значению параметра code 0..1
use Вид параметра — in (входной) или out (выходной) code 1
min Минимальная кратность integer 0..1
max Максимальная кратность — число или * (не ограничена) string 0..1
documentation Краткое описание параметра string 0..1
type Тип значения параметра. Может принимать значение имени простого типа данных, комплексного типа данных, ресурса или any — любой тип code 1
profile Идентификация профиля canonical 0..1
9.5.10 Тип данных RelatedArtifact

Тип данных RelatedArtifact описывает сведения о различных артефактах, связанных с ресурсами знаний, например, о версиях документов, библиографии и т.д. Общие сведения о типе данных RelatedArtifact приведены в таблице 169, а состав элементов — в таблице 170.

Таблица 169

Общие сведения о типе данных RelatedArtifact

Имя Описание Связи с другими элементами модели
RelatedArtifact Сведения об артефакте, связанном с ресурсом знаний Отношение генерализации от RelatedArtifact к DataType

Таблица 170

Состав элементов типа данных RelatedArtifact

ИмяОписаниеТипКратность
Унаследованные элементы
idУникальный идентификатор для ссылок между элементамиstring0..1
extensionДополнительное содержаниеExtension0..*
Собственные элементы
typeТип связи с артефактомcode1
classifierДополнительный классификаторCodeable-Concept0..*
labelКраткое названиеstring0..1
displayКраткое описание связанного артефактаstring0..1
citationБиблиографическая ссылка на артефактmarkdown0..1
documentДокумент, на который дается ссылкаAttachment0..1
resourceСсылка на артефакт, являющийся экземпляром ресурса, имеющего канонический идентификаторcanonical0..1
resourceReferenceСсылка на артефакт, являющийся экземпляром ресурса, не по каноническому идентификаторуReference0..1
publicationStatusСтатус публикации ссылочного артефакта. Допустимые значения: draft (проект) | active (действует) | retired (действие прекращено) | unknown (неизвестен)code0..1
publicationDateДата публикации ссылочного артефактаdate0..1

Привязки к наборам значений описаны в таблице 171.

Таблица 171

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
RelatedArtifact.type http://hl7.org/fhir/ValueSet/related-artifact-type Обязательная Тип связи с артефактом
RelatedArtifact.classifier http://hl7.org/fhir/ValueSet/citation-artifact-classifier Пример Классификатор библиографии
RelatedArtifact.publication-Status http://hl7.org/fhir/ValueSet/publication-status Обязательная Статус жизненного цикла артефакта
9.5.11 Тип данных TriggerDefinition

Тип данных TriggerDefinition описывает события, инициирующие применение ресурса знаний. Общие сведения о типе данных TriggerDefinition приведены в таблице 172, а состав элементов — в таблице 173.

Таблица 172

Общие сведения о типе данных TriggerDefinition

Имя Описание Связи с другими элементами модели
Trigger-Definition Описание события, инициирующего применение ресурса знаний. Выделяются три типа событий:
именованное событие;
расписание;
изменение данных или доступ к ним.
Для именованного события указывается имя, интерпретация которого оставляется на усмотрение среды вычислений.
Событие может инициироваться по расписанию, в том числе в фиксированный момент времени или периодически.
Событие может инициироваться изменением данных или доступом к ним. Уточнение наступления события может быть указано в элементе condition
Отношение генерализации от TriggerDefinition к DataType

Таблица 173

Состав элементов типа данных TriggerDefinition

ИмяОписаниеТипКратность
Унаследованные элементы
idУникальный идентификатор для ссылок между элементамиstring0..1
extensionДополнительное содержаниеExtension0..*
Собственные элементы
typeТип триггера. Допустимые значения: named-event (именованное событие) | periodic (расписание) | data-changed (любое изменение данных, включая добавление, модификацию, удаление) | data-added (добавление данных) | data-modified (модификация данных) | data-removed (удаление данных) | data-accessed (доступ к данным) | data-access-ended (завершение доступа к данным)code1
nameИдентификатор события — имя или URIstring0..1
codeКод, идентифицирующий событиеCodeableConcept0..1
subscription-TopicСсылка на экземпляр ресурса SubscriptionTopic, содержащий определение событияcanonical0..1
timing[x]Расписание события (для периодического триггера)0..1
dataДанные инициирующие событие (для триггера, срабатывающего по данным)DataRequirement0..*
Если указано несколько экземпляров элемента data, для срабатывания триггера должны быть выполнены все указанные в них условия
conditionЛогическое выражение, формально описывающее условие срабатывания триггераExpression0..1

Ограничения описаны в таблице 174, привязки к наборам значений — в таблице 175.

Таблица 174

Ограничения типа данных TriggerDefinition

Идентификатор Вид Путь Описание Выражение
trd-1 Правило Базовый Должны быть указаны или расписание timing, или инициирующие данные data, но не оба вместе data.empty() or timing.empty()
trd-2 Правило Базовый Элемент condition может быть указан только при наличии элемента data condition.exists() implies data.exists()
trd-3 Правило Базовый Для именованного события должен быть указан элемент name, для расписания — timing, для инициирующих данных — data (type = 'named-event' implies name.exists()) and (type = 'periodic' implies timing.exists()) and (type.startsWith('data-') implies data.exists())

Таблица 175

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
TriggerDefinition.type http://hl7.org/fhir/ValueSet/trigger-type Обязательная Тип триггера
9.5.12 Тип данных UsageContext

Тип данных UsageContext используется для представления контекста, в котором используется ресурс. Примерами типов контекста служат пол, возраст, категория пользователя и т.д. Общие сведения о типе данных UsageContext приведены в таблице 176, а состав элементов — в таблице 177.

Таблица 176

Общие сведения о типе данных UsageContext

Имя Описание Связи с другими элементами модели
UsageContext Описание контекста использования Отношение генерализации от UsageContext к DataType

Таблица 177

Состав элементов типа данных UsageContext

ИмяОписаниеТипКратность
Унаследованные элементы
idУникальный идентификатор для ссылок между элементамиstring0..1
extensionДополнительное содержаниеExtension0..*
Собственные элементы
codeТип контекста использованияCoding1
value[x]Значение контекста. Допустимые значения: valueCodeableConcept | valueQuantity | valueRange | valueReference*1
9.5.13 Тип данных VirtualServiceDetail

Тип данных VirtualServiceDetail используется для идентификации службы дистанционной коммуникации. Общие сведения о типе данных VirtualServiceDetail приведены в таблице 178, а состав элементов — в таблице 179.

Таблица 178

Общие сведения о типе данных VirtualServiceDetail

Имя Описание Связи с другими элементами модели
VirtualServiceDetail Идентификация службы дистанционной коммуникации Отношение генерализации от VirtualServiceDetail к DataType

Таблица 179

Состав элементов типа данных VirtualServiceDetail

ИмяОписаниеТипКратность
Унаследованные элементы
idУникальный идентификатор для ссылок между элементамиstring0..1
extensionДополнительное содержаниеExtension0..*
Собственные элементы
channelTypeТип службы дистанционной коммуникацииCoding0..1
address[x]Контактный адрес или номер. Допустимые значения: addressUrl | addressString | addressContactPoint | addressExtendedContactDetail*0..1
additionalInfoАдрес URL дополнительной информации о подключенииurl0..*
maxParticipantsМаксимальное число участников сеансаpositiveInt
sessionKeyКонтактный адрес или номер. Допустимые значения: addressUrl | addressString | addressContactPoint | addressExtendedContactDetailstring0..1

Привязки к наборам значений описаны в таблице 180.

Таблица 180

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
VirtualServiceDetail.channelType http://hl7.org/fhir/ValueSet/virtual-service-type Пример Тип службы дистанционной коммуникации

10 Ресурсы REST

10.1 Общие сведения

10.1.1 Принципы определения ресурсов REST

Ресурсы REST описывают элементы данных, ограничения и связи «объектов деятельности», наиболее релевантных для здравоохранения, например, «пациент», «медицинский работник», «процедура», «направление на исследование», «результат исследования».

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

При разработке типов ресурсов используются следующие архитектурные принципы:

Принципы, положенные в основу спецификации [22], позволяют эффективно применять ее для построения микросервисных решений, а также для решений, обеспечивающих информационное взаимодействие с различными гаджетами и ПМП. В то же время она может использоваться и для традиционного обмена сообщениями. При этом вместо сложных и ограниченных синтаксисов запросов, предложенных в стандартах HL7 Version 2 и Version 3, может использоваться стандартный синтаксис запросов HTTP.

Спецификация [22] предоставляется по лицензии Creative Commons «No Rights Reserved», то есть без сохранения прав. Но при этом на использование торговых марок HL7® и FHIR® накладываются определенные ограничения.

10.1.2 Расширения

Возможность расширений типов данных и типов ресурсов является существенной частью парадигмы спецификации [22]. Каждый элемент экземпляра ресурса может иметь дочерние элементы расширения (extension), представляющие дополнительную информацию, не являющиеся частью базового определения типа ресурса. Приложения не должны отклонять экземпляр ресурса только на основании того, что он содержит расширения, однако могут отклонить его на основании содержания конкретного расширения.

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

10.1.3 Производные типы

Тип ресурса может производиться от другого типа ресурса следующими двумя способами:

Ограничение базового типа ресурса называется профилированием, а вновь полученный объект — профилем базового объекта.

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

10.1.4 Ссылки между экземплярами ресурсов

Экземпляр ресурса может включать в себя другой экземпляр ресурса (или профиля) по ссылке или по значению. Например, тип ресурса Person (общие демографические данные гражданина) имеет свойство managingOrganization (организация — владелец данного экземпляра сведений о физическом лице), которое может содержать ссылку на экземпляр ресурса Organization (общие сведения об организации). Сослаться на часть свойств экземпляра ресурса нельзя, но можно описать профиль ссылочного объекта, содержащий только требуемые свойства.

10.1.5 Профилирование

Типы ресурсов, разработанные с помощью специализации базовых объектов, являются рамочными. Многие свойства этих объектов, например, унаследованные от базовых объектов, являются необязательными. Поэтому при сопоставлении вновь разработанного типа ресурса со сведениями об объекте учета на эти свойства должны быть наложены дополнительные ограничения, то есть одному типу объекта учета обычно соответствует не сам такой тип ресурса, а его профиль. Например, для типа ресурса Observation (результат исследования) определены профили, специфичные для конкретных исследований: observation-resprate (частота дыхания), observation-oxygensat (оксигенация) и другие.

Сведениям об объекте учета, имеющим простую структуру, целесообразно сопоставить один тип ресурса и один его профиль. Сведениям об объекте учета, имеющим более сложную структуру, может быть сопоставлено несколько типов ресурсов (каждый со своим профилем) или один тип ресурса с несколькими профилями. Для описания таких сведений в спецификации [22] предусмотрены так называемые руководства по реализации (implementation guide), в том числе руководство по реализации ресурсов REST для персональных медицинских приборов [32].

10.1.6 Описание типа ресурса

Описание типа ресурса содержит следующие разделы:

В зависимости от особенностей конкретного ресурса некоторые разделы могут быть опущены, а другие — добавлены.

Иерархическая таблица, описывающая структуру ресурса, имеет формат, приведенный в таблице 4. Таблица ограничений имеет формат, приведенный в таблице 5. Таблица привязок к наборам значений имеет формат, приведенный в таблице 6. Таблица критериев поиска имеет формат, приведенный в таблице 7.

10.1.7 Категории ресурсов

Можно выделить следующие категории ресурсов:

Базисные ресурсы описаны в пункте 10.2, ресурсы общего назначения — в пункте 10.3, предметные ресурсы, используемые для взаимодействия с хранилищем результатов измерений — в разделе 11.

10.2 Базисные ресурсы

10.2.1 Общие сведения

Базисные ресурсы перечислены в таблице 181. Они представляют собой абстрактные классы и не имеют собственных экземпляров.

Таблица 181

Базисные ресурсы

Имя Описание Пункт
Resource Общие элементы всех ресурсов 10.2.2
DomainResource Дополнительные элементы, общие для большинства ресурсов 10.2.3
10.2.2 Ресурс Resource
10.2.2.1 Область применения и использования

Базисный ресурс Resource является родителем каждого конкретного ресурса. С помощью унаследованных от него необязательных элементов можно задать идентификатор экземпляра ресурса, ссылку на его метаданные, ссылку на правила, которым надо следовать при создании экземпляра, человеческий язык, на котором представлено содержание экземпляра ресурса.

10.2.2.2 Структура ресурса

Состав элементов ресурса Resource представлен на рисунке 21 и в таблице 182.

10.2 Базисные ресурсы

Рисунок 21 — Ресурс Resource

Таблица 182

Состав элементов ресурса Resource

Имя Описание Тип Кратность
id Логический идентификатор экземпляра ресурса, используемый в URL этого экземпляра. Будучи присвоенным, это значение никогда не изменяется id 0..1
meta Метаданные экземпляра ресурса. Их содержание обрабатывается инфраструктурой. Изменение метаданных ресурса не обязательно влечет за собой изменение экземпляра ресурса Meta 0..1
implicitRules Ссылка на набор правил, которым надо следовать при создании экземпляра ресурса и которые должны учитываться при обработке его содержания. Нередко это ссылка на руководство по реализации, определяющее специфичные правила наряду с другими профилями, и т.д. uri 0..1
language Основной человеческий язык, на котором представлено содержание ресурса code 0..1
10.2.2.3 Привязки к наборам значений

Привязки к наборам значений перечислены в таблице 183.

Таблица 183

Привязки к наборам значений

ПутьНабор значенийТип привязкиОписание
Resource.languagehttp://hl7.org/fhir/ValueSet/all-languagesОбязательнаяВсе допустимые коды языка из BCP-47 (см. http://tools.ietf.org/html/bcp47)
http://hl7.org/fhir/ValueSet/languagesРекомендованнаяНаиболее распространенные коды языка
10.2.2.4 Логический идентификатор id и другие идентификаторы экземпляров ресурсов

Экземпляр ресурса может быть идентифицирован двумя разными способами:

Каждый ресурс наследует элемент id (логический идентификатор) от ресурса Resource. При создании экземпляра ресурса сервер присваивает этому идентификатору определенное значение, уникальное среди всех экземпляров ресурса данного типа. Пока экземпляр хранится на этом сервере, значение идентификатора id не изменяется.

Местонахождение экземпляра задается абсолютным адресом URL, сконструированным из базового URL, имени типа ресурса и логического идентификатора, например: http://test.fhir.org/r5/rest/Patient/123 (где 123 — логический идентификатор экземпляра ресурса Patient). Перекрестные ссылки между экземплярами ресурсов используют их местонахождение в форме абсолютного или относительного URL.

Бизнес-идентификаторы обычно позволяют связать содержание экземпляра ресурса с объектом «реального мира». Большинство типов ресурсов имеет элемент identifier типа Identifier, предназначенный для хранения бизнес-идентификаторов.

Некоторые типы ресурсов имеют элемент url, предназначенный для хранения «канонического URL», идентифицирующий экземпляр ресурса данного типа. Это специальная разновидность бизнес-идентификатора. Элемент url имеет тип uri и наряду с URL может содержать URI, но назван так по историческим причинам. Канонический идентификатор служит неизменным логическим идентификатором экземпляра ресурса.

10.2.2.5 Правила implicitRules

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

10.2.2.6 Язык language

Элемент language указывает основной человеческий язык, на котором представлено содержание ресурса. Его значение представляет собой код из BCP-47 [30]. Этот же код по возможности должен быть указан в повествовательном содержании экземпляра ресурса, представленном элементом text, наследуемым от ресурса DomainResource. Поскольку код языка из BCP-47 очень сложен, для элемента language рекомендована привязка к набору значений http://hl7.org/fhir/ValueSet/languages, охватывающему наиболее распространенные коды языка.

10.2.2.7 Метаданные ресурса meta

Каждый тип ресурса наследует от ресурса Resource элемент метаданных meta типа Meta, значения которого имеют служебный характер и могут использоваться для ограничения доступа к экземпляру ресурса, форматно-логического контроля его содержания, обеспечения версионности, а также для других целей, в том числе определяемых пользователем. Компоненты типа данных Meta описаны в пункте 9.4.8.

10.2.3 Ресурс DomainResource
10.2.3.1 Область применения и использования

Базисный ресурс DomainResource является детализацией абстрактного ресурса Resource и в свою очередь является абстрактным. Он описывает расширения содержания экземпляра ресурса и вложенные в него экземпляры ресурсов.

10.2.3.2 Структура ресурса

Состав элементов ресурса DomainResource представлен на рисунке 22 и в таблице 184.

10.2 Базисные ресурсы

Рисунок 22 — Ресурс DomainResource

Таблица 184

Состав элементов ресурса DomainResource

ИмяОписаниеТипКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Собственные элементы
textЧеловеко-читаемый текст, содержащий сводные сведения о содержании экземпляра ресурса, который может использоваться для представления содержания человеку. Он не обязан содержать все структурированные данные, но должен содержать сведения, достаточные для получения представления о содержании ресурса. В определении ресурса может быть указано, какое содержание следует представить в элементе textNarrative0..1
containedЭкземпляры ресурсов, не существующие отдельно от данного экземпляра ресурса, который их содержит — они не могут быть идентифицированы отдельно от него и не могут самостоятельно входить в транзакцииResource0..*
extensionМожет использоваться для представления дополнительной информации, не являющейся частью базового определения ресурса. Существует строгий набор правил по определению и использованию расширений, обеспечивающий их безопасное и управляемое применение. Хотя каждый разработчик и может определить расширение, существует ряд требований, которых он должен придерживаться при определении расширенияExtension0..*
modifierExtensionМожет использоваться для представления дополнительной информации, не являющейся частью базового определения ресурса, но модифицирующей семантику этого элемента и/или его потомков. Обычно модификация состоит в отрицании или уточнении. Существует строгий набор правил по определению и использованию расширений, обеспечивающий их безопасное и управляемое применение. Хотя каждый разработчик и может определить расширение, существует ряд требований, которых он должен придерживаться при определении расширения. Требуется, чтобы приложения, обрабатывающие экземпляр ресурса, проверяли наличие модифицирующих расширений. Модифицирующие расширения не должны изменять семантику любого элемента, унаследованного от класса Resource или DomainResource (в том числе семантику самого расширения modifierExtension)Extension0..*
10.2.3.3 Ограничения ресурса DomainResource

Ограничения ресурса DomainResource описаны в таблице 185.

Таблица 185

Ограничения ресурса DomainResource

Идентификатор Вид Путь Описание Выражение
dom-2 Правило Базовый Допускается только один уровень вложения экземпляров ресурсов contained.contained.empty()
dom-3 Правило Базовый Должна быть ссылка на вложенный экземпляр ресурса в содержащем его экземпляре или ссылка во вложенном экземпляре на содержащий его экземпляр contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().ofType(canonical) | %resource.descendants().ofType(uri) | %resource.descendants().ofType(url))) or descendants().where(reference = '#').exists() or descendants().where(ofType(canonical) = '#').exists() or descendants().where(ofType(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 Правило Базовый Во вложенном экземпляре ресурса должны отсутствовать элементы meta.versionId и meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 Правило Базовый Во вложенном экземпляре ресурса должен отсутствовать элемент meta.security contained.meta.security.empty()
dom-6 Рекомендация Базовый У экземпляра ресурса должно быть повествовательное содержание text.'div'.exists()
10.2.3.4 Использование вложенных ресурсов

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

10.2.3.5 Параметры поиска

Параметры поиска, общие для всех потомков ресурса DomainResource, описаны в таблице 186.

Таблица 186

Параметры поиска, общие для потомков ресурса DomainResource

Имя Тип Описание Выражение
_text special Поиск экземпляра ресурса по повествовательному содержанию -

10.3 Ресурсы общего назначения

10.3.1 Общие сведения

Ресурсы общего назначения, которые могут быть использованы в запросах REST API и в ответах на эти запросы, перечислены в таблице 187.

Таблица 187

Ресурсы общего назначения

Имя Описание Пункт
Bundle Контейнер экземпляров ресурсов 10.3.2
MessageHeader Заголовок сообщения 10.3.3
OperationOutcome Результат операции 10.3.4
Parameters Параметры операции 10.3.5
Subscription Подписка 10.3.6
SubscriptionStatus Статус подписки 10.3.8
SubscriptionTopic Тема подписки 10.3.7
10.3.2 Ресурс Bundle (контейнер экземпляров ресурсов)
10.3.2.1 Область применения и использования

Ресурс Bundle служит для сборки экземпляров ресурсов в единый контейнер. Такие контейнеры используются для разных целей, в том числе:

10.3.2.2 Структура ресурса

Ресурс Bundle является детализацией абстрактного ресурса Resource. Состав элементов ресурса Bundle представлен на рисунке 23 и в таблице 188.

10.3 Ресурсы общего назначения

Рисунок 23 — Ресурс Bundle

Таблица 188

Состав элементов ресурса Bundle

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Собственные элементы
identifierПостоянный идентификатор контейнера, не изменяемый при его передаче от одного субъекта к другомуIdentifier0..1
typeУказывает назначение контейнера, то есть предполагаемое использование. Допустимые значения: document (документ) | message (сообщение) | transaction (транзакция) | transaction-response (результат транзакции) | batch (пакет)| batch-response (ответный пакет) | history (история) | searchset (результат поиска) | collection (коллекция) | subscription-notification (уведомление подписки)code1
timestampШтамп даты и времени создания контейнераinstant0..1
totalОбщее число совпаденийunsignedInt0..1
linkСвязь, относящаяся ко всему контейнеруBackboneElement0..*
link.relationИмя, детализирующее функциональное назначение данной связи. Список значений берется из [[33]](#p121391) (www.iana.org/assignments/link-www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1)string1
link.urlАдрес детальной информации о данной связиuri1
entryЗапись, содержащая экземпляр ресурса или информациюBackboneElement0..*
entry.linkСвязь, относящаяся к данной записиBackboneElement0..*
entry.link.relationИмя, детализирующее функциональное назначение данной связи. Список значений берется из [[33]](#p121391) (www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1)string1
entry.link.urlАдрес детальной информации о данной связиuri1
entry.fullUrlАбсолютный URL или URN, идентифицирующий экземпляр ресурсаuri0..1
entry. resourceЭкземпляр ресурса, содержащийся в контейнере. Его назначение или смысл определяются типом контейнера Bundle.typeResource0..1
entry. searchИнформация о поиске, в результате которого сформирована данная записьBackboneElement0..1
entry. search. modeПричина включения записи в коллекцию результатов. Допустимые значения: match (соответствует параметрам поиска) | include (включена в соответствии с параметрами _include или _revinclude) | outcome (предназначена для передачи информации либо предупреждения о процессе поиска)code0..1
entry. search. scoreОценка степени совпадения с параметрами поиска, поставленная сервером при поиске (между 0 и 1)decimal0..1
entry. requestВ контейнере пакета или транзакции — запрос обработки. В контейнере истории — метод, использованный для обработки версии экземпляра ресурсаBackboneElement0..1
entry. request. methodПри инициировании транзакции или пакета здесь должен быть указан метод HTTP, выполняемый для этой записи. В контейнере истории здесь должен быть указан выполненный метод HTTP. Допустимые значения: GET | HEAD | POST | PUT | DELETE | PATCHcode1
entry. request. urlАдрес URL относительно корня (адреса, по которому отправлен запрос)uri1
entry.request.ifNoneMatchЕсли значения ETag совпадают, возвратить статус HTTP 304 Not Modified (не модифицировано)string0..1
entry.request.ifModified-SinceВыполнять метод HTTP, если дата последнего изменения хранящегося экземпляра ресурса больше или равна значению данного элементаinstant0..1
entry.request.ifMatchВыполнять этот метод, если значение элемента meta.versionId хранящегося экземпляра ресурса, представленное в форме ETag, совпадает со значением данного элементаstring0..1
entry.request.ifNoneExistУказывает, что информационный ресурс не выполняет метод создания, если указанный экземпляр ресурса уже существует. Это часть URL, представляющая запрос, следующая за знаком вопроса (не включая этот знак)string0..1
entry. responseУказывает результаты обработки соответствующей записи запроса (request) контейнера пакета или транзакции, на которую дается ответ, или результаты операции при возвращении историиBackboneElement0..1
entry.response.statusКод статуса, возвращенный при обработке данной записи. Статус должен начинаться с трехзначного кода HTTP code (например, 404) и может содержать стандартное описание HTTP этого кодаstring1
entry. response. locationЗаголовок Location, созданный выполненным методом и заполняемый, если он возвращает Locationuri0..1
entry. response. etagЕсли метод создает версию экземпляра ресурса, здесь возвращается его тег ETagstring0..1
entry. response. lastModifiedДата и время изменения экземпляра ресурса серверомinstant0..1
entry. response. outcomeЭкземпляр ресурса OperationOutcome, содержащий указания и предупреждения, появившиеся в результате обработки данной записи в пакете или транзакцииResource0..1
signatureЭлектронная подпись содержания контейнераSignature0..1
issuesОписание проблем формирования содержания контейнера и предупреждения, относящиеся к контейнеру в целомResource0..1
10.3.2.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 189.

Таблица 189

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
Bundle.type http://hl7.org/fhir/ValueSet/bundle-type Обязательная Тип контейнера
Bundle.link.relation http://hl7.org/fhir/ValueSet/iana-link-relations Обязательная Функциональное назначение связи, определенное в https://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1
Bundle.entry.search.mode http://hl7.org/fhir/ValueSet/search-entry-mode Обязательная Причина включения записи в коллекцию результатов
Bundle.entry.request.method http://hl7.org/fhir/ValueSet/http-verb Обязательная Метод HTTP
10.3.2.4 Ограничения ресурса Bundle

Ограничения ресурса Bundle приведены в таблице 190.

Таблица 190

Ограничения ресурса Bundle

Идентификатор Вид Путь Описание Выражение
bdl-1 Правило Базовый Указывать элемент total только при type = searchset или history total.empty() or (type = 'searchset') or (type = 'history')
bdl-2 Правило Базовый Указывать элемент entry.search только при type = searchset entry.search.empty() or (type = 'searchset')
bdl-5 Правило Bundle. entry Если элементы request и response отсутствуют, то запись должна содержать элемент resource resource.exists() or request.exists() or response.exists()
bdl-7 Правило Базовый Значение fullUrl должно быть уникальным в контейнере, или записи entry с одинаковыми значениями fullUrl должны содержать элементы resource с разными значениями элементов meta.versionId (за исключением контейнеров истории) (type = 'history') or entry.where(fullUrl.exists()).select(fullUrl&resource.meta.versionId).isDistinct()
bdl-8 Правило Bundle. entry Значение fullUrl не должно содержать компонент версии fullUrl.contains('/_history/').not()
bdl-9 Правило Базовый Идентификатор документа identifier должен иметь компоненты system и value type = 'document' implies (identifier.system.exists() and identifier.value.exists())
bdl-10 Правило Базовый Документ должен иметь дату type = ment' implies (timestamp.hasValue())
bdl-11 Правило Базовый Первым ресурсом в контейнере документа должен быть Composition type = 'document' implies entry.first().resource.is(Composition)
bdl-12 Правило Базовый Первым ресурсом в контейнере сообщения должен быть MessageHeader type = 'message' implies entry.first().resource.is(MessageHeader)
bdl-13 Правило Базовый Первым ресурсом в контейнере уведомления подписки должен быть SubscriptionStatus type = 'subscription-notification' implies entry.first().resource.is(SubscriptionStatus)
bdl-14 Правило Базовый Метод PATCH в контейнере истории не допустим type = 'history' implies entry.request.method != 'PATCH'
bdl-15 Правило Базовый Если тип контейнера Bundle.type = transaction | transaction-response | batch | batch-response или Bundle.request.method = POST, то элемент Bundle.entry.fullUrl обязателен type='transaction' or type = 'transaction-response' or type='batch' or type='batch-response' or entry.all(fullUrl.exists() or request.method='POST')
bdl-16 Правило Базовый Если элемент issue представлен экземпляром ресурса OperationOutcome, то элементы issue.severity этого экземпляра должны иметь значение information (информация) или warning (предупреждение) issues.exists() implies (issues.issue.severity = 'information' or issues.issue.severity = 'warning')
bdl-17 Правило Базовый В контейнере документа элемент issues должен отсутствовать type = 'document' implies issues.empty()
bdl-18 Правило Базовый В контейнере результата поиска должен присутствовать элемент link со значением отношения self type = 'searchset' implies link.where(relation = 'self' and url.exists()).exists()
bdl-3a Правило Базовый В контейнере документа, сообщения, результата поиски или коллекции все элементы entry должны содержать элемент resource, а элементы request и response в них должны отсутствовать type in ('document' | 'message' | 'searchset' | 'collection') implies entry.all(resource.exists() and request.empty() and response.empty())
bdl-3b Правило Базовый В контейнере истории все элементы entry должны содержать элементы request и response, а если элемент request.method имеет значение POST или PUT, то элемент entry должен содержать элемент resource type = 'history' implies entry.all(request.exists() and response.exists() and ((request.method in ('POST' | 'PUT')) = resource.exists()))
bdl-3c Правило Базовый В контейнере транзакции или пакета все элементы entry должны содержать элемент request, а если элемент request.method имеет значение POST, PUT или PATCH, то элемент entry должен содержать элемент resource type in ('transaction' | 'batch') implies entry.all(request.method.exists() and ((request.method in ('POST' | 'PATCH' | 'PUT')) = resource.exists()))
bdl-3d Правило Базовый В контейнере результата транзакции или ответного пакета все элементы entry должны содержать элемент response type in ('transaction-response' | 'batch-response') implies entry.all(response.exists())
10.3.2.5 Использование контейнеров Bundle

Документ

Контейнер документа, в котором Bundle.type = document, состоит из записей entry, первая из которых содержит экземпляр ресурса Composition. Каждая запись entry должна содержать элемент resource (экземпляр ресурса).

Сообщение

Контейнер документа, в котором Bundle.type = message, состоит из записей entry, первая из которых содержит экземпляр ресурса MessageHeader. Каждая запись entry должна содержать элемент resource (экземпляр ресурса).

Результаты поиска

Контейнер результата поиска, в котором Bundle.type = 'searchset', состоит из нуля или более записей entry. Каждая запись entry должна содержать экземпляр ресурса.

В элементе Bundle.total может быть указано общее число экземпляров ресурсов, удовлетворяющих условию поиска.

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

История

Контейнер истории изменений, где Bundle.type = 'history', состоит из нуля или более записей entry. Каждая запись entry должна содержать элемент request, описывающий выполненные изменения. Если значение элемента entry.request.method равно 'POST' или 'PUT', то запись entry должна содержать экземпляр ресурса, представляющий его состояние после выполнения этой операции. Чтобы потребители могли получить доступ к заголовку location, должен также присутствовать элемент response.

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

Транзакция/пакет

Контейнер транзакции или пакета, где Bundle.type = 'transaction' или 'batch', состоит из нуля или более записей entry. Каждая запись entry должна содержать элемент request, детализирующий запрос HTTP и указывающий системе, выполняющей транзакцию, что следует делать с содержанием записи entry. Если значение элемента entry.request.method равно 'POST' или 'PUT', то запись entry должна содержать экземпляр ресурса, который служит телом запроса HTTP.

Результат транзакции/ответный пакет

Контейнер результата транзакции или ответного пакета, где Bundle.type = transaction-response или batch-response, состоит из нуля или более записей entry, по одной на каждую запись транзакции или пакета, на которую дается ответ. Каждая запись entry должна содержать элемент response, описывающий результат запроса HTTP, выполненного для соответствующей записи контейнера транзакции или пакета.

Коллекция

Контейнер коллекции, где Bundle.type = collection, состоит из нуля или более записей entry. Специального назначения у такого контейнера нет. Каждая запись entry должна содержать экземпляр ресурса.

URL ресурса и правила уникальности в контейнере

За исключением контейнеров транзакции или пакета, каждая запись entry контейнера Bundle должна иметь элемент fullUrl, идентифицирующий экземпляр ресурса, включенный в эту запись. Он идентифицирует экземпляр, но не его версию. Если экземпляру ресурса не присвоен постоянный идентификатор, который может быть использован в контейнере, то следует назначить ему идентификатор UUID (с префиксом urn:uuid:), областью действия которого является данный контейнер, и поместить его в элемент fullURL.

Если в контейнере Bundle транзакции или пакета элемент entry.request.method = POST и экземпляр ресурса не имеет уникального идентификатора, то запись entry может не иметь элемент fullUrl при условии, что на этот экземпляр ресурса нет ссылок из других записей entry. Если же такие ссылки присутствуют, то следует назначить экземпляру ресурса идентификатор UUID (с префиксом urn:uuid:), областью действия которого является данный контейнер, и поместить его в элемент fullURL.

Конкретная версия экземпляра ресурса должна быть включена в контейнер Bundle не более одного раза. Однако в один и тот же контейнер могут быть включены разные версии одного и того же экземпляра ресурса. Например, это имеет место в контейнере истории, где Bundle.type = history.

Разрешение ссылок в контейнере Bundle

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

Приложение сервера, читающее контейнер транзакции, сначала должно найти ссылочные экземпляры внутри контейнера, и только после этого выполнить поиск, используя полный адрес URL ссылки. Должен использоваться следующий алгоритм разрешения ссылок в контейнере Bundle:

Наряду с относительным адресом URL (например, Patient/123) ссылка на другой экземпляр ресурса может использовать любую схему URI. Поэтому рекомендуется использовать следующий алгоритм обработки ссылок в контейнере транзакции:

Обработать ссылки reference.value, имеющие схему URN (например, urn:uuid:9d1714da-b7e6-455b-bfd2-69ce0ff5fb12):

Обработать ссылки reference.value, представляющие собой абсолютный URL:

Обработать ссылки reference.value, представляющие собой относительный URL вида «[type]/[id], например, Patient/123:»

Обработать условные ссылки reference.value:

Если ссылка не принадлежит ни к одной из указанных выше категорий, сгенерировать ошибку транзакции.

Для применения этого алгоритма требуется, чтобы запись entry содержала элемент fullUrl. Поэтому клиенты по возможности должны заполнять в контейнере транзакции элементы Bundle.entry.fullUrl.

Обработка контейнеров Bundle с использованием REST API

У контейнера Bundle есть своя конечная точка, как и у большинства других ресурсов. Она обслуживает обычные взаимодействия, при которых экземпляры контейнера Bundle рассматриваются как статические, то есть контейнер пакета, транзакции или сообщения может быть отправлена с помощью метода POST по адресу /Bundle. В этом случае содержание контейнера обрабатывается не как пакет, транзакция или сообщение, а как обычный экземпляр ресурса с индексированием и т.д. Операция GET/Bundle/[id] возвратит тот же самый экземпляр контейнера.

Параметры поиска экземпляров ресурса Bundle

Специальные параметры поиска экземпляров ресурса Bundle описаны в таблице 191. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 191.

Таблица 191

Специальные параметры поиска экземпляров ресурса Bundle

Имя Тип Описание Выражение
composition reference Если Bundle.type = document, то первая запись entry должна содержать экземпляр ресурса Composition, и этот параметр обеспечивает возможность сцепленного поиска его содержания Bundle.entry[0].resource as Composition
identifier token Постоянный идентификатор контейнера Bundle.identifier
message reference Если Bundle.type = message, то первая запись entry должна содержать экземпляр ресурса MessageHeader, и этот параметр обеспечивает возможность сцепленного поиска его содержания Bundle.entry[0].resource as Message Header
timestamp date Дата и время формирования содержания контейнера Bundle.timestamp
type token Тип контейнера. Допустимые значения: document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection | subscription-notification Bundle.type
10.3.3 Заголовок сообщения MessageHeader
10.3.3.1 Область применения и использования

Ресурс MessageHeader используется в качестве заголовка сообщения в составе контейнера Bundle, у которого элемент type имеет значение message.

10.3.3.2 Структура ресурса

Ресурс MessageHeader является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса MessageHeader представлен на рисунке 24 и в таблице 192.

10.3 Ресурсы общего назначения

Рисунок 24 — Ресурс MessageHeader

Таблица 192

Состав элементов ресурса MessageHeader

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrative0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
event[x]Код события передачи сообщения. Допустимые типы данных: Coding | canonical (ссылка на экземпляр ресурса EventDefinition)*1
destinationПриложение-получательBackboneElement0..*
destination.endpoint[x]Адресат сообщения. Допустимые типы данных: url | Reference (ссылка на экземпляр ресурса Endpoint)*1
destination.nameЧеловеко-читаемое имя целевой системыstring0..1
destination.targetСсылка на идентификацию конечной целевой системыReference0..1
destination.receiverСсылка на конечного получателяReference0..1
senderСсылка на отправителяReference0..1
authorСсылка на автора сообщенияReference0..1
sourceПриложение-отправительBackboneElement1
source.endpoint[x]Источник данных. Допустимые типы данных: url | Reference (ссылка на экземпляр ресурса Endpoint)*1
source.nameЧеловеко-читаемое имя системы-отправителяstring0..1
source.softwareНаименование программного обеспеченияstring0..1
source.versionВерсия программного обеспеченияstring0..1
source.contactТелекоммуникационный адрес службы технической поддержкиContactPoint0..1
responsibleОтветственный за содержание сообщенияReference0..1
reasonПричина событияCodeableConcept0..1
responseИсходное сообщениеBackboneElement0..1
response.identifierИдентификатор исходного сообщения Bundle.identifierid1
response.codeКод типа ответа. Допустимые значения: без-ошибки | ошибка | фатальная-ошибкаcode1
response.detailsПолные сведения о проблемах в исходном сообщенииReference0..1
focusСсылка на основной экземпляр ресурса в данном сообщении. Им может быть в том числе экземпляр ресурса ParametersReference0..*
definitionСсылка на экземпляр ресурса Messagedefinition, содержащий определение состава данного сообщенияcanonical0..1
10.3.3.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 193.

Таблица 193

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
MessageHeader.event[x] http://hl7.org/fhir/ValueSet/message-events Пример Тип события
MessageHeader.reason http://hl7.org/fhir/ValueSet/message-reason-encounter Пример Причина события
MessageHeader.response.code http://hl7.org/fhir/ValueSet/response-code Обязательная Код типа ответа
10.3.3.4 Использование ресурса MessageHeader

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

Получатель сообщения не обязан отклонять его, если ссылка в элементе receiver относится к другому субъекту. Например, он может выполнять роль регистратора или маршрутизатора сообщений.

Все экземпляры ресурсов, на которые ссылаются элементы MessageHeader.focus, должны находиться внутри контейнера сообщения.

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

10.3.3.5 Параметры поиска экземпляров ресурса MessageHeader

Специальные параметры поиска экземпляров ресурса MessageHeader описаны в таблице 194. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 194

Специальные параметры поиска экземпляров ресурса MessageHeader

Имя Тип Описание Выражение
author reference Логический автор сообщения MessageHeader.author
code token Допустимые значения: ok (успешно) | transient-error (преходящая ошибка) | fatal-error (фатальная-ошибка) MessageHeader.response.code
destination string Человеко-читаемое имя целевой системы MessageHeader.destination.name
destination-uri uri Адрес получателя сообщения MessageHeader.destination.endpoint
event token Код типа события MessageHeader.event.ofType(Coding) | MessageHeader.event.ofType(canonical)
focus reference Экземпляр ресурса, содержащийся в сообщении MessageHeader.focus (любой тип ресурса)
receiver reference Получатель сообщения MessageHeader.destination.receiver
response-id token Идентификатор исходного сообщения MessageHeader.response.identifier
responsible reference Ответственный за содержание сообщения MessageHeader.responsible
sender reference Система — отправитель сообщения MessageHeader.sender
(Person, Organization)
source string Наименование системы — отправителя сообщения MessageHeader.source.name
target reference Идентификация конечной целевой системы MessageHeader.destination.target
10.3.4 Результат операции OperationOutcome
10.3.4.1 Область применения и использования

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

  • ошибка взаимодействия REST или выполнения операции;
  • применения операции $validate (проверка содержания экземпляра ресурса на соответствие правилам);
  • ошибка обработки сообщения;
  • ошибка обработки транзакции или пакета;
  • информация о поиске (в контейнере результата поиска Bundle).
10.3.4.2 Структура ресурса

Ресурс OperationOutcome является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса OperationOutcome представлен на рисунке 25 и в таблице 195.

10.3 Ресурсы общего назначения

Рисунок 25 — Ресурс OperationOutcome

Таблица 195

Состав элементов ресурса OperationOutcome

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
issueОшибка, предупреждение или информационное сообщение, создаваемые в результате действия системыIssue1..*
issue. severityСерьезность отклонения от успешной обработки. Допустимые значения: fatal (фатальная ошибка) | error (ошибка) | warning (предупреждение) | information (информация)code1
issue.codeТип отклонения от нормальной обработки. Система, создающая экземпляр ресурса OperationOutcome, должна выбрать наиболее подходящий код отклонения и может предусмотреть дополнительный код ошибки в элементе details. Допустимые значения: invalid (несоответствие спецификации) | structure (ошибочная структура) | required (отсутствует обязательный элемент) | value (ошибочное значение элемента) | invariant (нарушено ограничение) | security (ошибка доступа) | login (требуется аутентификация) | unknown (неизвестный принципал) | expired (сеанс закончен) | forbidden (доступ запрещен) | suppressed (частичная информация) | processing (ошибка обработки) | not-supported (не поддерживается) | duplicate (попытка создания дубликата) | multiple-matches (несколько совпадений) | not-found (не найден) | deleted (ссылка на удаленный элемент) | too-long (слишком длинное) | code-invalid (ошибочный код) | extension (недопустимое расширение) | too-costly (слишком затратное) | business-rule (нарушено бизнес-правило) | conflict (конфликт версий) | limited-filter (некоторые фильтры могут быть применены не ко всем результатам) | transient (преходящая ошибка) | lock-error (экземпляр блокирован) | no-store (хранилище данных недоступно) | exception (возникло исключение) | timeout (таймаут) | incomplete (неполные результаты) | throttled (система на обслуживании) | informational (информационное) | success (операция успешно завершена)code1
issue. detailsДополнительные сведения об ошибке, например ее описание или код, присвоенный системойCodeableConcept0..1
issue.diagnosticsДополнительная диагностическая информация об отклоненииstring0..*
issue. locationЭтот элемент запрещен, поскольку он специфичен для XML. Он заменен на элемент issue.expression, не зависящий от формата и более простой для разбораstring0..*
issue.expressionВыражение, использующее ограниченное подмножество языка FHIRPath и идентифицирующее один из элементов экземпляра ресурса, значение которого привело к данной ситуацииstring0..*
10.3.4.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 196.

Таблица 196

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
OperationOutcome.issue.severity http://hl7.org/fhir/ValueSet/issue-severity Обязательная Серьезность отклонения от успешной обработки
OperationOutcome.issue.code http://hl7.org/fhir/ValueSet/issue-type Обязательная Тип отклонения от успешной обработки
OperationOutcome.issue.details http://hl7.org/fhir/ValueSet/operation-outcome Пример Примеры кодов дополнительных сведений об ошибке
10.3.4.4 Использование ресурса OperationOutcome

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

Сведения, передаваемые в экземпляре ресурса OperationOutcome, должны быть согласованы с кодом статуса HTTP. Например, если код статуса HTTP сигнализирует об ошибке (300+), то хотя бы один элемент issue должен иметь код серьезности error (ошибка) или fatal-error (фатальная ошибка) и указывать причину ошибки.

Ресурс OperationOutcome должен содержать хотя бы один элемент issue даже в случае успешного результата. В этом случае он должен иметь код серьезности information (информация).

10.3.4.5 Использование выражения expression

В случае предупреждения или ошибки рекомендуется указывать в элементе expression место возникновения проблемы, используя выражение на упрощенном языке FHIRPath. Такое выражение не должно содержать функцию .resolve(). Следующие выражения допустимы:

Person.identifier

Person.identifier[2].value

Пример недопустимого выражения:

Person.identifier.where(system.value='http://example.com/mrn').value

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

Таблица 197

Примеры выражений

Выражение Описание
http.«code» Ссылка на параметр поиска code
http.«name:exact» Ссылка на параметр поиска name с модификатором «:exact»
http.Authorization Ссылка на заголовок Authorization (например, чтобы указать его отсутствие и необходимость определенной формы аутентификации)

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

10.3.5 Параметры операции Parameters
10.3.5.1 Область применения и использования

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

10.3.5.2 Состав ресурса

Диаграмма классов UML ресурса Parameters показана на рисунке 26, состав элементов приведен в таблице 198.

10.3 Ресурсы общего назначения

Рисунок 26 — Ресурс Parameters (параметры операции)

Таблица 198

Состав элементов ресурса Parameters

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
parameterПараметр операцииBackboneElement0..*
parameter.nameНаименование параметра операцииstring1
parameter.value[x]Значение параметра. Вместо [x] должно быть указано имя типа данных, в котором первый символ переведен в верхний регистр*0..1
parameter.resourceЭкземпляр ресурсаResource0..1
parameter.partИменованный компонент составного параметра. Допускается только один уровень вложенияСм. элемент parameter0..*
10.3.5.3 Ограничения

Ограничения ресурса Parameters приведены в таблице 199.

Таблица 199

Ограничения ресурса Parameters

Идентификатор Описание Выражение
Inv-1 В элементе parameter должен присутствовать либо компонент value, либо компонент resource, либо компоненты part (part.exists() and value.empty() and resource.empty()) or (part.empty() and (value.exists() x or resource.exists()))
10.3.6 Подписка Subscription
10.3.6.1 Область применения и использования

Тип ресурса Subscription описывает подписку на уведомления об изменении экземпляров ресурсов, предоставляемые сервером другой системе (клиенту). Темы подписки, поддерживаемые сервером, описаны с помощью экземпляров ресурса SubscriptionTopic, в которых может быть определен набор допустимых фильтров (в элементе SubscriptionTopic.canFilterBy). При регистрации подписки клиенты могут указать требуемые им фильтры (из числа допустимых) в элементе Subscription.filterBy. Как только подписка зарегистрирована, любое событие, удовлетворяющее теме подписки и фильтрам (если они указаны), вызывает отправку клиенту уведомления об этом событии по заданному каналу. Уведомление представляет собой контейнер Bundle типа subscription-notification, в котором первая запись Bundle.entry содержит экземпляр ресурса SubscriptionStatus (статус подписки).

Канал, по которому должны передаваться уведомления, указан в элементе Subscription.channel, а адрес передачи уведомлений — в элементе Subscription.endpoint (конечная точка). В спецификации [22] определены каналы, приведенные в таблице 200. При необходимости могут быть реализованы другие каналы уведомлений.

Таблица 200

Система кодирования http://terminology.hl7.org/CodeSystem/ subscription-channel-type

Код Значение Описание
rest-hook Rest Hook Сервер отправляет уведомление конечной точке с адресом URI помощью метода HTTP POST. Содержание уведомления имеет заданный тип среды MIME
websocket Websocket Сервер отправляет уведомление, используя соединение по веб-сокету с заданным адресом URL, установленное клиентом
email Email Сервер отправляет уведомление по электронной почте на заданный адрес URI
message Message Сервер отправляет уведомление в форме сообщения (то есть контейнер Bundle типа message) приложению, идентифицируемому адресом URI
10.3.6.2 Структура ресурса

Ресурс Subscription является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса Subscription представлен на рисунке 27 и в таблице 201.

10.3 Ресурсы общего назначения

Рисунок 27 — Ресурс Subscription

Таблица 201

Состав элементов ресурса Subscription

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
identifierДополнительный идентификаторIdentifier0..*
nameЧеловеко-читаемое наименование подпискиstring0..1
statusСтатус подписки. Допустимые значения: requested (запрошена) | active (действует) | error (ошибка уведомления) | off (истекла или слишком много ошибок) | entered-in-error (создана по ошибке)code1
topicСсылка на тему подпискиcanonical1
contactКонтактная информация техподдержки подпискиContactPoint0..*
endДата и время завершения подпискиinstant0..1
managingEntityСсылка на субъект, ответственный за изменение подписки. Допустимые типы ресурсов: CareTeam | HealthcareService | Organization | RelatedPerson | Patient | Practitioner | PractitionerRoleReference0..1
reasonПричина подпискиstring0..1
filterByКритерий фильтрации потока подпискиElement0..*
filterBy.resourceTypeТип ресурса, допустимый для данного фильтра подпискиuri0..1
filterBy.filterParameterИмя фильтра, определенное в экземпляре ресурса SubscriptionTopicstring
filterBy.comparatorОператор сравненияcode0..1
filterBy.modifierПоддерживаемый модификатор параметра поиска missing | exact | contains | not | text | in | not-in | below | above | type | identifier | of-type | code-text | text-advanced | iteratecode0..1
filterBy.valueЗначение параметра поиска или путь к элементу ресурса, указываемые в фильтре, например Ie1950 или Patient/123string1
channelTypeТип канала уведомленийcode1
endpointАдрес конечной точки, получающей уведомленияurl0..1
parameter.nameНаименование параметраstring1
parameter.valueЗначение параметраstring1
heartbeatPeriodИнтервал между периодическими уведомлениями в секундахunsignedInt0..1
timeoutТаймаут в секундахunsignedInt0..1
contentTypeТип MIME содержания уведомленияcode0..1
contentОбъем содержания, передаваемого в теле уведомления. Допустимые значения: empty (пустое) | id-only (только id) | full-resource (весь экземпляр ресурса)code0..1
maxCountМаксимальное число событий в одном уведомленииpositiveInt0..1
10.3.6.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 202.

Таблица 202

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
Subscription.status http://hl7.org/fhir/ValueSet/subscription-status Обязательная Статус подписки
Subscription.filterBy.resourceType http://hl7.org/fhir/ValueSet/subscription-types Расширяемая Тип ресурса, допустимый для фильтра подписки
Subscription.filterBy.comparator http://hl7.org/fhir/ValueSet/search-comparator Обязательная Оператор сравнения, используемый в параметрах поиска
Subscription.filterBy. modifier http://hl7.org/fhir/ValueSet/search-modifier-code Обязательная Модификатор параметра поиска
Subscription.channelType http://hl7.org/fhir/ValueSet/subscription-channel-type Расширяемая Тип канала подписки
Subscription.contentType http://hl7.org/fhir/ValueSet/mimetypes Обязательная Тип MIME (все возможные коды из BCP-13, см. http://tools.ietf.org/html/bcp13
Subscription.content http://hl7.org/fhir/ValueSet/subscription-payload-content Обязательная Объем содержания, передаваемого в теле уведомления
10.3.6.4 Ограничения ресурса Subscription

Ограничения ресурса Subscription описаны в таблице 203.

Таблица 203

Ограничения ресурса Subscription

Идентификатор Вид Путь Описание Выражение
scr-1 Правило Subscription.filterBy Элементы comparator и modifier взаимно исключающие (comparator.exists() and modifier.exists()).not()
10.3.6.5 Параметры поиска экземпляров ресурса Subscription

Специальные параметры поиска экземпляров ресурса Subscription описаны в таблице 204. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 204

Специальные параметры поиска экземпляров ресурса Subscription

Имя Тип Описание Выражение
contact token Контактная информация техподдержки подписки Subscription.contact
content-level token Объем содержания, передаваемого в теле уведомления Subscription.content
filter-value string Значение параметра поиска или путь к элементу ресурса Subscription.filterBy.value
identifier token Идентификатор подписки Subscription.identifier
name string Человеко-читаемое наименование подписки Subscription.name
owner reference Субъект, ответственный за изменение подписки Subscription.managingEntity (Practitioner, Organization, CareTeam, Patient, HealthcareService, PractitionerRole, RelatedPerson)
payload token Тип MIME содержания уведомления Subscription.contentType
status token Текущий статус подписки Subscription.status
topic uri Канонический идентификатор темы подписки, инициирующей уведомления Subscription.topic
type token Тип канала уведомлений Subscription.channelType
url uri Адрес конечной точки, получающей уведомления Subscription.endpoint
10.3.6.6 Объем содержания

В элементе content могут быть указаны три варианта объема содержания:

  • empty (пустое);
  • id-only (только идентификатор id);
  • full-resource (весь экземпляр ресурса).

При выборе объема содержания следует принимать во внимание производительность обработки и безопасность персональных медицинских данных. Во многих случаях целесообразно выбрать вариант id-only, обеспечивающий хороший баланс безопасности и производительности. Если сервер не поддерживает запрошенный вариант объема содержания, он может отказать в создании экземпляра ресурса Subscription или принять его с изменением варианта объема содержания.

Если указан вариант объема содержания empty, то любая информация о событии, вызвавшем уведомление, может быть получена по другим каналам, например, с помощью REST API. Получив уведомление, клиент может передать серверу запрос на поиск экземпляров ресурсов, типы которых перечислены в теме подписки SubscriptionTopic, измененных после определенного момента времени. Это наилучший вариант с точки зрения безопасности персональных медицинских данных.

10.3.6.7 Передача пакета уведомлений

При частом обновлении информации по теме подписки сервер может объединить несколько уведомлений в один контейнер Bundle типа subscription-notification. При этом сервер должен не откладывать передачу пакета уведомлений дольше, чем указано в элементе Subscription.heartbeat.

10.3.6.8 Управление подписками

Клиент инициирует взаимодействие create или update, в котором тело запроса содержит экземпляр ресурса Subscription с начальным статусом status = requested (запрошена). При успешном взаимодействии клиент выделяет из заголовка Location, возвращенного сервером в ответ на запрос, логический идентификатор id созданного экземпляра ресурса Subscription для дальнейшего управления подпиской.

Сервер проверяет тело запроса на предмет возможности регистрации подписки. Если регистрация возможна, он создает экземпляр ресурса Subscription со статусом status = requested. В противном случае он по возможности должен возвратить экземпляр ресурса OperationOutcome с указанием причины отказа в регистрации.

При активации подписки сервер присваивает элементу status значение active (действует). Он может это сделать сразу при регистрации подписки, минуя статус requested.

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

Если при передаче уведомления возникла ошибка (например, конечная точка клиента, указанная в Subscription.endpoint, недоступна), то сервер может повторить уведомление фиксированное число раз. Если ошибка не исчезла, то сервер по возможности должен присвоить статусу подписки значение error и сохранить у себя сведения об ошибке, например, в экземпляре ресурса SubscriptionStatus. Сервер может повторить попытки уведомления спустя некоторое время. При успешной передаче уведомления он может присвоить подписке статус active и удалить сохраненные сведения об ошибке. Если повторы попыток не помогают, сервер может присвоить подписке статус off и прекратить дальнейшие попытки.

Сведения об ошибках передаются в экземпляре ресурса SubscriptionStatus, содержащемся в первой записи entry контейнера уведомления Bundle. Клиент может получить сведения об ошибках, запросив применение операции $status к соответствующему экземпляру ресурса Subscription. Для возобновления передачи уведомлений клиент может инициировать взаимодействие изменения update, передав в теле запроса экземпляр ресурса Subscription со статусом active.

10.3.7 Тема подписки SubscriptionTopic
10.3.7.1 Область применения и использования

Тип ресурса SubscriptionTopic описывает тему подписки на уведомления об изменении экземпляров ресурсов, предоставляемые сервером другой системе (клиенту).

10.3.7.2 Структура ресурса

Ресурс SubscriptionTopic является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса SubscriptionTopic представлен на рисунке 28 и в таблице 205.

10.3 Ресурсы общего назначения

Рисунок 28 — Ресурс SubscriptionTopic

Таблица 205

Состав элементов ресурса SubscriptionTopic

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
urlКанонический идентификатор темы подписки в форме глобально уникального URIuri
identifierФормальный идентификатор, используемый для идентификации темы подписки при ее представлении в других форматахIdentifier0..*
versionВерсия темы подпискиstring0..1
versionAlgorithm[x]Способ сравнения версий. Допустимые значения: versionAlgorithmString|version-AlgorithmCoding0..1
nameНаименование темы подписки, предназначенное для компьютерной обработкиstring0..1
titleЧеловеко-читаемое наименование темы подпискиstring0..1
derivedFromБазовая тема подписки, полностью или частично используемая данной темойcanonical0..1
statusСтатус публикации. Допустимые значения: draft (проект) | active (действует) | retired (действие прекращено) | unknown (неизвестен)code
experimentalПризнак использования для целей тестирования или обученияboolean0..1
dateДата (и необязательное время) публикации темы подписки. Она должна обновляться при изменении версии определения или ее статуса либо при существенном изменении его содержанияdateTime0..1
publisherИздатель — наименование организации или Ф.И.О. лица, опубликовавшего тему подпискиstring0..1
contactКонтактная информация издателя темы подпискиContactDetail0..*
descriptionКраткое описание темы подписки, ориентированное на потребителяmarkdown0..1
useContextКонтекст использования темы подпискиUsageContext0..*
jurisdictionСтрана или регион, где предполагается использование темы подписки. Элемент запрещен, оставлен только для обратной совместимости. Вместо него следует использовать элемент useContext с соответствующим значением компонента codeCodeableConcept0..*
purposeОписание назначения темы подпискиmarkdown0..1
copyrightАвторские права на тему подпискиmarkdown0..1
copyrightLabelКраткая характеристика авторских прав (до 50 символов), например, «Все права сохраняются»string0..1
approvalDateДата утверждения темы подпискиdate0..1
lastReviewDateДата последнего пересмотра темы подпискиdate0..1
effectivePeriodПериод действия темы подпискиPeriod1
resourceTriggerОпределение триггера на основе ресурсов, используемого темой подпискиBackboneElement0..*
resourceTrigger.descriptionТекстовое описание триггера на основе ресурсовmarkdown0..1
resourceTrigger.resourceТип ресурса, который может использоваться в данном триггереuri1
resourceTrigger.supportedInteractionПоддерживаемые взаимодействия. Допустимые значения: create (создать) | update (изменить) | delete (удалить)code0..*
resourceTrigger.queryCriteriaПравило срабатывания триггера, основанное на запросеBackboneElement0..1
resourceTrigger.queryCriteria.previousУсловие в форме REST-запроса, применяемого к экземпляру ресурса в том состоянии, которое он имел до выполнения действия (например, до изменения). Указывается без базового URL и ведущей косой черты (/)string0..1
resourceTrigger.queryCriteria.resultForCreateПоведение сервера при создании экземпляра ресурса в случае выполнения условия, указанного в элементе previous. Допустимые значения: test-passes (тест проходит) | test-fails (тест не проходит)code0..1
resourceTrigger.queryCriteria.currentУсловие в форме REST-запроса, применяемого к экземпляру ресурса в том состоянии, которое он имеет после выполнения действия (например, после изменения). Указывается без базового URL и ведущей косой черты (/)string0..1
resourceTrigger.queryCriteria.resultForDeleteПоведение сервера при удалении экземпляра ресурса в случае выполнения условия, указанного в элементе previous. Допустимые значения: test-passes (тест проходит) | test-fails (тест не проходит)code0..1
resourceTrigger.queryCriteria.requireBothЕсли имеет значение true, то для инициации уведомления должны выполняться условия, указанные в элементах previous и current. Если имеет значение false или отсутствует, то уведомление инициируется, когда выполнено хотя бы одно из условий, указанных в previous и currentboolean0..1
eventTriggerОпределение триггера на основе событий, используемого темой подпискиBackboneElement0..*
eventTrigger.descriptionТекстовое описание триггера на основе событийmarkdown0..1
eventTrigger.eventСобытие, инициирующее срабатывание триггераCodeableConcept1
eventTrigger.resourceИмя типа ресурса, который может использоваться в данном триггереuri1
canFilterByСвойство, по которому может фильтроваться уведомление по данной темеBackboneElement0..*
canFilterBy.descriptionОписание параметра фильтраmarkdown0..1
canFilterBy.resourceИмя основного типа ресурса, который может использоваться в данном фильтреuri0..1
canFilterBy.filterParameterИмя фильтра, определенное в экземпляре ресурса SubscriptionTopicstring
canFilterBy.filterDefinitionАдрес URL определения параметра фильтраuri0..1
canFilterBy.comparatorОператор сравненияcode0..*
canFilterBy.modifierПоддерживаемый модификатор параметра фильтра. Допустимые значения: missing | exact | contains | not | text | in | not-in | below | above | type | identifier | of-type | code-text | text-advanced | iteratecode0..*
notificationShapeСвойства, предназначенные для описания форм уведомлений по данной темеBackboneElement0..*
notificationShape.resourceИмя основного типа ресурса, используемого в уведомленииuri1
notificationShape.includeЗначение параметра _include, инициирующего включение ссылочного экземпляра ресурса по прямой ссылкеstring0..*
notificationShape.revincludeЗначение параметра _revinclude, инициирующего включение ссылочного экземпляра ресурса по обратной ссылкеstring0..*
10.3.7.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 206.

Таблица 206

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
Subscription.status http://hl7.org/fhir/ValueSet/subscription-status Обязательная Использование адреса
10.3.7.4 Ограничения ресурса SubscriptionTopic

Ограничения ресурса SubscriptionTopic описаны в таблице 207.

Таблица 207

Ограничения ресурса SubscriptionTopic

Идентификатор Вид Путь Описание Выражение
scr-1 Правило Subscription.filterBy Элементы comparator и modifier взаимно исключающие (comparator.exists() and modifier.exists()).not()
10.3.7.5 Параметры поиска экземпляров ресурса SubscriptionTopic

Специальные параметры поиска экземпляров ресурса SubscriptionTopic описаны в таблице 208. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 208

Специальные параметры поиска экземпляров ресурса SubscriptionTopic

Имя Тип Описание Выражение
date date Дата публикации темы подписки SubscriptionTopic.date
derived-or-self uri Канонический идентификатор темы подписки или базовой темы SubscriptionTopic.url | SubscriptionTopic.derivedFrom
effective date Период действия темы подписки SubscriptionTopic.effectivePeriod
event token Событие, инициирующее срабатывание триггера SubscriptionTopic.eventTrigger.event
identifier token Формальный идентификатор темы подписки SubscriptionTopic.identifier
resource uri Допустимый тип ресурса, который может использоваться в данном триггере SubscriptionTopic.resourceTrigger.resource | SubscriptionTopic.eventTrigger.resource | SubscriptionTopic.canFilterBy.resource | SubscriptionTopic.notificationShape.resource
status token Статус публикации. Допустимые значения: draft | active | retired | unknown SubscriptionTopic.status
title string Человеко-читаемое наименование темы подписки SubscriptionTopic.title
trigger-description string Текстовое описание триггера на основе ресурсов SubscriptionTopic.resourceTrigger.description
url uri Канонический идентификатор темы подписки SubscriptionTopic.url
version token Версия темы подписки SubscriptionTopic.version
10.3.8 Статус подписки SubscriptionStatus
10.3.8.1 Область применения и использования

Тип ресурса SubscriptionStatus описывает статус подписки на уведомления об изменении экземпляров ресурсов, предоставляемые сервером другой системе (клиенту). Он не имеет собственной конечной точки, и его экземпляры используются только в контейнере Bundle типа subscription-notification.

10.3.8.2 Структура ресурса

Ресурс SubscriptionStatus является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса представлен на рисунке 29 и в таблице 209.

10.3 Ресурсы общего назначения

Рисунок 29 — Ресурс SubscriptionStatus

Таблица 209

Состав элементов ресурса SubscriptionStatus

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
Текстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
Modifier-ExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные атрибуты
statusСтатус подписки. Допустимые значения: requested | active | error | off | entered-in-errorcode0..1
typeТип уведомления. Допустимые значения: handshake | heartbeat | event-notification | query-status | query-eventcode0..1
eventsSinceSubscriptionStartЧисло событий с момента начала подпискиinteger640..1
notificationEventДетальные сведения о событиях, относящихся к данному уведомлениюBackboneElement0..*
notificationEvent.eventNumberПорядковый номер событияinteger64
notificationEvent.timeStampШтамп даты и времени возникновения событияinstant0..1
notificationEvent.focusОсновной экземпляр ресурса в сведениях о событииReference0..1
notificationEvent.additionalContextКонтекст события. Обычно содержит ссылку на экземпляр ресурса, связанный с основным экземпляром, указанным в элементе focusReference0..1
subscriptionСсылка на экземпляр ресурса Subscription, инициировавший данное уведомлениеReference
topicСсылка на тему подписки, с которой связано данное уведомлениеcanonical0..1
errorОшибка подпискиCodeableConcept0..*
10.3.8.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 210.

Таблица 210

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
SubscriptionStatus.status http://hl7.org/fhir/ValueSet/subscription-status Обязательная Статус подписки
SubscriptionStatus.type http://hl7.org/fhir/ValueSet/subscription-notification-type Обязательная Тип уведомления
SubscriptionStatus.error http://hl7.org/fhir/ValueSet/subscription-error Пример Код ошибки
10.3.8.4 Ограничения ресурса SubscriptionStatus

Ограничения ресурса SubscriptionStatus описаны в таблице 211.

Таблица 211

Ограничения ресурса SubscriptionStatus

Идентификатор Вид Путь Описание Выражение
sst-1 Правило Базовый При типе уведомления event-notification или query-event элемент notificationEvent обязателен (type = 'event-notification' or type = 'query-event') implies notificationEvent.exists()
sst-2 Правило Базовый При типе уведомления query-status элемент status обязателен type = 'query-status' implies status.exists()
10.3.8.5 Нумерация уведомлений

Поскольку каналы уведомлений, перечисленные в таблице 200, не обеспечивают гарантированную доставку уведомлений, то использование монотонно возрастающей нумерации уведомлений позволяет выявлять некоторые виды ошибок доставки. Если используются другие каналы уведомлений (например, очереди сообщений), то нумерация уведомлений не обязательна, но может оказаться полезной. Поэтому элемент SubscriptionStatus.notificationEvent.eventNumber определен как обязательный. При этом нумерация может быть сквозной для всех уведомлений по данной подписке или же только для уведомлений, переданных в конкретном контейнере Bundle.

10.3.8.6 Типы уведомлений

Определены пять типов уведомлений:

Во всех случаях тело уведомления представляет собой контейнер Bundle типа Issubscription-notification, в котором первая запись Bundle.entry содержит экземпляр ресурса SubscriptionStatus (статус подписки).

10.3.8.7 Уведомление о событии

При уведомлении о событии (SubscriptionStatus.type=event) к элементам ресурса SubscriptionStatus предъявляются требования, приведенные в таблице 212.

Таблица 212

Требования к элементам ресурса SubscriptionStatus при уведомлении о событии

Элемент Обязательность Примечание
SubscriptionStatus.status Рекомендован Текущий статус соответствующей подписки (например, active)
SubscriptionStatus. type Обязателен Должен иметь значение event-notification
SubscriptionStatus.eventsSinceSubscriptionStart Условно обязателен Обязателен для каналов уведомлений, не гарантирующих доставку
SubscriptionStatus.notificationEvent Обязателен При уведомлении о событии этот элемент обязателен
SubscriptionStatus.notificationEvent.eventNumber Условно обязателен Обязателен для каналов уведомлений, не гарантирующих доставку
SubscriptionStatus.notificationEvent.timestamp Рекомендован По значению этого элемента клиент может определить фактический момент возникновения события
SubscriptionStatus.notificationEvent.focus Условно обязателен Обязательность зависит от объема содержания, передаваемого в теле уведомления:
empty: должен отсутствовать;
id-only: должен присутствовать;
full-resource: должен присутствовать
SubscriptionStatus.notificationEvent.additionalContext Условно обязателен Обязательность зависит от объема содержания, передаваемого в теле уведомления:
empty: должен отсутствовать;
id-only: по возможности должен присутствовать;
full-resource: по возможности должен присутствовать
SubscriptionStatus.topic Необязателен Если по человеко-читаемому описанию темы подписки можно определить, что в содержание уведомления включена персональная медицинская информация, то из соображений ее безопасности этот элемент лучше опустить
10.3.8.8 Соединение

При уведомлении о соединении (SubscriptionStatus.type=event) к элементам ресурса SubscriptionStatus предъявляются требования, приведенные в таблице 213. Действия клиента по получении такого уведомления зависят от канала уведомлений. Например, если уведомления передаются по каналу rest-hook, то конечная точка клиента должна возвратить серверу соответствующий код статуса HTTP.

Таблица 213

Требования к элементам ресурса SubscriptionStatus при уведомлении о соединении

Элемент Обязательность Примечание
SubscriptionStatus.status Рекомендован Текущий статус соответствующей подписки (например, active)
SubscriptionStatus.type Обязателен Должен иметь значение handshake
SubscriptionStatus.eventsSinceSubscriptionStart Необязателен Если этот элемент присутствует, то для вновь созданной подписки он должен иметь значение 0. При повторном соединении его значение может быть ненулевым
SubscriptionStatus.notificationEvent Условно обязателен В контейнер Bundle с уведомлением о соединении могут быть включены уведомления о событиях (например, при возобновлении соединения сервер может включить в контейнер Bundle уведомления обо всех событиях, имевших место после завершения соединения)
SubscriptionStatus.notificationEvent.eventNumber Условно обязателен Обязателен для каналов уведомлений, не гарантирующих доставку
SubscriptionStatus.notificationEvent.timestamp Условно обязателен Если в контейнер Bundle с уведомлением о соединении включены уведомления о предыдущих событиях, то рекомендуется передавать этот элемент, чтобы клиент мог обработать уведомления о предыдущих событиях в правильном контексте
SubscriptionStatus.notificationEvent. focus Условно обязателен Обязательность зависит от объема содержания, передаваемого в теле уведомления:
empty: должен отсутствовать;
id-only: должен присутствовать;
full-resource: должен присутствовать
SubscriptionStatus.notificationEvent.additionalContext Условно обязателен Обязательность зависит от объема содержания, передаваемого в теле уведомления:
empty: должен отсутствовать;
id-only: по возможности должен присутствовать;
full-resource: по возможности должен присутствовать
SubscriptionStatus.topic Необязателен Если по человеко-читаемому описанию темы подписки можно определить, что в содержание уведомления включена персональная медицинская информация, то из соображений ее безопасности этот элемент лучше опустить
10.3.8.9 Периодическое уведомление

При периодическом уведомлении (SubscriptionStatus.type= heartbeat) к элементам ресурса SubscriptionStatus предъявляются требования, приведенные в таблице 214.

Таблица 214

Требования к элементам ресурса SubscriptionStatus при периодическом уведомлении

Элемент Обязательность Примечание
SubscriptionStatus.status Рекомендован Текущий статус соответствующей подписки (например, active)
SubscriptionStatus.type Обязателен Должен иметь значение heartbeat
SubscriptionStatus.eventsSinceSubscriptionStart Условно рекомендован Наличие этого элемента позволяет клиенту выявить пропуск уведомлений. Рекомендован для подписок, не гарантирующих доставку уведомлений
SubscriptionStatus.notificationEvent Условно обязателен В контейнер Bundle с периодическим уведомлением могут быть включены уведомления о событиях (например, при возобновлении соединения сервер может включить в контейнер Bundle уведомления обо всех событиях, имевших место после завершения соединения)
SubscriptionStatus.notificationEvent.eventNumber Условно обязателен Если в контейнер Bundle с периодическим уведомлением включены уведомления о предыдущих событиях, то рекомендуется передавать этот элемент для каналов уведомлений, не гарантирующих доставку
SubscriptionStatus.notificationEvent.timestamp Условно обязателен Если в контейнер Bundle с периодическим уведомлением включены уведомления о предыдущих событиях, то рекомендуется передавать этот элемент, чтобы клиент мог обработать уведомления о предыдущих событиях в правильном контексте
SubscriptionStatus.notificationEvent.focus Условно обязателен Обязательность зависит от объема содержания, передаваемого в теле уведомления:
empty: должен отсутствовать;
id-only: при наличии элемента notificationEvent должен присутствовать;
full-resource: при наличии элемента notificationEvent должен присутствовать
SubscriptionStatus.notificationEvent.additionalContext Условно обязателен Обязательность зависит от объема содержания, передаваемого в теле уведомления:
empty: должен отсутствовать;
id-only: при наличии элемента notificationEvent по возможности должен присутствовать;
full-resource: при наличии элемента notificationEvent по возможности должен присутствовать
SubscriptionStatus.topic Необязателен Если по человеко-читаемому описанию темы подписки можно определить, что в содержание уведомления включена персональная медицинская информация, то из соображений ее безопасности этот элемент лучше опустить
10.3.8.10 Запрос статуса

Клиент может запросить у сервера текущий статус подписки с помощью операции $status. В ответ на этот запрос сервер должен возвратить уведомление, в котором SubscriptionStatus.type = query-status. К элементам возвращенного экземпляра ресурса SubscriptionStatus предъявляются требования, приведенные в таблице 215.

Таблица 215

Требования к элементам ресурса SubscriptionStatus при запросе статуса

Элемент Обязательность Примечание
SubscriptionStatus.status Обязателен Текущий статус соответствующей подписки (например, active)
SubscriptionStatus.type Обязателен Должен иметь значение query-status
SubscriptionStatus.eventsSinceSubscriptionStart Условно обязателен Наличие этого элемента позволяет клиенту выявить пропуск уведомлений. Обязателен для подписок, не гарантирующих доставку уведомлений
SubscriptionStatus.notificationEvent Условно обязателен В контейнер Bundle с ответом на запрос статуса могут быть включены уведомления о недавних событиях
SubscriptionStatus.topic Рекомендован Если по человеко-читаемому описанию темы подписки можно определить, что в содержание уведомления включена персональная медицинская информация, то из соображений ее безопасности этот элемент лучше опустить. В остальных случаях этот элемент рекомендован
10.3.8.11 Запрос события

Сервер может обеспечивать обработку запроса сведений о событиях, которые уже произошли, переданного с помощью операции $events. В ответ на этот запрос сервер должен возвратить уведомление, в котором SubscriptionStatus.type = query-event. К элементам возвращенного экземпляра ресурса SubscriptionStatus предъявляются требования, приведенные в таблице 216.

Таблица 216

Требования к элементам ресурса SubscriptionStatus при запросе события

Элемент Обязательность Примечание
SubscriptionStatus.status Рекомендован Текущий статус соответствующей подписки (например, active)
SubscriptionStatus.type Обязателен Должен иметь значение query-event
SubscriptionStatus.eventsSinceSubscriptionStart Условно рекомендован Наличие этого элемента позволяет клиенту выявить пропуск уведомлений. Рекомендован для подписок, не гарантирующих доставку уведомлений
SubscriptionStatus.notificationEvent Условно обязателен Обязателен, если сведения о событиях найдены
SubscriptionStatus.notificationEvent.eventNumber Условно обязателен Обязателен для каналов уведомлений, не гарантирующих доставку
SubscriptionStatus.notificationEvent.timestamp Рекомендован По значению этого элемента клиент может определить фактический момент возникновения события
SubscriptionStatus.notificationEvent.focus Условно обязателен Обязательность зависит от объема содержания, передаваемого в теле уведомления:
empty: должен отсутствовать;
id-only: при наличии элемента notificationEvent должен присутствовать;
full-resource: при наличии элемента notificationEvent должен присутствовать
SubscriptionStatus.notificationEvent.additionalContext Условно обязателен Обязательность зависит от объема содержания, передаваемого в теле уведомления:
empty: должен отсутствовать;
id-only: при наличии элемента notificationEvent по возможности должен присутствовать;
full-resource: при наличии элемента notificationEvent по возможности должен присутствовать
SubscriptionStatus.topic Необязателен Если по человеко-читаемому описанию темы подписки можно определить, что в содержание уведомления включена персональная медицинская информация, то из соображений ее безопасности этот элемент лучше опустить

11 Модель данных хранилища результатов измерений

11.1 Состав данных хранилища результатов измерений

11.1.1 Общий состав данных

Хранилище результатов измерений содержит данные трех основных служб (рисунок 30):

11.1 Состав данных хранилища результатов измерений

Рисунок 30 — Общий состав данных хранилища результатов измерений

11.1.2 Состав данных службы результатов измерений
11.1.2.1 Общие требования

Состав данных службы результатов измерений представлен в таблице 217.

Таблица 217

Состав данных службы результатов измерений

Раздел хранилища Описание
Дневники Дневники самонаблюдения, приема лекарств, приема питания
Эпикризы и предупреждения Этапные эпикризы, предупреждения и напоминания пациенту
Персональные медицинские приборы Идентификация и свойства персональных медицинских приборов и менеджеров
Планы ведения Планы ведения пациентов
Результаты измерений Результаты измерений, выполненных ПМП
11.1.2.2 Дневники

Состав данных раздела «Дневники» приведен на рисунке 31 и в таблице 218. На рисунке показаны ссылки между экземплярами ресурсов, в том числе ссылки на экземпляры ресурсов, хранящихся в других разделах.

11.1 Состав данных хранилища результатов измерений

Рисунок 31 — Состав данных раздела «Дневники»

Таблица 218

Состав данных раздела «Дневники»

Имя Описание Ресурс/профиль Пункт
Запись дневника Абстрактный объект, используется для группировки видов записей дневников - -
Запись дневника питания Запись дневника приема питания NutritionIntake 11.18
Запись дневника приема лекарств Запись дневника приема или применения лекарственных препаратов MedicationStatement 11.15
Запись дневника самонаблюдений Запись дневника самонаблюдений Questionnaire-Response 11.16
Форма дневника Форма дневника самонаблюдений Questionnaire 11.17
11.1.2.3 Эпикризы и предупреждения

Состав данных раздела «Эпикризы и предупреждения» представлен на рисунке 32 и в таблице 219. На рисунке показаны ссылки между экземплярами ресурсов, в том числе ссылки на экземпляры ресурсов, хранящихся в других разделах.

11.1 Состав данных хранилища результатов измерений

Рисунок 32 — Состав данных раздела «Эпикризы и предупреждения»

Таблица 219

Состав данных раздела «Эпикризы и предупреждения»

Имя Описание Ресурс/профиль Пункт
Заключение врача Этапный эпикриз в процессе ведения пациента и по завершении плана ведения DiagnosticReport-Dm 11.14.6
Результат исследования Результат исследования, полученный вне рамок дистанционного мониторинга Observation, вложен в экземпляр ресурса DiagnosticReport 11.11
Предупреждение или напоминание Предупреждение или напоминание, предназначенное пациенту DetectedIssue-Dm 11.19
11.1.2.4 Персональные медицинские приборы

Состав данных раздела «Персональные медицинские приборы» представлен на рисунке 33 и в таблице 220. На рисунке показаны ссылки между экземплярами ресурсов, в том числе ссылки на экземпляры ресурсов, хранящихся в других разделах.

11.1 Состав данных хранилища результатов измерений

Рисунок 33 — Состав данных раздела «Персональные медицинские приборы»

Таблица 220

Состав данных раздела «Персональные медицинские приборы»

Имя Описание Ресурс/профиль Пункт
Персональный медицинский прибор Персональный медицинский прибор Device-Phd 11.7.7
Менеджер ПМП Менеджер персонального медицинского прибора Device-Phg 11.7.8
11.1.2.5 Планы ведения

Состав данных раздела «Планы ведения» представлен на рисунке 34 и в таблице 220. На рисунке показаны ссылки между экземплярами ресурсов, в том числе ссылки на экземпляры ресурсов, хранящихся в других разделах.

11.1 Состав данных хранилища результатов измерений

Рисунок 34 — Состав данных раздела «Планы ведения»

Таблица 221

Состав данных раздела «Планы ведения»

ИмяОписаниеРесурс/профильПункт
План ведения ДМПлан ведения дистанционного мониторинга пациентаCarePlan-DM11.2.5
Целевой показательЦелевой показатель, который планируется достичь в результате выполнения плана веденияGoal-DM11.3.6
Результат исследованияРезультат исследований, необходимый для вычисляемого результата измерений (например, рост пациента для весов, способных вычислить индекс массы тела)Observation11.11
МероприятиеМероприятие, выполняемое в рамках плана веденияTask11.5.8
Измерение с помощью ПМПTask-Phd11.5.10
Лекарственное назначениеTask-Medication11.5.9
Ведение дневника приема лекарствTask-MedStat11.5.11
Ведение дневника питанияTask-NutrInt11.5.12
Ведение дневника самонаблюденийTask-QuestResp11.5.13
Составление заключения врачаTask-DiagRep11.5.14
Лечащий врачМедицинский специалист, составивший план ведения и контролирующий его выполнениеPractitioner-Dm11.13.5
ПациентПациент, которому назначен план дистанционного мониторингаPatient-Dm11.12.6
Привязка прибора к пациентуАссоциация между пациентом и персональным медицинскими прибором или менеджером ПМПDeviceAssociation-Dm11.8.5
Метрика прибораИзмерительная способность ПМПDeviceMetric11.10
11.1.2.6 Результаты измерений

Состав данных раздела «Результаты измерений» представлен на рисунке 35 и в таблице 222. На рисунке показаны ссылки между экземплярами ресурсов, в том числе ссылки на экземпляры ресурсов, хранящихся в других разделах.

11.1 Состав данных хранилища результатов измерений

Рисунок 35 — Состав данных раздела «Результаты измерений»

Таблица 222

Состав данных раздела «Результаты измерений»

Имя Описание Ресурс/профиль Пункт
Скалярная величина Числовой результат: физическая величина, например, частота сердечных сокращений, процент заряда батареи прибора Observation-PhdNumeric 11.11.24
Сверка показаний таймеров Сверка показаний таймеров менеджера и ПМП Observation-PhdCoincidentTimeStamp 11.11.31
Массив скалярных величин Совокупность связанных физических величин, например, систолическое и диастолическое артериальное давление Observation-PhdCompoundNumeric 11.11.25
Строковый результат Человеко-читаемая строка, принадлежащая определенному списку Observation-PhdStringEnumeration 11.11.28
Кодируемый результат Кодированное значение, принадлежащее определенному справочнику значений Observation-PhdCodedEnumeration 11.11.26
Битовый результат Целое число, отдельные биты которого характеризуют определенные состояния, например, состояние источника питания, состояние датчика Observation-PhdBitsEnumeration 11.11.27
Массив считываний Массив числовых считываний биосигнала, например, кардиограммы Observation-PhdRtsa 11.11.29
Медиаданные Медиаданные, например, растровое изображение или аудиоданные Observation-PhdMedia 11.11.30
11.1.3 Состав данных службы подписки

Состав данных службы подписки приведен на рисунке 36 и в таблице 223.

11.1 Состав данных хранилища результатов измерений

Рисунок 36 — Состав данных службы подписки

Таблица 223

Состав данных службы подписки

Имя Описание Ресурс Пункт
Подписка Подписка на уведомления по определенной теме Subscription 10.3.6
Тема подписки Тема, доступная для подписки SubscriptionTopic 10.3.7
11.1.4 Состав данных терминологической службы

Состав данных терминологической службы приведен на рисунке 37 и в таблице 224.

11.1 Состав данных хранилища результатов измерений

Рисунок 37 — Состав данных терминологической службы

Таблица 224

Состав данных терминологической службы

Имя Описание Ресурс Пункт
Набор значений Подмножество понятий из системы кодирования и (необязательно) одного или нескольких наборов значений ValueSet 15.2.2
Система кодирования Коллекция кодированных понятий (справочник или классификатор) CodeSystem 15.1.2

11.2 Ресурс CarePlan — план дистанционного мониторинга пациента

11.2.1 Область применения и использования

Тип ресурса CarePlan описывает индивидуальный план ведения пациента, составляемый лечащим врачом на основе одного или нескольких типовых планов с учетом особенностей состояния здоровья и социального статуса пациента. Индивидуальный план ведения обычно включает в себя несколько мероприятий — визиты к врачам разных специальностей (явки), обследования и лечебных воздействий. Мероприятия должны проводиться в определенном порядке. Часть мероприятий должна проводиться строго одно после другого, часть мероприятий может проводиться независимо друг от друга или параллельно. Порядок проведения мероприятий задается правилами типа «визит к пульмонологу должен проводиться после рентгенографии легких» или «повторный визит к участковому терапевту должен проводиться после выполнения всех остальных мероприятий».

Для каждого мероприятия плана задают:

11.2.2 Структура ресурса

Ресурс CarePlan является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса CarePlan представлен на рисунке 38 и в таблице 225.

11.2 Ресурс CarePlan - план дистанционного мониторинга пациента

Рисунок 38 — Ресурс CarePlan

Таблица 225

Состав элементов ресурса CarePlan

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
identifierИдентификатор плана веденияIdentifier0..*
instantiatesCanonicalСсылка на типовой план, представленный в виде экземпляра ресурсаcanonical0..*
instantiatesUriСсылка на URL типового планаuri0..*
basedOnСсылка на план, требование или направление, на котором основан данный планReference0..*
replacesСсылка на заменяемый планReference0..*
partOfСсылка на головной планReference0..*
statusСтатус плана. Допустимые значения: draft | active | on-hold | revoked | completed | entered-in-error | unknowncode1
intentРоль плана. Допустимые значения: proposal | plan | order | option | directivecode1
categoryТип плана веденияCodeableConcept0..*
titleЧеловеко-читаемое наименование планаstring0..1
descriptionОписание планаstring0..1
subjectСсылка на субъект плана — пациент или группаReference1
encounterСсылка на случай медицинской помощиReference0..1
periodПериод действия планаPeriod0..1
createdДата и время создания планаdateTime0..1
custodianСсылка на ответственное лицо или организациюReference0..1
contributorСсылка на лицо, роль, устройство или организацию, принявшие участие в составлении планаReference0..*
careTeamСсылка на бригаду медицинских работников, участвующих в назначении и выполнении планаReference0..*
addressesКод клинического состояния пациента или ссылка на описание состояния, в связи с которым назначен данный планCodeable-Reference0..*
supportingInfoСсылка на экземпляр ресурса, являющийся частью данного планаReference0..*
goalСсылка на желательный результат планаReference0..*
activityМероприятие, которое уже выполнено или должно быть выполнено в рамках планаBackbone-Element0..*
performedActivityСсылка на мероприятие планаCodeable-Reference0..*
progressПримечания к статусу или выполнению мероприятияAnnotation0..*
plannedActivityReferenceСсылка на планируемое мероприятиеReference0..*
noteПримечание к плануAnnotation0..*
11.2.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 226.

Таблица 226

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
CarePlan.status http://hl7.org/fhir/ValueSet/request-status Обязательная Состояния жизненного цикла требования
CarePlan.intent http://hl7.org/fhir/ValueSet/care-plan-intent Обязательная Степень директивности
CarePlan.category http://hl7.org/fhir/ValueSet/care-plan-category Пример Тип плана ведения
CarePlan.addresses http://hl7.org/fhir/ValueSet/clinical-findings Пример Клиническое состояние пациента
CarePlan.activity.performedActivity http://hl7.org/fhir/ValueSet/care-plan-activity-performed Пример Тип мероприятия плана ведения
11.2.4 Параметры поиска экземпляров ресурса CarePlan

Специальные параметры поиска экземпляров ресурса CarePlan описаны в таблице 227. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 227

Специальные параметры поиска экземпляров ресурса CarePlan

Имя Тип Описание Выражение
activity-reference reference Планируемое мероприятие CarePlan.activity.plannedActivityReference (Appointment, MedicationRequest, Task, NutritionOrder, RequestOrchestration, VisionPrescription, DeviceRequest, ServiceRequest, CommunicationRequest, ImmunizationRecommendation, SupplyRequest)
based-on reference Ссылка на план, требование или направление, на котором основан данный план CarePlan.basedOn (CarePlan, RequestOrchestration, NutritionOrder, ServiceRequest)
care-team reference Ссылка на бригаду медицинских работников CarePlan.careTeam (CareTeam)
category token Тип плана ведения CarePlan.category
condition reference Ссылка на описание состояния пациента CarePlan.addresses.reference
custodian reference Ссылка на ответственное лицо или организацию CarePlan.custodian (Practitioner, Organization, CareTeam, Device, Patient, PractitionerRole, RelatedPerson)
date date Период действия плана CarePlan.period
encounter reference Ссылка на случай медицинской помощи CarePlan.encounter (Encounter)
goal reference Ссылка на желательный результат плана CarePlan.goal (Goal)
identifier token Идентификатор плана ведения CarePlan.identifier
instantiates-canonical reference Ссылка на типовой план, представленный в виде экземпляра ресурса CarePlan.instantiatesCanonical (Question-naire, Measure, PlanDefinition, OperationDefinition, ActivityDefinition)
instantiates-uri uri Ссылка на URL типового плана CarePlan.instantiatesUri
intent token Роль плана. Допустимые значения: proposal | plan | order | option | directive CarePlan.intent
part-of reference Ссылка на головной план CarePlan.partOf (CarePlan)
patient reference Ссылка на пациента — субъекта плана CarePlan.subject.where(resolve() is Patient) (Patient)
replaces reference Ссылка на заменяемый план CarePlan.replaces (CarePlan)
status token Статус плана. Допустимые значения: draft | active | on-hold | revoked | completed | entered-in-error | unknown CarePlan.status
subject reference Ссылка на субъект плана CarePlan.subject
11.2.5 Профиль плана дистанционного мониторинга пациента

Профиль плана дистанционного мониторинга пациента CarePlan-Dm ограничивает элементы ресурса CarePlan в соответствии с рисунком 39 и таблицей 228. Имя ресурса остается неизменным — CarePlan, имя профиля передается в элементе meta.profile.

11.2 Ресурс CarePlan - план дистанционного мониторинга пациента

Рисунок 39 — Профиль CarePlan-Dm

Таблица 228

Состав элементов профиля CarePlan-Dm

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
Унаследованы от абстрактного класса DomainResource
textПолное описание плана ведения, ориентированное на пациентаNarrattive1
text.statusСтатус повествовательного содержания. Фиксированное значение «additional»code1
text.divТекст в формате xhtml с ограниченным форматированиемxhtml1
Собственные элементы
identifierИдентификатор плана ведения, присвоенный медицинской информационной системойIdentifier1
statusСтатус плана. Допустимые значения: draft | active | on-hold | revoked | completed | entered-in-error | unknowncode1
intentРоль плана. Фиксированное значение «plan»code1
categoryТип плана веденияCodeableConcept1
descriptionКраткое описание планаstring1
subjectСсылка на идентификацию пациентаReference1
periodПериод действия планаPeriod1
custodianСсылка на идентификацию лечащего врачаReference1
supportingInfoСсылка на экземпляр ресурса Observation со сведениями о показателях, необходимых для интерпретации результатов измеренийReference0..*
goalСсылка на желательный результат планаReference1..*
11.2.6 Контекст профиля

Содержание экземпляра ресурса CarePlan представляет собой только часть плана ведения. Полное содержание плана ведения может быть представлено направленным графом, включающим в себя ссылочные экземпляры ресурсов. Этот граф служит контекстом профиля.

Рекомендуемый контекст профиля плана дистанционного мониторинга пациента показан на рисунке 40.

11.2 Ресурс CarePlan - план дистанционного мониторинга пациента

Рисунок 40 — Контекст профиля CarePlan-DM

Согласно этому рисунку, полный план дистанционного мониторинга пациента должен включать в себя:

11.2.7 Создание и изменение плана дистанционного мониторинга

Полный план дистанционного мониторинга пациента должен передаваться в контейнере транзакции Bundle, у которого элемент type имеет значение transaction. В процессе выполнения в план могут вноситься изменения, которые также должны передаваться в контейнере транзакции Bundle.

При завершении или прекращении выполнения плана следует присвоить элементу CarePlan.status значение revoked или completed, элементу CarePlan.period.end присвоить дату (дату и время) этого события, и внести соответствующие изменения во все экземпляры ресурсов Task, содержащие ссылки на данный экземпляр ресурса CarePlan. Все эти действия должны быть специфицированы в одном контейнере транзакции Bundle.

При приостановке выполнения плана следует присвоить элементу CarePlan.status значение on-hold, и внести соответствующие изменения статуса во все экземпляры ресурсов Task, содержащие ссылки на данный экземпляр ресурса CarePlan и имеющие значение статуса in-progress.

При возобновлении выполнения плана следует присвоить элементу CarePlan.status значение active и выполнить замену статуса на in-progress во всех экземплярах ресурса Task, содержащих ссылки на данный экземпляр ресурса CarePlan, у которых предыдущее значение статуса имело значение in-progress.

Действия по приостановке или возобновления выполнения должны быть специфицированы в одном контейнере транзакции Bundle.

В процессе выполнения плана не должны допускаться изменения следующих элементов ресурса CarePlan:

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

11.3 Ресурс Goal — цель

11.3.1 Область применения и использования

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

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

11.3.2 Структура ресурса

Ресурс Goal является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса Goal представлен на рисунке 41 и в таблице 229.

11.3 Ресурс Goal - цель

Рисунок 41 — Ресурс Goal

Таблица 229

Состав элементов ресурса Goal

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
identifierВнешний идентификатор целиIdentifier0..*
lifecycleStatusСостояние жизненного цикла цели. Допустимые значения: proposed (предложена) | planned (запланирована) | accepted (принята) | active (действует) | on-hold (приостановлена) | completed (достигнута) | cancelled (отменена) | entered-in-error (введена по ошибке) | rejected (отклонена)code1
achievement-StatusСостояние достижения цели. Рекомендованные значения: in-progress (в процессе) | improving (улучшение) | worsening (ухудшение) | no-change (без изменений) | achieved (достигнута) | sustaining (необходимо поддерживать) | not-achieved (не достигнута) | no-progress (без динамики) | not-attainable (недостижима)CodeableConcept0..1
categoryКатегория целиCodeableConcept0..*
continuousПосле достижения цели требуется поддержкаboolean0..1
priorityПриоритет цели. Рекомендованные значения: high-priority (высокий приоритет) | medium-priority (умеренный приоритет) | low-priority (низкий приоритет)CodeableConcept0..1
descriptionКод или текст описания целиCodeableConcept1
subjectСсылка на субъект целиReference1
start[x]Начало движения к цели*0..1
targetЦелевой показательBackboneElement0..*
target.measureКод или наименование целевого параметраCodeableConcept0..1
target.detail[x]Значение целевого параметра*0..1
target.due[x]Ожидаемая дата или длительность достижения цели*0..1
statusDateДата перехода в текущее состояниеdate0..1
statusReasonПричина перехода в текущее состояниеstring0..1
sourceСсылка на лицо, ответственное за достижение целиReference0..1
addressesСсылка на состояние/диагноз, в связи с которым поставлена цельReference0..*
noteПримечание к целиAnnotation0..*
outcomeКод достигнутого показателя или ссылка на негоCodeableReference0..*
11.3.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 230.

Таблица 230

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
Goal.lifecycleStatus http://hl7.org/fhir/ValueSet/goal-status Обязательная Состояние жизненного цикла цели
Goal.achievementStatus http://hl7.org/fhir/ValueSet/goal-achievement Предпочтительная Состояние достижения цели
Goal.category http://hl7.org/fhir/ValueSet/goal-category Пример Категория цели
Goal.priority http://hl7.org/fhir/ValueSet/goal-priority Предпочтительная Приоритет цели
Goal.description http://hl7.org/fhir/ValueSet/clinical-findings Пример Коды состояний, проблем и диагнозов, определенные в номенклатуре SNOMED CT как потомки понятия с кодом 404684003
Goal.start[x] http://hl7.org/fhir/ValueSet/goal-start-event Пример Начало движения к цели
Goal.target.measure http://hl7.org/fhir/ValueSet/observation-codes Пример Все коды LOINC
Goal.outcome http://hl7.org/fhir/ValueSet/clinical-findings Пример Коды состояний, проблем и диагнозов, определенные в номенклатуре SNOMED CT как потомки понятия с кодом 404684003
11.3.4 Ограничения ресурса Goal

Ограничения ресурса Goal описаны в таблице 231.

Таблица 231

Ограничения ресурса Goal

Идентификатор Вид Путь Описание Выражение
gol-1 Правило Goal.target Если элемент Goal.target.detail присутствует, то должен присутствовать элемент Goal.target.measure (detail.exists() and measure.exists()) or detail.exists().not()
11.3.5 Параметры поиска экземпляров ресурса Goal

Специальные параметры поиска экземпляров ресурса Goal описаны в таблице 232. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 232

Специальные параметры поиска экземпляров ресурса Goal

Имя Тип Описание Выражение
achievement-status token Состояние достижения цели Goal.achievementStatus
addresses reference Ссылка на состояние/диагноз, в связи с которым поставлена цель Goal.addresses
(Condition, RiskAssessment, MedicationRequest, NutritionOrder, Observation, Procedure, MedicationStatement, ServiceRequest)
category token Категория цели Goal.category
description token Код или текст описания цели Goal.description
identifier token Внешний идентификатор цели Goal.identifier
lifecycle-status token Состояние жизненного цикла цели Goal.lifecycleStatus
patient reference Ссылка на субъект цели — пациент Goal.subject.where(resolve() is Patient) (Patient)
start-date date Дата начала движения к цели (Goal.start.ofType(date))
subject reference Ссылка на субъект цели Goal.subject
(Group, Organization, Patient)
target-date date Ожидаемая дата достижения цели (Goal.target.due.ofType(date))
target-measure token Код или наименование целевого параметра Goal.target.measure
11.3.6 Профиль цели дистанционного мониторинга пациента

Профиль цели дистанционного мониторинга пациента Goal-Dm ограничивает элементы ресурса Goal в соответствии с рисунком 42 и таблицей 233. Имя ресурса остается неизменным — Goal, имя профиля передается в элементе meta.profile.

11.3 Ресурс Goal - цель

Рисунок 42 — Профиль Goal-Dm

Таблица 233

Состав элементов профиля Goal-Dm

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание цели, ориентированное на пациентаNarrattive0..1
text.statusСтатус повествовательного содержания. Фиксированное значение «additional»code1
text.divТекст в формате xhtml с ограниченным форматированиемxhtml1
Собственные элементы
identifierУникальный идентификатор цели, присвоенный медицинской информационной системойIdentifier1
lifecycleStatusСостояние жизненного цикла цели. Допустимые значения: proposed (предложена) | planned (запланирована) | accepted (принята) | active (действует) | on-hold (приостановлена) | completed (достигнута) | cancelled (отменена) | entered-in-error (введена по ошибке) | rejected (отклонена)code1
descriptionКод или текст описания целиCodeableConcept1
subjectСсылка на субъект целиReference1
targetЦелевой показательBackboneElement0..*
target.measureКод или наименование целевого параметраCodeableConcept1
target.detailRangeДиапазон значений целевого параметраRange1
statusDateДата перехода в текущее состояниеdate1

11.4 Ресурс ServiceRequest — назначение

11.4.1 Область применения и использования

В зависимости от значения элемента intent тип ресурса ServiceRequest описывает назначение, предложение или план диагностических и иных мероприятий, результаты которых представляются в виде экземпляров ресурсов Procedure (процедура), DiagnosticReport (заключение врача) и Observation (результат исследования).

Примерами мероприятий служат:

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

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

11.4.2 Структура ресурса

Ресурс ServiceRequest является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса ServiceRequest представлен на рисунке 43 и в таблице 234.

11.4 Ресурс ServiceRequest - назначение

Рисунок 43 — Ресурс ServiceRequest

Таблица 234

Состав элементов ресурса ServiceRequest

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
identifierИдентификатор назначенияIdentifier0..*
instantiatesCanonicalСсылка на экземпляр ресурса, описывающий определение назначенияcanonical0..*
instantiatesUriСсылка на внешнее определение назначенияuri0..*
basedOnСсылка на требование, для выполнения которого предназначено назначенияReference0..*
replacesЗаменяемое назначениеReference0..*
requisitionОбщий идентификатор группы связанных назначений или требованийIdentifier0..1
statusСостояние выполнения назначения. Допустимые значения: draft (в процессе подготовки) | active (действует) | on-hold (приостановлено) | revoked (отозвано) | completed (завершено) | entered-in-error (создано по ошибке) | unknown (неизвестное)code1
intentКатегория требования, с которым связано выполнение назначения. Допустимые значения: proposal (предложение) | plan (план) | directive (указание) | order (требование) | original-order (исходное требование) | reflex-order (вторичное требование) | filler-order (требование исполнителя) | instance-order (частичное требование) | option (опция)code1
partOfСсылка на мероприятие, частью которого является данное мероприятиеReference0..*
categoryКлассификация назначенияCodeableConcept0..1
priorityСрочность назначения. Допустимые значения: routine (обычная) | urgent (ургентная) | asap (как можно скорее) | stat (немедленно). По умолчанию — обычнаяcode0..1
doNot-PerformЗначение true указывает, что данное назначение в определенных случаях не должно выполняться. Эти случаи определяются значениями элементов code, occurrence, bodySite и performer. Например, если присутствует элемент occurrence — не должно выполняться в течение данного периода, если присутствует элемент performer — не должно выполняться данным исполнителемboolean0..1
codeКод назначения или ссылка на определение плана или действияCodeableReference0..1
orderDetailДополнительные детали и указания по выполнению назначенияBackboneElement0..*
orderDetail.Parameter-FocusКод контекста назначения или ссылка на контекстCodeableReference0..1
orderDetail.parameterДополнительная информация, требуемая для выполнения данного назначенияBackboneElement1..*
orderDetail.parameter. codeТип параметра, например, device-configuration (детали конфигурации прибора)CodeableConcept1
orderDetail.parameter.value[x]Значение параметра*1
quantity[x]Назначенное количество*0..1
subjectСсылка на субъект назначения. Обычно субъектом является пациент, но им может быть группа лиц, устройство, например, гемодиализный аппарат, или даже местонахождение, например, при анализе окружающей средыReference0..1
focusСсылка на фокус назначения, если он отличается от субъекта назначения, например, плод или донорReference0..1
encounterСсылка на случай медицинской помощиReference0..1
occurrence[x]Ожидаемые дата и время выполнения назначения*0..1
asNeeded[x]Признак выполнения назначения при необходимости или кодируемое условие выполнения*0..1
authoredOnДата и время создания данного экземпляра ресурсаdateTime0..1
requesterСсылка на инициатора назначенияReference0..1
performerTypeТребуемый тип исполнителя назначенияCodeableConcept0..1
performerСсылка на требуемого исполнителя назначения. Если указано несколько экземпляров данного элемента, то они трактуются как альтернативные исполнители без учета порядка указания. Если требуется несколько исполнителей, то ссылка должна указывать на экземпляр ресурса CareTeamReference0..*
locationСсылка на предпочтительное место выполнения назначенияCodeableReference0..*
reasonПричина назначения — кодируемое значение типа CodeableConcept или ссылка на экземпляр ресурса Condition | Observation | DiagnosticReport | DocumentReference | DetectedIssueCodeableReference0..*
supportingInfoДополнительная клиническая информацияCodeableReference0..*
insuranceСсылка на страховой план, покрытие расходов или авторизацию, имеющую отношение к назначениюReference0..*
specimenСсылка на идентификацию и описание биоматериалаReference0..*
bodySiteЦелевая анатомическая область назначенной процедурыCodeableConcept0..*
body-StructureСсылка на идентификацию и описание целевой анатомической области назначенной процедурыReference0..1
noteПримечаниеAnnotation0..*
patientInstructionУказания в терминах, доступных пациенту, например, подготовка к проведению исследования или выполнению процедурыBackboneElement0..*
patientInstruction.instruction[x]Содержание указаний*0..1
relevantHistoryСсылка на экземпляр ресурса, описывающий динамику изменения назначения, например, переходы состояний выполненияReference0..*
11.4.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 235.

Таблица 235

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
ServiceRequest.status http://hl7.org/fhir/ValueSet/request-status Обязательная Состояние выполнения назначения
ServiceRequest.intent http://hl7.org/fhir/ValueSet/request-intent Обязательная Категория требования, с которым связано выполнение назначения
ServiceRequest.category http://hl7.org/fhir/ValueSet/servicerequest-category Пример Классификация назначения
ServiceRequest.priority http://hl7.org/fhir/ValueSet/request-priority Пример Срочность назначения
ServiceRequest.code http://hl7.org/fhir/ValueSet/procedure-code Пример Код процедуры
ServiceRequest.orderDetail.parameter.code http://hl7.org/fhir/ValueSet/servicerequest-orderdetail-parameter-code Пример Тип параметра назначения
ServiceRequest.asNeeded[x] http://hl7.org/fhir/Value Set/medication-as-needed-reason Пример Условие выполнения назначения
ServiceRequest.performerType http://hl7.org/fhir/ValueSet/participant-role Пример Тип исполнителя назначения
ServiceRequest.location ServiceDeliveryLocationRoleType Пример Место выполнения назначения
ServiceRequest.reason http://hl7.org/fhir/ValueSet/procedure-reason Пример Причина назначения
ServiceRequest.bodySite http://hl7.org/fhir/ValueSet/body-site Пример Анатомическая область
11.4.4 Ограничения ресурса ServiceRequest

Ограничения ресурса ServiceRequest описаны в таблице 236.

Таблица 236

Ограничения ресурса ServiceRequest

Идентификатор Вид Путь Описание Выражение
bdystr-1 Правило Базовый Элемент bodyStructure может присутствовать только в том случае, если элемент bodySite отсутствует bodySite.exists() implies bodyStructure.empty()
prr-1 Правило Базовый Элемент orderDetail может присутствовать только в том случае, если элемент code присутствует orderDetail.empty() or code.exists()
11.4.5 Параметры поиска экземпляров ресурса ServiceRequest

Специальные параметры поиска экземпляров ресурса ServiceRequest описаны в таблице 237. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 237

Специальные параметры поиска экземпляров ресурса ServiceRequest

Имя Тип Описание Выражение
authored date Дата и время создания экземпляра ресурса ServiceRequest.authoredOn
based-on reference Ссылка на требование, для выполнения которого предназначено назначение ServiceRequest.basedOn
(CarePlan, MedicationRequest, ServiceRequest)
body-site token Целевая анатомическая область назначенной процедуры ServiceRequest.bodySite
body-structure reference Ссылка на идентификацию и описание целевой анатомической области назначенной процедуры ServiceRequest.bodyStructure
(BodyStructure)
category token Классификация назначения ServiceRequest.category
code-concept token Код назначения ServiceRequest.code.concept
code-reference reference Ссылка на определение плана или действия ServiceRequest.code.reference
encounter reference Ссылка на случай медицинской помощи ServiceRequest.encounter
(Encounter)
identifier token Идентификатор назначения ServiceRequest.identifier
instantiates-canonical reference Ссылка на экземпляр ресурса, описывающий определение назначения ServiceRequest.instantiatesCanonical
(PlanDefinition, ActivityDefinition)
instantiates-uri uri Ссылка на внешнее определение назначения ServiceRequest.instantiatesUri
intent token Категория требования, с которым связано выполнение назначения ServiceRequest.intent
occurrence date Ожидаемые дата и время выполнения назначения ServiceRequest.occurrence.ofType(dateTime) | ServiceRequest.occurrence.ofType(Period) | ServiceRequest.occurrence.ofType(Timing)
patient reference Ссылка на субъект назначения — пациент ServiceRequest.subject.where(resolve() is Patient)
(Patient)
performer reference Ссылка на требуемого исполнителя ServiceRequest.performer
(Practitioner, Organization, CareTeam, Device, Patient, HealthcareService, PractitionerRole, RelatedPerson)
performer-type token Тип исполнителя назначения ServiceRequest.performerType
priority token Срочность назначения ServiceRequest.priority
replaces reference Ссылка на заменяемое назначение ServiceRequest.replaces
(ServiceRequest)
requester reference Заменяемые назначения ServiceRequest.requester
(Practitioner, Organization, Device, Patient, PractitionerRole, RelatedPerson)
requisition token Идентификатор группы связанных назначений ServiceRequest.requisition
specimen reference Ссылка на идентификацию и описание биоматериала ServiceRequest.specimen
(Specimen)
status token Состояние выполнения назначения ServiceRequest.status
subject reference Ссылка на субъект назначения ServiceRequest.subject (Group, Device, Patient, Location)

11.5 Ресурс Task — мероприятие

11.5.1 Область применения и использования

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

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

Основной предмет мероприятия описывается по ссылке, содержащейся в элементе focus. Для выполнения мероприятия могут требоваться определенные входные данные, передаваемые в элементе input. Результат выполнения мероприятия может быть передан в элементе output. Его содержание может служить входными данными для следующего мероприятия.

11.5.2 Структура ресурса

Ресурс Task является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса Task представлен на рисунке 44 и в таблице 238.

11.5 Ресурс Task - мероприятие

Рисунок 44 — Ресурс Task

Таблица 238

Состав элементов ресурса Task

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifier-ExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
identifierИдентификатор мероприятияIdentifier0..*
instantiatesCanonicalСсылка на экземпляр ресурса, описывающий определение мероприятияcanonical0..*
instantiatesUriСсылка на внешнее определение мероприятияuri0..*
basedOnСсылка на требование, для выполнения которого предназначено мероприятиеReference0..*
groupIdentifierОбщий идентификатор группы мероприятий или требованийIdentifier0..1
partOfСсылка на мероприятие, частью которого является данное мероприятиеReference0..*
statusСостояние выполнения мероприятия. Допустимые значения: draft (в процессе подготовки) | requested (назначено) | received (получено исполнителем) | accepted (принято к исполнению) | rejected (отклонено) | ready (готово к выполнению) | cancelled (отменено) | in-progress (выполняется) | on-hold (приостановлено) | failed (прекращено) | completed (завершено) | entered-in-error (создано по ошибке)code1
statusReasonПричина перехода в данное состояниеCodeable-Concept0..*
businessStatusДетали состояния выполненияCodeable-Concept0..1
intentКатегория требования, с которым связано выполнение мероприятия. Допустимые значения: unknown (неизвестная) | proposal (предложение) | plan (план) | order (требование) | original-order (исходное требование) | reflex-order (вторичное требование) | filler-order (требование исполнителя) | instance-order (частичное требование) | option (опция). Значение этого элемента не должно изменяться после создания экземпляра ресурса Taskcode1
priorityСрочность мероприятия. Допустимые значения: routine (обычная) | urgent (ургентная) | asap (как можно скорее) | stat (немедленно). По умолчанию — обычнаяcode0..1
doNotPerformЗначение true указывает, что данное мероприятие в определенных случаях не должно выполняться. Эти случаи определяются значениями элементов code, subject, occurrence, requestedPerformer и performer. Например, если присутствует элемент requestedPeriod — не должно выполняться в течение данного периода, если присутствует элемент requestedPerformer — не должно выполняться данным исполнителемboolean0..1
codeТип мероприятияCodeable-Concept0..1
descriptionОписание мероприятияstring0..1
focusСсылка на экземпляр ресурса, содержащий выполняемое требование или подлежащий манипуляции данным мероприятием. Если таких экземпляров должно быть несколько, следует использовать подчиненные мероприятияReference0..1
forСсылка на экземпляр ресурса, для которого выполняется данное мероприятиеReference0..1
encounterСсылка на случай медицинской помощиReference0..1
requestedPeriodОжидаемый период выполнения мероприятияPeriod0..1
executionPeriodФактический период выполнения мероприятияPeriod0..1
authoredOnДата и время создания данного экземпляра ресурсаdateTime0..1
lastModifiedДата и время последнего изменения данного экземпляра ресурсаdateTime0..1
requesterСсылка на инициатора мероприятияReference0..1
requestedPerformerСсылка на требуемого исполнителя мероприятияCodeable-Reference0..*
ownerСсылка на ответственного за выполнение мероприятияReference0..1
performerИсполнитель мероприятияBackbone-Element0..*
performer. functionФункция исполнителяCodeable-Concept0..1
performer.actorСсылка на исполнителя мероприятияReference1
locationСсылка на место проведения мероприятияReference0..1
reasonПричина мероприятия — кодируемое значение типа CodeableConcept или ссылка на экземпляр ресурсаCodeable-Reference0..*
insuranceСсылка на страховой план, покрытие расходов или авторизацию, имеющую отношение к мероприятиюReference0..*
noteДополнительная информация об акте питанияAnnotation0..*
relevantHistoryСсылка на экземпляр ресурса, описывающий динамику изменения мероприятия, например, переходы состояний выполненияReference0..*
restrictionОграничения на выполнение мероприятияBackbone-Element0..1
restriction.repetitionsЧисло повторений мероприятияpositiveInt0..1
restriction.periodТребуемый период выполнения мероприятия. Должен содержаться в периоде, указанном в требовании, для выполнения которого предназначено данное мероприятиеPeriod1
restriction.recipientЕсли у требования, для выполнения которого предназначено данное мероприятие, несколько субъектов, то в этом элементе могут быть указаны конкретные субъекты, затрагиваемые данным мероприятиемReference0..*
inputДополнительная информация, требуемая для выполнения данного мероприятияBackbone-Element0..*
input.typeИмя входного параметраCodeable-Concept1
input.value[x]Значение входного параметра*1
outputВыходная информация, произведенная данным мероприятиемBackbone-Element0..*
output.typeИмя выходного параметраCodeable-Concept1
output.value[x]Значение выходного параметра*1
11.5.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 239.

Таблица 239

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
Task.status http://hl7.org/fhir/ValueSet/task-status Обязательная Состояние выполнения мероприятия
Task.statusReason http://hl7.org/fhir/ValueSet/task-status-reason Пример Причина перехода в данное состояние
Task.intent http://hl7.org/fhir/ValueSet/task-intent Обязательная Категория требования, с которым связано выполнение мероприятия
Task.priority http://hl7.org/fhir/ValueSet/request-priority Обязательная Срочность мероприятия
Task.code http://hl7.org/fhir/ValueSet/task-code Пример Тип мероприятия
Task.requestedPerformer http://hl7.org/fhir/ValueSet/performer-role Предпочтительная Роль исполнителя
11.5.4 Ограничения ресурса Task

Ограничения ресурса Task описаны в таблице 240.

Таблица 240

Ограничения ресурса Task

Идентификатор Вид Путь Описание Выражение
tsk-1 Правило Базовый Элемент Task.restriction допустим, если мероприятие представляет собой выполнение действия над экземпляром ресурса, указанным в элементе focus restriction.exists() implies code.coding.where(code='fulfill' and system='http://hl7.org/fhir/CodeSystem/task-code').exists() and focus.exists()
inv-1 Правило Базовый Значение элемента lastModified должно быть больше значения элемента authoredOn или равно ему lastModified.exists().not() or authoredOn.exists().not() or lastModified >= authoredOn
11.5.5 Переходы состояний выполнения мероприятий

На рисунке 45 приведена «типичная» диаграмма перехода состояний мероприятия. На практике могут использоваться не все переходы, и некоторые переходы могут быть добавлены, включая обратные переходы из терминальных состояний (failed или completed) в состояние выполнения in-progress.

11.5 Ресурс Task - мероприятие

Рисунок 45 — Переходы состояний выполнения мероприятия

Вновь созданный экземпляр ресурса Task, идентифицирующий мероприятие, имеет состояние draft (в процессе подготовки). Если оказалось, что он создан по ошибке, то может быть переведен в состояние entered-in-error (создано по ошибке). Для подготовки к выполнению мероприятия может понадобиться несколько предварительных этапов, например назначение исполнителя (requested), получение исполнителем (received), принятие к исполнению (accepted). Вместо такой детализации переходов состояния мероприятию может быть присвоено состоянию ready (готово к выполнению). На любом из предварительных этапов мероприятие может быть отменено (cancelled). Из состояний ready и accepted возможен переход в состояние in-progress (выполняется). Выполнение мероприятия может быть приостановлено (on-hold) и возобновлено (обратный переход в состояние in-progress). Отменить уже начатое мероприятие нельзя — оно должно завершиться успешно (completed) или быть прекращено досрочно (failed).

11.5.6 Статистика переходов состояний

Экземпляр ресурса Task хранит текущее состояние выполнения мероприятия. Для анализа процесса выполнения мероприятия, например времени выполнения отдельных этапов, может понадобиться статистика переходов состояний. Такая статистика может сохраняться в экземплярах ресурса Provenance (происхождение), и ссылки на них могут храниться в элементах relevantHistory.

11.5.7 Параметры поиска экземпляров ресурса Task

Специальные параметры поиска экземпляров ресурса Task описаны в таблице 227. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 241

Специальные параметры поиска экземпляров ресурса Task

Имя Тип Описание Выражение
actor reference Ссылка на исполнителя мероприятия Task.performer.actor (Practitioner, Organization, CareTeam, Patient, PractitionerRole, RelatedPerson)
authored-on date Дата создания Task.authoredOn
based-on reference Ссылка на требование, для выполнения которого предназначено данное мероприятие Task.basedOn (Any)
business-status token Детали состояния выполнения Task.businessStatus
code token Тип мероприятия Task.code
encounter reference Ссылка на случай медицинской помощи Task.encounter (Encounter)
focus reference Ссылка на экземпляр ресурса, содержащий выполняемое требование или подлежащий манипуляции данным мероприятием Task.focus (Any)
group-identifier token Общий идентификатор группы мероприятий или требований Task.groupIdentifier
identifier token Идентификатор мероприятия Task.identifier
intent token Категория требования, с которым связано выполнение мероприятия Task.intent
modified date Дата и время последнего изменения Task.lastModified
output reference Ссылка на экземпляр ресурса в выходных данных Task.output.value.ofType(Reference)
owner reference Ссылка на ответственного за выполнение мероприятия Task.owner (Practitioner, Organization, CareTeam, Patient, PractitionerRole, RelatedPerson)
part-of reference Ссылка на мероприятие, частью которого является данное мероприятие Task.partOf (Task)
patient reference Ссылка на пациента Task.for.where(resolve() is Patient) (Patient)
performer token Тип исполнителя мероприятия Task.requestedPerformer.concept
period date Фактический период выполнения мероприятия Task.executionPeriod
priority token Срочность мероприятия Task.priority
requested-performer-reference reference Ссылка на требуемого исполнителя Task.requestedPerformer.reference
requester reference Ссылка на инициатора мероприятия Task.requester (Practitioner, Organization, Device, Patient, PractitionerRole, RelatedPerson)
status token Состояние мероприятия Task.status
subject reference Ссылка на субъект мероприятия Task.for (Any)
11.5.8 Профили мероприятий

Профили мероприятий, назначаемых в рамках планов дистанционного мониторинга пациентов, перечислены в таблице 242.

Таблица 242

Профили мероприятий дистанционного мониторинга

Имя профиля Описание Пункт
Task-Medication Лекарственное назначение 11.5.9
Task-Phd Выполнение измерений 11.5.10
Task-MedStat Ведение дневника приема лекарств 11.5.11
Task-NutrInt Ведение дневника питания 11.5.12
Task-QuestResp Ведение дневника самонаблюдений 11.5.13
Task-DiagRep Составление этапного эпикриза 11.5.14

Общая структура профилей мероприятий дистанционного мониторинга показана на рисунке 46 и приведена в таблице 243.

11.5 Ресурс Task - мероприятие

Рисунок 46 — Профиль мероприятий дистанционного мониторинга

Таблица 243

Состав элементов профиля мероприятий дистанционного мониторинга

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
Унаследованы от абстрактного класса DomainResource
textПолное описание мероприятия, ориентированное на пациентаNarrattive1
text.statusСтатус повествовательного содержания. Фиксированное значение «additional»code1
text.divТекст в формате xhtml с ограниченным форматированиемxhtml1
Собственные элементы
identifierИдентификатор мероприятия, присвоенный медицинской информационной системойIdentifier1
basedOn[1]Ссылка на экземпляр ресурса CarePlanReference1
basedOn[2]Ссылка на экземпляр ресурса Questionnaire (только для ведения дневника самонаблюдений)Reference0..1
statusСостояние выполнения мероприятия. Допустимые значения: draft (в процессе подготовки) | requested (назначено) | received (получено исполнителем) | accepted (принято к исполнению) | rejected (отклонено) | ready (готово к выполнению) | cancelled (отменено) | in-progress (выполняется) | on-hold (приостановлено) | failed (прекращено) | completed (завершено) | entered-in-error (создано по ошибке)code1
intentКатегория требования, с которым связано выполнение мероприятия. Фиксированное значение «order» (требование)code1
codeТип мероприятияCodeable-Concept1
descriptionУказания по выполнению мероприятияstring1
forСсылка на экземпляр Person — субъект мероприятияReference1
requestedPeriodОжидаемый период выполнения мероприятияPeriod1
requestedPerformerСсылка на требуемого исполнителяCodeableReference1
requestedPerformer.referenceСсылка на экземпляр ресурса исполнителяReference1
requestedPerformer.reference.referenceОтносительный URL экземпляра ресурсаstring1
inputВходной параметрBackbone-Element0..*
input.typeРасписание выполнения мероприятияCodeableConcept1
input.type. textПовествовательное описание расписанияstring1
input.valueTimingСтруктурированное описание расписанияTiming1

Профили отличаются друг от друга требованиями к заполнению следующих элементов:

  • meta.profile — имя профиля;
  • code — идентификация мероприятия;
  • requestedPerformer — требуемый исполнитель.
11.5.9 Профиль Task-Medication

Профиль Task-Medication (лекарственное назначение) ограничивает элементы ресурса Task в соответствии с рисунком 46 и таблицей 243. Имя ресурса остается неизменным — Task, имя профиля передается в элементе meta.profile.

В элементе requestedPerformer (требуемый исполнитель) должна быть передана ссылка на экземпляр ресурса Patient, идентифицирующий лицо, применяющее назначенный лекарственный препарат (обычно сам пациент).

Требования к заполнению элемента code приведены в таблице 244. В первом экземпляре элемента code.coding должны быть переданы код анатомо-терапевтическо-химической классификации (АТХ) назначенного лекарственного препарата (при наличии). В следующих экземплярах элемента code.coding должны передаваться торговые наименования лекарственного препарата (синонимы). Международное непатентованное наименование должно передаваться в элементе code.text.

Таблица 244

Требования к заполнению элемента code в профиле Task-Medication

Имя Описание Тип данных Кратность
code.coding[1] Анатомо-терапевтическо-химическая классификация назначенного лекарственного препарата Coding 0..1
code.coding[1].system Фиксированное значение «https://www.whocc.no» (при наличии кода АТХ) uri 0..1
code.coding[1].code Код АТХ (при наличии) code 0..1
code.coding[2-n] Торговое наименование лекарственного препарата Coding 0..n-1
code.coding[2-n].display Торговое наименование string 1
code.text Международное непатентованное наименование string 1
11.5.10 Профиль Task-Phd

Профиль Task-Phd (выполнение измерений) ограничивает элементы ресурса Task в соответствии с рисунком 46 и таблицей 243. Имя ресурса остается неизменным — Task, имя профиля передается в элементе meta.profile.

В элементе requestedPerformer (требуемый исполнитель) должна быть передана ссылка на экземпляр ресурса Device, идентифицирующий персональный медицинский прибор, выполняющий измерения.

Требования к заполнению элемента code приведены в таблице 245.

Таблица 245

Требования к заполнению элемента code в профиле Task-Phd

Имя Описание Тип данных Кратность
code.coding Код специализации ПМП (таблица 246) Coding 1
code.coding.system Фиксированное значение «urn:iso:std:iso:11073:10101» (номенклатура терминов MDC, определенная в ГОСТ Р 56842) uri 1
code.coding.code Числовой код из номенклатуры MDC code 1
code.coding.display Мнемокод из номенклатуры MDC string 1
code.text Наименование специализации ПМП string 1

Таблица 246

Коды специализации ПМП в номенклатуре MDC

Наименование специализации Числовой код Мнемокод
Активность при одиноком проживании 528455 MDC_DEV_SPEC_PROFILE_AI_ACTIVITY_HUB
Анализатор мочи 528406 MDC_DEV_SPEC_PROFILE_URINE_ANALYZER
Весы 528399 MDC_DEV_SPEC_PROFILE_SCALE
Глюкометр 528401 MDC_DEV_SPEC_PROFILE_GLUCOSE
Дыхательная терапия апноэ сна 528408 MDC_DEV_SPEC_PROFILE_SABTE
Инсулиновая помпа 528403 MDC_DEV_SPEC_PROFILE_INSULIN_PUMP
Коагулометр 528402 MDC_DEV_SPEC_PROFILE_COAG
Монитор кровяного давления 528391 MDC_DEV_SPEC_PROFILE_BP
Монитор медикаментов 528456 MDC_DEV_SPEC_PROFILE_AI_MED_MINDER
Монитор состава тела 528404 MDC_DEV_SPEC_PROFILE_BCA
Непрерывный мониторинг глюкозы 528409 MDC_DEV_SPEC_PROFILE_CGM
Пикфлоуметр 528405 MDC_DEV_SPEC_PROFILE_PEAK_FLOW
Пульсоксиметр 528388 MDC_DEV_SPEC_PROFILE_PULS_OXIM
Сердечно-сосудистый фитнес 528425 MDC_DEV_SPEC_PROFILE_HF_CARDIO
Силовой фитнес 528426 MDC_DEV_SPEC_PROFILE_HF_STRENGTH
Термометр 528392 MDC_DEV_SPEC_PROFILE_TEMP
Частота дыхания 528397 MDC_DEV_SPEC_PROFILE_RESP_RATE
Электрокардиограф (1 — 3 отведения) 528390 MDC_DEV_SPEC_PROFILE_MIN_ECG
11.5.11 Профиль Task-MedStat

Профиль Task-MedStat (ведение дневника приема лекарств) ограничивает элементы ресурса Task в соответствии с рисунком 46 и таблицей 243. Имя ресурса остается неизменным — Task, имя профиля передается в элементе meta.profile.

В элементе requestedPerformer (требуемый исполнитель) должна быть передана ссылка на экземпляр ресурса Patient, идентифицирующий лицо, заполняющее записи дневника (обычно сам пациент).

Требования к заполнению элемента code приведены в таблице 247.

Таблица 247

Требования к заполнению элемента code в профиле Task-MedStat

Имя Описание Тип данных Кратность
code.coding Тип мероприятия дистанционного мониторинга Coding 1
code.coding. system URI справочника типов мероприятий дистанционного мониторинга (URL или объектный идентификатор). Рекомендуемое значение «http://loinc.org» uri 1
code.coding. code Код мероприятия в справочнике. Рекомендуемое значение «87232-5» code 1
code.coding. display Наименование мероприятия в справочнике. Рекомендуемое значение «Medication administration.brief» string 0..1
code.text Фиксированное значение «Ведение дневника приема лекарств» string 1
11.5.12 Профиль Task-NutrInt

Профиль Task-NutrInt (ведение дневника питания) ограничивает элементы ресурса Task в соответствии с рисунком 46 и таблицей 243. Имя ресурса остается неизменным — Task, имя профиля передается в элементе meta.profile.

В элементе requestedPerformer (требуемый исполнитель) должна быть передана ссылка на экземпляр ресурса Patient, идентифицирующий лицо, заполняющее записи дневника (обычно сам пациент).

Требования к заполнению элемента code приведены в таблице 248.

Таблица 248

Требования к заполнению элемента code в профиле Task-NutrInt

Имя Описание Тип данных Кратность
code.coding Тип мероприятия дистанционного мониторинга Coding 1
code.coding. system URI справочника типов мероприятий дистанционного мониторинга (URL или объектный идентификатор). Рекомендуемое значение «http://loinc.org» uri 1
code.coding.code Код мероприятия в справочнике. Рекомендуемое значение «84282-3» code 1
code.coding. display Наименование мероприятия в справочнике. Рекомендуемое значение «Nutrition and dietetics Patient's home Note» string 0..1
code.text Фиксированное значение «Ведение дневника питания» string 1
11.5.13 Профиль Task-QuestResp

Профиль Task-QuestResp (ведение дневника самонаблюдений) ограничивает элементы ресурса Task в соответствии с рисунком 46 и таблицей 243. Имя ресурса остается неизменным — Task, имя профиля передается в элементе meta.profile.

В элементе requestedPerformer (требуемый исполнитель) должна быть передана ссылка на экземпляр ресурса Patient, идентифицирующий лицо, заполняющее записи дневника (обычно сам пациент). Во втором экземпляре элемента basedOn должна быть передана ссылка на экземпляр ресурса Questionnaire, описывающий форму дневника самонаблюдений.

Требования к заполнению элемента code приведены в таблице 249.

Таблица 249

Требования к заполнению элемента code в профиле Task-QuestResp

Имя Описание Тип данных Кратность
code.coding Тип мероприятия дистанционного мониторинга Coding 1
code.coding. system URI справочника типов мероприятий дистанционного мониторинга (URL или объектный идентификатор). Рекомендуемое значение «http://loinc.org» uri 1
code.coding.code Код мероприятия в справочнике. Рекомендуемое значение «74465-6» code 1
code.coding. display Наименование мероприятия в справочнике. Рекомендуемое значение «Questionnaire response Document» string 0..1
code.text Фиксированное значение «Ведение дневника самонаблюдений» string 1
11.5.14 Профиль Task-DiagRep

Профиль Task-DiagRep (составление этапного эпикриза) ограничивает элементы ресурса Task в соответствии с рисунком 46 и таблицей 243. Имя ресурса остается неизменным — Task, имя профиля передается в элементе meta.profile.

В элементе requestedPerformer (требуемый исполнитель) должна быть передана ссылка на экземпляр ресурса Practitioner, идентифицирующий лечащего врача, составляющего заключение.

Требования к заполнению элемента code приведены в таблице 250.

Таблица 250

Требования к заполнению элемента code в профиле Task-DiagRep

Имя Описание Тип данных Кратность
code.coding Тип мероприятия дистанционного мониторинга Coding 1
code.coding. system URI справочника типов мероприятий дистанционного мониторинга (URL или объектный идентификатор). Рекомендуемое значение «http://loinc.org» uri 1
code.coding.code Код мероприятия в справочнике. Рекомендуемое значение «75498-6» code 1
code.coding. display Наименование мероприятия в справочнике. Рекомендуемое значение «Telehealth Summary note» string 0..1
code.text Фиксированное значение «Составление этапного эпикриза» string 1

11.6 Ресурс Subscription — подписка на изменения экземпляров ресурсов

11.6.1 Общие сведения

Экземпляр ресурса Subscription передается клиентом серверу для регистрации подписки на одну из тем, предоставляемых сервером в форме экземпляров ресурса SubscriptionTopic. Он содержит элементы данных, задающие канал передачи уведомлений по этой теме. Состав элементов ресурса Subscription описан в 10.3.6, состав элементов ресурса SubscriptionTopic — в 10.3.7.

В настоящем подразделе приведены примеры протоколов взаимодействия клиента и сервера при использовании каналов передачи уведомлений rest-hook и websocket.

11.6.2 Канал rest-hook

Диаграмма последовательности UML при использовании канала rest-hook приведена на рисунке 47.

11.6 Ресурс Subscription - подписка на изменения экземпляров ресурсов

Рисунок 47 — Взаимодействие при использовании канала rest-hook

На диаграмме показан пример последовательности взаимодействий при подписке по каналу rest-hook:

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

11.6.3 Канал websocket

Диаграмма последовательности UML при использовании канала websocket приведена на рисунке 48.

11.6 Ресурс Subscription - подписка на изменения экземпляров ресурсов

Рисунок 48 — Взаимодействие при использовании канала websocket

На диаграмме показана возможная последовательность взаимодействий при подписке по каналу websocket:

Если сеанс должен быть продолжен, а срок жизни токена истекает, то клиент должен заново передать серверу запрос HTTP GET, в котором указано применение операции $get-ws-binding-token к созданному экземпляру ресурса Subscription. Сервер передаст клиенту ответ, содержащий токен, время жизни токена и URL веб-сокета. Токен и URL могут быть теми же или новыми.

11.7 Ресурс Device — сведения о медицинском изделии

11.7.1 Область применения и использования

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

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

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

11.7.2 Структура ресурса

Ресурс Device является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса Device представлен на рисунке 49 и в таблице 251.

11.7 Ресурс Device - сведения о медицинском изделии

Рисунок 49 — Ресурс Device

Таблица 251

Состав элементов ресурса Device

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifier-ExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
identifierИдентификатор экземпляра медицинского изделияIdentifier0..*
displayNameНаименование медицинского изделия, используемое по умолчанию для представления в элементе display ссылки на негоstring0..1
definitionКод описания медицинского изделия или ссылка на его описаниеCodeableReference0..1
udiCarrierУникальный идентификатор медицинского изделия (UDI)BackboneElement0..*
udiCarrier.deviceIdentifierОбязательный фиксированный компонент UDIstring1
udiCarrier.issuerИдентификатор организации, присвоившей UDIuri1
udiCarrier.jurisdictionИдентификатор организации, регулирующей применение UDIuri0..1
udiCarrier.carrierAIDCМашиночитаемое представление штрихкода. Тип base64Binary используется в связи с тем, что оно может содержать символы, отсутствующие в представлении на языке XMLbase64-Binary0..1
udiCarrier.carrierHRFЧеловеко-читаемое представление штрихкода. Если для представления модели изделия и его серийного номера используются отдельные штрихкоды, то их подписи должны быть объединены, и первой следует указать модель изделияstring0..1
udiCarrier.entryTypeТип источника UDI. Допустимые значения: barcode (штрихкод) | rfid (радиочастотная метка) | manual (введен вручную с этикетки) | card (введен вручную с карточки имплантата) | self-reported (со слов пациента) | electronic-transmission (считан с медицинского прибора) | unknown (неизвестный)code0..1
statusСтатус данного экземпляра ресурса. Допустимые значения: active (действителен) | inactive (недействителен) | entered-in-error (введен по ошибке)code0..1
availabilityStatusСтатус доступности медицинского изделия. Рекомендованные значения: lost (утрачен) | damaged (поврежден) | destroyed (уничтожен) | available (доступен)CodeableConcept0..1
biologicalSourceEventИдентификатор биологического источникаIdentifier0..1
manufacturerНаименование производителя медицинского изделияstring0..1
manufactureDateДата и время производства медицинского изделияdateTime0..1
expirationDateСрок годности медицинского изделияdateTime0..1
lotNumberНомер партии медицинских изделийstring0..1
serialNumberСерийный номер медицинского изделияstring0..1
nameНаименование медицинского изделияBackboneElement0..*
name.valueНаименованиеstring1
name.typeТип наименованияcode1
name.displayПризнак предпочтительного наименованияboolean0..1
modelNumberНомер модели медицинского изделияstring0..1
partNumberАртикул медицинского изделияstring0..1
categoryКатегория медицинского изделияCodeableConcept0..*
typeТип медицинского изделияCodeableConcept0..*
versionМодификация медицинского изделия или версия его программного обеспеченияBackboneElement0..*
version.typeТип модификации или версииCodeableConcept0..1
version.componentИдентификация аппаратного модуля или программного обеспечения, к которому относится данная версияIdentifier0..1
version.install-DateДата установки аппаратного модуля или программного обеспеченияdateTime0..1
version.valueОбозначение версииstring1
conformsToСоответствие медицинского изделия стандартам или спецификациямBackboneElement0..*
conformsTo.categoryТип стандарта или спецификацииCodeableConcept0..1
conformsTo.specificationОбозначение стандарта или спецификацииCodeableConcept1
conformsTo.versionВерсия стандарта или спецификации, например год публикации или номерstring0..1
propertyСтатическое или практически постоянное свойство медицинского изделия, например разрешающая способность, точность, физические атрибутыBackboneElement0..*
property.typeТип свойстваCodeableConcept1
property.value[x]Значение свойства*1
modeРежим работы. Рекомендованные значения: normal (нормальный) | demo (демонстрационный) | service (сервисный) | maintenance (на обслуживании) | test (тестовый)CodeableConcept0..1
cycleКоличество цикловCount0..1
durationДлительностьDuration0..1
ownerСсылка на организацию — владельца медицинского изделияReference0..1
contactКонтактная информация технической поддержкиContactPoint0..*
locationСсылка на местонахождение медицинского изделияReference0..1
urlСетевой адрес медицинского прибораuri0..1
endpointСсылка на описание конечной точки, предназначенной для доступа к функциям медицинского изделияReference0..*
gatewayКод типа менеджера или ссылка на описание менеджераCodeableReference0..*
noteПримечаниеAnnotation0..*
safetyКласс безопасности медицинского изделияCodeableConcept0..*
parentСсылка на медицинское изделие, частью которого служит данное изделиеReference0..1
11.7.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 252.

Таблица 252

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
Device.udiCarrier. entryType http://hl7.org/fhir/ValueSet/udi-entry-type Обязательная Тип источника UDI
Device.status http://hl7.org/fhir/ValueSet/device-status Обязательная Статус экземпляра ресурса Device
Device.availabilityStatus http://hl7.org/fhir/ValueSet/device-availability-status Расширяемая Статус доступности медицинского изделия
Device.name.type http://hl7.org/fhir/ValueSet/device-nametype Обязательная Тип наименования медицинского изделия
Device.category http://hl7.org/fhir/ValueSet/device-category Пример Категория медицинского изделия
Device.type http://hl7.org/fhir/ValueSet/device-type Пример Тип медицинского изделия
Device.version.type http://hl7.org/fhir/ValueSet/device-versiontype Пример Тип модификации или версии
Device.conformsTo.category http://hl7.org/fhir/ValueSet/device-specification-category Пример Тип стандарта или спецификации
Device.conformsTo.specification http://hl7.org/fhir/ValueSet/device-specification-type Пример Обозначение стандарта или спецификации
Device.property.type http://hl7.org/fhir/ValueSet/device-property-type Пример Тип свойства
Device.mode http://hl7.org/fhir/ValueSet/device-operation-mode Пример Режим работы
Device.safety http://hl7.org/fhir/ValueSet/device-safety Пример Класс безопасности прибора
11.7.4 Ограничения ресурса Device

Ограничения ресурса Device описаны в таблице 253.

Таблица 253

Ограничения ресурса Device

Идентификатор Вид Путь Описание Выражение
dev-1 Правило Базовый Признак Device.name.display должен быть истинным не более чем для одного экземпляра элемента Device.name name.where(display=true).count() <= 1
11.7.5 Идентификация медицинских изделий и типы изделий

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

Элемент identifier предназначен только для идентификации экземпляра изделия, например с помощью инвентарного номера, присвоенного владельцем изделия. Для серийного номера, присвоенного производителем изделия, должен использоваться элемент serialNumber. Такие идентификаторы, как артикул или глобальный номер товарной продукции GTIN, представляют тип изделия и должны передаваться в элементе type.

Одним из источников типов изделий является глобальная номенклатура медицинских изделий GMDN (Global Medical Device Nomenclature, https://www.gmdnagency.org/).

Для машиночитаемой маркировки медицинских изделий в целях их прослеживания могут использоваться уникальные идентификаторы устройства UDI (Unique Device Identifier, https://www.imdrf.org/consultations/udi-system-medical-devices). Для хранения UDI предусмотрен элемент udiCarrier. В соответствии с [35] принята собственная система маркировки, согласно которой каждому изделию присваивается идентификатор, состоящий из четырех компонентов. Этот идентификатор также может быть представлен в элементе udiCarrier.

11.7.6 Параметры поиска экземпляров ресурса Device

Специальные параметры поиска экземпляров ресурса Device описаны в таблице 254. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 254

Специальные параметры поиска экземпляров ресурса Device

Имя Тип Описание Выражение
biological-source-event token Идентификатор биологического источника Device.biologicalSourceEvent
code token Код описания медицинского изделия Device.definition.concept
definition reference Ссылка на описание медицинского изделия Device.definition.reference
device-name string Поиск по строковым полям элемента Device.name или Device.type Device.name.value | Device.type.coding.display | Device.type.text
expiration-date date Срок годности медицинского изделия Device.expirationDate
identifier token Идентификатор экземпляра медицинского изделия Device.identifier
location reference Ссылка на местонахождение прибора Device.location
(Location)
lot-number string Номер партии медицинских изделий Device.lotNumber
manufacture-date date Дата и время производства медицинского изделия Device.manufactureDate
manufacturer string Наименование производителя медицинского изделия Device.manufacturer
model string Номер модели медицинского изделия Device.modelNumber
organization reference Ссылка на организацию — владельца медицинского изделия Device.owner
(Organization)
parent reference Ссылка на медицинское изделие, частью которого служит данное изделие Device.parent
(Device)
serial-number string Серийный номер медицинского изделия Device.serialNumber | Device.identifier.where(type='SNO')
specification token Обозначение стандарта или спецификации Device.conformsTo.specification
specification-version composite Комплекс из обозначения стандарта или спецификации и версии On Device.conformsTo:
specification: specification
version: version
status token Статус данного экземпляра ресурса. Допустимые значения: active (действителен) | inactive (недействителен) | entered-in-error (введен по ошибке) Device.status
type token Тип медицинского изделия Device.type
udi-carrier string Человеко-читаемое представление штрихкода или радиометки, используемой для уникального идентификатора медицинского изделия Device.udiCarrier.carrierHRF
udi-di string Обязательный фиксированный компонент UDI Device.udiCarrier.deviceIdentifier
url uri Сетевой адрес медицинского прибора Device.url
version string Обозначение версии Device.version.value
11.7.7 Профиль Device-Phd
11.7.7.1 Общие требования

Аппаратное и программное обеспечение ПМП может содержать сведения о приборе, включая идентификацию ПМП. Эти сведения должны передаваться между участниками информационного взаимодействия по сценарию, показанному на рисунке 50.

11.7 Ресурс Device - сведения о медицинском изделии

Рисунок 50 — Сценарий передачи данных о ПМП

МИС передает сервису сведения о ПМП, предоставленном пациенту, в форме экземпляра ресурса Device. Пока пациент пользуется прибором, эти сведения могли измениться, например, обновилась прошивка прибора или загруженное в него программное обеспечение. Поэтому после установления связи со шлюзом Интернета вещей или с менеджером прибор может передать ему актуальные сведения о себе. Эта передача осуществляется в соответствии со стандартом ГОСТ Р 56845.

Шлюз или менеджер должен преобразовать сведения о ПМП в экземпляр ресурса Device и передать его сервису хранения и обработки результатов измерений. Сервис должен обновить сведения о ПМП в своем хранилище. По подписке обновленные сведения передаются МИС в форме экземпляра ресурса Device.

Если ПМП не имеет возможности передачи сведений по стандарту ГОСТ Р 56845, то шлюз или менеджер может сначала преобразовать сведения о ПМП в формат, предписанный этим стандартом, а затем преобразовать их в экземпляр ресурса Device. Описание преобразования, специфичного для ПМП с интерфейсом Bluetooth Low Energy, приведено в [36].

Рекомендуемый состав сведений о ПМП, передаваемых сервису хранения и обработки результатов измерений в форме экземпляра ресурса Device, включает в себя:

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

Согласно стандарту ГОСТ Р 56845, состав сведений о ПМП определяется классом MDS (Medical device system — система медицинского прибора). Каждый ПМП обладает одним экземпляром класса MDS.

Атрибуты верхнего уровня класса MDS идентифицируются с помощью 32-разрядного целочисленного кода, принадлежащего номенклатуре MDC (medical device communication — коммуникация с медицинским прибором). Каждому целочисленному коду соответствует строковый номенклатурный код и его описание. Номенклатура MDC определена в стандарте ГОСТ Р 56842. Стандарты, описывающие специализации ПМП, могут содержать дополнения к номенклатуре MDC, которые еще не успели войти в текущую версию стандарта ГОСТ Р 56842.

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

Таблица 255

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

Имя атрибута Номенклатурный код Тип атрибута Примечание Кратность
System-Model MDC_ATTR_ID_MODEL SystemModel Производитель и модель ПМП 1
System-Id MDC_ATTR_SYS_ID OCTET STRING Идентификатор ПМП в формате EUI-64 1
Production-Specification MDC_ATTR_ID_PROD_SPECN ProductionSpec Список сведений о компонентах ПМП, включая серийные номера и т.д. в формате, заданном производителем 0..1
System-Type-Spec-List MDC_ATTR_SYS_TYPE_SPEC_LIST TypeVerList Список специализаций ПМП 0..1
11.7.7.3 Отображение атрибута System-Model

Отображение атрибута System-Model на элементы ресурса Device приведено в таблице 256.

Таблица 256

Отображение атрибута System-Model на элементы ресурса Device

Номенклатурный код или имя компонента Отображение на элемент ресурса Device
MDC_ID_MODEL_NUMBER modelNumber
MDC_ID_MODEL_MANUFACTURER manufacturer
11.7.7.4 Отображение атрибута System-Id

Отображение атрибута System-Id на компоненты элемента identifier ресурса Device приведено в таблице 257.

Таблица 257

Отображение атрибута System-Id на компоненты элемента identifier ресурса Device

Компонент Значение
identifier.system «urn:oid:1.2.840.10004.1.1.1.0.0.1.0.0.1.2680»
identifier.type.coding.system «http://hl7.org/fhir/uv/phd/CodeSystem/ContinuaDevice-Identifiers»
identifier.type.coding.code «SYSID»
identifier.value значение System-Id в формате EUI-64 (восемь пар шестнадцатеричных цифр, разделенных дефисами, например, FE-ED-AB-EE-DE-AD-77-C3)
11.7.7.5 Отображение атрибута Production-Specification

Атрибут Production-Specification содержит список сведений о приборе, тип которых определяется значением компонента spec-type. Отображение атрибута Production-Specification на элементы ресурса Device в зависимости от значения этого компоненты приведено в таблице 258.

Таблица 258

Отображение атрибута Production-Specification на элементы ресурса Device

Экземпляр Production-Specification Отображение на элементы ресурса Device
Production-Specification.spec-type = 1 (серийный номер)
Production-Specification.value
serialNumber=Production-Specification.value
Production-Specification.spec-type = 2 (номер партии)
Production-Specification.value
partNumber=Production-Specification.value
Production-Specification.spec-type = 3 (версия аппаратного обеспечения)
Production-Specification.value
version.type.coding.code=«531974»
version.type.coding.system=«urn.iso.std.
iso:11073:10101»
version.type.text=«MDC_ID_PROD_SPEC_HW»
version.value=Production-Specification.value
Production-Specification.spec-type = 4 (программное обеспечение)
Production-Specification.PrivateOid
Production-Specification.value
version.type.coding.code=«531975»
version.type.coding.system=«urn.iso.std.
iso:11073:10101»
version.type.text=«MDC_ID_PROD_SPEC_SW»
version.value=Production-Specification.value
Production-Specification.spec-type = 5 (версия прошивки)
Production-Specification.value
version.type.coding.code=«531976»
version.type.coding.system=«urn.iso.std.
iso:11073:10101»
version.type.text=«MDC_ID_PROD_SPEC_FW»
version.value=Production-Specification.value
Production-Specification.spec-type = 6 (версия протокола)
Production-Specification.value
version.type.coding.code=«531977»
version.type.coding.system=«urn.iso.std.
iso:11073:10101»
version.type.text=«MDC_ID_PROD_SPEC_PROTOCOL»
version.value=Production-Specification.value
11.7.7.6 Отображение атрибута System-Type-Spec-List

Атрибут System-Type-Spec-List содержит список специализаций прибора. Отображение атрибута System-Type-Spec-List на элементы ресурса Device приведено в таблице 259.

Таблица 259

Отображение атрибута System-Type-Spec-List на элементы ресурса Device

Экземпляр System-Type-Spec-List Отображение на элемент ресурса Device
System-Type-Spec-List.type conformsTo.specification.coding.system =«urn.iso.std.iso:11073:10101»
conformsTo.specification.coding.code = System-Type-Spec-List.type
conformsTo.specification.coding.text=<значение номенклатурного кода MDC, соответствующее System-Type-Spec-List.type>
System-Type-Spec-List.version conformsTo.specification.version= System-Type-Spec-List.version
11.7.7.7 Дополнительная информация о приборе

Шлюз Интернета вещей или менеджер ПМП должны дополнить сведения, полученные от ПМП, следующими атрибутами:

Тип прибора указывает, что это ПМП. Он отображается на элемент Device.type в соответствии с таблицей 260.

Таблица 260

Тип прибора (ПМП)

Элемент ресурса Device Значение
Device.type.coding.code «65573»
Device.type.coding.system «urn.iso.std.iso:11073:10101»
Device.type.text «MDC_MOC_VMS_MDS_SIMP»

Идентификация шлюза или менеджера отображается на элемент Device.gateway в соответствии с таблицей 261.

Таблица 261

Идентификация шлюза или менеджера

Элемент ресурса Device Значение
Device.gateway.reference.type «Device»
Device.gateway.reference.identifier.type.coding.system «http://hl7.org/fhir/uv/phd/CodeSystem/ContinuaDeviceIdentifiers»
Device.gateway.reference.identifier.type.coding.code «SYSID»
Device.gateway.reference.identifier.system «urn:oid:1.2.840.10004.1.1.1.0.0.1.0.0.1.2680»
Device.gateway.reference.identifier.value значение System-Id в формате EUI-64 (восемь пар шестнадцатеричных цифр, разделенных дефисами, например, FE-ED-AB-EE-DE-AD-77-C3)
11.7.7.8 Состав элементов профиля Device-Phd

Профиль Device-Phd (персональный медицинский прибор) оставляет в ресурсе Device только те элементы, которые задействованы в 11.7.7.3 - 11.7.7.7 (рисунок 51 и таблица 262). Имя ресурса остается неизменным — Device, имя профиля передается в элементе meta.profile.

11.7 Ресурс Device - сведения о медицинском изделии

Рисунок 51 — Профиль Device-Phd

Таблица 262

Состав элементов профиля Device-Phd

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
Собственные элементы
identifierИдентификатор медицинского прибораIdentifier1
manufacturerНаименование производителя медицинского изделияstring0..1
serialNumberСерийный номер медицинского прибораstring0..1
modelNumberНомер модели медицинского прибораstring0..1
partNumberАртикул медицинского прибораstring0..1
typeТип медицинского прибораCodeableConcept1
conformsToСпециализация медицинского прибораBackboneElement0..*
conformsTo.categoryТип стандарта или спецификацииCodeableConcept0..1
conformsTo.specificationОбозначение стандарта или спецификацииCodeableConcept1
conformsTo.versionВерсия стандарта или спецификации, например, год публикации или номерstring0..1
gatewayКод типа менеджера (шлюза) или ссылка на описание менеджера (шлюза)CodeableReference0..1
11.7.8 Профиль Device-Phg

МИС передает сервису сведения о шлюзе Интернета вещей или менеджере ПМП, предоставленном пациенту, в форме экземпляра ресурса Device, соответствующего профилю Device-Phg (шлюз). Он используется только для проверки значения элемента Device.gateway, передаваемого в сведениях о ПМП. Состав элементов профиля Device-Phg приведен на рисунке 52 и в таблице 263. Имя ресурса остается неизменным — Device, имя профиля передается в элементе meta.profile.

11.7 Ресурс Device - сведения о медицинском изделии

Рисунок 52 — Профиль Device-Phg

Таблица 263

Состав элементов профиля Device-Phg

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
Собственные элементы
identifierИдентификатор медицинского прибораIdentifier1
typeТип медицинского прибора (таблица 264)CodeableConcept1
noteКраткое описание медицинского прибораAnnotation0..1

Тип прибора указывает, что это шлюз Интернета вещей или менеджер ПМП. Он отображается на элемент Device.type в соответствии с таблицей 264.

Таблица 264

Тип прибора (шлюз Интернета вещей или менеджер ПМП)

Элемент ресурса Device Значение
Device.type.coding.code «531981»
Device.type.coding.system «urn.iso.std.iso:11073:10101»
Device.type.text «MDC_MOC_VMS_MDS_AHD»

11.8 Ресурс DeviceAssociation — ассоциация медицинского изделия с пациентом

11.8.1 Область применения и использования

Тип ресурса DeviceAssociation используется для описания ассоциации медицинского изделия с субъектом и/или оператором. К числу медицинских изделий, для которых может понадобиться такое описание, относятся, например, имплантаты, каталки, персональные медицинские приборы.

Субъектами ассоциаций могут быть:

11.8.2 Структура ресурса

Ресурс DeviceAssociation является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса DeviceAssociation представлен на рисунке 53 и в таблице 265.

11.8 Ресурс DeviceAssociation - ассоциация медицинского изделия с пациентом

Рисунок 53 — Ресурс DeviceAssociation

Таблица 265

Состав элементов ресурса DeviceAssociation

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifier-ExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
identifierИдентификатор ассоциацииIdentifier0..*
deviceСсылка на медицинское изделие, ассоциированное с пациентом или группойReference1
categoryВид ассоциацииCodeable-Concept0..*
statusСостояние ассоциации изделия с пациентом/группойCodeable-Concept1
statusReasonПричина перехода в данное состояниеCodeable-Concept0..*
subjectСсылка на лицо, группу лиц или изделие, с которым ассоциировано данное изделиеReference0..1
bodyStructureСсылка на анатомическую область субъекта, в которой или на которой находится медицинское изделиеReference0..1
periodПериод ассоциации медицинского изделия с субъектомPeriod0..1
operationФункционирование медицинского изделияBackboneElement0..*
operation.statusСостояние функционирования медицинского изделияCodeable-Concept1
operation.operatorСсылка на оператора (лицо, использующее функции медицинского изделия)Reference0..*
operation.periodПериод функционирования медицинского изделияPeriod0..1
11.8.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 266.

Таблица 266

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
DeviceAssociation.status http://hl7.org/fhir/ValueSet/deviceassociation-status Обязательная Состояние ассоциации изделия
DeviceAssociation.statusReason http://hl7.org/fhir/ValueSet/deviceassociation-status-reason Обязательная Причина состояния ассоциации
DeviceAssociation.operation.status http://hl7.org/fhir/ValueSet/deviceassociation-operationstatus Пример Статус функционирования изделия
11.8.4 Параметры поиска экземпляров ресурса DeviceAssociation

Специальные параметры поиска экземпляров ресурса DeviceAssociation описаны в таблице 267. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 267

Специальные параметры поиска экземпляров ресурса DeviceAssociation

Имя Тип Описание Выражение
device reference Ссылка на изделие DeviceAssociation.device
(Device)
identifier token Идентификатор ассоциации DeviceAssociation.identifier
operator reference Ссылка на оператора DeviceAssociation.operation.operator
(Practitioner, Patient, RelatedPerson)
patient reference Ссылка на пациента DeviceAssociation.subject.where(resolve() is Patient)
status token Состояние ассоциации DeviceAssociation.status
subject reference Ссылка на субъект ассоциации DeviceAssociation.subject.where(resolve() is (Practitioner, Group, Device, Patient, RelatedPerson))
11.8.5 Профиль DeviceAssociation-Dm

Профиль DeviceAssociation-Dm ограничивает экземпляр ресурса DeviceAssociation элементами, необходимыми для привязки персонального медицинского прибора, шлюза Интернета вещей или менеджера ПМП к пациенту. Состав профиля DeviceAssociation-Dm приведен на рисунке 54 и в таблице 268. Имя ресурса остается неизменным — DeviceAssociation, имя профиля передается в элементе meta.profile.

11.8 Ресурс DeviceAssociation - ассоциация медицинского изделия с пациентом

Рисунок 54 — Профиль DeviceAssociation-Dm

Таблица 268

Состав элементов профиля DeviceAssociation-Dm

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
Собственные элементы
identifierУникальный идентификатор ассоциации, присвоенный медицинской информационной системойIdentifier1
deviceСсылка на ПМП, шлюз или менеджер, ассоциированный с пациентом или группойReference1
statusСостояние ассоциации прибора с пациентом/группойCodeableConcept1
status.codingКодированное значениеCoding1
status.coding.systemФиксированное значение «http://hl7.org/fhir/deviceassociation-status»uri1
status.coding.codeФиксированное значение «unknown» (неизвестно)code1
subjectСсылка на лицо, группу лиц, с которыми ассоциирован данный приборReference0..1
periodПериод ассоциации медицинского прибора с субъектомPeriod0..1

11.9 Ресурс DeviceDefinition — описание медицинского изделия

11.9.1 Область применения и использования

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

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

11.9.2 Структура ресурса

Ресурс DeviceDefinition является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса DeviceDefinition представлен на рисунке 55 и в таблице 269.

11.9 Ресурс DeviceDefinition - описание медицинского изделия

Рисунок 55 — Ресурс DeviceDefinition

Таблица 269

Состав элементов ресурса DeviceDefinition

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
descriptionДополнительная информация о медицинском изделииmarkdown0..1
identifierИдентификатор модели медицинского изделияIdentifier0..*
udiDeviceIdentifierУникальный идентификатор медицинского изделия (UDI). Предназначен для штрих-кодированияBackboneElement0..*
udiDeviceIdentifier.deviceIdentifierИдентификатор каждого изделия, на которое распространяется данное описание. Назначается организацией, присваивающей идентификаторы на данной территорииstring1
udiDeviceIdentifier.issuerИдентификатор организации, присвоившей UDIuri1
udiDeviceIdentifier.jurisdictionИдентификатор организации, регулирующей применение UDIuri1
udiDeviceIdentifier.marketDistributionСведения о вводе в обращениеBackboneElement0..*
udiDeviceIdentifier.marketDistribution.marketPeriodПериод обращенияPeriod1
udiDeviceIdentifier.marketDistribution.subJurisdictionТерритория обращенияuri1
regulatoryIdentifierИдентификация регистрационного удостоверенияBackboneElement0..*
regulatoryIdentifier.typeТип регистрации: basic (обычная) | master (генеральная) | license (лицензия)code1
regulatoryIdentifier.deviceIdentifierНомер регистрационного удостоверенияstring1
regulatoryIdentifier.issuerИдентификация регуляторного органаuri1
regulatoryIdentifier.jurisdictionИдентификация территории регистрацииuri1
partNumberАртикул медицинского изделияstring0..1
manufacturerСсылка на идентификацию производителя медицинского изделияReference0..1
deviceNameНаименование медицинского изделия у производителяBackboneElement0..*
deviceName.nameНаименование медицинского изделияstring1
deviceName.typeТип наименования: registered-name (наименование в регистрационном удостоверении) | user-friendly-name (краткое наименование для пользователя) | patient-reported-name (наименование для пациента)code1
modelNumberАртикул модели медицинского изделияstring0..1
classificationКлассификация медицинского изделияBackboneElement0..*
classification.typeКлассификация модели медицинского изделия или класс рискаCodeableConcept1
classification.JustificationУточнение классификации медицинского изделияRelatedArtifact0..*
conformsToСоответствие медицинского изделия стандартам или спецификациямBackboneElement0..*
conformsTo.categoryТип стандарта или спецификацииCodeableConcept0..1
conformsTo.specificationОбозначение стандарта или спецификации, которой соответствует медицинское изделиеCodeableConcept1
conformsTo.versionВерсия стандарта или спецификации, например, год публикации или номерstring0..*
conformsTo.sourceСтандарт, нормативный документ, методические указания или иная публикация, содержащая описание соответствияRelatedArtifact0..*
hasPartСоставная часть данного медицинского изделияBackboneElement0..*
hasPart.referenceСсылка на описание составной части медицинского изделияReference1
hasPart.countКоличество экземпляров составной части в данном медицинском изделииinteger0..1
packagingСведения об упаковке медицинского изделияBackboneElement0..*
packaging.identifierИдентификатор упаковки медицинского изделияIdentifier0..1
packaging.typeВид упаковкиCodeableConcept0..1
packaging.countКоличество экземпляров изделия в упаковкеinteger0..1
packaging. distributorПоставщик упакованного медицинского изделияBackboneElement0..*
packaging. distributor. nameНаименование поставщикаstring0..1
packaging. distributor. organization-ReferenceСсылка на экземпляр ресурса Organization со сведениями о поставщикеReference0..*
packaging.udiDevice-IdentifierУникальный идентификатор медицинского изделия (UDI). Предназначен для штрих-кодированияudiDeviceIdentifier0..*
packaging. packagingВложенная упаковкаpackaging0..*
versionВерсия медицинского изделия или программного обеспеченияBackboneElement0..*
version.typeТип версии, например, присвоена производителем, одобрена регуляторным органом, внутренняяCodeableConcept0..1
version.componentИдентификатор аппаратного или программного модуля изделия, к которому относится версияIdentifier0..1
version.valueИдентификатор версииstring1
safetyКласс безопасности медицинского изделияCodeableConcept0..*
shelfLifeStorageСрок годности и требования к хранениюBackboneElement0..*
shelfLifeStorage.typeТип срока годности, например, срок годности упакованного изделия, срок годности после распаковки и т.д.CodeableConcept0..1
shelfLifeStorage.period[x]Срок годности. Допустимы варианты periodDuration (длительность типа Duration) | periodString (текстовое описание типа string)*0..1
shelfLifeStorage.special-Precautions-ForStorageТребования к хранению. Если требования взяты из справочника, то должны быть указаны код и его значениеCodeableConcept0..*
languageCodeКод языка человеко-читаемого текста, выводимого изделиемCodeableConcept0..*
propertyХарактеристика медицинского изделия, например, разрешающая способность, точность, размерыBackboneElement0..*
property.typeВид характеристикиCodeableConcept1
property.value[x]Значение характеристики. Допустимые варианты элемента: valueQuantity | valueCodeableConcept | valueString | valueBoolean | valueInteger | valueRange | valueAttachment*1
ownerСсылка на организацию — владельца медицинского изделияReference0..1
contactКонтактная информация технической поддержкиContactPoint0..*
linkАссоциированное изделие, например присоединенное к данному изделию, взаимодействующее с ним, заменяющее егоBackboneElement0..*
link.relationВид ассоциации с данным изделиемCoding1
link.related-DeviceСсылка на описание ассоциированного изделия или код вида ассоциированного изделияCodeableReference1
noteПримечаниеAnnotation0..*
materialСубстанция, использованная для производства материала или материалов, из которых изготовлено изделиеBackboneElement0..*
material.substanceСубстанция, которую изделие содержит или может содержать либо из которой оно изготовленоCodeableConcept1
material.alternateПризнак альтернативыboolean0..1
material.allergenicIndicatorПризнак аллергенностиboolean0..1
productionIdentifierInUDIВид идентификатора, представленного штрихкодом. Допустимые значения: lot-number (партия) | manufactured-date (дата производства) | serial-number (серийный номер) | expiration-date (срок годности) | biological-source (биологический источник) | software-version (версия программного обеспечения)code0..*
guidelineРуководство по применению данной модели изделияBackboneElement0..1
guideline.useContextУсловие использованияUsageContext0..*
guideline.usageInstructionДетальные указания по применениюmarkdown0..1
guideline.relatedArtifactИсточник информации или ссылка на руководствоRelatedArtifact0..*
guideline.indicationПоказания к применениюCodeableConcept0..*
guideline.contraindicationПротивопоказания к применениюCodeableConcept0..*
guideline warningПредостережениеCodeableConcept0..*
guideline.intendedUseОсновное назначение медицинского изделияstring0..1
correctiveActionПрослеживание последнего корректирующего действия по обеспечению безопасностиBackboneElement0..1
correctiveAction.recallЯвляется ли корректирующее действие отзывом изделияboolean1
correctiveAction.scopeОхват действия: model (модель) | lot-numbers (партии) | serial-numbers (серийные номера)code0..1
correctiveAction.periodДаты начала и завершения корректирующего действияPeriod1
chargeItemКод оплаты или ссылка на сведения об оплате, относящиеся к данной модели изделияBackboneElement0..*
chargeItemCodeКод оплаты или ссылка на сведения об оплатеCodeableReference1
countКоэффициент, применяемый к коду оплатыQuantity1
effectivePeriodПериод оплатыPeriod0..1
useContextКонтекст оплатыUsageContext0..*
11.9.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 270.

Таблица 270

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
DeviceDefinition.regulatoryIdentifier.type http://hl7.org/fhir/ValueSet/devicedefinition-regulatory-identifier-type Обязательная Тип регистрации медицинского изделия
DeviceDefinition.deviceName.type http://hl7.org/fhir/ValueSet/device-nametype Обязательная Тип наименования медицинского изделия
DeviceDefinition.classification.type http://hl7.org/fhir/ValueSet/device-type Пример Тип медицинского изделия. Включает понятия, определенные в номенклатуре SNOMED CT (http://www.snomed.org/) с кодом 49062001 и дочерними кодами
DeviceDefinition.conformsTo.category http://hl7.org/fhir/ValueSet/device-specification-category Пример Тип стандарта или спецификации
DeviceDefinition.conformsTo.specification http://hl7.org/fhir/ValueSet/device-specification-type Пример Обозначение стандарта или спецификации
DeviceDefinition.safety http://hl7.org/fhir/ValueSet/device-safety Пример Класс безопасности медицинского изделия
DeviceDefinition.property.type http://hl7.org/fhir/ValueSet/device-property-type Пример Вид характеристики медицинского изделия
DeviceDefinition.link.relation http://hl7.org/fhir/ValueSet/devicedefinition-relationtype Расширяемая Вид ассоциации с данным изделием
DeviceDefinition.productionIdentifierInUDI http://hl7.org/fhir/ValueSet/device-productidentifierinudi Обязательная Вид идентификатора медицинского изделия, представленного штрих-кодом
DeviceDefinition.correctiveAction.scope http://hl7.org/fhir/ValueSet/device-correctiveactionscope Обязательная Охват корректирующего действия
11.9.4 Параметры поиска экземпляров ресурса DeviceDefinition

Специальные параметры поиска экземпляров ресурса DeviceDefinition описаны в таблице 271. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 271

Специальные параметры поиска экземпляров ресурса DeviceDefinition

Имя Тип Описание Выражение
device-name string Поиск по строковым полям элементов DeviceDefinition.name или DeviceDefinition.classification.type. Способ реализации зависит от сервера DeviceDefinition.deviceName.name | DeviceDefinition.classification.type.coding.display | DeviceDefinition.classification.type.text
identifier token Идентификатор модели медицинского изделия DeviceDefinition.identifier
manufacturer reference Ссылка на идентификацию производителя медицинского изделия DeviceDefinition.manufacturer
(Organization)
organization reference Ссылка на организацию — владельца медицинского изделия DeviceDefinition.owner
(Organization)
specification token Обозначение стандарта или спецификации, которой соответствует медицинское изделие DeviceDefinition.conformsTo.specification
specification-version composite Сочетание обозначения стандарта или спецификации и версии DeviceDefinition.conformsTo:
specification: specification
version: version
type token Тип стандарта или спецификации DeviceDefinition.conformsTo.category

11.10 Ресурс DeviceMetric — измерительная способность медицинского прибора

11.10.1 Область применения и использования

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

11.10.2 Структура ресурса

Ресурс DeviceMetric является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса DeviceMetric представлен на рисунке 56 и в таблице 272.

11.10 Ресурс DeviceMetric - измерительная способность медицинского прибора

Рисунок 56 — Ресурс DeviceMetric

Таблица 272

Состав элементов ресурса DeviceMetric

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
identifierИдентификатор метрикиIdentifier0..*
typeИдентификация метрикиCodeableConcept1
unitЕдиница измеренияCodeableConcept0..1
deviceСсылка на медицинский приборReference1
operationalStatusОперационный статус. Допустимые значения: on (метрика функционирует, и результаты будут передаваться) | off (метрика не функционирует) | standby (метрика функционирует, но передача результатов приостановлена) | entered-in-error (метрика введена по ошибке)code0..1
colorНаименование цвета отображения на мониторе или графике (из системы CSS Color Module Level 4) либо код цвета в системе RGB (#RRGGBB в шестнадцатеричной системе)code0..1
categoryКатегория метрики. Допустимые значения: measurement (измерение) | setting (параметр прибора) | calculation (вычисление) | unspecified (неизвестная)CodeableConcept1
measurementFrequencyЧастота опросаQuantity0..1
calibrationКалибровкаBackboneElement0..*
typeТип калибровки. Допустимые значения: unspecified (не указан) | offset (сдвиг) | gain (коэффициент) | two-point (сдвиг и коэффициент)code0..1
stateСостояние калибровки. Допустимые значения: not-calibrated (не калибрована) | calibration-required (требуется калибровка) | calibrated (калибрована) | unspecified (не указано)code0..1
timeДата и время последней калибровкиinstant0..1
11.10.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 273.

Таблица 273

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
DeviceMetric.type http://hl7.org/fhir/ValueSet/devicemetric-type Предпочтительная Подмножество кодов номенклатуры терминов MDC, определенной в ГОСТ Р 56845, описывающее типы метрик и их компонентов, а также единицы измерения
DeviceMetric.unit http://hl7.org/fhir/ValueSet/ucum-units Предпочтительная Коды, определенные в системе UCUM (Unified Code for Units of Measure — унифицированные коды единиц измерения)
DeviceMetric.operationalStatus http://hl7.org/fhir/ValueSet/metric-operational-status Обязательная Операционный статус метрики
DeviceMetric.color http://hl7.org/fhir/ValueSet/color-codes Обязательная Наименование цвета из системы CSS Color Module Level 4 либо код цвета в системе RGB (#RRGGBB в шестнадцатеричной системе)
DeviceMetric.category http://hl7.org/fhir/ValueSet/metric-category Обязательная Категория метрики
DeviceMetric.calibration.type http://hl7.org/fhir/ValueSet/metric-calibration-type Обязательная Тип калибровки
DeviceMetric.calibration.state DeviceMetric-CalibrationState Обязательная Состояние калибровки
11.10.4 Параметры поиска экземпляров ресурса DeviceMetric

Специальные параметры поиска экземпляров ресурса DeviceMetric описаны в таблице 274. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 274

Специальные параметры поиска экземпляров ресурса DeviceMetric

Имя Тип Описание Выражение
category token Категория метрики DeviceMetric.category
device reference Ссылка на медицинский прибор DeviceMetric.device
(Device)
identifier token Идентификатор метрики DeviceMetric.identifier
type token Тип метрики DeviceMetric.type

11.11 Ресурс Observation — результат исследования

11.11.1 Область применения и использования

Тип ресурса Observation используется для передачи результатов клинических исследований, в том числе:

Тип ресурса Observation не должен использоваться, если клиническая информация может быть передана с помощью других ресурсов; например, ресурс AllergyIntolerance описывает аллергии пациента, ресурс MedicationStatement — применение лекарственного препарата, ресурс FamilyMemberHistory — семейный анамнез; ресурс Procedure — сведения о выполненной процедуре, ресурс QuestionnaireResponse — ответы на вопросник, ресурс Condition — диагноз или общее состояние пациента, ресурс ClinicalImpression — клиническое описание.

11.11.2 Структура ресурса

Ресурс Observation является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса Observation представлен на рисунке 57 и в таблице 275.

11.11 Ресурс Observation - результат исследования

Рисунок 57 — Ресурс Observation

Таблица 275

Состав элементов ресурса Observation

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
identifierИдентификатор результата исследованияIdentifier0..*
instantiates[x]Ссылка на определение исследования*0..1
basedOnСсылка на план или требование, для выполнения которого предназначено данное исследованиеReference0..*
triggeredByИсследование, инициировавшее данное исследованиеBackboneElement0..*
triggeredBy.observationСсылка на экземпляр ресурса ObservationReference1
triggeredBy.typeТип инициации. Допустимые значения: reflex (в связи с результатом исследования) | repeat (повторение исследования с теми же настройками) | re-run (повторение исследования с другими настройками)code1
triggeredBy. reasonОписание причины инициации исследованияstring0..1
partOfСсылка на исследование, частью которого является данное исследованиеReference0..*
statusСостояние исследования. Допустимые значения: registered (исследование выполнено, но результат пока не доступен) | preliminary (предварительный результат, может быть неполным или не проверенным) | final (исследование выполнено и результат доступен) | amended (результат выполненного исследования изменен или дополнен) | corrected (исправлена ошибка в результате исследования) cancelled (исследование отменено) | entered-in-error (результат исследования введен по ошибке) | unknown (состояние результата исследования не известно)code1
categoryКатегория исследованияCodeableConcept0..*
codeВид исследованияCodeableConcept1
subjectСсылка на субъект исследованияReference0..1
focusСсылка на экземпляр ресурса, описывающего предмет исследования, если он отличается от субъектаReference0..*
encounterСсылка на случай медицинской помощиReference0..1
effective[x]Физиологически релевантные дата и время либо период, к которому относится результат исследования (например, дата и время взятия биоматериала)*0..1
issuedДата и время доступности текущей версии результата исследованияinstant0..1
performerСсылка на исполнителя исследованияReference0..*
value[x]Результат исследования*0..1
dataAbsent-ReasonПричина отсутствия результата исследованияCodeableConcept0..1
interpretationИнтерпретация результата исследования (норма, выше нормы и т.д.)CodeableConcept0..*
noteПримечание к исследованиюAnnotation0..*
bodySiteКод анатомической области субъекта, к которой относится результат исследованияCodeableConcept0..1
bodyStructureСсылка на описание анатомической области субъекта, к которой относится результат исследованияReference0..1
methodМетодика исследованияCodeableConcept0..1
specimenСсылка на идентификацию исследованного биоматериалаReference0..1
deviceСсылка на медицинский прибор, с помощью которого получен результат исследования, или на его измерительную способностьReference0..1
referenceRangeСправочный диапазонBackboneElement0..*
referenceRange. lowНижняя граница диапазонаSimpleQuantity0..1
referenceRange. highВерхняя граница диапазонаSimpleQuantity0..1
referenceRange. normalValueКачественное значение нормы (например, 'отрицательный результат')CodeableConcept0..1
referenceRange. typeВид справочного диапазонаCodeableConcept0..1
referenceRange. appliesToПопуляция для данного справочного диапазонаCodeableConcept0..*
referenceRange. ageВозрастная группа (диапазон)Range0..1
referenceRange. textПовествовательное описание справочного диапазонаmarkdown0..1
hasMemberСсылка на экземпляр ресурса, являющийся частью результата данного исследования, например на запись дневника самонаблюденийReference0..*
derivedFromСсылка на экземпляр ресурса, используемого для получения данного результата исследованияReference0..*
componentКомпонент результата исследованияBackboneElement0..*
component.codeВид исследованияCodeableConcept1
component. value[x]Результат исследования-0..1
component.dataAbsentReasonПричина отсутствия результата исследованияCodeableConcept0..1
component.interpretationИнтерпретация результата исследования (норма, выше нормы и т.д.)CodeableConcept0..*
component.referenceRangeСправочный диапазонBackboneElement0..*
component.referenceRange.lowНижняя граница диапазонаSimple-Quantity0..1
component.referenceRange. highВерхняя граница диапазонаSimple-Quantity0..1
component.referenceRange.normalValueКачественное значение нормы (например, 'отрицательный результат')CodeableConcept0..1
component.referenceRange. typeВид справочного диапазонаCodeableConcept0..1
component.referenceRange.appliesToПопуляция для данного справочного диапазонаCodeableConcept0..*
component.referenceRange.ageВозрастная группа (диапазон)Range0..1
component.referenceRange.textПовествовательное описание справочного диапазонаmarkdown0..1
11.11.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 276.

Таблица 276

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
Observation. triggeredBy.type http://hl7.org/fhir/ValueSet/observation-triggeredbytype Обязательная Тип инициации исследования
Observation.status http://hl7.org/fhir/ValueSet/observation-status Обязательная Состояние исследования
Observation.category http://hl7.org/fhir/ValueSet/observation-category Предпочтительная Категория исследования
Observation.code http://hl7.org/fhir/ValueSet/observation-codes Пример Все коды LOINC
Observation.dataAbsentReason http://hl7.org/fhir/ValueSet/data-absent-reason Расширяемая Причина отсутствия результата исследования
Observation.interpretation http://hl7.org/fhir/ValueSet/observation-interpretation Расширяемая Интерпретация результата исследования
Observation.bodySite http://hl7.org/fhir/ValueSet/bodysite Пример Все коды анатомических областей, определенные в номенклатуре SNOMED CT как потомки понятия с кодом 442083009
Observation.method http://hl7.org/fhir/ValueSet/observation-methods Пример Коды методик, определенные в номенклатуре SNOMED CT как потомки понятия с кодом 272394005, или 129264002, или 386053000
Observation.referenceRange.normalValue http://hl7.org/fhir/ValueSet/observation-referencerange-normalvalue Расширяемая Коды, описывающие нормальные значения, например Absent (отсутствует)
Observation.referenceRange.type http://hl7.org/fhir/ValueSet/referencerange-meaning Предпочтительная Тип справочного диапазона
Observation.referenceRange.appliesTo http://hl7.org/fhir/ValueSet/referencerange-appliesto Пример Популяция
Observation. component.code http://hl7.org/fhir/ValueSet/observation-codes Пример Все коды LOINC
Observation. component.dataAbsentReason http://hl7.org/fhir/ValueSet/data-absent-reason Расширяемая Причина отсутствия результата исследования
Observation. component.interpretation http://hl7.org/fhir/ValueSet/observation-interpretation Расширяемая Интерпретация результата исследования
11.11.4 Ограничения ресурса Observation

Ограничения ресурса Observation описаны в таблице 277.

Таблица 277

Ограничения ресурса Observation

Идентификатор Вид Путь Описание Выражение
obs-3 Правило Observation.referenceRange Должен присутствовать хотя бы один из компонентов low, high или text low.exists() or high.exists() or text.exists()
obs-6 Правило Базовый Если отсутствует элемент Observation.value[x], должен присутствовать элемент dataAbsentReason dataAbsentReason.empty() or value.empty()
obs-7 Правило Базовый Если значение элемента Observation.component.code совпадает со значением элемента Observation.code, то элемент Observation.value должен отсутствовать (результат исследования возвращается в элементе Observation.component.value[x]) value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()
obs-8 Правило Базовый Элемент bodyStructure должен присутствовать только при отсутствии элемента Observation.bodySite bodySite.exists() implies bodyStructure.empty()
obs-9 Правило Observation.specimen Если элемент Observation.specimen ссылается на экземпляр ресурса Group, то его членами должны быть экземпляры ресурса Specimen (reference.resolve().exists() and reference.resolve() is Group) implies reference.resolve().member.entity.resolve().all($this is Specimen)
11.11.5 Использование элемента Observation.component

Элемент Observation.component используется для передачи компонентов результата исследования, которые должны интерпретироваться совместно. Компоненты могут быть отдельными частями результата или могут детализировать исследование, указанное в элементе Observation.code. Компоненты могут использоваться только в том случае, если исследование выполняется по одной методике, одним исполнителем, одним прибором и в одно и то же время.

Примерами результатов исследований, имеющих компоненты, служат:

В то же время исследование индекса массы тела не должно содержать компоненты веса и роста, поскольку они являются самостоятельными измерениями и должны быть представлены отдельными экземплярами ресурса Observation.

11.11.6 Использование элементов Observation.hasMember и Observation.derivedFrom

Элементы Observation.hasMember и Observation.derivedFrom используются для ссылок на результаты исследований, которые могут интерпретироваться и использоваться сами по себе и различаются хотя бы одним из элементов method, performer, device, effective. Примерами могут служить:

11.11.7 Результаты с кодированными значениями

Результат исследования может представляться в форме кода из определенной системы кодирования. Например, медицинский прибор вместо количественного значения (или вместе с ним) может передать код 8574682, определенный в системе кодирования MDC (ГОСТ Р 56842) и указывающий на низкий заряд батареи. Этот же код в другой системе кодирования может иметь иное значение. И наоборот, это же состояние заряда батареи может иметь другой код в местной системе кодирования.

В таких случаях в качестве value[x] должен использоваться вариант valueCodeableConcept, в котором можно указать несколько эквивалентных кодов из разных систем кодирования.

Если код подобного события отсутствует или указан код, означающий «прочее», то в компоненте valueCodeableConcept.text можно передать подходящее текстовое значение.

11.11.8 Варианты типа данных результата исследования

В экземпляре ресурса Observation вместо value[x] должен быть подставлен один из следующих элементов, определяющих тип данных:

Вариант valueAttachment представляет двоичный результат исследования, например изображение.

Вариант valueBoolean используется редко, поскольку большинство результатов исследований кроме ответов да/нет могут содержать исключительное значение, например «неизвестно». Поэтому вместо valueBoolean рекомендуется использовать вариант valueCodeableConcept, привязанный к набору значений с трехзначной логикой, например http://hl7.org/fhir/R4/valueset-example-yesnodontknow.html.

11.11.9 Физиологически релевантное время результата исследования

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

11.11.10 Отмененное или прекращенное исследование

Если измерение или анализ не могут быть выполнены (например, недостаточно биоматериала), то элементу status должно быть присвоено значение cancelled и должна быть указана причина, желательно кодированная. Для этого можно опустить элемент value[x] и использовать элемент dataAbsentReason или указать соответствующий код в варианте valueCodeableConcept.

11.11.11 Параметры поиска экземпляров ресурса Observation

Специальные параметры поиска экземпляров ресурса Observation описаны в таблице 278. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 278

Специальные параметры поиска экземпляров ресурса Observation

Имя Тип Описание Выражение
based-on reference Ссылка на план или требование, для выполнения которого предназначено данное исследование Observation.basedOn
(CarePlan, MedicationRequest, NutritionOrder, DeviceRequest, ServiceRequest, ImmunizationRecommendation)
category token Категория исследования Observation.category
code token Вид исследования Observation.code
code-value-concept composite Вид исследования и кодированное значение результата On Observation: code: code-value-concept: value.ofType(CodeableConcept)
code-value-date composite Вид исследования и значение результата в форме даты и времени или диапазона дат и времени On Observation: code: code-value-date: value.ofType(dateTime) | value.ofType(Period)
code-value-quantity composite Вид исследования и количественное значение результата On Observation: code: code-value-quantity: value.ofType(Quantity)
code-value-string composite Вид исследования и строковое значение результата On Observation: code: code-value-string: value.ofType(string)
combo-code token Вид исследования, в том числе у компонентов исследования Observation.code | Observation.component.code
combo-code-value-concept composite Вид исследования и кодированное значение результата, в том числе у компонентов исследования On Observation | Observation.component:
combo-code: code combo-value-concept: value.ofType(CodeableConcept)
combo-code-value-quantity composite Вид исследования и количественное значение результата, в том числе у компонентов исследования On Observation | Observation.component:
combo-code: code combo-value-quantity: value.ofType(Quantity)
combo-data-absent-reason token Причина отсутствия элемента Observation.value[x] или Observation.component.value[x] Observation.dataAbsentReason | Observation.component.dataAbsentReason
combo-value-concept token Значение результата исследования или компонента исследования, если оно имеет тип данных CodeableConcept Observation.value.ofType(CodeableConcept) | Observation.component.value.ofType(CodeableConcept)
combo-value-quantity quantity Значение результата исследования или компонента исследования, если оно имеет тип данных Quantity или SampledData Observation.value.ofType(Quantity) | Observation.value.ofType(SampledData) | Observation.component.value.ofType(Quantity) | Observation.component.value.ofType(SampledData)
component-code token Вид исследования у компонента Observation.component.code
component-code-value-concept composite Вид исследования и кодированное значение результата у компонента исследования On Observation.component:
component-code: code
component-value-concept: value.ofType(CodeableConcept)
component-code-value-quantity composite Вид исследования и количественное значение результата у компонента исследования On Observation.component:
component-code: code
component-value-quantity: value.ofType(Quantity)
component-data-absent-reason token Причина отсутствия элемента Observation.component.value[x] Observation.component.dataAbsentReason
component-value-canonical uri Значение URL элемента valueCanonical у компонента исследования Observation.component.value.ofType(canonical)
component-value-concept token Значение результата компонента исследования, если оно имеет тип данных CodeableConcept Observation.component.value.ofType(CodeableConcept)
component-value-quantity quantity Значение результата компонента исследования, если оно имеет тип данных Quantity или SampledData Observation.component.value.ofType(Quantity) | Observation.component.value.ofType(SampledData)
component-value-reference reference Значение результата компонента исследования, если оно имеет тип данных Reference Observation.component.value.ofType(Reference) (MolecularSequence)
data-absent-reason token Причина отсутствия элемента Observation.value[x] Observation.dataAbsentReason
date date Физиологически релевантные дата и время либо период, к которому относится результат исследования Observation.effective.ofType(dateTime) | Observation.effective.ofType(Period) | Observation.effective.ofType(Timing) | Observation.effective.ofType(instant)
derived-from reference Ссылка на экземпляр ресурса, используемого для получения данного результата исследования Observation.derivedFrom
(GenomicStudy, Observation, ImagingStudy, MolecularSequence, ImagingSelection, QuestionnaireResponse, DocumentReference)
device reference Ссылка на медицинский прибор, с помощью которого получен результат исследования, или на его измерительную способность Observation.device
(Device, DeviceMetric)
encounter reference Ссылка на случай медицинской помощи Observation.encounter
(Encounter)
focus reference Ссылка на экземпляр ресурса, описывающего предмет исследования, если он отличается от субъекта Observation.focus
(Any)
has-member reference Ссылка на экземпляр ресурса, являющийся частью результата данного исследования Observation.hasMember
(Observation, MolecularSequence, QuestionnaireResponse)
identifier token Идентификатор результата исследования Observation.identifier
method token Методика исследования Observation.method
part-of reference Ссылка на исследование, частью которого является данное исследование Observation.partOf
(GenomicStudy, Immunization, MedicationDispense, MedicationAdministration, Procedure, ImagingStudy, MedicationStatement)
patient reference Ссылка на субъект исследования (если это пациент) Observation.subject.where(resolve() is Patient) (Patient)
performer reference Ссылка на исполнителя исследования Observation.performer
(Practitioner, Organization, CareTeam, Patient, PractitionerRole, RelatedPerson)
specimen reference Ссылка на идентификацию исследованного биоматериала Observation.specimen
(Specimen, Group)
status token Состояние исследования Observation.status
subject reference Ссылка на субъект исследования Observation.subject
(Practitioner, Group, Organization, BiologicallyDerivedProduct, NutritionProduct, Device, Medication, Patient, Procedure, Substance, Location)
value-canonical uri Значение URL элемента valueCanonical Observation.value.ofType(canonical)
value-concept token Значение результата исследования, если оно имеет тип данных CodeableConcept Observation.value.ofType(CodeableConcept)
value-date date Значение результата исследования, если оно имеет тип данных dateTime или Period Observation.value.ofType(dateTime) | Observation.value.ofType(Period)
value-markdown string Значение результата исследования, если оно имеет тип данных string, а также поиск по компоненту text значения результата типа CodeableConcept Observation.value.ofType(markdown) | Observation.value.ofType(CodeableConcept).text
value-quantity quantity Значение результата исследования, если оно имеет тип данных Quantity или SampledData Observation.value.ofType(Quantity) | Observation.value.ofType(SampledData)
value-reference reference Значение результата исследования, если оно имеет тип данных Reference. Observation.value.ofType(Reference) (MolecularSequence)
11.11.12 Передача результатов измерений

Примерный процесс передачи результата измерений показан на рисунке 58.

11.11 Ресурс Observation - результат исследования

Рисунок 58 — Процесс передачи результата измерений

ПМП устанавливает связь с менеджером ПМП или шлюзом интернета вещей (далее для краткости упоминается только менеджер). Затем ПМП передает протокольные данные, необходимые для интерпретации результатов измерений или управления прибором, например выбранные единицы измерения или процент заряда батареи. Если за время, прошедшее с предыдущего сеанса связи, у ПМП прервалась линия времени (например, таймер был сброшен или пациент изменил дату и время таймера), то ПМП должен передать менеджеру показания своего таймера в формате ГОСТ Р 56845. Менеджер формирует экземпляр ресурса Observation, содержащий сверку показаний таймера ПМП и таймера менеджера, и передает его сервису обработки и хранения результатов измерений (далее — сервис). Сервис сохраняет сверку таймеров, а МИС получает сохраненный экземпляр ресурса Observation по подписке.

ПМП осуществляет измерение показателей состояния пациента или среды его обитания и передает менеджеру результат измерения в формате ГОСТ Р 56845. Менеджер преобразует полученный результат в экземпляр ресурса Observation, в том числе добавляет в него идентификатор ПМП, дату и время поступления результата измерения, а также идентификатор последней сверки таймеров. Затем менеджер передает сервису сформированный экземпляр ресурса Observation. Сервис сохраняет результат измерений, а МИС получает сохраненный экземпляр ресурса Observation по подписке.

11.11.13 Варианты типов результатов измерений

Взаимодействие ПМП с менеджером, осуществляемое в соответствии со стандартом ГОСТ Р 56845, может включать в себя обмен данными, не являющимися результатами измерений. Например, пользователь может изменить на своих весах единицы веса с фунтов на килограммы. Весы информируют об этом шлюз. В передаче этого события сервису нет никакой необходимости. Передача требуется, если по событию измерения ПМП передает менеджеру один из 12 атрибутов, перечисленных в таблице 279.

Таблица 279

Атрибуты, передаваемые по событию измерения

Атрибут Описание
Basic-Nu-Observed-Value Одно число, представленное в формате SFLOAT
Simple-Nu-Observed-Value Одно число, представленное в формате FLOAT
Compound-Basic-Nu-Observed-Value Несколько чисел, представленных в формате SFLOAT
Compound-Simple-Nu-Observed-Value Несколько чисел, представленных в формате FLOAT
Nu-Observed-Value Одно число, представленное в формате FLOAT и дополненное единицами измерения и типом данных
Compound Nu-Observed-Value Несколько чисел, представленных в формате FLOAT и дополненных единицами измерения и типом данных
Simple-Sa-Observed-Value Последовательность масштабируемых периодических числовых считываний
Enum-Observed-Value-Simple-OID Результат измерения, представленный номенклатурным кодом
Enum-Observed-Value-Basic-Bit-Str Поле из 16 битов, каждый из которых описывает определенное состояние или событие
Enum-Observed-Value-Simple-Bit-Str Поле из 32 битов, каждый из которых описывает определенное состояние или событие
Enum-Observed-Value-Simple-Str Человеко-читаемая строка
Enum-Observed-Value Поле из 32 битов, каждый из которых описывает определенное состояние или событие, дополненное номенклатурным кодом или строкой, а также типом данных

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

Некоторые атрибуты, например Basic-Nu-Observed-Value и Simple-Nu-Observed-Value, представляют один и тот же тип измерений, отличающийся только длиной представления чисел с плавающей точкой. Поэтому варианты типов результатов измерений сводятся к следующим шести вариантам:

11.11.14 Представления чисел с плавающий точкой FLOAT и SFLOAT

В стандарте ГОСТ Р 56845 для чисел с плавающей точкой определены форматы FLOAT и SFLOAT. Формат SFLOAT использует 16 битов, а FLOAT — 32 бита. Для передачи некоторых типов ошибок зарезервированы пять специальных значений, приведенных в таблице 280.

Таблица 280

Зарезервированные значения чисел с плавающей точкой

FLOAT SFLOAT Описание Представление в экземпляре ресурса Observation
0x007FFFFF 0x7FF Не число (NaN) dataAbsentReason.coding.code = 'not-a-number'
0x007FFFFE 0x7FE Положительная бесконечность (+inf) dataAbsentReason.coding.code = 'positive-infinity'
0x00800002 0x802 Отрицательная бесконечность (-inf) dataAbsentReason.coding.code = 'negative-infinity'
0x00800000 0x800 Не может быть представлено с данной точностью dataAbsentReason.coding.code = 'error'
0x00800001 0x801 Зарезервировано для будущего использования dataAbsentReason.coding.code = 'error'
11.11.15 Номенклатурные коды

Согласно стандарту ГОСТ Р 56845 типы измерений, единицы измерения и ряд других характеристик, относящихся к результатам измерений, должны передаваться в виде номенклатурных кодов, определенных в стандарте ГОСТ Р 56842. Эти коды представляют собой 32-битовые целые числа без знака. Старшие 16 битов задают раздел номенклатуры, а младшие 16 битов — код термина в этом разделе. С каждым номенклатурным кодом связан «почти человеко-читаемый» мнемокод; например, с кодом 147842 связан мнемокод MDC_ECG_HEART_RATE (частота сокращений сердца, определенная по ЭКГ). ПМП передает шлюзу только числовой номенклатурный код, а при передаче сервису шлюз по возможности дополняет номенклатурный код мнемокодом. В ряде случаев ПМП передает только код термина, если раздел можно определить из контекста передачи.

При передаче результатов измерений ПМП использует в качестве единиц измерений соответствующий номенклатурный код. При передаче сервису шлюз должен указать код единицы измерения, определенный в стандарте UCUM [37].

11.11.16 Отображение номенклатурного кода в элементы с типом данных CodeableConcept

При отображении номенклатурных кодов в элементы ресурса Observation, имеющие тип данных CodeableConcept, он должен представляться в компонентах этого типа данных следующим образом:

Мнемокод может быть дополнен его кратким описанием на русском языке, например, «MDC_ECG_HEART_RATE: частота сокращений сердца, определенная по ЭКГ».

Согласно стандарту ГОСТ Р 56845, в составе каждого результата измерений должен присутствовать атрибут Type, указывающий тип измерения. Однако в составе результата измерений могут быть атрибуты, модифицирующие или изменяющие значение атрибута Type. Поэтому рекомендуется использовать следующий алгоритм присваивания номенклатурного кода элементу Observation.code.coding.code:

  1. termCode = Metric-Id;

  2. если присутствует атрибут Metric-Id-Partition:

  3. partition = Metric-Id-Partition;

  1. termCode = *-Observed-Value.metric;

  2. Observation.code.coding.code = partition*216+termCode.

В элементах, имеющих тип данных CodeableConcept, группа компонентов coding.code и coding.system может повторяться при условии, что они относятся к одному и тому же понятию, возможно, с разной степенью общности. Если номенклатурному коду соответствует понятие, определенное в профиле жизненно важных показателей (https://www.hl7.org/fhir/observation-vitalsigns.html), то во второй группе компонентов coding.code и coding.system должен быть передан код, указанный в этом профиле. В еще одной группе следует передать код измерения, взятый из нормативно-справочной информации Минздрава России.

11.11.17 Представление единиц измерения

Результаты измерений, представляющие физические величины, могут содержать единицы измерения. Они передаются в атрибуте Unit-Code, но атрибуты Nu-Observed-Value и Compound-Nu-Observed-Value содержат собственные компоненты единиц измерения, которые переопределяют значение атрибута Unit-Code.

Все коды единиц измерения определены в разделе 4 номенклатуры MDC (см. 11.11.17), поэтому ПМП передает менеджеру только код термина. При формировании экземпляра ресурса Observation менеджер должен преобразовать код термина в эквивалентный код системы UCUM. Если эквивалентный код отсутствует, то в экземпляр ресурса Observation должен быть помещен полный 32-битовый номенклатурный код, вычисляемый по коду термина для раздела 4.

11.11.18 Преобразование битовых полей

Результаты измерений могут содержать битовые поля, в которых каждый бит описывает состояние или событие. Например, результат измерения, переданный пульсоксиметром, может содержать 16-битовое поле, в котором установлен бит 11 (то есть имеет значение 1), означающий плохой сигнал.

Битовые поля в нотации АСН.1 могут быть определены следующим образом (см. [1] - [21]):

MeasurementStatus ::= BITS-16 {

invalid(0),

questionable(1),

not-available(2),

calibration-ongoing(3),

test-data(4),

demo-data(5),

validated-data(8),

early-indication(9),

msmt-ongoing(10),

msmt-state-in-alarm(14),

msmt-state-al-inhibited(15)

}

Здесь каждому значащему биту присвоено имя, например test-data (тестовые данные), а в скобах указан номер бита. Номер 0 соответствует старшему значащему биту. Для некоторых битов определение пропущено, они могут быть задействованы в следующих версиях стандартов. В данном примере использованы 11 битов из 16.

Преобразование битового поля осуществляется следующим образом. Номенклатурный код битового поля помещается в элемент Observation.code в соответствии с таблицей 281.

Таблица 281

Преобразование номенклатурного кода битового поля

Компонент элемента Observation.code Значение
Observation.code.coding.system «urn:iso:std:iso:11073:10101»
Observation.code.coding.code номенклатурный код, например 150604
Observation.code.text мнемокод, соответствующий номенклатурному коду (необязателен), дополненный текстом, например «MDC_PULS_OXIM_DEV_STATUS: Состояние процесса измерений»

Затем для каждого значащего бита создается отдельный экземпляр элемента Observation.component, компоненты которого заполняются в соответствии с таблицей 282.

Таблица 282

Преобразование значения отдельного бита

Компонент элемента Observation.code Значение
Observation.component.code.coding.system «http://hl7.org/fhir/uv/phd/CodeSystem/ASN1 ToHL7»
Observation.component.code.coding.code Номенклатурный код, дополненный точкой и номером бита, например «150604.11»
Observation.component.code.text Имя бита в определении АСН.1 (необязательно), например, «signal-poor»
Observation.component.valueCodeableConcept.coding.system «http://terminology.hl7.org/CodeSystem/v2-0136»
Observation.component.valueCodeableConcept.coding.code «Y», если бит установлен, «N», если бит снят
Observation.component.valueCodeableConcept.text Человеко-читаемый текст, соответствующий значению бита, например «Плохой сигнал»

Если бит описывает событие (event), например, signal-poor (плохой сигнал), то экземпляр элемента Observation.component создается только для установленного бита. Если бит описывает состояние (state), например lim-low-off (обнаружение нижнего предела отключено), то экземпляр элемента Observation.component создается при любом значении бита.

11.11.19 Идентификатор результата измерения

Некоторые ПМП повторно передают старые данные. Чтобы исключить появление дубликатов результатов измерений в базе данных сервиса, менеджер ПМП должен присваивать элементу Observation.identifier значение, одинаковое для всех дубликатов, и при передаче экземпляра Observation сервису использовать контейнер транзакции Bundle, в котором указан элемент ifNoneExists с соответствующим фильтром.

11.11.20 Статус результата измерений

Атрибут Measurement-Status передается как 16-битовое поле. Он определяет 11 событий, идентифицирующих ошибки или особые условия измерения. Он имеет тип данных MeasurementStatus, имеющий следующее определение на языке АСН.1:

MeasurementStatus ::= BITS-16 {

invalid(0),

questionable(1),

not-available(2),

calibration-ongoing(3),

test-data(4),

demo-data(5),

validated-data(8),

early-indication(9),

msmt-ongoing(10),

msmt-state-in-alarm(14),

msmt-state-al-inhibited(15)

}

Биты могут быть установлены параллельно, но не все сочетания битов имеют смысл.

Для передачи статуса результата измерений используются три элемента ресурса Observation: dataAbsentReason, interpretation и meta.security (таблица 283).

Таблица 283

Передача статуса результатов измерений в элементах ресурса Observation

Бит Имя Описание Элемент ресурса Observation
0 invalid Ошибочный результат dataAbsentReason.coding.system=«http://terminology.hl7.org/CodeSystem/data-absent-reason»
dataAbsentReason.coding.code=«error»
1 questionable Достоверность результата под вопросом interpretation.coding.system=http://hl7.org/fhir/uv/pocd/CodeSystem/measurement-status
interpretation.coding.code=«questionable»
2 not-available Результат недоступен dataAbsentReason.coding.system=«http://terminology.hl7.org/CodeSystem/data-absent-reason»
dataAbsentReason.coding.code=«not-performed»
3 calibration-ongoing В процессе калибровки interpretation.coding.system=«http://hl7.org/fhir/uv/pocd/CodeSystem/measurement-status»
interpretation.coding.code=«calibration-ongoing»
4 test-data Тестовый результат meta.security.code=«HTEST»
meta.security.system=«http://terminology.hl7.org/CodeSystem/v3-ActReason»
5 demo-data Демонстрационный результат meta.security.code=«HTEST»
meta.security.system=«http://terminology.hl7.org/CodeSystem/v3-ActReason»
8 validated-data Результат проверен interpretation.coding.system=«http://hl7.org/fhir/uv/pocd/CodeSystem/measurement-status»
interpretation.coding.code=«validated-data»
9 early-indication Предварительный результат interpretation.coding.system=«http://hl7.org/fhir/uv/pocd/CodeSystem/measurement-status»
interpretation.coding.code=«early-indication»
10 msmt-ongoing В процессе измерения dataAbsentReason.coding.code=«temp-unknown» data-AbsentReason.coding.system=«http://terminology.hl7.org/CodeSystem/data-absent-reason»
14 msmt-value-exceed-boundaries Результат за пределами диапазона interpretation.coding.system=«http://hl7.org/fhir/uv/pocd/CodeSystem/measurement-status»
interpretation.coding.code=«in-alarm»
15 msmt-state-ann-inhibited Оповещение о выходе за пределы диапазона отключено interpretation.coding.system=«http://hl7.org/fhir/uv/pocd/CodeSystem/measurement-status»
interpretation.coding.code=«alarm-inhibited»

Если результат измерения передается в атрибуте Nu-Observed-Value или Enum-Observed-Value, то статус результата измерений берется из компонента state этого атрибута.

11.11.21 Сверка таймеров

Сверка таймеров представляет собой значение таймера менеджера, считанное при получении от ПМП значения таймера ПМП. В предположении, что таймер менеджера синхронизирован с мировым временем (например, по протоколу Network Time Protocol) лучше, чем таймер ПМП (что обычно имеет место), менеджер должен корректировать время выполнения измерения на разность между показаниями двух таймеров. Иными словами, менеджер должен поместить момент измерения на свою линию времени.

Сверка таймеров должна осуществляться после каждого прерывания линии времени у ПМП, например после ручной переустановки даты и времени на ПМП.

Сверка таймеров передается сервису в форме экземпляра ресурса Observation, структура которого описана в пункте 0. При передаче сервису результата измерений идентификатор последней сверки таймеров должен передаваться в элементе Observation.derivedFrom.

Экземпляр ресурса Observation, содержащий сверку таймеров, должен заполняться следующим образом:

Если ПМП в результатах измерений не передает штампы даты и времени, то экземпляр сверки таймеров не создается и менеджер передает сервису дату и время получения от ПМП результата измерений.

Если ПМП не сообщает менеджеру свое текущее время, но при этом передает в результатах измерений штампы даты и времени, то создается экземпляр сверки таймеров, заполняемый следующим образом:

При передаче результата измерений сервису менеджер указывает дату и время получения от ПМП результата измерений.

11.11.22 Сверка таймера и тактового счетчика

Вместо таймера ПМП может использовать тактовый счетчик («относительное время»). Стандарт ГОСТ Р 56845 предусматривает два типа счетчиков: обычный 32-битовый с величиной такта 1/8 миллисекунды и 64-битовый с величиной такта 1 микросекунда. Текущее значение счетчика, приведенное к микросекундам, передается в элементе Observation.valueQuantity. Оно используется менеджером для преобразования в дату и время с часовым поясом.

Если ПМП не сообщает менеджеру текущее значение тактового счетчика, но при этом передает в результатах измерений штампы относительного времени, то создается экземпляр сверки таймеров, в котором Observation.valueQuantity не передается, а в элементе Observation.dataAbsentReason.coding.code передается значение unknown.

11.11.23 ПМП, не соответствующие стандарту ГОСТ Р 56845

Ряд моделей ПМП, например использующие протокол связи Bluetooth Low Energy, не соответствует стандарту ГОСТ Р 56845. Менеджер должен преобразовать информацию, передаваемую такими ПМП, в объекты MDS и Metric, определенные в этом стандарте, а затем передать эти объекты сервису в форме экземпляров ресурса Observation. Один из вариантов такого преобразования описан в [36].

11.11.24 Профиль Observation-PhdNumeric
11.11.24.1 Общие требования

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

Результат измерений, передаваемый ПМП, является скалярным, если он содержит один из атрибутов, перечисленных в таблице 284.

Таблица 284

Атрибуты скалярных результатов измерений

Атрибут Тип данных Примечание
Basic-Nu-Observed-Value SFLOAT 16-битовое число с 12-битовой мантиссой
Simple-Nu-Observed-Value FLOAT 32-битовое число с 24-битовой мантиссой
Nu-Observed-Value FLOAT Комплексный атрибут. Содержит компоненты value (значение), metric-id (идентификатор метрики), state (статус результата измерения) и unit-code (единица измерения)
11.11.24.2 Отображение скалярных результатов измерений на элементы ресурса Observation

Отображение скалярных результатов измерений на элементы ресурса Observation приведено в таблице 285. Единицы измерения должны быть преобразованы в коды UCUM. В некоторых случаях потребуются определенные ухищрения. Например, для кардиографа единица измерения интервала R-R может быть определена мнемокодом MDC_DIM_TICK, означающим число тактов. В этом случае результат измерения должен содержать атрибут с мнемокодом MDC_ATTR_TICK_RES, содержащий число тактов в секунду. Таким образом, если этот атрибут имеет значение 2048, а результат измерения интервала R-R равен 3092, то длительность интервала R-R равна 1,5 секунды.

Таблица 285

Отображение скалярных результатов измерений на элементы ресурса Observation

Атрибут Отображение на элементы ресурса Observation
Basic-Nu-Observed-Value.value Observation.valueQuantity.value
Unit-Code Observation.valueQuantity.code (код UCUM)
Observation.valueQuantity.system=«http://unitsofmeasure.org»
Simple-Nu-Observed-Value.value Observation.valueQuantity.value
Nu-Observed-Value.value Observation.valueQuantity.value
Nu-Observed-Value.unit Observation.valueQuantity.system=«http://unitsofmeasure.org» Observation.valueQuantity.code
Nu-Observed-Value.metric-id Значение компонента metric-id влияет на Observation.code, см. 11.11.16
Nu-Observed-Value.state Преобразование компонента state приведено в таблице 283
11.11.24.3 Дополнительная информация к числовому результату

Согласно [38], числовые результаты могут содержать дополнительные атрибуты, предоставляющие дальнейшие сведения об измерении, а именно:

11.11.24.4 Атрибут Accuracy

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

Отображение атрибута Accuracy на элементы ресурса Observation представлено в таблице 286.

Таблица 286

Отображение атрибута Accuracy на элементы ресурса Observation

Компонент элемента Observation.component Значение Примечание
code.coding.code «67914» Номенклатурный код атрибута Accuracy
code.coding.system «urn:iso:std:iso:11073:10101» Идентификатор системы кодирования MDC
code.text «MDC_ATTR_NU_ACCUR_MSMT: точность» Необязательный текст
valueQuantity.value Значение атрибута Accuracy -
valueQuantity.system «http://unitsofmeasure.org» Идентификатор системы кодирования UCUM
valueQuantity.code Код единицы измерения Должен использоваться тот же код, что у результата измерения
11.11.24.5 Атрибут Alert-Op-State

Атрибут Alert-Op-State (состояние предупреждений о выходе результата измерения за нижнюю или верхнюю границу) используется при передаче результатов измерений, выполненных пульсоксиметром. Он представляет собой битовое поле, идентифицирующее состояние предупреждений о выходе результата измерения за нижнюю или верхнюю границу заданного диапазона.

Отображение атрибута Alert-Op-State на элементы ресурса Observation представлено в таблице 287.

Таблица 287

Отображение атрибута Alert-Op-State на элементы ресурса Observation

Компонент элемента Observation.component Значение Примечание
code.coding.code «68746.n» Атрибут Alert-Op-State имеет номенклатурный код 68746. Номер бита n может принимать значение 0, 1 или 2
code.coding.system «http://hl7.org/fhir/uv/phd/CodeSystem/ASN1ToHL7» Идентификатор системы кодирования ASN1ToHL7
code.text «lim-alert-off» (предупреждение о выходе за границы отключено) | «lim-low-off» (предупреждение о выходе за нижнюю границу отключено) | «lim-high-off» (предупреждение о выходе за верхнюю границу отключено) для битов 0 | 1 | 2 соответственно Необязательный текст
valueCodeableConcept.coding.code «Y» или «N» «Y» — бит установлен, «N» — бит снят
valueCodeableConcept.coding.system «http://terminology.hl7.org/CodeSystem/v2-0203» Идентификатор системы кодирования v2-0203
11.11.24.6 Атрибут Alert-Op-Text-String

Атрибут Alert-Op-Text-String (тексты предупреждений о выходе результата измерения за нижнюю или верхнюю границу) используется при передаче результатов измерений, выполненных пульсоксиметром. Он содержит тексты предупреждений о выходе результата измерения за нижнюю или верхнюю границу заданного диапазона.

Отображение атрибута Alert-Op-Text-Stringe на элементы ресурса Observation представлено в таблице 288.

Таблица 288

Отображение атрибута Alert-Op-Text-String на элементы ресурса Observation

Компонент элемента Observation.component Значение Примечание
code.coding.code «68104» Номенклатурный код атрибута Alert-Op-Text-String
code.coding.system «urn:iso:std:iso:11073:10101» Идентификатор системы кодирования MDC
code.text «MDC_ATTR_AL_OP_TEXT_STRING: строки предупреждений о выходе за границы» Необязательный текст
valueString Alert-Op-Text-String.lower-text + « » + Alert-Op-Text-String.upper-text Конкатенация текстов предупреждений о выходе результата измерений за нижнюю и верхнюю границу
11.11.24.7 Атрибут Current-Limits

Атрибут Current-Limits (границы контролируемого диапазона) используется при передаче результатов измерений, выполненных пульсоксиметром. Он содержит границы диапазона, выход за которые должен контролироваться.

Отображение атрибута Current-Limits на элементы ресурса Observation представлено в таблице 289.

Таблица 289

Отображение атрибута Current-Limits на элементы ресурса Observation

Компонент элемента Observation.component Значение Примечание
code.coding.code «67892» Номенклатурный код атрибута Current-Limits
code.coding.system «urn:iso:std:iso:11073:10101» Идентификатор системы кодирования MDC
code.text «MDC_ATTR_LIMIT_CURR: нижняя и верхняя граница» Необязательный текст
valueRange.low.value Current-Limits.lower Нижняя граница
valueRange.low.system «http://unitsofmeasure.org» Идентификатор системы кодирования UCUM
valueRange.low.code Код единицы измерения Должен использоваться тот же код, что у результата измерения
valueRange.high.value Current-Limits.upper Верхняя граница
valueRange.high.system «http://unitsofmeasure.org» Идентификатор системы кодирования UCUM
valueRange.high.code Код единицы измерения Должен использоваться тот же код, что у результата измерения
11.11.24.8 Атрибут Measurement-Confidence-95

Атрибут Measurement-Confidence-95 (границы диапазона достоверности 95%) используется при передаче результатов измерений, выполненных глюкометром непрерывного действия. Он содержит нижнюю и верхнюю границу диапазона, в который производитель прибора с вероятностью 95% гарантирует вхождение результата измерения.

Отображение атрибута Measurement-Confidence-95 на элементы ресурса Observation представлено в таблице 290.

Таблица 290

Отображение атрибута Measurement-Confidence-95 на элементы ресурса Observation

Компонент элемента Observation.component Значение Примечание
code.coding.code «68236» Номенклатурный код атрибута Measurement-Confidence-95
code.coding.system «urn:iso:std:iso:11073:10101» Идентификатор системы кодирования MDC
code.text «MDC_ATTR_MSMT_CONFIDENCE_95: доверительный интервал 95%» Необязательный текст
valueRange.low.value Measurement-Confidence-95.lower-bound Нижняя граница
valueRange.low.system «http://unitsofmeasure.org» Идентификатор системы кодирования UCUM
valueRange.low.code Код единицы измерения Должен использоваться тот же код, что у результата измерения
valueRange.high.value Measurement-Confidence-95.upper-bound Верхняя граница
valueRange.high.system «http://unitsofmeasure.org» Идентификатор системы кодирования UCUM
valueRange.high.code Код единицы измерения Должен использоваться тот же код, что у результата измерения
11.11.24.9 Атрибут Threshold-Notification-Text-String

Атрибут Threshold-Notification-Text-String (предупреждение о выходе за границу) используется при передаче результатов измерений, выполненных глюкометром непрерывного действия. Он содержит текст текущего предупреждения о выходе за границу заданного диапазона.

Отображение атрибута Threshold-Notification-Text-String на элементы ресурса Observation представлено в таблице 291.

Таблица 291

Отображение атрибута Threshold-Notification-Text-String на элементы ресурса Observation

Компонент элемента Observation.component Значение Примечание
code.coding.code «68232» Номенклатурный код атрибута Threshold-Notifi cation-Text-String
code.coding.system «urn:iso:std:iso:11073:10101» Идентификатор системы кодирования MDC
code.text «MDC_ATTR_THRES_NOTIF_TEXT_STRING: предупреждение о выходе за границу» Необязательный текст
valueString Threshold-Notification-Text-String Текст текущего предупреждения о выходе за границы заданного диапазона
11.11.24.10 Состав элементов профиля Observation-PhdNumeric

Профиль Observation-PhdNumeric (скалярный результат измерения) оставляет в ресурсе Observation только те элементы, которые могут использоваться при преобразовании скалярного результата измерения из формата, предусмотренного стандартом ГОСТ Р 56845 (рисунок 59 и таблица 292). Имя ресурса остается неизменным — Observation, имя профиля передается в элементе meta.profile.

11.11 Ресурс Observation - результат исследования

Рисунок 59 — Профиль Observation-PhdNumeric

Таблица 292

Состав элементов профиля Observation-PhdNumeric

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
meta.profileФиксированное значение «Observation-PhdNumeric»string1
meta.securityСтатус результата измерения (если тестовый или демонстрационный)Coding0..1
meta.security.systemСистема кодирования значений статуса. Фиксированное значение «http://terminology.hl7.org/CodeSystem/v3-ActReason»uri1
meta.security.codeКод статуса. Фиксированное значение «HTEST»code1
Собственные элементы
identifierИдентификатор результата измеренияIdentifier1
statusСостояние измерения. Фиксированное значение unknown (состояние результата измерения не известно). Фактическое состояние измерения передается в других элементах в соответствии с таблицей 283code1
categoryКатегория измерения. Заполняется кодом LOINC, если измеряются жизненно важные показателиCodeableConcept0..1
codeВид измерения. Заполняется в соответствии с 11.11.16CodeableConcept1
effective[x]Дата и время или диапазон даты и времени выполнения измерения. Допустимые значения: effectiveDateTime | effectivePeriod*1
valueQuantityРезультат измеренияSimpleQuantity0..1
dataAbsent-ReasonПричина отсутствия результата измерения (см. таблицу 280)CodeableConcept0..1
interpretationСтатус результата измерений (см. таблицу 283)CodeableConcept0..1
deviceСсылка на экземпляр ресурса Device, идентифицирующий персональный медицинский прибор, с помощью которого получен результат измеренияReference0..1
derivedFromСсылка на экземпляр ресурса Observation, содержащий сверку таймеров ПМП и менеджераReference0..1
componentДополнительные сведения о результате измеренияBackboneElement0..*
component.codeВид сведенийCodeableConcept1
component. value[x]Значение сведений. Допустимые значения: valueQuantity (скалярная величина) | valueCodeableConcept (битовое поле) | valueString (текст) | valueRange (границы)*0..1
component.dataAbsentReasonПричина отсутствия значения сведений (см. таблицу 280)CodeableConcept0..1
11.11.25 Профиль Observation-PhdCompoundNumeric
11.11.25.1 Общие требования

Профиль Observation-PhdCompoundNumeric (массив скалярных величин) используется для передачи вектора или массива связанных скалярных величин, измеренных примерно в один и тот же момент времени, например вектора ускорения или показателей артериального давления (систолическое, диастолическое, среднее).

Результат измерений, передаваемый ПМП, является массивом скалярных величин, если он содержит один из атрибутов, перечисленных в таблице 293.

Таблица 293

Атрибуты массива скалярных результатов измерений

Атрибут Тип данных Примечание
Compound-Basic-Nu-Observed-Value Массив SFLOAT Массив 16-битовых чисел с 12-битовой мантиссой
Compound-Simple-Nu-Observed-Value Массив FLOAT Массив 32-битовых чисел с 24-битовой мантиссой
Compound-Nu-Observed-Value Массив FLOAT Массив комплексных атрибутов, содержащих компоненты value (значение), metric-id (идентификатор метрики), state (статус результата измерения) и unit-code (единица измерения)

Каждый элемент массива передается в отдельном экземпляре элемента Observation.component. Если результат измерения содержит атрибут Compound-Basic-Nu-Observed-Value или Compound-Simple-Nu-Observed-Value, то он должен содержать атрибут Metric-Id-List, содержащий список кодов, идентифицирующих виды измеренных величин. Порядок следования кодов совпадает с порядком следования элементов массива. Если результат измерения содержит атрибут Compound-Nu-Observed-Value, то код вида измерений берется из его компонента metric-id. Полученный код вида измерений преобразуется в 32-битовый номенклатурный код в соответствии с 11.11.16. Результат преобразования передается в элементе Observation.component.code.

Результат измерений включает в себя атрибут Type. Его значение преобразуется в 32-битовый номенклатурный код в соответствии с 11.11.16. Результат преобразования передается в элементе Observation.code. Элемент Observation.value не заполняется. Если в атрибуте Measurement-Status установлены биты 0 (Ошибочный результат), 2 (Результат недоступен) или 10 (В процессе измерения), то соответствующий код должен быть передан в элементе Observation.dataAbsentReason. В этом случае компоненты массива не передаются.

11.11.25.2 Отображение массива скалярных результатов измерений на элементы ресурса Observation

Отображение массива скалярных результатов измерений на элементы ресурса Observation приведено в таблице 294. Атрибут Metric-Id-List содержит список атрибутов Metric-Id и его n-й элемент обозначается как Metric-Id[n].

Таблица 294

Отображение массива скалярных результатов измерений на элементы ресурса Observation

Атрибут Отображение на элементы ресурса Observation
Compound-Basic-Nu-Observed-Value.value[n] Observation.component[n].valueQuantity.value
Unit-Code Observation.component[1..n].valueQuantity.system=«http://unitsofmeasure.org»
Observation.component[1..n].valueQuantity.code (эквивалентный код UCUM)
Metric-Id[n] Observation.component[n].code.coding.code
Simple-Nu-Observed-Value.value[n] Observation.component[n].valueQuantity.value
Nu-Observed-Value.value[n] Observation.component[n].valueQuantity.value
Nu-Observed-Value.unit[n] Observation.component[n].valueQuantity.system=«http://unitsofmeasure.org»
Observation.component[n].valueQuantity.code (эквивалентный код UCUM)
Nu-Observed-Value.metric-id[n] Observation.component[n].code.coding.code
Nu-Observed-Value.state[n] Преобразование компонента state осуществляется по аналогии с таблицей 283. При этом биты 4 и 5 игнорируются
11.11.25.3 Дополнительная информация к массиву скалярных результатов

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

Отображение атрибута Accuracy на элементы ресурса Observation представлено в таблице 286.

11.11.25.4 Состав элементов профиля Observation-PhdCompoundNumeric

Профиль Observation-PhdCompoundNumeric (скалярный результат измерения) оставляет в ресурсе Observation только те элементы, которые могут использоваться при преобразовании массива скалярных результатов измерения из формата ГОСТ Р 56845 (рисунок 60 и таблица 295). Имя ресурса остается неизменным — Observation, имя профиля передается в элементе meta.profile.

11.11 Ресурс Observation - результат исследования

Рисунок 60 — Профиль Observation-PhdCompoundNumeric

Таблица 295

Состав элементов профиля Observation-PhdCompoundNumeric

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
meta.profileФиксированное значение «ObservationPhdCompoundNumeric»string1
meta.securityСтатус результата измерения (если тестовый или демонстрационный)Coding0..1
meta.security.systemСистема кодирования значений статуса. Фиксированное значение «http://terminology.hl7.org/CodeSystem/v3-ActReason»uri1
meta.security.codeКод статуса. Фиксированное значение «HTEST»code1
Собственные элементы
identifierИдентификатор результата измеренияIdentifier1
statusСостояние измерения. Фиксированное значение «unknown» (состояние результата измерения не известно). Фактическое состояние измерения передается в других элементах в соответствии с таблицей 283code1
categoryКатегория измерения. Заполняется кодом LOINC, если измеряются жизненно важные показателиCodeable-Concept0..1
codeВид измерения. Заполняется в соответствии с 11.11.16Codeable-Concept1
effective[x]Дата и время или диапазон даты и времени выполнения измерения. Допустимые значения: effectiveDateTime | effectivePeriod*1
dataAbsentReasonПричина отсутствия результата измеренияCodeable-Concept0..1
interpretationСтатус результата измерений (см. таблицу 283)Codeable-Concept0..1
deviceСсылка на экземпляр ресурса Device, идентифицирующий персональный медицинский прибор, с помощью которого получен результат измеренияReference0..1
derivedFromСсылка на экземпляр ресурса Observation, содержащий сверку таймеров ПМП и менеджераReference0..1
componentКомпонент результата измерений или точность результатовBackbone-Element0..*
component.codeВид измерения. Заполняется в соответствии с 11.11.16Codeable-Concept1
component.value-QuantityРезультат измеренияSimpleQuantity0..1
component.data-AbsentReasonПричина отсутствия результата измерений (см. таблицу 280)Codeable-Concept0..1
component. interpretationСтатус результата измерений (см. таблицу 283)Codeable-Concept0..1
11.11.26 Профиль Observation-PhdCodedEnumeration
11.11.26.1 Общие требования

Профиль Observation-PhdCodedEnumeration (кодируемый результат) используется для передачи результата измерений, представленного кодом из определенного перечня. Примером может служить контекст питания, ассоциированный с измерением концентрации глюкозы и определяемый кодами: fasting (натощак), preprandial (перед едой), postprandial (после еды) и т.д.

Результат измерений, передаваемый ПМП, является кодируемым результатом, если он содержит один из атрибутов, перечисленных в таблице 296.

Таблица 296

Атрибуты кодируемого результата

Атрибут Тип данных Примечание
Enum-Observed-Value-Simple-OID 16-битовый код термина Номер раздела берется из атрибута Type или Enum-Observed-Value-Partition
Enum-Observed-Value (вариант с типом значения OID-Type) 16-битовый код термина Комплексный атрибут. Содержит компоненты metric-id (идентификатор метрики), state (статус результата измерения), value (значение). Номер раздела для значения берется из атрибута Type или Enum-Observed-Value-Partition

Атрибут Enum-Observed-Value-Simple-OID содержит 16-битовый код термина. Код раздела, требуемый для вычисления 32-битового номенклатурного кода, берется из атрибута Type или Enum-Observed-Value-Partition.

Атрибут Enum-Observed-Value содержит полиморфный компонент value. При передаче кодированного результата этот компонент должен иметь тип OID-Type.

Если результат измерения содержит атрибут Enum-Observed-Value-Simple-OID, то он должен содержать атрибут Metric-Id, содержащий код, идентифицирующий вид измерения. Если результат измерения содержит атрибут Enum-Observed-Value, то код вида измерений берется из его компонента metric-id. Полученный код вида измерения преобразуется в 32-битовый номенклатурный код в соответствии с 11.11.16. Результат преобразования передается в элементе Observation.code.

11.11.26.2 Отображение кодируемых результатов измерений на элементы ресурса Observation

Отображение кодируемых результатов измерений на элементы ресурса Observation приведено в таблице 297.

Таблица 297

Отображение кодируемых результатов измерений на элементы ресурса Observation

Атрибут Отображение на элементы ресурса Observation
Enum-Observed- Observation.valueCodeableConcept.coding.system=«urn:iso:std:iso:11073:10101»
Value-Simple-OID или Enum-Observed-Value.value Observation.valueCodeableConcept.coding.code
Observation.valueCodeableConcept.text = мнемокод, соответствующий номенклатурному коду (необязателен), дополненный текстом, например «MDC_CTXT_GLU_MEAL_POSTPRANDIAL: После еды»
Enum-Observed-Value.metric-id Значение компонента metric-id влияет на Observation.code, см. 11.11.16
Enum-Observed-Value.state Преобразование компонента state приведено в таблице 283
11.11.26.3 Состав элементов профиля Observation-PhdCodedEnumeration

Профиль Observation-PhdCodedEnumeration (кодируемый результат измерения) оставляет в ресурсе Observation только те элементы, которые могут использоваться при преобразовании кодируемых результатов измерения из формата ГОСТ Р 56845 (рисунок 61 и таблица 298). Имя ресурса остается неизменным — Observation, имя профиля передается в элементе meta.profile.

11.11 Ресурс Observation - результат исследования

Рисунок 61 — Профиль Observation-PhdCodedEnumeration

Таблица 298

Состав элементов профиля Observation-PhdCodedEnumeration

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
meta.profileФиксированное значение «Observation-PhdCodedEnumeration»string1
meta.securityСтатус результата измерения (если тестовый или демонстрационный)Coding0..1
meta.security.systemСистема кодирования значений статуса. Фиксированное значение «http://terminology.hl7.org/CodeSystem/v3-ActReason»uri1
meta.security.codeКод статуса. Фиксированное значение «HTEST»code1
Собственные элементы
identifierИдентификатор результата измеренияIdentifier1
statusСостояние измерения. Фиксированное значение «unknown» (состояние результата измерения не известно). Фактическое состояние измерения передается в других элементах в соответствии с таблицей 283code1
categoryКатегория измерения. Заполняется кодом LOINC, если измеряются жизненно важные показателиCodeable-Concept0..1
codeВид измерения. Заполняется в соответствии с 11.11.16Codeable-Concept1
effective[x]Дата и время или диапазон даты и времени выполнения измерения. Допустимые значения: effectiveDateTime | effectivePeriod*1
dataAbsentReasonПричина отсутствия результата измерения (см. таблицу 280)Codeable-Concept0..1
interpretationСтатус результата измерений (см. таблицу 283)Codeable-Concept0..1
deviceСсылка на экземпляр ресурса Device, идентифицирующий персональный медицинский прибор, с помощью которого получен результат измеренияReference0..1
derivedFromСсылка на экземпляр ресурса Observation, содержащий сверку таймеров ПМП и менеджераReference0..1
11.11.27 Профиль Observation-PhdBitsEnumeration
11.11.27.1 Общие требования

Профиль Observation-PhdBitsEnumeration (битовый результат) используется для передачи результата измерений, представленного битовым полем. Примером могут служить сведения о состоянии датчика пульсоксиметра, содержащие признаки sensor-displaced (неправильная установка датчика) и т.д. Несколько таких признаков может быть передано в одном результате.

Результат измерений, передаваемый ПМП, является битовым результатом, если он содержит один из атрибутов, перечисленных в таблице 299.

Таблица 299

Атрибуты битового результата

Атрибут Тип данных Примечание
Enum-Observed-Value-Simple-Bit-Str 32-битовое значение Каждый бит может означать отдельный признак
Enum-Observed-Value-Basic-Bit-Str 16-битовое значение Каждый бит может означать отдельный признак
Enum-Observed-Value (вариант с типом значения BITS-32) 32-битовое значение Комплексный атрибут. Содержит компоненты metric-id (идентификатор метрики), state (статус результата измерения), value (значение). Каждый бит значения может означать отдельный признак

Атрибут Enum-Observed-Value-Basic-Bit-Str содержит 16-битовый код термина, а атрибут Enum-Observed-Value-Simple-Bit-Str — 32-битовый код термина. Код раздела, требуемый для вычисления 32-битового номенклатурного кода, берется из атрибута Type или Enum-Observed-Value-Partition.

Атрибут Enum-Observed-Value содержит полиморфный компонент value. При передаче кодированного результата этот компонент должен иметь тип BITS-32.

Если результат измерения содержит атрибут Enum-Observed-Value-Basic-Bit-Str или Enum-Observed-Value-Simple-Bit-Str, то он должен содержать атрибут Metric-Id, содержащий код, идентифицирующий вид измерения. Если результат измерения содержит атрибут Enum-Observed-Value, то код вида измерений берется из его компонента metric-id. Полученный код вида измерения преобразуется в 32-битовый номенклатурный код в соответствии с 11.11.16. Результат преобразования передается в элементе Observation.code.

Результат измерений включает в себя атрибут Type. Его значение преобразуется в 32-битовый номенклатурный код в соответствии с 11.11.16. Результат преобразования передается в элементе Observation.code. Элемент Observation.value не заполняется. Если в атрибуте Measurement-Status установлены биты 0 (Ошибочный результат), 2 (Результат недоступен) или 10 (В процессе измерения), то соответствующий код должен быть передан в элементе Observation.dataAbsentReason. В этом случае компоненты битового результата не передаются.

11.11.27.2 Отображение битовых результатов измерений на элементы ресурса Observation

Отображение битовых результатов измерений на элементы ресурса Observation приведено в таблице 300. Бит результата измерения с номером n обозначается через bit[n], номер соответствующего ему экземпляра компонента обозначается через m. Поскольку не все биты результата могут быть значащими и снятые биты состояний не должны отображаться в компонентах ресурса Observation, то m <= n.

Таблица 300

Отображение битовых результатов измерений на элементы ресурса Observation

Атрибут Отображение на элементы ресурса Observation
Enum-Observed-Value-Basic-Bit_str.bit[n] (0 <= n <= 15), Enum-Observed-Value-Simple-Bit_str.bit[n] (0 <= n <= 31), Enum-Observed-Value.value.bit[n] (0 <= n <= 31) Observation.component[m].code.coding.system=«http://hl7.org/fhir/uv/phd/CodeSystem/ASN1ToHL7»
Observation.component[m].code.coding.code= номенклатурный код измерения, дополненный точкой и значением n
Observation.component[m].code.text= имя бита n в определении АСН.1 битового результата (необязательно), например «sensor-displaced»
Observation.component[m].valueCodableConcept.coding.system=«http://terminology.hl7.org/CodeSystem/v2-0136»
Observation.component[m].valueCodableConcept.coding.code=«Y», если бит n установлен, «N», если бит n снят
Observation.valueCodeableConcept.text = текст на русском языке, соответствующий имени и значению бита (необязательно), например «Неправильная установка датчика»
Enum-Observed-Value.metric-id Значение компонента metric-id влияет на Observation.code, см. 11.11.16
Enum-Observed-Value.state Преобразование компонента state приведено в таблице 283
Если бит n не поддерживается Observation.component[m].dataAbsentReason.coding.system=«http://terminology.hl7.org/CodeSystem/data-absent-reason»
Observation.component[m].dataAbsentReason.coding.code=«unsupported»
11.11.27.3 Состав элементов профиля Observation-PhdBitsEnumeration

Профиль Observation-PhdBitsEnumeration (кодируемый результат измерения) оставляет в ресурсе Observation только те элементы, которые могут использоваться при преобразовании кодируемых результатов измерения из формата ГОСТ Р 56845 (рисунок 62 и таблица 301). Имя ресурса остается неизменным — Observation, имя профиля передается в элементе meta.profile.

11.11 Ресурс Observation - результат исследования

Рисунок 62 — Профиль Observation-PhdBitsEnumeration

Таблица 301

Состав элементов профиля Observation-PhdBitsEnumeration

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
meta.profileФиксированное значение «Observation-PhdBitsEnumeration»string1
meta.securityСтатус результата измерения (если тестовый или демонстрационный)Coding0..1
meta.security. systemСистема кодирования значений статуса. Фиксированное значение «http://terminology.hl7.org/CodeSystem/v3-ActReason»uri1
meta.security.codeКод статуса. Фиксированное значение «HTEST»code1
Собственные элементы
identifierИдентификатор результата измеренияIdentifier1
statusСостояние измерения. Фиксированное значение «unknown» (состояние результата измерения не известно). Фактическое состояние измерения передается в других элементах в соответствии с таблицей 283code1
categoryКатегория измерения. Заполняется кодом LOINC, если измеряются жизненно важные показателиCodeableConcept0..1
codeВид измерения. Заполняется в соответствии с 11.11.16CodeableConcept1
effective[x]Дата и время или диапазон даты и времени выполнения измерения. Допустимые значения: effectiveDateTime | effectivePeriod*1
dataAbsentReasonПричина отсутствия результата измерения (см. таблицу 280)CodeableConcept0..1
interpretationСтатус результата измерений (см. таблицу 283)CodeableConcept0..1
deviceСсылка на экземпляр ресурса Device, идентифицирующий персональный медицинский прибор, с помощью которого получен результат измеренияReference0..1
derivedFromСсылка на экземпляр ресурса Observation, содержащий сверку таймеров ПМП и менеджераReference0..1
componentБит результата измеренийBackboneElement0..*
component.codeВид измерения. Заполняется в соответствии с таблицей 300CodeableConcept1
component.valueCodingРезультат измерения. Заполняется в соответствии с таблицей 300ValueCoding0..1
component.dataAbsentReasonПричина отсутствия результата измеренийCodeableConcept0..1
component.dataAbsentReason.coding.systemФиксированное значение «http://terminology.hl7.org/CodeSystem/data-absent-reason»uri1
component.dataAbsentReason.coding.codeФиксированное значение «unsupported»code1
11.11.28 Профиль Observation-PhdStringEnumeration
11.11.28.1 Общие требования

Профиль Observation-PhdStringEnumeration (строковый результат) используется для передачи результата измерений, представленного строкой теста. Примером может служить наименование физического упражнения, контролируемого монитором сердечно-сосудистой активности.

Результат измерений, передаваемый ПМП, является строковым результатом, если он содержит один из атрибутов, перечисленных в таблице 302.

Таблица 302

Атрибуты кодируемого результата

Атрибут Тип данных Примечание
Enum-Observed-Value-Simple-Str Строка печатаемых символов в кодировке ASCII Номер раздела берется из атрибута Type или Enum-Observed-Value-Partition
Enum-Observed-Value (вариант с типом значения OCTET STRING) Строка печатаемых символов в кодировке ASCII Комплексный атрибут. Содержит компоненты metric-id (идентификатор метрики), state (статус результата измерения), value (значение). Номер раздела для значения берется из атрибута Type или Enum-Observed-Value-Partition

Атрибут Enum-Observed-Value содержит полиморфный компонент value. При передаче строкового результата этот компонент должен иметь тип OCTET STRING.

Если результат измерения содержит атрибут Enum-Observed-Value-Simple-Str, то он должен содержать атрибут Metric-Id, содержащий код, идентифицирующий вид измерения. Если результат измерения содержит атрибут Enum-Observed-Value, то код вида измерений берется из его компонента metric-id. Полученный код вида измерения преобразуется в 32-битовый номенклатурный код в соответствии с 11.11.16. Результат преобразования передается в элементе Observation.code.

11.11.28.2 Отображение строковых результатов измерений на элементы ресурса Observation

Отображение строковых результатов измерений на элементы ресурса Observation приведено в таблице 303.

Таблица 303

Отображение строковых результатов измерений на элементы ресурса Observation

Атрибут Отображение на элементы ресурса Observation
Enum-Observed-Value-Simple-Str или Enum-Observed-Value.value Observation.valueString
Enum-Observed-Value.metric-id Значение компонента metric-id влияет на Observation.code, см. 11.11.16
Enum-Observed-Value.state Преобразование компонента state приведено в таблице 283
11.11.28.3 Состав элементов профиля Observation-PhdStringEnumeration

Профиль Observation-PhdStringEnumeration (строковый результат измерения) оставляет в ресурсе Observation только те элементы, которые могут использоваться при преобразовании кодируемых результатов измерения из формата ГОСТ Р 56845 (рисунок 63 и таблица 304). Имя ресурса остается неизменным — Observation, имя профиля передается в элементе meta.profile.

11.11 Ресурс Observation - результат исследования

Рисунок 63 — Профиль Observation-PhdStringEnumeration

Таблица 304

Состав элементов профиля Observation-PhdStringEnumeration

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
meta.profileФиксированное значение «Observation-PhdStringEnumeration»string1
meta.securityСтатус результата измерения (если тестовый или демонстрационный)Coding0..1
meta.security.systemСистема кодирования значений статуса. Фиксированное значение «http://terminology.hl7.org/CodeSystem/v3-ActReason»uri1
meta.security. codeКод статуса. Фиксированное значение «HTEST»code1
Собственные элементы
identifierИдентификатор результата измеренияIdentifier1
statusСостояние измерения. Фиксированное значение «unknown» (состояние результата измерения не известно). Фактическое состояние измерения передается в других элементах в соответствии с таблицей 283code1
codeВид измерения. Заполняется в соответствии с 11.11.16CodeableConcept1
effectiveDateTimeДата и время или диапазон даты и времени выполнения измерения. Допустимые значения: effectiveDateTime | effectivePeriod*1
valueStringРезультат измеренияstring0..1
dataAbsent-ReasonПричина отсутствия результата измерения (см. таблицу 280)CodeableConcept0..1
interpretationСтатус результата измерений (см. таблицу 283)CodeableConcept0..1
deviceСсылка на экземпляр ресурса Device, идентифицирующий персональный медицинский прибор, с помощью которого получен результат измеренияReference0..1
derivedFromСсылка на экземпляр ресурса Observation, содержащий сверку таймеров ПМП и менеджераReference0..1
11.11.29 Профиль Observation-PhdRtsa
11.11.29.1 Общие требования

Профиль Observation-PhdRtsa (массив считываний) используется для передачи периодических считываний биосигнала, например, плетизмограмм или кардиограмм. Массив считываний является одномерным. Для передачи векторов ускорения или считываний нескольких отведений кардиограммы должны использоваться отдельные экземпляры ресурса Observation

Результат измерений, передаваемый ПМП, является массивом считываний, если он содержит атрибут Simple-Sa-Observed-Value. Перечень его атрибутов, учитываемых при преобразовании в экземпляр ресурса Observation, приведен в таблице 305.

Таблица 305

Атрибуты массива считываний

Атрибут Тип данных Примечание
Simple-Sa-Observed-Value OCTET STRING Строка байтов, содержащая считывания в формате, определяемом атрибутами Sa-Specification и Scale-and-Range-Specification
Sample-Period.period integer Интервал между считываниями, выраженный в 1/8 миллисекунды. Таким образом, 8000 = 1 с
Unit-Code OID-Type 16-битовый термин для единиц измерения. Для получения номенклатурного кода следует использовать раздел 4 номенклатуры MDC (см. 11.11.17)
Sa-Specification.sampletype.significant-bits integer Число значащих битов в считывании
Sa-Specification.sampletype.sample-size integer Число битов в считывании; задает значение X в атрибутах Scale-and-Range-SpecificationX
Sa-Specification.array-size integer Число считываний, содержащихся в атрибуте Simple-Sa-Observed-Value
Scale-and-Range-SpecificationX.upper-absolute-value FLOAT Верхняя граница результата измерений (необязательная)
Scale-and-Range-SpecificationX.lower-absolute-value FLOAT Нижняя граница результата измерений (необязательная)
Scale-and-Range-SpecificationX.upper-scaled-value X-битовое целое число Верхняя граница считываний (необязательная)
Scale-and-Range-SpecificationX.lower-scaled-value X-битовое целое число Нижняя граница считываний (необязательная)

Считывание представляет собой целое число, полученное с помощью аналого-цифрового преобразователя. Для преобразования считывания в результат измерения используется следующая формула:

y = ((A — B)x)/(I — J) + A — (A — B)I/(I — J),

где y = результат измерения;

A = верхняя граница результатов измерений;

B = нижняя граница результатов измерений;

J = нижняя граница считываний.

Эта формула может быть приведена к следующему виду:

y = sx + b,

где s — коэффициент масштабирования, а b — смещение нулевого значения считывания. Величин s определяется как (A — B)/(I — J), а b — как (BI — AJ)/(I — J). Единицы измерения определяются кодом термина, переданным в атрибуте Unit-Code.

Если атрибут significant-bits равен 255, то считывания, а также значения атрибутов lower-scaled-value и upper-scaled-value должны интерпретироваться как целые числа со знаком, представленные в форме дополнения до двух.

11.11.29.2 Отображение массива считываний на элементы ресурса Observation

Отображение массива считываний на элементы ресурса Observation приведено в таблице 306. Считывание с номером i обозначается как data[i].

Таблица 306

Отображение массива считываний на элементы ресурса Observation

Атрибут Отображение на элементы ресурса Observation
Simple-Sa-Observed-Value.data[i] Observation.valueSampledData.data[i]
Unit-Code.code Observation.valueSampledData.origin.system = =«http://unitsofmeasure.org»
Observation.valueSampledData.origin.code (эквивалентный код UCUM)
Смещение b Observation.valueSampledData.origin.value = b
Коэффициент масштабирования s Observation.valueSampledData.factor = s
Sample-Period.period/8 Observation.valueSampledData.interval
Observation.valueSampledData.intervalUnit = «ms»
- Observation.valueSampledData.dimensions = 1
Scale-and-Range-SpecificationX.upper-absolute-value Observation.referenceRange.high.value
Unit-Code.code Observation.referenceRange.high.system = =«http://unitsofmeasure.org»
Observation.referenceRange.high.code ((эквивалентный код UCUM))
Scale-and-Range-SpecificationX.lower-absolute-value Observation.referenceRange.low.value
Unit-Code.code Observation.referenceRange.low.system = =«http://unitsofmeasure.org»
Observation.referenceRange.low.code ((эквивалентный код UCUM))
11.11.29.3 Состав элементов профиля Observation-PhdRtsa

Профиль Observation-PhdRtsa (массив считываний) оставляет в ресурсе Observation только те элементы, которые могут использоваться для передачи результатов измерения биосигнала (рисунок 64 и таблица 307). Имя ресурса остается неизменным — Observation, имя профиля передается в элементе meta.profile.

11.11 Ресурс Observation - результат исследования

Рисунок 64 — Профиль Observation-PhdRtsa

Таблица 307

Состав элементов профиля Observation-PhdRtsa

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
meta.profileФиксированное значение «Observation-PhdRtsa»string1
meta.securityСтатус результата измерения (если тестовый или демонстрационный)Coding0..1
meta.security.systemСистема кодирования значений статуса. Фиксированное значение «http://terminology.hl7.org/CodeSystem/v3-ActReason»uri1
meta.security.codeКод статуса. Фиксированное значение «HTEST»code1
Собственные элементы
identifierИдентификатор результата измеренияIdentifier1
statusСостояние измерения. Фиксированное значение «unknown» (состояние результата измерения не известно). Фактическое состояние измерения передается в других элементах в соответствии с таблицей 283code1
codeВид измерения. Заполняется в соответствии с 11.11.16CodeableConcept1
effectiveDateTimeДата и время или диапазон даты и времени выполнения измерения. Допустимые значения: effectiveDateTime | effectivePeriod*1
valueSampledDataРезультат измеренияstring0..1
valueSampledData.originСмещение нулевого значения и его единицыSimpleQuantity1
valueSampledData. origin.valueЗначение смещенияdecimal1
valueSampledData. origin.systemСистема кодирования единиц измерения. Фиксированное значение «http://unitsofmeasure.org»uri1
valueSampledData. origin.codeКод единицы измерения в системе UCUMcode1
valueSampledData.intervalЧисло intervalUnits между считываниямиdecimal0..1
factorМасштабирующий коэффициент, применяемый к считыванию до добавления базового смещенияdecimal0..1
valueSampledData.intervalUnitЕдиницы измерения интервала между считываниями. Фиксированное значение «ms» (миллисекунды)code1
valueSampledData. factorМасштабирующий коэффициент, применяемый к считыванию до добавления базового смещенияdecimal0..1
dimensionsЧисло считываний в каждый момент времени. Фиксированное значение «1»positiveInt1
dataAbsentReasonПричина отсутствия результата измерения (см. таблицу 280)CodeableConcept0..1
interpretationСтатус результата измерений (см. таблицу 283)CodeableConcept0..1
deviceСсылка на экземпляр ресурса Device, идентифицирующий персональный медицинский прибор, с помощью которого получен результат измеренияReference0..1
referenceRangeДиапазон значений считыванийBackboneElement0..1
referenceRange.lowНижняя граница диапазонаSimpleQuantity0..1
referenceRange.low. valueЗначение нижней границыdecimal1
referenceRange.low.systemСистема кодирования единиц измерения. Фиксированное значение «http://unitsofmeasure.org»uri1
referenceRange.low. codeКод единицы измерения в системе UCUM (должен совпадать с valueSampledData.origin.code)code1
referenceRange.highВерхняя граница диапазонаSimpleQuantity0..1
referenceRange.high.valueЗначение верхней границыdecimal1
referenceRange.high.systemСистема кодирования единиц измерения. Фиксированное значение «http://unitsofmeasure.org»uri1
referenceRange.high. codeКод единицы измерения в системе UCUM (должен совпадать с valueSampledData.origin.code)code1
derivedFromСсылка на экземпляр ресурса Observation, содержащий сверку таймеров ПМП и менеджераReference0..1
11.11.30 Профиль Observation-PhdMedia
11.11.30.1 Общие требования

Профиль Observation-PhdMedia (медиаданные) может использоваться для передачи растровых изображений, например, плетизмограмм или кардиограмм, аудиосигналов фетального допплера, видеоданных.

Предполагается, что ПМП, передающий медиаданные, способен вместе с ними передать следующую информацию:

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

11.11.30.2 Состав элементов профиля Observation-PhdMedia

Профиль Observation-PhdMedia (медиаданные) оставляет в ресурсе Observation только те элементы, которые могут использоваться для передачи медиаданных и сопутствующей информации (рисунок 65 и таблица 308). Имя ресурса остается неизменным — Observation, имя профиля передается в элементе meta.profile.

11.11 Ресурс Observation - результат исследования

Рисунок 65 — Профиль Observation-PhdMedia

Таблица 308

Состав элементов профиля Observation-PhdMedia

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
meta.profileФиксированное значение «Observation-PhdMedia»string1
Собственные элементы
statusСостояние измерения. Фиксированное значение «final» (окончательный результат)code1
codeВид измеренийCodeableConcept1
code.codingКодированное представление вида измеренийCoding0..1
code.coding.systemСистема кодирования. Фиксированное значение «http://loinc.org»uri1
code.coding.codeКод вида измерений в системе LOINCcode1
code.textНаименование вида измеренийstring0..1
effectiveDateTimeПоказание таймера менеджера на момент получения результата измеренияdateTime1
valueAttachmentМедиаданныеAttachment1
valueAttachment.contentTypeТип содержания MIME, включая кодировку и т.д. Привязка к набору значений: http://hl7.org/fhir/ValueSet/mimetypes (обязательная)code1
valueAttachment.dataВложенные данные в формате base64base64Binary1
valueAttachment.titleНаименование данныхstring0..1
valueAttachment. creationДата и время выполнения измеренияdateTime1
deviceСсылка на экземпляр ресурса Device, идентифицирующий ПМПReference1
device.typeФиксированное значение «Device»string1
device.identifierУникальный идентификатор ПМПIdentifier1
device.identifier.valueЗначение идентификатораstring1
11.11.31 Профиль Observation-PhdCoincidentTimeStamp
11.11.31.1 Общие требования

Профиль Observation-PhdCoincidentTimeStamp (сверка таймеров) используется для сравнения линий времени ПМП и менеджера или шлюза. Элемент Observation.effectiveDateTime должен содержать текущее значение таймера менеджера, а Observation.valueDateTime или Observation.valueQuantity — текущее значение таймера ПМП. Вариант Observation.valueDateTime выбирается, если ПМП использует таймер даты и времени, а вариант Observation.valueQuantity — если ПМП использует тактовый счетчик.

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

11.11.31.2 Код вида измерений

В элементе Observation.code передается тип таймера, используемый ПМП. Менеджер ПМП определяет тип таймера, считывая атрибуты объекта MDS, приведенным в таблице 309.

Таблица 309

Атрибуты объекта MDS, указывающие тип таймера ПМП

Атрибут Тип таймера Описание Отображение на элементы ресурса Observation
Date-and-Time Абсолютное время Дата и время со смещением относительно UTC Observation.code.coding.code = 67975
Base-Offset-Time Базовое смещение Дата и время со смещением относительно другой базы Observation.code.coding.code = 68226
Relative-Time Тактовый счетчик Последовательность тактов длительностью 1/8 миллисекунды Observation.code.coding.code = 67983
HiRes-Relative-Time Тактовый счетчик с высоким разрешением Последовательность тактов длительностью 1 микросекунда Observation.code.coding.code = 68072

Элемент Observation.code.coding.system должен иметь значение «urn:iso:std:iso:11073:10101».

11.11.31.3 Состав элементов профиля Observation-PhdCoincidentTimeStamp

Профиль Observation-PhdCoincidentTimeStamp (сверка таймеров) оставляет в ресурсе Observation только те элементы, которые могут использоваться для передачи результата сверки таймеров (рисунок 66 и таблица 310). Имя ресурса остается неизменным — Observation, имя профиля передается в элементе meta.profile.

11.11 Ресурс Observation - результат исследования

Рисунок 66 — Профиль Observation-PhdCoincidentTimeStamp

Таблица 310

Состав элементов профиля Observation-PhdCoincidentTimeStamp

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
meta.profileФиксированное значение «Observation-PhdCoincidentTimeStamp»string1
Собственные элементы
statusСостояние измерения. Фиксированное значение «final» (окончательный результат)code1
codeТип таймера ПМП. Заполняется в соответствии с таблицей 309CodeableConcept1
effectiveDateTimeПоказание таймера менеджера на момент сверкиdateTime1
value[x]Показание таймера ПМП на момент сверки. Допустимые значения: valueDateTime (для таймера даты и времени) | valueQuantity (для тактового счетчика)string1
deviceСсылка на экземпляр ресурса Device, идентифицирующий ПМПReference1

11.12 Ресурс Patient — сведения о пациенте

11.12.1 Область применения и использования

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

11.12.2 Структура ресурса

Ресурс Patient является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса Patient представлен на рисунке 67 и в таблице 311.

11.12 Ресурс Patient - сведения о пациенте

Рисунок 67 — Ресурс Patient

Таблица 311

Состав элементов ресурса Patient

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
identifierИдентификатор пациентаIdentifier0..*
activeПризнак активности данной записи о пациентеboolean0..1
nameИменование пациентаHumanName0..*
telecomКонтактная информация пациентаContactPoint0..*
genderПол пациента. Допустимые значения: male (мужской) | female (женский) | other (другой) | unknown (неизвестный)code0..1
birthDateДата рождения пациента (с точностью до дня, месяца или года)date0..1
deceased[x]Признак или дата и время смерти пациента*0..1
addressАдрес пациентаAddress0..*
maritalStatusСемейное положение пациентаCodeableConcept0..1
multipleBirth[x]Признак или номер близнеца*0..1
photoФотография пациентаAttachment0..*
contactКонтактное лицо или организацияBackboneElement0..*
contact. relationshipОтношение контактного лица к пациентуCodeableConcept0..*
contact.nameИменование контактного лицаHumanName0..1
contact.addressАдрес контактного лицаAddress0..1
contact.telecomКонтактная информация контактного лицаContactPoint0..*
contact.genderПол контактного лица. Допустимые значения: male (мужской) | female (женский) | other (другой) | unknown (неизвестный)code0..1
contact. organizationСсылка на организацию, ассоциированную с контактным лицомReference0..1
contact.periodПериод действия информации о контактном лицеPeriod0..1
communicationЯзык общения с пациентомBackboneElement0..*
communication. languageЯзыкCodeableConcept1
communication. preferredПризнак предпочтительного языка общенияboolean0..1
general-PractitionerСсылка на участкового терапевта или врача общей практики пациентаReference0..*
managing-OrganizationСсылка на организацию, ответственную за сведения о пациентеReference0..1
linkСсылка на другой экземпляр сведений о пациенте или на сведения о близком лицеBackboneElement0..*
link.otherСсылка на другой экземпляр ресурса Person или экземпляр ресурса RelatedPersonReference1
link.typeТип связи с другим экземпляром ресурса. Допустимые значения: replaced-by (заменен ссылочным экземпляром | replaces (заменяет ссылочный экземпляр) | refer (ссылочный экземпляр содержит дополнительные сведения) | seealso (ссылочный экземпляр содержит сведения об этом же лице)code1
11.12.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 312.

Таблица 312

Привязки к наборам значений

ПутьНабор значенийТип привязкиОписание
Patient.genderhttp://hl7.org/fhir/ValueSet/administrative-genderОбязательнаяПол лица, указываемый в административных целях
Patient.maritalStatushttp://hl7.org/fhir/ValueSet/marital-statusExtensibleСемейное положение
Patient.contact.relationshiphttp://hl7.org/fhir/ValueSet/patient-contactrelationshipExtensibleОтношение контактного лица к пациенту
Patient.contact. genderhttp://hl7.org/fhir/ValueSet/administrative-genderОбязательнаяПол лица, указываемый в административных целях
Patient. communication.languagehttp://hl7.org/fhir/ValueSet/all-languagesОбязательнаяВсе коды из BCP-47 [[30]](#p121385) (см. http://tools.ietf.org/html/bcp47)
http://hl7.org/fhir/ValueSet/languagesРекомендованнаяКоды наиболее распространенных языков
Patient.link.typehttp://hl7.org/fhir/ValueSet/link-typeОбязательнаяТип связи с другим экземпляром ресурса
11.12.4 Ограничения ресурса Patient

Ограничения ресурса Patient описаны в таблице 313.

Таблица 313

Ограничения ресурса Patient

Идентификатор Вид Путь Описание Выражение
pat-1 Правило Patient.contact Хотя бы один из компонентов name, telecom, address или organization должен присутствовать name.exists() or telecom.exists() or address.exists() or organization.exists()
11.12.5 Параметры поиска экземпляров ресурса Patient

Специальные параметры поиска экземпляров ресурса Patient описаны в таблице 314. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 314

Специальные параметры поиска экземпляров ресурса Patient

Имя Тип Описание Выражение
active token Признак активности данной записи о пациенте Patient.active
address string Поиск по строковым компонентам, включая line, city, district, state, country, postalCode, text Patient.address
address-city string Город Patient.address.city
address-country string Страна Patient.address.country
address-postalcode string Почтовый индекс Patient.address.postalCode
address-state string Единица административного деления верхнего уровня, например, область, край, республика Patient.address.state
address-use token Код использования адреса Patient.address.use
birthdate date Дата рождения Patient.birthDate
death-date date Дата и время смерти (Patient.deceased.ofType(dateTime))
deceased token Наличие признака или даты и времени смерти Patient.deceased.exists() and Patient.deceased != false
email token Электронная почта Patient.telecom.where (system='email')
family string Фамилия Patient.name.family
gender token Пол Patient.gender
general practitioner reference Ссылка на участкового терапевта или врача общей практики Patient.generalPractitioner
(Practitioner, Organization, PractitionerRole)
given string Имя или отчество Patient.name.given
identifier token Идентификатор пациента Patient.identifier
language token Код языка общения (независимо от предпочтительности) Patient.communication.language
link reference Ссылка на другой экземпляр сведений о пациенте или на сведения о близком лице Patient.link.other
(Patient, RelatedPerson)
name string Поиск по строковым компонентам именования, включая family, given, prefix, suffix, text Patient.name
organization reference Ссылка на организацию, ответственную за сведения о пациенте Patient.managingOrganization
(Organization)
phone token Телефон Patient.telecom.where(system='phone')
phonetic string Фонетический поиск по фамилии, имени или отчеству Patient.name
telecom token Телекоммуникационный адрес (независимо от типа) Patient.telecom
11.12.6 Профиль пациента при дистанционном мониторинге

Профиль пациента при дистанционном мониторинге Patient-Dm ограничивает элементы ресурса Patient в соответствии с рисунком 68 и таблицей 315. Имя ресурса остается неизменным — Patient, имя профиля передается в элементе meta.profile.

11.12 Ресурс Patient - сведения о пациенте

Рисунок 68 — Профиль Patient-Dm

Таблица 315

Состав элементов Patient-Dm

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
Собственные элементы
identifierУникальный идентификатор пациента в медицинской информационной системеIdentifier1

11.13 Ресурс Practitioner — сведения о медицинском специалисте

11.13.1 Область применения и использования

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

11.13.2 Структура ресурса

Ресурс Practitioner является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса Practitioner представлен на рисунке 69 и в таблице 316.

11.13 Ресурс Practitioner - сведения о медицинском специалисте

Рисунок 69 — Ресурс Practitioner

Таблица 316

Состав элементов ресурса Practitioner

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifier-ExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
identifierИдентификатор медицинского работникаIdentifier0..*
activeПризнак активности данной записи о медицинском работникеboolean0..1
nameИменование медицинского работникаHumanName0..*
telecomКонтактная информация медицинского работникаContactPoint0..*
genderПол медицинского работника. Допустимые значения: male (мужской) | female (женский) | other (другой) | unknown (неизвестный)code0..1
birthDateДата рождения медицинского работника (с точностью до дня, месяца или года)date0..1
deceased[x]Признак или дата и время смерти медицинского работника*0..1
addressАдрес медицинского работникаAddress0..*
photoФотография медицинского работникаAttachment0..*
qualificationКвалификация медицинского работникаBackboneElement0..*
qualification.identifierСсылка на другой экземпляр ресурса Person или экземпляр ресурса RelatedPersonIdentifier0..*
qualification.codeКод квалификацииCodeableConcept1
qualification.periodПериод действия квалификацииPeriod0..1
qualification.issuerСсылка на организацию, удостоверившую квалификациюReference0..1
11.13.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 317.

Таблица 317

Привязки к наборам значений

ПутьНабор значенийТип привязкиОписание
Practitioner.genderhttp://hl7.org/fhir/ValueSet/administrative-genderОбязательнаяПол лица, указываемый в административных целях
Practitioner.qualification.codehttp://terminology.hl7.org/ValueSet/v2-0360ОбязательнаяКод квалификации
Practitioner. communication.languagehttp://hl7.org/fhir/ValueSet/all-languagesОбязательнаяВсе коды из BCP-47 [[30]](#p121385) (см. http://tools.ietf.org/html/bcp47)
http://hl7.org/fhir/ValueSet/languagesРекомендованнаяКоды наиболее распространенных языков
11.13.4 Параметры поиска экземпляров ресурса Practitioner

Специальные параметры поиска экземпляров ресурса Practitioner описаны в таблице 318. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 318

Специальные параметры поиска экземпляров ресурса Practitioner

Имя Тип Описание Выражение
active token Признак активности данной записи о медицинском работнике Practitioner.active
address string Поиск по строковым компонентам, включая line, city, district, state, country, postalCode, text Practitioner.address
address-city string Город Practitioner.address.city
address-country string Страна Practitioner.address.country
address-postalcode string Почтовый индекс Practitioner.address.postalCode
address-state string Единица административного деления верхнего уровня, например, область, край, республика Practitioner.address.state
address-use token Код использования адреса Practitioner.address.use
communication token Язык общения с медицинским работником Practitioner.communication.language
death-date date Дата и время смерти (Practitioner.deceased.ofType(dateTime))
deceased token Наличие признака или даты и времени смерти Practitioner.deceased.exists() and Practitioner.deceased != false
email token Электронная почта Practitioner.telecom.where(system='email')
family string Фамилия Practitioner.name.family
gender token Пол Practitioner.gender
given string Имя или отчество Practitioner.name.given
identifier token Идентификатор медицинского работника Practitioner.identifier | Practitioner.qualification.identifier
name string Поиск по строковым компонентам именования, включая family, given, prefix, suffix, text Practitioner.name
phone token Телефон Practitioner.telecom.where(system='phone')
phonetic string Фонетический поиск по фамилии, имени или отчеству Practitioner.name
qualification-period date Срок действия квалификации Practitioner.qualification.period
telecom token Телекоммуникационный адрес (независимо от типа) Practitioner.telecom
11.13.5 Профиль медицинского работника при дистанционном мониторинге

Профиль медицинского работника при дистанционном мониторинге Practitioner-Dm ограничивает элементы ресурса Practitioner в соответствии с рисунком 70 и таблицей 319. Имя ресурса остается неизменным — Practitioner, имя профиля передается в элементе meta.profile.

11.13 Ресурс Practitioner - сведения о медицинском специалисте

Рисунок 70 — Профиль Practitioner-Dm

Таблица 319

Состав элементов Practitioner-Dm

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
Собственные элементы
identifierИдентификатор медицинского работникаIdentifier1
telecomКонтактная информация медицинского работникаContactPoint1..*

11.14 Ресурс DiagnosticReport — заключение врача

11.14.1 Область применения и использования

Тип ресурса DiagnosticReport используется для описания заключения врача. В его структуре предусмотрены сведения о самом заключении, о субъекте заключения и, если это заключение врача-лаборанта или патологоанатома, о биоматериале.

11.14.2 Структура ресурса

Ресурс DiagnosticReport является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса DiagnosticReport представлен на рисунке 71 и в таблице 320.

11.14 Ресурс DiagnosticReport - заключение врача

Рисунок 71 — Ресурс DiagnosticReport

Таблица 320

Состав элементов ресурса DiagnosticReport

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifier-ExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
identifierВнешний идентификатор заключенияIdentifier0..*
basedOnСсылка на требование, для выполнения которого предназначено заключениеReference0..*
categoryКатегория клинической дисциплины, отделения или службы, составившей заключение (например, гематология, банк крови)CodeableConcept0..1
codeКод/наименование заключенияCodeableConcept0..1
encounterСсылка на случай медицинской помощиReference0..1
subjectСсылка на субъект назначения. Обычно субъектом является пациент, но не всегдаReference0..1
statusСостояние составления заключения. Допустимые значения: registered (составлено, но пока не доступно) | partial (частичное) | preliminary (предварительное, может быть неполным или не проверенным) | modified (изменено до того, как стало окончательным) | final (окончательное) | amended (изменено после того, как стало окончательным) | corrected (исправлено) | appended (дополнено) | cancelled (отменено) | entered-in-error (введено по ошибке) | unknown (неизвестное)code1
effective[x]Физиологически релевантные дата и время либо период, к которому относится заключение (например, дата и время взятия биоматериала)*0..1
issuedДата и время создания текущей версии заключенияinstant0..1
performerСсылка на составителя заключенияReference0..*
resultsInterpreterСсылка на лицо или организацию, ответственную за содержание заключенияReference0..*
specimenСсылка на идентификацию и описание биоматериала, по которому составлено заключениеReference0..*
resultСсылка на результат исследования, вошедший в заключениеReference0..*
noteПримечание к заключениюAnnotation0..*
studyСсылка на исследование генома или лучевое исследованиеReference0..*
supportingInfoДополнительные сведения, использованные для обоснования заключенияBackboneElement0..*
supportingInfo. typeТип дополнительных сведенийCodeableConcept1
supportingInfo.referenceСсылка на экземпляр ресурса, содержащий дополнительные сведенияReference1
mediaСсылка на источник изображения или двоичных данныхBackboneElement0..*
media.commentПричина включения изображения или данных в заключение либо иные комментарии к нимstring0..1
media.linkСсылка на источник изображения или данныхReference1
compositionСсылка на экземпляр ресурса Composition, описывающий структуру содержания заключенияReference0..1
conclusionТекст заключенияmarkdown0..1
conclusionCodeКод, представляющий заключение (например, код диагноза)CodeableConcept0..*
presentedFormФорматированное представление заключенияAttachment0..*
11.14.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 321.

Таблица 321

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
DiagnosticReport.status http://hl7.org/fhir/ValueSet/diagnostic-report-status Обязательная Состояние составления заключения
DiagnosticReport.category http://hl7.org/fhir/ValueSet/diagnostic-service-sections Пример Категория клинической дисциплины, отделения или службы
DiagnosticReport.code http://hl7.org/fhir/ValueSet/report-codes Предпочтительная Все коды LOINC, относящиеся к диагностическим исследованиям
DiagnosticReport.supportingInfo.type http://terminology.hl7.org/ValueSet/v2-0936 Пример Тип дополнительных сведений.
DiagnosticReport.conclusionCode SNOMEDCTClinicalFindings Пример Коды состояний, проблем и диагнозов, определенные в номенклатуре SNOMED CT как потомки понятия с кодом 404684003
11.14.4 Ограничения ресурса DiagnosticReport

Ограничения ресурса DiagnosticReport описаны в таблице 322.

Таблица 322

Ограничения ресурса DiagnosticReport

Идентификатор Вид Путь Описание Выражение
dgr-1 Правило Базовый Если элемент DiagnosticReport.composition содержит ссылку на экземпляр ресурса Composition, то на все экземпляры ресурсов Observation, содержащиеся в элементах Composition.entry, должны быть ссылки из элементов DiagnosticReport.entry или из элементов Observation.hasMember composition.exists() implies (composition.resolve().section.entry.reference.where(resolve() is Observation) in (result.reference|result.reference.resolve().hasMember.reference))
11.14.5 Параметры поиска экземпляров ресурса DiagnosticReport

Специальные параметры поиска экземпляров ресурса DiagnosticReport описаны в таблице 323. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 323

Специальные параметры поиска экземпляров ресурса DiagnosticReport

Имя Тип Описание Выражение
based-on reference Ссылка на требование, для выполнения которого предназначено заключение DiagnosticReport.basedOn
(CarePlan, MedicationRequest, NutritionOrder, ServiceRequest, ImmunizationRecommendation)
category token Категория клинической дисциплины, отделения или службы, составившей заключение DiagnosticReport.category
code token Вид заключения DiagnosticReport.code
conclusion token Код, представляющий заключение DiagnosticReport.conclusionCode
date date Физиологически релевантные дата и время, к которым относится заключение DiagnosticReport.effective.ofType(dateTime) | DiagnosticReport.effective.ofType(Period)
encounter reference Ссылка на случай медицинской помощи DiagnosticReport.encounter
(Encounter)
identifier token Внешний идентификатор заключения DiagnosticReport.identifier
issued date Дата и время создания заключения DiagnosticReport.issued
media reference Ссылка на источник изображения или двоичных данных DiagnosticReport.media.link
(DocumentReference)
patient reference Ссылка на субъект заключения (если это пациент) DiagnosticReport.subject.where(resolve() is Patient)
(Patient)
performer reference Ссылка на составителя заключения DiagnosticReport.performer
(Practitioner, Organization, CareTeam, PractitionerRole)
result reference Ссылка на результат исследования, вошедший в заключение DiagnosticReport.result
(Observation)
results-interpreter reference Ссылка на лицо или организацию, ответственную за содержание заключения DiagnosticReport.resultsInterpreter
(Practitioner, Organization, CareTeam, PractitionerRole)
specimen reference Ссылка на идентификацию и описание биоматериала, по которому составлено заключение DiagnosticReport.specimen
(Specimen)
status token Состояние составления заключения DiagnosticReport.status
study reference Ссылка на исследование генома или лучевое исследование DiagnosticReport.study
(GenomicStudy, ImagingStudy)
subject reference Ссылка на субъект заключения DiagnosticReport.subject
(Practitioner, Group, Organization, BiologicallyDerivedProduct, Device, Medication, Patient, Substance, Location)
11.14.6 Профиль заключения врача при дистанционном мониторинге

При дистанционном мониторинге заключение врача представляет собой этапный эпикриз, подводящий итоги выполнения плана ведения и содержащий рекомендации по дальнейшему ведению пациента. Полное содержание заключения должно храниться в медицинской информационной системе, а в хранилище результатов измерений должно передаваться сокращенное содержание в объеме, рассчитанном на восприятие пациентом. Это требование отражено в профиле заключения врача при дистанционном мониторинге DiagnosticReport-Dm, ограничивающем элементы ресурса DiagnosticReport в соответствии с рисунком 72 и таблицей 324. Имя ресурса остается неизменным — DiagnosticReport, имя профиля передается в элементе meta.profile.

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

11.14 Ресурс DiagnosticReport - заключение врача

Рисунок 72 — Профиль DiagnosticReport-Dm

Таблица 324

Состав элементов DiagnosticReport-Dm

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
Собственные элементы
identifierУникальный идентификатор заключения, присвоенный медицинской информационной системойIdentifier1
basedOnСсылка на план ведения пациентаReference1
codeКод/наименование заключенияCodeableConcept1
subjectСсылка на экземпляр ресурса Patient, идентифицирующий пациента — субъекта дистанционного мониторингаReference1
statusСостояние составления заключения. Допустимые значения: final (окончательное) | amended (изменено после того, как стало окончательным) | corrected (исправлено) | appended (дополнено)code1
issuedДата и время создания текущей версии заключенияinstant1
performerСсылка на составителя заключенияReference1
conclusionТекст заключенияmarkdown1

11.15 Ресурс MedicationStatement — дневник приема лекарств

11.15.1 Область применения и использования

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

В отличие от ресурса MedicationAdministration (применение лекарственного препарата) ресурс MedicationStatement рассчитан на менее точную и менее полную информацию о применении (или неприменении) лекарственного препарата. Например, дата и время применения не является обязательной, равно и такие детали, как количество препарата или скорость введения.

В состав ресурса MedicationStatement входит элемент adherence, с помощью которого можно указать степень соответствия указаниям по применению лекарственного препарата, специфичную для этого ресурса.

11.15.2 Структура ресурса

Ресурс MedicationStatement является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса MedicationStatement представлен на рисунке 73 и в таблице 325.

11.15 Ресурс MedicationStatement - дневник приема лекарств

Рисунок 73 — Ресурс MedicationStatement

Таблица 325

Состав элементов ресурса MedicationStatement

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
identifierВнешний идентификатор записи дневника приема лекарствIdentifier0..*
partOfСсылка на экземпляр ресурса, содержащий сведения о процедуре, или на другой экземпляр записи дневника приема лекарствReference0..*
statusСтатус записи дневника приема лекарств. Допустимые значения: recorded (внесена) | entered-in-error (введена по ошибке) | draft (черновик)code1
categoryТип записи о применении лекарственного препаратаCodeableConcept0..*
medicationКод или наименование лекарственного препарата или ссылка на его описание в форме экземпляра ресурса MedicationCodeableReference0..*
subjectСсылка на экземпляр ресурса, идентифицирующего субъект применения лекарственного препаратаReference1
encounterСсылка на случай медицинской помощиReference0..1
effective[x]Дата и время (интервал дат и времени) применения (или неприменения) лекарственного препарата*0..1
dateAssertedДата и время регистрации применения (или неприменения) лекарственного препаратаdateTime0..1
informationSourceСсылка на идентификацию лица или организации, представившей информацию о применении лекарственного препаратаReference0..*
derivedFromСсылка на информацию, предоставленную для регистрации применения лекарственного препаратаReference0..*
reasonКод понятия или ссылка на экземпляр ресурса, описывающего причину применения лекарственного препаратаCodeableReference0..*
noteДополнительная информация о применении лекарственного препарата, не отраженная в других элементахAttachment0..*
relatedClinicalInformationСсылка на сопутствующую клиническую информацию, например, срок беременностиReference0..*
renderedDosageInstructionПолный текст инструкции по дозировкеmarkdown0..1
dosageДозировка примененного или применяемого лекарственного препаратаDosage1
adherenceПрименение или отсутствие применения лекарственного препаратаBackboneElement0..1
adherence.codeКод соответствия указаниям по применениюCodeableConcept1
adherence.reasonПричина данного варианта соответствияCodeableConcept0..1
11.15.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 326.

Таблица 326

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
MedicationStatement.status http://hl7.org/fhir/ValueSet/medication-statement-status Обязательная Статус записи дневника приема лекарств
MedicationStatement.category http://hl7.org/fhir/ValueSet/medicationrequest-admin-location Пример Тип записи о применении лекарственного препарата
MedicationStatement.medication http://hl7.org/fhir/ValueSet/medication-codes Пример Коды лекарственных препаратов и субстанций, определенные в номенклатуре SNOMED CT как потомки понятия с кодом 763158003
MedicationStatement.reason http://hl7.org/fhir/ValueSet/condition-code Пример Коды состояний, проблем и диагнозов, определенные в номенклатуре SNOMED CT как потомки понятия с кодом 404684003
MedicationStatement.adherence.code http://hl7.org/fhir/ValueSet/medication-statement-adherence Пример Коды соответствия указаниям по применению лекарственных препаратов
MedicationStatement.adherence.reason http://hl7.org/fhir/ValueSet/medication-statement-adherence Пример Коды соответствия указаниям по применению лекарственных препаратов (в качестве примера)
11.15.4 Параметры поиска экземпляров ресурса MedicationStatement

Специальные параметры поиска экземпляров ресурса MedicationStatement описаны в таблице 327. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 327

Специальные параметры поиска экземпляров ресурса MedicationStatement

Имя Тип Описание Выражение
adherence token Код соответствия указаниям по применению MedicationStatement.adherence.code
category token Тип записи о применении лекарственного препарата MedicationStatement.category
code token Код лекарственного препарата MedicationStatement.medication.concept
effective date Дата и время применения (или неприменения) лекарственного препарата MedicationStatement.effective.ofType(dateTime) | ment.effective.ofType(Period)
encounter reference Ссылка на случай медицинской помощи MedicationStatement.encounter
(Encounter)
identifier token Внешний идентификатор записи дневника приема лекарств MedicationStatement.identifier
medication reference Ссылка на описание лекарственного препарата MedicationStatement.medication.reference
patient reference Ссылка на экземпляр ресурса, идентифицирующего пациента MedicationStatement.subject.where(resolve() is Patient)
(Patient)
source reference Ссылка на идентификацию лица или организации, представившей информацию о применении лекарственного препарата MedicationStatement.informationSource
(Practitioner, Organization, Patient, PractitionerRole, RelatedPerson)
status token Статус записи дневника приема лекарств MedicationStatement.status
subject reference Ссылка на экземпляр ресурса, идентифицирующего субъект применения лекарственного препарата MedicationStatement.subject
(Group, Patient)

11.16 Ресурс QuestionnaireResponse — дневник самонаблюдения

11.16.1 Область применения и использования

Тип ресурса QuestionnaireResponse описывает структуру ответов на вопросник, позволяющую включать вопросы по значению или по ссылке на вопросник.

При заполнении ответов о состоянии конкретного субъекте в определенный момент времени должен создаваться отдельный экземпляр ресурса QuestionnaireResponse. При необходимости в него могут вноситься изменения и дополнения.

В предметной области дистанционного мониторинга состояния пациента экземпляр ресурса QuestionnaireResponse может использоваться в качестве строки дневника самонаблюдений.

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

Содержание экземпляров ресурса QuestionnaireResponse может заполняться медицинскими работниками, пациентами или их близкими. Ответы на вопросы могут предоставляться другими лицами от имени пациента. Эти ответы могут содержать сведения о родственниках (например, при заполнении семейного анамнеза). Поэтому в структуре ресурса QuestionnaireResponse проводится различие между оператором (author), субъектом ответов (subject) и источником информации.

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

Для указания языка, на котором даны ответы, может использоваться элемент language.

Порядок вопросов в группах и вложенных группах должен сохраняться при сборе и визуализации ответов. Иерархия пунктов в экземпляре ресурса QuestionnaireResponse должна воспроизводить иерархию пунктов в ссылочном экземпляре ресурса Questionnaire (при наличии ссылки).

11.16.2 Структура ресурса

Ресурс QuestionnaireResponse является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса QuestionnaireResponse представлен на рисунке 74 и в таблице 328.

11.16 Ресурс QuestionnaireResponse - дневник самонаблюдения

Рисунок 74 — Ресурс QuestionnaireResponse

Таблица 328

Состав элементов ресурса QuestionnaireResponse

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
identifierГлобально уникальный идентификатор ответа на вопросник или иной идентификатор, не зависящий от версииIdentifier0..*
basedOnСсылка на экземпляр ресурса, содержащий сведения о плане ведения или назначении, при выполнении которого даны ответы на вопросникReference0..*
questionnaireСсылка на экземпляр вопросникаcanonical0..1
partOfСсылка на экземпляр ресурса, содержащий сведения о процедуре или результате исследования, частью которых являются данные ответы на вопросникReference0..*
subjectСсылка на экземпляр ресурса, идентифицирующего субъект ответа на вопросникReference0..1
encounterСсылка на случай медицинской помощиReference0..1
authoredДата сбора ответовdateTime0..1
statusСтатус ответов на вопросник. Позволяет прослеживать жизненный цикл ответа. Допустимые значения: in-progress (в процессе заполнения) | completed (заполнены) | amended (дополнены) | entered-in-error (введены по ошибке) | stopped (заполнение прекращено)code1
authorСсылка на оператора по вводу ответов (лицо или устройство)Reference0..1
sourceСсылка на лицо или устройство, предоставившее ответы на вопросникReference0..1
itemПункт вопросника (вопрос, группа)BackboneElement0..*
item.linkIdУникальный идентификатор пункта вопросникаstring1
item.definitionСсылка на определение пунктаuri0..1
item.textТекст пунктаstring0..1
item.answerОтвет на вопросBackboneElement0..*
value[x]Содержание ответа*1
11.16.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 329.

Таблица 329

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
QuestionnaireResponse.status http://hl7.org/fhir/ValueSet/questionnaire-answers-status Обязательная Жизненный статус дневника
QuestionnaireResponse.item.answer.value[x] http://hl7.org/fhir/ValueSet/questionnaire-answers Пример Примеры вариантов ответа
11.16.4 Ограничения ресурса QuestionnaireResponse

Ограничения ресурса QuestionnaireResponse описаны в таблице 330.

Таблица 330

Ограничения ресурса QuestionnaireResponse

Идентификатор Вид Путь Описание Выражение
qrs-1 Правило QuestionnaireResponse.item Элемент item не может содержать элементы item и answer одновременно (answer.exists() and item.exists()).not()
qrs-2 Правило QuestionnaireResponse.item Ответы на повторяющийся вопрос должны собираться в массив ответов, привязанных к единственному экземпляру вопроса repeat(answer|item).select(item.where(answer.value.exists()).linkId.isDistinct()).allTrue()
11.16.5 Ссылки на экземпляры ресурса Questionnaire

Содержание экземпляра ресурса QuestionnaireResponse может быть автономным или включать ссылка на описание вопросника Questionnaire. При наличии такой ссылки должны выполняться следующие требования:

  • структура экземпляра ресурса QuestionnaireResponse должна быть совместимой со структурой вопросника, описанной в экземпляре ресурса (например, ответы на вопросы должны быть организованы в те же самые группы, ответы на вложенные вопросы должны оставаться вложенными и т.д.);
  • связь между вопросами, группами и ответами задается с помощью элементов linkId. Значение этих элементов уникальны в экземпляре ресурса Questionnaire, но могут повторяться в экземпляре ресурса QuestionnaireResponse, если допускается повторение соответствующего пункта или его родителя;
  • все пункты вопросника Questionnaire, в том числе пункты типа display, релевантные для интерпретации ответов, по возможности должны быть включены в экземпляре ресурса QuestionnaireResponse. Пока статус завершенности экземпляра ресурса QuestionnaireResponse не получит значение completed, это могут быть пункты, которые должны быть пропущены в зависимости от текущих ответов. Когда QuestionnaireResponse.status = completed, все пропускаемые пункты должны быть исключены.
11.16.6 Валидация ответов на вопросник

Требования к ответам, описанные в экземпляре ресурса Questionnaire, не обязаны выполняться, пока заполнение ответов не будет завершено, то есть элемент QuestionnaireResponse.status не получит значение completed или amended. Например, ответы на обязательные вопросы могут быть пропущены, требования к длине ответов могут не выполняться и т.д. Такие экземпляры QuestionnaireResponse могут сохраняться сервером для будущей доработки. Если же элемент QuestionnaireResponse.status имеет значение completed или amended, то сервер по возможности должен обеспечить валидацию содержания экземпляра QuestionnaireResponse на соответствие требованиям в ссылочном экземпляре ресурса Questionnaire.

В ресурсе QuestionnaireResponse предусмотрены два разных способа представления вложенных пунктов: item.item и item.answer.item. Первый предназначен для пунктов, вложенных в пункты типа group, а второй — для пунктов, вложенных в пункты типа question, то есть в вопросы. Это связано с тем, что пункты, вложенные в вопросы, всегда вложены в каждый ответ на вопрос. Если вопрос допускает несколько ответов, то каждый из них должен иметь свое множество вложенных пунктов.

11.16.7 Параметры поиска экземпляров ресурса QuestionnaireResponse

Специальные параметры поиска экземпляров ресурса QuestionnaireResponse описаны в таблице 331. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 331

Специальные параметры поиска экземпляров ресурса QuestionnaireResponse

Имя Тип Описание Выражение
author reference Ссылка на оператора по вводу ответов QuestionnaireResponse.author
(Practitioner, Organization, Device, Patient, PractitionerRole, RelatedPerson)
authored date Дата сбора ответов QuestionnaireResponse.authored
based-on reference Ссылка на экземпляр ресурса, содержащий сведения о плане ведения или назначении, при выполнении которого даны ответы на вопросник QuestionnaireResponse.basedOn
(CarePlan, ServiceRequest)
encounter reference Ссылка на случай медицинской помощи QuestionnaireResponse.encounter
(Encounter)
identifier token Глобально уникальный идентификатор ответа на вопросник QuestionnaireResponse.identifier
item-subject reference Ссылка на экземпляр ресурса, идентифицирующего субъект ответа на вопросник QuestionnaireResponse.item.where(extension('http://hl7.org/fhir/StructureDefinition/questionnaireresponse-isSubject').exists()).answer.value.ofType(Reference)
part-of reference Ссылка на экземпляр ресурса, содержащий сведения о процедуре или результате исследования, частью которых являются данные ответы на вопросник QuestionnaireResponse.partOf
(Observation, Procedure)
patient reference Ссылка на экземпляр ресурса со сведениями о пациенте, являющемся субъектом вопросника QuestionnaireResponse.subject.where(resolve() is Patient)
(Patient)
questionnaire reference Ссылка на экземпляр вопросника QuestionnaireResponse.questionnaire
(Questionnaire)
source reference Ссылка на лицо или устройство, предоставившее ответы на вопросник QuestionnaireResponse.source
(Practitioner, Organization, Device, Patient, PractitionerRole, RelatedPerson)
status token Статус ответов на вопросник QuestionnaireResponse.status
subject reference Ссылка на экземпляр ресурса, идентифицирующего субъект вопросника QuestionnaireResponse.subject
(Any)

11.17 Ресурс Questionnaire — описание дневника самонаблюдения

11.17.1 Область применения и использования

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

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

Вопросник, определяемый с помощью экземпляра ресурса Questionnaire, состоит из пунктов, типы которых представлены в таблице 332.

Таблица 332

Типы пунктов вопросника (система кодирования http://hl7.org/fhir/item-type)

Уровень Код Значение Описание
1 group группа Пункт, не требующий прямого ответа и содержащий хотя бы один дочерний пункт
1 display текст Текст, не требующий ответа и не содержащий дочерние пункты
1 question вопрос Пункт, требующий ответа. Может иметь дочерние пункты. Тип question является абстрактным — в экземпляре ресурса Questionnaire могут быть указаны только его потомки, соответствующие конкретным типам данных ответа
2 boolean булевский Пункт с бинарным ответом true/false (элемент valueBoolean)
2 decimal десятичный Пункт с десятичным ответом (элемент valueDecimal)
2 integer целочисленный Пункт с целочисленным ответом (элемент valueInteger)
2 date дата Пункт с ответом в виде даты (элемент valueDate)
2 dateTime дата и время Пункт с ответом в виде даты и времени (элемент valueDateTime)
2 time время Пункт с ответом в виде времени, не зависящего от даты (элемент valueTime)
2 string строка Пункт с коротким однострочным ответом (элемент valueString, не содержащий символы перехода на новую строку/возврата каретки)
2 text текст Пункт с длинным многострочным ответом (элемент valueString)
2 url адрес URL Пункт с ответом в форме адреса URL, например, адресом веб-сайта, службы FTP и т.д. (элемент valueUri)
2 coding перечисляемый Пункт с перечисляемыми вариантами ответа (элемент valueCoding)
2 attachment вложение Пункт с двоичным ответом, например, изображением, PDF и т.д. (элемент valueAttachment)
2 reference ссылка Пункт с ответом в виде ссылки на экземпляр ресурса (элемент valueReference)
2 quantity физическая величина Пункт с ответом в форме сочетания числа и единицы измерения (элемент valueSimpleQuantity). Для ограничения допустимых единиц измерения, передаваемых в компонентах valueSimpleQuantity.system и valueSimpleQuantity.code, используются расширения http://hl7.org/fhir/StructureDefinition/questionnaire-unitOption и http://hl7.org/fhir/StructureDefinition/questionnaire-unitValueSetity.code

С каждым пунктом могут быть связаны правила его предъявления при заполнении, например, пункт может быть пропущен в зависимости от ответа на тот или иной вопрос. Экземпляр ресурса Questionnaire содержит только описание вопросника, заполняется в соответствии с этим описанием экземпляр ресурса QuestionnaireResponse.

11.17.2 Структура ресурса

Ресурс Questionnaire является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса Questionnaire представлен на рисунке 75 и в таблице 333.

11.17 Ресурс Questionnaire - описание дневника самонаблюдения

Рисунок 75 — Ресурс Questionnaire

Таблица 333

Состав элементов ресурса Questionnaire

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
urlКанонический идентификатор вопросника, представленный в форме URIuri0..1
identifierГлобально уникальный идентификатор вопросника или иной идентификатор, не зависящий от версииIdentifier0..*
versionВерсия вопросникаstring0..1
versionAlgorithm[x]Алгоритм сравнения версий*0..1
nameИмя вопросника (для компьютера)string0..1
titleКраткое описательное имя вопросника (для человека)string0..1
derivedFromСсылка на вопросник, взятый за основу данного вопросникаcanonical0..*
statusСтатус версии вопросника. Позволяет прослеживать жизненный цикл содержания вопросника. Допустимые значения: draft (проект) | active (действует) | retired (действие прекращено) | unknown (статус неизвестен)code
experimentalПризнак тестового вопросникаboolean0..1
subjectTypeТип ресурса, разрешенный в качестве субъекта для экземпляра ресурса QuestionnaireResponsecode0..*
dateДата (и необязательное время) публикации вопросника. Должна изменяться при смене версии и кода статуса. Кроме того, она должна изменяться, если содержание вопросника претерпевает существенные измененияdateTime0..1
publisherНаименование организации или Ф.И.О. издателя, опубликовавшего вопросникstring0..1
contactКонтактная информация издателяContactDetail0..*
descriptionОписание вопросника для его потребителяmarkdown0..1
useContextКонтекст использования вопросника (по умолчанию — не ограничен)UsageContext0..*
jurisdictionЮрисдикция, в которой применяется вопросник. Может задавать страну, регион или иную единицу административного деления. Использование запрещено. Вместо него рекомендуется использовать элемент useContext, у которого компонент code имеет значение http://terminology.hl7.org/CodeSystem/usage-context-type#jurisdiction, а компонент valueCodeableConcept — юрисдикциюCodeableConcept0..*
purposeНазначение вопросникаmarkdown0..1
copyrightАвторские права на вопросникmarkdown0..1
copyrightLabelТорговая марка и год(ы)string0..1
approvalDateДата утвержденияdate0..1
lastReviewDateДата последнего пересмотраdate0..1
effectivePeriodПериод действияPeriod0..1
codeТема вопросникаCoding0..*
itemПункт вопросника (вопрос, группа)BackboneElement0..*
item.linkIdУникальный идентификатор пункта вопросникаstring1
item.definitionСсылка на определение пунктаuri0..1
item.codeТема пунктаCoding0..*
item.prefixНомер пункта, например 1a, 2.5.3string0..1
item.textТекст пунктаstring0..1
item.typeТип пункта. Допустимые значения: group | display | boolean | decimal | integer | date | dateTimecode1
item.enableWhenУсловие предъявления пункта при заполнении вопросникаBackboneElement0..*
item.enableWhen.questionЗначение элемента linkId для вопроса, чей ответ (или отсутствие ответа) влияет на предъявление данного пунктаstring1
item.enableWhen.operatorОператор сравнения. Допустимые значения: exists | = | != | > | < | >= | <=code1
item.enableWhen.answer[x]Значение, с которым сравнивается ответ на вопрос, идентифицированный элементом question. Если ответов несколько, достаточно положительного сравнения хотя бы с одним из них. Допустимые типы значения: boolean | decimal | integer | date | dateTime | time | string | Coding | Quantity | Reference*1
item.enableBehaviorИнтерпретация нескольких экземпляров элемента enableWhen. Допустимые значения: all (все должны быть истинными) | any (хотя бы один должен быть истинным)code0..1
item.disabledDisplayСпособ представления пропускаемых пунктов. Допустимые значения: hidden (скрыт) | protected (защищен от ввода)code0..1
item.requiredЗначение true указывает, что пункт должен присутствовать в «заполненном» вопроснике, а false — что пункт может быть пропущен при заполнении вопросника. По умолчанию falseboolean0..1
item.repeatsЗначение true указывает, что на один пункт можно дать несколько ответов (если это вопрос) или что пункт может повторяться (если это группа пунктов). По умолчанию falseboolean0..1
item.readOnlyЗначение true указывает, что значение пункта не может быть изменено респондентом. Если указано для пункта, то распространяется на все подчиненные пункты и вопросыboolean0..1
item.maxLengthМаксимальное число символов в ответе на вопросinteger0..1
item.answerConstraintДля вопросов с ограниченными вариантами ответов (заданными в элементе Option или answerValueSet) указывает возможность дополнительных вариантов. Допустимые значения: optionsOnly (только заданные значения) | optionsOrType (заданные значения и значения типа, указанного в элементе type) | optionsOrString (заданные значения и произвольная строка)code0..1
item.answerValueSetСсылка на набор значений с вариантами ответаcanonical0..1
item.answerOptionВариант ответаBackboneElement0..*
item.answerOption.value[x]Вариант ответа. Допустимые значения: integer|date|time|string|Coding|Reference*1
item.answerOption.initialSelectedЗначение true указывает, что этот вариант должен быть заранее предложенboolean0..1
item.initialЗаранее заполненный ответBackboneElement0..*
item.initial.value[x]Заранее заполненный ответ*1
item.itemВложенный пункт или вопрос (см. item)BackboneElement0..*
11.17.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 334.

Таблица 334

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
Questionnaire.versionAlgorithm[x] http://hl7.org/fhir/ValueSet/version-algorithm Расширяемая Алгоритм сравнения версий
Questionnaire.status http://hl7.org/fhir/ValueSet/publication-status Обязательная Статус жизненного цикла системы кодирования
Questionnaire.subjectType http://hl7.org/fhir/ValueSet/resource-types Обязательная Тип ресурса
Questionnaire.jurisdiction http://hl7.org/fhir/ValueSet/jurisdiction Расширяемая Страны и регионы, для которых предназначена данная система кодирования
Questionnaire.code http://hl7.org/fhir/ValueSet/questionnaire-questions Пример Примеры типов групп и вопросов
Questionnaire.item.code http://hl7.org/fhir/ValueSet/questionnaire-questions Пример Примеры типов групп и вопросов
Questionnaire.item.type http://hl7.org/fhir/ValueSet/item-type Обязательная Тип пункта
Questionnaire.item.enableWhen.operator http://hl7.org/fhir/ValueSet/questionnaire-enable-operator Обязательная Оператор сравнения
Questionnaire.item. enableWhen.answer[x] http://hl7.org/fhir/ValueSet/questionnaire-answers Пример Примеры типов сравниваемых значений
Questionnaire.item.enableBehavior http://hl7.org/fhir/ValueSet/questionnaire-enable-behavior Обязательная Интерпретация нескольких экземпляров элемента enableWhen
Questionnaire.item.disabledDisplay http://hl7.org/fhir/ValueSet/questionnaire-disabled-display Обязательная Способ представления пропускаемых пунктов
Questionnaire.item.answerConstraint http://hl7.org/fhir/ValueSet/questionnaire-answer-constraint Обязательная Возможность дополнительных вариантов ответа
Questionnaire.item.answerOption.value[x] http://hl7.org/fhir/ValueSet/questionnaire-answers Пример Примеры вариантов ответа
Questionnaire.item.initial.value[x] http://hl7.org/fhir/ValueSet/questionnaire-answers Пример Примеры вариантов ответа
11.17.4 Ограничения ресурса Questionnaire

Ограничения ресурса Questionnaire описаны в таблице 335.

Таблица 335

Ограничения ресурса Questionnaire

Идентификатор Вид Путь Описание Выражение
cnl-0 Предупреждение Базовый Значение элемента name должно быть пригодно в качестве идентификатора программного модуля name.exists() implies name.matches('^A-Z{1,254}$')
cnl-1 Предупреждение Questionnaire.url Адрес URL не должен содержать символы | или # exists() implies matches('^[^|#]+$')
que-1a Правило Questionnaire.item В экземпляре ресурса Questionnaire, имеющим статус завершенности complete, пункты типа group должны иметь вложенные пункты (type='group' and %resource.status='complete') implies item.empty().not()
que-1b Предупреждение Questionnaire.item Пункты типа group по возможности должны иметь вложенные пункты type='group' implies item.empty().not()
que-1c Правило Questionnaire.item Пункты типа display не должны содержать дочерние пункты type='display' implies item.empty()
que-2 Правило Базовый Значения идентификаторов linkId пунктов типа group и question должны быть уникальными в пределах вопросника descendants().linkId.isDistinct()
que-3 Правило Questionnaire.item У пунктов типа display должен отсутствовать элемент code type!='display' or code.empty()
que-4 Правило Questionnaire.item Пункт типа question не может одновременно иметь элементы answerOption и answerValueSet answer
Option.empty() or answerValueSet.empty()
que-5 Правило Questionnaire.item Элементы answerOption или answerValueSet могут быть только у пунктов типа coding, decimal, integer, date, dateTime, time, string или quantity (type='coding' or type = 'decimal' or type = 'integer' or type = 'date' or type = 'dateTime' or type = 'time' or type = 'string' or type = 'quantity') or (answerValueSet.empty() and answerOption.empty())
que-6 Правило Questionnaire.item У пунктов типа display должны отсутствовать признаки обязательности required и повторения repeat type!='display' or (required.empty() and repeats.empty())
que-7 Правило Questionnaire.item.enableWhen Если элемент operator имеет значение exists, то элемент answer должен иметь тип boolean operator = 'exists' implies (answer is boolean)
que-8 Правило Questionnaire.item У пунктов типа group или display должны отсутствовать заранее заполненные ответы (type!='group' and type!='display') or initial.empty()
que-9 Правило Questionnaire.item У пунктов типа display должен отсутствовать признак readonly type!='display' or readOnly.empty()
que-10 Правило Questionnaire.item Ограничение максимальной длины maxLength может быть задано только для пунктов с простым ответом (type in ('boolean' | 'decimal' | 'integer' | 'string' | 'text' | 'url')) or answerConstraint='optionOrString' or maxLength.empty()
que-11 Правило Questionnaire.item Элемент initial должен отсутствовать, если присутствует хотя бы один элемент answerOption. Вместо элемента initial в этом случае следует использовать элемент answerOption.initialSelected answerOption.empty() or initial.empty()
que-12 Правило Questionnaire.item Если присутствует несколько элементов enableWhen, то должен присутствовать элемент enableBehavior enableWhen.count() > 1 implies enableBehavior.exists()
que-13 Правило Questionnaire.item Несколько заранее заданных ответов может присутствовать только при наличии признака повторения repeats со значением true repeats=true or initial.count() <= 1
que-14 Предупреждение Questionnaire.item Элемент answerConstraint может присутствовать только при наличии элемента answerOption или answerValueSet answerConstraint.exists() implies answerOption.exists() or answerValueSet.exists()
que-15 Предупреждение Questionnaire. item. linkId Длина значения идентификатора linkId не должна превышать 255 символов $this.length() <= 255
11.17.5 Параметры поиска экземпляров ресурса Questionnaire

Специальные параметры поиска экземпляров ресурса Questionnaire описаны в таблице 336. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 336

Специальные параметры поиска экземпляров ресурса Questionnaire

Имя Тип Описание Выражение
combo-code token Тема вопросника или пункта Questionnaire.code | Questionnaire.item.code
context token Контекст использования, назначенный системе кодирования (Questionnaire.useContext.value.ofType(CodeableConcept))
context-quantity quantity Количественное значение контекста или диапазон количественных значений (если имеются), назначенных вопроснику (Questionnaire.useContext.value.ofType(Quantity)) | (Questionnaire.useContext.value.ofType(Range))
context-type token Тип контекста, назначенного вопроснику Questionnaire.useContext.code
context-type-quantity composite Сочетание типа контекста данного вопросника и его количественного значения или диапазона значений On Questionnaire.useContext:
context-type: code
context-quantity: value.ofType(Quantity) | value.ofType(Range)
context-type-value composite Сочетание типа контекста данного вопросника и его значения On Questionnaire.useContext:
context-type: code
context: value.ofType(CodeableConcept)
date date Дата публикации вопросника Questionnaire.date
definition uri Ссылка на определение пункта Questionnaire.item.definition
description string Описание вопросника Questionnaire.description
effective date Предполагаемый период использования Questionnaire.effectivePeriod
identifier token Внешний идентификатор вопросника Questionnaire.identifier
item-code token Тема пункта Questionnaire.item.code
jurisdiction token Страна или регион, для которого предназначен вопросник Questionnaire.jurisdiction
name string Имя вопросника, предназначенное для машинной обработки Questionnaire.name
publisher string Наименование издателя вопросника Questionnaire.publisher
questionnaire-code token Тема вопросника Questionnaire.code
status token Текущий статус вопросника Questionnaire.status
subject-type token Ссылка на субъект вопросника Questionnaire.subjectType
title string Имя вопросника, предназначенное для человека Questionnaire.title
url uri Значение URI, идентифицирующее данный вопросник Questionnaire.url
version token Версия вопросника Questionnaire.version

11.18 Ресурс NutritionIntake (дневник питания)

11.18.1 Область применения и использования

Ресурс NutritionIntake описывает общую структуру однократной регистрации акта питания (приема пищи или потребления жидкости) как в стационаре, так и на дому или в системе общественного питания. В область применения ресурса NutritionIntake не входит парентеральное питание.

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

Учитывая многообразие продуктов питания и причин контроля питания, все элементы с кодируемыми значениями (за исключением состояния питания status) имеют тип данных CodeableConcept, позволяющий вводить текст в дополнение к коду или вместо кода. Привязки этих элементов к наборам значений даются в качестве примеров.

11.18.2 Структура ресурса

Ресурс NutritionIntake является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса NutritionIntake представлен на рисунке 76 и в таблице 337.

11.18 Ресурс NutritionIntake (дневник питания)

Рисунок 76 — Ресурс NutritionIntake

Таблица 337

Состав элементов ресурса NutritionIntake

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
identifierИдентификатор акта питанияIdentifier0..*
instantiates-CanonicalСсылка на экземпляр ресурса, описывающий протокол или определениеcanonical0..*
instantiatesUriСсылка на внешний протокол или определениеuri0..*
basedOnСсылка на план ведения, назначение или заказ питанияReference0..*
partOfСсылка на дневник питания, процедуру или исследование, частью которого является заполнение дневника питанияReference0..*
statusСостояние питания. Допустимые значения: preparation (приготовление) | in-progress (в процессе) | not-done (не принято) | on-hold (приостановлено) | stopped (остановлено) | completed (выполнено) | entered-in-error (введено по ошибке) | unknown (неизвестно)code1
statusReasonПричина текущего состояния питанияCodeableConcept0..*
codeТип питанияCodeableConcept0..1
subjectСсылка на субъект питания (пациент, группа или животное)Reference1
encounterСсылка на случай медицинской помощиReference0..1
occurrence[x]Интервал времени, в течение которого осуществлялся или осуществляется акт питания (или имел место отказ от питания)*0..1
recordedДата и время регистрации акта питания источником информацииdateTime0..1
reported[x]Источник информации об акте питания (лицо, роль или организация)*0..1
consumedItemПотребленный продуктBackboneElement1..*
consumedItem.typeТип потребленного продуктаCodeableConcept1
consumedItem.nutritionProductИдентификация потребленного продукта (код или ссылка на описание продукта)CodeableReference1
consumedItem.scheduleРасписание потребления продуктаTiming0..1
consumedItem.amountКоличество продуктаSimpleQuantity0..1
consumedItem.rateСкорость потребленияSimpleQuantity0..1
consumedItem.notConsumedПризнак, что продукт не был потреблен (например, госпитализированный пациент отказался от него). В дневнике, заполняемом пациентом, этот элемент отсутствуетboolean0..1
consumedItem.notConsumedReasonПричина отказа от потребления продуктаCodeableConcept0..1
ingredientLabelСостав продуктаBackboneElement0..*
ingredientLabel.nutrientКомпонент продукта (белок, жир, гидрокарбонат, витамин, минерал и т.д.) или калорииCodeableReference1
ingredientLabel.amountКоличество компонента или калорийSimpleQuantity1
performerЛицо, роль, организация или медицинское изделие, обеспечившее или обеспечивающее акт питанияBackboneElement0..*
performer.functionТип лица, роли или организации, обеспечившей или обеспечивающей акт питанияCodeableConcept0..1
performer.actorСсылка на лицо, роль, организацию или медицинское изделие, обеспечившее или обеспечивающее акт питанияReference1
locationСсылка на место акта питанияReference0..1
derivedFromСсылка на экземпляр ресурса NutritionOrder (заказ питания) или иную информацию, имеющую отношение к данному акту питания, например, на экземпляры ресурсов AllergyIntolerance (непереносимость), Observation (результат исследования) или QuestionnaireAnswers (дневник самонаблюдения)Reference0..*
reasonПричина акта питания (состояние пациента или результат исследования) — кодируемое значение типа CodeableConcept или ссылка на экземпляр ресурса Condition | Observation | DiagnosticReport | DocumentReferenceCodeableReference0..*
noteДополнительная информация об акте питанияAnnotation0..*
11.18.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 338.

Таблица 338

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
tritionIntake.status http://hl7.org/fhir/ValueSet/event-status Обязательная Коды состояний жизненного цикла события
NutritionIntake.statusReason http://hl7.org/fhir/ValueSet/clinicalimpression-status-reason Пример Примеры кодов причин отсутствия описания состояния пациента
NutritionIntake.code http://hl7.org/fhir/ValueSet/diet-type Пример Примеры типов питания, включая типы диет
NutritionIntake.consumedItem.type http://hl7.org/fhir/ValueSet/edible-substance-type Пример Примеры съедобных субстанций
NutritionIntake.consumedItem.nutritionProduct http://hl7.org/fhir/ValueSet/food-type Пример Примеры типов продуктов
NutritionIntake.consumedItem.notConsumedReason http://hl7.org/fhir/ValueSet/not-consumed-reason Пример Примеры причин отказа от продукта
NutritionIntake.ingredientLabel.nutrient http://hl7.org/fhir/ValueSet/nutrient-code Пример Примеры питательных веществ
NutritionIntake. performer. function http://hl7.org/fhir/ValueSet/performer-role Пример Примеры кодов ролей лиц, обеспечивших обеспечивающих акт питания
NutritionIntake.reason http://hl7.org/fhir/ValueSet/condition-code Пример Пример набора значений с кодами диагнозов/состояний
11.18.4 Параметры поиска экземпляров ресурса NutritionIntake

Специальные параметры поиска экземпляров ресурса NutritionIntake описаны в таблице 339. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 339

Специальные параметры поиска экземпляров ресурса NutritionIntake

Имя Тип Описание Выражение
code token Тип питания NutritionIntake.code
date date Интервал времени, в течение которого осуществлялся или осуществляется акт питания (или имел место отказ от питания) NutritionIntake.occurrence.ofType(dateTime) | NutritionIntake.occurrence.ofType(Period)
encounter reference Ссылка на случай медицинской помощи NutritionIntake.encounter
(Encounter)
identifier token Идентификатор акта питания NutritionIntake.identifier
nutrition token Идентификация потребленного продукта NutritionIntake.consumedItem.nutritionProduct.concept
patient reference Ссылка на идентификацию пациента NutritionIntake.subject.where(resolve() is Patient) (Patient)
source reference Ссылка на источник информации об акте питания (NutritionIntake.reported as Reference) (Practitioner, Organization, Patient, PractitionerRole, RelatedPerson)
status token Состояние питания NutritionIntake.status
subject reference Ссылка на субъект акта питания (пациент, группа) NutritionIntake.subject
(Group, Patient)

11.19 Ресурс DetectedIssue — предупреждение

11.19.1 Область применения и использования

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

11.19.2 Структура ресурса

Ресурс DetectedIssue является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса DetectedIssue представлен на рисунке 77 и в таблице 340.

11.19 Ресурс DetectedIssue - предупреждение

Рисунок 77 — Ресурс DetectedIssue

Таблица 340

Состав элементов ресурса DetectedIssue

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
identifierУникальный идентификатор предупрежденияIdentifier0..*
categoryКатегория проблемыCodeableConcept0..*
codeТип проблемыCodeableConcept0..1
severityСерьезность выявленной проблемы. Допустимые значения: high (высокая) | moderate (умеренная) | low (низкая)code0..1
subjectСсылка на экземпляр ресурса, к которому относится предупреждениеReference0..1
encounterСсылка на случай медицинской помощиReference0..1
statusСтатус предупреждения. Допустимые значения: preliminary (предварительное) | final (окончательное) | entered-in-error (создано по ошибке) | mitigated (учтено)code1
identified[x]Дата и время или период выявления проблемы*0..1
authorСсылка на экземпляр ресурса, описывающего лицо или прибор, выявивший проблемуReference0..1
implicatedСсылка на экземпляр ресурса, представляющего потенциально проблемную планируемую или текущую деятельностьReference0..*
evidenceОснование признания деятельности проблемнойBackboneElement0..*
evidence.codeКод основания признания деятельности проблемнойCodeableConcept0..*
evidence.detailСсылка на экземпляр ресурса, содержащего сведения об основании признания деятельности проблемнойReference0..*
detailТекстовое описание выявленной проблемыmarkdown0..1
referenceСсылка на источник, описывающий возможную причину выявленной проблемыuri0..1
mitigationДействие, необходимое для смягчения или исключения выявленной проблемыBackboneElement0..*
mitigation.actionКодируемое представление или текст описания необходимого действияCodeableConcept1
mitigation.dateДата и время выполнения необходимого действияdateTime0..1
mitigation.authorСсылка на исполнителя необходимого действияReference0..1
mitigation.noteПримечание к выполненному действиюAnnotation0..*
11.19.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 341.

Таблица 341

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
DetectedIssue.status http://hl7.org/fhir/ValueSet/detectedissue-status Обязательная Статус предупреждения
DetectedIssue.category http://hl7.org/fhir/ValueSet/detectedissue-category Предпочтительная Категория проблемы или противопоказаний, например, межлекарственное взаимодействие
DetectedIssue.code http://hl7.org/fhir/ValueSet/detectedissue-category Предпочтительная Вид проблемы или противопоказаний, например, межлекарственное взаимодействие
DetectedIssue.severity http://hl7.org/fhir/ValueSet/detectediss Обязательная Указывает потенциальную степень воздействия выявленной проблемы на пациента
DetectedIssue. evidence. code http://hl7.org/fhir/ValueSet/manifestation-or-symptom Пример Коды состояний, проблем и диагнозов, определенные в номенклатуре SNOMED CT как потомки понятия с кодом 404684003
DetectedIssue. mitigation. action http://hl7.org/fhir/ValueSet/detectedissue-mitigation-action Предпочтительная Вид необходимого действия
11.19.4 Параметры поиска экземпляров ресурса DetectedIssue

Специальные параметры поиска экземпляров ресурса DetectedIssue описаны в таблице 342. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 342

Специальные параметры поиска экземпляров ресурса DetectedIssue

Имя Тип Описание Выражение
author reference Ссылка на лицо или прибор, выявивший проблему DetectedIssue.author
(Practitioner, Device, Patient, PractitionerRole, RelatedPerson)
category token Категория проблемы DetectedIssue.category
code token Тип проблемы DetectedIssue.code
identified date Дата и время выявления проблемы DetectedIssue.identified.ofType(dateTime) | DetectedIssue.identified.ofType(Period)
identifier token Уникальный идентификатор предупреждения DetectedIssue.identifier
implicated reference Ссылка на экземпляр ресурса, представляющего потенциально проблемную планируемую или текущую деятельность DetectedIssue.implicated
(Any)
patient reference Ссылка на экземпляр ресурса Patient, к которому относится предупреждение DetectedIssue.subject.where(resolve() is Patient)
(Patient)
status token Статус предупреждения DetectedIssue.status
subject reference Ссылка на экземпляр ресурса, к которому относится предупреждение DetectedIssue.subject
(Practitioner, Group, Organization, BiologicallyDerivedProduct, NutritionProduct, Device, Medication, Patient, Procedure, Substance, Location)
11.19.5 Профиль DetectedIssue-Dm

Состав элементов профиля DetectedIssue-Dm приведен на рисунке 78 и в таблице 343. Имя ресурса остается неизменным — DetectedIssue, имя профиля передается в элементе meta.profile.

11.19 Ресурс DetectedIssue - предупреждение

Рисунок 78 — Профиль DetectedIssue-Dm

Таблица 343

Состав элементов профиля DetectedIssue-Dm

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta1
Собственные элементы
identifierУникальный идентификатор предупрежденияIdentifier1
severityСерьезность выявленной проблемы. Допустимые значения: high (высокая) | moderate (умеренная) | low (низкая)code1
subjectСсылка на экземпляр ресурса Patient, к которому относится предупреждениеReference1
statusСтатус предупреждения. Допустимые значения: final (окончательное) | entered-in-error (создано по ошибке)code1
identifiedDateTimeДата и время выявления проблемыdateTime0..1
authorСсылка на экземпляр ресурса Practitioner или Device, описывающего лицо или прибор, выявивший проблемуReference0..1
detailТекстовое описание выявленной проблемыmarkdown1
mitigationДействие, необходимое для смягчения или исключения выявленной проблемыBackboneElement0..*
mitigation.actionКодируемое представление или текст описания необходимого действияCodeableConcept1

12 REST API и поиск

12.1 Общие сведения

Для каждого типа ресурсов определен один и тот же комплекс взаимодействий, основанный на архитектурном стиле REST. При описании REST API предполагается, что отдельные экземпляры ресурсов организованы в коллекции по их типу. REST API позволяет выполнять операции как на уровне экземпляров ресурсов, так и на уровне типов ресурсов, а также на уровне системы в целом. Эти операции далее называются взаимодействиями. Все взаимодействия являются синхронными.

12.2 Взаимодействия

12.2.1 Общие сведения

Возможные взаимодействия на уровне экземпляров ресурсов перечислены в таблице 344, взаимодействия на уровне типов ресурсов — в таблице 345, взаимодействия на уровне системы — в таблице 346.

Таблица 344

Взаимодействия на уровне экземпляров ресурсов

Взаимодействие Описание
read Чтение текущего содержания экземпляра ресурса
vread Чтение содержания конкретной версии экземпляра ресурса
update Изменение содержания экземпляра ресурса с заданным логическим идентификатором (или создание, если экземпляра с таким идентификатором не существует)
patch Исправление содержания экземпляра ресурса с заданным логическим идентификатором
delete Удаление экземпляра ресурса
history Получение истории изменения содержания экземпляра ресурса

Таблица 345

Взаимодействия на уровне типов ресурсов

Взаимодействие Описание
create Создание нового экземпляра ресурса с логическим идентификатором, присвоенным сервером
search Поиск экземпляров ресурса данного типа, используя определенные критерии
delete Удаление коллекции экземпляров ресурса данного типа, используя определенные критерии
history Получение истории изменения содержания экземпляров ресурса данного типа

Таблица 346

Взаимодействия на уровне системы

Взаимодействие Описание
capabilities Получение описания возможностей системы
batch/transaction Выполнение нескольких действий или операций в одном взаимодействии
delete Удаление коллекции экземпляров ресурса независимо от типа, используя определенные критерии
history Получение истории изменения содержания экземпляров ресурса независимо от типа
search Поиск экземпляров ресурса независимо от типа, используя определенные критерии

В дополнение к этим взаимодействиям определена система операций, представленная системой конечных точек, обеспечивающих валидацию экземпляров ресурсов, обработку сообщений и документов.

12.2.2 Описание формата взаимодействия

Далее используется следующий стиль описания формата взаимодействия:

Глагол [base]/[type]/[id]{?_format=[mime-type]}

Здесь «Глагол» соответствует методу HTTP, используемому для взаимодействия, компоненты, заключенные в квадратные скобки, обязательны, в фигурные — необязательны. При описании формата могут использоваться следующие компоненты:

При конструировании адреса URL, соответствующего этому формату, следует использовать представление символов, описанное в [27].

12.2.3 Базовый URL

Базовый URL представляет собой адрес, по которому обеспечивается доступ ко всем экземплярам ресурсов. Он имеет следующий формат

http{s}://сервер{/путь}

Компонент пути необязателен и не содержит концевую косую черту. У каждого типа ресурса есть конечная точка с адресом /<тип ресурса>. Например, конечная точка для типа ресурса Patient имеет следующий адрес:

https://server/path/Patient

Для адресации конечной точки типа ресурса допускаются два варианта: с концевой косой чертой и без нее.

Все логические взаимодействия определены относительно базового URL. Все URL и идентификаторы, являющиеся компонентами URL, чувствительны к регистру. В качестве кодировки используется UTF-8.

12.3 Метаданные и версионность ресурсов

В структуре каждого типа ресурса предусмотрены элементы метаданных. Эти элементы отображаются на запросы и ответы HTTP в соответствии с таблицей 347.

Таблица 347

Отображение метаданных на запросы и ответы HTTP

Элемент метаданных Описание Отображение
.id Логический идентификатор экземпляра ресурса Содержится в адресе URL
.meta.versionId Идентификатор версии экземпляра ресурса Заголовок ETag
.meta.lastUpdated Дата и время последнего изменения экземпляра ресурса Заголовок Last-Modified

Идентификатор версии экземпляра ресурса трактуется как «слабый» ETag и должен представляться заключенным в кавычки с префиксом W/, например ETag: W/»3141» .

12.4 Коды статуса HTTP

Правила использования специфичных кодов статуса HTTP приводятся ниже в тех случаях, когда требуется правильное отображение этих кодов на конкретные состояния ответов на запросы. Для передачи детальной информации об ошибках в ряде случаев должен использоваться экземпляр ресурса OperationOutcome, однако это не всегда возможно для ответов с кодом статуса HTTP 4xx или 5xx.

12.5 Заголовки HTTP

В таблице приведено использование нескольких заголовков HTTP для изменения обработки или формата запросов или результатов.

Таблица 348

Использование заголовков HTTP

Заголовок Направление Описание
Accept запрос Согласование типа MIME содержания
ETag ответ Значение элемента .meta.versionId в форме «слабого» ETag
If-Match запрос Совпадение значений ETag при условных запросах
If-Modified-Since запрос Чтение при условии, что экземпляр ресурса изменился после заданного момента времени
If-None-Exist запрос Нестандартный заголовок, определенный организацией Health Level Seven в целях предотвращения дублей экземпляров ресурса
If-None-Match запрос Несовпадение значений ETag при условных запросах
Last-Modified ответ Значение элемента .meta.lastUpdated, преобразованное в требуемый формат
Prefer запрос Задает различные варианты поведения, специфичные для отдельных запросов
Location ответ Указывает адрес URL вновь созданного экземпляра ресурса
Content-Location ответ Используется в схеме асинхронной обработки для указания адреса, по которому можно получить ответ на запрос

12.6 Управление содержанием ответа

Если сервер использует часовой пояс по умолчанию, то следует возвращать его значение в заголовке Date ответа HTTP.

Для улучшения пропускной способности в спецификации предусмотрены средства сокращения возвращаемого содержания (параметры управления ответом _summary и _elements, см. таблицу 349).

12.7 Типы содержания и кодировки

Формальные типы среды MIME для передачи содержания экземпляров ресурсов имеют значения application/fhir+xml (передача содержания в формате XML) или application/fhir+json (передача содержания в формате JSON).

При передаче запросов на поиск с помощью HTTP POST может использоваться тип среды MIME application/x-www-form-urlencoded.

Если клиент передает в заголовке Accept более общий тип среды MIME (application/xml, text/json или application/json), то сервер по возможности должен указать в ответе запрошенный тип.

Если в заголовке Accept указан формат, который сервер не поддерживает, то должен быть возвращен статус HTTP 406 Not Acceptable. Если неподдерживаемый формат указан в запросе на поиск, передаваемом с помощью HTTP POST, то должен быть возвращен статус HTTP 415 Unsupported Media Type.

Содержание экземпляров ресурсов должно представляться в кодировке UTF-8.

12.8 Общие параметры

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

Таблица 349

Общие параметры

Имя параметра Описание
_format Задает альтернативное представление тела ответа, используемое вместо типа среды MIME, указанного в заголовке Accept. Значения xml, text/xml, application/xml, application/fhir+xml должны трактоваться как представление тела ответа в формате XML, а значения json, application/json, application/fhir+json — как представление тела ответа в формате JSON
_pretty Допустимые значения true и false. Значение true указывает, что тело ответа должно представляться в формате, удобном для чтения человеком
_summary Задает заранее определенное сокращенное представление экземпляра ресурса в теле ответа
_elements Перечисляет конкретные элементы экземпляра ресурса, которые должны быть возвращены в теле ответа. Обязательные элементы возвращаются, даже если не указаны в этом перечислении

12.9 Поддержка версионности

Сервер по возможности должен поддерживать версионность, то есть присваивать соответствующие значения элементам meta.versionId, поддерживать чтение версий экземпляра ресурса и изменения с учетом номера версии.

Информация о поддержке версионности экземпляров конкретного типа ресурса возвращается сервером в ответ на запрос GET [base]/metadata в элементе CapabilityStatement.rest.resource.versioning, который может принимать следующие значения:

12.10 Часовой пояс клиента

Рекомендуется указывать часовой пояс клиента в нестандартном заголовке client-timezone запроса HTTP. Формат заголовка определен в проекте RFC draft-sharhalakis-httptz-05 (https://datatracker.ietf.org/doc/html/draft-sharhalakis-httptz-05).

12.11 Взаимодействие чтения read

Взаимодействие read обеспечивает чтение текущего содержания экземпляра ресурса. Оно выполняется с помощью метода HTTP GET:

GET [base]/[type]/[id] {?_format=[mime-type]}

По данному запросу сервер возвратит единичный экземпляр, содержание которого определяется типом ресурса. Соответствующий URL этого экземпляра может быть доступен обозревателю Интернет. Возвращаемый экземпляр ресурса должен иметь элемент id со значением [id]. Сервер по возможности должен возвратить заголовок ETag с номером версии (если версионность поддерживается) и заголовок Last-Modified (дата и время последнего изменения экземпляра ресурса).

Неизвестные экземпляры ресурса и удаленные экземпляры ресурса трактуются по-разному: при применении метода GET к удаленному экземпляру ресурса должен возвращаться код статуса HTTP 410 Gone, а при применении метода GET к неизвестному экземпляру ресурса должен возвращаться код статуса HTTP 404 Not Found.

При взаимодействии read может быть указан параметр summary. Запрос

GET [base]/[type]/[id] {?_summary=<значение>}

возвратит подмножество элементов экземпляра ресурса, определяемое кодом <значение>:

При взаимодействии read может быть указан параметр _elements, в значении которого перечислены все передаваемые элементы экземпляра ресурса.

Следует иметь в виду, что сокращенное содержание экземпляра ресурса может быть не пригодно для использования во взаимодействии изменения update. Сервер по возможности должен передать элемент meta.tag со значением SUBSETTED в качестве признака сокращенного содержания.

Вместо метода GET может использоваться метод HEAD. В этом случае передаются только заголовки HTTP, а тело ответа отсутствует.

12.12 Взаимодействие чтения версии vread

Взаимодействие чтения версии vread предоставляет содержание заданной версии экземпляра ресурса. Оно выполняется с помощью метода HTTP GET:

GET [base]/[type]/[id]/_history/[vid] {?_format=[mime-type]}

Сервер возвратит единичный экземпляр, содержание которого определяется типом ресурса type, идентификатором экземпляра id и идентификатором версии vid. Возвращаемый экземпляр ресурса должен иметь элемент id со значением [id] и элемент meta.versionId, содержащий значение [vid].

Сервер по возможности должен возвратить заголовок ETag с номером версии (если версионность поддерживается) и заголовок Last-Modified (дата и время последнего изменения экземпляра ресурса).

Если версия содержания экземпляра ресурса ровно та, при которой этот экземпляр был удален, то сервер по возможности должен возвратить код статуса HTTP 410 Gone, а если версия с таким идентификатором отсутствует — код статуса HTTP 404 Not Found.

Даже если сервер не поддерживает версионность, он, по возможности, должен поддерживать чтение текущей версии содержания экземпляра ресурса. Если при этом сделан запрос предыдущей версии содержания, то сервер должен возвратить код статуса 404 Not Found и экземпляр ресурса OperationOutcome, уточняющий, что для данного типа или экземпляра ресурса история изменения не поддерживается.

Вместо метода GET может использоваться метод HEAD.

12.13 Взаимодействия изменения update

12.13.1 Общие требования

Взаимодействие изменения update создает новую текущую версию существующего содержания ресурса или создает начальную версию содержания, если экземпляр ресурса с данным [id] не существует. Оно выполняется с помощью метода HTTP PUT:

PUT [base]/[type]/[id] {?_format=[mime-type]}.

Тело запроса должно содержать экземпляр ресурса, у которого элемент id имеет значение [id]. Если элемент id отсутствует или его значение не равно [id], то сервер должен возвратить код статуса HTTP 400 и по возможности должен возвратить экземпляр ресурса OperationOutcome, идентифицирующий причину ошибки. Если тело запроса содержит элемент meta, то сервер должен игнорировать элементы meta.versionId и meta.lastUpdated. Если сервер поддерживает версионность, он должен заполнить элементы meta.versionId и meta.lastUpdated новыми правильными значениями.

Изменение предшествующих версий экземпляра ресурса не поддерживается. Измененное содержание передается целиком, вместе с неизмененными элементами.

При успешном выполнении запроса сервер должен возвратить код статуса HTTP 200 OK, если содержание ресурса было изменено, или HTTP 201 Created, если экземпляр ресурса был создан либо возвращен к жизни. При этом должны быть возвращены заголовки Last-Modified и ETag, в котором указан новый идентификатор версии versionId содержания ресурса. Если экземпляр ресурса был создан (то есть возвращен код статуса HTTP 201 Created), сервер по возможности должен возвратить заголовок Location следующего вида:

Location: [base]/[type]/[id]/_history/[vid],

где [id] — существующий или вновь созданный логический идентификатор экземпляра ресурса, а [vid] — новый номер версии экземпляра. Если сервер не поддерживает версионность ресурса данного типа, то заголовок Location должен иметь следующий вид:

Location: [base]/[type]/[id].

При выполнении изменения сервер может сохранять комментарии, инструкции, форматирование содержания, передаваемого в формате XML, либо пробельные элементы содержания, передаваемого в формате JSON, но не обязан это делать. Это должно быть учтено при использовании электронной подписи.

12.13.2 Использование update для создания нового экземпляра ресурса

Сервер может позволить клиенту выполнить запрос PUT с указанием еще не существующего идентификатора [id] и тем самым позволить клиенту самостоятельно назначить идентификатор экземпляра ресурса. Такое поведение сервера не является обязательным, но в отдельных случаях может потребоваться.

Если сервер не создал новый экземпляр ресурса, он не должен возвращать код статуса HTTP 201 Created. При создании нового экземпляра ресурса должен быть возвращен заголовок Location, описанный в 12.13.1.

12.13.3 Отклонение взаимодействия изменения

Сервер может отклонить запрос изменения update из-за возможного нарушения целостности данных или по иным бизнес-правилам и возвратить соответствующий код статуса HTTP (обычно 422 Unprocessable Entity).

В дополнение к обычным кодам статуса HTTP, относящимся к безопасности, заголовку и согласованию типу содержания, могут быть возвращены следующие коды статуса HTTP:

  • 400 Bad Request — содержание ресурса не может быть разобрано или нарушает наложенные на него ограничения (или условное изменение относится более чем к одному экземпляру ресурса);
  • 401 Not Authorized — для данного взаимодействия требуется авторизация;
  • 404 Not Found — тип ресурса не поддерживается;
  • 405 Method Not allowed — изменяемый экземпляр ресурса не существует, а сервер не позволяет клиенту самостоятельно назначать идентификатор экземпляра ресурса;
  • 409 Conflict/412 Precondition Failed — конфликт версий;
  • 422 Unprocessable Entity — переданное содержание не соответствует профилю ресурса или нарушает иные бизнес-правила сервера.

Для каждой из этих ошибок сервер по возможности должен передать экземпляр ресурса OperationOutcome, детализирующий причину ошибки.

12.13.4 Условное изменение

Условное изменение позволяет клиенту запросить изменение существующего экземпляра ресурса не по его идентификатору [id], а по некоторым критериям поиска, то есть передать запрос следующего вида:

PUT [base]/[type]?[параметры поиска].

При выполнении такого запроса сервер осуществляет поиск, определенный для данного типа ресурса. Дальнейшие действия зависят от числа найденных экземпляров ресурса:

Если сервер не поддерживает условное изменение, то он должен возвратить код статуса HTTP 400 Bad Request и может возвратить экземпляр ресурса OperationOutcome, детализирующий причину ошибки.

Клиент может запросить изменение экземпляра ресурса при условии, что заданная версия экземпляра отсутствует на сервере. Такой запрос осуществляется с помощью нестандартного заголовка HTTP If-None-Match, указав версию экземпляра в форме «слабого» ETag, например:

If-None-Match: W/«[идентификатор версии]».

Если вместо «слабого» ETag указан символ звездочки (If-None-Match: *), то новый экземпляр ресурса не создается, если на сервере нет существующих версий экземпляра.

12.13.5 Обеспечение целостности изменений

Если один и тот же экземпляр ресурса изменяется несколькими клиентами, то потерю изменений можно предотвратить с помощью использования сочетания заголовков ETag и If-Match. В этом случае сервер должен возвращать заголовок ETag с каждым экземпляром ресурса, например:

HTTP 200 OK

Date: Sat, 09 Feb 2013 16:09:50 GMT

Last-Modified: Sat, 02 Feb 2013 12:02:47 GMT

ETag: W/«23»

Content-Type: application/fhir+json

Если заголовок ETag присутствует, то он должен содержать идентификатор версии экземпляра ресурса. Сервер может генерировать номер версии любым способом, с теми ограничениями, что он должен соответствовать типу данных id и быть уникальным в пространстве идентификаторов версий ресурса данного типа. Если экземпляры ресурсов возвращаются в контейнере Bundle, то к ним заголовок ETag не относится и элемент идентификатора версии ресурса versionId должен использоваться напрямую.

Если клиент запрашивает изменение с использованием алгоритма обеспечения целостности, то он должен включить в запрос заголовок If-Match, повторяющий значение заголовка ETag, полученного от сервера, например:

PUT [base]/Patient/347

If-Match: W/«23»

Если идентификатор версии, указанный в заголовке If-Match, не совпадает с идентификатором версии текущего содержания экземпляра ресурса, то сервер должен возвратить код статуса HTTP 412 Precondition Failed и не выполнять изменение содержания ресурса.

Сервер может требовать, чтобы клиент передавал заголовок If-Match, возвращая код статуса HTTP 400 Bad Request, если этот заголовок отсутствует. Если сервер обнаружил, что изменение не может быть выполнено в силу внутренних причин (например, изменение экземпляра ресурса заблокировано), то должен быть возвращен код статуса HTTP 409 Conflict.

12.14 Взаимодействие исправления patch

12.14.1 Общие требования

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

Взаимодействие исправления выполняется с помощью метода HTTP PATCH:

PATCH [base]/[type]/[id] {?_format=[mime-type]}.

Тело запроса должно содержать экземпляр ресурса Parameters, описывающий выполняемые изменения.

Сервер должен представить хранящийся у него экземпляр ресурса в формате, указанном в параметре _format, и применить к этому представлению изменения, указанные в экземпляре ресурса Parameters. Затем сервер должен использовать измененное представление как тело запроса на изменение хранящегося у него экземпляра ресурса. Соответственно применяются все требования к обработке ошибок и идентификаторов версий, описанные в подразделе 12.13.

Взаимодействие исправления определено не для всех типов ресурсов. Примером может служить ресурс Binary.

12.14.2 Условное исправление

Если сервер поддерживает взаимодействие patch и условное изменение, то по возможности он должен поддерживать условное исправление. При выполнении такого запроса сервер осуществляет поиск, определенный для данного типа ресурса. Дальнейшие действия зависят от числа найденных экземпляров ресурса:

12.14.3 Обеспечение целостности человеко-читаемого представления

Исправление может привести к тому, что человеко-читаемое представление экземпляра ресурса (значение элемента text.div) перестанет соответствовать обновленному содержанию. Если text.div отсутствует среди исправляемых элементов и значение text.status в исправляемом экземпляре ресурса отличается от generated (сгенерировано), то сервер может или отклонить взаимодействие patch, или сгенерировать значение text.div самостоятельно и присвоить элементу text.status значение generated.

12.15 Взаимодействие удаления delete

12.15.1 Общие требования

Взаимодействие удаления delete удаляет существующий экземпляр ресурса. Оно выполняется с помощью метода HTTP DELETE:

DELETE [base]/[type]/[id].

Тело запроса должно быть пустым.

Взаимодействие удаления delete означает, что последующие запросы на чтение экземпляра ресурса, неспецифичные для версии, должны возвращать код статуса HTTP 410 Gone, а запросы на поиск не должны возвращать этот экземпляр. При успешном удалении либо при отсутствии экземпляра ресурса с заданным идентификатором сервер должен возвратить один из следующих кодов статуса:

  • HTTP 200 OK, если ответ содержит дополнительные сведения;
  • HTTP 204 No Content, если ответ содержит дополнительные сведения;
  • HTTP 202 Accepted, если серверу запрещено сообщать факт удаления.

Поддержка удаления ресурса любого типа, ресурса конкретного типа или конкретного экземпляра ресурса зависит от политики безопасности и бизнес-правил сервера. Если серверу запрещено удалять ресурсы определенного типа в соответствии с общей политикой, то он должен возвратить код статуса HTTP 405 Method not allowed. Если он отказывает в удалении конкретного экземпляра ресурса по причинам, специфичным для этого экземпляра, например если удаление нарушает ссылочную целостность, то он должен возвратить код статуса HTTP 409 Conflict.

Применение взаимодействия удаления delete к уже удаленному экземпляру ресурса не приводит ни к какому эффекту, и сервер по возможности должен возвратить один из следующих кодов статуса:

В составе многих типов ресурсов присутствует элемент status, описывающий возможные состояния экземпляра ресурса. Эти состояния могут перекрываться с идеей удаления. Семантика удаления должна быть описана для каждого типа ресурса, имеющего элемент status. Если такое описание отсутствует, то взаимодействие удаления delete должно трактоваться как удаление экземпляра ресурса вне зависимости от значения элемента status.

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

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

12.15.2 Условное удаление

Условное удаление позволяет клиенту запросить удаление существующего экземпляра ресурса не по его идентификатору [id], а по некоторым критериям поиска, то есть передать запросы следующего вида:

  • для удаления экземпляров ресурса заданного типа:

DELETE [base]/[type]?[search parameters];

  • для удаления экземпляров ресурса независимо от их типа:

DELETE [base]?[search parameters].

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

Если сервер не поддерживает условное удаление, то он по возможности должен возвратить код статуса HTTP 400 Bad Request и может возвратить экземпляр ресурса OperationOutcome, детализирующий причину ошибки.

12.16 Взаимодействие создания create

12.16.1 Общие требования

Взаимодействие создания create создает новый экземпляр ресурса в хранилище, определяемом сервером. Если клиенту требуется управлять присваиванием логических идентификаторов экземплярам ресурсов, то вместо create следует использовать update. Взаимодействие create выполняется с помощью запроса HTTP POST следующего вида:

POST [base]/[type] {?_format=[mime-type]}.

Тело запроса должно содержать экземпляр ресурса. Он не должен иметь элемент id. Если элемент id присутствует, сервер должен игнорировать его. Если тело запроса имеет элемент meta, сервер должен игнорировать значения его компонентов versionId и lastUpdated. Сервер должен заполнить элементы id, meta.versionId и meta.lastUpdated правильными новыми значениями.

При выполнении взаимодействия create сервер по возможности должен воспринимать экземпляр ресурса в том виде, как он получен, и при последующем чтении возвращать то же самое содержание.

При успешном создании экземпляр ресурса сервер возвращает код статуса HTTP 201 Created. Кроме того, он должен возвратить заголовок Location, содержащий новый логический идентификатор созданного экземпляра ресурса и новый идентификатор версии:

Location: [base]/[type]/[id]/_history/[vid],

где [id] — идентификатор экземпляра ресурса, а [vid] — идентификатор версии содержания экземпляра ресурса. Если сервер не поддерживает версионность, то заголовок Location должен иметь следующий вид:

Location: [base]/[type]/[id].

Заголовок Location может содержать абсолютный или относительный URL.

Сервер по возможности должен возвратить заголовок ETag, содержащий идентификатор версии содержания экземпляра ресурса (если версионность поддерживается), и заголовок Last-Modified.

Если синтаксис содержания ресурса не валиден или не корректен и не может быть использован для создания нового экземпляра ресурса, сервер возвращает код статуса HTTP 400 Bad Request. Если сервер отклоняет содержание ресурса в связи с тем, что оно нарушает бизнес-правила, то он возвращает код статуса HTTP 422 Unprocessable Entity. В каждом из этих случаев сервер по возможности должен возвратить тело ответа, содержащее экземпляр ресурса OperationOutcome, детализирующий причину ошибки.

При создании экземпляра ресурса сервер может сохранять комментарии, инструкции, форматирование содержания, передаваемого в формате XML, либо пробельные элементы содержания, передаваемого в формате JSON, но не обязан это делать. Это должно быть учтено при использовании электронной подписи.

В дополнение к обычным кодам статуса HTTP, относящимся к безопасности, заголовку и согласованию типу содержания, могут быть возвращены следующие коды статуса HTTP:

12.16.2 Условное создание

Это взаимодействие позволяет клиенту инициировать создание нового экземпляра ресурса при условии, что на сервере еще нет некоторого эквивалентного экземпляра ресурса. Клиент задает эквивалентность с помощью заголовка If-None-Exist, являющегося расширением спецификации HTTP:

If-None-Exist: [параметры поиска],

где [параметры поиска] представляют собой ту часть URL, которая следует за знаком вопроса «?»).

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

Этот вариант создания призван понизить риск создания дубликатов. Например, клиент может запросить создание экземпляра ресурса Person (демографические данные физического лица) при условии, что на сервере еще нет экземпляра ресурса Person, имеющего заданный СНИЛС или ИНН.

Если сервер не поддерживает условное создание, то он должен возвратить код статуса HTTP 400 Bad Request и может возвратить экземпляр ресурса OperationOutcome, детализирующий причину ошибки.

12.17 Взаимодействие поиска search

12.17.1 Общие требования

Взаимодействие поиска search выполняет поиск экземпляров ресурса, соответствующих определенным параметрам, с помощью запросов HTTP GET. Параметры поиска представляют собой пары вида «имя=значение», закодированные в соответствии с правилами URL.

Параметры поиска могут применяться к ресурсам любого типа (например, параметр _id определен для каждого типа ресурсов), к ресурсам конкретного типа (например, параметр даты рождения birthDate используется для поиска экземпляров ресурса Patient). Может осуществляться текстовый поиск по человеко-читаемому содержанию экземпляру ресурса или по всем его строковым элементам. Некоторые параметры управляют выводом результатов поиска.

В типичном REST API коллекция найденных экземпляров ресурсов представляется в форме массива. В данном предварительном стандарте требуется, чтобы результаты поиска возвращались в форме контейнера Bundle, у которого элемент type имеет значение searchset. Это позволяет иметь в результате поиска дополнительную информацию (например, число найденных экземпляров), обеспечивать дополнительную функциональность (например, постраничный вывод) и включать в результат поиска экземпляры ресурсов разных типов.

Структура контейнера результатов поиска показана на рисунке 79. Экземпляры ресурсов, содержащиеся в этом контейнере, представляются в элементе resource в составе отдельных записей entry. Ссылки на страницы результатов поиска представлены элементами link. Причина включения экземпляра ресурса в результат поиска представлена элементом search. Его компонент mode может иметь следующие значения: match (экземпляр ресурса удовлетворяет критериям поиска) | include (экземпляр ресурса включен по прямой или обратной ссылке) | outcome (запись entry содержит экземпляр ресурса OperationOutcome с дополнительной информацией об обработке запроса на поиск).

12.17 Взаимодействие поиска search

Рисунок 79 — Контейнер результатов поиска

12.17.2 Контекст поиска

Операции поиска осуществляются в одном из следующих контекстов:

Если параметры поиска отсутствуют, например, GET [base], GET [base]/Patient, то сервер должен включить в результат поиска все экземпляры ресурсов данного контекста. Если число найденных экземпляров слишком велико, сервер может отклонить такой запрос или использовать постраничный вывод результатов.

12.17.3 Запрос HTTP GET

Клиент выполняет поиск с помощью запроса HTTP GET, в котором параметры поиска включены в адресную строку URL (таблица 350).

Таблица 350

Поиск с помощью запроса HTTP GET

Контекст Описание
Система GET [base]?param1=value&...{&_format=[mime-type]}
Тип ресурса GET [base]/[resource-type]/?param1=value&...{&_format=[mime-type]}
12.17.4 Возвращаемые коды статуса HTTP

При успешном поиске сервер должен возвратить код статуса HTTP 200 OK, а тело ответа должно представлять собой контейнер Bundle, в который включена коллекция найденных экземпляров ресурсов. При этом элемент type ресурса Bundle должен иметь значение searchset. Экземпляры ресурсов, включенные в контейнер, могут быть получены от другого сервера, то есть базовый URL в элементе Bundle.entry.fullUrl может отличаться от базового URL, указанного в запросе поиска.

Коллекция, полученная в результате поиска, может быть очень большой, поэтому сервер может использовать постраничный вывод, описанный в 12.22. Сервер может также включить в контейнер Bundle экземпляры ресурсов OperationOutcome, содержащие дополнительную информацию о поиске. Они не должны содержать информацию о проблемах поиска, имеющих статус фатальной ошибки (OperationOutcome.severity = fatal), при этом в элементах Bundle.entry.search.mode записей Bundle.entry, содержащих эти экземпляры, должны быть указаны значения outcome.

Если поиск не может быть выполнен, то сервер должен возвратить код статуса HTTP 4xx или 5xx. Если такая ошибка возникла на уровне обработки ресурсов, то сервер по возможности должен включить в тело ответа экземпляр ресурса OperationOutcome, детализирующий ошибку.

В дополнение к обычным кодам статуса HTTP, относящимся к безопасности, заголовку и согласованию типу содержания, могут быть возвращены следующие коды статуса HTTP:

Для каждой из этих ошибок сервер по возможности должен передать экземпляр ресурса OperationOutcome, детализирующий причину ошибки.

12.17.5 Именованный поиск

Клиенту могут потребоваться возможности поиска, не укладывающиеся в стандартную схему. Для этой цели может использоваться именованный поиск, реализуемый специфичным образом. Именованный поиск задается с помощью параметра _query, например:

GET [base]/Person?_query=имя&параметры.

При именованном поиске могут задаваться параметры, не определенные для каких-либо ресурсов. В строке запроса может быть указан только один экземпляр параметра _query. Сервер должен отказать в обработке запроса, если он не поддерживает параметр _query или не способен обработать запрос с данным именем.

12.17.6 Параметры управления содержанием

В дополнение к общим параметрам, описанным в таблице 349, могут быть указаны также параметры управления содержанием, перечисленные в таблице 367. Их описание приведено в подразделе 12.27.

12.18 Взаимодействие описания возможностей capabilities

Взаимодействие capabilities позволяет получить описание возможностей, обеспечиваемых сервером. Оно выполняется с помощью следующей команды HTTP GET:

GET [base]/metadata{?_format=[mime-type]}.

Ответ на запрос должен содержать экземпляр ресурса CapabilityStatement, описывающий типы ресурсов и взаимодействия, обеспечиваемые сервером для этих типов ресурсов.

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

12.19 Взаимодействие транзакции transaction

12.19.1 Общие требования

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

Взаимодействие транзакции осуществляется с помощью запроса HTTP POST следующего вида:

POST [base] {?_format=[mime-type]}.

Тело запроса должно содержать контейнер Bundle, у которого элемент type имеет значение transaction. Структура контейнера транзакции показана на рисунке 80.

12.19 Взаимодействие транзакции transaction

Рисунок 80 — Контейнер транзакции

Запрос на выполнение взаимодействия представляется в элементе request в составе записи entry. Если взаимодействие выполняется с помощью запроса PUT или POST, то элемент resource должен содержать экземпляр ресурса, представляющий тело запроса.

12.19.2 Правила выполнения транзакции

Сервер либо выполняет все запросы (то есть при обработке каждой записи entry возвращается код статуса HTTP 2xx или 3xx) и возвращает контейнер результата транзакции, либо отклоняет все запросы и возвращает ответ с кодом статуса HTTP 4xx или 5xx. Результат выполнения не должен зависеть от порядка следования экземпляров ресурсов в контейнере транзакции. В одной транзакции может присутствовать только один экземпляр ресурса с данным идентификатором.

Запросы, содержащиеся в транзакции, должны выполняться в следующем порядке:

Экземпляры ресурсов, вложенные в контейнер транзакции, могут содержать перекрестные ссылки. Присвоив новый логический идентификатор id экземпляру ресурса, создаваемому с помощью запроса POST, сервер должен обновить все ссылки на него внутри контейнера Bundle. Ссылки на экземпляры ресурсов, не включенные в контейнер, оставляются неизменными.

Элемент fullUrl записи entry, содержащей создаваемый экземпляр ресурса, трактуется как идентификатор этого экземпляра внутри контейнера Bundle. При создании экземпляра сервер игнорирует этот идентификатор и присваивает собственный. При выполнении изменения сервер по возможности осуществляет преобразование значения элемента fullUrl в местный адрес URL, по которому находится изменяемый экземпляр ресурса. Если такое преобразование не представляется возможным, сервер заменяет базовую часть значения fullUrl на собственный базовый адрес. Это позволяет передать контейнер транзакции нескольким серверам, не меняя значения элементов fullUrl, указанных внутри контейнера.

12.19.3 Условные ссылки

При формировании контейнера транзакции у клиента может отсутствовать логический идентификатор ссылочного экземпляра ресурса. На этот случай в транзакции (и только в транзакции) ссылка на экземпляр ресурса по логическому идентификатору может быть заменена на условие поиска, например, . Это условие должно задаваться относительно базового пути [base] и начинаться с типа ресурса [type]. Параметры управления содержанием результата поиска должны отсутствовать.

При выполнении транзакции сервер должен осуществить следующие действия:

12.19.4 Результат транзакции

При успешном выполнении транзакции тело ответа должно содержать контейнер результата транзакции Bundle, у которого элемент type имеет значение transaction-response. Структура этого контейнера показана на рисунке 81.

12.19 Взаимодействие транзакции transaction

Рисунок 81 — Контейнер результата транзакции

Контейнер результата транзакции содержит по одной записи entry на каждую запись entry контейнера транзакции, и в том же порядке. Запись entry содержит информацию о результате транзакции в элементе response, включая код статуса HTTP и содержание заголовков Location, ETag, Last-Modified. В зависимости от значения заголовка Prefer, указанного при запросе транзакции, в запись entry может быть включен экземпляр ресурса.

Если при выполнении транзакции произошла ошибка, то вместо контейнера Bundle возвращается один экземпляр ресурса OperationOutcome, содержащий детальные сведения об ошибке.

12.20 Взаимодействие истории history

Взаимодействие истории history обеспечивает получение истории изменений конкретного экземпляра ресурса, истории изменения экземпляров ресурса данного типа или истории изменения экземпляров ресурсов всех типов. Эти три варианта выполняются с помощью следующих запросов HTTP GET:

Тело ответа должно представлять собой контейнер Bundle, у которого элемент type имеет значение history. Оно содержит историю изменения версий экземпляров ресурсов, включая удаленные, и должна быть отсортирована в обратном хронологическом порядке.

Структура контейнера истории показана на рисунке 82.

12.20 Взаимодействие истории history

Рисунок 82 — Контейнер истории

Каждая запись entry должна содержать хотя бы один из элементов resource и request. Элемент resource содержит версию экземпляра ресурса, а элемент request предоставляет информацию о взаимодействии, которое привело к данной версии, что позволяет клиенту-подписчику отличить вновь созданный экземпляр от изменения уже существующего экземпляра. Главная причина, почему элемент resource может отсутствовать, состоит в том, что содержание экземпляра могло быть изменено не с помощью REST API. Если элемент entry.request.method имеет значение PUT или POST, то элемент entry должен содержать элемент resource.

Взаимодействия create, update, patch и delete пополняют историю изменений. Другие взаимодействия не пополняют ее. Поскольку операция исправления patch в конечном счете приводит к изменению экземпляра ресурса, то соответствующий ей элемент entry.request.method будет иметь значение PUT.

Вместо GET может использоваться запрос HEAD.

Примечания

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

2 Содержание ресурса, показанное в истории изменений, является тем, как оно сохранено сервером, а не тем, как оно было предоставлено клиентом (могут быть отличия).

3 Сервер по возможности должен как минимум заполнить элемент response.lastModified, чтобы можно было определить момент выполнения действия сервером.

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

В дополнение к стандартному параметру _format могут быть указаны также параметры, перечисленные в таблице 351. Каждый из этих параметров не может быть указан более одного раза.

Таблица 351

Дополнительные параметры в запросе истории

Параметр Тип Описание
_count integer Максимальное число элементов entry, указанных на одной странице
_offset number Число пропускаемых экземпляров ресурса (при постраничном выводе истории изменений)
_since instant Включить только те версии экземпляров ресурсов, которые были созданы в заданный момент времени или после него
_at date(Time) Включить только те версии экземпляров ресурсов, которые были текущими в некоторый момент интервала, заданного значением данного параметра
_list reference Включить только те версии экземпляров ресурсов, на которые есть ссылки в данном списке
_sort token Сортировка версий экземпляра ресурса по дате и времени последнего изменения:
-_lastUpdated (по умолчанию) — в порядке убывания
_lastUpdated — в порядке возрастания
none — без сортировки

Историю версий можно ограничить определенным периодом времени, указав параметр _since, содержащий полные дату и время с часовым поясом. Клиент должен иметь в виду, что в связи с неточностью времени он может получить более одного уведомления об изменении содержания экземпляра в момент _since. Сервер не обязан указывать время с точностью менее секунды.

Поскольку список изменений может быть длинным, сервер может использовать постраничный вывод. В этом случае он должен использовать метод, описанный в [38] (https://tools.ietf.org/html/rfc5005), учитывая максимальное число записей entry на странице, указанное в параметре _count.

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

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

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

Если сделан запрос на получении истории, не являющейся доступной (например, сервер не хранит историю версий ресурсов данного типа или конкретного экземпляра ресурса), то сервер должен возвратить код статуса HTTP 404 Not Found и по возможности возвратить экземпляр ресурса OperationOutcome, детализирующий причину ошибки.

12.21 Транзакционная целостность

При выполнении взаимодействий create и update сервер не обязан сохранять экземпляр ресурса в том виде, как его предоставил клиент. При последующем чтении с помощью взаимодействия содержание экземпляра ресурса может отличаться от исходного по нескольким причинам, например:

В связи с этим рекомендуется придерживаться следующих правил:

12.22 Постраничный вывод

12.22.1 Общие требования

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

<id value= формула 3506 формула />

......

С помощью параметра _count можно указать, сколько экземпляров ресурса следует возвратить на одной странице. Если _count имеет значение 0, то сервер должен возвратить экземпляр ресурса Bundle, в котором элемент total содержит общее число найденных экземпляров, но при этом в нем нет ни одного экземпляра ресурса и ссылок link на предыдущую/следующую страницу, например:

<total value= формула 796 формула />

Следует учесть, что элемент total содержит общее число экземпляров ресурсов, соответствующих условию поиска. В это число не входят экземпляры ресурсов, включаемых в Bundle в соответствии с требованием, указанным в параметрах _include или _revinclude.

Значение параметра _count никак не влияет на значение элемента Bundle.total, поскольку последний указывает общее число найденных экземпляров, а не число экземпляров ресурсов, включенных в конкретный экземпляр ресурса Bundle.

12.22.2 Смещение от начала вывода

С помощью параметра _offset можно указать смещение от начала вывода, то есть число экземпляров ресурса, пропускаемое перед формированием страницы вывода. В подсчете не участвуют экземпляры других ресурсов, включаемых в Bundle, например, ссылочные экземпляры ресурсов, включаемые в соответствии с требованием, указанным в параметре _include или _revinclude.

12.22.3 Включение других экземпляров ресурсов в результат запроса (_include и _revinclude)

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

Значения параметров управления поиском _include и _revinclude состоят из двух частей, разделенных двоеточием (:):

Значения параметров _include и _revinclude не могут задаваться списком. Вместо этого должны быть указаны отдельные параметры управления поиском.

Для каждого ресурса, включенного в результат поиска вследствие применения параметров _include и _revinclude, элементу entry.search.mode ресурса Bundle присваивается значение include. Если добавить нечего, то в результат поиска дополнительные экземпляры ресурсов не включаются и ошибка не генерируется.

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

12.22.4 Актуальность результатов запроса

Результаты запроса актуальны только на момент выполнения запроса. После его выполнения экземпляры ресурсов могут изменяться и повторение запроса может привести к другим результатам.

12.23 Нестандартные заголовки

В таблице 352 приведены нестандартные заголовки HTTP, предназначенные для использования в целях технической поддержки или отладки.

Таблица 352

Нестандартные заголовки HTTP

Заголовок Направление Примечания
X-Request-Id обе стороны Уникальный идентификатор запроса или ответа, присвоенный клиентом или сервером соответственно
X-Correlation-Id обе стороны Идентификатор запроса, присвоенный клиентом и возвращаемый сервером в ответе на запрос
X-Forwarded-For запрос Исходный IP-адрес клиента, передаваемый промежуточному узлу
X-Forwarded-Host запрос Исходный адрес хоста, указанный клиентом в заголовке HTTP Host
X-Intermediary обе стороны Используется активным промежуточным узлом, изменяющим содержание запроса или ответа
X-Forwarded-Proto обе стороны Идентификация исходного протокола, используемого клиентом для соединения с промежуточным узлом
X-Forwarded-Port обе стороны Идентификация исходного порта, используемого клиентом для соединения с промежуточным узлом
X-Forwarded-Prefix обе стороны Заголовок, позволяющий приложениям использовать суб-URL

Заголовок X-Request-Id предназначен для идентификации запросов или ответов в системных журналах. Клиент может присвоить запросу идентификатор и указать его в заголовке X-Request-Id. Сервер может использовать этот идентификатор или присвоить запросу собственный идентификатор, предназначенный для передачи в X-Request-Id ответа на запрос. Если идентификатор, присвоенный сервером, отличается от идентификатора, присвоенного клиентом, то сервер по возможности должен передать идентификатор, присвоенный клиентом, в заголовке X-Correlation-Id.

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

На пути от поставщика к потребителю могут использоваться интерфейсные машины. Они отличаются от прокси тем, что активно меняют содержание передаваемых данных и не связаны требованиями, предъявляемыми к прокси. Такие агенты должны добавлять к запросу заголовки X-Intermediary, способствующие отладке или технической поддержке, например:

X-Intermediary: [идентификация агента, обычно полное доменное имя]

Конечные точки не должны использовать этот заголовок.

12.24 Сводная информация

Сводная информация по запросам HTTP приведена в таблице 353.

Таблица 353

Сводная информация по запросам

ВзаимодействиеПутьЗапрос
Глагол HTTPЗаголовок Content-TypeТелоЗаголовок PreferЗаголовок условия
read (чтение)/[type]/[id]GET или HEADне применимотсутствуетне применимвозможен: If-Modified-Since, If-None-Match
vread (чтение версии)/[type]/[id]/_history/[vid]GET или HEADне применимотсутствуетне применимне применим
update (изменение)/[type]/[id]PUTобязателенэкземпляр ресурсане обязателенвозможен: If-Match
patch (исправление)/[type]/[id]PATCHобязателенэкземпляр ресурса Parametersобязателенвозможен: If-Match
delete (удаление)/[type]/[id]DELETEне применимне применимне применимне применим
create (создание)/[type]POSTобязателенэкземпляр ресурсаобязателенвозможен: If-None-Exist
search (поиск по типу)/[type]?GETне применимне применимне применимне применим
/[type]/_search?POSTapplication/x-www-form-urlencodedпараметры запросане применимне применим
search (поиск по системе)?GETне применимне применимне применимне применим
/_searchPOSTapplication/x-www-form-urlencodedпараметры запросане применимне применим
capabilities (возможности)/metadataGET‡не применимне применимне применимне применим
transaction (транзакция)/POSTобязателенэкземпляр ресурса Bundleне обязателенне применим
batch (пакет)/POSTобязателенэкземпляр ресурса Bundleне обязателенне применим
history (история экземпляра)/[type]/[id]/_historyGETне применимне применимне применимне применим
history (история типа)/[type]/_historyGETне применимне применимне применимне применим
history (история системы)/_historyGETне применимне применимне применимне применим
(операция)/\$[name], /[type]/\$[name] или /[type]/[id]/\$[name]POSTобязателенэкземпляр ресурса Parametersне применимне применим
GETне применимне применимне применимне применим
POSTapplication/x-www-form-urlencodedпараметры запросане применимне применим

Сводная информация по ответам на запрос приведена в таблице 354. В графе "Коды статуса HTTP" приведены коды, описанные в настоящем предварительном стандарте. В дополнение к ним могут возвращаться другие коды, в том числе относящиеся к аутентификации и ошибкам сервера.

Таблица 354

Сводная информация по ответам на запрос

ВзаимодействиеОтвет на запрос
Заголовок Content-TypeТелоЗаголовок LocationЗаголовок версионностиКоды статуса HTTP
read (чтение)обязателенэкземпляр ресурсане применимO: ETag, Last-Modified200, 202, 404, 410‡
vread (чтение версии)обязателенэкземпляр ресурсане применимO: ETag, Last-Modified200, 202, 404, 410‡
update (изменение)обязателен при наличии телав зависимости от заголовка Prefer - экземпляр ресурсане применимO: ETag, Last-Modified200, 201, 202, 400,
404, 405, 409,
412, 422
patch (исправление)обязателен при наличии телав зависимости от заголовка Prefer - экземпляр ресурсане применимвозможны:
ETag, Last-Modified
200, 201, 202, 400,
404, 405, 409,
412, 422
delete (удаление)обязателен при наличии телавозможен экземпляр ресурса OperationOutcomeне применимне применим200, 202, 204, 404,
405, 409, 412
create (создание)обязателен при наличии телав зависимости от заголовка Prefer - экземпляр ресурсаобязателенвозможны:
ETag, Last-Modified
201, 202, 400, 404,
405, 422
search (поиск по типу)обязателенэкземпляр ресурса Bundleне применимне применим200, 202, 401,
404, 405
search (поиск по системе)обязателенэкземпляр ресурса Bundleне применимне применим200, 202, 401,
404, 405
capabilities (возможности)обязателенэкземпляр ресурса CapabilityStatementне применимне применим200, 202, 404
transaction (транзакция)обязателенэкземпляр ресурса Bundleне применимне применим200, 202, 400, 404,
405, 409, 412, 422
batch (пакет)обязателенэкземпляр ресурса Bundleне применимне применим200, 202, 400, 404,
405, 409, 412, 422
history (история экземпляра)обязателенэкземпляр ресурса Bundleне применимне применим200, 202
history (история типа)обязателенэкземпляр ресурса Bundleне применимне применим200, 202
history (история системы)обязателенэкземпляр ресурса Bundleне применимне применим200, 202
(операция)обязателенЭкземпляр ресурса Parametersне применимне применим200, 202 и другие в зависимости от типа операции

12.25 Шаблон асинхронных запросов

Для выполнения асинхронного запроса сервер должен поддерживать заголовок Prefer со значением respond-async (асинхронный ответ). При этом в заголовке Accept может быть указан формат экземпляра ресурса Bundle, возвращаемого при успешном выполнении запроса, или экземпляра ресурса OperationOutcome, возвращаемого при ошибке приема или выполнении запроса.

При успешном приеме запроса сервер должен возвратить код статуса HTTP 202 Accepted и заголовок Content-Location, содержащий абсолютный URL конечной точки, которой должны направляться запросы статуса ответа. Тело ответа может содержать экземпляр ресурса OperationOutcome.

При ошибке приема (например, запрос содержит неподдерживаемый параметр поиска) должен возвращаться код статуса HTTP 4XX или 5XX, а тело ответа должно содержать экземпляр ресурса OperationOutcome с описанием ошибки.

После получения ответа об успешном приеме запроса клиент может выполнять следующие действия:

  • отменить выполнение запроса с помощью отправки конечной точке запроса DELETE. При успешной отмене запроса в ответ на обращение к конечной точке должны возвращаться код статуса HTTP 404 Not Found и соответствующий ему экземпляр ресурса OperationOutcome. При ошибке отмены конечная точка должна возвратить код статуса HTTP 4XX или 5XX и может возвратить экземпляр ресурса OperationOutcome с описанием ошибки;
  • запросить статус выполнения с помощью отправки конечной точке запроса GET. При частых запросах статуса конечная точка может возвратить код статуса HTTP 429 Too Many Requests. Если исходный запрос еще не выполнен, конечная точка должна возвратить код статуса HTTP 202 Accepted и может возвратить заголовок X-Progress с текстовым описанием состояния выполнения, например, процент выполнения. Если при обработке запроса статуса произошла ошибка, конечная точка должна возвратить код статуса HTTP 4XX или 5XX и может возвратить экземпляр ресурса OperationOutcome с описанием ошибки. Если выполнение исходного запроса завершено (успешно или нет), то конечная точка должна возвратить код статуса HTTP 200 OK и тело, содержащее контейнер Bundle, у которого элемент type имеет значение batch-response. Результат исходного запроса должен возвращаться в первой записи контейнера Bundle.entry[0], а информация об ошибках его выполнения - в элементе Bundle.entry[0].response.

12.26 Обработка запросов поиска

12.26.1 Параметры поиска

Входные данные операции поиска именуются параметрами поиска. Параметр поиска может представлять собой:

Имена параметров поиска чувствительны к регистру. Параметры применяются в следующем порядке:

В отсутствие фильтров поиска, например, GET [base], GET [base]/Patient или POST [base]/_search, POST [base]/Patient/_search без указания тела, сервер по возможности должен возвратить все экземпляры ресурсов данного контекста. Если их слишком много, сервер может отклонить запрос, возвратив статус HTTP 413 Payload Too Large, или использовать постраничный вывод с параметрами по умолчанию.

12.26.2 Контекст поиска

Операции поиска выполняются в одном из следующих контекстов:

12.26.3 Результаты поиска

Результаты поиска всегда возвращаются в контейнере Bundle, у которого элемент type имеет значение searchset. Они содержат экземпляры ресурсов и дополнительные метаданные. Структура контейнера результатов поиска показана на рисунке 79.

Параметры поиска, примененные сервером, могут отличаться от тех, что были заданы клиентом. Они возвращаются в элементе Bundle.link, у которого элемент relation имеет значение self.

Контейнер результатов поиска Bundle может содержать записи entry, тип которых определяется значением элемента entry.search.mode:

12.26.4 Типы параметров поиска

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

Таблица 355

Типы параметров

Тип Описание
number Значение параметра должно быть целым или десятичным числом
date Значение параметра представляет дату или дату и время в стандартном формате XML
string Значение параметра представляет собой строку символов, которая может содержать пробелы, но не запятые. Совпадающая строка должна начинаться со значения параметра или равняться ему, регистр и диакритические знаки игнорируются
token Значением параметра является кодированное значение или идентификатор в форме строки или пары "пространство имен|значение"
reference Значение параметра является ссылкой на другой экземпляр ресурса
composite Значение параметра представляет собой сочетание нескольких критериев
quantity Значение параметра представляет физическую величину
uri Значение параметра представляет URI [27]
special Специальное значение, состав которого приведен в описании параметра
12.26.5 Модификаторы

Модификаторы параметров поиска изменяют семантику параметров. Например, модифицированный параметр поиска birthdate:missing=true позволяет найти экземпляры ресурса Patient, у которых дата рождения отсутствует.

В запросах поиска модификаторы обозначаются как суффиксы имени параметра поиска в формате [имя]:[модификатор]. К одному параметру поиска может быть применен только один модификатор.

Поскольку модификаторы изменяют семантику параметров поиска, то сервер по возможности должен отклонить запрос поиска, если в нем указан модификатор, не поддерживаемый этим сервером. При отклонении должен быть возвращен код статуса HTTP 400 Bad Request и экземпляр ресурса OperationOutcome с точным описанием причины отклонения.

Возможность применения модификатора к параметру поиска зависит от реализации поиска конкретным сервером. Однако существуют общие ограничения применимости модификатора в зависимости от типа параметра. Например, модификатор exact (точное совпадение) имеет смысл для параметров типа string, но не может быть применен к параметру типа token. Исключение составляют параметры поиска типа special - для каждого такого параметра список допустимых модификаторов индивидуален.

Таблица 356

Модификаторы параметров поиска

Имя Тип параметра Описание
above uri Значение параметра является продолжением значения элемента типа uri
below uri Значение параметра является началом значения элемента типа uri
contains string, uri Значение параметра является подстрокой в любом месте значения элемента, на который отображается параметр
exact string Значение параметра полностью совпадает со значением элемента, на который отображается параметр (включая регистр и диакритические знаки)
identifier reference Значение параметра совпадает со значением компонента identifier ссылочного элемента типа Reference, на который отображается параметр
in token Значение элемента, на который отображается параметр, принадлежит заданному набору значений
iterate - Параметр поиска означает включение (_include, _revinclude), применяемое к включенному экземпляру ресурса
missing date, number, quantity, reference, string, token, uri Присутствие элемента, на который отображается параметр (если значение параметра равно true), или отсутствие этого элемента (если значение параметра равно false)
not token Элемент, на который отображается параметр, отсутствует либо его значение не совпадает со значением параметра
text token Значение параметра совпадает со значением компонента типа string (CodeableConcept.text, Coding.display, Identifier.type.text или Reference.display) элемента, на который отображается параметр, в соответствии с базовыми правилами (совпадающая строка должна начинаться со значения параметра или равняться ему, регистр и диакритические знаки игнорируются)

Если значением параметра является список, то модификатор применяется к каждому элементу списка.

12.26.6 Префиксы

Префиксы значений параметров используются для параметров типа number, date и quantity, имеющих упорядоченные области значений. Они позволяют избежать применения escape-последовательностей в строке URL и обеспечивают наглядность визуализации.

Допустимые префиксы приведены в таблице 357. При описании префиксов "значение параметра" обозначает значение параметра поиска, а "значение элемента" - значение элемента ресурса, на который отображается параметр.

Таблица 357

Допустимые префиксы значений параметров поиска

Префикс Описание Формальное определение
eq значение элемента равно значению параметра или полностью содержится в нем диапазон значений параметра полностью содержит диапазон значений элемента
ne значение элемента не равно значению параметра диапазон значений параметра не полностью содержит диапазон значений элемента
gt значение элемента больше значения параметра диапазон над значением параметра пересекается с диапазоном значений элемента
lt значение элемента меньше значения параметра диапазон под значением параметра пересекается с диапазоном значений элемента
ge значение элемента больше значения параметра или равно ему диапазон над значением параметра пересекается с диапазоном значений элемента или диапазон значений параметра полностью содержит диапазон значений элемента
le значение элемента меньше значения параметра или равно ему диапазон под значением параметра пересекается с диапазоном значений элемента или диапазон значений параметра полностью содержит диапазон значений элемента
sa значение элемента начинается после значения параметра диапазон значений параметра не пересекается с диапазоном значений элемента и диапазон над значением параметра содержит диапазон значений элемента
eb значение элемента заканчивается до значения параметра диапазон значений параметра не пересекается с диапазоном значений элемента и диапазон под значением параметра содержит диапазон значений элемента

Использование префиксов предполагает, что элемент присутствует и его значение определено. Для поиска элементов с отсутствующими значениями следует использовать модификаторы missing или not.

Префиксы могут использоваться в списках значений параметра, подразумевающих логическое ИЛИ. В этих случаях префикс относится только к значению, которому он предшествует.

По умолчанию предполагается префикс eq. Следует иметь в виду, что применение префиксов отличается от аналогичных математических операций. Префиксы sa (начинается после) и eb (заканчивается до) применимы к десятичным значениям, но не применимы к целым.

Графа "формальное определение" содержит описание префикса в терминах диапазонов, применимых для десятичных значений и дат. Эти диапазоны могут быть явными или подразумеваемыми. Например, десятичное число 2.0 имеет подразумеваемый диапазон значений от 1.95 до 2.05, а для даты 2015-08-12 подразумевается диапазон времени в течение всего дня. У элемента с типом данных Range, Period или Timing диапазон значений задан явно. Варианты диапазонов приведены в таблице 358.

Таблица 358

Варианты диапазонов

Диапазон Описание Примеры
Диапазон значений Определяется точностью представления значения Число 2.0 имеет диапазон значений от 1.95 до 2.05.
Дата 2015-08-12 имеет диапазон значений от 2015-08-12T00:00:00.0000 включительно до 2015-08-13T00:00:00.0000 исключительно
Диапазон под значением Множество значений до заданного значения Диапазон под значением 2.0 включает все значения меньше 2.00000000000000000000.
Диапазон под значением 2015-08-12T05:23:45 включает все значения времени до 2015-08-12T05:23:45.000000000000000
Диапазон над значением Множество значений после заданного значения Диапазон над значением 2.0 включает все значения, большие < 2.00000000000000000000.
Диапазон над значением 2015-08-12T05:23:45 включает все значения времени после 2015-08-12T05:23:45.000000000000000
12.26.7 Использование escape-последовательностей в значении параметра поиска

В строке URL запроса поиска символы доллара ($), запятой (,) и вертикальной черты (|) имеют специальное значение. Если эти символы должны присутствовать в значении параметра поиска, то им должен предшествовать символ обратной косой черты (), который должен предшествовать самому себе. Выражение param=xxx$xxx означает, что параметр имеет тип composite, а param=xx\$xx означает, что параметр имеет строковое значение xx$xx. Выражение param=xx\xx недопустимо, а param=xx\xx означает, что параметр имеет строковое xx\xx. По запросу GET [base]/Observation?code=a,b должны быть найдены все экземпляры ресурса Observation, у которых элемент code принимает значение "a" или "b", а по запросу GET [base]/Observation?code=a,b должны быть найдены все экземпляры ресурса Observation, у которых элемент code имеет значение "a,b".

12.26.8 Параметр типа date

Параметр типа date используется для поиска по заданной дате или дате и времени либо по заданному периоду.

Значение параметра типа date должно иметь представление даты и времени ГГГГ-ММ-ДДТЧЧ:ММ:СС.СССС[Z|(+|-)ЧЧ:ММ] (стандартный формат даты и времени в XML). Допускаются также представления с уменьшенной точностью.

Поиск по дате всегда оперирует "диапазонами значений", зависящими от типа данных элемента, на который отображается параметр поиска (таблица 359).

Таблица 359

Диапазоны значений даты и времени

Тип данных Диапазон значений
date Диапазон значений день (при полном представлении даты), месяц или год (при представлении даты с уменьшенной точностью)
dateTime Тот же диапазон, что для типа данных date. Например, дата 2013-01-10 задает все моменты времени от 00:00 10 января 2013 года до 00:00 января 2013 года (исключая этот момент)
instant Фиксированный момент времени с диапазоном значений, определяемым точностью системного таймера сервера
Period Явно заданный диапазон, у которого верхняя или нижняя граница может отсутствовать
Timing Детали расписания игнорируются и учитываются только внешние границы. Например, расписание "через день с 31 января 2013 года по 24 марта 2013 года" попадет в результат поиска по дате 1 февраля 2013 года, хотя эта дата не входит в расписание

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

Таблица 360

Примеры совпадений значения элемента со значением параметра типа date

Значение параметра Примеры совпадений значения элемента
[параметр]=eq2013-01-14 2013-01-14T00:00 совпадает (очевидно)
2013-01-14T10:00 совпадает - входит в диапазон
2013-01-15T00:00 не совпадает - не входит в диапазон
[параметр]=ne2013-01-14 2013-01-15T00:00 совпадает - не входит в диапазон
2013-01-14T00:00 не совпадает - входит в диапазон
2013-01-14T10:00 не совпадает - входит в диапазон
[параметр]=lt2013-01-14T10:00 2013-01-14 совпадает, поскольку включает моменты времени до 10:00 14 января 2013 года
Период от 2013-01-13T12:00 до 2013-01-14T12:00 совпадает, поскольку включает моменты времени до 10:00 14 января 2013 года
Период от 2013-01-14T08:00 до 2013-01-15T08:00 совпадает, поскольку включает моменты времени до 10:00 14 января 2013 года
[параметр]=gt2013-01-14T10:00 2013-01-14 совпадает, поскольку включает моменты времени после 10:00 14 января 2013 года
Период от 2013-01-13T12:00 до 2013-01-14T12:00 совпадает, поскольку включает моменты времени после 10:00 14 января 2013 года
Период от 2013-01-14T12:00 до 2013-01-15T12:00 совпадает, поскольку включает моменты времени после 10:00 14 января 2013 года
[параметр]=ge2013-03-14 Период "после 21 января 2013 года" совпадает, поскольку в него попадают моменты времени после 14 марта 2013 года
[параметр]=le2013-03-14 Период "после 21 января 2013 года" совпадает, поскольку в него попадают моменты времени до 14 марта 2013 года
[параметр]=sa2013-03-14 Период "после 15 марта 2013 года" совпадает, поскольку начинается после 14 марта 2013 года
Период "после 21 января 2013 года" не совпадает, поскольку начинается до 14 марта 2013 года
Период "до 21 января 2013 года включительно" не совпадает, поскольку начинается и завершается до 14 марта 2013 года
Период "с 2013-03-13T12:00 до 2013-03-14T12:00" не совпадает, поскольку начинается до 14 марта 2013 года
Период "с 2013-03-14T12:00 до 2013-03-15T12:00" не совпадает, поскольку начинается до завершения суток 14 марта 2013 года
[parameter]=eb2013-03-14 Период "после 15 марта 2013 года" не совпадает, поскольку начинается после 14 марта 2013 года
Период "после 21 января 2013 года" не совпадает, поскольку начинается до 14 марта 2013 года, но не завершается до этой даты
Период "до 21 января 2013 года включительно" совпадает, поскольку завершается до 14 марта 2013 года
Период "с 2013-03-13T12:00 до 2013-03-14T12:00" не совпадает, поскольку завершается после начала суток 14 марта 2013 года
Период "с 2013-03-14T12:00 до 2013-03-15T12:00" не совпадает, поскольку начинается до завершения суток 14 марта 2013 года

При выполнении поиска по дате и времени сервер по возможности должен учитывать часовые пояса. Если значения параметра и значение элемента не содержат часовой пояс, то должен использоваться местный часовой пояс сервера.

12.26.9 Параметр типа number

Параметр типа number используется для поиска по заданному числовому значению.

Примеры совпадений значения элемента со значением параметра приведены в таблице 361.

Таблица 361

Примеры совпадений значения элемента со значением параметра типа number

Значение параметра Примеры совпадений значения элемента
[параметр]=100 Совпадает, если равно 100 с точностью до 3 значащих цифр, то есть фактически поиск ведется по отрезку [99.5 ... 100.5])
[параметр]=100.00 Совпадает, если равно 100 с точностью до 5 значащих цифр, то есть фактически поиск ведется по отрезку [99.995 ... 100.005])
[параметр]=1e2 Совпадает, если равно 100 с точностью до 1 значащей цифры, то есть фактически поиск ведется по отрезку [50 ... 150])
[параметр]=lt100 Совпадает, если меньше 100
[параметр]=le100 Совпадает, если меньше или равно 100
[параметр]=gt100 Совпадает, если больше 100
[параметр]=ge100 Совпадает, если больше или равно 100
[параметр]=ne100 Совпадает, если не равно 100 с точностью до 3 значащих цифр (то есть не принадлежит отрезку [99.5 ... 100.5])

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

При использовании префиксов gt, lt, ge, le, sa и eb неявно определяемая точность игнорируется и значения параметра трактуются как имеющие произвольно высокую точность. При использовании остальных префиксов точность определяется по числу цифр в значении параметра поиска, исключая ведущие нули. Таким образом, 100 и 1.00e2 имеют три значащие цифры.

12.26.10 Параметр типа quantity

Параметр типа quantity используется для поиска по заданному значению физической величины, имеющему следующие форматы:

Числовой компонент параметра поиска типа quantity может задаваться как в десятичном, так и в экспоненциальном формате.

Примеры запросов на поиск по значению физической величины приведены в таблице 362.

Таблица 362

Примеры запросов на поиск по значению физической величины

Запрос Описание
GET [base]/Observation?value-quantity=5.4|http://unitsofmeasure.org|mg Поиск результатов исследования со значением 5.4(+/- 0.05) mg, где mg - код из системы единиц измерения UCUM (вариант system/code)
GET [base]/Observation?value-quantity=5.40e-3|http://unitsofmeasure.org|g Поиск результатов исследования со значением 0.0054(+/- 0.00005) g, где g - код из системы единиц измерения UCUM (вариант system/code)
GET [base]/Observation?value-quantity=5.4||mg Поиск результатов исследования со значением 5.4(+/- 0.05) mg, где единица измерения mg код, указанный в компоненте code (вариант code), или текст, указанный в компоненте unit (вариант unit)
GET [base]/Observation?value-quantity=5.4 Поиск результатов исследования со значением 5.4(+/- 0.05) безотносительно к единице измерения (вариант value)
GET [base]/Observation?value-quantity=le5.4|http://unitsofmeasure.org|mg Поиск результатов исследования со значением, меньшим или равным 5.4 mg, где mg - код из системы единиц измерения UCUM (вариант system/code)
12.26.11 Параметр типа reference

Параметр типа reference используется для поиска по ссылке на экземпляр ресурса, используя следующие варианты:

Если относительная ссылка разрешается тем же самым адресом, что и абсолютный URL, то при поиске она считается совпадающей с абсолютным URL. Например, при запросе

GET http://example.org/fhir/Observation?subject=Patient/123

должны быть найдены экземпляры ресурса Observation, у которых элемент subject.reference имеет следующие значения:

Аналогично при запросе

GET http://example.org/fhir/Observation?subject=http://example.org/fhir/Patient/123

должны быть найдены экземпляры ресурса Observation, у которых элемент subject.reference имеет следующие значения:

При запросе без указания типа ресурса

GET http://example.org/fhir/Observation?subject=123

должны быть найдены экземпляры ресурса Observation, у которых элемент subject.reference имеет следующие значения:

Некоторые ссылки могут указывать на экземпляры ресурсов нескольких типов, например, элемент Observation.subject может содержать ссылки на экземпляры ресурсов Patient, Group, Device, Location, Organization, Procedure, Practitioner, Medication, Substance, BiologicallyDerivedProduct, NutritionProduct. При этом экземпляры ресурсов разных типов могут иметь одинаковые логические идентификаторы id. Если по заданному значению параметра поиска найдены экземпляры ресурсов нескольких типов, то сервер по возможности должен отклонить такой запрос. Поэтому рекомендуется указывать тип ссылочного экземпляра ресурса в запросе, например:

GET [base]/Observation?subject:Patient/23.

В ряде случаев ограничение типа ссылочного ресурса присутствует в определении параметра поиска. Например, для ресурса Observation определен параметр поиска subject, отображаемый на элемент Observation.subject и допускающий ссылки на экземпляры ресурсов нескольких типов. Наряду с ним определен параметр поиска patient, который также отображается на элемент Observation.subject, но при этом допускает ссылки только на экземпляры ресурса Patient.

Параметры поиска типа reference могут иметь модификатор identifier. В этом случае поиск осуществляется по компоненту identifier ссылки. Например, по запросу

GET [base]/Observation?subject:identifier=http://acme.org/fhir/identifier/mrn|123456

будет осуществлен поиск результатов исследований, у которых элемент subject.identifier.system = http://acme.org/fhir/identifier/mrn, а subject.identifier.value = 123456.

12.26.12 Параметр типа string

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

Если параметр типа string отображается на элемент с комплексным типом данных (содержащим компоненты), то поиск значения параметра должен осуществляться по каждому компоненту типа string. Например, параметр name отображается на элемент Patient.name типа HumanName, содержащий строковые компоненты text, family, given, prefix, suffix. Тогда для успеха поиска по значению параметра name достаточно, чтобы был успешен поиск хотя бы по одному из этих компонентов.

Для ограничения поиска фамилией определен параметр поиска family, отображенный на элемент Patient.name.family.

12.26.13 Параметр типа token

Параметры типа token в основном используются для поиска по элементам, содержащим кодированные значения или идентификаторы. Такие элементы имеют компонент system, идентифицирующий систему кодирования или схему идентификации, и компонент code (код) или value (идентификатор), и поиск ведется по сочетанию этих компонентов. Параметры типа token используются также для поиска по элементам, имеющим типы данных uri, boolean, ContactPoints, id, когда требуется точное совпадение значения параметра со значением элемента.

Значения параметров типа token могут иметь следующие форматы:

Для поиска по значениям элементов, имеющих тип данных id, ContactPoint, uri или boolean, допустим только формат [параметр]=[code].

Применение параметров типа token в зависимости от типа данных элемента представлено в таблице 363.

Таблица 363

Применение параметров типа token в зависимости от типа данных элемента

Тип данных Компонент system Компонент code Примечание
Coding Coding.system Coding.code -
CodeableConcept CodeableConcept.coding.system CodeableConcept.coding.code Для успешного поиска достаточно совпадения хотя бы с одним экземпляром элемента CodeableConcept.coding
Identifier Identifier.system Identifier.value -
ContactPoint не применим ContactPoint.value -
code подразумеваемый code Компонент system определен в привязке элемента к набору значений, но по факту не используется
boolean подразумеваемый boolean Для значений типа boolean подразумевается система кодирования http://terminology.hl7.org/CodeSystem/special-values, но по факту не используется
id не применим id -
uri не применим uri -
string не применим string Иногда параметры типа token отображаются на элементы типа string, чтобы указать поиск по точному совпадению с учетом регистра

Примеры запросов поиска с параметрами типа token приведены в таблице 364.

Таблица 364

Примеры запросов поиска с параметрами типа token

Запрос Описание
GET [base]/Patient?identifier=http://acme.org/patient|2345 Поиск пациентов с идентификатором 2345 в схеме идентификации http://acme.org/patient
GET [base]/Patient?gender=male Поиск пациентов с кодом пола male
GET [base]/Patient?gender:not=male Поиск пациентов, у которых код пола не равно male или отсутствует
GET [base]/Composition?section=48765-2 Поиск медицинских документов, содержащих раздел "Аллергии и побочные реакции" (код 48765-2 в системе кодирования LOINC http://loinc.org)
GET [base]/Composition?section:not=48765-2 Поиск медицинских документов, не содержащих раздел "Аллергии и побочные реакции" (код 48765-2 в системе кодирования LOINC http://loinc.org). Следует иметь в виду, что этот запрос нельзя трактовать как "документ, имеющий раздел, отличающийся от "Аллергии и побочные реакции", поскольку отрицание not применяется к коллекции значений section.code, а не к отдельному экземпляру
GET [base]/Patient?active=true Поиск активных пациентов
GET [base]/Condition?code=http://acme.org/condtions/codes|ha125 Поиск состояний с кодом ha125 в системе кодирования http://acme.org/conditions/codes
GET [base]/Condition?code=ha125 Поиск состояний с кодом ha125 безотносительно к системе кодирования
GET [base]/Condition?code:text=Головная боль Поиск состояний, у которых текстовый компонент элемента code (text или display) имеет значение "Головная боль"
12.26.14 Параметр типа uri

Параметр типа uri используется для поиска по значениям элементов с типом данных uri и url, содержащих идентификаторы URI [27]. Значение параметра должно полностью совпадать со значением элемента с учетом регистра и диакритических знаков. Для поиска с частичным совпадением используются модификаторы above или below. В следующих примерах параметр url имеет тип uri:

GET [base]/ValueSet?url=http://hl7.org/fhir/ValueSet/example-filter

GET [base]/ValueSet?url:below=http://hl7.org/fhir/ValueSet

GET [base]/ValueSet?url:above=http://hl7.org/fhir/ValueSet/example-filter/_history/1

GET [base]/ValueSet?url=urn:oid:1.2.3.4.5

Первый запрос означает поиск наборов значений ValueSet, у которых элемент url имеет значение http://acme.org/fhir/ValueSet/123.

Второй запрос означает поиск наборов значений ValueSet, у которых элемент url начинается со значения http://acme.org/fhir/.

В третьем запросе указано обратное условие: значение элемента url должно быть началом значения параметра запроса.

В четвертом запросе указан поиск по объектному идентификатору. Модификаторы above или below применимы только к адресам URL, но не идентификаторам URN, примером которых служит объектный идентификатор.

12.26.15 Параметры типа special

Некоторые параметры имеют тип special (особые). Способ использования каждого такого параметра уникален. К числу особых параметров относятся:

12.26.16 Параметр типа composite

Значение параметра типа composite представляет собой сочетание нескольких критериев, накладываемых на компоненты элемента комплексного типа. В качестве разделителя используется знак доллара ($). Например, запрос

GET [base]/ Observation?component-code-value-quantity=http://www.radlex.org| RID49679$le1.7

означает поиск экземпляров ресурса Observation, у которых компонент code элемента component имеет значение RID49679 в системе кодирования http://www.radlex.org и компонент value имеет значение, меньшее или равное 1.7.

Модификаторы не применимы к параметрам типа composite.

Примеры запросов поиска с параметрами типа composite приведены в таблице 365.

Таблица 365

Примеры запросов поиска с параметрами типа composite

Запрос Описание
GET [base]/DiagnosticReport?result.code-value-quantity=http://loinc.org|2823-3$gt5.4|http://unitsofmeasure.org|mmol/L Поиск протоколов, содержащих результат исследования калия в крови выше 5.4 mmol/L (код единицы измерения в системе UCUM)
GET [base]/Observation?component-code-value-quantity=http://loinc.org|8480-6$lt60 Поиск результатов исследований, содержащих систолическое давление, меньшее 60. В качестве единиц измерения подразумевается код mmHg в системе UCUM (миллиметры ртутного столба)
GET [base]/Group?characteristic-value=gender$mixed Поиск групп, у которых характеристика gender (пол) имеет текстовой значение mixed (смешанный)
GET [base]/Questionnaire?context-type-value=focus$http://snomed.info/sct|408934002 Поиск заполненных опросников с основной темой "Профилактика потребления психоактивных веществ" (код 408934002 в номенклатуре медицинских терминов SNOMED CT)

12.27 Простые варианты поиска

12.27.1 Общие требования

В простом запросе поиска выделяются следующие компоненты:

Например, поиск экземпляров ресурса Patient с параметром запроса given=value представляет собой запрос к серверу на сравнение значения имени пациента со значением параметра поиска value, используя сравнение строк по умолчанию.

Значения параметров поиска разбираются на компоненты в соответствии с типом параметра.

Способ сравнения определяется типом параметра поиска, модификатором или префиксом. Например, для параметра поиска типа number по умолчанию используется равенство, то есть "{значение элемента} равно {значение параметра поиска})". Модификатор изменяет способ сравнения, к примеру, модификатор not изменяет равенство на его отрицание, а именно, "не({значение элемента} равно {значение параметра поиска})". Наконец, префикс можно использовать для отношений типа "больше", то есть "{значение элемента} равно {значение параметра поиска})". В простом запросе не допускается указание модификатора одновременно с префиксом.

12.27.2 Совпадение и кратность

Многие элементы ресурсов определены как массивы (коллекции) значений. Например, у пациента может быть несколько имен или адресов. Совпадение значения параметра поиска с коллекцией значений считается успешным, если оно имеет место хотя бы с одним экземпляром в составе коллекции. Например, если экземпляр ресурса Patient содержит два экземпляра элемента name, то совпадение считается успешным, если значение параметра совпало хотя бы с одним из них.

12.27.3 Совпадение и субэлементы

Если параметр поиска отображается на элемент с комплексным типом данных (то есть элемент содержит субэлементы), то по умолчанию сравнение значения параметра со значением этого элемента интерпретируется как сравнение с одним или несколькими значениями субэлементов соответствующего типа.

12.27.4 Соединение параметров поиска операторами И и ИЛИ

Параметры поиска могут соединяться операторами И и ИЛИ. Соединение ИЛИ означает объединение найденных множеств, соединение И - пересечение. Соединения осуществляются на уровне экземпляров ресурсов и порядок параметров поиска не имеет значения.

Если в запросе указаны несколько параметров поиска, то они используются для получения пересечения результатов поиска по отдельным параметрам, то есть соединяются с помощью оператора И. При этом параметр поиска с одним и тем же именем может быть указан более одного раза.

Для объединения найденных множеств, то есть соединения с помощью оператора ИЛИ, в параметре поиска следует указать список значений, разделенных запятыми (,). Каждое значение в этом списке может иметь собственный префикс. Например, по запросу

GET [base]/Observation?code=http://loinc.org|8867-4&value-quantity=lt60,gt100

должны быть возвращены результаты измерений частоты сердечных сокращений (код 8867-4 в системе кодирования LOINC), которые имеют значения ниже 60 или выше 100, то есть за пределами нормы для взрослого человека.

Если к параметру поиска применен модификатор, то его действие распространяется на все значения в списке. Например, по запросу

GET [base]/Patient?given:exact=Михаил,Петр

должны быть возвращены экземпляры ресурса Patient, у которых хотя бы один экземпляр элемента given в точности равен "Михаил" или "Петр". В отсутствие модификатора могут быть возвращены также экземпляры ресурса Patient, у которых второй экземпляр элемента given, в котором передается отчество или второе имя, имеет значение "Петрович".

В одном запросе могут быть указаны соединения параметров поиска как с операторами И, так и операторами ИЛИ. Но при этом отсутствует стандартная возможность соединения разноименных параметров поиска с помощью ИЛИ. Для объединения результатов запросов по разноименным параметрам можно выполнить последовательность запросов или передать несколько запросов в одном контейнере пакета Bundle, у которого элемент type имеет значение batch.

12.27.5 Поиск по идентификаторам
12.27.5.1 Общие требования

Ресурс может иметь идентификаторы нескольких типов: логический идентификатор id типа id, бизнес-идентификаторы типа Identifier или канонический url типа canonical. Особенности поиск по идентификаторам этих типов представлены в следующих подпунктах.

12.27.5.2 Логические идентификаторы

Логический идентификатор id экземпляра ресурса служит уникальным ключом этого экземпляра в конкретном контексте (в хранилище экземпляров ресурсов данного типа на сервере, внутри контейнера Bundle). Для поиска по логическому идентификатору используется параметр поиска _id.

Поскольку логический идентификатор уникален в контексте поиска, то поиск по нему всегда возвращает нуль или один экземпляр ресурса. Это функционально эквивалентно простой операции чтения со следующими отличиями:

12.27.5.3 Идентификаторы типа Identifier и ссылки типа Reference

Обычно в составе ресурса присутствует единственный элемент identifier типа Identifier с кратностью 0..*. Для таких типов ресурса определен одноименный параметр поиска identifier типа token.

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

GET [base]/Patient?general-practitioner:identifier=urn:oid:1.2.643.100.3|12345678901

должны быть найдены все пациенты участкового врача со СНИЛС 12345678901.

12.27.5.4 Канонические идентификаторы типа canonical

Ресурсы, называемые каноническими, например, CodeSystem (система кодирования) и ValueSet (набор значений), имеют особую (каноническую) схему идентификации, дополняющую логический идентификатор id и бизнес-идентификаторы identifier. В их структуре присутствуют следующие элементы:

В отличие от версии экземпляра ресурса meta.versionId, присваиваемой сервером автоматически при создании или изменении экземпляра, бизнес-версия присваивается издателем содержания экземпляра канонического ресурса. Рекомендуется использовать схему присваивания Semantic Versioning 2.0.0 (https://semver.org), согласно которой номер бизнес-версии состоит из трех номеров в формате Главный.Младший.Исправление, которые последовательно увеличиваются по следующим правилам:

Ссылка на экземпляр канонического ресурса имеет тип canonical, а не Reference. Ее значение имеет следующие форматы:

Первый формат означает ссылку на последнюю (текущую) бизнес-версию экземпляр канонического ресурса, второй - ссылку на экземпляр с заданной версией.

Параметры поиска по элементам типа canonical имеют тип reference.

12.27.6 Сцепленный поиск

Для уменьшения числа операций запроса ссылочные параметры могут быть "сцеплены" с помощью добавления имени параметра поиска целевого ресурса ссылки с использованием точки (,) в качестве разделителя. Это можно делать рекурсивно, следуя по логическому пути в графе связей экземпляров ресурсов. К примеру, для ресурса DiagnosticReport (протокол исследования) определен параметр поиска subject. Соответствующий ему элемент DiagnosticReport.subject обычно содержит ссылку на экземпляр ресурса Patient, при этом для ресурса Patient определен параметр поиска name, отображаемый на элемент Patient.name. Тогда по запросу

GET [base]/DiagnosticReport?subject.name=иван

должны быть возвращены все протоколы, в которых элемент name субъекта исследования содержит "иван" (с начала элемента либо его компонентов, без учета регистра). Поскольку элемент DiagnosticReport.subject может содержать ссылку на разные типы ресурсов, то можно ограничить сцепленный поиск ресурсом определенного типа. Например, по запросу

GET [base]/DiagnosticReport?subject:Patient.name= иван

должны быть возвращены все протоколы, в которых субъектом является пациент и элемент Patient.name субъекта исследования содержит "иван".

Несмотря на то, что в простых запросах разделитель & означает логическое И, его использование между сцепленными параметрами поиска означает логическое ИЛИ, то есть сцепленные параметры поиска применяются не последовательно, а параллельно. По запросу

GET [base]/DiagnosticReport?subject:Patient.name=иван&subject:Patient.birthday=1970

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

К параметрам, участвующим в сцеплении, не должны применяться модификаторы.

12.27.7 Обратное сцепление

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

GET [base]/Patient?_has:Observation:patient:code=1234-5

должны быть возвращены экземпляры ресурса Patient, на которые есть ссылки из экземпляров ресурса Observation с кодом исследования 1234-5.

Значения параметра _has могут задаваться списком, означающим логическое ИЛИ (например, _has:Observation:patient:code=123,456). Параметр _has может быть указан несколько раз (к примеру, _has:Observation:patient:code=123&_has:Observation:patient:code=456). Хотя разделитель & означает логическое И, его использование между параметрами поиска _has означает логическое ИЛИ, то есть параметры _has применяются не последовательно, а параллельно.

Параметры _has могут быть вложенными. Например, по запросу

GET [base]/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent=UserId

должны быть возвращены экземпляры ресурса Patient, на которые есть ссылки из экземпляров ресурса Observation, являющихся целями ссылок из экземпляров ресурса AuditEvent (регистрируемое событие), у которых элемент agent (участник события) имеет идентификатор UserId.

Параметр _has может использоваться внутри сцепления. По запросу

GET [base]/Encounter?patient._has:Group:member:_id=102

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

К параметрам, участвующим в обратном сцеплении, не должны применяться модификаторы.

12.28 Обработка ошибок

Если сервер не в состоянии выполнить запрос, он может возвратить код статуса HTTP, идентифицирующий ошибку, или может возвратить код статуса HTTP 200 OK и контейнер результата запроса Bundle, в который вложен экземпляр ресурса OperationOutcome, содержащий сведения об ошибке. Код статуса HTTP 403 Forbidden означает, что сервер отказывается выполнить запрос, а другие коды 4xx или коды 5xx означают наличие ошибки какого-либо рода. Если запрос не выполнен, сервер по возможности должен возвратить экземпляр ресурса OperationOutcome, детализирующий причину. Пустой результат запроса ошибкой не является.

12.29 Неподдерживаемые параметры

Сервер может получить запрос с параметрами, которые он не распознает или не поддерживает (вообще или в данном запросе). В общем случае сервер по возможности должен игнорировать неизвестные или неподдерживаемые параметры, поскольку различные компоненты стека HTTP и прокси могут добавить к запросу параметры, которые клиент не в состоянии контролировать. Клиент может определить фактически примененные параметры, анализируя компонент url элемента link контейнера результата запроса Bundle, у которого компонент relation имеет значение self.

Клиент может указать серверу вариант обработки таких параметров с помощью заголовка HTTP Prefer:

Сервер по возможности должен выполнить такое требования, не обязан это делать.

12.30 Стандартные параметры

Для всех типов ресурсов определены стандартные параметры поиска, приведенные в таблице 366.

Таблица 366

Стандартные параметры поиска

Имя Тип Описание Путь
_content string Текстовый поиск по всему содержанию экземпляра ресурса -
_filter special Параметр, предоставляющий более содержательную грамматику поиска -
_has special Ограниченная поддержка обратного сцепленного поиска -
_id token Логический идентификатор ресурса id (не полный URL) Resource.id
_in reference Принадлежность к группе, представленной экземпляром ресурса Group, List или CareTeam Resource.id
_language token Основной язык содержания экземпляра ресурса Resource.language
_lastUpdated date Дата и время последнего изменения содержания экземпляра ресурса Resource.meta.lastUpdated
_list string Все экземпляры ресурсов, идентификаторы id которых перечислены в данном списке -
_profile reference Поиск экземпляров ресурсов с данным значением профиля meta.profile Resource.meta.profile
_query string Пользовательский именованный запрос -
_security token Поиск по значению категории доступа meta.security Resource.meta.security
_source uri Поиск по источнику содержания экземпляра ресурса meta.source Resource.meta.source
_tag token Поиск по тегу метаданных meta.tag Resource.meta.tag
_text string Текстовый поиск по повествовательному содержанию экземпляра ресурса -

12.31 Управление результатами запроса

12.31.1 Общие требования

Для управления результатами запроса на поиск экземпляров ресурса используются параметры, перечисленные в таблице 367.

Таблица 367

Параметры управления результатами поиска

Имя Тип Описание Допустимое значение
_count number Число экземпляров ресурсов на одной странице (при постраничном выводе результатов запроса) Неотрицательное целое число
_elements token Список элементов ресурса, которые должны быть возвращены в теле ответа. Обязательные элементы возвращаются, даже если не указаны в этом перечислении -
_include string Включение в результат поиска ссылочных экземпляров SourceType:searchParam(:targetType)
_maxresults number Максимальное число возвращаемых результатов поиска Неотрицательное целое число
_offset number Число пропускаемых экземпляров ресурса (при постраничном выводе результатов запроса) Неотрицательное целое число
_revinclude string Включение в результат поиска экземпляров ресурсов, содержащих ссылки на найденные экземпляры SourceType:searchParam(:targetType)
_score token Добавление оценки релевантности запросу true | false
_sort string Сортировка результатов поиска Имя параметра поиска, допустимого для данного ресурса. Для сортировки по убыванию перед именем параметра должен быть указан знак минуса (-)
_summary string Возвращение элементов краткого содержания (для ресурсов, где они определены) true | false (по умолчанию) text | data | count
_total token Точность подсчета общего числа результатов поиска none | estimate | accurate

За исключением параметров _include и _revinclude, параметры управления результатами поиска должны присутствовать в единственном экземпляре. Сервер может управлять результатами поиска в соответствии с первым экземпляром параметра или выдать сообщение об ошибке.

12.31.2 Параметр _sort (сортировка)

Параметр _sort задает сортировку найденных экземпляров ресурса внутри контейнера Bundle. Его значение представляет собой список параметров поиска, по которым должна выполняться сортировка. Параметры перечисляются через запятую в порядке уровня сортировки. Например, по запросу

GET [base]/Observation?_sort=status,-date,category

должен быть возвращен контейнер результатов запроса Bundle, в котором найденные экземпляры ресурса Observation отсортированы в порядке возрастания статуса (лексикографически), затем в порядке убывания даты исследования, затем по категории исследования. Префикс '-' перед именем параметра поиска означает сортировку по убыванию.

Сортировка по параметрам поиска типа string по возможности должна выполняться без учета регистра.

В тех случаях, когда указана сортировка по параметру поиска типа date, отображаемому на элемент комплексного типа (например, Period), способ сортировки оставляется на усмотрение сервера. Например, сортировка может осуществляться по началу периода, указанному в компоненте start.

12.31.3 Параметр _total (общее число найденных экземпляров ресурса)

Общее число найденных экземпляров ресурса может возвращаться в элементе total контейнера результатов запроса Bundle. В это число не входят экземпляры добавленных ссылочных ресурсов.

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

Таблица 368

Допустимые значения параметра _total

Значение Описание
none Подсчет найденных экземпляров ресурса не требуется
estimate Достаточна грубая оценка числа найденных экземпляров ресурса
accurate Требуется точное число найденных экземпляров ресурса

Сервер может игнорировать параметр _total или какие-либо из его значений.

12.31.4 Параметры _count (размер страницы вывода) и _offset (смещение от начала вывода)

Использование параметров _count и _offset для управления постраничным выводом результатов запроса описано в подразделе 12.22.

Для возвращения наиболее позднего экземпляра ресурса, удовлетворяющего заданным критериям, может использоваться сочетание параметров _sort и _count. Для этого в запросе поиска по этим критериям можно задать сортировку по дате изменения в порядке обратной хронологии и указать _count=1.

12.31.5 Параметр _maxresults (максимальное число возвращаемых результатов поиска)

Параметр _maxresults задает максимальное число возвращаемых результатов поиска. Если сервер поддерживает применение этого параметра, то он должен возвратить его в компоненте url элемента link контейнера результатов поиска Bundle, у которого компонент relation имеет значение self.

Значение параметра _maxresults не оказывает никакого влияния на значение элемента Bundle.total, поскольку этот элемент содержит общее число экземпляров ресурса, удовлетворяющих критериям поиска.

Использование параметра _maxresults не отменяет постраничный вывод. Например, в запросе можно указать _maxresults=10&_count=5 для ограничения вывода до двух страниц по пять результатов на каждой.

12.31.6 Параметр _summary (возвращение элементов краткого содержания)

Параметр _summary задает подмножество элементов ресурса, которые должны быть возвращены в контейнере результатов поиска Bundle. Допустимые значения параметра _summary приведены в таблице 369.

Таблица 369

Допустимые значения параметра _summary

Значение Описание
true Возвращение подмножества элементов, помеченных как summary в определении ресурса (см. описание элемента ElementDefinition.isSummary в таблице 126)
text Возвращение только человеко-читаемого значения элемента text, логического идентификатора id, метаданных meta и обязательных элементов верхнего уровня
data Возвращение всего содержания, кроме элемента text
count Возвращение только общего числа найденных экземпляров ресурса
false Возвращение всех элементов экземпляров ресурса

Сервер не обязан возвращать результаты в соответствии с заданным значением параметра _summary. Следует иметь в виду, что сокращенное содержание экземпляра ресурса может быть не пригодно для использования во взаимодействии изменения update. Сервер по возможности должен передать элемент meta.tag со значением SUBSETTED в качестве признака сокращенного содержания.

Поскольку для интерпретации результатов поиска важно знать фактически примененные параметры, то независимо от значения параметра _summary в контейнере результатов поиска Bundle должен быть возвращен элемент link, у которого компонент relation имеет значение self.

Параметры _include и _revinclude не могут быть указаны, если _summary=text.

12.31.7 Параметр _score (добавление оценки релевантности запросу)

Параметр _score используется для добавления оценки релевантности запросу при недетерминированном поиске. Допустимые значения параметра _score приведены в таблице 370.

Таблица 370

Допустимые значения параметра _score

Значение Описание
true Добавлять оценку релевантности запросу
false Не добавлять оценку релевантности запросу (по умолчанию)

Пример оценки релевантности запросу приведен в подразделе 12.32.

12.31.8 Параметр _elements (вывод заданных элементов ресурса)

В параметре _elements перечисляются имена верхнеуровневых элементов ресурса, которые должны быть возвращены в теле ответа. Каждое имя должно быть базовым, без указания признака варианта типа данных [x]. Например, имя value допустимо, а имена value[x] и valueQuantity - нет.

Сервер по возможности должен возвратить запрошенные элементы содержания, логический идентификатор id, а также обязательные элементы, отсутствующие в списке, и элемент meta.tag со значением SUBSETTED в качестве признака сокращенного содержания.

Если элементы, перечисленные в значении параметра _elements, имеют префикс типа ресурса, например, _elements=Patient.gender, то сервер по возможности должен распространить ограничение на возвращаемые элементы на все экземпляры ресурсов, вложенные в контейнер результата поиска Bundle, в том числе на включенные ссылочные экземпляры.

12.31.9 Параметры _include и _revinclude (включение ссылочных экземпляров ресурсов)

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

Параметр _include используется для включения экземпляров ресурсов по ссылкам, содержащимся в найденных экземплярах (прямые ссылки). Параметр _revinclude используется для включения экземпляров ресурсов, ссылающихся на найденные экземпляры (обратные ссылки).

Значение этих параметров состоят из двух или трех компонентов, разделенных двоеточием (:).

[_include|_revinclude]=[ресурс]:где [ресурс] - тип ресурса, а символ * (звездочка) указывает все параметры поиска типа reference, поддерживаемые сервером для этого типа ресурса и параметров _include или _revinclude. Список этих параметров может не совпадать с общим списком параметров типа reference, поддерживаемые сервером для этого типа ресурса.

[_include|_revinclude]=[ресурс]:[параметр]

где [ресурс] - тип ресурса, а [параметр] - параметр поиска типа reference.

[_include|_revinclude]= [ресурс]:[параметр]:[целевой тип]

где [ресурс] - тип ресурса, [параметр] - параметр поиска типа reference, а [целевой тип] - целевой тип ресурса.

Параметры _include и _revinclude не могут иметь список значений, но могут повторяться с разными значениями в одном запросе поиска.

Добавленный экземпляр ресурса содержится в отдельной записи entry контейнера результата поиска Bundle. При этом элемент entry.search.mode имеет значение include, чтобы отличить добавленный экземпляр от найденного.

Для добавления ссылочных экземпляров ресурсов к уже добавленным экземплярам используется дополнительный параметр _include или _revinclude с модификатором iterate.

Например, по запросу

GET [base]/DiagnosticReport?_include=DiagnosticReport:result&_include:iterate=Observation:encounter

должны быть возвращены найденные экземпляры ресурса DiagnosticReport, экземпляры ресурса Observation, на которые ссылаются элементы DiagnosticReport.result, и экземпляры ресурса Encounter, на которые ссылаются элементы Observation.encounter добавленных экземпляров ресурса Observation. (В данном случае имена параметров поиска, указанных в параметрах _include, совпадают с именами соответствующих им элементов.)

Возможность использования модификатора iterate и предельная глубина вложенности параметров _include или _revinclude определяется сервером для каждого типа ресурса.

12.32 Соответствие результата запросу

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

"entry": {

"score": 0.45,

"resource": {

"resourceType": "Patient",

... patient data ...

}

}

Оценка представляет собой десятичное число между 0 и 1, где 1 - точное соответствие, а 0 - отсутствие соответствия.

12.33 Именованный поиск

Параметр _query идентифицирует именованную операцию, реализующую особую логику поиска. Для нее могут быть определены дополнительные параметры.

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

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

Для определения именованного запроса используется экземпляр ресурса OperationDefinition, например:

<description value= формула Поиск пациентов по палатам интенсивной терапии формула />

Варианты вызова именованного запроса current-high-risk приведены в таблице 371.

Таблица 371

Варианты вызова именованного запроса current-high-risk

Запрос Описание
GET [base]/Patient?_query=current-high-risk Запрос без дополнительных параметров
GET [base]/Patient?_query=current-high-risk&ward=Location/A1 Запрос с параметром ward, содержащим ссылку на палату интенсивной терапии, идентифицируемую экземпляром ресурса Location/A1
GET [base]/Patient?_query=current-high-risk&birthdate=ge1970-01-1 Запрос без параметра ward, но с дополнительным параметром birthdate (дата рождения), определенным для ресурса Patient. Сервер по возможности должен применять параметры, определенные для типа соответствующего типа ресурса, но может их игнорировать
GET [base]/Patient?_query=current-high-risk&birthdate=ge1970-01-01&ward=Location/A1 Запрос с параметром ward и дополнительным параметром birthdate, определенным для ресурса Patient. Параметры запроса не являются упорядоченными, поэтому параметр ward может быть указан в любом месте строки параметров поиска

12.34 Актуальность результатов запроса

Результаты операции поиска актуальны только на момент ее выполнения. Это особенно важно иметь в виду при постраничном выводе результатов, если каждая страница формируется в момент ее запроса, а не заранее.

12.35 Отображение типов данных на типы параметров

Отображение типов данных на типы параметров приведено в таблице 372.

Таблица 372

Отображение типов данных на типы параметров

Тип данныхТип параметра
numberdatereferencequantityuristringtoken
Простые типы
base64BinaryНе используется при поиске
booleanНетНетНетНетНетНетДа, допустимые значения true|false)
canonicalНетНетДаНетДаНетДа
codeНетНетНетНетНетНетДа
dateНетДаНетНетНетНетНет
dateTimeНетДаНетНетНетНетНет
decimalДаНетНетНетНетНетНет
idНетНетНетНетНетНетДа
instantНетДаНетНетНетНетНет
integerНетНетНетНетНетНетНет
markdownНе используется при поиске
oidСм. тип данных uri
positiveIntСм. тип данных integer
stringНетНетНетНетНетДаДа
timeНе используется при поиске
unsignedIntСм. тип данных integer
uriНетНетДаНетДаНетНет
urlСм. тип данных uri
uuidСм. тип данных uri
Комплексные типы
AddressНетНетНетНетНетДа (поиск по строковым компонентам адреса)Нет
AgeНетНетНетДаНетНетНет
AnnotationНе используется при поиске
AttachmentНе используется при поиске
CodeableConceptНетНетНетНетНетНетДа
CodeableReferenceНе используется при поиске
CodingНетНетНетНетНетНетДа
CountНе используется при поиске
ContactPointНетНетНетНетНетНетДа
DistanceНе используется при поиске
DurationНетНетНетДаНетНетНет
HumanNameНетНетНетНетНетДа (поиск по строковым компонентам именования)Нет
IdentifierНетНетНетНетНетНетДа
MoneyНетНетНетДаНетНетНет
PeriodНетДаНетНетНетНетНет
QuantityНетНетНетДаНетНетНет
RangeНетНетНетДаНетНетНет
RatioНе используется при поиске
ReferenceНетНетДаНетНетНетНет
SampledDataНе используется при поиске
SignatureНе используется при поиске
TimingНетДаНетНетНетНетНет

12.36 Транзакции

Несколько запросов поиска может быть передано в одном контейнере пакета или транзакции Bundle. Каждый запрос должен выполняться независимо от другого. Ответы на запросы возвращаются в контейнере результата пакета или транзакции Bundle. При успешном выполнении всех запросов поиска контейнер результата пакета или транзакции должен иметь структуру, показанную на рисунке 83.

12.36 Транзакции

Рисунок 83 - Структура контейнера результата пакета или транзакции запросов поиска

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

12.37 Сообщения с запросами поиска

Для передачи запроса поиска в сообщении должен использоваться экземпляр Parameters, у которого элемент name имеет значение url, а элемент valueString содержит часть строки поиска после базового URL (включая знак вопроса). Элемент event заголовка сообщения должен иметь значение search-type, если поиск осуществляется в контексте типа ресурса, или search-system, если поиск осуществляется в контексте системы.

Ответное сообщение может содержать контейнер результатов поиска Bundle или экземпляр ресурса Binary, содержащий двоичное представление результата поиска в ином формате, например, файл формата CSV, упакованный в архив ZIP.

13 Операции

13.1 Общие требования

В REST API определен общий набор взаимодействий (чтение, изменение, поиск и т.д.), обеспечиваемых сервисом хранения и обработки результатов измерений или иным сервером. Они следуют парадигме REST по управлению состоянием с помощью действий Create (создать)/Read (читать)/Update (изменить)/Delete (удалить), совершаемых над совокупностью идентифицированных экземпляров ресурсов. Хотя во многих случаях этого достаточно, существует определенная функциональность, которая более эффективно реализуется с помощью парадигмы, подобной RPC (Remote Procedure Call - удаленный вызов процедуры), согласно которой выполняются (Execute) именованные операции с входными и выходными параметрами,

Операции предпочтительны в следующих случаях:

Операции обладают следующими общими свойствами:

13.2 Выполнение операции

Для вызова операции используется адрес URL, произведенный от конечной точки сервера с помощью указания имени операции, которому предшествует знак доллара ('$'), например:

POST Базовый_URL/Observation/1/$everything

Если в определении операции элемент affectsState (воздействует на состояние) имеет значение false и все параметры операции имеют простые типы данных без расширений, то операцию можно вызвать и с помощью метода GET (или HEAD).

Операции могут вызываться для конечных точек следующих трех типов:

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

По завершении операции возвращается код статуса HTTP, характеризующий результат ее выполнения, и может возвратиться другой экземпляр ресурса Parameters, содержащий один или несколько выходных параметров. Если определен единственный выходной параметр с именем return и максимального кратностью 1, и его типом является ресурс, то результатом операции должен быть экземпляр этого ресурса, без вложения в экземпляр ресурса Parameters. Если выходные параметры отсутствуют, то возвращается пустое тело ответа.

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

Для вызова операция может использоваться метод GET с параметрами в адресной строке, если выполнены следующие условия:

Если тело ответа является экземпляром ресурса Bundle, не имеющим семантику результата поиска, то элемент Bundle.type должен иметь значение collection и может содержать ссылки на страницы результата.

13.3 Операции без параметров

Если операция не имеет входных параметров и не воздействует на состояние сервера, то она может быть вызвана с помощью метода GET, например:

GET [Базовый_URL]/Observation/1/$meta.

Если операция без входных параметров воздействует на состояние сервера, то она должна быть вызвана с помощью метода POST. В этом случае экземпляр ресурса Parameters не передается, поскольку он не может быть пустым. Поэтому при вызове такой операции следует указать, что тело отсутствует, например:

POST [Базовый_URL]/Observation/1/$meta Content-Length: 0.

13.4 Определение операции

Для каждой операция должна быть указана следующая информация:

Для каждого параметра необходимо указать следующую информацию:

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

Машинно-обрабатываемое описание операции представляет собой экземпляр ресурса Operation Definition.

13.5 Синхронное выполнение операции

13.5.1 Адрес конечной точки

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

Адрес URL конечной точки операции зависит от уровня ее выполнения:

13.5.2 Запрос на выполнение операции

Обычно для вызова операции инициируется передача конечной точке операции запроса HTTP POST. Тело запроса содержит экземпляр ресурса Parameters, содержащий список именованных входных параметров. Если входной параметр имеет тип параметра поиска, то в имени параметра могут использоваться модификаторы (например, code:in).

К формату тела запроса операции предъявляются стандартные требования интерфейса REST.

Если элемент affectsState в определении операции имеет значение false и все параметры имеют простые типы данных без расширений, то операцию можно вызвать с помощью метода GET. При этом все значения параметров добавляются к URL в компоненте запроса (то есть после символа '?'), например:

GET [Базовый_URL]/ValueSet/$expand?url=http://hl7.org/fhir/ValueSet/body-site&filter=abdo.

Если параметр операции может повторяться, то при ее вызове с помощью HTTP GET имя параметра следует повторить для каждого его значения. Например, параметр resource (тип ресурса) операции $subset, применяемой к типу ресурса CapabilityStatement (объявление возможностей), имеет кратность 1..*. Тогда для получения подмножества объявления возможностей, включающего в себя сведения о типах ресурсов Person и Organization, следует сделать запрос

GET [Базовый_URL]/CapabilityStatement/$subset?resource=Person&resource=Organization.

Если при вызове операции задается ровно один входной параметр типа Resource (независимо от того, определены ли другие необязательные параметры), то операцию можно вызвать с помощью метода POST, указав входной экземпляр ресурса в теле запроса (при этом в URL не должно быть никаких параметров).

Сервер может поддерживать задание входных параметров, используя формат multi-part/form-data [40], что может оказаться полезным при отладке операций с использованием HTML-форм.

13.6 Результат выполнения операции

Если операция выполнена успешно, возвращается статус HTTP с кодом 2xx или 303 See Other. Другие значения кодов 3xx следует воспринимать, как признак ошибки выполнения операции и клиенту может потребоваться новый вызов, если он в состоянии обработать перенаправление (например, на страницу аутентификации). Коды статуса HTTP 4xx или 5xx означают ошибку и в этом случае должен быть возвращен экземпляр ресурса OperationOutcome с детальными сведениями об ошибке.

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

В случае единственного выходного параметра типа Resource с именем return вместо экземпляра ресурса Parameters возвращается экземпляр ресурса другого типа.

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

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

13.7 Асинхронное выполнение операции

13.7.1 Начальный запрос

При асинхронном выполнении начальный запрос операции передается так же, как при синхронном, только в нем должны быть указаны заголовок Accept, определяющий формат представления возвращаемых экземпляров ресурсов (application/xml или application/json), и заголовок Prefer со значением respond-async.

13.7.2 Успешный прием начального запроса

При успешном приеме начального запроса должен быть возвращен код статуса HTTP 202 Accepted и заголовок Location с абсолютным адресом URL конечной точки, которая должна опрашиваться для получения статуса и результата обработки запроса. В теле ответа может быть возвращен экземпляр ресурса OperationOutcome, содержащий какую-либо дополнительную информацию.

13.7.3 Ошибка приема начального запроса

При ошибке приема начального запроса (например, указан неподдерживаемый параметр поиска) должен быть возвращен код статуса HTTP 4XX или 5XX и экземпляр ресурса OperationOutcome с описанием ошибки.

13.7.4 Отмена начального запроса

После получения ответа об успешном приеме начального запроса клиент может отменить обработку запроса, передав запрос HTTP DELETE по адресу конечной точки, возвращенному в заголовке Location. Если после отмена начального запроса клиент направит на этот адрес новый запрос, то сервер должен возвратить код статуса HTTP 404 Not Found и экземпляр ресурса OperationOutcome с описанием ошибки.

Если запрос отмены обработан успешно, то сервер должен возвратить код статуса HTTP 202 Accepted и может возвратить в теле ответа экземпляр ресурса OperationOutcome, содержащий какую-либо дополнительную информацию. При ошибке обработки запроса отмены сервер должен возвратить код статуса HTTP 4XX или 5XX и может возвратить в теле ответа экземпляр ресурса OperationOutcome, содержащий информацию об ошибке.

13.7.5 Запрос статуса обработки
13.7.5.1 Общие требования

После получения ответа об успешном приеме начального запроса клиент может запросить статус обработки, передав запрос HTTP GET по адресу конечной точки, возвращенному в заголовке Location. Клиент должен придерживаться экспоненциального увеличения интервала между последовательными запросами статуса. Сервер может передать в заголовке Retry-After рекомендуемый интервал в секундах или рекомендуемые дату и время следующего запроса. Сервер по возможности должен вести статистику запросов статуса, получаемых от данного клиента, и при повышенной частоте запросов может в дополнение к заголовку Retry-After возвратить код статуса HTTP 429 Too Many Requests, а также экземпляр ресурса OperationOutcome, содержащий поясняющую информацию. При повторении частой передачи запроса статуса сервер может возвратить код статуса HTTP 429 Too Many Requests и отменить дальнейшую обработку начального запроса.

13.7.5.2 Ответ "в процессе"

Если обработка начального запроса продолжается, то сервер должен возвратить код статуса HTTP 202 Accepted и может возвратить заголовок X-Progress с текстовым описанием стадии обработки длиной до 100 символов, например, указать процент завершения обработки или более общий статус "в процессе".

13.7.5.3 Ответ "ошибка"

Если при обработке запроса статуса возникла ошибка, то сервер должен возвратить код статуса HTTP 4XX или 5XX и по возможности должен возвратить в теле ответа экземпляр ресурса OperationOutcome с описанием ошибки. Если ошибка возникла на инфраструктурном уровне и формирование экземпляра ресурса OperationOutcome не представляется возможным, то сервер может передать информацию об ошибке в ином формате и указать это формат в заголовке Content-Type.

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

13.7.5.4 Ответ "обработка завершена"

При завершении обработки начального запроса, даже в случае, если она была аварийно прекращена, сервер должен возвратить код статуса HTTP 200 OK и экземпляр контейнера Bundle типа batch-response. В элементе Bundle.entry[0].response по возможности должны быть возвращен код результата обработки и дополнительная информация, например, описании возникшей ошибки. В элементе Bundle.entry[0].resource может быть возвращен экземпляр ресурса, представляющий собой результат выполнения операции. Если в результате выполнения операции было создано, изменено или найдено несколько экземпляров ресурсов, то элемент Bundle.entry[0].resource может содержать контейнер Bundle соответствующего типа, в который вложены эти экземпляры.

13.8 Операции с системами кодирования

13.8.1 Операция $lookup
13.8.1.1 Общие сведения

Если на вход операции $lookup задана пара <система кодирования, код> или значение типа Coding, то операция возвратит детальные сведения о кодированном понятии, включая определение, статус, обозначения и свойства. Обязательными параметрами является или пара <система кодирования, код>, или значение типа Coding. Остальные параметры необязательны. Операция является идемпотентной. Ее параметры представлены в таблице 373.

Таблица 373

Параметры операции $lookup

ИмяКратностьТип данныхОписание
Входные параметры
code0..1codeКод, для которого требуется найти данные. Если код указан, обязательно должна быть указана система кодирования
system0..1uriСистема кодирования, из которой берется код. Если система кодирования указана, обязательно должен быть указан код
version0..1stringВерсия системы кодирования, если она предусмотрена
property.subproperty.code1codeИмя вложенного свойства
property0..*codeИмя свойства, значение которого должно быть возвращено в выходных параметрах. Если ни одно имя свойства не указано, сервер определяет список возвращаемых свойств по своему усмотрению.
Для всех систем кодирования определены следующие свойства:
url (уникальный идентификатор);
name (имя);
version (версия);
display (значение для вывода);
definition (описание);
designation (обозначение);
parent (код родительского понятия);
child (код дочернего понятия).
Для обозначения designation указывается также язык обозначения).
Некоторые из свойств возвращаются на одном уровне с именем, а остальные (кроме языка обозначения) в группе элементов property
coding0..1CodingЗначение типа Coding, для которого требуется найти данные. Если оно указано, то параметры code и system должны отсутствовать
date0..1dateTimeДата, на которую должна быть возвращены данные о кодированном понятии. Обычно данные ищутся на текущую дату, но иногда бывает важно знать, какими они были раньше
displayLanguage0..1codeЯзык, на котором должны быть представлены данные
Выходные параметры
name1stringНаименование системы кодирования
version0..1stringВерсия системы кодирования, для которой возвращены данные
display1stringПредпочтительное значение понятия для вывода
designation0..*Дополнительное обозначение понятия
designation.language0..1codeЯзык обозначения
designation.use0..1CodingКод, указывающий назначение обозначения
designation.value1stringТекстовое значение обозначения
property0..*-Свойство, содержащее дополнительные данные о коде, включая статус
property.code1codeИмя свойства
property.value0..1code | Coding | string | integer | boolean | dateTime | decimalМашиночитаемое значение свойства (например, code для свойства с кодированным значением)
property.description0..1stringЧеловеко-читаемое значение свойства (например, display для свойства с кодированным значением)
property.subproperty0..*-Вложенное свойство (используется в основном для групп отношений в системе кодирования SNOMED CT))
property.subproperty.value1code | Coding | string | integer | boolean | dateTime | decimalМашиночитаемое значение вложенного свойства (например, code для вложенного свойства с кодированным значением)
property.subproperty.description0..1stringЧеловеко-читаемое значение вложенного свойства (например, display для вложенного свойства с кодированным значением)
13.8.1.2 Примеры

Запрос на поиск данных о коде DSG из системы кодирования с url = http://terminology.hl7.org/CodeSystem/v2-0203:

https://hapi.fhir.org/baseR5/CodeSystem/$lookup?system=http://terminology.hl7.org/CodeSystem/v2-0203&code=DSG

Ответ (код найден):

HTTP 200 OK

[заголовки]

{

"resourceType": "Parameters",

"parameter": [ {

"name": "name",

"valueString": "Тип идентификатора"

}, {

"name": "version",

"valueString": "3.0.0"

}, {

"name": "display",

"valueString": "Группа исследований"

}, {

"name": "abstract",

"valueBoolean": false

}, {

"name": "property",

"part": [ {

"name": "code",

"valueCode": "v2-concComment"

}, {

"name": "value",

"valueString": "Пример: группа лучевых исследований"

} ]

}, {

"name": "property",

"part": [ {

"name": "code",

"valueCode": "status"

}, {

"name": "value",

"valueString": "N"

} ]

} ]

}

Ответ: код не найден

HTTP 404 Not Found

[заголовки]

{

"resourceType": "OperationOutcome",

"text": {

"status": "generated",

"div": "<div xmlns="http://www.w3.org/1999/xhtml">

Operation Outcome

<table border="0"><td style="font-weight: bold;">ERROR[]HAPI-1738: Unable to find code[null] in system[null]
"

},

"issue": [ {

"severity": "error",

"code": "processing",

"diagnostics": "HAPI-1738: Unable to find code[null] in system[null]"

} ]

}

13.8.2 Операция $validate-code
13.8.2.1 Общие сведения

Операция $validate-code выполняет проверку принадлежности кода к системе кодирования. Если она вызывается на уровне системы или типа ресурса, то должен быть указан один из параметров url или codeSystem. Операция возвращает результат проверки (true/false), сообщение об ошибке и рекомендованное человеко-читаемое значение кода.

При вызове операции клиент должен предоставить один и только один параметр, задающий код (code+system, coding, or codeableConcept). Другие параметры (включая версию version и человеко-читаемое значение кода display) не обязательны.

Варианты URL вызова:

[Базовый_URL]/CodeSystem/$validate-code

[Базовый_URL]/CodeSystem/[идентификатор]/$validate-code

Операция является идемпотентной. Ее параметры представлены в таблице 374.

Таблица 374

Параметры операции $validate-code

ИмяКратностьТип данныхОписание
Входные параметры
url0..1uriКанонический адрес URL системы кодирования
codeSystem0..1CodeSystemЭкземпляр системы кодирования, предоставленный как параметр операции
code0..1codeКод, требующий валидации
version0..1stringВерсия системы кодирования, если она предусмотрена
display0..1stringЧеловеко-читаемое значение кода. Если параметр display указан, должен быть указан параметр code
coding0..1CodingЗначение типа Coding, требующее валидации. Его компонент system должен идентифицировать ту же систему кодирования, что и элемент url
codeableConcept0..1CodeableConceptЗначение типа CodeableConcept, требующее валидации. Сервер должен возвратить true, если хотя бы одно из кодируемых значений, указанных в компоненте coding, принадлежит системе кодирования, указанной в элементе url
date0..1dateTimeДата, на которую должен быть валидирован код. Обычно валидация осуществляется на текущую дату, но иногда бывает важно валидировать код по более раннему содержанию системы кодирования
abstract0..1booleanЕсли этот параметр имеет значение true и валидация осуществляется для системы кодирования, в которой понятия имеют признак abstract, указывающий, может ли понятие быть выбрано пользователем, то сервер должен рассматривать эти понятия как действительные. Если этот параметр имеет значение true, то он должен их рассматривать как недействительные
display-Language0..1codeЯзык представления человеко-читаемого представления кода (если требуется валидация свойства display)
Выходные параметры
result1booleanЗначение true, если кодируемое понятие успешно валидировано
message0..1stringЕсли result = false, то этот элемент описывает детали ошибки валидации. Если result = true, то в этом элементе могут быть переданы указания и предупреждения
display0..1stringЧеловеко-читаемое значения понятия, если требуется представить результат валидации пользователю
13.8.2.2 Валидация значения типа code

Запрос на валидацию кода DSG в системе кодирования с url = http://terminology.hl7.org/CodeSystem/v2-0203:

https://hapi.fhir.org/baseR5/CodeSystem/$validate-code?url=http://terminology.hl7.org/CodeSystem/v2-0203&code=DSG

Ответ (код валиден):

HTTP 200 OK

[заголовки]

{

"resourceType": "Parameters",

"parameter": [ {

"name": "result",

"valueBoolean": true

}, {

"name": "display",

"valueString": "Группа исследований"

} ]

}

Ответ (код не найден):

HTTP 200 OK

[заголовки]

{

"resourceType": "Parameters",

"parameter": [ {

"name": "result",

"valueBoolean": false

}, {

"name": "message",

"valueString": "Unable to validate code http://terminology.hl7. org/CodeSystem/v2-0203#DSG1 - Code is not found in CodeSystem: http:// terminology.hl7.org/CodeSystem/v2-0203"

} ]

}

Если в строке запроса указан дополнительный параметр display, например:

https://hapi.fhir.org/baseR5/CodeSystem/$validate-code?url=http://terminology.hl7.org/CodeSystem/v2-0203&code=DSG&display=Группа%20исследований

то проверяется валидность пары <code, display>.

Если запрос неправилен, например, указан ошибочный параметр, то возвращается экземпляр ресурса OperationOutcome с сообщением об ошибке следующего вида:

HTTP 400 Bad Request

[заголовки]

{

"resourceType": "OperationOutcome",

"text": {

"status": "generated",

"div": "<div xmlns="http://www.w3.org/1999/xhtml">

Operation Outcome

<table border="0"><td style="font-weight: bold;">ERROR[]HAPI-0908: Either CodeSystem ID or CodeSystem identifier must be provided. Unable to validate.</ table>
"

},

"issue": [ {

"severity": "error",

"code": "processing",

"diagnostics": "HAPI-0908: Either CodeSystem ID or CodeSystem identifier must be provided. Unable to validate."

} ]

}

13.8.2.3 Валидация значения типа Coding

Запрос на валидацию кода 85.1 в системе кодирования с url = https://rosstat.gov.ru/opendata/7708234640-okved2:

POST localhost:8080/fhir/CodeSystem/$validate-code

[другие заголовки]

{

"resourceType": "Parameters",

"parameter": [

{

"name": "url",

"valueUri": "https://rosstat.gov.ru/opendata/7708234640-okved2"

},

{

"name": "coding",

"valueCoding": {

"system": "https://rosstat.gov.ru/opendata/7708234640-okved2",

"code": "85.1",

"display": "Образование общее"

}

}

]

}

Ответ (код валиден):

HTTP/1.1 200 OK

[другие заголовки]

{

"resourceType": "Parameters",

"parameter": [

{

"name": "result",

"valueBoolean": true

},

{

"name": "display",

"valueString": "Образование общее"

}

]

}

Ответ (код не соответствует текстовому значению):

HTTP/1.1 200 OK

[другие заголовки]

{

"resourceType": "Parameters",

"parameter": [

{

"name": "result",

"valueBoolean": false

},

{

"name": "message",

"valueString": "Unknown code {https://rosstat.gov.ru/opendata/7708234640- okved2}85.1 - Concept Display : Образование"

}

]

}

13.8.2.4 Валидация значения типа CodeableConcept

Запрос на валидацию значения типа CodeableConcept, содержащего коды Yes и Y в системе кодирования с url = http://terminology.hl7.org/CodeSystem/v2-0532:

POST localhost:8080/fhir/CodeSystem/$validate-code

[заголовки]

{

"resourceType": "Parameters",

"parameter": [

{

"name": "url",

"valueUri": "http://terminology.hl7.org/CodeSystem/v2-0532"

},

{

"name": "codeableConcept",

"valueCodeableConcept": {

"coding": [

{

"code": "Yes",

"display": "Да"

},

{

"code": "Y",

"display": "Yes"

}

]

}

}

]

}

Ответ (код валиден):

HTTP/1.1 200 OK

[заголовки]

{

"resourceType": "Parameters",

"parameter": [

{

"name": "result",

"valueBoolean": true

},

{

"name": "display",

"valueString": "Образование общее"

}

]

}

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

Ответ (код не валиден):

HTTP/1.1 200 OK

[заголовки]

{

"resourceType": "Parameters",

"parameter": [

{

"name": "result",

"valueBoolean": false

},

{

"name": "message",

"valueString": "Unknown code {https://rosstat.gov.ru/ opendata/7708234640-okved2}85.99 - Concept Display : Образование"

}

]

}

Ответ (ошибка вызова):

HTTP/1.1 400 Bad Request

[заголовки]

{

"resourceType": "OperationOutcome",

"text": {

"status": "generated",

"div": "<div xmlns="http://www.w3.org/1999/xhtml">

Operation Outcome

<table border="0"><td style="font-weight: bold;">ERROR</ td>[]
Coding.system 'https://rosstat.gov.ru/
opendata/7708234640-okved3' does not equal with CodeSystem.url 'https://rosstat.
gov.ru/opendata/7708234640-okved2'. Unable to validate.
\n\t\t\t
n\t\t\n\t
"

},

"issue": [

{

"severity": "error",

"code": "processing",

"diagnostics": "Coding.system 'https://rosstat.gov.ru/ opendata/7708234640-okved3' does not equal with CodeSystem.url 'https://rosstat. gov.ru/opendata/7708234640-okved2'. Unable to validate."

}

]

}

13.9 Операции с наборами значений

13.9.1 Операция $expand
13.9.1.1 Общие сведения

Операция $expand возвращает раскрытие набора значений, то есть список кодов, которые образуют набор значений в соответствии с его определением, заданным с помощью ресурса ValuSet. Если набор значений сохранен вместе с раскрытием, то она возвращает сохраненное раскрытие. Если набор значений сохранен без раскрытия, то она создает раскрытие динамически.

Если операция вызывается на уровне системы или типа ресурса, то должен быть задан один из входных параметров url, context или valueSet. В ответ возвращается либо экземпляр ресурса ValueSet, описывающий раскрытие, либо экземпляр ресурса OperationOutcome, содержащий сообщение об ошибке.

Если набор значений сохранен вместе с раскрытием, то операция $expand является идемпотентной. Если раскрытие создается динамически, то при повторном вызове результат может измениться. Параметры операции $expand представлены в таблице 375.

Таблица 375

Параметры операции \$expandИмяКратность
Тип данных
ОписаниеВходные параметрыurl0..1
uriКаноническая ссылка на набор значенийvalueSet0..1
ValueSetОпределение набора значений, включенное непосредственно в запросvalueSetVersion0..1
stringВерсия набора значений, использованная при генерации раскрытия набора значенийcontext0..1
uriКонтекст набора значений, то есть ссылка на определение элемента ресурса, содержащее привязку к набору значений. Ссылка должна иметь формат [URL экземпляра ресурса StructureDefinition>#<имя элемента или путь к элементу>]contextDirection0..1
codeНаправление контекста. Допустимые значения: incoming (коды, которые клиент может отправлять серверу с помощью PUT/POST) | outgoing (коды, которые клиент может получать от сервера). В большинстве случаев эти наборы кодов совпадают, но иногда могут различатьсяfilter0..1
string
Текстовый фильтр, применяемый к человеко-читаемым значениям кодов (передаваемым в элементе display) в целях ограничения числа возвращаемых кодов. Способ фильтрации определяется сервером, который может его документировать в элементе TerminologyCapabilities..expansion.textFilter. Типичными примерами фильтрации служат:
- совпадение по началу значения
- использование заполнителей, например %, &, ?
filter0..1stringТекстовый фильтр, применяемый к человеко-читаемым значениям кодов (передаваемым в элементе display) в целях ограничения числа возвращаемых кодов. Способ фильтрации определяется сервером, который может его документировать в элементе TerminologyCapabilities..expansion.textFilter. Типичными примерами фильтрации служат:
- совпадение по началу значения
- использование заполнителей, например %, &, ?
date0..1dateTimeДата, по состоянию на которую должно быть выполнено раскрытие. Если дата указана, то сервер должен использовать определения набора значений и систем кодирования, имевшиеся на эту дату, либо возвратить ошибку, если это не представляется возможным. Обычно раскрытие осуществляется на текущую дату, но иногда требуется получить прошлое состояние набора значений. Трактовка этой даты зависит от реализации
offset0..1integerПоддержка постраничного вывода - с какого места списка значений следует начать вывод (по умолчанию - 0). Место идентифицирует порядковый номер значения (с базой 0), а не номер страницы вывода
count0..1integerЧисло кодов, выводимых на одной странице. Постраничный вывод применяется только к линейным наборам значений. Сервер игнорирует требование постраничного вывода, если набор значений не является линейным. Если count = 0, то это означает, что клиент запрашивает число элементов в раскрытии. В этом случае сервер по возможности должен возвратить размер и для иерархических наборов значений
includeDesignations0..1booleanПризнак включения обозначений (designation) в результат раскрытия набора значений
designation0..*stringСтрока в формате токена (system|code), задающая использование (use) или язык (language) обозначения, которое должно быть включено в результат раскрытия набора значений. Если язык не задан, то сервер возвращает обозначения по своему усмотрению
includeDefinition0..1booleanПризнак включения описания в результат раскрытия набора значений
activeOnly0..1booleanПризнак включения неактивных понятий в раскрытие набора значений. Если в определении набора значений указано, что неактивные понятия включены в него, то с помощью этого параметра можно исключить их из раскрытия. Но если в определении набора значений указано, что неактивные понятия исключены в него, то включить их в раскрытие с помощью этого параметра нельзя
excludeNested0..1booleanПризнак включения дочерних кодов (ValueSet.expansion.contains.contains) в раскрытие набора значений
excludeNotForUI0..1booleanПризнак, что раскрытый набор значений не используется в интерфейсе пользователя. Те наборы значений, что используются в интерфейсе пользователя, могут содержать "абстрактные" коды, которые помогают пользователю в навигации по иерархии кодируемых значений, но сами не могут быть выбраны пользователем. Наборы значений, не используемые в пользовательском интерфейсе, могут быть линейными, не содержащими "абстрактные" коды. Точная трактовка понятия "используется в пользовательском интерфейсе" зависит от системы кодирования и от того, какие коды включаются в набор значений
excludePostCoordinated0..1booleanПризнак исключения пост-координируемых кодов из раскрытия набора значений
displayLanguage0..1codeКод языка, на котором представляется человеко-читаемое значение (display) кода в раскрытии набора значений, то есть язык представления ValueSet.expansion.contains.display
exclude-system0..*canonicalСистема кодирования или ее конкретная версия, исключаемая из раскрытия набора значений. Она задается по правилам канонического URL: [system]|[version]
system-version0..*canonicalВерсия системы кодирования, используемая при раскрытии набора значений (если версия не указана в определении набора значений) Она задается по правилам канонического URL: [system]|[version]
check-system-version0..*canonicalКрайний случай: указывает версию системы кодирования, которую следует использовать. Если в определении набора значений указана другая версия, то вместо возвращения раскрытия должна генерироваться ошибка. Версия системы кодирования задается по правилам канонического URL: [system]|[version]
force-system-version0..*canonicalКрайний случай: указывает версию системы кодирования, которую следует использовать. Если в определении набора значений указана другая версия, то должна использоваться версия, указанная в этом параметре. Она задается по правилам канонического URL: [system]|[version]
Выходные параметры
return1ValueSetРезультат раскрытия набора значений. Сервер по возможности должен воспроизвести все входные параметры в списке элементов ValueSet.expansion.parameter list.
Поскольку это единственный выходной параметр, то он является экземпляром ресурса и поэтому имеет имя return

Возвращаемое раскрытие набора значений должно восприниматься как динамическое, которое может изменяться с течением времени (это зависит от того, как определен набор значений).

Если раскрытие слишком велико, то сервер может возвратить экземпляр ресурса OperationOutcome с кодом ошибки too-costly (слишком затратное). В этом случае клиент может запросить раскрытие набора значений по частям, указывая параметры offset и count. В отличие от запросов, где при постраничной выдаче указываются ссылки на другие страницы, сервер должен пропустить offset кодов и выдать следующие count кодов. Сервер не обязан поддерживать эти параметры, но если поддерживает, то должен обрабатывать оба этих параметра. К иерархическим раскрытиям эти параметры не применимы.

Если сервер не может правильно раскрыть набор значений, поскольку не имеет информации о содержании системы кодирования, указанной в определении набора значений, то он должен возвратить ошибку. Если набор значений не полон, поскольку включает в себя пост-координируемые коды, например, коды производных единиц измерения, то в раскрытие набора значений может быть включено расширение http://hl7.org/fhir/StructureDefinition/valueset-unclosed, указывающее, что раскрытие не является полным.

13.9.1.2 Примеры

Запрос на раскрытие набора значений с идентификатором 95507, применяя фильтр Ye:

http://hapi.fhir.org/baseR4/ValueSet/95507/$expand?filter=Ye

Запрос на раскрытие набора значений по его каноническому URL, применяя фильтр Ye:

http://hapi.fhir.org/baseR4/ValueSet/$expand?url=http://terminology.hl7.org/ValueSet/yndontknow&filter=Ye

Запрос на раскрытие набора значений, включенного в параметры запроса:

POST hapi.fhir.org/baseR5/ValueSet/$expand

[заголовки]

{

"resourceType": "Parameters",

"parameter": [

{

"name": "valueSet",

"resource": {

"resourceType": "ValueSet",

"meta": {

"versionId": "3"

},

"url": "http://terminology.hl7.org/ValueSet/yesnodontknow",

"status": "active",

"compose": {

"include": [

{

"valueSet": [

"http://terminology.hl7.org/ValueSet/v2-0136"

]

},

{

"system": "http://terminology.hl7.org/CodeSystem/data- absent-reason",

"concept": [

{

"code": "asked-unknown",

"display": "Вопрос оставлен без ответа"

}

]

}

]

}

}

}

]

}

Результат запроса:

HTTP 200 OK

[заголовки]

{

"resourceType": "ValueSet",

"id": "95507",

"meta": {

"extension": [ {

"url": "http://hapifhir.io/fhir/StructureDefinition/valueset- expansion-message",

"valueString": "ValueSet was expanded using an expansion that was pre-calculated at 2023-11-14T16:13:25.248+00:00 (00:50:52 ago)"

} ],

"versionId": "1"

},

"url": "http://terminology.hl7.org/ValueSet/yndontknow",

"status": "active",

"compose": {

"include": [ {

"valueSet": [ "http://terminology.hl7.org/ValueSet/v2-0136" ]

}, {

"system": "http://terminology.hl7.org/CodeSystem/data-absent-

reason",

"concept": [ {

"code": "asked-unknown",

"display": "Вопрос оставлен без ответа"

} ]

} ]

},

"expansion": {

"identifier": "59f11860-03f0-4ce4-8b7e-6349b7366190",

"timestamp": "2023-11-14T17:04:17+00:00",

"total": 1,

"offset": 0,

"parameter": [ {

"name": "offset",

"valueInteger": 0

}, {

"name": "count",

"valueInteger": 1000

} ],

"contains": [ {

"system": "http://terminology.hl7.org/CodeSystem/v2-0532",

"version": "2.1.0",

"code": "Y",

"display": "Yes"

} ]

}

}

13.9.2 Операция $validate-code
13.9.2.1 Общие сведения

Операция $validate-code выполняет проверку принадлежности кода к набору значений. Если она вызывается на уровне системы или типа ресурса, то должен быть указан один из параметров url, context или valueSet. Операция возвращает результат проверки (true/false), сообщение об ошибке и рекомендованное человеко-читаемое значение кода.

При вызове операции клиент ДОЛЖЕН предоставить один и только один параметр, задающий код (code+system, coding, or codeableConcept). Другие параметры (включая версию version и человеко-читаемое значение кода display) не обязательны.

Варианты URL вызова:

[Базовый_URL]/ValueSet/$validate-code

[Базовый_URL]/ValueSet/[идентификатор]/$validate-code

Операция не является идемпотентной, поскольку содержание набора значений может быть динамическим. Ее параметры представлены в таблице 376.

Таблица 376

Параметры операции $validate-code

ИмяКратностьТип данныхОписание
Входные параметры
url0..1uriКанонический адрес URL набора значений
context0..1uriКонтекст набора значений, то есть ссылка на определение элемента ресурса, содержащее привязку к набору значений. Ссылка должна иметь формат [URL экземпляра ресурса StructureDefinition>#<имя элемента или путь к элементу>]
valueSet0..1ValueSetЭкземпляр набора значений, предоставленный как параметр операции
valueSetVersion0..1stringВерсия набора значений
code0..1codeКод, требующий валидации. Если он указан, то должны быть указаны либо система кодирования system, либо контекст context
system0..1uriСистема кодирования, которой принадлежит код
systemVersion0..1stringВерсия системы кодирования, если она предусмотрена
display0..1stringЧеловеко-читаемое значение кода. Если параметр display указан, должен быть указан параметр code. Если параметр display не указан, то сервер может возвратить рекомендуемое значение
coding0..1CodingЗначение типа Coding, требующее валидации
codeableConcept0..1CodeableConceptЗначение типа CodeableConcept, требующее валидации. Сервер должен возвратить true, если хотя бы одно из кодируемых значений, указанных в компоненте coding, принадлежит набору значений
date0..1dateTimeДата, на которую должен быть валидирован код. Обычно валидация осуществляется на текущую дату, но иногда бывает важно валидировать код по более раннему содержанию набора значений
abstract0..1booleanЕсли этот параметр имеет значение true и валидация осуществляется для контекста, в котором понятия имеют признак abstract, указывающий, может ли понятие быть выбрано пользователем, то сервер должен рассматривать эти понятия как действительные. Если этот параметр имеет значение true, то он должен их рассматривать как недействительные
displayLanguage0..1codeЯзык представления человеко-читаемого представления кода (если требуется валидация свойства display)
Выходные параметры
result1booleanЗначение true, если кодируемое понятие успешно валидировано
message0..1stringЕсли result = false, то этот элемент описывает детали ошибки валидации. Если result = true, то в этом элементе могут быть переданы указания и предупреждения
display0..1stringЧеловеко-читаемое значения понятия, если требуется представить результат валидации пользователю
13.9.2.2 Валидация значения типа code

Запрос на валидацию кода Y, принадлежащего системе кодирования http://terminology.hl7.org/CodeSystem/v2-0532, в наборе значений с url = http://hl7.org/fhir/ValueSet/yesnodontknow:

http://hapi.fhir.org/baseR5/ValueSet/$validate-code?url=http://terminology.hl7.org/ValueSet/yndontknow&system=http://terminology.hl7.org/CodeSystem/v2-0532&code=Y

Ответ (код валиден):

HTTP 200 OK

[заголовки]

{

"resourceType": "Parameters",

"parameter": [

{

"name": "result",

"valueBoolean": true

},

{

"name": "display",

"valueString": "Yes"

}

]

}

Ответ (код не валиден или система кодирования не найдена):

HTTP 200 OK

[заголовки]

{

"resourceType": "Parameters",

"parameter": [ {

"name": "result",

"valueBoolean": false

}, {

"name": "message",

"valueString": "Unable to validate code http://terminology.hl7.org/ CodeSystem/v2-0532#Y1 - Unknown code "http://terminology.hl7.org/CodeSystem/ v2-0532#Y1". Code validation occurred using a ValueSet expansion that was pre- calculated at 2023-11-14T16:13:25.248+00:00 (00:35:19 ago)"

} ]

}

Если в строке запроса указан дополнительный параметр display, например:

hapi.fhir.org/baseR5/ValueSet/$validate-code?url=http://terminology.hl7.org/ValueSet/yndontknow&system=http://terminology.hl7.org/CodeSystem/v2-0532&code=Y&display=Yes

то проверяется валидность пары <code, display> в системе кодирования, указанной вместе с кодом.

Если запрос неправилен, например, не указан проверяемый код, то возвращается экземпляр ресурса OperationOutcome с сообщением об ошибке, к примеру:

HTTP 400 Bad Request

[заголовки]

{

"resourceType": "OperationOutcome",

"text": {

"status": "generated",

"div": "<div xmlns="http://www.w3.org/1999/xhtml">

Operation Outcome</ h1><table border="0"><td style="font-weight: bold;">ERROR[]</ td>HAPI-0899: No code, coding, or codeableConcept provided to validate</ td>"

},

"issue": [ {

"severity": "error",

"code": "processing",

"diagnostics": "HAPI-0899: No code, coding, or codeableConcept provided to validate"

} ]

}

13.9.2.3 Валидация значения типа Coding

Запрос на валидацию значения типа Coding, содержащего код Y в системе кодирования http://terminology.hl7.org/CodeSystem/v2-0532, в наборе значений с url = http://hl7.org/fhir/ValueSet/yesnodontknow:

POST hapi.fhir.org/baseR5/ValueSet/$validate-code

[заголовки]

{

"resourceType": "Parameters",

"parameter": [

{

"name": "url",

"valueUri": "http://hl7.org/fhir/ValueSet/yesnodontknow"

},

{

"name": "coding",

"valueCoding": {

"code": "Y",

"system": "http://terminology.hl7.org/CodeSystem/v2-0532",

формула display формула : формула Yes формула

}

}

]

}

Ответы те же, что приведены в 13.9.2.2.

13.9.2.4 Валидация значения типа CodeableConcept

Запрос на валидацию значения типа CodeableConcept, содержащего коды Yes и Y в системе кодирования http://terminology.hl7.org/CodeSystem/v2-0532, в наборе значений с url = http://hl7.org/fhir/ValueSet/yesnodontknow:

POST hapi.fhir.org/baseR5/ValueSet/$validate-code

[заголовки]

{

"resourceType": "Parameters",

"parameter": [

{

"name": "url",

"valueUri": "http://hl7.org/fhir/ValueSet/yesnodontknow"

},

{

"name": "codeableConcept",

"valueCodeableConcept": {

"coding": [

{

"code": "Yes",

"system": "http://terminology.hl7.org/CodeSystem/v2-0532",

"display": "Да"

},

{

"code": "Y",

"system": "http://terminology.hl7.org/CodeSystem/v2-0532",

формула display формула : формула Yes формула

}

]

}

}

]

}

Ответ (второй код валиден):

HTTP 400 Bad Request

[заголовки]

<Parameters

xmlns="http://hl7.org/fhir">

</Parameters

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

Ответы в случае, если все коды не валидны:

HTTP 400 Bad Request

[заголовки]

<Parameters

xmlns="http://hl7.org/fhir">

В ответе последний ошибочный код.

Ответ (ошибка вызова):

HTTP 400 Bad Request

[заголовки]

<OperationOutcome

xmlns="http://hl7.org/fhir">

<div

xmlns="http://www.w3.org/1999/xhtml">

Operation Outcome

ERROR [] HAPI-0899: No code, coding, or codeableConcept provided to validate

14 Обмен сообщениями

14.1 Основные положения

Ресурсы могут использоваться в традиционном контексте обмена сообщениями. Сообщения требования передается приложением-источником приложению-получателю при возникновении некоторого события, обычно события реального мира. Сообщение требования состоит из экземпляра ресурса Bundle, имеющего тип message. В него вложены другие экземпляры ресурсов, первый из которых должен иметь тип MessageHeader (заголовок сообщения). Он содержит код события MessageHeader.code, характеризующий природу сообщения требования, и дополнительные метаданные. Какие другие ресурсы будут включены в сообщение, зависит от типа требования.

Приложение-получатель обрабатывает требование и возвращает одно или несколько ответных сообщений, которые также состоят из экземпляра ресурса Bundle типа message и включенных в него экземпляров ресурсов, первым из них должен быть заголовок сообщения MessageHeader, содержащий раздел результата обработки сообщения, за которым следуют экземпляры ресурсов других типов, составляющие содержание ответа. Среди них выделяются так называемые фокальные экземпляры, перечисленные в элементах MessageHeader.focus. Они являются центральными компонентами сообщения; другие экземпляры, включенные в сообщение, должны прямо или косвенно ссылаться на фокальные экземпляры либо (опять-таки прямо или косвенно) быть ссылочными для фокальных экземпляров.

14.2 Механизмы передачи сообщений

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

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

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

Ключевой характеристикой сообщения является воздействие его содержания.

14.3 Воздействие сообщения

Категории воздействия сообщений показаны на рисунке 84 и представлены в таблице 377.

14.3 Воздействие сообщения

Рисунок 84 - Воздействия сообщений

Таблица 377

Категории воздействия сообщений

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

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

14.4 Влияние на получателей

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

Таблица 378

Соотнесение влияния на получателей с категорией сообщения

Категория Описание
Требование Сообщение следует направлять одному и только одному получателю
Запрос Сообщение может быть направлено одному и только одному получателю
Уведомление Сообщение может быть направлено одному или нескольким получателям

14.5 Шаблоны обмена сообщениями

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

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

14.6 Синхронное взаимодействие

Шаблон синхронного взаимодействия, при котором отправитель передает сообщение и ожидает получение единственного ответа по тому же самому каналу передачи данных, а затем передает следующее сообщение, самый легкий для понимания и управления:

Обычно (хотя не всегда) отправитель ждет ответа на текущее сообщение и только потом посылает новое.

14.7 Асинхронное взаимодействие

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

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

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

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

Отправитель сообщения использует запрос HTTP POST для передачи ресурса Bundle, содержащего сообщение, конечной точке /Bundle, используя адрес uri, указанный в поле MessageHeader.destination.endpoint. Сервер REST принимает ресурс Bundle, сохраняет его как один ресурс и индексирует его по содержанию заголовка MessageHeader.

Для получения сообщений получатель выполняет поиск всех адресованных ему сообщений, принятых сервером с момента последней проверки:

GET [Базовый_URL]/Bundle?message.destination-uri=[rcv]&_lastUpdated=>2021-03-01T02:00:02+01:00.

Получатель обрабатывает все сообщения, полученные в ответ на этот запрос. После обработки сообщения получатель создает ответ на него, меняя местами источник и получателя, и отправляет обратно на сервер.

Для получения этих ответов источник сообщений запрашивает все адресованные ему сообщения, принятые сервером с момента последней проверки:

GET [Базовый_URL]/Bundle?message.destination-uri=[snd]&message.response-id:missing=false&_lastUpdated=>2021-03-03T06:03:522+01:00.

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

14.8 Идентификаторы и штампы времени в заголовке сообщения

Входящее сообщение имеет два идентификатора: Bundle.id и MessageHeader.id. При создании нового сообщения ему должен быть присвоен идентификатор (MessageHeader.id), уникальный для данного потока сообщений. Поскольку потоки сообщений нередко перемешиваются, рекомендуется присваивать глобально уникальный идентификатор. С этой целью можно использовать UUID или ОИД. При каждой передаче сообщения полю Bundle.id следует присваивать новое значение.

Когда получатель получил и обработал сообщение, он возвращает новое сообщение с новым идентификатором, включенное в экземпляр ресурса Bundle, также имеющий новый идентификатор. Заголовок ответного сообщения повторяет идентификатор сообщения требования MessageHeader.id в поле MessageHeader.response.identifier, чтобы система-источник могла соотнести ответ с требованием.

Сообщение имеет 2 важных штампа даты и времени:

Кроме того, сообщение может иметь дополнительные штампы даты и времени в полях meta.lastUpdated или других полях вложенных ресурсов. Их назначение зависит от события, по которому передано сообщение.

14.9 Отсутствие надежного транспорта сообщений

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

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

Таблица 379

Действия по истечении таймаута при надежном транспорте

Категория Действие
Требование Повторно отправить сообщение (с тем же самым Message.id) в экземпляре ресурса Bundle с тем же самым Bundle.id
Запрос Повторно отправить сообщение (с тем же самым Message.id) в экземпляре ресурса с Bundle с другим Bundle.id
Уведомление Повторно отправить сообщение (с тем же самым Message.id) в экземпляре ресурса с Bundle с другим Bundle.id

Если получатель сообщения реализует надежный транспорт, то он должен проверить Bundle.id и MessageHeader.id в кэше ранее полученных сообщений. Предпринимаемые действия зависят от результата проверки (таблица 380).

Таблица 380

Проверка идентификаторов ранее полученных сообщений

Результат проверки Действие
Сообщение с такими Bundle.id и MessageHeader.id еще не получалось Нормальная ситуация, сообщение следует обработать
Сообщение с такими Bundle.id и MessageHeader.id уже было получено Ранее посланный ответ не был получен источником требования (утерян). Он должен быть послан повторно
Сообщение с таким MessageHeader.id уже было получено, но Bundle.id новый Сообщение было отправлено источником повторно для обработки. Сервер может либо выполнить повторную обработку, либо отклонить сообщение
Сообщение с таким Bundle.id уже было получено, но MessageHeader.id новый Ошибка - идентификатор Bundle.id не должен использоваться для другого сообщения

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

Приложения, реализующие надежный транспорт, объявляют длительность надежного кэша в элементе messaging.reliableCache экземпляра ресурса CapabilityStatement, описывающего возможности приложения.

14.10 Вызов операций над ресурсами с помощью сообщений

Сообщение можно следующим образом использовать для вызова операции, определенной в интерфейсе RESTful:

  1. event.system = urn:ietf:rfc:3986;

  2. event.code = адрес URL, указанный в поле.url экземпляра ресурса OperationDefinition, содержащего определение вызываемой операции;

  3. MessageHeader.focus = ссылка на ресурс Parameters;

  4. ресурс Parameters заполняется значениями в соответствии с определением операции;

  1. тот же код события, что и в исходном сообщении;

  2. в поле response заголовка MessageHeader указана ссылка на исходное сообщение и код результата вызова и при наличии - причины ошибки вызова;

  3. MessageHeader.focus = ссылка на ресурс Parameters;

  4. ресурс Parameters заполняется значениями в соответствии с определением ответа на вызов операции;

  5. если в определении операции указано единственное возвращаемое значение, то оно возвращается непосредственно по ссылке из MessageHeader.focus.

Ниже приведен пример:

<Bundle xmlns= формула http://hl7.org/fhir формула >

<system value= формула urn:ietf:rfc:3986"/>

<code value= формула http://hl7.org/fhir/OperationDefinition/ValueSet- expand формула />

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

14.11 Осуществление поиска с помощью сообщений

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

Типы параметров поиска преобразуются в типы данных FHIR в соответствии с таблицей 381.

Таблица 381

Преобразование типов параметров поиска в типы данных

Тип параметра поиска Тип данных
number integer
date dateTime
string string
token string или Coding (выделение системы кодирования system и кода code)
reference uri
composite string
quantity string или Quantity (в случае разбора синтаксиса)
uri uri

Пример:

15 Терминологические ресурсы

15.1 Системы кодирования

15.1.1 Общие требования

Многие элементы ресурсов имеют кодированные значения - строки символов, идентифицирующих определенные "понятия". В настоящем документе кодированные значения всегда трактуются как пары "система" и "код", где "система" идентифицирует систему кодирования, в которой определены "коды". Общий шаблон представления кодированного значения включает в себя следующие компоненты:

Для кодированных значений могут использоваться следующие типы данных:

Кроме того, кодированные значения могут содержаться в элементах следующих типов:

Формальное описание системы кодирования представляется экземпляром ресурса CodeSystem.

15.1.2 Ресурс CodeSystem (система кодирования)
15.1.2.1 Область применения и использования

Ресурс CodeSystem описывает систему кодирования - справочник или классификатор, в том числе иерархический или фасетный.

15.1.2.2 Структура ресурса

Ресурс CodeSystem является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса CodeSystem представлен на рисунке 85 и в таблице 382.

15.1 Системы кодирования

Рисунок 85 - Ресурс CodeSystem

Таблица 382

Состав элементов ресурса CodeSystem

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifierExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
urlКанонический идентификатор системы кодирования, представленный в форме URIuri0..1
identifierОбъектный идентификатор системы кодирования или иной идентификатор, не зависящий от версииIdentifier0..*
versionВерсия системы кодированияstring0..1
versionAlgorithm[x]Алгоритм сравнения версий*0..1
nameИмя системы кодирования (для компьютера)string0..1
titleКраткое описательное имя системы кодирования (для человека)string0..1
statusСтатус версии системы кодирования. Позволяет прослеживать жизненный цикл содержания системы кодирования. Допустимые значения: draft (проект) | active (действует) | retired (действие прекращено) | unknown (статус неизвестен)code1
experimentalПризнак тестовой системы кодированияboolean0..1
dateДата (и необязательное время) публикации системы кодирования. Должна изменяться при смене версии и кода статуса. Кроме того, она должна изменяться, если содержание системы кодирования претерпевает существенные измененияdateTime0..1
publisherНаименование организации или Ф.И.О. издателя, опубликовавшего систему кодированияstring0..1
contactКонтактная информация издателяContact-Detail0..*
descriptionОписание системы кодирования для ее потребителяmarkdown0..1
useContextКонтекст использования системы кодирования (по умолчанию - не ограничен)Usage-Context0..*
jurisdictionЮрисдикция, в которой применяется набор значений. Может задавать страну, регион или иную единицу административного деления. Использование запрещено. Вместо него рекомендуется использовать элемент useContext, у которого компонент code имеет значение http://terminology.hl7.org/CodeSystem/usage-context-type#jurisdiction, а компонент valueCodeableConcept - юрисдикциюCodeable-Concept0..*
purposeНазначение системы кодированияmarkdown0..1
copyrightАвторские права на систему кодированияmarkdown0..1
copyrightLabelТорговая марка и год(ы)string0..1
approvalDateДата утвержденияdate1
lastReviewDateДата последнего пересмотраdate1
effectivePeriodПериод действияPeriod1
topicТема. Использование запрещено. Вместо него рекомендуется использовать элемент useContext, у которого компонент code имеет значение http://terminology.hl7.org/CodeSystem/usage-context-type#topic, а компонент valueCodeableConcept - темуCodeableConcept0..*
authorКонтактная информация автораContactDetail0..*
editorКонтактная информация редактораContactDetail0..*
reviewerКонтактная информация рецензентаContactDetail
endorserКонтактная информация одобрившей стороныContactDetail0..*
relatedArtifactДополнительная документация, библиография и т.д.RelatedArtifact0..*
caseSensitiveПризнак учета регистра при сравнении кодовboolean0..1
valueSetКаноническая ссылка на набор значений, содержащий всю данную систему кодированияcanonical0..1
hierarchyMeaningСемантика иерархии понятий, представленной в данной системе кодирования. Допустимые значения: grouped-by (группировка) | is-a (детализация) | part-of (целое-часть) | classified-with (классификация) | none (отсутствует)code0..1
compositionalПризнак, определяет ли данная система кодирования композиционную (то есть пост-координируемую) грамматикуboolean0..1
versionNeededЭтот признак указывает, что система кодирования не гарантирует постоянство понятия, связанного с кодом, поэтому вместе с кодом всегда следует указывать номер версии системы кодированияboolean0..1
contentКод, указывающий тип содержания системы кодирования. Допустимые значения: not-present (понятия не включены) | example (пример нескольких понятий) | fragment (фрагмент содержания) | complete (полное содержание) | supplement (дополнение)code1
supplementsСсылка на систему кодирования, которую дополняет данный экземпляр ресурса CodeSystem. Чаще всего это используется при переводе системы кодирования на другой языкcanonical0..1
countОбщее число понятий, описанных в данной системе кодирования. Для композиционной системы кодирования способ подсчета определяется организацией, ответственной за ведение системы кодированияunsignedInt0..1
filterФильтр, который может использоваться при образовании набора значений из данной системы кодирования. Фильтрация обычно требует указания дополнительного свойства кода для каждого термина, по которому осуществляется фильтрацияBackboneElement0..*
filter.codeКод, идентифицирующий данный фильтр, когда он используется в элементе ValueSet.compose.include.filtercode1
filter.descriptionОписание, как и почему используется фильтрstring0..1
filter.operatorОператор, который можно использовать в данном фильтре. Допустимые значения: = (Равно) | is-a (Является) | descendent-of (Потомок) | is-not-a (Не является) | regex (Регулярное выражение) | in (Принадлежит) | not-in (Не принадлежит) | generalizes (Обобщает) | exists (Существует)code1..*
filter.valueОписание значения, которое может использоваться в фильтреstring1
propertyСвойство, добавляемое к кодуBackboneElement0..*
property.codeКод, используемый для идентификации свойства. Он используется внутри системы кодирования (в элементе CodeSystem.concept.property.code), а также снаружи, например, при фильтрации свойствcode1
property.uriСсылка на формальное описание смысла свойстваuri0..1
property. descriptionОписание свойства - с какой целью оно определено и как использовать его значениеstring0..1
property.typeТип значения свойства. Допустимые значения: code | Coding | string | integer | boolean | dateTime | decimalcode1
conceptПонятие, включенное в систему кодированияBackboneElement0..*
concept.codeКод - текстовый символ, однозначно идентифицирующий понятие в системе кодированияcode1
concept.displayЧеловеко-читаемая строка, рекомендуемая для представления значения данного кода по умолчаниюstring0..1
concept.definitionФормальное определение понятия. Оно не всегда присутствует в унаследованных системах кодирования, но для новых систем настоятельно рекомендуетсяstring0..1
concept. designationДополнительное представление понятия - на другом языке, синоним и т.д.BackboneElement0..*
concept. designation.languageЯзык обозначения понятияcode0..1
concept.designation.useКод, указывающий, как используется данное обозначение понятияCoding0..1
concept.designation.additionalUseДополнительное использование обозначения понятияCoding0..*
concept.designation.valueТекстовое значение данного обозначенияstring1
concept.propertyЗначение свойства данного понятияBackboneElement0..*
concept.property. codeКод, являющийся ссылкой на CodeSystem.property.codecode1
concept.property. value[x]Значение данного свойства. Допустимые значения: code | Coding | string | integer | boolean | dateTime | decimal*1
15.1.2.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 383.

Таблица 383

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
CodeSystem.versionAlgorithm[x] http://hl7.org/fhir/ValueSet/version-algorithm Расширяемая Алгоритм сравнения версий
CodeSystem.status http://hl7.org/fhir/ValueSet/publication-status Обязательная Статус жизненного цикла системы кодирования
CodeSystem.jurisdiction http://hl7.org/fhir/ValueSet/jurisdiction Расширяемая Страны и регионы, для которых предназначена данная система кодирования
CodeSystem.topic http://hl7.org/fhir/ValueSet/definition-topic Пример Категория системы кодирования, используемая для поиска и фильтрации
CodeSystem.hierarchyMeaning http://hl7.org/fhir/ValueSet/codesystem-hierarchy-meaning Обязательная Семантика иерархии понятий в системе кодирования
CodeSystem. content http://hl7.org/fhir/ValueSet/codesystem-content-mode Обязательная Объем представления содержания системы кодирования в ресурсе CodeSystem
CodeSystem.filter.operator http://hl7.org/fhir/ValueSet/filter-operator Обязательная Вид операции, выполняемой как часть фильтра, основанного на значениях свойств
CodeSystem. property.type http://hl7.org/fhir/ValueSet/concept-property-type Обязательная Тип данных значения свойства
CodeSystem. concept.designation. language http://hl7.org/fhir/ValueSet/languages Обязательная Естественный язык
CodeSystem.concept.designation.use http://hl7.org/fhir/ValueSet/designation-use Расширяемая Детали использования обозначения понятия
CodeSystem.concept.designation.additionalUse http://hl7.org/fhir/ValueSet/designation-use Расширяемая Детали использования обозначения понятия
15.1.2.4 Ограничения ресурса CodeSystem

Ограничения ресурса CodeSystem описаны в таблице 384.

Таблица 384

Ограничения ресурса CodeSystem

Идентификатор Вид Путь Описание Выражение
csd-0 Предупреждение Базовый Элемент name должен содержать машинно-обрабатываемое имя, соответствующее синтаксису идентификатора name.exists() implies name.matches('^A-Z{1,254}$')
csd-1 Правило Базовый Внутри системы кодирования все коды должны быть уникальными concept.exists() implies concept.code.combine(%resource.concept.descendants().concept.code).isDistinct()
cnl-1 Предупреждение CodeSystem.url Строка URL не должна содержать символы | или # - это препятствует обработке канонических ссылок exists() implies matches('^[^|#]+$')
csd-2 Предупреждение Базовый При наличии неявной иерархии следует заполнить элемент hierarchyMeaning concept.concept.exists() implies hierarchyMeaning.exists()
csd-3 Предупреждение Базовый При наличии неявной иерархии следует заполнить элемент hierarchyMeaning concept.where(property.code = 'parent' or property.code = 'child').exists() implies hierarchyMeaning.exists()
csd-4 Правило Базовый Если элемент content = supplement, то следует указать, какая система кодирования дополняется CodeSystem.content = 'supplement' implies CodeSystem.supplements.exists()
csd-5 Правило CodeSystem.concept.designation Если элемент concept.designation.additionalUse присутствует, то должен присутствовать элемент concept.designation.use additionalUse.exists() implies use.exists()
15.1.2.5 Особенности идентификации

В ресурсе CodeSystem предусмотрены три идентификатора системы кодирования:

15.1.2.6 Версии системы кодирования

Многие системы кодирования с течением времени изменяются. Если при этом меняется значение ранее назначенных кодов, то интерпретация системы кодирования становится зависимой от версии. Это существенно усложняет использование системы кодирования, поэтому такая практика нежелательна. Если значение кодов изменяется, то следует не только присвоить измененной системе кодирования идентификатор версии CodeSystem.version, но и указать признак необходимости учета версии CodeSystem.versionNeeded = true. При передаче кодов такой системы кодирования в экземплярах элементов типа Coding в дополнение к идентификатору системы кодирования system следует также указать идентификатор версии version.

15.1.2.7 Фрагментирование системы кодирования

Система кодирования может распространяться в форме нескольких фрагментов. Содержание такой системы кодирования представляется несколькими экземплярами ресурса CodeSystem, у которых элемент CodeSystem.content имеет значение fragment (фрагмент). Элементы CodeSystem.url у всех фрагментов должны иметь одно и то же значение.

15.1.2.8 Дополнение системы кодирования

Если элемент CodeSystem.content имеет значение supplement (дополнение), то ресурс описывает дополнение системы кодирования. К описанию дополнения применяются следующие правила:

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

15.1.2.9 Краткое описание, определение и обозначение

Элемент concept, описывающий кодируемое понятие, имеет компоненты display и definition. Компонент display содержит краткий текст, который может быть представлен пользователю вместо кода. Компонент definition содержит формальное определение кодированного понятия. По возможности эти компоненты должны быть в каждом описании понятия.

В дополнение к краткому значению display и определению definition понятие может иметь несколько обозначений concept.designation. Обозначения могут представлять значения кодов на другом языке или синонимы.

15.1.2.10 Свойства понятий

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

Идентификаторами свойства служат CodeSystem.property.uri (адрес формального определения свойства, должен быть глобально уникальным) и CodeSystem.property.code (идентификатор свойства, уникален в пределах данной системы кодирования). Код CodeSystem.property.code используется для внутренних ссылок в элементе CodeSystem.concept.property.code, а также для внешних ссылок, например, при описании набора значений в элементе ValueSet.compose.include.filter.property, когда известно, к какой системе кодирования это свойство относится.

Описание свойства содержит элементы, приведенные в таблице 385.

Таблица 385

Компоненты свойства понятия

Имя Описание Тип данных Кратность
code Идентификатор свойства code 1
uri Ссылка на формальное определение свойства, например, в системе кодирования https://www.hl7.org/fhir/codesystem-concept-properties.html. uri 0..1
description Описание свойства string 0..1
type Тип данных значения свойства. Значения типа code | Coding представляют собой коды, определенные в системе кодирования (той же самой или другой), то есть являются ссылками на другие кодированные понятия code | Coding | string | integer | boolean | dateTime 1
15.1.2.11 Определения стандартных свойств

Для гармонизации систем кодирования рекомендуется использовать стандартные свойства понятий, определенные в системе кодирования http://hl7.org/fhir/concept-properties (таблица 386).

Таблица 386

Стандартные свойства понятий

URI Тип значения Описание
http://hl7.org/fhir/concept-properties#status code Статус понятия. Свойство, идентифицируемое данным URI, должно использовать как минимум следующие значения статуса:
active - действующее понятие;
experimental - предусмотрено для тестирования, но в будущем может быть удалено;
deprecated - понятие устарело и в будущем будет удалено;
retired - присутствует по историческим причинам, но не должно использоваться
http://hl7.org/fhir/concept-properties#inactive boolean Если понятие не считается действующим, должно иметь значение true. По умолчанию используется значение false
http://hl7.org/fhir/concept-properties#effectiveDate date Дата последнего изменения статуса понятия
http://hl7.org/fhir/concept-properties#deprecationDate date Дата признания понятия устаревшим
http://hl7.org/fhir/concept-properties#retirementDate date Дата запрета на использование понятия
http://hl7.org/fhir/concept-properties#notSelectable boolean Понятие используется для группировки других понятий и не должно использоваться самостоятельно (может использоваться для фильтрации и т.д.). Такое понятие именуется абстрактным
http://hl7.org/fhir/concept-properties#parent code Прямой родитель понятия в иерархии
http://hl7.org/fhir/concept-properties#child code Прямой потомок понятия в иерархии
http://hl7.org/fhir/concept-properties#partOf code Понятие, идентифицируемое значением этого свойства (по коду) содержит данное понятие в качестве компонента
http://hl7.org/fhir/concept-properties#synonym code Значение этого свойства содержит альтернативный код данного понятия
http://hl7.org/fhir/concept-properties#comment code Дополнительные сведения об использовании данного понятия
http://hl7.org/fhir/concept-properties#itemWeight decimal Числовое значение, позволяющее сравнивать понятия A numeric value that allows the comparison (меньше, больше) или выполнять иные манипуляции с понятиями

Свойства с идентификаторами http://hl7.org/fhir/concept-properties#parent и http://hl7.org/fhir/concept-properties#child используются для указания отношение родитель/потомок между понятиями.

15.1.2.12 Статус системы кодирования

Статус системы кодирования характеризует состояние ее жизненного цикла. Допустимые значения статуса приведены в таблице 387.

Таблица 387

Состояния системы кодирования

Имя Значение Описание
unknown Статус неизвестен Статус неизвестен
draft Проект Создан проект
active Действует Проект утвержден и введен в действие
retired Действие прекращено Действие прекращено
15.1.2.13 Иерархии понятий

Система кодирования может иметь иерархическую структуру, используя вложенные элементы concept. Значение отношений иерархии в этом случае определяется элементом hierarchyMeaning. В такой структуре у каждого понятия имеется только один родитель.

В некоторых системах кодирования понятия могут иметь несколько родителей. В этих случаях вместо вложенных элементов concept надо использовать дополнительные свойства property понятий, содержащие ссылки на родительские коды. Можно также воспроизвести основную иерархию с помощью вложения элементов concept, а дополнительные связи обеспечить с помощью свойств property.

15.1.2.14 Параметры поиска экземпляров ресурса CodeSystem

Специальные параметры поиска экземпляров ресурса CodeSystem описаны в таблице 388. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 388

Специальные параметры поиска экземпляров ресурса CodeSystem

Имя Тип Описание Выражение
code token Код, определенный в системе кодирования CodeSystem.concept.code
content-mode token not-present | example | fragment | complete | supplement CodeSystem.content
context token Контекст использования, назначенный системе кодирования (CodeSystem.useContext.value.ofType(CodeableConcept))
context-quantity quantity Количественное значение контекста или диапазон количественных значений (если имеются), назначенных системе кодирования (CodeSystem.useContext.value.ofType(Quantity)) | (CodeSystem.useContext.value.ofType(Range))
context-type token Тип контекста, назначенного системе кодирования CodeSystem.useContext.code
context-type-quantity composite Сочетание типа контекста данной системы кодирования и его количественного значения или диапазона значений On CodeSystem.useContext:
context-type: code
context-quantity: value.ofType(Quantity) | value.ofType(Range)
context-type-value composite Сочетание типа контекста данной системы кодирования и его значения On CodeSystem.useContext:
context-type: code
context: value.ofType(CodeableConcept)
date date Дата публикации системы кодирования CodeSystem.date
derived-from reference Ресурс, от которого произведена данная система кодирования CodeSystem.relatedArtifact.where(-type='derived-from').resource
(Any)
description string Описание системы кодирования CodeSystem.description
effective date Предполагаемый период использования CodeSystem.effectivePeriod
identifier token Внешний идентификатор системы кодирования CodeSystem.identifier
jurisdiction token Страна или регион, для которого предназначена система кодирования CodeSystem.jurisdiction
language token Язык обозначений в системе кодирования CodeSystem.concept. designation.language
name string Имя системы кодирования, предназначенное для машинной обработки CodeSystem.name
predecessor reference Предшествующая система кодирования CodeSystem.relatedArtifact.where(-type='predecessor').resource
(Any)
publisher string Наименование издателя системы кодирования CodeSystem.publisher
status token Текущий статус системы кодирования CodeSystem.status
supplements reference Поиск экземпляров ресурса CodeSystem, дополняющих данную систему кодирования CodeSystem.supplements
(CodeSystem)
system uri Схема кодирования всех кодов, определенных в данной системе кодирования (то же, что и 'url') CodeSystem.url
title string Имя системы кодирования, предназначенное для человека CodeSystem.title
topic token Тема, ассоциированная с данной системой кодирования CodeSystem.topic
url uri Значение URI, идентифицирующее данную систему кодирования CodeSystem.url
version token Версия системы кодирования CodeSystem.version

15.2 Наборы значений

15.2.1 Общие требования

Кодированные значения элемента ресурса могут быть ограничены набором значений, принадлежащих одной или нескольким системам кодирования. Например, значения элемента type ресурса Device, описывающего тип персонального медицинского прибора, могут быть ограничены релевантным подмножеством кодов номенклатуры MDC, описанной в ГОСТ Р 56842.

Наборы значений применяются для валидации содержания экземпляра ресурса при его создании или изменении и для представления списков допустимых значений в интерфейсе пользователя. Идентификаторы url наборов значений никогда не передаются в качестве компонентов system кодированных значений - в этих компонентах могут быть указаны только идентификаторы url систем кодирования. Привязка кодированного элемента ресурса к набору значений задается в экземпляре ресурса StructureDefinition, описывающем структуру ресурса или комплексного типа данных.

Формальное описание набора значений представляется экземпляром ресурса ValueSet.

15.2.2 Ресурс ValueSet (набор значений)
15.2.2.1 Область применения и использования

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

Экземпляр ресурса ValueSet может содержать элемент compose или элемент resource, или оба этих элемента одновременно. Для работы с ними предусмотрены следующие операции:

15.2.2.2 Структура ресурса

Ресурс ValueSet является детализацией абстрактного ресурса DomainResource. Состав элементов ресурса ValueSet представлен на рисунке 86 и в таблице 389.

15.2 Наборы значений

Рисунок 86 - Ресурс ValueSet

Таблица 389

Состав элементов ресурса ValueSet

ИмяОписаниеТип данныхКратность
Унаследованы от абстрактного класса Resource
idЛогический идентификатор экземпляра ресурсаid0..1
metaМетаданные экземпляра ресурсаMeta0..1
implicitRulesСовокупность правил, по которым должен создаваться экземпляр ресурсаuri0..1
languageОсновной человеческий язык, на котором представлено содержание ресурсаcode0..1
Унаследованы от абстрактного класса DomainResource
textТекстовое описание содержания экземпляра ресурса для интерпретации человекомNarrattive0..1
containedВложенный экземпляр ресурсаResource0..*
extensionДополнительное содержание, определенное при реализацииExtension0..*
modifier-ExtensionМодифицирующее расширение, которое не может быть проигнорированоExtension0..*
Собственные элементы
urlКанонический идентификатор набора значений, представленный в форме URIuri0..1
identifierФормальный идентификатор набора значений, используемый при его представлении в других форматах или спецификацияхIdentifier0..*
versionВерсия набора значенийstring0..1
version-Algorithm[x]Алгоритм сравнения версий*0..1
nameИмя набора значений (для компьютера)string0..1
titleИмя набора значений (для человека)string0..1
statusСтатус версии набора значений. Применяется к метаданным набора значений и к определению набора значений compose. Раскрытие набора значений не имеет статуса. Допустимые значения: draft (проект) | active (действует) | retired (действие прекращено) | unknown (статус неизвестен)code1
experimentalПризнак тестового набора значенийboolean0..1
dateДата (и необязательное время) последнего изменения метаданных или определения набора значений composedateTime0..1
publisherНаименование организации или Ф.И.О. издателя, опубликовавшего набор значенийstring0..1
contactКонтактная информация издателяContactDetail0..*
descriptionОписание набора значенийmarkdown0..1
useContextКонтекст использования набора значений (по умолчанию - не ограничен)UsageContext0..*
immutableПризнак возможности создания новых версий логического определения содержания набора значенийboolean0..1
purposeНазначение набора значенийmarkdown0..1
copyrightАвторские права на набор значенийmarkdown0..1
copyright-LabelТорговая марка и год(ы)string0..1
approvalDateДата утвержденияdate1
lastReview-DateДата последнего пересмотраdate1
effective-PeriodПериод действияPeriod1
topicТема. Использование запрещено. Вместо него рекомендуется использовать элемент useContext, у которого компонент code имеет значение http://terminology.hl7.org/CodeSystem/usage-context-type#topic, а компонент valueCodeableConcept - темуCodeableConcept0..*
authorКонтактная информация автораContactDetail0..*
editorКонтактная информация редактораContactDetail0..*
reviewerКонтактная информация рецензентаContactDetail-
endorserКонтактная информация одобрившей стороныContactDetail0..*
related-ArtifactДополнительная документация, библиография и т.д.RelatedArtifact0..*
composeКомплекс критериев, определяющих содержание набора значений с помощью включения или исключения кодов из одной или нескольких систем кодирования. Его называют также логическим определением содержанияBackboneElement0..1
compose. lockeddateДата ввода в действие, используемая для определения версий определений всех ссылочных систем кодирования и наборов значений, включенных в сборку, но не привязанных к конкретной версииdate0..1
compose. inactiveПризнак включения в набор значений неактивных кодов, которые не должны использоваться. Если inactive = true, то неактивные коды должны быть представлены в экземплярах элемента expansion, если inactive = false, то они должны не представляться в экземплярах элемента expansion. Если этот признак отсутствует, то трактовка отсутствия зависит от реализации или от соответствующего параметра операции \$expand. Обычно ожидается, что неактивные коды будут представленыboolean0..1
compose. includeВключение одного или нескольких кодов из системы кодирования или других наборов значенийBackboneElement1..*
compose. include.systemКанонический идентификатор ссылочной системы кодирования, представленный в форме URIuri0..1
compose. include.versionВерсия ссылочной системы кодирования, из которой включаются понятия, или символ *, указывающий все версииstring0..1
compose. include. conceptВключаемое понятиеBackboneElement0..*
compose.include.concept.codeКод включаемого понятияcode0..1
compose.include.concept.displayКраткое описание кодированного понятия для пользователя. Если оно отсутствует, то программа при его визуализации должна использовать значение понятия, определенное в системе кодированияstring0..1
compose.include.concept.designationДополнительное представление понятия - на другом языке, синоним и т.дBackboneElement0..*
compose.include. concept.designation.languageЯзык обозначения понятияcode0..1
compose.include. concept.designation.useКод использования данного обозначения понятияCoding0..1
compose.include. concept.designation.additionalUseКод дополнительного использования данного обозначения понятияCoding0..*
compose.include. concept.designation.valueТекстовое значение обозначения понятияstring1
compose.include. filterКритерий отбора (фильтрации) кодированных понятий из системы кодирования, основанных на их свойствах (в том числе связях), или из результатов фильтрации по другому критерию. Если задано несколько критериев отбора, то все они должны быть истиннымиBackboneElement0..*
compose.include. filter.propertyКод, идентифицирующий свойство значения из системы кодирования или определенный в ней фильтрcode1
compose.include. filter.opОператор, который можно использовать в данном фильтре. Допустимые значения: = (равно) | is-a (является) | descendent-of (потомок) | is-not-a (не является) | regex (регулярное выражение) | in (принадлежит) | not-in (не принадлежит) | generalizes (обобщает) | exists (существует)code1
compose.include. filter.valueКод из системы кодирования, или шаблон (для оператора regex), или булевское выражение (для оператора exists)string1
compose.include.valueSetСсылка на включаемый набор значенийcanonical0..*
compose.include.copyrightАвторские права на систему кодирования, включенную в набор значенийstring0..1
compose.excludeИсключение одного или нескольких кодов из системы кодирования или из другого набора значенийBackboneElement1..*
compose.exclude.systemКанонический идентификатор ссылочной системы кодирования, представленный в форме URIuri0..1
compose.exclude.versionВерсия ссылочной системы кодирования, из которой берутся исключаемые понятия, или символ *, указывающий все версииstring0..1
compose.exclude. conceptИсключаемое понятиеBackboneElement0..*
compose.exclude. concept.codeКод исключаемого понятияcode0..1
compose.exclude. concept.displayКраткое описание кодированного понятия для пользователя. Если оно отсутствует, то программа при его визуализации должна использовать значение понятия, определенное в системе кодированияstring0..1
compose.exclude. concept.designationДополнительное представление понятия - на другом языке, синоним и т.дBackboneElement0..*
compose.exclude. concept.designation.languageЯзык обозначения понятияcode0..1
compose.exclude. concept.designation.useКод использования данного обозначения понятияCoding0..1
compose.exclude. concept.designation.additionalUseКод дополнительного использования данного обозначения понятияCoding0..1
compose.exclude. concept.designation.valueТекстовое значение обозначения понятияstring1
compose.exclude. filterКритерий отбора (фильтрации) кодированных понятий из системы кодирования, основанных на их свойствах (в том числе связях), или из результатов фильтрации по другому критерию. Если задано несколько критериев отбора, то все они должны быть истиннымиBackboneElement0..*
compose.exclude. filter.propertyКод, идентифицирующий свойство значения из системы кодирования или определенный в ней фильтрcode1
compose.exclude. filter.opОператор, который можно использовать в данном фильтре. Допустимые значения: = (равно) | is-a (является) | descendent-of (потомок) | is-not-a (не является) | regex (регулярное выражение) | in (принадлежит) | not-in (не принадлежит) | generalizes (обобщает) | exists (существует)code1
compose.exclude. filter.valueКод из системы кодирования, или критерий (для оператора regex), или булевское выражение (для оператора exists)string1
compose.exclude. valueSetСсылка на исключаемый набор значенийcanonical0..*
compose.exclude. copyrightАвторские права на систему кодирования, включенную в набор значенийstring0..1
compose.propertyСвойство, возвращаемое в раскрытии набора значений, если клиент не запросил конкретные свойства. Может представлять собой код из определения свойства в системе кодирования или формальный URL со ссылкой на свойство. Особое значение * означает все свойства, известные серверуstring0..*
compose.property
Свойство, возвращаемое в раскрытии набора значений, если клиент не запросил конкретные свойства. Может представлять собой код из определения свойства в системе кодирования или формальный URL со ссылкой на свойство. Особое значение * означает все свойства, известные серверу
string0..*expansionНабор значений может быть также раскрыт, то есть превращен в простую коллекцию перечислимых значений. Результат раскрытия, если оно имело место, хранится в данном элементе
BackboneElement0..1expansion. identifierУникальный идентификатор раскрытия набора значений
uri0..1expansion.nextСсылка на следующую страницу вывода раскрытия набора значений
uri0..1expansion. timestampМомент времени, в который осуществлено раскрытие
dateTime1expansion.totalОбщее число понятий в раскрытии набора значений
integer0..1expansion.offsetЕсли представление раскрытия набора значений осуществляется постранично, то здесь может быть указано смещение от начала раскрытия. Если постраничное представление раскрытия не используется, то этот элемент не должен использоваться
integer0..1expansion. parameterПараметр, управляющий процессом раскрытия набора значений
BackboneElement0..*expansion. parameter.nameИмя параметра, контролирующего раскрытие набора значений
string1expansion. parameter.value[x]Значение параметра, контролирующего раскрытие набора значений. Допустимые типы данных: string | boolean | integer | decimal | uri | code | dateTime
*0..1expansion. propertyСвойство, добавляемое к коду
BackboneElement0..*expansion. property.codeКод, идентифицирующий свойство. Используется в элементе expansion.contains.property.code
code1expansion. property.uriСсылка на формальное описание семантики свойства, например, на систему кодирования http://hl7.org/fhir/concept-properties
uri0..1expansion. containsКод понятия, входящий в раскрытие набора значений
BackboneElement0..*expansion. contains.systemАбсолютный идентификатор URI системы кодирования, в которой определен код, включенный в данное раскрытие набора значений
uri0..1expansion. contains.abstractЗначение true указывает, что этот код включен только в целях навигации и пользователь не может его выбрать
boolean0..1expansion. contains.inactiveПризнак неактивности кода в системе кодирования, где он определен
boolean0..1expansion. contains.versionВерсия системы кодирования, из которой взят данный код
string0..1expansion. contains.codeКод значения в иерархии раскрытия набора значений. Если он отсутствует, то данный элемент expansion.contains используется как абстрактный и не представляет допустимый код значения
code0..1expansion. contains.displayЧеловеко-читаемая строка, рекомендуемая для представления значения данного кода
string0..1expansion.contains.designationДополнительное представление понятия - на другом языке, синоним и т.д.
BackboneElement0..*expansion.contains.designation.languageЯзык обозначения понятия
code0..1expansion.contains.designation.useКод использования обозначения понятия
Coding0..1expansion.contains.designation. additionalUseКод дополнительного использования данного обозначения понятия
Coding0..*expansion.contains.designation.valueТекстовое значение обозначения понятия
string0..1expansion.contains. propertyСвойство понятия
BackboneElement0..*expansion.contains. property.codeКод, идентифицирующий свойство понятия. Должен принадлежать коллекции expansion.property.code
code1expansion.contains.property.value[x]Значение свойства. Допустимые типы данных: string | boolean | integer | decimal |uri | code | dateTime
*1expansion.contains. property.subPropertyСубсвойство понятия
BackboneElement0..*expansion.contains. property.subProperty codeКод, идентифицирующий субсвойство понятия. Должен принадлежать коллекции expansion.property.code
code1expansion.contains. property.subProperty.value[x]Значение субсвойства. Допустимые типы данных: string | boolean | integer | decimal |uri | code | dateTime
*1expansion. contains.containsДочерний код или дочерняя запись в иерархии раскрытия набора значений
BackboneElement0..*scopeДополнительные пояснения к описанию набора значений
BackboneElement0..1scope. inclusionCriteriaОписание критериев включения понятий или кодов
string0..1scope. exclusionCriteriaОписание критериев исключения понятий или кодов
string0..115.2.2.3 Привязки к наборам значений

Привязки к наборам значений описаны в таблице 390.

Таблица 390

Привязки к наборам значений

Путь Набор значений Тип привязки Описание
ValueSet.versionAlgorithm[x] http://hl7.org/fhir/ValueSet/version-algorithm Расширяемая Алгоритм сравнения версий
ValueSet.status http://hl7.org/fhir/ValueSet/publication-status Обязательная Статус жизненного цикла набора значений
ValueSet. jurisdiction http://hl7.org/fhir/ValueSet/jurisdiction Расширяемая Страны и регионы, для которых предназначен данный набор значений
ValueSet.topic http://hl7.org/fhir/ValueSet/definition-topic Пример Тема
ValueSet.compose.include.concept.designation.language http://hl7.org/fhir/ValueSet/languages Предпочтительная Естественный язык
ValueSet.compose.include.concept.designation.use http://hl7.org/fhir/ValueSet/designation-use Расширяемая Детали использования обозначения понятия
ValueSet.compose.include.concept.designation.additionalUse http://hl7.org/fhir/ValueSet/designation-use Расширяемая Детали использования обозначения понятия
ValueSet.compose.include.filter.op http://hl7.org/fhir/ValueSet/filter-operator Обязательная Вид операции, выполняемой как часть фильтра, основанного на значениях свойств
15.2.2.4 Ограничения ресурса ValueSet

Ограничения ресурса ValueSet приведены в таблице 391.

Таблица 391

Ограничения ресурса ValueSet

Идентификатор Вид Путь Описание Выражение
cnl-0 Предупреждение Базовый Имя должно быть пригодным для использования в качестве идентификатора модуля приложениями машинной обработки, такими как генерация кода name.exists() implies name.matches('^A-Z{1,254}$')
cnl-1 Предупреждение ValueSet.url URL не должен содержать | или # - эти символы затрудняют обработку канонических ссылок exists() implies matches('^[^|# ]+$')
vsd-1 Правило ValueSet.compose.include Во включаемом или исключаемом множестве значений (include/exclude) должен быть указан компонент valueSet (ссылка на набор значений) или system (ссылка на систему кодирования) valueSet.exists() or system.exists()
vsd-2 Правило ValueSet.compose.include Во включаемом или исключаемом наборе значений, где указан элемент concept (понятие) или filter (фильтр) должен быть указан элемент system (ссылка на систему кодирования) (concept.exists() or filter.exists()) implies system.exists()
vsd-3 Правило ValueSet.compose.include Элементы concept (понятие) и filter (фильтр) не могут быть указаны одновременно concept.empty() or filter.empty()
vsd-6 Правило ValueSet.expansion.contains Должен быть указан элемент code (код понятия) или display (значение понятия) code.exists() or display.exists()
vsd-9 Правило ValueSet.expansion.contains Если элемент раскрытия набора значений contains не является абстрактным (компонент abstract = true), то должен быть указан компонент code (код понятия) code.exists() or abstract = true
vsd-10 Правило ValueSet.expansion.contains Если указан элемент code (код понятия), то должен быть указан элемент system (ссылка на систему кодирования) code.empty() or system.exists()
vsd-11 Правило ValueSet.compose.include.concept. designation Если элемент concept.designation.additionalUse присутствует, то должен присутствовать элемент concept.designation.use additionalUse.exists() implies use.exists()
15.2.2.5 Особенности идентификации

В ресурсе ValueSet предусмотрены три идентификатора набора значений:

Кроме того, любое раскрытие набора значений имеет собственный идентификатор ValueSet.expansion.identifier, который однозначно идентифицирует это раскрытие.

Элементы identifier и version могут использоваться для ссылки на набор значений при разработке, в профиле или в сообщении.

При передаче кодированных значений (имеющих тип данных Coding или CodeableConcept) указывается только идентификатор системы кодирования, но не набора значений. Описание набора значений служит для форматно-логического контроля кодированного значения. Например, в описании набора значений MeasurementUnits может быть указано, что единица измерения должна браться из ОКЕИ или из UCUM. А в конкретном сообщении должен передаваться код из ОКЕИ или UCUM с указанием идентификатора выбранной системы кодирования. Наличие в сообщения кода из другой системы кодирования считается ошибкой.

15.2.2.6 Интенсиональные и экстенсиональные наборы значений

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

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

Экстенсиональный набор значений представляет собой перечисление входящих в него кодов. Это позволяет контролировать его состав, но затрудняет обеспечение актуальности.

15.2.2.7 Правила композиции

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

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

В набор значений могут входить коды, принадлежащие разным системам кодирования. Типичным случаем является выборка основной части кодов из одной системы кодирования и добавление к ней нескольких дополнительных кодов например, кода для Союзного государства в дополнение к [ОКВ ОК (МК (ИСО 4217) 003-97) 014].

15.2.2.9 Раскрытие набора значений

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

Экземпляр ресурса ValueSet, представляющий собой раскрытый набор значений, содержит элемент ValueSet.expansion, содержащий список кодов, входящих в этот набор. Дополнительно он может содержать элемент ValueSet.compose, описывающий алгоритм получения этого списка. Список кодов может быть иерархическим.

15.2.2.10 Параметры поиска экземпляров ресурса ValueSet

Специальные параметры поиска экземпляров ресурса ValueSet описаны в таблице 392. В дополнение к ним могут использоваться общие параметры поиска, описанные в подразделе 12.27.

Таблица 392

Специальные параметры поиска экземпляров ресурса ValueSet

Имя Тип Описание Выражение
code token Код, входящий в набор значений ValueSet.expansion.contains.code | ValueSet.compose.include.concept.code
context token Контекст использования, назначенный набору значений (ValueSet.useContext.value.ofType(CodeableConcept))
context-quantity quantity Количественное значение контекста или диапазон количественных значений (если имеются), назначенных набору значений (ValueSet.useContext.value.ofType(Quantity)) | (ValueSet.useContext.value.ofType(Range))
context-type token Тип контекста, назначенного набору значений ValueSet.useContext.code
context-type-quantity composite Тип использования контекста и количественное значение контекста или диапазон количественных значений (если имеются), назначенных набору значений On ValueSet.useContext:
context-type: code
context-quantity: value.ofType(Quantity) | value.ofType(Range)
context-type-value composite Тип использования контекста и значение, входящее в набор значений On ValueSet.useContext:
context-type: code
context: value.ofType(CodeableConcept)
date date Дата публикации набора значений ValueSet.date
derived-from reference Экземпляр ресурса, от которого произведен набор значений ValueSet.relatedArtifact. where(type='derived-from').resource
(Any)
description string Описание набора значений ValueSet.description
effective date Предполагаемый период использования ValueSet.effectivePeriod
expansion uri Идентификатор раскрытия набора значений ValueSet.expansion.identifier
identifier token Внешний идентификатор набора значений ValueSet.identifier
jurisdiction token Страна или регион, для которого предназначен набор значений ValueSet.jurisdiction
name string Имя набора значений, предназначенное для машинной обработки ValueSet.name
predecessor reference Предшественник набора значений ValueSet.relatedArtifact.where(type='predecessor').resource
(Any)
publisher string Наименование издателя набора значений ValueSet.publisher
reference uri Ссылка на систему кодирования, включенную в набор значений или исключенную из него, или ссылка на набор значений ValueSet.compose.include.system
status token Текущий статус набора значений ValueSet.status
title string Имя набора значений, предназначенное для человека ValueSet.title
topic token Тема, ассоциированная с данным набором значений ValueSet.topic
url uri Идентификатор URI набора значений ValueSet.url
version token Версия набора значений ValueSet.version

16 Аутентификация и авторизация

Аутентификация персональных медицинских приборы осуществляется менеджерами ПМП и шлюзами Интернета вещей в соответствии с используемыми протоколами передачи данных, например, MQTT или Bluetooth. Варианты аутентификации и авторизации менеджеров (шлюзов) сервисом хранения и обработки результатов измерений предложены в технической статье [41], которую предполагается доработать до статуса стандарта ITU-T H.812.5. В частности, рекомендуется использовать протокол OAuth 2.0 [42] и профиль JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants [43].

Приложение А (справочное)

ПРОФИЛЬ UML

А.1 Общие сведения

При разработке типов данных и ресурсов на языке UML используется профиль, состав которого показан на рисунке А.1.

16 Аутентификация и авторизация

Рисунок А.1 - Состав профиля UML

Профиль UML состоит из стереотипов, перечисленных в таблице А.1.

Таблица А.1

Стереотипы профиля UML

Имя Применение Описание Подраздел
Binding Элемент Привязка элемента к набору значений А.2
Constraint Элемент, класс Ограничение элемента или класса А.3
Extension Элемент, класс, тип данных Метаданные расширения элемента, класса или типа данных А.4
Interface Класс Ресурс REST служит интерфейсом А.5
Modifying Элемент Описание модификации семантики ресурса в зависимости от значения элемента А.6
Profile Класс Метаданные профиля ресурса REST А.7
RefTarget Поле Метаданные ссылки на ресурс REST А.8
Resource Класс Ссылка на определение ресурса REST А.9
Slice Элемент Метаданные группировок экземпляров повторяющегося элемента А.10
TypeChoice Элемент Допустимые типы данных полиморфного элемента А.11

А.2 Стереотип Binding

Стереотип Binding описывает привязку элемента к набору значений. Его атрибуты приведены в таблице А.2.

Таблица А.2

Атрибуты стереотипа Binding

Имя Описание Тип Кратность
valueSet URL набора значений String 1
strength Степень привязки к набору значений: ?? (пример привязки) | ? (предпочтительная привязка) |+ (расширяемая привязка) | ! (обязательная привязка) String 1
description Описание привязки String 1

А.3 Стереотип Constraint

Стереотип Constraint описывает ограничение элемента или класса. Его атрибуты приведены в таблице А.3. В списках в качестве разделителей используется символ вертикальной черты (|).

Таблица А.3

Атрибуты стереотипа Constraint

Имя Описание Тип Кратность
key Список идентификаторов ограничений String 1
level Список строгости ограничений String 1
location Список мест применения ограничений String 1
description Список описаний ограничения String 1
expression Список логических выражений на языке FHIRPath, которые должны быть истинными (инварианты) String 1

А.4 Стереотип Extension

Стереотип Extension описывает метаданные расширения элемента, класса или типа данных. Его атрибуты приведены в таблице А.4.

Таблица А.4

Атрибуты стереотипа Extension

Имя Описание Тип Кратность
identity Идентификатор расширения String 1
cardinality Кратность расширения String 1
type Тип данных расширения String 1
context Контекст расширения String 1

А.5 Стереотип Interface

Стереотип Interface указывает, что данный тип ресурса REST является интерфейсом.

А.6 Стереотип Modifying

Стереотип Modifying указывает, что значение элемента может изменять семантику экземпляра ресурса. Его атрибуты приведены в таблице А.5.

Таблица А.5

Атрибуты стереотипа Modifying

Имя Описание Тип Кратность
meaning Описание изменения семантики String 1

А.7 Стереотип Profile

Стереотип Profile указывает, что данный класс является профилем ресурса REST или другого профиля. Его атрибуты приведены в таблице А.6.

Таблица А.6

Атрибуты стереотипа Profile

Имя Описание Тип Кратность
baseDefinition URL определения базового типа ресурса или профиля String 1
derivation Способ определения профиля: specialization (специализация) | constraint (ограничение) String 1

А.8 Стереотип RefTarget

Стереотип RefTarget описывает допустимые типы ссылочных ресурсов. Его атрибуты приведены в таблице А.7. В списке в качестве разделителей используется символ вертикальной черты (|).

Таблица А.7

Атрибуты стереотипа RefTarget

Имя Описание Тип Кратность
target Список типов ссылочных ресурсов или Any (любой) String 1

А.9 Стереотип Resource

Стереотип Resource указывает, что данный класс является основным в определении типа ресурса. Его атрибуты приведены в таблице А.8.

Таблица А.8

Атрибуты стереотипа Resource

Имя Описание Тип Кратность
url URL описания типа ресурса String 1

А.10 Стереотип Slice

Стереотип Slice указывает, что коллекция экземпляров данного элемента разбивается на непересекающиеся подмножества. Его атрибуты приведены в таблице А.9.

Таблица А.9

Атрибуты стереотипа Slice

Имя Описание Тип Кратность
discriminatorType Тип дискриминатора: value (срезы различаются по значению элемента) | exists (срезы различаются по наличию или отсутствию элемента) | type (срезы различаются по типу элемента) | profile (срезы различаются по соответствию элемента заданному профилю) | position (срезы различаются по индексу элемента) String 1
discriminatorPath Путь к элементу, используемому для выделения срезов. Задается с использованием ограниченного подмножества языка FHIRPath String 1

А.11 Стереотип TypeChoice

Стереотип TypeChoice описывает допустимые типы данных полиморфного элемента. Его атрибуты приведены в таблице А.10. В списке в качестве разделителей используется символ вертикальной черты (|).

Таблица А.10

Атрибуты стереотипа TypeChoice

Имя Описание Тип Кратность
datatype Список допустимых типов данных String 1

Приложение Б (справочное)

ПРИМЕР ПЛАНА ДИСТАНЦИОННОГО МОНИТОРИНГА

Б.1 Текстовое содержание плана для представления пациенту

Целевой уровень домашнего артериального давления:

  • систолическое от 100 до 140;
  • диастолическое от 60 до 90.

Лечение препаратом индапамид + рамиприл (0.625 мг + 2.5 мг), торговое наименование Консилар-Д24, один раз в день, предпочтительно утром. Капсулы необходимо проглатывать целиком и запивать достаточным количеством воды.

Ограничение потребления поваренной соли до 6 г/сут.

Аэробные нагрузки два раза в день по 30 мин.

Этапный эпикриз через две недели.

Измерение артериального давления 2 раза в день.

Ведение дневника приема лекарств.

Ведение дневника физической активности.

Для выполнения плана пациенту выдан тонометр ГемоДин-АКСМА (серийный номер 1234567).

Б.2 Структурированное содержание плана

Структурированное содержание плана дистанционного мониторинга включает в себя экземпляры ресурсов, перечисленные в таблице Б.1

Таблица Б.1

Структурированное содержание плана дистанционного мониторинга

Ресурс Профиль Содержание
Patient Patient-Dm Идентификация пациента
Device Device-Phg Идентификация шлюза Интернета вещей
Device Device-Phd Идентификация персонального медицинского прибора
DeviceAssociation DeviceAssociation-Dm Привязка ПМП к пациенту
Goal Goal-Dm Целевой диапазон значений систолического артериального давления
Goal Goal-Dm Целевой диапазон значений диастолического артериального давления
Practitioner Practitioner-Dm Идентификация лечащего врача
CarePlan CarePlan-Dm План дистанционного мониторинга
Observation http://hl7.org/fhir/StructureDefinition/vitalsigns Рост пациента
Observation http://hl7.org/fhir/StructureDefinition/vitalsigns Вес пациента
Observation http://hl7.org/fhir/StructureDefinition/vitalsigns Возраст пациента (оценочный)
Task Task-Medication Лекарственное назначение
Task Task-MedStat Ведение дневника приема лекарств
Task Task-NutrInt Ведение дневника питания
Task Task-QuestResp Ведение дневника самонаблюдений
Task Task-Phd Измерение артериального давления
Task Task-DiagRep Составление этапного эпикриза

Между экземплярами ресурсов установлены ссылки, показанные на рисунке Б.2. Тем самым образован граф примера плана дистанционного мониторинга. Наличие ссылок позволяет сократить число запросов HTTP GET, необходимых для считывания полного содержания плана, с помощью использования параметров управления результатами поиска _include и _revinclude.

16 Аутентификация и авторизация

Рисунок Б.1 - Граф плана дистанционного мониторинга

Б.3 Транзакция создания плана

Тело транзакции создания плана представляет собой контейнер Bundle типа transaction, в который вложены экземпляры ресурсов, перечисленные в таблице Б.1 Для каждого экземпляра указан метод создания HTTP POST и условие создания ifNoneExist, согласно которому экземпляр создается только в том случае, если на сервере отсутствует экземпляр с таким же идентификатором identifier.

Чтобы можно было воспользоваться параметрами управления результатами поиска _include и _revinclude и в то же время осуществлять поиск по идентификаторам identifier, каждая ссылка между экземплярами ресурсов имеет следующий вид:

<reference value=полный URL ссылочного экземпляра ресурса/>

<type value=тип ссылочного ресурса/>

<system value=схема идентификации/>

<value value=значение идентификатора/>

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

При проверке примера валидатором https://validator.fhir.org/ будут выданы ошибки и предупреждения. Ошибками помечены элементы profile, например, . Это связано с тем, что значение профиля должно представлять собой абсолютный URL, но указать базовый URL, который должен предшествовать имени профиля, в настоящем документе не представляется возможным - он должен вести на конкретную страницу платформы медицинских помощников. Большинство предупреждений связано с тем, что в кодируемых значениях указан компонент system, идентифицирующий систему кодирования, не известную валидатору, например, http://hl7.org/fhir/uv/phd/CodeSystem/ContinuaDeviceIdentifiers.

<!-- Уникальный идентификатор в формате EUI-64. Возвращается прибором по запросу.

Если прибор соответствует ГОСТ Р 56845-2019, то это атрибут System- Id объекта MDS

-->

<serialNumber value= формула 1234567 формула />

<modelNumber value= формула ГемоДин-АКСМА формула />

Целевой уровень систолического артериального давления

больше 100 и меньше 140

<text value= формула Систолическое артериальное давление от 100 до 140 формула />

<code value= формула 8480-6 формула />

<code value= формула 3 формула />

<display value= формула Артериальное давление систолическое формула />

<text value= формула Систолическое артериальное давление формула />

<statusDate value= формула 2023-11-21 формула />

Целевой уровень диастолического артериального давления

больше 60 и меньше 90

<statusDate value= формула 2023-11-21 формула />

Целевой уровень домашнего артериального давления:

- систолическое от 100 до 140

- диастолическое от 60 до 90

Лечение препаратом индапамид + рамиприл (0.625 мг + 2.5 мг), торговое наименование Консилар-Д24, предпочтительно утром

Капсулы необходимо проглатывать целиком и запивать достаточным количеством воды

Ограничение потребления поваренной соли до 6 г/сут

Аэробные нагрузки два раза в день по 30 мин

Этапный эпикриз через две недели

Измерение артериального давления 2 раза в день

Ведение дневника приема лекарств

Ведение дневника физической активности

Тонометр ГемоДин-АКСМА серийный номер 1234567

<code value= формула 8302-2 формула />

<ifNoneExist value="identifier=urn:uuid:b85497fe-14e1-4dce-bae6-

c7ea01e7c2ea"/>

<code value= формула 29463-7 формула />

<! -- Вес -->

Индапамид + рамиприл (0.625 мг + 2.5 мг), торговое наименование Консилар-Д24, предпочтительно утром

Капсулы необходимо проглатывать целиком и запивать достаточным количеством воды

<code value= формула C09BA05 формула />

<description value=«Консилар-Д24 1 капс. (0.625 мг + 2.5 мг) однократно утром формула />»

Вести дневник приема лекарств

Заполнять после каждого приема лекарства

Вести дневник приема питания

Заполнять после каждого приема лекарства

<text value= формула После каждого приема питания формула />

Вести дневник самонаблюдений

Заполнять в течение дня

<intent value= формула order формула />

Измерять артериальное давление

два раза в день

<text value= формула Два раза в день формула />

Составить этапный эпикриз

Приложение В (справочное)

СОПОСТАВЛЕНИЕ СТАНДАРТА С HL7 FHIR R4

В.1 Общие сведения

Во многих разработках медицинских информационных систем, включая прототип платформы персональных медицинских помощников, реализованы требования, содержащиеся в спецификации HL7 FHIR Release 4 (кратко FHIR R4, см. https://hl7.org/fhir/R4). В значительной мере это обусловлено тем, что офис национального координатора ONC (The Office of the National Coordinator for Health Information Technology) утвердил требование соответствия Руководству по базовой реализации в США (US Core Implementation Guide), основанное на FHIR R4, в программе сертификации медицинских информационных систем (https://www.federalregister.gov/documents/2024/01/09/2023-28857/health-data-technology-and-interoperability-certification-program-updates-algorithm-transparency-and).

Для предметной области дистанционного мониторинга состояния пациента с помощью персональных медицинских приборов версия HL7 FHIR Release 5 (кратко R5, см. https://hl7.org/fhir/R5) является более предпочтительной по следующим причинам:

Для предметной области дистанционного мониторинга состояния пациента с помощью персональных медицинских приборов другие отличия R5 от R4 имеют менее принципиальный характер. При этом значительная часть профилей, определенных в настоящем стандарте, будет пригодна без каких-либо изменений как для R5, так и для R4.

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

В.2 Базисные ресурсы

Определения базисных ресурсов Resource и DomainResource в R4 и R5 совпадают.

В.3 Ресурсы общего назначения

В.3.1 Ресурс Bundle — контейнер экземпляров ресурсов

Изменения ресурса Bundle по сравнению с версиями R4 и R4B представлены в таблице В.1.

Таблица В.1

Изменения ресурса Bundle по сравнению с версиями R4 и R4B

Путь Изменение
Bundle.type Добавлен вариант значения subscription-notification
Bundle.link.relation Тип изменен со string на code. Задана обязательная привязка к набору значений http://hl7.org/fhir/ValueSet/iana-link-relations|5.0.0
Bundle.issues Дополнительный необязательный элемент

В 3.2 Ресурс MessageHeader — заголовок сообщения

Изменения ресурса MessageHeader по сравнению с версиями R4 и R4B представлены в таблице В.2.

Таблица В.2

Изменения ресурса MessageHeader по сравнению с версиями R4 и R4B

Путь Изменение
MessageHeader.event[x] Добавлен вариант типа значения canonical(EventDefinition).
Вариант типа uri удален
MessageHeader.destination.endpoint[x] Переименован с endpoint на endpoint[x] и тем самым значение может иметь несколько типов данных.
Элемент сделан необязательным
Добавлен вариант типа данных Reference(Endpoint)
MessageHeader.sender Добавлен вариант ссылки на экземпляр ресурса Device
MessageHeader.author Добавлен вариант ссылки на экземпляры ресурсов Device, Organization
MessageHeader.source. endpoint[x] Переименован с endpoint на endpoint[x] и тем самым значение может иметь несколько типов данных.
Элемент сделан необязательным
Добавлен вариант типа данных Reference(Endpoint)
MessageHeader.response.identifier Тип данных изменен с id на Identifier
MessageHeader.enterer Необязательный элемент удален

В.3.3 Ресурс OperationOutcome — результат операции

Изменения ресурса OperationOutcome по сравнению с версиями R4 и R4B представлены в таблице В.3.

Таблица В.3

Изменения ресурса OperationOutcome по сравнению с версиями R4 и R4B

Путь Изменение
OperationOutcome.issue.severity Добавлен вариант значения success
OperationOutcome.issue.code Добавлены варианты значения limited-filter, success

В.3.4 Ресурс Parameters — параметры операции

Изменения ресурса Parameters по сравнению с версиями R4 и R4B представлены в таблице В.4.

Таблица В.4

Изменения ресурса Parameters по сравнению с версиями R4 и R4B

Путь Изменение
Parameters.parameter.value[x] Добавлены варианты типа значения integer64, CodeableReference, RatioRange, Availability, ExtendedContactDetail, Meta.
Удален вариант типа значения Contributor

В.3.5 Ресурс Subscription — подписка

Изменения ресурса Subscription по сравнению с версиями R4 и R4B представлены в таблице В.5.

Таблица В.5

Изменения ресурса Subscription по сравнению с версиями R4 и R4B

Путь Изменение
Subscription.identifier Добавлен необязательный элемент
Subscription.name Добавлен необязательный элемент
Subscription.status Добавлен вариант значения entered-in-error
Subscription.topic Добавлен обязательный элемент
Subscription.managingEntity Добавлен необязательный элемент
Subscription.reason Элемент сделан необязательным
Subscription.filterBy Добавлен необязательный элемент
Subscription.filterBy.resourceType Добавлен необязательный элемент
Subscription.filterBy.filterParameter Добавлен обязательный элемент
Subscription.filterBy.comparator Добавлен необязательный элемент
Subscription.filterBy.modifier Добавлен необязательный элемент
Subscription.filterBy.value Добавлен обязательный элемент
Subscription.channelType Добавлен обязательный элемент
Subscription.endpoint Добавлен необязательный элемент
Subscription.parameter Добавлен необязательный элемент
Subscription.parameter.name Добавлен обязательный элемент
Subscription.parameter.value Добавлен обязательный элемент
Subscription.heartbeatPeriod Добавлен необязательный элемент
Subscription.timeout Добавлен необязательный элемент
Subscription.contentType Добавлен необязательный элемент
Subscription.content Добавлен необязательный элемент
Subscription.maxCount Добавлен необязательный элемент
Subscription.criteria Обязательный элемент удален
Subscription.error Необязательный элемент удален
Subscription.channel Обязательный элемент удален

В.3.6 Ресурс SubscriptionStatus — статус подписки

В R4 отсутствует.

В.3.7 Ресурс SubscriptionTopic — тема подписки

В R4 отсутствует.

В.3.8 Ресурс CarePlan — план ведения

Изменения ресурса CarePlan по сравнению с версиями R4 и R4B представлены в таблице В.6.

Таблица В.6

Изменения ресурса CarePlan по сравнению с версиями R4 и R4B

Путь Изменение
CarePlan.basedOn Добавлены варианты ссылок на экземпляры ресурсов ServiceRequest, RequestOrchestration, NutritionOrder
CarePlan.intent Добавлен вариант значения directive
CarePlan.custodian Переименован с author на custodian
CarePlan.addresses Тип данных изменен с Reference(Condition) на CodeableReference
CarePlan.activity.performedActivity Добавлен необязательный элемент
CarePlan.activity.outcomeCodeableConcept Элемент удален. Вместо него следует использовать элемент CarePlan.activity.performedActivity
CarePlan.activity.outcomeReference Элемент удален. Вместо него следует использовать элемент CarePlan.activity.performedActivity
CarePlan.activity.detail Элемент удален. Вместо него следует использовать элемент CarePlan.activity.plannedActivityReference

В.3.9 Профиль CarePlan-Dm

Изменения ресурса CarePlan, требующие учета при реализации профиля CarePlan-Dm, приведены в таблице В.7.

Таблица В.7

Изменения ресурса CarePlan, требующие учета при реализации профиля CarePlan-Dm

Путь Изменение
CarePlan.basedOn Добавлены варианты ссылок на экземпляры ресурсов ServiceRequest, RequestOrchestration, NutritionOrder
CarePlan.custodian Переименован с author на custodian

В.3.10 Ресурс Goal — цель

Изменения ресурса Goal по сравнению с версиями R4 и R4B представлены в таблице В.8.

Таблица В.8

Изменения ресурса Goal по сравнению с версиями R4 и R4B

Путь Изменение
Goal.continuous Добавлен необязательный элемент
Goal.source Переименован с expressedBy на source
Добавлены вариант ссылки на экземпляр ресурса CareTeam
Goal.addresses Добавлены варианты ссылок на экземпляры ресурсов MedicationRequest, Procedure
Goal.outcome Добавлен необязательный элемент
Goal.outcomeCode Элемент удален. Вместо него следует использовать элемент Goal.outcome
Goal.outcomeReference Элемент удален. Вместо него следует использовать элемент Goal.outcome

В.3.11 Профиль цели дистанционного мониторинга пациента Goal-Dm

Изменения ресурса Goal не требуют учета при реализации профиля CarePlan-Dm.

В.3.12 Ресурс ServiceRequest — назначение

Изменения ресурса ServiceRequest по сравнению с версиями R4 и R4B представлены в таблице В.9.

Таблица В.9

Изменения ресурса ServiceRequest по сравнению с версиями R4 и R4B

Путь Изменение
ServiceRequest.code Тип данных изменен с CodeableConcept на CodeableReference
ServiceRequest.orderDetail Тип данных изменен с CodeableConcept на BackboneElement
ServiceRequest.orderDetail.parameterFocus Добавлен необязательный элемент
ServiceRequest.orderDetail.parameter Добавлен обязательный элемент
ServiceRequest.orderDetail.parameter.code Добавлен обязательный элемент
ServiceRequest.orderDetail.parameter.value[x] Добавлен обязательный элемент
ServiceRequest.focus Добавлен необязательный элемент
ServiceRequest.location Добавлен необязательный элемент
ServiceRequest.reason Добавлен необязательный элемент
ServiceRequest.supportingInfo Тип данных изменен с Reference(Resource) на CodeableReference
ServiceRequest.bodyStructure Добавлен необязательный элемент
ServiceRequest.patientInstruction Максимальная кратность изменена с 1 на *
Тип данных изменен на BackboneElement
ServiceRequest.patientInstruction.instruction[x] Добавлен необязательный элемент
ServiceRequest.locationCode Элемент удален
ServiceRequest.locationReference Элемент удален
ServiceRequest.reasonCode Элемент удален. Вместо него следует использовать элемент reason
ServiceRequest.reasonReference Элемент удален. Вместо него следует использовать элемент reason

В.3.13 Ресурс Task — мероприятие

Изменения ресурса Task по сравнению с версиями R4 и R4B представлены в таблице В.10.

Таблица В.10

Изменения ресурса Task по сравнению с версиями R4 и R4B

Путь Изменение
Task.statusReason Тип данных изменен с CodeableConcept на CodeableReference
Task.doNotPerform Добавлен необязательный элемент
Task.requestedPeriod Добавлен необязательный элемент
Task.requestedPerformer Добавлен необязательный элемент
Task.owner Удалены варианты ссылок на экземпляры ресурсов HealthcareService, Device
Task.performer Добавлен необязательный элемент
Task.performer.function Добавлен необязательный элемент
Task.performer.actor Добавлен обязательный элемент
Task.reason Добавлен необязательный элемент
Task.input.value[x] Добавлены варианты типов данных integer64, CodeableReference, RatioRange, Availability, ExtendedContactDetail, Meta.
Удален вариант типа данных Contributor
Task.output.value[x] Добавлены варианты типов данных integer64, CodeableReference, RatioRange, Availability, ExtendedContactDetail, Meta.
Удален вариант типа данных Contributor
Task.performerType Элемент удален. Вместо него следует использовать элемент Task.requestedPerformer
Task.reasonCode Элемент удален. Вместо него следует использовать элемент reason
Task.reasonReference Элемент удален. Вместо него следует использовать элемент reason

В.3.14 Профиль Task-Medication

Изменения ресурса Task, требующие учета при реализации профиля Task-Medication, приведены в таблице В.11.

Таблица В.11

Изменения ресурса Task, требующие учета при реализации профиля Task-Medication

Путь Изменение
Task.requestedPerformer Добавлен обязательный элемент
Task.reason Добавлен необязательный элемент
Task.performerType Элемент удален. Вместо него следует использовать элемент Task.requestedPerformer
Task.reasonCode Элемент удален. Вместо него следует использовать элемент reason
Task.reasonReference Элемент удален. Вместо него следует использовать элемент reason

В.3.15 Профиль Task-Phd

Изменения ресурса Task, требующие учета при реализации профиля Task-Phd, приведены в таблице В.11.

В.3.16 Профиль Task-MedStat

Изменения ресурса Task, требующие учета при реализации профиля Task-MedStat, приведены в таблице В.11.

В.3.17 Профиль Task-NutrInt

Изменения ресурса Task, требующие учета при реализации профиля Task-NutrInt, приведены в таблице В.11.

В.3.18 Профиль Task-QuestResp

Изменения ресурса Task, требующие учета при реализации профиля Task-QuestResp, приведены в таблице В.11.

В.3.19 Профиль Task-DiagRep

Изменения ресурса Task, требующие учета при реализации профиля Task-DiagRep, приведены в таблице В.11.

В.3.20 Ресурс Device — сведения о медицинском изделии

Изменения ресурса Device по сравнению с версиями R4 и R4B представлены в таблице В.12.

Таблица В.12

Изменения ресурса Device по сравнению с версиями R4 и R4B

Путь Изменение
Device.displayName Добавлен необязательный элемент
Device.definition Тип данных изменен с Reference(DeviceDefinition) на CodeableReference
Device.udiCarrier.deviceIdentifier Элемент сделан обязательным
Device.udiCarrier.issuer Элемент сделан обязательным
Device.udiCarrier.entryType Добавлен вариант значения electronic-transmission
Device.status Удален вариант значения unknown
Device.availabilityStatus Добавлен необязательный элемент
Device.biologicalSourceEvent Добавлен необязательный элемент
Device.name Переименован с deviceName на name
Device.name.value Добавлен обязательный элемент
Device.name.type Перемещен из Device.deviceName в Device.name.
Удалены варианты значений udi-label-name, manufacturer-name, model-name, other.
Добавлен вариант значения registered-name
Device.name.display Добавлен необязательный элемент
Device.category Добавлен необязательный элемент
Device.type Максимальная кратность изменена с 1 на *
Device.version.installDate Добавлен необязательный элемент
Device.conformsTo Переименован со specialization на conformsTo
Device.conformsTo.category Добавлен необязательный элемент
Device.conformsTo.specification Добавлен обязательный элемент
Device.conformsTo.version Перемещен из Device.specialization в Device.conformsTo
Device.property.value[x] Добавлен обязательный элемент
Device.mode Добавлен необязательный элемент
Device.cycle Добавлен необязательный элемент
Device.duration Добавлен необязательный элемент
Device.endpoint Добавлен необязательный элемент
Device.gateway Добавлен необязательный элемент
Device.statusReason Элемент удален. Вместо него можно использовать элемент operation.status ресурса DeviceAssociation
Device.distinctIdentifier Элемент удален
Device.deviceName.name Элемент удален
Device.specialization.systemType Элемент удален
Device.property.valueQuantity Элемент удален
Device.property.valueCode Элемент удален
Device.patient Элемент удален. Для привязки прибора к пациенту можно использовать ресурс DeviceAssociation

В.3.21 Профиль Device-Phd

Изменения ресурса Device, требующие учета при реализации профиля Device-Phd, приведены в таблице В.13.

Таблица В.13

Изменения ресурса Device, требующие учета при реализации профиля Device-Phd

Путь Изменение
Device.conformsTo Переименован с specialization на conformsTo
Device.conformsTo.specification Добавлен обязательный элемент
Device.conformsTo.version Перемещен из Device.specialization в Device.conformsTo
Device.gateway Добавлен необязательный элемент

В.3.22 Профиль Device-Phg

Изменения ресурса Device не требуют учета при реализации профиля Device-Phg.

В.3.23 DeviceAssociation — ассоциация медицинского изделия с субъектом

В R4 отсутствует.

В.3.24 Профиль DeviceAssociation-Dm

К R4 неприменим.

В.3.25 Ресурс DeviceMetric — измерительная способность медицинского прибора

Изменения ресурса DeviceMetric по сравнению с версиями R4 и R4B представлены в таблице В.14.

Таблица В.14

Изменения ресурса DeviceMetric по сравнению с версиями R4 и R4B

Путь Изменение
DeviceMetric.device Добавлен обязательный элемент
DeviceMetric.color Привязка к набору значений http://hl7.org/fhir/ValueSet/metric-color|4.0.0 изменена на требование «Наименование цвета из системы CSS Color Module Level 4 либо код цвета в системе RGB (#RRGGBB в шестнадцатеричной системе)»
DeviceMetric.measurementFrequency Добавлен необязательный элемент
DeviceMetric.source Элемент удален
DeviceMetric.parent Элемент удален
DeviceMetric.measurementPeriod Элемент удален

В.3.26 Ресурс Observation — результат исследования

Изменения ресурса Observation по сравнению с версиями R4 и R4B представлены в таблице В.15.

Таблица В.15

Изменения ресурса Observation по сравнению с версиями R4 и R4B

Путь Изменение
Observation.instantiates[x] Добавлен необязательный элемент
Observation.triggeredBy Добавлен необязательный элемент
Observation.triggeredBy.observation Добавлен обязательный элемент
Observation.triggeredBy.type Добавлен обязательный элемент
Observation.triggeredBy.reason Добавлен необязательный элемент
Observation.partOf Добавлен вариант ссылки на экземпляр ресурса GenomicStudy
Observation.subject Добавлены варианты ссылок на экземпляры ресурсов Organization, Procedure, Practitioner, Medication, Substance, BiologicallyDerivedProduct, NutritionProduct
Observation.value[x] Добавлены варианты типов данных Attachment, Reference(MolecularSequence)
Observation.bodyStructure Добавлен необязательный элемент
Observation.specimen Добавлен вариант ссылки на экземпляр ресурса Group
Observation.referenceRange.normalValue Добавлен необязательный элемент
Observation.referenceRange.text Тип данных изменен со string на markdown
Observation.derivedFrom Добавлены варианты ссылок на экземпляры ресурсов ImagingSelection, GenomicStudy.
Удален вариант ссылки на экземпляр ресурса Media
Observation.component.value[x] Добавлены варианты типов данных Attachment, Reference(MolecularSequence)

В.3.27 Профиль Observation-PhdNumeric

Изменения ресурса Observation не требуют учета при реализации профиля Observation-PhdNumeric.

В.3.28 Профиль Observation-PhdCompoundNumeric

Изменения ресурса Observation не требуют учета при реализации профиля Observation-PhdCompoundNumeric.

В.3.29 Профиль Observation-PhdCodedEnumeration

Изменения ресурса Observation не требуют учета при реализации профиля Observation-PhdCodedEnumeration.

В.3.30 Профиль Observation-PhdBitsEnumeration

Изменения ресурса Observation не требуют учета при реализации профиля Observation-PhdBitsEnumeration.

В.3.31 Профиль Observation-PhdStringEnumeration

Изменения ресурса Observation не требуют учета при реализации профиля Observation-PhdStringEnumeration.

В.3.32 Профиль Observation-PhdRtsa

Изменения ресурса Observation не требуют учета при реализации профиля Observation-PhdRtsa.

В.3.33 Профиль Observation-PhdMedia

Изменения ресурса Observation не требуют учета при реализации профиля Observation-PhdMedia.

В.3.34 Профиль Observation-PhdCoincidentTimeStamp

Изменения ресурса Observation не требуют учета при реализации профиля Observation-PhdCoincidentTimeStamp.

В.3.35 Ресурс Patient — сведения о пациенте

Изменения ресурса Patient по сравнению с версиями R4 и R4B представлены в таблице В.16.

Таблица В.16

Изменения ресурса Patient по сравнению с версиями R4 и R4B

Путь Изменение
Patient.communication.language Степень привязки изменена с предпочтительной на обязательную.
Набор значений изменен с http://hl7.org/fhir/ValueSet/common-languages на http://hl7.org/fhir/ValueSet/all-languages. Максимальный набор значений изменен с http://hl7.org/fhir/ValueSet/all-languages на none

В.3.36 Профиль Patient-Dm

Изменения ресурса Patient не требуют учета при реализации профиля Patient-Dm.

В.3.37 Ресурс Practitioner — сведения о медицинском специалисте

Изменения ресурса Practitioner по сравнению с версиями R4 и R4B представлены в таблице В.17.

Таблица В.17

Изменения ресурса Practitioner по сравнению с версиями R4 и R4B

Путь Изменение
Practitioner.active Элемент маркирован как модифицирующий (то есть его значение не может быть игнорировано)
Practitioner.deceased[x] Добавлен необязательный элемент
Practitioner.communication Тип значения изменен с CodeableConcept на BackboneElement
Отменена предпочтительная привязка к набору значений 'http://hl7.org/fhir/ValueSet/languages. Максимальный набор значений заменен на http://hl7.org/fhir/ValueSet/all-languages
Practitioner.communication.language Добавлен обязательный элемент
Practitioner.communication.preferred Добавлен необязательный элемент

В.3.38 Профиль Practitioner-Dm

Изменения ресурса Practitioner не требуют учета при реализации профиля Practitioner-Dm.

В.3.39 Ресурс DiagnosticReport — заключение врача

Изменения ресурса DiagnosticReport по сравнению с версиями R4 и R4B представлены в таблице В.18.

Таблица В.18

Изменения ресурса DiagnosticReport по сравнению с версиями R4 и R4B

Путь Изменение
DiagnosticReport.status Добавлен вариант значения modified
DiagnosticReport.subject Добавлены варианты ссылок на экземпляры ресурсов Organization, Practitioner, Medication, Substance, BiologicallyDerivedProduct
DiagnosticReport.note Добавлен необязательный элемент
DiagnosticReport.study Добавлен необязательный элемент
DiagnosticReport.supportingInfo Добавлен необязательный элемент
DiagnosticReport.supportingInfo.type Добавлен обязательный элемент
DiagnosticReport.supportingInfo.reference Добавлен обязательный элемент
DiagnosticReport.media.link Добавлен вариант ссылки на экземпляр ресурса DocumentReference
Удален вариант ссылки на экземпляр ресурса Media
DiagnosticReport.composition Добавлен необязательный элемент
DiagnosticReport.conclusion Тип изменен со string на markdown
DiagnosticReport.imagingStudy Элемент удален

В.3.40 Профиль DiagnosticReport-Dm

Изменения ресурса DiagnosticReport не требуют учета при реализации профиля DiagnosticReport-Dm.

В.3.41 Ресурс MedicationStatement — дневник приема лекарств

Изменения ресурса MedicationStatement по сравнению с версиями R4 и R4B представлены в таблице В.19.

Таблица В.19

Изменения ресурса MedicationStatement по сравнению с версиями R4 и R4B

Путь Изменение
MedicationStatement.partOf Удалены варианты ссылок на экземпляры ресурсов MedicationAdministration, MedicationDispense, Observation
MedicationStatement.status Удалены варианты значений active, completed, intended, stopped, on-hold, unknown, not-taken
Добавлены варианты значений recorded, draft
MedicationStatement.category Максимальная кратность изменена с 1 на *
MedicationStatement.medication Переименован с medication[x] на medication.
Добавлен тип значения CodeableReference.
Удалены типы значения CodeableConcept, Reference(Medication)
MedicationStatement.encounter Переименован с context на encounter
Удален вариант ссылки на экземпляр ресурса EpisodeOfCare
MedicationStatement.effective[x] Добавлен тип значения Timing
MedicationStatement.informationSource Максимальная кратность изменена с 1 на *
MedicationStatement.reason Добавлен необязательный элемент
MedicationStatement.relatedClinicalInformation Добавлен необязательный элемент
MedicationStatement.renderedDosageInstruction Добавлен необязательный элемент
MedicationStatement.adherence Добавлен необязательный элемент
MedicationStatement.adherence.code Добавлен обязательный элемент
MedicationStatement.adherence.reason Добавлен необязательный элемент
MedicationStatement.basedOn Элемент удален
MedicationStatement.statusReason Элемент удален
MedicationStatement.reasonCode Элемент удален. Вместо него следует использовать reason
MedicationStatement.reasonReference Элемент удален. Вместо него следует использовать reason

В.3.42 Ресурс QuestionnaireResponse — дневник самонаблюдения

Изменения ресурса QuestionnaireResponse по сравнению с версиями R4 и R4B представлены в таблице В.20.

Таблица В.20

Изменения ресурса QuestionnaireResponse по сравнению с версиями R4 и R4B

Путь Изменение
QuestionnaireResponse.identifier Максимальная кратность изменена с 1 на *
QuestionnaireResponse.questionnaire Элемент сделан обязательным
QuestionnaireResponse.source Добавлены варианты ссылок на экземпляры ресурсов Device, Organization
QuestionnaireResponse.item.answer.value[x] Элемент сделан обязательным.
Добавлен тип значения Quantity (http://hl7.org/fhir/StructureDefinition/SimpleQuantity)

В.3.43 Ресурс Questionnaire — описание дневника самонаблюдения

Изменения ресурса Questionnaire по сравнению с версиями R4 и R4B представлены в таблице В.21.

Таблица В.21

Изменения ресурса Questionnaire по сравнению с версиями R4 и R4B

Путь Изменение
Questionnaire.versionAlgorithm[x] Добавлен необязательный элемент
Questionnaire.subjectType Удалены варианты значения CatalogEntry, DeviceUseStatement, DocumentManifest, DomainResource, EffectEvidenceSynthesis, Media, MedicinalProduct, MedicinalProductAuthorization, MedicinalProductContraindication, MedicinalProductIndication, MedicinalProductIngredient, MedicinalProductInteraction, MedicinalProductManufactured, MedicinalProductPackaged, MedicinalProductPharmaceutical, MedicinalProductUndesirableEffect, RequestGroup, ResearchDefinition, ResearchElementDefinition, Resource, RiskEvidenceSynthesis, SubstanceSpecification
Добавлены варианты значения ActorDefinition, AdministrableProductDefinition, ArtifactAssessment, BiologicallyDerivedProductDispense, Citation, ClinicalUseDefinition, ConditionDefinition, DeviceAssociation, DeviceDispense, DeviceUsage, EncounterHistory, EvidenceReport, FormularyItem, GenomicStudy, ImagingSelection, Ingredient, InventoryItem, InventoryReport, ManufacturedItemDefinition, MedicinalProductDefinition, NutritionIntake, NutritionProduct, PackagedProductDefinition, Permission, RegulatedAuthorization, RequestOrchestration, Requirements, SubscriptionStatus, SubscriptionTopic, SubstanceDefinition, TestPlan, Transport
Questionnaire.copyrightLabel Добавлен необязательный элемент
Questionnaire.item.type Удалены варианты значения choice, open-choice
Добавлены варианты значения question, coding
Questionnaire.item.disabledDisplay Добавлен необязательный элемент
Questionnaire.item.answerConstraint Добавлен необязательный элемент

В.3.44 Ресурс NutritionIntake (дневник питания)

В R4 отсутствует.

В.3.45 Ресурс DetectedIssue — предупреждение

Изменения ресурса DetectedIssue по сравнению с версиями R4 и R4B представлены в таблице В.22.

Таблица В.22

Изменения ресурса DetectedIssue по сравнению с версиями R4 и R4B

Путь Изменение
DetectedIssue.status Привязка к набору значений изменена с http://hl7.org/fhir/ValueSet/observation-status|4.0.0 на http://hl7.org/fhir/ValueSet/detectedissue-status. Удалены варианты значения registered, amended, corrected, cancelled, unknown
Добавлен вариант значения mitigated
DetectedIssue.category Добавлен необязательный элемент
DetectedIssue.subject Добавлен необязательный элемент
DetectedIssue.encounter Добавлен необязательный элемент
DetectedIssue.author Добавлены варианты ссылок на экземпляры ресурсов Patient, RelatedPerson
DetectedIssue.detail Тип значения изменен со string на markdown
DetectedIssue.mitigation.note Добавлен необязательный элемент
DetectedIssue.patient Элемент удален

В.3.46 Профиль DetectedIssue-Dm

Изменения ресурса DetectedIssue, требующие учета при реализации профиля DetectedIssue-Dm, приведены в таблице В.23.

Таблица В.23

Изменения ресурса DetectedIssue, требующие учета при реализации профиля Device-Phd

Путь Изменение
DetectedIssue.status Привязка к набору значений изменена с http://hl7.org/fhir/ValueSet/observation-status|4.0.0 на http://hl7.org/fhir/ValueSet/detectedissue-status. Удалены варианты значения registered, amended, corrected, cancelled, unknown. Добавлен вариант значения mitigated
DetectedIssue.subject Добавлен необязательный элемент

Библиография

[1] ISO/IEEE 11073-10404:2022 Информатизация здоровья. Совместимость приборов. Часть 10404. Связь с медицинскими приборами индивидуального контроля состояния здоровья. Специализация прибора. Пульсовой оксиметр (Health informatics — Device interoperability — Part 10404: Personal health device communication — Device specialization — Pulse oximeter)
[2] IEEE 11073-10406-2023 Информатизация здоровья. Информационное взаимодействие с персональными медицинскими приборами. Часть 10406. Специализация прибора: базовый электрокардиограф (ЭКГ с 1 — 3 отведениями) [Standard for Health Informatics — Device Interoperability Part 10406: Personal Health Device Communication — Device Specialization — Basic Electrocardiography (ECG) (1- to 3-lead ECG)]
[3] ISO/IEEE 11073-10407:2022 Информатизация здоровья. Взаимодействие с приборами. Часть 10407. Связь с медицинскими приборами индивидуального контроля состояния здоровья. Специализация прибора. Монитор артериального давления (Health informatics — Device interoperability — Part 10407: Personal health device communication — Device specialization — Blood pressure monitor)
[4] ISO/IEEE 11073-10408:2022 Информатизация здоровья. Взаимодействие с приборами. Часть 10408. Связь с медицинскими приборами индивидуального контроля состояния здоровья. Специализация прибора. Термометр (Health informatics — Device interoperability — Part 10408: Personal health device communication — Device specialization — Thermometer)
[5] ISO/IEEE 11073-10415:2022 Информатизация здоровья. Взаимодействие с приборами. Часть 10415. Связь с медицинскими приборами индивидуального контроля состояния здоровья. Специализация прибора. Весы (Health informatics — Device interoperability — Part 10415: Personal health device communication — Device specialization — Weighing scale)
[6] ISO/IEEE 11073-10417:2017 Информатизация здоровья. Информационное взаимодействие с персональными медицинскими приборами. Часть 10417. Специализация прибора. Глюкометр (Health informatics — Personal health device communication — Part 10417: Device specialization — Glucose meter)
[7] ISO/IEEE 11073-10418:2014 Информатика в здравоохранении. Связь с медицинскими приборами индивидуального контроля состояния здоровья. Часть 10418. Специализация прибора. Монитор международного нормализованного коэффициента (INR) (Health informatics — Personal health device communication — Part 10418: Device specialization — International Normalized Ratio (INR) monitor)
[8] ISO/IEEE 11073-10418:2014/Cor 1:2016 Информатика в здравоохранении. Связь с медицинскими приборами индивидуального контроля состояния здоровья. Часть 10418. Специализация прибора. Монитор международного нормализованного коэффициента (INR). Техническая поправка 1: описание стандарта и тендеры (Health informatics — Personal health device communication — Part 10418: Device specialization — International Normalized Ratio (INR) monitor — Technical Corrigendum 1)
[9] ISO/IEEE 11073-10419:2019 Информатизация здоровья. Связь с медицинскими приборами индивидуального контроля состояния здоровья. Часть 10419. Специализация прибора. Инсулиновая помпа (Health informatics — Personal health device communication — Part 10419: Device specialization — Insulin pump)
[10] ISO/IEEE 11073-10420:2022 Информатизация здоровья. Взаимодействие с приборами. Часть 10420. Связь с медицинскими приборами индивидуального контроля состояния здоровья. Специализация прибора. Анализатор композиционного состава организма (Health informatics — Device interoperability — Part 10420: Personal health device communication — Device specialization — Body composition analyzer)
[11] ISO/IEEE 11073-10421:2012 Информатизация здоровья. Связь с медицинскими приборами индивидуального контроля состояния здоровья. Часть 10421. Специализация прибора. Пневмотахометр [Health informatics — Personal health device communication — Part 10421: Device specialization — Peak expiratory flow monitor (peak flow)]
[12] ISO/IEEE 11073-10422:2017 Информатизация здоровья. Связь с медицинскими приборами индивидуального контроля состояния здоровья. Часть 10422. Специализация прибора. Уриноанализатор (Health informatics — Personal health device communication — Part 10422: Device specialization — Urine analyser)
[13] ISO/IEEE 11073-10424:2016 Информатизация здоровья. Связь с медицинскими приборами индивидуального контроля состояния здоровья. Часть 10424. Специализация прибора. Дыхательная терапевтическая аппаратура при приступах апноэ во сне [Health informatics — Personal health device communication — Part 10424: Device specialization — Sleep apnoea breathing therapy equipment (SABTE)]
[14] ISO/IEEE 11073-10424:2016/Cor 1:2018 Информатизация здоровья. Связь с медицинскими приборами индивидуального контроля состояния здоровья. Часть 10424. Специализация прибора. Дыхательная терапевтическая аппаратура при приступах апноэ во сне. Техническая поправка 1 [Health informatics — Personal health device communication — Part 10424: Device specialization — Sleep apnoea breathing therapy equipment (SABTE) — Technical Corrigendum 1]
[15] IEEE 11073-10425-2023 Информатизация здоровья. Совместимость приборов. Часть 10425. Обмен данными с персональными медицинскими приборами. Специализация прибора. Глюкометр непрерывного действия (CGM) [Health informatics — Device Interoperability Part 10425: Personal Health Device Communication — Device Specialization — Continuous Glucose Monitor (CGM)]
[16] IEEE P11073-10426 Информатика в здравоохранении. Персональные медицинские устройства связи. Специализация устройств. Домашний медицинский уход, окружающая среда, аппарат искусственной вентиляции легких (Health Informatics — Personal Health Device Communication — Device Specialization — Home Healthcare Environment Ventilator)
[17] ISO/IEEE 11073-10427:2018 Информатика в здравоохранении. Связь с медицинскими приборами индивидуального контроля состояния здоровья. Часть 10427. Специализация прибора. Монитор состояния питания медицинских приборов индивидуального контроля (Health informatics — Personal health device communication — Part 10427: Device specialization — Power status monitor of personal health devices)
[18] IEEE 11073-10429-2022 Информатика в здравоохранении. Взаимодействие устройств. Часть 10429: Связь с персональными медицинскими устройствами. Специализация устройств. Спирометрия (Health Informatics — Device Interoperability — Part 10429: Personal Health Device Communication — Device Specialization — Spirometry)
[19] ISO/IEEE 11073-10441:2015 Информатика в здравоохранении. Связь с медицинскими приборами индивидуального контроля состояния здоровья. Часть 10441. Специализация прибора. Монитор физической активности пациентов, страдающих сердечно-сосудистыми заболеваниями (Health informatics — Personal health device communication — Part 10441: Device specialization — Cardiovascular fitness and activity monitor)
[20] ISO/IEEE 11073-10442:2015 Информатика в здравоохранении. Связь с медицинскими приборами индивидуального контроля состояния здоровья. Часть 10442. Специализация прибора. Силомер (Health informatics — Personal health device communication — Part 10442: Device specialization — Strength fitness equipment)
[21] IEEE 11073-10471-2023 Информатика в здравоохранении. Взаимодействие устройств. Часть 10471: Связь с персональными медицинскими устройствами. Специализация устройств. Центр независимой жизнедеятельности (IEEE Health Informatics — Device Interoperability — Part 10471: Personal Health Device Communication — Device Specialization — Independent Living Activity Hub)
[22] HL7 FHIR Release 5. — URL: https://hl7.org/fhir/index.html
[23] Creative Commons. CC0 1.0 Universal (CC0 1.0) Public Domain Dedication. — URL: https://creativecommons.org/publicdomain/zero/1.0/
[24] HAPI FHIR: Complete implementation of the HL7 FHIR standard for healthcare interoperability in Java. — URL: https://hapifhir.io/
[25] RFC 4648 The Base16, Base32, and Base64 Data Encodings
[26] RFC 3001 A URN Namespace of Object Identifiers
[27] RFC 3986 Uniform Resource Identifier (URI): Generic Syntax
[28] RFC 1738 Uniform Resource Locators (URL)
[29] RFC 4122 A Universally Unique IDentifier (UUID) URN Namespace
[30] RFC 4647 Matching of Language Tags
[31] RFC 7515 JSON Web Signature (JWS)
[32] HL7 FHIR Personal Health Device Implementation Guide. — URL: https://github.com/HL7/phd/
[33] RFC 8288 Web Linking
[34] Федеральный закон от 21 ноября 2011 г. № 323-ФЗ «Об основах охраны здоровья граждан в Российской Федерации»
[35] Постановление Правительства Российской Федерации от 31 мая 2023 г. № 894 «Об утверждении Правил маркировки отдельных видов медицинских изделий средствами идентификации и особенностях внедрения государственной информационной системы мониторинга за оборотом товаров, подлежащих обязательной маркировке средствами идентификации, в отношении отдельных видов медицинских изделий»
[36] Personal Health Devices Transcoding. — URL: https://www.bluetooth.com/wp-content/uploads/2019/03/PHD_Transcoding_WP_v16.pdf
[37] Unified Code for Units of Measure (UCUM). — URL: https://ucum.org/
[38] ISO/IEEE 11073-20601:2022 Информатизация здоровья. Взаимодействие с приборами. Часть 20601. Связь с медицинскими приборами индивидуального контроля состояния здоровья. Прикладной профиль. Оптимизированный протокол обмена (Health informatics — Device interoperability — Part 20601: Personal health device communication — Application profile — Optimized exchange protocol)
[39] RFC 5005 Feed Paging and Archiving
[40] RFC 2388 Returning Values from Forms: multipart/form-data
[41] ITU-T. Technical Paper (17 October 2019). HSTP-H812-FHIR In-teroperability design guidelines for personal health systems: Services interface: FHIR Observation Upload for trial implementation
[42] RFC 6749 The OAuth 2.0 Authorization Framework
[43] RFC 7523 JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants
УДК 004:61:006.354ОКС 35.240.80
Ключевые слова: киберфизические системы, персональные медицинские помощники, форматы обмена данными