allgosts.ru35. ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ. МАШИНЫ КОНТОРСКИЕ35.240. Применение информационных технологий

ГОСТ Р ИСО/HL7 27951-2016 Информатизация здоровья. Общие терминологические службы. Выпуск 1

Обозначение:
ГОСТ Р ИСО/HL7 27951-2016
Наименование:
Информатизация здоровья. Общие терминологические службы. Выпуск 1
Статус:
Действует
Дата введения:
01/01/2018
Дата отмены:
-
Заменен на:
-
Код ОКС:
35.240.80

Текст ГОСТ Р ИСО/HL7 27951-2016 Информатизация здоровья. Общие терминологические службы. Выпуск 1



ФЕДЕРАЛЬНОЕ АГЕНТСТВО

ПО ТЕХНИЧЕСКОМУ РЕГУЛИРОВАНИЮ И МЕТРОЛОГИИ

НАЦИОНАЛЬНЫЙ

СТАНДАРТ

РОССИЙСКОЙ

ФЕДЕРАЦИИ

ГОСТР

HCO/HL7

27951—

2016

Информатизация здоровья ОБЩИЕ ТЕРМИНОЛОГИЧЕСКИЕ СЛУЖБЫ

Выпуск 1

(ISO/HL7 27951:2009 Health informatics —

Common terminology services, release 1, IDT)

Издание официальное

Москва

Стандартииформ

2017

ГОСТ Р HCO/HL7 27951—2016

Предисловие

1    ПОДГОТОВЛЕН Федеральным государственным бюджетным учреждением «Центральный научно-исследовательский институт организации и информатизации здравоохранения Министерства здравоохранения Российской Федерации» (ЦНИИОИЗ Минздрава) на основе собственного перевода на русский язык англоязычной версии международного стандарта, указанного в пункте 4

2    ВНЕСЕН Техническим комитетом по стандартизации ТК 468 «Информатизация здоровья» при ЦНИИОИЗ Минздрава — постоянным представителем ISO/TC 215

3    УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 30 ноября 2016 г. № 1894-ст

4    Настоящий стандарт идентичен международному стандарту ISO/HL7 27951:2009 «Информатизация здоровья. Общие терминологические службы, выпуск 1» (ISOyHL7 27951:2009 «Health informatics — Common terminology services, release 1». IDT).

Наименование настоящего стандарта изменено относительно наименования указанного международного стандарта для приведения в соответствие с ГОСТ Р 1.5 (подраздел 3.6)

5    ВВЕДЕН ВПЕРВЫЕ

Правила применения настоящего стандарта установлены е статье 26 Федерального закона от 29 июня 2015 г. Ne 162-ФЗ «О стандартизации в Российской Федерации». Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе «Национальные стандарты», а официальный текст изменений и поправок — е ежемесячном информационном указателе «Национальные стандарты». В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ежемесячном информационном указателе «Национальные стандарты». Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (

© Стандартинформ. 2017

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

II

ГОСТ Р HCO/HL7 27951—2016

Содержание

1    Область применения. Общие терминологические службы (ОТС)..............................1

2    Нормативные ссылки..................................................................3

3    Термины и определения..............................................................3

4    Условные обозначения и сокращения....................................................4

5    Модули ОТС.........................................................................5

5.1    API сообщений и словаря..........................................................5

5.2    Функции времени исполнения и обозревания..........................................6

6    Краткий обзор функций модулей........................................................7

6.1    Функции платформы времени исполнения, предназначенной для уровня сообщений.........7

6.2    Функции платформы времени исполнения, предназначенной для уровня словаря............9

6.3    Функции отображения кодов.......................................................10

6.4    Функции обозревателя уровня сообщений............................................11

6.5    Функции обозревателя уровня словаря..............................................13

7    Модель API сообщений ОТС...........................................................14

7.1    Введение.......................................................................14

7.2    Словарный домен................................................................15

7.3    Набор значений.................................................................16

7.4    Зарегистрированная система кодирования...........................................20

8    Спецификация API сообщений ОТС....................................................21

8.1    Введение.......................................................................21

8.2    Общие элементы сообщений ОТС..................................................21

8.3    API времени исполнения уровня сообщений..........................................25

8.4    API обозревателя на уровне сообщений.............................................33

9    Модель API словаря.................................................................38

9.1    Введение.......................................................................38

9.2    Система кодирования............................................................38

9.3    Кодированное понятие CodedConcept...............................................39

9.4    Обозначение понятия ConceptDesignation............................................40

9.5    Свойство понятия ConceptProperty..................................................40

9.6    Отношение понятий ConceptRelationship.............................................41

10    Спецификация API словаря..........................................................41

10.1    Введение......................................................................41

10.2    Базовые типы данных...........................................................41

10.3    API времени исполнения на уровне словаря.........................................43

10.4    API обозревателя на уровне словаря...............................................46

11    Модель отображения кодов..........................................................55

11.1    Введение......................................................................55

11.2    Отображение кодов.............................................................55

11.3    Класс MapEntry.................................................................56

12    Спецификация отображения кодов....................................................56

12.1    Введение......................................................................56

12.2    Идентификация службы отображения..............................................56

12.3    Отображение кода..............................................................56

III

ГОСТ Р HCO/HL7 27951—2016

12.4    Исключения....................................................................56

12.5    Отображение кода понятия.......................................................57

13    Привязка ОТС к языкам программирования.............................................57

13.1    Преобразование спецификации на языке IDL в программный код на языке Java...........57

13.2    Преобразование спецификации на языке IDL в описание на языке WSDL.................62

14    Сводные требования к службам.......................................................67

14.1    Введение......................................................................67

14.2    Информационные службы сервера................................................67

14.3    Службы, предоставляющие метаданные терминологий ...............................67

14.4    Службы, предоставляющие достул к содержанию терминологии........................68

15    Системы кодирования, используемые в API ОТС.........................................72

16 Спецификация API ОТС на языке IDL..................................................74

16.1    Базовые типы данных HL7........................................................74

16.2    Определение API сообщений ОТС на языке IDL .....................................76

16.3    Определение API словаря ОТС на языке IDL........................................98

17    Описание API ОТС на языке WSDL...................................................119

17.1    Описание API времени исполнения на уровне сообщений.............................119

17.2    Описание API обозревателя на уровне сообщений...................................129

17.3    Описание API времени исполнения на уровне словаря...............................148

17.4    Описание API обозревателя на уровне словаря.....................................154

17.5    Описание API отображения кодов.................................................170

Приложение А (справочное) Эталонная информационная модель HL7........................178

Приложение В (справочное) Типы данных. Абстрактная спецификация........................280

Приложение С (справочное) Словарные домены HL7......................................421

Приложение ДА (справочное) Сведения о соответствии ссылочных международных стандартов

национальным стандартам..............................................430

Библиография.......................................................................430

IV

ГОСТ Р HCO/HL7 27951—2016

НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

Информатизация здоровья ОБЩИЕ ТЕРМИНОЛОГИЧЕСКИЕ СЛУЖБЫ выпуск 1

Health informatics. Common terminology services. Release 1

Дата введения — 2018—01—01

1 Область применения. Общие терминологические службы (ОТС)

Содержание настоящего стандарта должно стать основной международной платформы разработки интерфейса прикладных программ API (Application Programming Interface), который может использоваться программным обеспечением обработки сообщений для доступа к терминологическому содержанию. Сам по себе такой интерфейс не обеспечит полную терминологическую службу. Стандарты Health Level Seven (HL7) Версии 3 (использующие язык XML) основаны на эталонной информационной модели RIM (Reference Information Model), обладающей общей и гибкой структурой. Представление информации в этой модели опирается на доступность терминологических ресурсов, которые могут использоваться для наполнения свойств модели требуемым семантическим содержанием. По возможности стандарт HL7 Версии 3 использует существующие терминологические ресурсы, а не создает новые внутри себя.

Поскольку внешние терминологические ресурсы могут значительно различаться как по содержанию. так и по структуре. ОТС идентифицируют общие функциональные характеристики, которые может предоставлять внешняя терминология. Например, терминологическая служба, совместимая со стандартом HL7, должна быть способной определить, является ли данный код понятия действительным в конкретном ресурсе. Вместо описания таблицы, строки которой содержат идентификаторы ресурса и коды понятий, спецификация ОТС описывает вызов интерфейса прикладных программ API (Application Programming Interface), который может на входе получить идентификатор ресурса и код понятия, а на выходе возвратить значение true (истинный) или false (ложный). Каждый разработчик терминологии свободен реализовать этот вызов API по собственному усмотрению.

Спецификация ОТС не рассчитана на нижеследующее:

•    текущая версия не предназначена к использованию е качестве полной терминологической службы. Ее область применения ограничена функциональностью, необходимой для конструирования, реализации и развертывания пакетов программ, соответствующих стандарту HL7 Версии 3. В той же степени, как язык XML связан с языком SGML. ОТС HL7 рассчитаны на представление достаточного подмножества функций, которые могут быть предоставлены более сложными API. например, теми, что соответствуют спецификации TOS организации OMG;

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

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

Издание официальное

1

ГОСТ Р HCO/HL7 27951—2016

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

Разработка спецификации ОТС HL7 основана на следующих общих принципах:

1)    должно быть нетрудно написать программу, использующую ОТС HL7:

2)    ОТС HL7 предназначены для описания только базовых требований:

3)    конструкция ОТС HL7 должна быть формальной и точной;

4)    первичная технология реализации ОТС HL7 должна быть основана на языке XML;

5)    ОТС HL7 должны быть совместимы с номенклатурой, моделью и подходом, представленными в документе HL7 Vocabulary, модели RIM стандарта HL7 Версии 3 и производными структурами:

6)    по возможности ОТС HL7 должны оставаться согласованным подмножеством Служб терминологических запросов TOS (Terminology Query Services) организации Object Management Group (OMG). пока это не противоречит другим принципам конструирования ОТС HL7. Если будет обнаружено, что модель TOS противоречит принципам конструирования ОТС HL7 или является неполной либо некорректной. то должны быть предприняты все необходимые шаги, чтобы уведомить об этом соответствующую рабочую группу по пересмотру:

7)    ОТС HL7 должны ограничиться теми предположения о форме и структуре терминологии, которая необходима для поддержки реализации стандартов HL7.

Хотя общераспространенного стандарта терминологических служб не существует, на эту тему есть несколько источников материала:

•    спецификация OMG Terminology Query Services (TQS).

Спецификация TQS описывает полную терминологическую службу, но она широко не реализована и ее поддержка со стороны производителей программного обеспечения минимальна. Некоторые считают, что она слишком «тяжеловесна» и при этом опирается на конкретное техническое решение (CORBA). Поскольку стандарт HL7 не предполагает опираться на стандарт TQS. то необходим более общий подход к терминологическим службам, по крайней мере в тех областях, где стандарт HL7 зависит от терминологии:

•    DAML + OIL и язык Web Ontology Language (OWL).

Эти документы не являются спецификациями терминологического сервера, но при этом они содержат элементы представления онтологических аспектов, релевантные некоторым масштабным терминологиям. например. SNOMED Clinical Terms. NHS Clinical Terms Version 3 и GALEN. Однако это предложение. основанное на веб-технологиях, также является тяжеловесным и вряд ли приведет к ранней широко распространенной реализации;

•    спецификации API. рассчитанные на конкретные терминологии.

Примером может служить спецификация API «Read Code — Version 3». разработанная no проекту клинической терминологии NHS Clinical Terms в 1996 году и пересмотренная в 1996 году. На основе похожих принципов ведется работа по созданию API SNOMED СТ. Неофициально признается, что этот конкретный API сольется с ОТС или будет использовать подходящие элементы ОТС там. где это целесообразно. Реализация этого API на основе технологии СОМ обеспечивается по меньшей мере одной свободно распространяемой машиной кодирования (CLUE). Спецификации этого типа идентифицируют многие общие функции, необходимые для доступа к терминологии. Однако они неизбежно специфичны для нужд конкретной терминологии. Явная поддержка единственной определенной модели терминологии позволяет обеспечить ее эффективную реализацию в операционной среде в ущерб гибкости, требуемой для доступа к другим терминологиям;

•    интерфейсы к системам реляционных баз данных, включая SQL и ODBC.

Для «элементарных)» списков кодов простой запрос на языке SQL может оказаться наиболее эффективным способом извлечения кода. Однако многие схемы кодирования в дополнение к парам «значение кода» — «описание значения» имеют другие релевантные свойства, которые могут быть доступными только с помощью вторичной службы. Это не препятствует применению языка SOL. но требует описания общей модели, в соответствии с которой могут исполняться запросы, и эффективных средств, возвращающих требуемые свойства. Такие дополнительные свойства присущи как всей схеме. так и отдельным элементам терминологии:

•    язык терминологических запросов TQL (Terminology Query Language).

Язык TQL. ранее основанный на синтаксисе, подобном языку SQL. в настоящее время реализуется на основе унифицированных идентификаторов ресурсов URI. специфичных для терминологических серверов, разработанных Майклом Хогартом (Michael Hogarth) и ею коллегами в Калифорнийском университете. В языке TQL предусмотрен богатый механизм, предназначенный для оперирования

2

ГОСТ Р HCO/HL7 27951—2016

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

2    Нормативные ссылки

В настоящем стандарте использованы ссылки на следующие документы (для датированных ссылок следует использовать только указанное издание, для недатированных — последнее издание указанного документа, включая все поправки):

(SO/HL7 21731:2006. Health informatics — HL7 Version 3 — Reference information model — release 1 (Информатизация здоровья. HL7, Версия 3. Эталонная информационная модель. Выпуск 1)’>

HL7 2008. Datatype Specification. Abstract Data Types (Спецификация типов данных. Абстрактные типы данных)

3    Термины и определения

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

3.1    интерфейс прикладных программ (application programming interface. API): Совокупность функций, процедур, методов или классов, предоставляемых операционной системой, библиотекой или службой для использования во внешних программных продуктах.

3.2    система кодирования (code system): 8 целях настоящего стандарта под «системой кодирования» понимается система кодов, обозначений, свойств и отношений. К другим общим именам этой сущности относятся «словарь», «терминология», «схема кодирования», «схема классификации» и «онтология».

3.3    ограничение (constraint): Логическое выражение, накладывающее ограничение на значения объектов, принадлежащих некоторому множеству, и тем самым задающее логическое подмножество этого множества.

3.4 _

язык описания интерфейсов (interface description language. IDL): Язык описания интерфейсов используется для описания интерфейса компонента программного обеспечения. Языки IDL описывают интерфейсы способом, не зависящим от языка программирования, чтобы компоненты программного обеспечения, написанные на разных языках, могли обмениваться данными.

[OMG; 2002 [1]]

3.5    идентификатор объекта (object identifier): Число, постоянное, присвоенное объекту и используемое для его уникальной идентификации в коллекции объектов.

3.6    эталонная информационная модель (reference information model. RIM): Информационная модель, разработанная комитетом HL7. используемая для построения всех других информационных моделей, например, уточненных информационных моделей сообщений RMIM и самих сообщений.

3.7    уточненная информационная модель сообщений (refined message information model. RMIM): Структура информации, используемая в стандарте передачи сообщений HL7 Версии 3. описывающая требования к комплексу сообщений.

3.8    стандарт (standard): Техническая спецификация требований к процессам деятельности, реализованная в конкурентоспособной промышленной продукции и в необходимых случаях признаваемая официальными органами стандартизации, например. ИСО.

В настоящее время действует версия ISO/HL7 21731:2014.

3

ГОСТ Р HCO/HL7 27951—2016

3.9 _

терминология (terminology): Любое организованное множество кодов, включая сущности, обычно называемые «наборами кодов», «онтологиями», «словарями», «системами классификации» ит. д.

[Европейская директива 2001/20/ЕС, статья 2е)

3.10

язык описания веб-служб (Web services description language. WSDL): WSDL представляет собой формат описания сетевых служб на языке XML. представляющего эти службы как совокупность конечных точек, оперирующих сообщениями, содержащими информацию, ориентированную на документы или процедуры. Операциям и сообщениям дается абстрактное описание: для определения конечной точки они привязываются к конкретному сетевому протоколу и формату сообщений. Конкретные логически связанные конечные точки объединяются в абстрактные конечные точки (службы)- Для целей описания конечных точек и их сообщений независимо от форматов сообщений или сетевых протоколов, используемых для обмена данными, язык WSDL является расширяемым. При этом описание того, как использовать конкретную конечную точку в сочетании с SOAP 1.1. HTTP GET/ POST и MIME, задается исключительно в привязках.

[W3C: 2001 [2))

4 Условные обозначения и сокращения

В настоящем стандарте используются следующие сокращения:

API

ОТС

CEN

Ell

HL7

HMD

IDL

ITS

ICH

ИСО

ОИДо

RIM

RMIM

SDO

SGML

интерфейс прикладных программ (Application Programming Interface); общая терминологическая служба (Common Terminology Service. CTS);

Европейский комитет no стандартизации, федерация из 26 национальных органов стандартизации, которые также входят в ИСО (Comite Еигорбвп de Normalisation): Европейский союз (European Union);

Health Level Seven Inc.:

иерархическое описание сообщения (Hierarchical Message Description); язык описания интерфейсов (Interface Description Language); спецификация реализуемой технологии (Impiementable Technology Specification); Международная конференция no гармонизации технических требований к регистрации лекарственных препаратов для человека (The International Conference on Harmonisation of Technical Requirements for Registration of Pharmaceuticals for Human Use); International Organization for Standardization. ISO: объектный идентификатор (Object IDentifier): эталонная информационная модель (Reference Information Model): уточненная информационная модель сообщений (Refined Message Information Model); Организация no разработке стандартов (Standards Development Organization): стандартный обобщенный язык разметки (standardized generalized markup language). Стандарт ИСО no платформенно-независимому описанию структурированной информации;

SNOMED — систематизированная номенклатура терминов медицины и ветеринарии (The Systematized Nomenclature of Human and Veterinary Medicine);

SNOMED-CT — систематизированная номенклатура терминов клинической медицины (Systematized Nomenclature of Medicine-Clinical Terms Medicine);

UML    — унифицированный язык моделирования (Unified Modelling Language);

W3C    — Консорциум всемирной паутины (World Wide Web Consortium);

XML    — расширяемый язык разметки (extensible Markup Language).

4

ГОСТ Р HCO/HL7 27951—2016

5 Модули ОТС

5.1 API сообщений и словаря

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

API сообщений специфичен для HL7. Его основная цель — обеспечить широкому спектру программ обработки сообщений удобные и воспроизводимые возможности создания, проверки и преобразования типов данных, произведенных от типа СО (coded data — кодированные данные).

API словаря рассчитан на общее применение'). Он позволяет прикладным программам осуществлять запросы к различным терминологиям* 2) хорошо определенным, согласованным способом. API сообщений включает в себя применение API словаря. На рисунке 2 показан пример взаимодействия программы обработки сообщений со словарем. В этом примере программа обработки сообщений обращается к службе времени исполнения уровня сообщений для заполнения детальных сведений об атрибуте, имеющем тип данных, произведенный от типа CD. Эта служба, в свою очередь, выполняет несколько обращений к службе уровня словаря для получения обозначений кода понятия, имен системы кодирования, версий ее выпусков и т. д.

’) Хотя API словаря и рассчитан на общее применение, он представляет некоторое подмножество тех возможностей. которые должен обеспечивать общий словарньм API. Кроме того, значительная часть номенклатуры, испо/ъзуемой в API словаря ОТС. так или иначе связана со стандартами HL7. и для более общего применения может потребоваться преобразование этого API.

2) В контексте данного документа слово «терминология» означает описание любого организованного множества кодов, включая сущности, обычно называемые «наборами кодов», «онтологиями», «словарями», «системами классификации» и т. д.

5

ГОСТ Р HCO/HL7 27951—2016

Поогсемма обработки

Сгмкба воеиени исполнения

Службе времени испогненж

СООб|Щ—Й

дмиаяяаший

уровня слэааоя

1 эапогжгьДетал^код. код_яэыкаПредстаалендя)

->

5: запогьежые детали кода

2 к>окирОеадпэ1)оп(ио_помятю. код_яэыка) I

и

Э ЬокцэСо4е£уМет(ио_сисгемыКодфоваы«) |

4 к> okupDesi gnat) оп(ид_по нотий.

1

Рисунок 2 — Пример взаимодействия с API сообщений и словаря

5.2 Функции времени исполнения и обозревания

5.2.1    Общие классы пользователей (действующих лиц) ОТС HL7

Классы действующих лиц. предполагаемых пользователями API ОТС HL7, включают в себя:

Программное обеспечение создания сообщений — программное обеспечение, создающее со* общения, соответствующие стандарту HL7. С точки зрения применения словарей процесс создания сообщений включает в себя преобразование внутренних структур сообщений и данных в синтаксис и семантику сообщений стандарта HL7 Версии 3.

Программное обеспечение обработки сообщений — программное обеспечение, получающее и декодирующее сообщения стандарта HL7 Версии 3 и действующее в соответствии с содержанием со* общений. Процесс обработки сообщений включает в себя шаги проверки и преобразования сообщений, а также принятие решений о дальнейших действиях.

Разработчики модели RIM — сочетание людей и инструментальных средств, создающих содер* жание и определения сообщений стандарта HL7.

Разработчики программного обеспечения — люди, создающие программное обеспечение, создающее, проверяющее и обрабатывающее сообщения стандарта HL7 Версии 3.

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

5.2.2    Раздельные профили требований

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

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

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

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

6

ГОСТ Р HCO/HL7 27951—2016

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

В дальнейшем изложении профиль требований к созданию и обработке сообщений будет имено* ваться профилем времени исполнения, а профиль разработки словаря и моделирования — профилем обозревателя.

5.2.3    Трансляция

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

5.2.4    Отдельные компоненты спецификации

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

Таблица 1 — Компоненты спецификации

Платформа времени исполнения

Обозреватель

API сообщений

Платформа сообщений

Обозреватель сообщений

API словаря

Платформа словаря

Обозреватель словаря

Преобразование

Преобразование словаря

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

6 Краткий обзор функций модулей

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

6.1 Функции платформы времени исполнения, предназначенной для уровня сообщений

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

Таблица 2 — Функции платформы времени исполнения, предназначенной для уровня сообщений

Функция

Входные параметры

Выходные данные

Описание

getServiceName

Имя службы

Возвращает имя. присвоенное службе ее поставщиком

getServioe Version

Идентификатор версии

Возвращает текущую версию программного обеспечения службы

7

ГОСТ Р HCO/HL7 27951—2016

Продолжение таблицы 2

Функция

входные пэраыетры

Выходные данные

Описание

getService Description

Описание службы

Возвращает описание функции службы, авторов, сведений об авторских правах и т. д.

getHL7ReleaseVersion

Идентификатор версии

Возвращает идентификатор верст выпуска стандарта HL7. которая в настоящее время поддерживается службой

getCTSVersion

Старший и младший номер версии

Возвращает номер версии ОТС. реализованной службой

getSupportedMatcJi

Algorithms

Список алгоритмов совпадения

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

getSupportedVocabulary

Domains

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

Список имен словарных доменов

Возвращает список словарных доменов, распознаваемых данной службой, имена которых совпадают с переданным образцом

validateCode

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

Список ошибок и предупреждений

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

validateTranslation

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

Список ошибок и предупреждений

Сравнивает компоненты преобразования, если таковые присутствуют в переданном значении типа CD. с заданным словарным доменом и его контекстом

translateCode

Имя словарного домена, преобразуемый кодированный атрибут, целевая система кодирования и целевой прикладной контекст (область применения)

Преобразование кодированного атрибута

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

8

ГОСТ Р HCO/HL7 27951—2016

Окончание таблицы 2

Функция

Входные параыетры

выходные данные

Описание

filllnDetails

Кодированный атрибут и код целевого языка

Значение кодированного атрибута с допогыи-тельными деталями

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

subsumes

Родительский кодированный атрибут, дочерний кодированный атрибут

True/False

Определяет, действительно ли значение переданного родительского кодированного атрибута охватывает (или включает в себя) переданное значение дочернего атрибута

are Equivalent

Первый кодированный атрибут, второй кодированный атрибут

True/False

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

lookupValueSet

Expansion

Имя словарного домена, прикладной контекст (область применения), язык текста расширения, признак. указывающий, выполнить ли полное расширение или только расширение на один уровень, ограничения времени и размера

Иерархическое расширение набора значений, ассоциированного с доменом в переданном контексте

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

expandValuaSet

ExpansionContext

Непрозрачный контекст расширения, возвращенный ранее вызванными функциями lookupValueSet Expansion или expand ValueSetExpansionContext

Дальнейшее иерархическое расширение набора значений, ассоциированного с доменом в переданном контексте

Возвращает дальнейшее расширение вложенного содержания набора значений

6.2 Функции платформы времени исполнения, предназначенной для уровня словаря

Функции, перечисленные в таблице 3. используются службой времени исполнения на уровне со* общений и службой обозревателя уровня сообщений, а также службой обозревателя уровня словаря. Они используются как самостоятельные.

Таблица 3 — Функции платформы времени исполнения, предназначенной для уровня словаря

Функция

входные параметры

выходные данные

Описание

getServiceName

Имя службы

Возвращает имя. присвоенное службе ее поставщиком

getService Version

Идентификатор версии

Возвращает текущую версию программного обеспечения службы

getService Description

Описание службы

Возвращает описание функции службы, авторов, сведений об авторских правах и т. д.

getCTSVersion

Старший и младший номер версии

Возвращает номер версии ОТО. реализованной службой

9

ГОСТ Р HCO/HL7 27951—2016

Окончание таблицы 3

Функция

Входные параыетры

Выходные данные

Описание

gelSupportedCode

Systems

Ограничения времени и размера

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

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

lookupCodeSystemlnfo

Имя или идентификатор системы кодирования

Сведения о системе кодирования, включая имя. идентификатор, версию, поддерживаемые языки, поддерживаемые отношения, поддерживаемые свойства и т. д.

Возвращает детальную информацию об указанной системе кодирования

isConceptldVal»d

Идентификатор системы кодирования, код понятия и признак, указывающий, считаются ли неактивные понятия допустимыми

True/False

Определяет, является ли код понятия допустимым для текущей версии заданной системы кодирования

lookupDesignation

Идентификатор системы кодирования, код понятия и код целевого языка

Текст обозначения понятия

Возвращает предпочтительное обозначение кода понятия на указанном языке

areCodesRelated

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

True/False

Определяет, существует ли поименованное отношение между понятиями, заданными исходным и целевым кодом

6.3 Функции отображения кодов

Функции отображения кодов перечислены в таблице 4.

Таблица 4—Функции отображения кодов

Функция

Входные параыетры

Выходные данные

Описание

getServiceName

Имя службы

Возвращает имя. присвоенное службе ее поставщиком

getServroeVersion

Идентификатор версии

Возвращает текущую версию программного обеспечения службы

getService Description

Описание службы

Возвращает описание функции службы, авторов, сведений об авторских правах и т. д.

getCTSVersioo

Старший и младший номер версии

Возвращает номер версии ОТС, реализованной данной службой

10

ГОСТ Р HCO/HL7 27951—2016

Окончание таблицы 4

Функция

Входные параыетры

Выходные данные

Описание

getSupportedMaps

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

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

mapConceptCode

Идентификатор исходной системы кодирования, код понятия в этой системе, идентификатор целевой системы кодирования и имя ресурса отображения

Соответствующий код понятия в целевой системе кодирования и признак качества отображения

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

6.4 Функции обозревателя уровня сообщений

Функции обозревателя уровня сообщений перечислены в таблице S.

Таблица 5 — Функции обозревателя уровня сообщений

Функция

Входные параистры

Выходные данные

Описание

getServiceName

Имя службы

Возвращает имя. присвоенное службе ее поставщиком

getServioe Version

Идентификатор версии

Возвращает текущую версию программного обеспечения службы

getService Description

Описание службы

Возвращает описание функции службы, авторов, сведений об авторских правах и т. д.

getHL7ReleaseVersion

Идентификатор версии

Возвращает идентификатор версии выпуска стандарта HL7. которая в настоящее время поддерживается службой

getCTSVersion

Старший и младший номер версии

Возвращает номер версии ОТС. реализованной службой

getSupportedMatch

Algorithms

Список алгоритмов совладения

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

lookupVocabulary

Domain

Имя словарного домена

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

Извлечение всей информации. известной о заданном словарном домене

11

ГОСТ Р HCO/HL7 27951—2016

Продолжение таблицы 5

Функция

входные параыетры

Выходные данные

Описание

lookupValueSet

Идентификатор или имя набора значений

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

Извлечение детальной информации о наборе значений (включая словарные домены. конструкторы и т. д.)

lookupCodeSystem

Идентификатор или имя системы кодирования

Имя. идентификатор, авторские права, выпуск и информация о регистрации

Извлечение детальной информации о системе кодирования

lookupValueSet For Domain

Имя словарного домена и прикладной контекст (область применения)

Имя и идентификатор набора значений, использованного для данного словарного домена

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

lookupVocabulary

Domain

Имя словарного домена

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

Извлечение всей информации. известной о заданном словарном домене

lookupValueSet

Идентификатор или имя набора значений

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

Извлечение детальной информации о наборе значений (включая словарные домены. конструкторы и т. д.)

lookupCodeSystem

Идентификатор или имя системы кодирования

Имя. идентификатор, авторские права, выпуск и информация о регистрации

Извлечение детальной информации о системе кодирования

lookupValueSetFor

Domain

Имя словарного домена и прикладной контекст (область применения)

Имя и идентификатор набора значений, использованного для данного словарного домена

Возвращает идентификатор набора значений, который мог бы использоваться 8 заданном контексте (если таковой существует)

12

ГОСТ Р HCO/HL7 27951—2016

Окончание таблицы 5

Функция

входные параыетры

выходные данные

Описание

IsCodelnValueSet

Идентификатор или имя набора значений, идентификатор системы кодирования и код понятия, а также признак, включать пи такой «ведущий код» 8 состав набора значений

True/False

Определяет, является ли указанный код понятия допустимым для заданного набора значений

6.5 Функции обозревателя уровня словаря

Функции обозревателя уровня словаря перечислены в таблице 6.

Таблица 6 — Функции обозревателя уровня сообщений

Функция

входные параметры

Выходные данные

Описание

getServiceName

Имя службы

Возвращает имя. присвоенное службе ее поставщиком

getService Version

Идентификатор версии

Возвращает текущую версию программного обеспечения службы

getServioe Description

Описание службы

Возвращает описание функции службы, авторов, сведений об авторских правах и т. д.

getCTSVersion

Старший и младший номер версии

Возвращает номер версии ОТС, реализованной службой

getSupportedMatch

Algorithms

Список алгоритмов совпадения

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

getSupportedAttributes

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

Список атрибутов модели RIM. известных обозревателю

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

getSupported

CodeSystems

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

Список систем кодирования. известных обозревателю

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

lookupConcept

CodesByDesignation

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

Список идентификаторов систем кодирования и кодов понятий

Возвращает список кодов понятий, чьи обозначения совпадают с заданным образом на заданном языке, если таковые найдены

lookupConcept

CodesByProperty

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

Список идентификаторов систем кодирова-ния/кодов понятий

Возвращает список кодов понятий, чьи свойства соответствуют заданным критериям

13

ГОСТ Р HCO/HL7 27951—2016

Окончание таблицы 6

Функция

Входные параыетры

Выходные данные

Описание

должны ли извлекаться неактивные понятия, необязательный список типов среды (mime) свойств, ограничения времени и размера

lookupComplete Coded Concept

Идентификатор системы кодирования и код понятия

Все. что известно о понятии (обозначения, свойства, отношения и т.Д.)

Возвращает полное описание заданного кода понятия

lookupDesignations

Идентификатор системы кодирования и код понятия, поисковый образец и алгоритм совпадения, целевой язык

Список обозначений

Возвращает все обозначения заданного кода понятия. соответствующие заданным критериям

lookupProperties

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

Список свойств понятия (код свойства, значение. язык, тип среды)

Возвращает свойства заданной системы кодиро-вания/кода понятия, соответствующих заданным критериям

lookupCodeExpansion

Идентификатор системы кодирования и код понятия, код отношения. признак направления отношения, код целевого языка, ограничения времени и размера

Иерархический список расширения кода

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

7 Модель API сообщений ОТО

7.1    Введение

В настоящем разделе описана модель, положенная в основу API сообщений ОТС. Она определяет отношения между кодированными атрибутами HL7 и словарем. Она основана на метамодели HL7_ V3_Meta-Model Version 1.16 и. исключая цветовое кодирование, по возможности остается совместимой с ее нотацией и типами данных. В настоящем стандарте не представлена полная или глубокая модель всех логических сущностей, образующих систему кодирования1'. Его основная цель — описать классы и отношения, имеющие прямое отношение к содержанию кодированных атрибутов HL7 с точки зрения метамодели.

Модель API словаря описывает модель ОТС с точки зрения словаря и предусматривает дополнительную информацию о кодах понятий, обозначениях, отношениях и т. д.

7.1.1    Нотация

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

’I В настоящем стандарте термин «система кодирования» означает систему кодов, описаний, обозначений, свойств и отношений. К другим общим именам этой сущности относятся «словарь», «терминология», «схема кодирования». «схема классификации» и «онтология».

14

ГОСТ Р HCO/HL7 27951—2016

Обозначения, принятые в настоящей модели, используют полуформальную нотацию, основанную на содержании модели:

•    имена классов выделены полужирным шрифтом (например. VocabularyDomaln. ValueSet):

•    имена атрибутов выделены курсивом (например, vocabularyDomain_name. vafuaSat_id);

-    имена отношений подчеркнуты (например, экземпляр класса Vocabulary Domain представлен нулем или более экземплярами классов VocabularyDomainValueSets).

При необходимости кратности отношений выражаются приведенными ниже формами или близ* кими к ним:

-    1..1 «экземпляр класса Class 1 должен иметь отношение ровно с одним экземпляром класса Class 2»;

•    0..1 «экземпляр класса Class 1 может иметь отношение не более чем с одним экземпляром класса Class 2»:

•    1..* «экземпляр класса Class 1 должен иметь отношение с одним или несколькими экземплярами класса Class 2»:

•    1..* «экземпляр класса Class 1 может иметь отношение с нулем или несколькими экземплярами класса Class 2».

7.2 Словарный домен

Словарный домен служит связующим звеном между кодированным атрибутом HL7 и набором (наборами) допустимых кодов понятий этого атрибута. Словарный домен представляет абстрактное концептуальное пространство наподобие «страны мира», «пол лица, используемый для административных целей» и т. д.

На рисунке 3 показано отношение между словарными доменами и атрибутами HL7.

Рисунок 3 — Атрибуты модели RIM и словарные домены

Экземпляр класса Attr1bute_domain_constraint (ограничение домена атрибута) должен ограничивать допустимые значения ровно одного экземпляра класса Attribute (атрибута модели RIM). Он ограничивает допустимые значения атрибута теми, что описаны ровно одним экземпляром класса VocabularyDomaln (словарный домен). Экземпляр класса VocabularyDomaln может описывать допустимые значения одного или нескольких экземпляров класса Attribute_domaln_constra!nt (ограничение домена атрибута). Экземпляр класса DIM_attribute_row (строка атрибута модели DIM) должен быть

15

ГОСТ Р HCO/HL7 27951—2016

основан ровно на одном экземпляре класса Attribute, взятом из модели HL7. и используется для указания на присутствие атрибута в специфичной информационной модели домена DIM (domain information model). Экземпляр класса DIM.attribute.row наследует все ограничения экземпляра класса Attribute, на котором он основан, и. в свою очередь, может быть ограничен нулем или более экземплярами класса DIM.attribute.domain.constraint (ограничение домена атрибута модели DIM).

Иерархическое описание сообщения HMD (hierarchical message description) полностью определяет структуру совокупности сообщений. Экземпляры класса HMD_attribute_row (строка атрибута в HMD) являются компонентами HMD. и каждый экземпляр класса HMD_attribute_row основан ровно на одном экземпляре класса DIM.attribute.row. Экземпляр класса HMD.attrlbute.row наследует все ограничения соответствующего экземпляра класса DIM.attribute.row и может быть далее ограничен не более чем одним экземпляром класса HMD_domain_constraint (ограничение домена HMD).

Каждый экземпляр класса VocabularyDomain имеет уникальное имя (атрибут vocabularvOomain name), а также описание пространства понятий (атрибут description), которое он представляет. Экземпляры класса VocabularyDomain. которые описывают допустимые значения экземпляров класса DIM. attribute_domain_constraint или класса HMD domain constraint, ограничивают пространство понятий соответствующего экземпляра класса DIM.attribute.domain или класса Attribute.domain.constralnt. на котором основан домен.

Пример, приведенный в таблице 7. показывает, каким образом словарные домены могут быть ограничены в зависимости от атрибута, строки атрибута модели DIM или строки иерархического описания сообщения HMD.

Таблица 7 — Ограничения словарных доменов

Лтрибу!

Словарный домен

Описание

Ограничиввеыый домен

sourceCountry

Country

Страна мира

sourceCountry(DIM)

HL7MemberCountry

Страна — официальный член комитета HL7

Country

sourceCountry(HMD)

EUHL7MemberCountry

Европейская страна — официальный член комитета HL7

HL7MemberCountry

7.2.1 Дополнительные ограничения 1

Примечание — В этом контексте ограничение относится к самой модели, а не кдоменам атрибутов.

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

2.    Любой экземпляр класса VocabularyDomain. описывающий допустимые значения экземпляра класса DIM.attribute.domain.constraint. должен быть основан на экземпляре класса VocabularyDomain. соответствующем экземпляру класса Attribute.

3.    Любой экземпляр класса VocabularyDomain. описывающий допустимые значения экземпляра класса RIM.attribute.domain.constraint. должен быть основан на экземпляре класса VocabularyDomain. соответствующем экземпляру класса DIM.attribute.row, если таковой существует, либо экземпляру класса Attribute.

7.3 Набор значений

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

Экземпляр класса VocabularyDomain может быть представлен нулем или несколькими экземплярами класса ValueSet (набор значений). Хотя абстрактные атрибуты моделей RIM и DIM не обязаны быть представлены какими-либо экземплярами класса ValueSet. экземпляр класса VocabularyDomain. описывающий допустимые значения кодированных экземпляров класса Attribute, используемых в фактических сообщениях, должен быть представлен не менее чем одним экземпляром класса Value.set.

16

ГОСТ Р HCO/HL7 27951—2016

Рисунок 4 — Наборы значений

7.3.1    Связи между словарными доменами и наборами значений

Экземпляр класса VocabularyDomalnValueSet (набор значений в словарном домене) представ* ляет ассоциацию ровно между одним экземпляром класса VocabularyDomain и одним экземпляром класса ValueSet. Каждая ассоциация между экземпляром класса VocabularyDomain и экземпляром класса ValueSet может применяться в нуле или более экземпляров класса ApplicationContext (контекст применения). Экземпляр класса ApplicationContext именует конкретную геополитическую единицу (например. Европейский союз. Канада) и/или отрасль (например, ветеринарную медицину, общественное здоровье) и т. д. и может служить областью применения для нуля или более ассоциаций, представленных экземплярами класса VocabularyDomalnValueSet.

7.3.2    Определение наборов данных

Экземпляр класса ValueSet может включать в себя список, состоящий из нуля и более экземпляров класса CodedConcept (кодированное понятие), взятых из одного и тою же экземпляра класса CodeSystem (система кодирования). Экземпляр класса ValueSet может представлять:

-    все кодированные понятия CodedConcept. определенные ровно в одной системе кодирования CodeSystem:

-    конкретный список кодированных понятий CodedConcept. определенных ровно в одной системе кодирования CodeSystem:

-    совокупность кодированных понятий CodedConcept. представленных другим набором значений ValueSet.

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

17

ГОСТ Р HCO/HL7 27951—2016

Ожидается, что наборов значений столь много, что просто невозможно присвоить каждому из них уникальную мнемонику или значащее имя. Основным идентификатором экземпляра класса ValueSet является атрибут valueSet_id. имеющий числовое значение, не имеющее смысловой нагрузки1*. При не* обходимости атрибут valueSet_name может также содержать уникальный «смысловой» идентификатор набора значений. Этот атрибут предназначен для коммуникаций между углеродными формами жизни.

Класс ValueSet имеет атрибут description (описание), описывающий назначение и цель создания набора значений. Он имеет также атрибут definingExpression (определяющее выражение), предназначенный для хранения формального машиночитаемого выражения, которое может использоваться для конструирования набора значений. Значение и интерпретация этого выражения в данном документе не обсуждаются. Оба атрибута {description и definingExpression) не обязательны. Еще один атрибут класса ValueSet. а именно. allCodes (все коды), описан ниже.

7.3.3 Определение содержания набора значений

Набор значений ValueSet может быть построен из одного другого набора значений ValueSet либо может быть основан ровно на одной системе кодирования CodeSystem. либо может быть построен из того и другого2*. Система кодирования CodeSystem определяет нуль или более кодированных понятий CodedConcepts. которые, в свою очередь, обозначают релевантные классы или сущности в конкретной области интереса. Системы кодирования могут ранжироваться от простой таблицы пола человека до классификаторов типа МКБ-9 и до семантически богатых систем, основанных на логических представлениях, например. OpenGalen или SNOMED-CT. Поскольку многие системы кодирования регулярно пересматриваются. полезно регистрировать версию выпуска ReleaseVersion, использованную для определения данного набора значений ValueSet в конкретный момент времени. Набор значений ValueSet может быть определен с использованием не более одной версии ReleaseVersion. Определение с помощью отношения служит исключительно для справочных целей и для представления содержания набора значений службы ValueSet могут использовать более позднюю версию системы кодирования31. Более детальное обсуждение систем кодирования приведено ниже, в подразделе, описывающем API словаря ОТС.

7.3.3.1 Представление всего содержания системы кодирования

Присвоив значения TRUE атрибуту allCodes, можно указать, что в данный набор значений ValueSet должны быть включены все кодированные понятия CodedConcept. определенные в системе кодирования CodeSystem. на которой основан этот набор. Такой набор значений ValueSet не может дополнительно включать в себя ссылки на кодированные понятия CodeReference Пример набора значений, представляющего всю систему кодирования, приведен в таблице 8.

Таблица 8 — Набор значений, представляющий все содержание системы кодирования

vslueSoljd

valueSel_name

description

allCodes

CodeSystem

Вер

сия

2.16.840.1.11

3883.1.11.1

AdmmistrativeGender

Пол лица, используемый для административных целей (в отличие от клинического пола)

True

2.16.840.1.11

3883.5.1

5

7.3.3.2 Представление частей содержания системы кодирования

Набор значений ValueSet может включать в себя нуль или более кодированных понятий CodedConcept. определенных в системе кодирования CodeSystem. на которой он основан. Это выполняется с помощью включения в набор значений одной или нескольких ссылок CodeReference. Такая ссылка связывает кодированное понятие CodedConcept с набором значений ValueSet. Она должна ссылаться ровно на одно кодированное понятие CodedConcept. При этом атрибут relation^code подразумевает неявные ссылки на все кодированные понятия CodedConcept. являющиеся целью

’• В качестве такого значения, скорее всего, будет использоваться объектный идентификатор ИСО с корнем. 2.16.840.1.113883.1.11, но это решение окончательно не принято.

21 Можно сконструировать набор значений, ссылающийся на другие наборы значений, извлеченные более чем из одной системы кодирования. Однако конкретный набор значений может напрямую ссылаться только на понятия. извлеченные из единственной системы кодирования.

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

18

ГОСТ Р HCO/HL7 27951—2016

отношения ConceptRelationship к явно включенному кодированному понятию CodedConcept В ссылке CodeReference можно указать, что само это ссылочное понятие CodedConcept включено в набор значений или исключено из него. С помощью отношения ConceptRelationship можно включить все целевые коды понятий или только конечные узлы (листья). Эти различные возможности отражены в значениях атрибутов includeReferencedCode, relationship_code и ieafOnly, приведенных в таблице 9.

Таблица 9 — Варианты значений атрибутов, управляющих ссылками на понятия

aXCodes

includeReferencedCode

relationship_code

leatOnly

Описание

True

Включает в набор значений все коды, описайте в системе кодирования

False

True

Включает в набор значений только ссылочный код понятия

False

True

hasSubtype

False

Включает в набор значений ссылочный код и есе его подтипы

False

False

hasSubtype

False

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

False

False

hasSubtype

True

Включает в набор значений только листовые подтипы ссылочного кода

Иные сочетания значений атрибутов, кроме тех. что перечислены в таблице 9. не допустимы. По возможности значения атрибута relatk»n_code должны браться из системы кодирования HL7 ReiationshipCode.

7.3.4 Включение в набор значений других наборов значений

Набор значений ValueSet может быть также построен, используя нуль или более дополнительных наборов значений. Включение в его состав набора значений ValueSet означает, что все кодированные понятия CodedConcept. представленные включаемым набором, должны стать частью результирующего набора. Класс ValueSetConstructor (конструктор набора значений) служит двум целям:

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

2)    Использование этого класса позволяет включать в результирующий набор ValueSet кодируемые понятия CodedConcept. взятые более чем из одной системы кодирования CodeSystem.

В таблице 10 приведен пример конструирования набора значений HL7Conformancelnclusion. включающего в себя набор значений InclusionNotMandatory. который, в свою очередь, включает в себя набор IndusionNotRequired.

Таблице 10 — Пример конструирования наборов значений

usedToBuddSet

(имя)

mcludedSel

(имя)

indudeHeadCode

2.16.840.1.1138

83.1.11.10010

HL7Conformancelndusion

2.16.840.1.1138

83.1.11.10012

IndusionNot

Mandatory

False

2.16.840.1.1138

83.1.11.10012

InclusionNotMandatory

2.16.840.1.1138

83.1.11.10015

IndusionNot

Required

True

7.3.5 Головные коды

Набор ValueSet значений ссылается на совокупность кодированных понятий CodedConcept. Нередко ассоциация между набором значений ValueSet и коллекцией кодированных понятий CodedConcept означает категоризацию, отношение «часть — целое» или иное иерархическое отношение. в котором сам набор значений представляет «целое» (родителя), а коды понятий — отдельные «части» (потомки). В этом случае в системе кодирования может существовать соответствующий код понятия, представляющий подобное понятие «целого» или «родителя». Такой код будет именоваться

19

ГОСТ Р HCO/HL7 27951—2016

«головным кодом» ассоциированного набора значений. Многие кодированные атрибуты модели HL7 RIM могут иметь разные степени общности. 8 примере набора значений, указанном в таблице 10. набор значений InclusionNotRequired имеет головной код NR (не требуется) и два подчиненных кода — X (исключен) и RE (требуется, но может быть пустым). Значение True атрибута indudeHeadCode, указанное во второй строке этой таблицы, означает, что для этого набора допустимыми значениями могут быть X (исключен). RE (требуется, но может быть пустым) и NR (включение не требуется по неслецифич-ной причине).

Если набор значений используется для построения другого набора, то головной код может быть или не быть частью включаемого набора. Тем самым обеспечивается возможность того, что сообщество HL7 называет «абстрактными» и «специализируемыми» наборами значений. Набор значений ValueSet может быть идентифицирован не более чем одним кодированным понятием, называемым «головным кодом». Кодированное понятие CodedConcept может служить головным кодом для нуля и более наборов значений ValueSet.

7.4 Зарегистрированная система кодирования

Многие системы кодирования, используемые в стандартах HL7. предоставляются внешними организациями. Класс CodeSystem. который будет определен в этом документе позже, представляет характеристики, общие для всех систем кодирования, используемых в среде HL7. Комитет HL7 ведет также внутренний регистр систем кодирования, содержащий их метаданные. Цель этого регистра — служить центральным хранилищем метаданных всех систем кодирования, которые могут использоваться в сообщениях, соответствующих стандартам HL7. вне зависимости от того, являются ли они внутренними для места реализации или системы либо общепринятыми и санкционированными для ряда систем.

С точки зрения комитета HL7, регистрация не означает «санкционирование». Она является просто ссылкой. В процессе регистрации системе кодирования присваивается объектный идентификатор (ОИД). если его у нее еще не было. На рисунке 5 показана диаграмма классов зарегистрированной системы кодирования.

Рисунок 5 — Зарегистрированная система кодирования

20

ГОСТ Р HCO/HL7 27951—2016

Класс CodeSystemRegistration (регистрация системы кодирования) имеет следующие атрибуты:

•    sponsor — именование, адрес и другие подобные данные лица либо организации, которая официально спонсирует эту систему кодирования для комитета HL7:

•    publisher — наименование, адрес и другие подобные данные организации, ответственной за создание и ведение этой системы кодирования:

•    verstonReportingMelhod — описание того, как и сколь часто создаются и распространяются новые версии:

•    licensinglnformation — описание требуемых лицензий, цены и способа приобретения;

•    inUMLS — значение TRUE указывает, что кодированные термины, определенные в этой системе кодирования, включены в Унифицированную систему медицинского языка UMLS (Unified Medical Language System);

•    systemSpedficLocatorlnfo — информация, специфичная для издателя системы кодирования. Она служит для определения или идентификации конкретной системы кодирования. Комитет HL7 может иногда использовать атрибут systemSpedficLocatorlnfo для идентификации соответствующей таблицы стандарта HL7 2.x, если таковая имеется;

•    codeSystemType_code — код. имеющий значения I (система кодирования является внутренней, ведется и распространяется комитетом HL7). Е (ведется и распространяется третьей стороной), EI (ведется третьей стороной, но распространяется комитетом HL7).

8 Спецификация API сообщений ОТО

8.1    Введение

API сообщений ОТС (CTSMAPI — CTS Message API) состоит из двух разделов — раздел времени исполнения, определяющий комплекс функций, необходимых для каждодневных операций программного обеспечения, обрабатывающего сообщения, соответствующие стандарту HL7 Версии 3. и раздел обозревателя, определяющего функции, предназначенные для разработки и конструирования этих сообщений. Программному обеспечению, использующему функции обозревателя, может понадобиться доступ к функциям времени исполнения, в то время как программное обеспечение времени исполнения может не иметь доступа к функциям обозревателя.

8.2    Общие элементы сообщений ОТС

8.2.1 Основные элементы данных

В следующем пункте определены основные типы данных, используемые в API сообщений ОТС. Все типы, имена которых имеют префикс «types::», основаны на стандарте HL7 Версии 3 Data Types и далее здесь не обсуждаются.

Основные типы данных в API сообщений ОТС включают в себя:

•    CTSVersionld — структура, содержащая старшую и младшую части номера версии спецификации ОТС. У текущей версии старшая часть равна 1. младшая — равна 0 (1.0);

-    CodeSystemld — уникальный идентификатор системы кодирования. В контексте стандартов HL7 им должен быть объектный идентификатор ИСО (ОИД). присвоенный комитетом HL7. если таковой имеется. Другие виды идентификаторов, например UUID. определенный для среды распределенных вычислений DCE (Distributed Computing Environment), и т. д.. могут использоваться в качестве идентификаторов систем кодирования вне среды применения стандартов HL7. В этих случаях разработчик должен предупреждать любые конфликты пространств имен, которые могут возникать между ОИД и другими идентификаторами:

-    CodeSystemName — имя системы кодирования. Как идентификатор системы кодирования, так и ее имя уникальны в пространстве имен, контролируемом стандартом HL7 Версии 3. но в общем случае уникальность не гарантируется;

•    ConceptCode — код. уникально представляющий класс или понятие в данной системе кодирования:

-    VocabularyDomainName — уникальное имя словарного домена HL7;

-    ReteaseVersionld — идентификатор, уникально обозначающий выпуск/еерсию в контексте системы кодирования;

-    ValueSetld — объектный идентификатор ИСО (ОИД). уникально идентифицирующий набор значений HL7;

21

ГОСТ Р HCO/HL7 27951—2016

•    ValueSetName — уникальное имя или мнемокод набора значений. Не у всех наборов значений есть и идентификатор, и имя. но если таковые имеются, то они должны быть уникальны:

•    Conceptld — сочетание идентификаторов системы кодирования и кода понятия, являющееся глобально уникальным именем понятия:

•    ReleaseVersionid — уникальный идентификатор версии или выпуска одной или нескольких си* стем кодирования:

•    ExpansionContext — непрозрачный большой двоичный объект, используемый для передачи контекстной информации между сервером и клиентом.

8.2.2 Коды понятий

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

•    LanguageCode — код разговорного или письменного языка, конструируемый по правилам, описанным в документе IETF RFC 3066 — Tag for identification of Languages (теги идентификации языка). Этот код состоит из нескольких субтегов, разделенных дефисами {«•»). Первый субтег идентифицирует основной код языка. По возможности он должен быть взят из ИСО 639-1 «Codes for the representation of names of languages — Part 1: Alpha-2 code» (Коды для представления названий языков. Часть 1. Двухбуквенный код). Если двухбуквенный код отсутствует, то надо взять код из ИСО 639-2 «Codes for the representation of names of languages — Part 2: Alpha-3 code» (Коды для представления названий языков. Часть 2. Трехбуквенный код). Существует также дополнительный механизм спецсимволов, который в настоящем стандарте не описан.

Второй субтег не обязателен. Если он присутствует, то должен иметь длину от 2 до 8 символов. Если его длина равна двум, то он должен содержать двухбуквенный код страны, взятый из ИСО 3166-1 «Codes for the representation of names of countries and their subdivisions — Part 1: Country codes» (Коды для представления названий стран и единиц их административно-территориального деления. Часть 1. Коды стран). Если длина субтега от 3 до 8 символов, то он должен содержать ксщ. взятый из регистра тегов языков организации IANA. Дополнительные субтеги используются, если надо уточнить информацию о языке:

•    RelationshipCode — код понятия, уникально определяющего конкретное отношение, имеющее место в системе кодирования. По возможности коды отношений должны браться из системы кодирования HL7 ConceptRelationship:

•    AppticationContextCode — код. идентифицирующий контекст или область применения, например, геополитическое образование, прогрессию или другую сферу.

- OataTypeCode — код. идентифицирующий тип данных атрибута модели RIM (например, CD. СЕ. CS.8IN, ВТит.д.).

•    CodingStrengthCode — код. указывающий, как должны трактоваться некодированные значения атрибута, определенного в стандарте HL7 (CWE — кодированный с разрешением исключений, CNE — кодированный без исключений):

•    ValueSetNodeTypeCode — код. определяющий тип набора значений, возвращаемого в виде иерархического списка. Коды имеют следующие значения: А (абстрактный) означает, что набор значений не может быть выбран: S (специализируемый) означает, что набор значений может быть выбран, но имеет дальнейшие уточнения: L (list) означает, что узел представляет выбираемый код понятия, которое не имеет дальнейших уточнений:

. CodeSystemTypeCode — код, имеющий значения I (система кодирования является внутренней, которая ведется комитетом HL7). Е (ведется третьей стороной). EI (ведется третьей стороной, но в распоряжение комитета HL7 предоставлена внутренняя копия):

•    MatchAlgorithmCode — код. идентифицирующий алгоритм совпадения строк, используемый во внутренних функциях поиска.

В таблице перечислены системы кодирования и идентификаторы ОИД. используемые в MAPI сообщений. предоставляемом ОТС.

Таблице 11 — Идентификаторы ОИД и имена кодируемых элементов данных

Элемент данных МАРТ

ОИД системы кодирования

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

Описание

LanguageCode

2.16.840.1.11368

3.6.99

ISO 639-1 Two character Alpha Language Codes

Двухсимвольные коды языков ИСО 639-1

22

ГОСТ Р HCO/HL7 27951—2016

Окончание таблицы 11

Элемент данных MAPI

ОИД системы кодирования

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

Описание

Language Code

2.16.640.1.11388

3.6.100

ISO 639-2 Three character Alpha Language Codes

Трехсимвольные коды языков ИСО 639-2

RelabonshrpCode

2.16.840.1.11388

3.5.1088

ConceptCodeRelationship

Отношения кодов понятий

ApplicationContextCode

2.16.840.1.11388

3.5.147

VocabularyDomainQuakfier.

RealmOfUse

Квалификатор словарного домена — область применения

OataTypeCode

2.16.840.1.11388

3.5.1007

DataType

Тип данных

CodingStrengthCode

2.16.840.1.11388

3.5.147

VocabularyDomainQuakfier

Квалификатор словарного домена

ValueSetNodeTypeCode

2.16.840.1.11388

3.5.24

ConceptGenerakty

Степень общности понятия

CodeSystemType

2.16.840.1.11388

3.5.1085

CodeSystemType

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

Match AlgonthmCode

2.16.840.1.11388

3.5.1094

MatchAlgonthm

Алгоритм совпадения

8.2.2.1 Алгоритмы совпадения строк

Некоторым описанным ниже функциям могут передаваться строковые значения в качестве критериев поиска. Этим значениям сопутствует «код алгоритма совпадения», определяющий, как будут применяться эти значения. В таблице перечислен список предопределенных алгоритмов совпадения. Если в графе «Обязателен» указано значение TRUE, то все реализации службы, объявляющие совместимость с данным стандартом, должны использовать этот алгоритм. Если в графе «Обязателен» указано значение FALSE, то служба не обязательно должна реализовать этот алгоритм, но если реализует. то в качестве его идентификатора должна использовать код. указанный в таблице 12. Данный список алгоритмов совпадения не является исчерпывающим. При необходимости реализация службы может расширить этот список собственными алгоритмами совпадения, но в целях будущей интероперабельности разработчикам службы настоятельно рекомендуется зарегистрировать код алгоритма в комитете HL7.

Таблица 12 — Коды алгоритмов совпадения

Код алгоритма совладения

Описание

Обязателен

idenbcallgnoreCase

Целевой текст, представленный е нижнем регистре, должен точно совпадать с представлением параметра matchText в нижнем регистре

TRUE

Identical

Целевой текст должен точно совпадать со значением параметра matchText

FALSE

StartsWrthtgnoreCase

Целевой текст, представленный в нижнем регистре, должен начинаться с подстроки, совпадающей с представлением значения параметра matchText в нижнем регистре

TRUE

StartsWiUi

Целевой текст должен начинаться с подстроки, совпадающей со значением параметра matchText

FALSE

EndsWHhlgnoreCase

Целевой текст, представленный в нижнем регистре, должен заканчиваться подстрокой, совпадающей с представлением значения параметра matchText в нижнем регистре

TRUE

EndsWrth

Целевой текст должен заканчиваться подстрокой, совпадающей со значением параметра matchText

FALSE

23

ГОСТ Р HCO/HL7 27951—2016

Окончание таблицы 12

Код алгоритма совладения

Описание

Обязателен

ContainsPhraselgnoreCase

Целевой текст, представленный в нижнем регистре, должен содержать подстроку, совпадающую с представлением значения параметра matchText в нижнем регистре

TRUE

ContainsPhrase

Целевой текст должен содержать подстроку, совпадающую со значением параметра matchText

FALSE

WordsAnyOrderlgnoreCase

Целевой текст должен содержать все слова подстроки, совпадающей со значением параметра matchText но не обязательно в том же порядке

FALSE

WiklCardstgnoreCase

Значение параметра matchText может содержать нуль или более «заместителей», обозначаемых символом звездочки {*). Заместитель совпадает с нулем или более символов целевой строки. Спецсимвол обратной косой черты 0) означает, что значение «а\*Ь*» параметра matchText совпадает с любой строкой, начинающейся символами «а'Ьа

FALSE

Regular Expression

Значение параметра matchText может содержать регулярные выражения, синтаксис которых определен в документе XML Schema Part 2: Datatypes (XML-схема. Часть 2. Типы данных)

FALSE

NYSIIS

Фонетическое кодирование, принятое в системе New York State Identification and Intelligence System

FALSE

8.2.3    Идентифицирующий раздел службы

API времени исполнения и API обозревателя наследуют общий интерфейс идентификации, предусматривающий следующие вызовы:

•    getServiceName — возвращает имя. присвоенное службе ее поставщиком:

•    get&erviceVersion — возвращает идентификатор версии, зависящий от реализации службы;

•    getServiceDescription — возвращает описание службы, сведения о ее авторе, назначении и т. д.;

-    getHL7ReleaseVersion — возвращает идентификацию наиболее позднего выпуска словаря HL7 (а не модели RIM). предоставляемого службой:

-    getCTSVersion — возвращает специфичную версию ОТС. реализуемую службой (например. 1.0).

8.2.4    Исключения

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

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

Исключения, генерируемые API сообщений:

•    возникла ошибка, не предусмотренная в настоящей спецификации. К примеру, ошибки опера* тивной памяти, ошибки ввода*вывода. ошибки доступа к базе данных и любые другие неожиданные события. препятствующие нормальному завершению вызова API. В атрибуте pos$ibte_cause может передаваться более детальная информация о том. что произошло на самом деле;

•    служба не распознала значение параметра vocabularyDomainjiame:

•    служба не распознала значение параметра applicationContext_code. Возможны следующие варианты:

1)    идентификатор набора значений передан, но служба не распознала его:

2)    передано только имя набора значений, но служба не распознала его;

3)    не переданы ни имя. ни идентификатор:

-    при вызове метода переданы оба параметра — valueSet_id и vatueSet_name. Параметр valueSet_id правильно идентифицирует набор значений, но он отличается от того, что указан в параме* тре valueSet_name, который может идентифицировать другой набор значений или вообще не указывать на существующий набор значений;

•    параметр conceptJd.concept_code не распознан как правильный код понятия, принадлежащий системе кодирования, идентифицированной значением параметра conceptJd.codeSystemJd;

24

ГОСТ Р HCO/HL7 27951—2016

•    служба не поддерживает проверку категоризации для системы кодирования, идентифицированной значением параметра codeSystemJd;

•    переданный квалификатор отношения не распознан службой;

•    служба не может выполнить требуемую трансляцию:

1)    параметр codeSystemJd передан, но не распознан службой;

2)    параметр codeSystemJd не передан, а параметр codeSystem_name передан, но его значение не распознано службой;

3)    ни один из параметров codeSystemJd и codeSystem_name не передан:

•    клиент предоставил неправильный параметр Expansion Context Это может означать, что контекст каким-то образом поврежден либо превышены ограничения по времени и контекст перестал быть действительным;

•    служба не поддерживает проверку категоризации посткоординирувмого выражения;

•    служба не может определить по значениям параметров vocabolaryDomain_name и applicationContext_code. какой набор значений следует использовать;

-    значение параметра codeSystem_name не идентифицирует ту же систему кодирования, что и значение параметра codeSystemJd. либо вообще не именует систему кодирования;

-    превышены ограничения по времени, заданные при вызове функции;

•    текст, переданный в параметре match Text, синтаксически не корректен по отношению к указанному алгоритму совладения:

•    служба не поддерживает алгоритм совпадения, заданный при ее вызове.

8.3 API времени исполнения уровня сообщений

8.3.1    Идентифицирующий раздел API времени исполнения уровня сообщений

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

Раздел API времени исполнения наследует идентифицирующую информацию от раздела идентификации и имеет два дополнительных метода:

•    getSupportedMatchAlgorithms — возвращает список алгоритмов совпадения строк, реализованных данной службой;

-    getSupportedVocabularyDomains — возвращает список словарных доменов, распознаваемых данной службой.

Параметры:

-    matchText — если присутствует и имеет непустое значение, то возвращается идентификация только тех словарных доменов, чьи имена совпадают с этим значением. Если же этот параметр отсутствует или пуст, то возвратится идентификация всех словарных доментов:

•    matchAlgorithm_code — если параметр matchText присутствует и имеет непустое значение, то параметр matchA!gorithm_code указывает, каким образом определяется совпадение имен оо значением параметра matchText. Детали см. в 8.2.2.1 «Совпадение строк»;

•    timeout — время в миллисекундах, в течение которого клиент готов ждать завершения операции. Значение 0 параметра timeout указывает, что на время ее выполнения ограничения не накладываются:

•    sizeLimit — максимальное число элементов, которое служба может вернуть. Если число возвращенных элементов совладает с sizeLimit. то клиент предполагает, что существуют дополнительные элементы. которые не были возвращены. Значение 0 параметра sizeLimit указывает, что число элементов, которые могут быть возвращены, не ограничивается.

Исключения:

-    BadlyFormedMatchText;

•    UnknownMatchAlgorithm;

•    TimeoutError;

-    UnexpectedError.

8.3.2    Проверка кодированного атрибута

8.3.2.1 Структура объекта ValtdateCodeRetum

Класс ValidationDetaii содержит детальное описание ошибки или предупреждения. Она имеет следующие поля:

•    codelnError — код понятия, с которым связана данная ошибка или предупреждение. Если ошибка обнаружена в квалификаторе понятия или в его трансляции, то этот код содержит то, в чем найдена ошибка: имя квалификатора, значение квалификатора либо значение трансляции;

25

ГОСТ Р HCO/HL7 27951—2016

•    isError — значение TRUE указывает, что элемент VatidationDetail описывает ошибку. Значение FALSE указывает, что он описывает предупреждение;

•    errorjd — идентификатор ошибки (см. коды возврата методов valtdateCode и validateTranslation. перечисленные в таблице);

-    errorText — текст описания ошибки или предупреждения.

В экземпляре класса ValidateCodeReturn возвращается общая и детальная информация о результате вызова метода vaiidateCode. включая следующие поля:

•    nErrors — число обнаруженных ошибок. Если оно больше нуля, то код или трансляция ошибочны:

•    nWamings — число возвращенных предупреждений. Если результат проверки кода или трансляции содержит только предупреждения, то код или трансляцию можно передавать и обрабатывать, даже если у них какие-то атрибуты могут быть некорректными;

-    detail — список отдельных ошибок и/или предупреждений.

8.3.2.2 Описание метода vaiidateCode

Метод vaiidateCode определяет, является ли значение кодированного атрибута допустимым представлением понятия для заданного словарного домена и прикладного контекста. Если параметр errorCheckOnly имеет значение false, то этот метод также проверяет поля codeSystemName и displayName, если они присутствуют. Он рекурсивно проверяет квалификаторы, используя те же самые критерии. Коды понятий, у которых заполнено поле исходного текста originalText, а поле code отсутствует. всегда признаются ошибочными. Метод vaiidateCode не проверяет трансляции.

Входные параметры:

•    vocabularyDomain_name — имя словарного домена, используемого для переданного кодированного атрибута;

•    oodeToValidate — подлежащий проверке код понятия, определенный в стандарте HL7. Как минимум этот код должен содержать поле кода и поле системы кодирования;

•    applicationContext_code — контекст или «область применения», где должен использоваться код:

•    activeConceptsOnly — значение TRUE (используемое по умолчанию) указывает, что допустимыми считаются только коды понятий, которые в настоящее время активны. Значение FALSE указывает, что код считается допустимым все то время, пока он присутствует в системе кодирования;

•    errorCheckOnly — значение TRUE указывает, что код понятия проверяется только на наличие ошибок. Предупреждения в этом случае не возвращаются.

Исключения:

-    UnknownVocabularyOomain;

-    UnknownApplicationContextCode:

•    UnexpectedError.

8.3.3 Проверка трансляций кодированного атрибута

8.3.3.1 Метод validateTranslation

Метод validateTranstation проверяет основной код и все трансляции кодированного атрибута, определенного в стандарте HL7. Обнаруженные ошибки и предупреждения возвращаются в экземпляре класса ValidateCodeReturn.

Примечание — В настоящем стандарте не приводятся детальные сведения о том. что является правильной трансляцией. Предполагается, что существует некоторая внешняя сторона, задающая правила трансляции. и что метод valxlateTranslation обеспечивает стандартный способ доступа к этим правилам. Модель трансляции описана в разделе 11.

Входные параметры:

•    vocabularyDomain_name — имя словарного домена, используемого для переданного кодированного атрибута;

•    oodeToValidate — подлежащий проверке код понятия, определенный в стандарте HL7. Как минимум этот код должен содержать поле кода и поле системы кодирования:

•    applicationContext.code — контекст или «область применения», где должен использоваться код:

•    activeConceptsOnly — значение TRUE (используемое по умолчанию) указывает, что допустимыми считаются только коды понятий, которые в настоящее время активны. Значение FALSE указывает, что код считается допустимым все то время, пока он присутствует в системе кодирования;

•    errorCheckOnly — значение TRUE указывает, что код понятия проверяется только на наличие ошибок. Предупреждения в этом случае не возвращаются.

26

ГОСТ Р HCO/HL7 27951—2016

Исключения:

•    UnknownVocabularyOomain;

•    UnknownApplicationContextCode:

•    UnexpectedError.

8.3.3.2 Коды возврата методов validateCode и validateTranslation

В таблице 13 перечислены идентификаторы и текст ошибок, которые могут быть возвращены методами vatidateCode и valtdateTranslation.

Таблица 13 — Коды возврата методов validateCode и validateTranslation

Идентификатор

Тип

Текст

Описание

Е001

Е

Неизвестная система кодирования

Служба не распознала систему кодирования

Е002

Е

Код понятия недопустим для системы кодирования

Код понятия недопустим для заданной системы кодирования (или подразумеваемой в случае типа данных CS)

ЕООЭ

Е

Система кодирования недопустима для словарного домена

Служба распознала систему кодирования, но эта система недопустима для словарного домена и прикладного контекста

Е004

Е

Код понятия неактивен

Код понятия допустим для домена, но не является активным. Эта ошибка возникает только в том случае, если параметр activeConceptsOnly имеет значение TRUE

Е005

Е

Код понятия недопустим для словарного домена

Код понятия допустим для системы кодирования, но не разрешен для словарного домена и прикладного контекста

Е008

Е

В данном словарном домене имя роли недопустимо

Система кодирования и код понятия роли квалификатора правильны, но недопустимы для словарного домена

ЕООЭ

Е

В данном словарном домене имя роли должно присутствовать

Присутствовал квалификатор, не имевший компонента имени, требуемого для данного словарного домена

Е010

Е

Недопустимое значение квалификатора

Квалификатором является правильный кед понятия, но этот код недопустим в контексте квалификатора

Е011

Е

Недопустимая трансляция

Система кодирования и код понятия трансляции правильны. но данная трансляция недопустима для содержащего ее хода понятия

Е01Э

Е

Отсутствует код понятия

Поле хода понятия пустое

Е014

Е

Неизвестный код обоснования кодирования

Код обоснования кодирования не распознан

W002

W

Имя системы кодирования не совпадает с системой кодирования

Имя системы кодирования не соответствует идентификатору системы кодирования

W003

W

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

Версия заданной системы кодирования не распознана

W004

W

Неверное имя представления хода понятия

Неверное имя представления переданного кода понятия

W005

W

Отсутствует трансляция, обоснованная HL7

Ни одна из трансляций не имеет код обоснования SH (источник и HL7) или HL7

W006

W

Код понятия не активен

Переданный код понятия не активен, при этом параметр activeConceptsOnly имеет значение TRUE

27

ГОСТ Р HCO/HL7 27951—2016

8.3.4    Трансляция кодированного атрибута

Метод translateCode преобразует значение параметра fromCode е код понятия, если таковой имеется, который допустим для целевой системы кодирования или прикладного контекста. Он возвращает полную копию значения параметра fromCode с новой трансляцией (если таковая имеется), добавленной в конец последовательности трансляций CD.translation. Если значение fromCode уже содержит трансляцию. допустимую для целевой системы кодирования или прикладного контекста, то возвращаемая копия параметра fromCode будет совпадать с исходной.

Входные параметры:

•    vocabularyOomain_name — словарный домен кодированного атрибута, подлежащего трансляции;

•    fromCode —транслируемый код:

•    toCodeSystem_id (не обязателен) — если этот параметр указан, то код должен быть транслирован в код понятия (или коды понятий), взятый из системы кодирования, идентифицированной этим параметром, а не из системы кодирования, определяемой целевым контекстом:

-    toApplicationContext_code (не обязателен) — прикладной контекст транслированного кода. Используется для определения целевого набора значений, по которому, в свою очередь, определяется целевая система кодирования. Может быть указан только один из параметров toCodeSystem_id и targetContext Если ни одного из них не указано, то генерируется исключение UnableToTranslate.

Метод translateCode возвращает кодированный атрибут, определенный в стандарте HL7. транслированный в термины целевой системы кодирования, которая должна быть явно задана в параметрах вызова либо определена по значению контекста targetContext.

Исключения:

•    UnknownVocabularyDomain;

•    UnknownCodeSystem;

•    UnknownApplicationContextCode;

•    UnableToTranslate:

-    UnexpectedError.

8.3.5    Заполнение детальных сведений о кодируемом атрибуте

Метод filtlnDetaits возвращает полную копию значения параметра codeToFillln, в которую добавлены поля codeSystemName. codeSystemVersion и displayName. заполненные по базовому значению кода и его квалификаторам, если таковые имеются. Квалификаторы заполняются рекурсивно — если квалификаторы вложены или имеют другие квалификаторы, то детальные сведения о них также заполняются. Метод filllnDetails не изменяет трансляции кода.

Входные параметры:

•    codeToFillln — кодированный атрибут, о котором заполняются сведения;

-    disptayLanguage_code — язык, используемый для изображаемого имени или имен.

Исключения:

•    UnknownCodeSystem;

-    UnknownConceptCode;

•    UnknownLanguage;

-    UnexpectedError.

8.3.6    Проверка, является ли один кодированный атрибут категорией другого

Метод subsumes определяет, является ли родительский кодированный атрибут категорией дочернего атрибута (то есть вытекает из него). Если ни параметр parentCode. ни параметр chiidCode не имеют квалификаторов и оба взяты из одной и той же системы кодирования, то метод subsumes возвращает значение TRUE в том и только в том случае, если значение параметра chiidCode является транзитивным замыканием графа отношений, корнем которого является значение параметра parentCode. В настоящем стандарте не делается никаких дальнейших предположений о семантике категоризации сверх уже сказанного.

Если служба поддерживает определение категоризации для тех случаев, когда кодированные значения имеют квалификаторы и/или принадлежат разным системам кодирования, то она должна обеспечивать необходимую семантическую трансляцию. Если она не поддерживает определение категоризации кодированных значений, имеющих квалификаторы, то при наличии квалификаторов у параметра parentCode или chiidCode она должна генерировать исключение OualifiersNotSupported (квалификаторы не поддерживаются). Аналогично, если служба поддерживает определение категоризации кодированных значений, принадлежащих разным системам кодирования, то она должна генерировать исключение SubsumptionNotSuppoited (категоризация не поддерживается).

28

ГОСТ Р HCO/HL7 27951—2016

Параметры:

•    parentCode — кодированный атрибут, предполагаемый родителем:

•    childCode — кодированный атрибут, предполагаемый его потомком.

Метод subsumes должен возвращать значение TRUE, если значение параметра childCode являет» ся подтипом значения атрибута parentCode. Он должен также возвращать значение TRUE, если значе-ния параметров childCode и parentCode эквивалентны. Трансляции этим методом игнорируются.

Исключения:

•    UnknownCodeSystem;

•    UnknownCode;

. SubsumptionNotSupported;

•    UnrecognizedQuatifier

•    OualifiersNotSupported:

-    UnexpectedError.

8.3.7    Проверка, являются ли два кодированных атрибута эквивалентными

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

Параметры.

•    codel — первый код. проверяемый на эквивалентность:

•    oode2 — второй проверяемый код.

Исключения:

•    UnknownCodeSystem:

•    UnknownCode;

•    SubsumptionNotSupported:

•    UnrecognizedQuatifier.

•    OualifiersNotSupported;

-    UnexpectedError.

8.3.8    Раскрытие словарного домена

8.3.8.1    Структура класса ValueSetDescriptor (описатель набора значений)

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

•    valueSetjd — уникальный идентификатор набора значений;

•    valueSet_name — уникальное имя набора значений (необязательное).

6.3.8.2    Структура класса ValueSetExpansion (раскрытие набора значений)

Класс ValueSetExpansion имеет следующие поля:

•    pathLength — целое значение, определяющее расстояние от корневого набора значений. У корневого набора значений это поле всегда имеет значение 0:

•    nodeType_code — код понятия, взятый из системы кодирования HL7 ConceptGenerality (2.16.840.1.113883.5.24). Допустимы следующие коды:

«S» — специализируемый узел. Идентификатор conceptjd этого узла может быть выбран, но узел может иметь дальнейшее раскрытие;

«А» — абстрактный узел. Идентификатор conceptjd этого узла (если имеется) не может быть выбран. Чтобы можно было сделать выбор, к этому узлу должно быть применено дальнейшее раскрытие:

«I.» — конечный узел (лист). Идентификатор conceptjd этого узла может быть выбран, но дальнейшее раскрытие невозможно;

•    vatueSet — идентификатор и имя (если имеется) набора значений, ассоциированного с данным узлом;

•    conceptjd — система кодирования и код понятия, ассоциированные с данным узлом (если имеются);

•    displayName — изображаемое имя. используемое для представления этого узла:

•    isExpandable — значение TRUE указывает, что этот узел можно далее раскрыть с помощью функции expandVatueSetExpansionContext. Поле isExpandable будет иметь значение TRUE только для

29

ГОСТ Р HCO/HL7 27951—2016

специализируемых и абстрактных узлов, и то только в том случае, если в исходном вызове метода lookupValueSetExpansion параметр expandAII (раскрыть все) имел значение FALSE;

• expansionContext — если параметр isExpandable имеет значение TRUE, то параметр expansionContex! содержит те сведения, которые необходимы конкретной реализации службы для дальнейшего раскрытия узла при следующих вызовах. Он непрозрачен для клиентского программного обеспечения.

Ниже приведены варианты раскрытия различных типов наборов значений.

Вариант 1 (таблица 14): набор значений А ссылается на все коды неиерархической системы ходи* рования. содержащей коды понятий 1,2.....N.

Таблица 14 — Значения полей класса ValueSetExpansion для варианта 1

pathLength

nodeTyp«_code

concopl_id

displayName

0

А (абстрактный)

(A).valueSet_name

1

L (лист)

1

(1 ).preferredName

1

L (лист)

2

(2).preferredName

1

L (лист)

...

1

L (лист)

N

(N).prefer redName

Вариант 2 (таблица 15): набор значений В ссылается на все коды иерархической системы кодиро* вания. Коды понятий в поле conceptjd отражают иерархию (1 — корень. 1.1 — первый потомок корня.

1.2 — второй потомок, 1.2.1 — первый потомок первого потомка и т. д.).

Таблица 15 — Значения полей класса ValueSetExpansion для варианта 2

pathLength

nodeType_cede

concopl_td

displayName

0

А (абстрактный)

(B).valueSet_name

1

S (специализируемый)

1

(1 }. preferred Name

2

S (специализируемый)

1.1

(1.1 ).preferredName

...

S (специализируемый)

...

n

L (лист)

1.1.1..П

(1.1.1.n).preferredName

1

S (специализируемый)

2

(2).preferredName

2

S (специализируемый)

2.1

(2.1) preferredName

S (специализируемый)

M

L (лист)

2.1..Ш

(2.1..m).preferredName

Вариант 3 (таблица 16): набор значений С ссылается на конкретные коды понятий 1. 2. 3 из не* которой системы кодирования. Ни одна из ссылок не включает в себя код отношения. Головного кода также нет.

Таблица 16 — Значения полей класса ValueSetExpansion для варианта 3

pathLength

nodeType_code

concepl_id

displayName

А (абстрактный)

C.valueSetName

1

L (лист)

1

(1 ).preferredNan>e

1

L (лист)

2

(2).preferredName

1

L (лист)

3

(3).preferredName

30

ГОСТ Р HCO/HL7 27951—2016

Вариант 4 (таблица 17): набор значений D ссыпается на конкретные коды понятий 1, 2. 3. 4 из некоторой системы кодирования. Ни одна из ссылок не включает в себя код отношения. Код понятия 4 является головным.

Таблица 17 — Значения попей класса ValueSetExpansion для варианта 4

pathLength

nodeType_code

concepMd

displayName

0

А (абстрактный)

4

(4).preferredName

1

L (лист)

1

(1 ).preferredName

1

L (лист)

2

(2).preferredName

1

L (лист)

3

(3).preferredName

Вариант 5 (таблица 18): набор значений Е ссылается на описанный выше набор значений D. но при этом поле includeHeadCode (включить головной код) имеет значение TRUE.

Таблица 18 — Значения попей класса ValueSetExpansion для варианта 5

pathLength

nodeType_cede

concepl_td

displayName

0

А (абстрактный)

€.valoeSet_name

1

S (специализируемый)

4

(4).praferredName

2

L (лист)

1

(1).preferredNan)e

2

L (лист)

2

(2).preferredName

2

L (лист)

3

(3).preferredNan)e

Вариант 6 (таблица 19): набор значений F ссылается на описанный выше набор значений D. но при этом поле includeHeadCode (включить головной код) имеет значение FALSE.

Таблица 19 — Значения попей класса ValueSetExpansion для варианта 6

pathLength

nodeType_code

concepl_id

displayName

0

А (абстрактный)

(F). val ueSet_name

1

А(абстрактный)

4

(4).preferredNan>e

2

L (лист)

1

(1 ). preferred Name

2

L (лист)

2

(2).preferredName

2

L (лист)

3

(3).preferredName

Вариант 7 (таблица 20): набор значений G ссылается на коды понятий 1.1. 2.1 и 3.1 из иерархической системы кодирования. Все три ссылки используют код отношения hasSubtype. Ссылка на код 1.1 включает ссылочный код. Ссылка на код 1.2 исключает ссылочный код. У ссылки 3.1 поле leafOnty имеет значение TRUE. Набор значений G не имеет головного кода.

Таблица 20 — Значения попей класса ValueSetExpansion для варианта 7

pathLength

nodeType_code

concepl_<d

displayName

0

А (абстрактный)

(G).valueSet_name

1

S (специализируемый)

1.1

(1.1 ).preferredName

2

S (специализируемый)

1.1.1

(1.1.1 (.prefer redName

31

ГОСТ Р HCO/HL7 27951—2016

Окончание таблицы 20

palhLen9th

nod«Typ«_code

concepl_«d

displayName

...

S (специализируемый)

...

п

L (лист)

1.1.....П

(1.1....n).preferredName

1

А(абсгрвктный)

1.2

(1.2) preferredName

2

S (специализируемый)

1.2.1

(1.2.1 )preferredName

...

S (специализируемый)

1.2.1...

m

L (лист)

1.2.1. ..m

(1.2...m)preferredName

1

А (абстрактный)

1.3

(1.3) preferredName

2

А (абстрактный)

1.3.1

(1.3.1) preferredName

...

А (абстрактный)

1.3.1...

k

L (лист)

1.3.1...k

(1.3.1. .k prefer redName

8.3.8.3    Метод lookupValueSetExpansion

Метод lookupValueSetExpansion возвращает раскрытие набора значений, ассоциированного с за* данным словарным доменом и необязательным контекстом. Весь словарный домен может быть рас* крыт сразу (если параметр expandAII имеет значение TRUE) или может быть раскрыт на один уровень за один раз (если параметр expandAII имеет значение FALSE). В последнем случае каждый узел может быть раскрыт далее, если у него поле isExpandable имеет значение TRUE, указывающее, что поле expansionContext может быть передано методу expandValueSetExpansionContext для дальнейшего рас* крытия.

Параметры.

. vocabularyDomain_name — раскрываемый словарный домен;

•    applicabonContext_code — контекст, в котором должен раскрываться словарный домен (не обязателен);

•    language_code — код языка, используемый для возвращаемых изображаемых имен;

•    expandAII — значение TRUE указывает, что все узлы раскрываются на их полную глубину, значение FALSE означает раскрытие на один уровень (по умолчанию используется значение TRUE);

•    timeout — время в миллисекундах, е течение которого клиент готов ждать завершения операции. Значение 0 параметра timeout указывает, что на время ее выполнения ограничения не накладываются;

•    sizeLimit — максимальное число элементов, которое служба может вернуть. Если число возвращенных элементов совпадает с sizeLimit, то клиент предполагает, что существуют дополнительные элементы, которые не были возвращены. Значение 0 параметра sizeLimit указывает, что число элементов, которые могут быть возвращены, не ограничивается.

Исключения;

•    UnknownVocabuiaryOomain;

•    UnknownApplicationContextCode;

•    UnknownLanguage:

•    TimeoutError;

•    UnexpectedError.

8.3.8.4    Метод expandValueSetExpansionContext

Метод expandValueSetExpansionContext использует непрозрачное значение параметра expansionContext. которое ранее было возвращено в экземпляре класса ValueSetExpansion, для дальнейшего раскрытия соответствующего узла на дополнительный уровень. Возвращаемое значение идентично тому, что возвращает метод lookupValueSetExpansion. и к вызову применяются все начальные ограничения последнего, включая значение параметра timeout.

Входные параметры:

- expansionContext — контекст, возвращенный предшествующим вызовом метода lookupValueSetExpansion или expandValueSetExpansionContext.

32

ГОСТ Р HCO/HL7 27951—2016

Исключения:

•    InvalidExpansionContext;

•    TimeoutError;

•    UnexpectedError.

8.4 АР! обозревателя на уровне сообщений

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

8.4.1    Идентифицирующая информация обозревателя сообщений

Обозреватель сообщений наследует идентифицирующую информацию от интерфейса, описанно-го в 8.2.3 «Идентифицирующий раздел службы».

8.4.2    Раздел описания обозревателя сообщений

В этом пункте описано несколько структур, служащих «строительными блоками» и используемых при описании службы. Затем будет описан доступ к информации с помощью этой службы.

8.4.2.1    Строительные блоки описания обозревателя

8.4.2.1.1    Структура RlMCodedAttribute

Класс RIMAttributeld уникально идентифицирует кодированный атрибут модели RIM. Он имеет следующие поля:

•    modeljd — идентификатор модели RIM;

•    class_name — имя класса модели RIM;

-    attribute_name — имя атрибута в этом классе.

Класс RlMCodedAttribute описывает атрибут модели RIM. Он имеет следующие поля:

•    RIMAttributeJd — уникальный идентификатор атрибута:

•    dataType.code — код, идентифицирующий тип данных атрибута. Берется из системы кодирования HL7 DataType:

-    codingStrength_code — сила кодирования атрибута. Берется из системы кодирования HL7 VocabularyOomainQuatifier:

•    vocabularyDomain_name — имя словарного домена, ассоциированного с атрибутом.

8.4.2.1.2    Класс CodeSystemDescriptor

Класс CodeSystemDescriptor состоит из идентификатора системы кодирования, ее имени, информации об авторских правах и списка доступных версий:

•    codeSystem_id — объектный идентификатор ИСО (ОИД) системы кодирования:

•    codeSystem_name — имя системы кодирования. Уникально в контексте стандарта HL7 Версии 3:

•    copyright — информация об авторских правах на систему кодирования, если таковые имеются. Если присутствует, то эта информация должна предоставляться всякий раз. когда система кодирования используется или к ней осуществляется доступ:

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

6.4.2.2    Описание обозревателя

Описание обозревателя сообщений содержит список различных сущностей, поддерживаемых конкретной службой.

Метод getSupportedAttributes возвращает список атрибутов модели RIM, известных службе и удовлетворяющих заданным критериям.

Входные параметры:

•    matchText — если присутствует и не пуст, то возвращаются сведения только о тех атрибутах модели RIM. имена которых совпадают стекстом, переданным в этом параметре. Если параметр matchText отсутствует или пуст, то возвращаются сведения обо всех атрибутах модели RIM:

•    matchAlgorithm_code — если параметр matchText присутствует и не пуст, то значение параметра matchAlgorithm_code указывает, каким образом определяется совпадение имени атрибута со значением параметра matchText. Детальные сведения см. в 8.2.2.1 «Алгоритмы совпадения строк»:

•    timeout — время в миллисекундах, в течение которого клиент готов ждать завершения операции. Значение 0 параметра timeout указывает, что на время ее выполнения ограничения не накладываются:

•    sizeLimit — максимальное число элементов, которое служба может вернуть. Если число возвращенных элементов совпадает с sizeLimit. то клиент предполагает, что существуют дополнительные эле

33

ГОСТ Р HCO/HL7 27951—2016

менты, которые не были возвращены. Значение 0 параметра sizeLimit указывает, что число элементов, которые могут быть возвращены, не ограничивается.

Исключения:

•    BadlyFormedMatchText:

•    UnknownMatchAlgorithm;

•    TimeoutError;

•    UnexpectedError.

Метод getSupportedVocabularyDomains возвращает список словарных доменов, известных службе и удовлетворяющих заданным критериям.

Входные параметры:

•    matchText — если присутствует и не пуст, то возвращаются сведения только о тех словарных доменах. имена которых совпадают с текстом, переданным в этом параметре. Если параметр match Text отсутствует или пуст, то возвращаются сведения обо всех словарных доменах:

•    matchAlgorithm_code — если параметр matchText присутствует и не пуст, то значение параметра matchAlgorithm_code указывает, каким образом определяется совпадение имени словарного домена со значением параметра matchText. Детальные сведения см. в 8.2.2.1 «Алгоритмы совпадения строк»;

•    timeout — время в миллисекундах, в течение которого клиент готов ждать завершения операции. Значение 0 параметра timeout указывает, что на время ее выполнения ограничения не накладываются;

•    sizeLimit — максимальное число элементов, которое служба может вернуть. Если число возвращенных элементов совпадает с sizeLimit то клиент предполагает, что существуют дополнительные элементы. которые не были возвращены. Значение 0 параметра sizeLimit указывает, что число элементов, которые могут быть возвращены, не ограничивается.

Исключения:

•    BadlyFormedMatchText;

•    UnknownMatchAlgorithm;

•    TimeoutError;

•    UnexpectedError.

Метод getSupportedValueSets возвращает список наборов значений, известных службе и удовлетворяющих заданным критериям.

Параметры.

•    matchText — если присутствует и не пуст, то возвращаются сведения только о тех наборах значений. имена которых совпадают с текстом, переданным в этом параметре. Если параметр matchText отсутствует или пуст, то возвращаются сведения обо всех наборах значений;

•    matchAlgorithm_code — если параметр matchText присутствует и не пуст, то значение параметра matchAlgorithm_code указывает, каким образом определяется совладение имени набора значений со значением параметра matchText. Детальные сведения см. в 8.2.2.1 «Алгоритмы совпадения строк»;

•    timeout — время в миллисекундах, в течение которого клиент готов ждать завершения операции. Значение 0 параметра timeout указывает, что на время ее выполнения ограничения не накладываются;

•    sizeLimit — максимальное число элементов, которое служба может вернуть. Если число возвращенных элементов совладает с sizeLimit то клиент предполагает, что существуют дополнительные элементы. которые не были возвращены. Значение 0 параметра sizeLimit указывает, что число элементов, которые могут быть возвращены, не ограничивается.

Исключения:

•    BadlyFormedMatchText;

•    UnknownMatchAlgorithm;

•    TimeoutError;

•    UnexpectedError.

Метод getSupportedCodeSystems возвращает список систем кодирования, известных службе и удовлетворяющих заданным критериям.

Параметры.

•    matchText — если присутствует и не пуст, то возвращаются сведения только о тех системах кодирования. имена которых совпадают с текстом, переданным в этом параметре. Если параметр matchText отсутствует или пуст, то возвращаются сведения обо всех системах кодирования;

•    matchAlgohthm_code — если параметр matchText присутствует и не пуст, то значение параметра matchAlgorithm_code указывает, каким образом определяется совпадение имени системы кодирования со значением параметра matchText. Детальные сведения см. в 8.2.2.1 «Алгоритмы совпадения строк»;

34

ГОСТ Р HCO/HL7 27951—2016

•    timeout — время е миллисекундах, в течение которого клиент готов ждать завершения операции. Значение 0 лараметра timeout указывает, что на время ее выполнения ограничения не накладываются;

•    sizeLimit — максимальное число элементов, которое служба может вернуть. Если число возвращенных элементов совпадает с sizeLimit то клиент предполагает, что существуют дополнительные элементы. которые не были возвращены. Значение 0 параметра sizeLimit указывает, что число элементов, которые могут быть возвращены, не ограничивается.

Исключения:

•    BadlyFormedMatchText:

•    UnknownMatchAlgorithm;

•    TimeoutError;

-    UnexpectedError.

8.4.3    Обозревание словарного домена

8.4.3.1    Класс VocabularyOomainDescription

Класс VocabularyOomainVahieSet содержит описание набора значений (см. 8.3.8 «Раскрытие словарного домена») и код контекста, в котором применяется этот набор значений (если таковой контекст имеется). Он имеет следующие поля:

-    definedByValueSet — набор значений, определяющий словарный домен в конкретном прикладном контексте;

•    appticaUonContext_code — код контекста, в котором применяется этот набор значений.

Класс VocabularyOomainDescription описывает структуру. возвращаемую методом tookupVocabularyOomain. Он имеет следующие поля:

•    vocabularyDomain_name — уникальное имя словарного домена;

•    description —описание домена;

•    restrictsDomain_name — словарный домен, ограниченный данным доменом, если таковой имеется:

•    basisOfDomains — список доменов, являющихся ограничениями данного домена, если таковые имеются;

•    constrainsAttributes — список атрибутов модели RIM. использующих данный словарный домен, если таковые имеются:

•    representedByValueSets — список наборов значений и контекст, которые могут представлять данный словарный домен, если таковые имеются.

6.4.3.2    Метод lookupVocabularyDomain

Метод lookupVocabularyDomain возвращает детальные сведения о словарном домене. Он имеет следующий входной параметр:

-    vocabularyDomain_name — имя обозреваемого словарного домена.

Исключения:

-    UnknownVocabularyDomain;

-    UnexpectedError.

8.4.4    Обозревание набора значений

8.4.4.1 Класс FullValucSctDoscriptionstructure

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

Класс ValueSetConstructor имеет следующие поля:

•    inctudedValueSet — идентификатор и имя набора значений, считающегося частью данного набора. если таковой имеется:

•    includeHeadCode — значение TRUE указывает, что головкой код набора значений, включенного в данный набор (если таковой имеется), входит в состав данного набора. Значение FALSE указывает, что не входит.

Класс ValueSetCodeReference имеет следующие поля:

•    referenced_code — код понятия, на который ссылается данный набор;

•    relationship_code — код отношения. Если присутствует, то все потомки ссылочного кода также считаются частью набора значений, с поправкой на ограничение, задаваемое описанным ниже параметром leafOnly. Если отношение транзитивно. то все потомки также включаются в набор значений. Если оно не транзитивно. то рассматриваются только прямые потомки ссылочного кода;

•    indudeReferencedCode — значение TRUE указывает, что сам ссылочный код является частью набора значений. Значение FALSE указывает, что в набор значений включаются только его дети или

35

ГОСТ Р HCO/HL7 27951—2016

потомки. Ларметр includeReferencedCode обязательно имеет значение TRUE, если код отношения relationship_code не задан:

•    leafOnly — значение TRUE указывает, что в набор значений включаются только конечные узлы (листья) отношения. Значение FALSE указывает, что в набор значений включаются все потомки, возможно. за исключением самого ссылочного кода. Параметр leafOnly обязательно должен иметь значение FALSE, если код отношения reiationship_code не задан.

Класс ValueSetOescription имеет следующие поля:

•    idAndName — идентификатор и имя (если таковое имеется) набора значений:

•    description — текстовое описание набора значений и его применения;

•    definingExpression — выражение, используемое для построения содержания набора значений (если таковое имеется);

•    basedOnCodeSystem — идентификатор, имя и версия системы кодирования, используемой для построения набора значений;

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

-    head_code — код понятия, представляющий весь набор значений (если таковой имеется).

Класс FullValueSetDescription имеет следующие поля:

•    description — идентификатор, имя и другие атрибуты набора значений;

-    constructedUsingVatueSets — список дополнительных наборов значений и включений головных кодов, если таковые имеются, используемых для построения данного набора значений;

•    usedToDefine — список других наборов значений, при построении которых используется данный набор значений;

•    referencesCodes — список кодов понятий, на которые в данном наборе значений имеются прямые ссылки. Он будет пустым, если параметр allCodes имеет значение TRUE, и не будет содержать те коды, которые косвенно включены из других наборов значений и/или отношений между кодами понятий.

8.4.4.2 Метод lookupValueSet

Метод lookupValueSet извлекает полное описание набора значений по идентификатору или имени набора.

Входные параметры:

-    value&et Jd — идентификатор обозреваемого набора значений;

-    valueSetjiame — имя обозреваемого набора значений.

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

Исключения:

•    UnknownValueSet;

-    ValueSetNameldMismatch;

•    UnexpectedError.

8.4.5 Обозревание детальной информации о системе кодирования

6.4.5.1 Структура данных, возвращаемая методом lookupCodeSystem

Класс CodeSystemRegistration имеет следующие поля:

•    sponsor — член комитета HL7 или организация, выступающая спонсором регистрации системы кодирования;

•    publisher — наименование официального издателя системы кодирования:

•    versionReportingMethod — описание того, как и сколь часто создаются и распространяются новые версии;

•    Itcensinglnfomnation — описание требуемых лицензий, цены и способа приобретения;

•    inUMLS — значение TRUE указывает, что кодированные термины, определенные в этой системе кодирования, включены в Унифицированную систему медицинского языка UMLS (Unified Medical Language System);

•    systemSpecificLocatorlnfo — информация, специфичная для издателя системы кодирования. Она служит для определения или идентификации конкретной системы кодирования. Комитет HL7 может иногда использовать атрибут systemSpecificLocatorlnfo для идентификации соответствующей таблицы стандарта HL7 2.x. если таковая имеется:

36

ГОСТ Р HCO/HL7 27951—2016

•    codeSystemType_code — код. имеющий значения I (система кодирования является внутренней, ведется и распространяется комитетом HL7). Е (ведется и распространяется третьей стороной), EI (ее* дется третьей стороной, но ради удобства комитет HL7 поддерживает ее внутренний образ).

Примечание — Перечисленные выше регистрационные элементы предназначены только для описания системы кодирования. Многие из полей {спонсор, издатель, метод публикации версий и т. д.) могут иметь собственную структуру, но в целях настоящего документа описание их структуры не является необходимым.

Класс CodeSystemlnfo имеет следующие поля:

•    description—баэовоеописаниесиствмы кодирования. См. описание класса CodeSystemDescriptor в 8.4.2.1.2;

•    registrationlnfo — регистрационная информация о системе кодирования (если таковая имеется).

8.4.5.2 Метод tookupCodeSystem

Метод lookupCodeSystem возвращает детальную информацию о системе кодирования по ее идентификатору (ОИД) или имени.

Входные параметры:

•    codeSystemJd — уникальный идентификатор системы кодирования, которым обычно служит ИСО ОИД;

•    codeSystem_name — имя системы кодирования.

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

Исключения:

•    UnknownCodeSystem:

. CodeSystemNameldMismatch;

-    UnexpectedError.

8.4.6    Обозревание наборов значений в словарном домене и контексте

Метод iookupValueSetForOomain возвращает идентификацию набора значений (идентификатор и имя. если таковое имеется), использованного для заданного словарного домена в прикладном контексте (если таковой имеется).

Входные параметры:

•    vocabularyDomain_name — имя обозреваемого словарного домена;

•    appticatk>nContext_code (не обязателен) — код прикладного контекста.

Исключения:

-    UnknownVocabularyOomain;

•    UnknownApplicationContextCode;

-    NoApplicableValueSet;

-    UnexpectedError.

8.4.7    Установление принадлежности кода понятий к набору значений

Метод isCodelnValueSet возвращает значение TRUE, если понятие с заданным идентификатором включено в набор значений и может быть выбрано из него. В противном случае возвращается значение FALSE.

Входные параметры:

•    valueSet_id — идентификатор обозреваемого набора значений;

•    valueSet_name — имя обозреваемого набора значений:

•    includeHeadCode — значение TRUE указывает, что головной код (если таковой имеется) считается частью данного набора. Значение FALSE указывает, что головной код (если таковой имеется), исключается из набора:

•    codeToValidate — код проверяемого понятия и идентификатор его системы кодирования.

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

Исключения:

-    UnknownValueSet;

•    ValueSetNameidMismatch;

•    UnknownConceptCode;

-    UnknownCodeSystem;

•    UnexpectedError.

37

ГОСТ Р HCO/HL7 27951—2016

9 Модель API словаря

9.1    Введение

В следующих подразделах описана модель, положенная в основу API словаря ОТС. В настоящем стандарте не представлена полная или глубокая модель всех возможных сущностей, образующих систему кодирования1*. Его основная цель — описать классы и отношения, имеющие прямое отношение к содержанию кодированных атрибутов HL7 с точки зрения словаря.

9.2    Система кодирования

Структура классов, образующих систему кодирования, представлена на рисунке 6.

Code System

•    codeSyfiemJd: sung

•    eodeSrstem.neme firing

•    fuliName tiring

•    codeSrfiomDeseriplion firing

- copyright' filing

•    supponedlongueges «Queooo«LanguageCode>

•    «ippoitedReletions xquenoo<Rota1ionfi»pCode>

•    supportadProoerties xouencc<PiopertyCode>

•    eupportedMimeTypea «ди*пзд<М1т«Г|греСо4е>

•    aipportedRelaliontiiipOueliftets xguen<*«Re4e&oa*ipOuaiifoiCode>

•является

аорсиев

•слепит источяисом

ConceptRelabon

ship

•    relation**., code. ReiationtiiipCoc

•    relation* фОмвИПвп eequone*<R

ie

WaiaMrupOuaifloiCode»

-спу*ит цоп»ю

0.

ConceptOe sign# bon

ConceptPiopeity

-    defignaMnfinng

• ianguage_codo LanguagoCodo

-    preioeedFoilanguMe: bootoan

•    propa«y_E06« PxpertyGod#

•    propefiyvaluo' firing

- languoga_cod* language Code

Рисунок 6 — Классы, образующие систему кодирования

Система кодирования CodeSystem может определять нуль или более кодированных понятий CodedConcept. Кодированное понятие представляет класс объектов или понятие в конкретной области суждений. Каждое кодированное понятие CodedConcept должно быть определено ровно в одной системе кодирования CodeSystem. Будучи однажды определенным, значение кодированного понятия не может изменяться. Существующие кодированные понятия могут отзываться, а новые — добавляться, но. будучи определенным, значение кодированного понятия должно оставаться статическим.

Класс CodeSystem имеет следующие атрибуты:

• codsSystemJd — глобально уникальный идентификатор системы кодирования. В контексте стандартов HL7 он должен принимать форму объектного идентификатора ИСО (ОИД). Комитет HL7

’• В настоящем стандарте термин «система кодирования» используется для обозначения системы кодов, описаний, обозначений, свойств и отношений. К другим общим именам этой сущности относятся «словарь», «терминология». «схема кодирования», «схема классификации» и «онтология».

38

ГОСТ Р HCO/HL7 27951—2016

ведет регистр идентификаторов ОИД систем кодирования, и пользователям стандарта настоятельно рекомендуется регистрировать в этом регистре все ОИД. используемые ими в этих службах;

•    codaSystam_nama — краткая символьная метка, уникально идентифицирующая систему коди-рования в контексте модели HL7 RIM. Комитет HL7 включает имена систем кодирования в «систему кодирования систем кодирования», ассоциированную со словарным доменом CodeSystem. Атрибут cotfeSystem_name используется исключительно в целях коммуникации углеродных форм жизни, а при взаимодействии компьютеров должен использоваться атрибут codaSystamld

•    fufINama — официальное имя системы кодирования CodeSystem. Для тех систем, что зарегистрированы в словарном домене HL7 CodeSystem. значением этого имени является предпочтительное английское обозначение ConceptOesignation кодированного понятия CodedConcept. совпадающего с атрибутом codeSystem_nama системы кодирования CodeSystem:

•    codaSystamDascription—описание назначения и содержания системы кодирования CodeSystem. Для тех систем, что зарегистрированы в словарном домене HL7 CodeSystem. значением этого имени является английское описание ConceptOescription кодированного понятия CodedConcept. совпадающего с атрибутом соdaSystam_nama системы кодирования CodeSystem;

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

Следующие атрибуты содержат дополнительные метаданные системы кодирования:

•    supportadLanguagas — список всех языков, которые полностью или частично поддерживаются системой кодирования. «Поддерживаемый» язык распознается системой кодирования и на нем доступна хотя бы часть обозначений или свойств понятий. Все системы кодирования должны поддерживать хотя бы один язык. В то время как служба должна возвращать перечисление всех субтегов основного языка, который она поддерживает, она не обязана перечислять вторичные языки. (Например, если она поддерживает язык «еп-UK». она должна возвращать тег «еп». но может возвращать или не возвращать «еп-UK»);

•    supportadRalations—отношения (роли), представленные в системе кодирования. 8 данной модели отношение подтипа (subtype) трактуется какотношение первого класса (код отношения: hasSubtype). Код отношения имеет и идентификатор системы кодирования, и код понятия, что позволяет брать коды отношений из многих источников. Для целей интероперабельности коды отношений должны по возможности браться из системы кодирования HL7 ConceptRelationship (ОИД 2.16.840.1.113883.5.1088);

•    supportadPropartias — коды свойств, поддерживаемых системой кодирования. Однако по возможности коды свойств должны браться из системы кодирования HL7 ConceptProperty (ОИД 2.16.840.1.113883.5.1087);

•    supportadMimaTypas — список типов среды MIME, используемых системой кодирования в обозначениях. описаниях или свойствах. Эти коды должны браться из системы кодирования типов среды MediaType. официально предназначенной для этих целей комитетом HL7 (в настоящее время — ОИД 2.16.840.1.113883.5.79). Тип среды text/plain (неформатированный текст) должен поддерживаться всеми системами кодирования;

•    supportadRalationshipQualifiars — список квалификаторов отношений, распознаваемых системой кодирования.

Система кодирования CodeSystem может представлять нуль или одну версию CodeSystem Version в каждый момент времени11.

9.3 Кодированное понятие CodedConcept

Кодированное понятие CodedConcept уникально в системе кодирования CodeSystem. где оно определено. Кодированное понятие CodedConcept должно быть обозначено по меньшей мере одним экземпляром класса ConceptOesignation. Обозначение ConceptOesignation должно представлять назначение одного или более кодированных понятий CodedConcept2'. Кодированное понятие CodedConcept

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

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

39

ГОСТ Р HCO/HL7 27951—2016

может характеризоваться нулем и пи более свойств ConceptProperty. Свойство ConceptProperty может представлять или определять одно или более кодированных понятий CodedConcept.

Кодированное понятие CodedConcept может служить источником или служить целью нуля или более отношений ConceptRelationship. Отношения описаны более детально е следующем подпункте.

Класс CodedConcept имеет следующие атрибуты:

•    code — идентификатор, однозначно задающий класс или «понятие» в контексте определяющей системы кодирования CodeSystem. Будучи присвоенным, «смысл» кода понятия никогда не должен меняться. 8 настоящем стандарте не делается никаких предположений о тех или других способах при* сеоения в системе кодирования одного и тою же «смысла» нескольким кодированным понятиям;

•    status — текущий статус кодированного понятия CodedConcept в системе кодирования CodeSystem. Значения статусов понятий должны браться из системы кодирования HL7 ConceptStatus (ОИД 2.16.840.1.113883.5.1086). К возможным значениям статуса относятся «proposed» (предложен), «active» (активный), «deleted» (удален) и «retired» (устарел). В настоящем стандарте проводится только различие между статусами «active» (активный) и «not active» (неактивный). Статусы и версионностъ по* нятий будут более полно рассмотрены в следующих версиях настоящею документа.

9.4    Обозначение понятия ConceptDesignation

Обозначением понятия ConceptDesignation является имя или иной текстовый символ, представляющий назначение нуля или более кодированных понятий CodedConcept. Обозначения понятий ConceptDesignation зависят от языка.

Класс ConceptDesignation имеет следующие атрибуты:

•    designation — строка текста, являющаяся внешним представление кодированного понятия CodedConcept:

•    languageCode — код языка, конструируемый по правилам, описанным в IETF RFC 3066—Tag for Identification of Languages (теги идентификации языка). Этот код состоит из нескольких субтегое. разделенных дефисами («•»). Первый субтег идентифицирует основной код языка. По возможности он должен быть взят из ИСО 639-1 «Codes for the representation of names of languages — Part 1: Alpha-2 code» (Коды для представления названий языков. Часть 1. Двухбуквенный код). Если двухбуквенный код отсутствует. то надо взять код из ИСО 639-2 «Codes for the representation of names of languages — Part 2: Alpha-3 code» (Коды для представления названий языков. Часть 2. Трехбуквенный код). Существует также дополнительный механизм спецсимволов, который в настоящем стандарте не описан.

Второй субтег не обязателен. Если он присутствует, то должен иметь длину от 2 до 8 символов. Если его длина равна двум, то он должен содержать двухбуквенный код страны, взятый из ИСО 3166-1 «Codes for the representation of names of countries and their subdivisions — Part 1: Country codes» (Коды для представления названий стран и единиц их административно-территориальною деления. Часть 1. Коды стран). Если длина субтега от 3 до 8 символов, то он должен содержать код. взятый из регистра тегов языков организации IANA. Дополнительные субтеги используются, если надо уточнить информацию о языке;

•    preferredForLanguage — значение TRUE указывает, что это обозначение следует предпочесть для представления назначения кодированного понятия CodedConcept на заданном языке, если иная контекстуальная информация отсутствует. Для каждою заданного языка только одно обозначение может быть указано предпочтительным.

9.5    Свойство понятия ConceptProperty

Свойством понятия ConceptProperty является «атрибут», «фасет» или иная характеристика, которая может представить или помочь определить предназначение нуля или более кодированных понятий CodedConcept. Класс ConceptProperty имеет следующие атрибуты:

•    propertyCode — сочетание идентификаторов системы кодирования и кода понятия, идентифицирующее тип свойства. По возможности коды свойств должны браться из системы кодирования HL7 ConceptProperty (ОИД 2.16.840.1.113883.5.1087);

•    propertyValue — текстовое значение ассоциированного свойства;

•    languago^code — код языка, взятый из системы кодирования, официально предназначенной для этих целей комитетом HL7 (в настоящее время —ОИД 2.16.840.1.113883.6.84— IETF RFC 3066 —Tag for Identification of Languages). He у всех свойств понятий ConceptProperty есть коды языка. Если код языка опущен, то предполагается, что характер этого свойства таков, что понятие языка к нему неприменимо;

40

ГОСТ Р HCO/HL7 27951—2016

• mimeType_code — код, взятый из системы кодирования типов среды MediaType, официально предназначенной для этих целей комитетом HL7 (в настоящее время — ОИД 2.16.840.1.113683.5.79). Не у всех свойств ConceptProperty есть код среды. По умолчанию используется тип среды text/piain (неформатированный текст).

9.6 Отношение понятий ConceptRelationship

Класс ConceptRelationship представляет бинарные отношения на множестве кодированных понятий CodedConcept, принадлежащих одной системе кодирования CodeSystem1'. Каждое отношение ConceptRelationship должно иметь ровно один экземпляр класса CodedConcept в качестве источника и ровно один экземпляр класса CodedConcept в качестве цели. Атрибут relationship_code идентифицирует направленное отношение. Система кодирования HL7 ConceptCodeRelationship (ОИД 2.16.840.1.113883.5.1088) определяет типы отношений, используемых в словаре стандарта HL7 версии 3. В этой системе кодирования описано, какой код понятия является источником, какой целью, характеризуются транзитивность, симметричность и рефлексивность отношения, а также термин, используемый для представления инверсии отношения.

Список кодов отношений приведен в таблице 21.

Таблица 21—Основные коды отношений

Код понятия

Описание

Транзитив

ное!»

Рефпсксив’

ноет»

Симметрич

ность

Инверсия

hasSubtype

Отношение подтипа, не специфицированное иным образом

Да

Нет

Нет

isSubtypeOf

hasPart

Отношение части к целому, не специфицированное иным образом

Да

Да

Нет

isPartOf

smailerThan

Общее отношение упорядочения (меньше)

Да

Нет

Нет

greaterThan

10 Спецификация API словаря

10.1    Введение

API словаря ОТС (CTS Vocabulary API — CTSVAPI) состоит из двух разделов — раздел времени исполнения, определяющий комплекс функций, необходимых для каждодневных операций программного обеспечения, обрабатывающего сообщения, соответствующие стандарту HL7 Версии 3. и раздел обозревателя, определяющего функции, предназначенные для разработки и конструирования словаря HL7 и содержания наборов значений/словарных доменов. Предполагается, что функции раздела обозревателя имеют доступ к API времени сообщений, поэтому функциональность этого API не воспроизводится в разделе обозревателя. 8 обоих разделах используется описанный ниже общий комплекс определений базовых типов данных.

10.2    Базовые типы данных

Ниже перечислены базовые типы данных, используемые в API времени исполнения на уровне словаря. API обозревателя словаря и API трансляции;

•    OID — объектный идентификатор ИСО (ОИД);

•    Description — текстовое описание объекта или сущности. При реализации следует иметь в виду, что некоторые описания могут быть довольно длинными;

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

41

ГОСТ Р HCO/HL7 27951—2016

•    CTSVersionld — идентификатор версии реализации Общих терминологических служб (ОТС). В версии 1.0 поле major имеет значение 1. а поле minor — значение 0:

. CodeSystemld — уникальный идентификатор системы кодирования. В контексте стандартов HL7 им должен быть объектный идентификатор ИСО (ОИД). присвоенный комитетом HL7. если таковой имеется. Другие виды идентификаторов, например UUIO. определенный для среды распределенных вычислений DCE (Distributed Computing Environment), и т. д.. могут использоваться в качестве идентификаторов систем кодирования вне среды применения стандартов HL7. В этих случаях разработчик должен предупреждать любые конфликты пространств имен, которые могут возникать между ОИД и другими идентификаторами:

•    CodeSystemName — краткая мнемоника или имя системы кодирования. Как идентификатор системы кодирования, так и ее имя уникальны в пространстве имен, контролируемом стандартом HL7 Версии 3. но в общем случае уникальность не гарантируется:

•    ConceptCode — код. уникально представляющий класс или понятие в контексте системы кодирования:

•    Conceptld — сочетание идентификаторов системы кодирования и кода понятия, являющееся глобально уникальным именем понятия:

-    Versronld — уникальный идентификатор версии. Обычно идентификаторы версий имеют определенную упорядоченность, позволяющую людям или программам определить, в какой последовательности идут эти идентификаторы:

•    CodeSystemVersion — идентификатор версии системы кодирования:

•    ExpansionContext — непрозрачный большой двоичный объект, используемый для передачи контекстной информации между сервером и клиентом.

10.2.1 Кодируемые элементы данных

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

•    LanguageCode — код разговорного или письменного языка, конструируемый по правилам, описанным в документе IETF RFC 3066 — Tag for Identification of Languages (теги идентификации языка). Этот код состоит из нескольких субтегов, разделенных дефисами {«•»). Первый субтег идентифицирует основной код языка. По возможности он должен быть взят из ИСО 639-1 «Codes for the representation of names of languages — Part 1: Alpha-2 code» (Коды для представления названий языков. Часть 1. Двухбуквенный код). Если двухбуквенный код отсутствует, то надо взять код из ИСО 639-2 «Codes for the representation of names of languages — Part 2: Alpha-3 code» (Коды для представления названий языков. Часть 2. Трехбуквенный код). Существует также дополнительный механизм спецсимволов, который в настоящем стандарте не описан.

Второй субтег не обязателен. Если он присутствует, то должен иметь длину от 2 до 8 символов. Если его длина равна двум, took должен содержать двухбуквенный код страны, взятый из ИСО 3166-1 «Codes for the representation of names of countries and their subdivisions — Part 1: Country codes» (Коды для представления названий стран и единиц их административно-территориального деления. Часть 1. Коды стран). Если длина субтега от 3 до 8 символов, то он должен содержать код, взятый из регистра тегов языков организации IANA. Дополнительные субтеги используются, если надо уточнить информацию о языке:

•    MimeTypeCode — тип среды MIME, взятый из документа организации IETF RFC 2045 — Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies (Многоцелевые расширения почты Интернет (MIME). Часть первая: формат тел сообщений Интернет). Комитет HL7 ведет подмножество MediaType типов среды MIME, имеющее ОИД 2.16.840.1.113883.5.79:

•    ConceptStatusCode — статус понятия в системе кодирования (активное, устарело и т. д.):

•    PropertyCode — свойство, которое может быть ассоциировано с понятием в системе кодирования;

•    RelationshipCode—идентифицирует конкретновотношвнив, имеющее место всистеме кодирования. Коды отношений должны по возможности браться из системы кодирования HL7 ConceptRelationshrp (ОИД 2.16.840.1.113883.5.1088);

•    MapQuatityCode — общее «качество» отображения понятия (точное, шире, уже и т. д.);

•    RelationQualifierCode — квалификатор отношения понятий;

-    MatchAlgorithmCode — кодированное обозначение алгоритма, используемого для определения совпадения строк и сравнения.

В таблице 22 перечислены системы кодирования и их идентификаторы ОИД. используемые в сообщениях API словаря ОТС.

42

ГОСТ Р HCO/HL7 27951—2016

Таблица 22 — ОИД и имена кодируемых эпеменгое данных

Элемент данных API словаря

ОИД системы кодирования

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

Language Code

2.16.840.1.113883.6.99

IS0639-1

Language Code

2.16.840.1.113883.6.100

IS0639-2

MimeTypeCode

2.16.840.1.113883.5.79

MediaType

ConceptStatusCode

2.16.840.1.113883.5.1086

ConceptStatusCode

PropertyCode

2.16.840.1.113883.5.1087

ConceptProperty

RelationshipCode

2.16.840.1.113883.5.1088

ConceptCodeRetationship

MapQualityCode

2.16.840.1.113883.5.1093

TranslabonQuaJity

RelationQualifierCode

MatctiAlgorithmCode

2.16.840.1.113883.5.1094

MatchAlgorithm

10.2.2    Раздел идентификации службы

API времени исполнения на уровне словаря и API обозревателя наследуют общий интерфейс идентификации.

Идентификация службы содержит сведения о ее реализации — имя. версию, описание, реали* зованную версию ОТС. При каждом вызове методов идентификации службы возможна генерация исключения UnexpectedError.

Общий интерфейс идентификации предоставляет следующие методы:

-    getServiceName — возвращает имя. присвоенное службе ее поставщиком:

•    getServiceVersion — возвращает идентификатор версии, специфичный для конкретной реализации службы:

-    getServiceDescription — описание службы, сведения об авторе, назначении и т. д.;

-    getCTSVersion — конкретная версия ОТС. реализованная службой {например. 1.0).

10.2.3    Исключения

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

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

Исключения, генерируемые API словаря:

•    идентификатор системы кодирования не распознан службой;

-    идентификатор системы кодирования распознан службой, но код понятия concept_code не определен в этой системе:

•    значение кода свойства property_code не поддерживается системой кодирования;

-    язык с кодом language_code не поддерживается системой кодирования;

-    отношение с кодом relationship_code не поддерживается системой кодирования:

•    значение квалификатора отношения с кодом relationQuaiifier_code не поддерживается системой кодирования:

•    тип среды MIME с кодом mimeType_code не поддерживается системой кодирования;

•    у понятия с кодом concept_»d нет обозначения на языке с кодом language_code;

•    значение параметра codeSystem_name не идентифицирует ту же систему кодирования, что и значение параметра codeSystem_id. либо вообще не именует систему кодирования:

•    служба не может осуществить разбор текста, переданного в параметре matchText.

10.3    API времени исполнения на уровне словаря

В настоящем подразделе описаны атрибуты и методы раздела времени исполнения API словаря

ОТС.

43

ГОСТ Р HCO/HL7 27951—2016

10.3.1    Системы кодирования, поддерживаемые API

10.3.1.1    Структура класса CodeSystem

Класс CodeSystem имеет следующие поля:

•    codeSystemJd — уникальный идентификатор системы кодирования, которым обычно служит объектный идентификатор ИСО (ОИД);

•    codeSystem_name — офицальное имя системы кодирования:

•    copyright — информация об авторских правах на систему кодирования, если таковые имеются:

•    codeSystemj/ersions — версия или версии системы кодирования, поддерживаемые службой. Этот список может быть пуст, если система кодирования не имеет отдельных идентификаторов версий.

10.3.1.2    Метод getSupportedCodeSystems

Метод getSupportedCodeSystems возвращает список всех систем кодирования и их версий, поддерживаемых службой.

Входные параметры:

-    timeout — время в миллисекундах, в течение которого клиент готов ждать завершения операции. Значение 0 параметра timeout указывает, что на время ее выполнения ограничения не накладываются:

-    sizeLimit — максимальное число элементов, которое служба может вернуть. Если число возвращенных элементов совпадает с sizeLimit, то клиент предполагает, что существуют дополнительные элементы. которые не были возвращены. Значение 0 параметра sizeLimit указывает, что число элементов, которые могут быть возвращены, не ограничивается.

Исключения:

•    TimeoutError;

-    UnexpectedError.

10.3.2    Обозревание идентифицирующей информации системы кодирования

10.3.2.1    Структура, возвращаемая методом lookupCodeSystemlnfo

Структура, возвращаемая методом lookupCodeSystemlnfo. имеет следующие поля:

•    CodeSystem — идентификатор системы кодирования, ее имя и поддерживаемая версия {версии):

•    fullName — полное имя системы кодирования;

•    codeSystemDescription — описание содержания системы кодирования:

•    supportedLanguages — список всех языков, которые полностью или частично поддерживаются системой кодирования. «Поддерживаемый» язык распознается системой кодирования и на нем доступна хотя бы часть обозначений или свойств понятий. Все системы кодирования должны поддерживать хотя бы един язык. В то время как служба должна возвращать перечисление всех субтегов основного языка, который она поддерживает, она не обязана перечислять вторичные языки. (Например, если она поддерживает язык «еп-UK». она должна возвращать тег «еп». но может возвращать или не возвращать «еп-UK»);

-    supportedRelations — список всех отношений, поддерживаемых службой в системе кодирования. «Поддерживаемое» отношение распознается системой кодирования, которая способна определить. являются ли два принадлежащих ей кода понятий связанными этим отношением. Неиерархическая система кодирования не нуждается в поддержке каких-либо отношений. Отношение подтипа представлено кодом отношения hasSubtype;

•    supportedProperties — список всех свойств, поддерживаемых системой кодирования. Свойство считается «поддерживаемым», если система кодирования распознает его и по меньшей мере одно кодированное понятие ассоциировано с этим свойством и необязательным значением;

•    supportedMimeTypes — список типов среды MIME, поддерживаемых системой кодирования. Все системы кодирования должны поддерживать тип среды text/plain (неформатированный текст), даже если в ней нет ни одного свойства с этим типом;

-    supportedRelationshipQuaiifiers — список квалификаторов отношений, распознаваемых системой кодирования (если таковые имеются).

10.3.2.2    Метод lookupCodeSystemlnfo

Метод lookupCodeSystemlnfo получает идентификатор системы кодирования (ОИД) и/или ее имя и возвращает детальное описание системы кодирования и элементов, поддерживаемых службой.

Входные параметры:

•    codeSystemJd — идентификатор ИСО ОИД, присвоеный системе кодирования:

-    codeSystem_name — уникальное имя системы кодирования.

44

ГОСТ Р HCO/HL7 27951—2016

Исключения:

•    UnknownCodeSystem;

. CodeSystemNameldMismatch.

-    UnexpectedError.

10.3.3    Проверка идентификатора понятия

Метод isConceptldVatid определяет, является ли переданный ему идентификатор понятия действительным.

Входные параметры:

•    conceptjd — проверяемый код понятия и его система кодирования:

•    activeConceptsOnly — значение TRUE указывает, что действительными считаются только активные понятия. Значение FALSE указывает, что действительным считается любой код понятия, известный системе кодирования.

Исключения:

-    UnknownCodeSystem;

•    UnexpectedError.

10.3.4    Обозревание обозначения идентификатора понятия

10.3.4.1    Класс StringAndLanguage

Класс StringAndLanguage содержит поле текста и поле кода языка, ассоциированного с текстом. Такая структура, состоящая из двух частей, существует по той причине, что код языка, возвращаемый методом lookupDesignation и другими операциями, может отличаться от кода языка, указанного во входных параметрах. Например, клиент мог запросить обозначение на языке с кодом «вп-scouse» (ливерпульский диалект английского языка), а служба может вернуть обозначение на английском языке без указания диалекта (с кодом «еп»). Программному обеспечению клиента может потребоваться информация о том. что возвращенное значение не точно совпадает с запрошенным.

В некоторых языках программирования связь с языком может являться частью возвращаемого значения (например, при использовании протокола XML/SOAP). Для единообразия поле кода языка language.code должно всегда передаваться в таких значениях, даже если оно избыточно.

10.3.4.2    Метод lookupDesignation

Метод lookupDesignation возвращает обозначение полученного им идентификатора понятия, наиболее подходящее для заданного языка и контекста. Метод lookupDesignation сперва пытается найти обозначение, которое в точности соответствует заданному языку. Если такое обозначение не найдено, то метод удаляет из кода языка крайний правый субтег. если таковой имеется, и повторяет процедуру поиска. Этот процесс повторяется до тех пор. пока будет найдено требуемое обозначение либо останется только основной тег языка. Например, для кода языка «еп-UK-south» будут сделаны попытки поиска для языков «еп-UK-south», «еп-UK» и «еп» в указанном порядке. Обозначения на языках с кодами «еп-US» и «fr» будут игнорироваться при поиске.

Входные параметры:

•    conceptjd — код понятия и его система кодирования;

•    language_code — желательный код языка для возвращаемого обозначения.

Исключения:

-    UnknownLanguageCode;

•    UnknownCodeSystem;

•    UnknownConceptCode;

•    NoApplicableDesignabonFound;

•    UnexpectedError.

10.3.4.3    Правила совпадения в методе lookupDesignation

В документе RFC 3066 «Tag for Identification of Languages» (теги идентификации языка) описаны коды языков, состоящие из нескольких частей. Первая часть берется из списков двух- или трехсимвольных кодов, определенных в ИСО 639. при этом двухсимвольный код имеет приоритет по сравнению с трехсимвольных, если у языка есть оба кода, вторая часть кода языка, субтег, идентифицирует страну, регион или другой вариант.

Метод lookupDesignation использует следующие правила совпадения с заданным кодом языка:

1)    Определить, поддерживает ли система кодирования основной код языка. Если нет. сгенерировать исключение UnknownLanguageCode;

2)    Если обнаружено обозначение, у которого код языка точно совпадает с заданным, а признак предпочтительности preferredForLanguage имеет значение TRUE, возвратить его:

45

ГОСТ Р HCO/HL7 27951—2016

3)    Если существуют обозначения, язык которых точно совпадает с заданным, а признак предпочтительности preferredForLanguage имеет значение FALSE, возвратить обозначение, самое раннее е алфавитном порядке;

4)    Если код языка имеет един или более вторичных субтегов. удалить крайний правый тег. и повторить шаги 1 и 2:

5)    Если у кода языка вторичный субтег отсутствует, сгенерировать исключение NoAppJicable DesignationFound.

10.3.5 Определение наличия отношения между двумя кодами понятий

Метод areCodesRelated определяет наличие отношения между двумя переданными ему кодами понятий.

Входные параметры:

•    codeSystem.id — система кодирования родительского и дочернего кодов;

•    source_code — код понятия, предполагаемый источником отношения;

•    target.code — код понятия, предполагаемый целью отношения;

•    relationship_code — код понятия, идентифицирующий отношение;

•    relationQuatifiers — необязательный список кодов квалификаторов отношения. Если список relationQualifiers содержит один или несколько кодов квалификаторов, то рассматриваются только сведения о тех отношениях, квалификаторы которых совпадают со всеми квалификаторами, включенными в этот список;

-    directReiationsOnty — значение TRUE указывает, что должны проверяться только непосредственные отношения. Значение FALSE указывает, что должно проверяться транзитивное замыкание отношения, если оно является транзитивным. Если отношение не транзитиено. то значение признака directRelationsOnly никакого влияния на результат не оказывает.

Метод areCodesRelated возвращает значение TRUE, если выполняется одно из следующих условий:

1)    В заданной системе кодирования существует прямое отношение типа relationship_code между кодами понятий source_code и target_code:

2)    В заданной системе кодирования существует прямое отношение типа relationship.code между кодами понятий target_code и source_code. при этом отношение является симметричным:

3)    Коды понятий source.code и target.code эквивалентны и отношение рефлексивно;

4)    Параметр directRelationsOnly имеет значение FALSE, отношение reiationship_code транзите-но и в прямом транзитивном замыкании отношения refationship.code. начинающегося с кода понятия source_code, существует отношение типа reiationship.code между кодами понятий source.code и target, code:

5)    Параметр directRelationsOnly имеет значение FALSE, отношение reiationship.code транзитиено и симметрично, и в обратном транзитивном замыкании отношения reiationship.code. начинающегося с кода понятия source.code. существует отношение типа reiationship.code между кодами понятий target, code и source.code.

Исключения:

•    UnknownConceptCode;

•    UnknownCodeSystem;

•    UnknownRelationshipCode:

•    UnknownRelationQualifier;

-    UnexpectedError.

10.4 API обозревателя на уровне словаря

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

API обозревателя на уровне словаря использует те же самые базовые типы данных, что и API времени исполнения. Они определены в подразделе 10.2 «Базовые типы данных». 8 настоящем подразделе описаны атрибуты и методы раздела обозревателя API на уровне словаря.

Обозреватель словаря наследует идентифицирующую информацию от интерфейса, описанного в 10.2.2 «Раздел идентификации службы».

46

ГОСТ Р HCO/HL7 27951—2016

10.4.1    Системы кодирования, поддерживаемые API

Метод getSupportedCodeSystems предоставляет список всех систем кодирования и их версий, поддерживаемых службой, в форме класса CodeSystemldAndVersionsList. описанной в 10.3.1 «Системы кодирования, поддерживаемые API».

Входные параметры:

•    timeout — время в миллисекундах, в течение которого клиент готов ждать завершения операции. Значение 0 параметра timeout указывает, что на время ее выполнения ограничения не накладываются;

•    sizeLimit — максимальное число элементов, которое служба может вернуть. Если число возвращенных элементов совпадает с sizeLimit. то клиент предполагает, что существуют дополнительные элементы. которые не были возвращены. Значение 0 параметра sizeLimit указывает, что число элементов, которые могут быть возвращены, не ограничивается.

Исключения:

•    TimeoutError;

-    UnexpectedError.

10.4.2    Поиск кодов понятий по тексту обозначения

Метод tookupConceptCodesByDesignauon возвращает список идентификаторов понятий, обозначения которых совладают с заданной строкой текста и удовлетворяют заданным критериям.

Входные параметры:

•    oodeSystemJd — идентификатор системы кодирования, в которой осуществляется поиск;

-    matchText — если присутствует и не пуст, то возвращаются сведения только о тех кодах понятий, обозначения которых совпадают с текстом, переданным в этом параметре. Если параметр matchText отсутствует или пуст, то возвращаются сведения обо всех обозначениях;

•    matchAlgorithm_code — если параметр matchText присутствует и не пуст, то значение параметра matchAlgorithm_code указывает, каким образом определяется совладение обозначения со значением параметра matchText. Детальные сведения см. в 8.2.2.1 «Алгоритмы совпадения строк»;

•    language_code — если этот параметр указан, то ограничивает поиск обозначений только на этом языке. (По умолчанию — поиск на всех языках.) Совпадающий код языка должен быть не более общим, чем значение, заданное этим параметром. Например, если этот параметр имеет значение «еп». то должны считаться совпадающими обозначения, имеющие коды языка «еп». «еп-UK». «еп-UK-south» и т. д. Если же параметр language_code имеет значение «еп-UK-south». то будут возвращены идентификаторы только тех понятий, у которых язык обозначений совпадает с заданным;

•    activeConceptsOnly — значение TRUE (используемое по умолчанию) указывает, что допустимыми считаются только коды понятий, которые в настоящее время активны. Значение FALSE указывает, что допустимыми считаются все коды понятий, содержащиеся в системе кодирования;

-    timeout — время в миллисекундах, в течение которого клиент готов ждать завершения операции. Значение 0 параметра timeout указывает, что на время ее выполнения ограничения не накладываются;

•    sizeLimit — максимальное число элементов, которое служба может вернуть. Если число возвращенных элементов совпадает с sizeLimit то клиент предполагает, что существуют дополнительные элементы. которые не были возвращены. Значение 0 параметра sizeLimit указывает, что число элементов, которые могут быть возвращены, не ограничивается.

Исключения:

•    UnknownCodeSystem;

•    BadlyFormedMatchText:

•    UnknownMatchCode:

•    UnknownLanguageCode;

•    TimeoutError;

-    UnexpectedError.

10.4.3    Поиск кодов понятий по их свойствам

Метод lookupConceptCodesByPropcrty возвращает список идентификаторов понятий, имеющих одно или несколько свойств, совпадающих с заданной строкой текста и удовлетворяющих заданным критериям.

Входные параметры:

-    codeSystem_id — идентификатор системы кодирования, в которой осуществляется поиск;

•    matchText — искомый текст. Формат и синтаксис этого текста зависит от значения параметра matchAlgorithmCode;

47

ГОСТ Р HCO/HL7 27951—2016

•    matchAlgorithm_code — указывает алгоритм, с помощью которого определяется совпадение свойства со значением параметра matchText Детальные сведения см. в 8.2.2.1 «Алгоритмы совпадения строк»:

•    language_code — если этот параметр указан, то ограничивает поиск свойств только на этом языке. (По умолчанию — поиск на всех языках.) Совпадающий код языка должен быть не более общим, чем значение, заданное этим параметром. Например, если этот параметр имеет значение «ел», то должны считаться совпадающими обозначения, имеющие коды языка «еп». «еп-UK». «еп-UK-south» и т. д. Если же параметр language_code имеет значение «еп-UK-sooth», то будут возвращены идентификаторы только тех понятий, у которых язык свойств совпадает с заданным;

•    activeConceptsOnly — значение TRUE (используемое по умолчанию) указывает, что допустимыми считаются только коды понятий, которые в настоящее время активны. Значение FALSE указывает, что допустимыми считаются все коды понятий, содержащиеся в системе кодирования;

•    properties — список кодов свойств, участвующих в поиске (по умолчанию искать по всем свойствам);

•    mimeTypes — список типов среды MIME, участвующих в поиске (по умолчанию искать по всем типам среды MIME);

-    timeout — время в миллисекундах, в течение которого клиент готов ждать завершения операции. Значение 0 параметра timeout указывает, что на время ее выполнения ограничения не накладываются;

•    sizeLimit — максимальное число элементов, которое служба может вернуть. Если число возвращенных элементов совпадает с sizeLimit то клиент предполагает, что существуют дополнительные элементы. которые не были возвращены. Значение 0 параметра sizeLimit указывает, что число элементов, которые могут быть возвращены, не ограничивается.

Исключения:

•    UnknownCodeSystem;

•    BadlyFormedMatchText:

•    UnknownMatchCode:

•    UnknownLanguageCode;

•    UnknownPropertyCode:

•    UnknownMimeTypeCode.

•    TimeoutError;

•    UnexpectedError.

10.4.4 Возвращение полного описания кодированного понятия

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

10.4.4.1    Класс ConceptDesignation

Класс ConceptDesignation имеет следующие поля:

•    designation — обозначение кодированного понятия;

-    language_code — язык обозначения;

•    preferredForLanguage — значение TRUE указывает, что это обозначение следует предпочесть для представления назначения кодированного понятия Coded Concept на заданном языке, если иные критерии отсутствуют. Для каждого заданного языка и заданного понятия только одно обозначение может быть указано предпочтительным.

10.4.4.2    Класс ConceptProperty

Класс ConceptProperty имеет следующие поля:

•    property_code — код понятия, идентифицирующий конкретное свойство;

•    propertyValue — значение этого свойства у данного понятия;

•    language_code — язык значения propertyValue (необязательный);

•    mimeTypeCode — тип среды MIME значения propertyValue (по умолчанию text/plain).

10.4.4.3    Класс CompleteCodedConceptDescription

10.4.4.3.1 Класс ConceptRelationship

Класс ConceptRelationship имеет следующие поля:

•    sourceConceptJd — идентификатор понятия (идентификатор системы кодирования и код понятия), являющегося источником отношения;

•    relationship_code — код отношения;

•    relationQualifiers — необязательный список кодов квалификаторов, уточняющих или иным образом характеризующих отношение;

48

ГОСТ Р HCO/HL7 27951—2016

•    targetConceptJd — идентификатор понятия (идентификатор системы кодирования и код понятия), являющегося источником отношения.

10.4.4.3.2    Класс CompleteCodedConceptDescription

Класс CompleteCodedConceptDescription имеет следующие поля:

•    oonceptjd — идентификатор системы кодирования и код понятия, информация о котором должна быть извлечена;

•    conceptStatus_code — статус понятия в заданной системе кодирования:

•    codeSystem_vers»on — версия системы кодирования, из которой берется описание понятия:

•    designatedBy — список всех обозначений кодированного понятия:

•    hasProperties — список всех свойств кодированного понятия за исключением свойств обозначения ConceptDesignation;

•    sourceFor — список всех отношений, в которых данное понятие выступает а роли «источника»:

•    targetOf — список всех отношений, в которых данное понятие выступает в роли «цели».

10.4.4.3.3    Метод lookupCompleteCodedConcept

Метод lookupCompleteCodedConcept возвращает структурированную информацию, содержащую все известные сведения о заданном коде понятия (с точки зрения CTS).

Входные параметры:

•    conceptjd — идентификатор системы кодирования и код понятия.

Исключения:

•    UnknownCodeSystem;

•    UnknownConceptCode;

•    UnexpectedError.

10.4.5    Просмотр обозначений конкретного кода понятия

Метод lookupDesignafons возвращает избранные обозначения заданного понятия. Правила совпадения. используемые методом lookupDesignations. идентичны тем. что определены в 10.4.2 «Поиск кодов понятий по тексту обозначения». Возвращаемые значения имеют тип данных списка ConceptDesignationList, элементы которого описаны в 10.4.4.1 «Класс ConceptDesignation».

Входные параметры:

•    codeSystemjd — идентификатор системы кодирования, в которой осуществляется поиск:

•    matchText — искомый текст. Формат и синтаксис этого текста зависит от значения параметра matchAlgorithmCode;

-    matchAlgorithm.code — указывает алгоритм, с помощью которого определяется совпадение обозначения со значением параметра matchText. Детальные сведения см. в 6.2.2.1 «Алгоритмы совпадения строк»:

-    language.code — если этот параметр указан, то ограничивает поиск свойств только на этом языке. (По умолчанию — поиск на всех языках.)

Исключения:

•    UnknownCodeSystem;

•    UnknownConceptCode:

•    BadlyFormedMatchText:

•    UnknownMatchAlgorithm;

•    UnknownLanguageCode;

•    UnexpectedError.

10.4.6    Просмотр свойств кода понятия

Метод tookupProperties возвращает избранные свойства заданного понятия. Обработка параметров properties. matchText language.code и mimeTypes следует тем же правилам, что используются методом lookupConceptCodesByProperty. Возвращаемые значения имеют тип данных списка ConceptPropertyList элементы которого описаны в 10.4.4.2 «Класс ConceptProperty».

Входные параметры:

•    codeSystemjd — идентификатор системы кодирования, в которой осуществляется поиск:

•    properties — список кодов свойств, участвующих в поиске (по умолчанию искать по всем свойствам);

•    matchText — искомый текст. Формат и синтаксис этого текста зависит от значения параметра matchAlgorithmCode:

•    matchA!gorithm_code — указывает алгоритм, с помощью которого определяется совладение свойства со значением параметра matchText. Детальные сведения см. в 8.2.2.1 «Алгоритмы совпадения строк»;

49

ГОСТ Р HCO/HL7 27951—2016

•    language_code — если этот параметр указан, то ограничивает поиск свойств только на этом языке. (По умолчанию — поиск на всех языках.);

•    mimeTypes — список типов среды MIME, участвующих в поиске (по умолчанию искать по всем типам среды MIME).

Исключения:

•    UnknownCodeSystem:

•    UnknownConceptCode;

•    BadlyFormedMatchText:

•    UnknownMatchAlgorithm;

•    UnknownLanguageCode;

•    UnknownPropertyCode:

•    UnknownMimeTypeCode.

-    UnexpectedError.

10.4.7 Возвращение списка связанных кодов понятий

10.4.7.1    Структура данных, возвращаемая методом lookupCodeExpansion

Структура данных, возвращаемая методом lookupCodeExpansion. имеет следующие поля:

•    pathLength — целое значение, определяющее расстояние в уровнях от раскрываемого кода, для которого это поле всегда имеет значение 0:

•    concept_oode — связанный код понятия:

•    designation — предпочтительное обозначение кода на подходящем языке в прикладном контексте либо обозначение по умолчанию, если ни одно из обозначений явно не объявлено предпочтительным:

•    relationQuatifiers — список кодов квалификаторов отношения, применяемых к данному узлу:

•    canExpand — значение TRUE указывает, что существуют дополнительные коды понятий, непосредственно связанные с кодом понятия concept_code. которые могут быть далее раскрыты;

•    expansionContext — если параметр canExpand имеет значение TRUE, то параметр expansionContext содержит непрозрачный контекст, который может использоваться для дальнейшего раскрытия кода в этом узле.

10.4.7.2    Просмотр иерархического раскрытия кода

Метод lookupCodeExpansion возвращает линеаризованный список кодов, имеющих отношение типа relationship_code с понятием, имеющим код expandConcept_id.concept_ code в системе кодирования с идентификатором expandConcept.id.codeSystemJd.

Входные параметры:

•    expandConceptJd — идентификатор системы кодирования и раскрываемый код понятия. Если параметр relationship_code имеет значение «hasSubtype» и признак souceToTarget имеет значение TRUE, то код понятия может быть опущен. В этом случае должны возвращаться сведения обо всех «корневых» понятиях отношения подтипа, то есть всех понятиях, которые не являются целью одного или нескольких отношений типа «hasSubtype»:

•    relationship_code — ход раскрываемого понятия:

•    sourceToTarget — значение TRUE указывает, что раскрытие осуществляется от источника к цели. Значение FALSE указывает, что раскрытие осуществляется от цепи к источнику;

•    directReiationsOnty — если этот параметр имеет значение TRUE или отношение, заданное параметром reiationship_code. не является транзитивным, то возвращаются только прямые цели (или источники. если параметр sourceToTarget имеет значение FALSE) раскрываемого понятия с идентификатором expandConceptJd. Если он имеет значение FALSE и отношение, заданное параметром reiationship_code. является транзитивным, то возвращаются также потомки или предшественники этого понятия:

-    designationLanguage_code — код языка, который должен был использоваться для возвращаемых обозначений понятий:

•    timeout — время в миллисекундах, в течение которого клиент готов ждать завершения операции. Значение 0 параметра timeout указывает, что на время ее выполнения ограничения не накладываются;

•    sizeLimit — максимальное число элементов, которое служба может вернуть. Если число возвращенных элементов совпадает с sizeLimit. то клиент предполагает, что существуют дополнительные элементы. которые не были возвращены. Значение 0 параметра sizeLimit указывает, что число элементов, которые могут быть возвращены, не ограничивается.

50

ГОСТ Р HCO/HL7 27951—2016

Для возвращения потомков или предшественников узла используется обход дерева в глубину. Если узел встречается более чем в одной ветви, то в возвращаемой структуре он реплицируется. Если параметр directRetationsOnly имеет значение FALSE, отношение транзитивно и в структуре отношения встречается цикл, то раскрытие будет останавливаться на последнем неповторяющемся узле. В этом случае параметр canExpand будет иметь значение TRUE, что позволит клиенту при необходимости по* шагово пройти по этой циклической структуре.

Параметры designationLanguage_code и usageContext_code используются при определении того, какое именно обозначение должно быть возвращено в структуре с типом данных RelatedCode. Для определения подходящего обозначения используются те же правила, что и в методе lookupDesignation. только данный метод не генерирует исключение NoApplicableOesignationFound. Если у конкретного узла нет подходящих обозначений, то поле обозначения должно содержать пустую строку.

Исключения:

-    UnknownCodeSystem;

•    UnknownConceptCode;

•    UnknownRelaUonshipCode;

-    UnknownLanguageCode:

•    TtmeoutError;

•    UnexpectedError.

10.4.7.2.1 Детальные сведения о методе lookupCodeExpansion

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

В таблицах 23—29 показаны сведения, возвращаемые методом lookupCodeExpansion при использовании информации, показанной на рисунке 7. и параметрах вызова, указанных в заголовках этих таблиц.

51

ГОСТ Р HCO/HL7 27951—2016

Таблица 23 — Результат вызова метода lookupCodeExpansion с параметрами lookupCodeExpansxxi {expandCoocept_idsO. sourceToTargetsTRUE. directRelattonsOnty^TRUE)

pathLenglh

cor>cept_codB

canExpand

expansenConlexI

1

E

TRUE

(ecE)

1

F

TRUE

(ecF)

1

I

FALSE

1

J

TRUE

(ecJ)

Таблица 24 — Результат вызова метода lookupCodeExpaionsion (expandConoept_id=D. sourceToTarge<sTRUE. directReiabonsOnlysFALSE)

palhLength

coi>cept_c«xJe

canExpand

expans>onConlext

1

E

FALSE

2

G

FALSE

3

H

FALSE

1

F

FALSE

2

G

FALSE

3

H

FALSE

1

I

FALSE

1

J

FALSE

2

К

TRUE

(ecK)

3

M

FALSE

Примечание — В таблице 24 узел 2 К возвращен как раскрываемый, поскольку был обнаружен цикл.

Таблица 2S — Результат вызова метода lookupCodeExpansion (expandConcept_»dsD. sourceToTarget=FALSE. directRetationsOnlysFALSE)

pathLength

concept_cpde

canExpand

axpansenConlexI

1

В

FALSE

2

A

FALSE

1

C

FALSE

2

К

FALSE

1

J

FALSE

2

0

TRUE

(ecD)

Таблица 26 — Результат вызова метода lookupCodeExpansion {expandCoocepl_id=, source То Target=TRUE, direc(Re(ationsOnlyBTRUE)

pathLength

concept,cpde

canExpand

expansionConlexI

1

A

TRUE

(ecA>

1

L

FALSE

52

ГОСТ Р HCO/HL7 27951—2016

Таблица 27 — Результат вызова метода lookupCodeExpansion {expandCoocepl_id=, source То Target=TRUE, direc(RelabonsOnlysFALSE)

pathLenglh

cor»cept_CDde

canExpand

expansenConlexI

1

L

FALSE

1

A

FALSE

2

В

FALSE

3

0

FALSE

4

E

FALSE

5

G

FALSE

6

H

FALSE

4

F

FALSE

5

G

FALSE

6

H

FALSE

4

I

FALSE

4

J

FALSE

5

К

TRUE

(ecK>

6

M

FALSE

2

C

FALSE

3

D

FALSE

4

E

FALSE

5

G

FALSE

6

H

FALSE

4

F

FALSE

5

G

FALSE

6

H

FALSE

4

I

FALSE

4

J

FALSE

5

К

TRUE

(ecK)

6

M

FALSE

2

c

FALSE

Таблица 28 — Результат вызова метода lookupCodeExpansion (expandConcept_ids. sourceToTargel=FALSE, directRelationsOnly=FALSE)

pathLenglh

concept_code

canExpand

axpansenConlext

1

H

TRUE

(ecH)

1

I

TRUE

(eel)

1

M

TRUE

(ecM)

1

L

FALSE

53

ГОСТ Р HCO/HL7 27951—2016

Таблица 29 — Результат вызова метода lookupCodeExpansion {expandConcept_KJ=L. source То Tar9et=TRUE. directRetabonsOnly=FALSE)

pathLenglh

cor»cept_code

canExpand

expansionContext

10.4.8 Дальнейшее раскрытие возвращенного узла

Метод expandCodeExpansionContext обеспечивает дальнейшее раскрытие элемента спи* ска ReiatedCodeList. возвращенного предшествующим вызовом метода lookupCodeExpansion или expandCodeExpansionContext.

Входные параметры:

•    contextToExpand — непрозрачный идентификатор, возвращенный в поле expansionContext элемента списка ReiatedCodeList. возвращенного предшествующим вызовом метода lookupCodeExpansion или expandCodeExpansionContext.

Исключения:

- InvalidExpansionContext.

Примечание — Контексты раскрытия не обязательно постоянны. Обеспечение действительности контекста раскрытия в определенно*! интервале времени является функцией конкретной реализации службы:

•    NoApplicableDesignaUonFound;

•    TimeoutError;

•    UnexpectedError.

10.4.8.1 Детальные сведения о методе expandCodeExpansionContext

В таблицах 30—32 показаны сведения, возвращаемые методом expandCodeExpansionContext при использовании информации, описанной в 10.4.7 «Возвращение списка связанных кодов понятий».

Таблица 30 — Результат вызова метода expandCodeExpansionContext (expandContext=ecE) для раскрытия контекста. возвращенного в примере, показанном в таблице 23

pathLenglh

concept_code

canExpand

expansionContext

1

G

TRUE

<ecG)

Примечание — Длина пути продолжает ту. что была получена при предшествующе*! вызове.

Таблица 31 — Результат вызова метода expandCodeExpansionContext (expandContext=ecG) для раскрытия контекста. возвращенного а примере, показанном в таблице 30

pathLenglh

concepl_code

canExpand

expansionContext

1

H

FALSE

Таблица 32 — Результат вызова метода expandCodeExpansionContext (expandContext=ecG) для раскрытия контекста. возвращенного в примере, показанном в таблице 31

pathLength

concept_code

canExpand

expansionContext

3

D

FALSE

4

E

FALSE

5

G

FALSE

6

H

FALSE

4

F

FALSE

5

G

FALSE

6

H

FALSE

54

ГОСТ Р HCO/HL7 27951—2016

Окончание таблицы 32

palhLenglh

concepl_code

canExpand

expansionContext

4

I

FALSE

4

J

FALSE

5

К

TRUE

(ecK)

6

M

FALSE

11 Модель отображения кодов

11.1 Введение

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

Рисунок 8 — Модель отображения кодов в ОТС

11.2 Отображение кодов

11.2.1 Класс CodeMap

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

Класс CodeMap «содержит» один или несколько экземпляров класса MapEntry. В настоящем стандарте представление этого отображения является чисто символическим и не предназначено для описания способов реального отображения кодов.

Каждое отображение CodeMap идентифицируется уникальным именем отображения тар_лате. Между одной и той же парой систем кодирования может быть более одного отображения CodeMap.

55

ГОСТ Р HCO/HL7 27951—2016

Каждое отображение CodeMap имеет необязательное поле mapDescription, описывающее источник трансляции, момент ее создания, способ ее выполнения и т. д.

11.3 Класс MapEntry

Класс TranslationEntry представляет трансляцию кода понятия fromCode из системы кодирования-источника в соответствующий код понятия toCode. принадлежащий целевой системе кодирования. Поле mapOuality_code задает «качество» трансляции исходного кода в целевой и может принимать одно из значений «точная», «уже», «шире» или «частичное перекрытие».

12 Спецификация отображения кодов

12.1    Введение

Интерфейс отображения кодов поддерживает отображение кодов понятий, принадлежащих одной или нескольким системам кодирования-источников, в эквивалентные им коды, принадлежащие целевой системе кодирования.

12.2    Идентификация службы отображения

Служба отображения наследует общий интерфейс идентификации.

12.3    Отображение кода

12.3.1    Класс CodeMap

Класс CodeMap описывает идентификацию конкретного отображения. Он имеет следующие поля:

•    map_name — уникальное имя конкретного отображения;

•    fromCodeSystemJd — идентификатор ИСО ОИД системы кодирования-источника:

•    fromCodeSystem_name — имя системы кодирования-источника;

•    fromCodeSystem_version — версия системы кодирования-источника, используемая при отображении (необязательная):

•    toCodeSystemJd — идентификатор ИСО ОИД целевой системы кодирования;

•    toCodeSystem_name — имя целевой системы кодирования:

•    toCodeSystem_version — версия целевой системы кодирования, используемая при отображении (необязательная);

•    description — описание отображения (источник, версия, дата, местонахождение и т. д.).

12.3.2    Метод getSupportedMaps

Метод getSupportedMaps возвращает список отображений кодов, поддерживаемых данной конкретной службой. Отображения кодов не симметричны. Из того факта, что служба поддерживает отображение из системы кодирования А в систему кодирования 8. не следует, что она также поддерживает отображение в обратном направлении.

12.4    Исключения

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

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

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

•    служба неподдерживаеттрансляциюсистемыкодированиясидентификатором№отСобе8у$1егп_ м3 в систему кодирования с идентификатором toCodeSystemJd;

•    служба не в состоянии выполнить требуемое отображение;

- заданное имя отображения не распознано службой;

56

ГОСТ Р HCO/HL7 27951—2016

•    между заданной системой кодирования-источника и целевой системой кодирования существует не* сколько возможных отображений. В параметре possible_maps передается список имен этих отображений:

•    идентификатор системы кодирования, указанный в параметре fromConceptJd. не совпадает с идентификатором системы кодирования, указанным в отображении с именем, переданным в параметре map_name;

•    идентификатор системы кодирования, указанный в параметре toCodeSystemJd, не совпадает с идентификатором системы кодирования, указанным в отображении с именем, переданным в параме* тре map_name.

12.5 Отображение кода понятия

12.5.1    Структура выходных данных метода mapConceptCode

Выходные данные метода mapConceptCode имеют следующие поля:

-    mappedConceptJd — идентификатор системы кодирования и код понятия:

•    mapQuality.code — код. характеризующий «качество» операции отображения, например, «точное». «шире», «уже» и т. д.

12.5.2    Метод mapConceptCode

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

Входные параметры:

•    fromConceptJd — имя системы кодирования и код отображаемого понятия:

•    toCodeSystemJd — идентификатор целевой системы кодирования;

•    map_name — имя используемого отображения.

Исключения:

•    UnknownCodeSystem:

•    UnknownConceptCode;

•    MappingNotAvailabte;

•    UnknownMapName;

-    AmbiguousMapRequest

-    MapNameSourceMismatch:

-    MapNameTargetMismatch;

-    UnabteToMap;

•    UnexpectedError.

13 Привязка ОТС к языкам программирования

13.1 Преобразование спецификации на языке IOL в программный код на языке Java

Спецификация интерфейсов ОТС написана на языке определения интерфейсов IDL (interface definition language), описанном в ИСО/МЭК 14750:1999 — Open Distributed Processing — Interface Definition Language (IDL) (Информационные технологии. Открытая распределенная обработка. Определение интерфейсов. Язык). Организация Object Management Group (OMG) описала отображение языка IDL на многие широко распространенные языки программирования, включая ADA. С. C++. COBOL. Java. Lisp, PL/1. Python и Smalltalk. Существует также привязка языка IDL к объектной модели Microsoft Common Object Model (COM).

К сожалению, эти отображения на языки программирования частично зависят от архитектуры CORBA (Common Object Request Broker Architecture — общая архитектура брокера объектных запросов). Например, отображение на язык программирования Java имеет следующие особенности:

•    классы исключений расширяют объект org.omg.CORBA.UserExcepbon и вызывают его как суперкласс с аргументом [class]Helper.id():

-    классы Struct реализуют интерфейс org.omg.CORBA-portable.lDLEntity;

•    классы интерфейсов именуются (classJOperations.java;

•    создаются многие дополнительные вспомогательные файлы [dass]HoWer.java, (class)Helper. java. _(class]Stub.java. (class)POA.java. (dass)POATie.java.

57

ГОСТ Р HCO/HL7 27951—2016

Однако не очень сложно удалить эти пережитки платформы CORBA и тем самым получить спецификацию интерфейса, нейтральную по отношению к реализации.

Для перехода от языка IDL к целевым языкам SOAP и Java используются следующие шаги:

1.    Преобразовать IDL в Java:

java com.sun.tools.corba.se.kjl.toJavaPortable.Compile -fallTIE -pkgPrefix types org.h!7 -pkgPrefix CTSMAPl org.hf7 -pkgPrefix CTSVAPI org.h17 CTSVAPl.idl

2.    Удалить базовые интерфейсные файлы — те. у которых есть соответствующие файлы «xxxOperattons.java». Например, файл «Browser.java* удаляется, поскольку существует соответствующий ему файл «8rowserOperations.java».

3.    Удалить все выходные файлы, имена которых заканчиваются на «Holder.java», «Helper.java». «Stub.java». «POA.java» and «POATie.java».

4.    Заменить «extends org.omg.COR8A.UserException» на «extends java.lang.Exception» и удалить все вызовы с ключевым словом «super» из конструкторов класса исключений.

5.    Изменить обозначения комментариев с «/*» на «/**». чтобы они включались в документацию, создаваемую с помощью утилиты javadoc.

Ссылки на класс org.omg.CORBA.portabte.lDLEntity не удаляются, поскольку они указывают на пустой класс, который тем не менее может быть полезен для различения разных типов.

Ниже показаны примеры этих преобразований:

Примеры

1 Объявление структуры на языке IDL.

/* Идентификатор версии спецификации ОТС */ struct CTSVersionld ( short major; short minor;

I;

2 Объявление структуры на языке Java. package org.hl7.CTSVAPI;

*    org/hl7/CTSVAPI/CTSVersionld.java .

*    Generated by the IDL-to-Java compiler (portable), version "3.1й

*    from ldl/CTSVAPL.idl

*    Monday, March 6, 2004 11:17:26 PM CST V

/•*

*51t;PRE> Идентификатор версии спецификации OTC </PRE>

•/

public linal class CTSVersionld implements org.omg.CORBA.portable.IDLEntity I

public short major • (short)0; publlc short minor • (short)O;

public CTSVersionld <)

I

| // ctor

public CTSVersionld (short _major, short _minor)

I

major - _major; minor • _minor;

I // ctor I

I // class CTSVersionld

58

ГОСТ Р HCO/HL7 27951—2016

3 Объявление исключения на языке IDL.

* Использован код свойства, не действительный для систеыы кодирования */

exception UnknownPropertyCode (

PropertyCode    propercy_eode;

4 Объявление исключения на языке Java package о г g. h 17.CTSVAPI;

/**

*    org/hl7/CTSVAPI/UnknownPropertyCode.Java .

*    Generated by the IDL-co-Java compiler {portable), version "3.1"

*    from idl/CTSVAPI.ldl

*    Monday, March 8, 2004 11:17:26 PM CST */

public itnal class UnknownPropertyCode extends Java.lang.Exception l

public String property_code - null;

public UnknownPropertyCode 0 I

// super{UnknownPropertyCodeHelper.Id 0);

{ // ctor

public UnknownPropertyCode (String _property code) t

// super{UnknownPropertyCodeHelper.id{)); property_code - _property_code;

{ U ctor

public UnknownPropertyCode (String Sreason, String jproperty_code)

(

// super {UnknownPropertyCodeHelper. id <) f "    ”4- treason);

property_code - _property_code;

) // ctor

l // class UnknownPropertyCode

5 Объявление интерфейса на языке IDL

*    Интерфейс отображения кодов    *

» «

*    Интерфейс отображения кодов предоставляет одно*

*    или несколько отображений систем кодирования *

♦*♦♦♦**♦***«♦**у

interface CodeMapping : Identification (

/* Список отображений, поддерживаемых службой */

CodeMapList getSupportedMaps() raises (UnexpectedError);

/* Отображает код понятия, включенный в систему кодирования-источник, на его

*    ближайший эквивалент из целевой систеыы кодирования, если таковой имеется

*    CromConcept_id    - Система кодирования / код отображаемого понятия

*    toCodeSystem_id    — Целевая система кодирования

59

ГОСТ Р HCO/HL7 27951—2016

/

map_name    - Имя используемого отображение. Может быть

опущено, если отображение из системы кодирования, являющейся компонентом fromConcept_id, в систему кодирования toCodeSystem_id является единственным

Возвращаемое значение — Соответствующее понятие в целевой системе кодирования

Исключения:

UnknownCodeSystem — Система кодирования-источник или целевая

система кодирования не поддерживается данной службой отображения

UnknownConceptCode - Код отображаемого понятия не является частью

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

MappingNotAvailable — Переданный код понятия не отображается на

целевую систему кодирования

СпаЫеТоМар

UnknownMapName

MapSoutceMisnatcit

МарТагдеtHismatch

AmbiguousMapRequest

UnexpectedEttor

—    Переданный код понятия не может быть отображен

—    Служба не распознала имя отображения

-    Идентификатор системы кодирования-источника

fromConcept_id не совладает с тем, что указан в отображении

—    Идентификатор целевой системы кодирования targetCodeSystem_ld не совпадает с тем, что указан в отображении

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

-    Не специфичная ошибка, препятствующая успешному завершению вызова

MappedConceptCode mapConceptCode(

in Conceptld    fromConcept_id,

in CodeSystemld    toCodeSystem_id,

in string    oap_name

)

raises { UnknownCodeSystem,

UnknownConceptCode,

Mapp i ngttotAvaliable,

Un know nMapName,

AmbiguousMapRequest,

MapNameSourceMisoatch,

MapHameTargetMismatch,

UnableToKap,

UnexpectedError);

6 Объявление интерфейса на языке Java.

package org .Ы7 .CTSVAPI ; *

*    oxg/hl7/CTSVAPI/CodeMappingOperations.java .

*    Generated by the IDL-to-Java compiler (portable), version 'З.Г

*    from idl/CTSVAPI.idl

*    Monday, March 8, 2004 11:17:27 PM CST •/

60

ГОСТ Р HCO/HL7 27951—2016

*    Интерфейс отображение кодов    *

•    •

*    Интерфейс отображения кодов предоставляет одно*

*    или несколько отображений систем кодирования *

«••••••••••••••••••••••••••••••••••••••••••••с»*»/

public interface CodeMappingOperations extends org.hl7.CTSVAPI.Identilicat lonOperations

l

/•*

*<PRE> Список отображений, поддерживаемых службой </PRE>

*/

org. h!7.CTSVAPI. CodeMapd getSuppoztedKaps О throws org.h!7.CTSVAPI.UnexpectedError;

/**

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

CromConcept_id — Система кодирования / код отображаемого понятия toCodeSystem_ld — Целевая система кодирования тар_пате    — Имя используемого отображения. Может быть

опушено, если отображение из системы кодирования, являвшейся компонентом fromConcept_id, в систему кодирования toCodeSystem_id является единственным

Возвращаемое значение — Соответствующее понятие в целевой системе кодирования

Исключения:

UnknownCodeSystem — Система кодирования-источник или целевая

система кодирования не поддерживается данной службой отображения

UnknownConceptCode— Коп отображаемого понятия не является частью

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

MappingNotAvailable — Переданный код понятия не отображается на

целевую систему кодирования

ипаЫеТоМар

UnknownMapKame

MapSourceMismatch

MapTargetMismatch

AmbiguousMapRequest UnexpectedError </PRE>

—    Переданный код понятия не может быть отображен

—    Служба не распознала имя отображения

—    Идентификатор системы кодирования-источника

fromConcept_ld не совладает с тем, что указан в отображении

—    Идентификатор целевой системы кодирования targetCodeSystem_id не совпадает с тем, что указан в отображении

—    Существует несколько отображений понятия системы кодирования-источника в целевую систему кодирования

—    Не специфичная ошибка, препятствующая успешному завершению вызова

*/

org.Ы7.CTSVAPI.KappedConceptCode mapConceptCode (org.h17.CTSVAPI.Conceptld fronConcept_id, String toCodeSystem_id, String map_name)

throws org.hl7.CTSVAPI.UnknownCodeSystem, org.hl7.CTSVAPI.UnknownConceptCode, org. Ы7 .CTSVAPI.MappingNotAvailable,

org.hi7.CTSVAPI.UnknownMapName, org.hl7.CTSVAPI.AmbiguousMapRequest, org.hl7. CTSVAPI.MapNameSourceMismatch,

org.h!7.CTSVAPI.MapNameTargetMismatch, org.hl7.CTSVAPI.UnableToMap, ocg.hl7. CTSVAPI.UnexpectedError;

( // Interface CodeMapplngOperations

ГОСТ Р HCO/HL7 27951—2016

13.2 Преобразование спецификации на языке IDL в описание на языке WSDL

Для преобразования объявлений на языке Java в описание на языке WSDL используется комли* лятор Apache Axis 1.1 java2wsdl. Ниже приведен пример его вызова для преобразования CTSVAPI:

java org.apache.axis.wsdl.Java2KSDL -n urn://HL7.org/CTSVAPI -i

org.hlT.refImpl.CTSVAPI -l

org.hl7.CTSVAPI

Пример — Объявления интерфейса на языке WSDL:

«?xml version-"! .О" encodlng-H,JTF-8"?>

«wsdl:definitions targetttamespace-"urn://hl7.org/CTSVAPI"

xmlns«"" xmlns:apachesoap~""

xmlns:lmpl-"urn://hl7.org/CTSVAPI" xmlns:lntt-"urn://hl7.org/CTSVAPI"

xmlns:soapeno-"

xmlns:wsdl-"" xmlns:wadlsoap-""

xmlns:xsd-"">

<wsdl:types>

<schema targetNamespace-"urn://hl7.org/CTSVAPI" xmlns-"">

<import namespace-">

<complexType name-"SupportedMap">

«sequence?

«element name-"map_name" nillable-"true" type-"xsd:strlng"/>

«element name-"mapCescrlptlon" nlllable-"true" type-"xsd:strlng"/> «element narae-"fromCodeSystem_id" nlllable-"true" type-"xsd:strlng"/> «element name-"fromCodeSystem_name" nlllable-"true" type-”xsd:strlng"/> «element name-"rromCod*Systera_verslon" nlliable-"true" type-"xsd:strlng"/>

«element name-"toCodeSystem_ld" nlllable-"true" type-"xsd:strlng"/> «element name-"toCodeSystem_name" nlllable-"true" type-"xsd:strlng"/> «element name-"toCodeSystem_verslon" nlllable-"true" type-"xsd:strlng"/> «/aeguence>

</eomplexType>

«complexType name-"ArrayOfSupportedMap">

<complexContent>

«restriction base-"soapenc:Array">

«attribute ref-"soapenc:arrayType" wsdl:arrayType-"impl:SupportedKap(|"/>

«/restriction?

</complexContent>

«/complexType?

«complexType name-"UnexpectedError">

«sequence?

«element name-"possible_cause" nlllable-"true" type-"xad:strlng"/> «/sequence?

«/complexType?

«complexType name-"Conceptld">

«sequence?

«element name-"codeSystera_ld" nlllable-"true" type-"xsd:strlng"/> «element name-"concept_code" nlllable-"true" type-"xsd:strlng"/> «/sequence?

«/complexType?

«complexType name-"MappedConceptCode">

«sequence?

«element name-"mappedConeept_ld" nlllable-"true" type-"lmpl:ConceptId"/> «element name-"mapQuallty_code" nlllable-"true" type«"xsd:strlng"/> «/sequence?

«/complexType?

62

ГОСТ Р HCO/HL7 27951—2016

«complexType name-"MappingNotAvailable"?

«sequence?

«element name-"!romCodeSystem_id" niliable»"true" type-"xsd:string"/? «element name»"toCodeSystem_ld" nlllable~"true" type-"xsd:string"/? «/sequence?

«/complexType?

«complexType name-"UnableToMap"?

«sequence/?

«/complexType?

«complexType name-"UnknownConceptCode">

«sequence?

«element name-"concept_code" nlllable»"true" type-"xsd:string"/? «/sequence?

«/complexType?

«complexType name»”OnknownCodeSystem"?

«sequence?

«element name-"codeSystem_id" nillable-"true" type-"xsd:string"/? «/sequence?

«/complexType?

«complexType name-"UnknownMapName"?

«sequence?

«element name»"map_name" nlllable»"true" type»"xsd:string"/? «/sequence?

</complexType?

«complexType name»"AmbiguousMapRequest"?

«sequence?

«element maxOccurs»"unbounded" name-"posslble_maps" nillable»"true" type-"xsd:string"/?

«/sequence?

«/complexType?

«complexType name»"CTSVerslonid">

«sequence?

«element name»"major" type-"xsd:short"/?

«element name-"minor" type-"xsd:short"/?

«/sequence?

«/complexType?

«/schema?

«/wsdl:types?

«wsdl:message name»"UnknownMapWarae"?

<wsdl:part name-"Cault" type-"impl:UnknownMapName"/?

«/wsdl:message?

«wsdl:message name-"AmbiguousMapRequest"?

«wsdl:part name»"Cault" type»"impl:AmbiguousMapRequest"/?

«/wadi:message?

«wsdl:message name»"getServiceDescriptionResponse"?

«wsdl:part name-"getServiceDescriptionReturn" type»"xsd:string"/?

«/wsdl:message?

«wsdl:message name~"MappingMotAvaliable"?

«wsdl:part name»"fault" type»"impliMappingKotAvailable"/?

«/wsdl:message?

«wsdl:message name»"getServiceVersionRequest"?

«/wsdl:message?

«wsdl:message name~"getSupportedMapsResponse"?

«wsdl:part name-"getSupportedMapsReturn" type-"impl:AcrayOCSupportedMap"/? «/wsdl:message?

«wsdl:message name»"OnknownConceptCode"?

«wsdl:part name-"Cault" type»"implrUnknownConceptCode"/?

«/wsdl:message?

<wsdl:message name»"UnexpectedError"?

«wsdl:pact name»"fault" type-"impl:UnexpectedError’V?

«/wsdl :message?

63

ГОСТ Р HCO/HL7 27951—2016

<wsdl:message name-"UnknownCodeSysteo">

<*sdl:part name-"faultH type-" impl:UnknownCodeSystem" />

</wsdl:message>

<wsdi:reessage name-"UnableToMap">

<wsdl:part name-"fault" type-"impl:UnableToMap"/>

</wsdi:message>

<wadl:message name-"getCTSVersionRequest">

</wsdl:message>

<wsdl:message name-"getServiceNameResponse">

<wsdl:part name-"getServiceNameReturn" type-"xsd:atring"/>

</wsdl:message>

<wadl:message name-"getServiceNameRequest">

</wsdl:message>

<wsdl:message name-"getServiceDesdrlptlonRequest">

</wsdl:message>

<wsdl:message name-"mapCdneeptCodeRequest">

<wsdl:part name-"fromConcept_id" type-"impl:ConceptId"/>

<wsdl:part name-"toCodeSystem_id" type-"xsd:stcing"/>

<*sdl:part name-"map_name" type-"xsd:string"/>

</wsdl:message>

<wsdl:message name-"raapConceptCodeResponse">

<wsdl:part name-"mapConceptCodeReturn" type-"impl:MappedConceptCode"!>

</wsdl:message>

<wadl:message name-”getSupportedMapsRequest">

</wsdl:message>

<wsdl: message name*-"getCTSVersionResponse">

<wsdl:part name-"getCTSVersionReturn" type-"impl:CTSVersionId"/>

</wsdl:message>

<wadl:message name-”get£exvloeVessionResponse">

<*sdl:part name-"getServiceVersionR*turn" type-"xsd:string"/>

</wsdl:message>

<wsdl:portType name-"CodeMapplngOperations">

<wsdl:operation name-"getSuppor tedMaps">

<wsdl:input message-"impl:getSupportedMapsRequest" name-"getSupportedMapsRequest"/>

<wsdl:output message-"impl:getSupportedMapsResponse" name-"getSupportedMapsResponse"/>

<wsdl:fault message-"impl:UnexpectedBrror" name-"UnexpectedError"/>

</k'sdl: operation>

<*sdl:operation name-,,mapConceptCode” parameterOrder-"fromConcept_id toCodeSystem_id map_name">

<*sdl:input message-"impl:mapConceptCodeRequest" name-"mapConceptCodeRequest"/>

<*sdl:output message-"impl:mapConceptCodeResponse" name-"mapConceptCodeResponse”/>

<*sdl:fault message-"impl:AmbiguousMapRequest" name-"AmbiguousMapRequest"/> <wsdl:fault message-"impl:Unexpeeted£rror" name-"UnexpectedBrror"/>

<wsdl:fault message-"impl:UnableToMap" name-"UnableToMap"/>

<wsdl:fault message-"impl:MappingNotAvailable" name-"MapplngNotAvallable"/> <wsdl:fault message-"impl:UnknownMapName" name-"UnknownMapName"/>

<wsdl:fault теззаде-"impl:UnknownConceptCode" name-"UnknownConceptCode"/> <*sdl:fault message-"impl:UnknownCodeSystern" name-"UnknownCodeSystem"/>

</k'sdl: operatlon>

<*sdl:operation name-"getCTSVersion">

<«sdl:input message-"impl:getCTSVeisionRequest" name-"getCTSVersionRequest"/> <wsdl:output message-"impl:getCTSVersionResponse" name-"getCTSVersionResponse”/>

<wsdl:fault message-"impl:UnexpectedBrror" name-"UnexpectedError"/>

64

ГОСТ Р HCO/HL7 27951—2016

</b-sdl: operation?

<*sdl:operation naffle-"getServiceDeseription"?

<wsdl:input message-"impl:getServiceDescriptlonRequest" name-"getServlceDescriptionRequest"/?

<wsdl:output message-"impl:getServiceDescriptlonResponse" name-"getServlceDescriptionResponse"/?

<wsdl:Cault message-"imp1:UnexpectedError" name-"UnexpectedError"/?

•c/wsdl:operation?

<wsdl:operation name-"getSecviceName"?

<*sdl:input message-"impl:getServiceNameRequest" name-"getServlceNameRequest"/?

<*sdl:output message-"impl:getServiceNameResponse" name-"getServlceNameResponse"/?

<*sdl:Cault message-"impl:UnexpectedErrot" name-"UnexpectedError"/?

</k'sdl: operation?

<wsdl:operation name-"getServiceVersion"?

<«sdl:input me8Sage-"impl:getServiceVei3ionRequest" name-"getServiceVersionRequeat"/?

<wsdl:output message-"impl:getServiceVecsionResponse" name-"getServlceVersionResponse"/?

<wsdl:fault message-"impl:UnexpectedError" name-"UnexpectedError"/?

</wsdl:operation?

</wsdl:portType?

<wsdl:binding name-"CodeMappingServlceSoapBlnding" type-"impl:CodeKapplngOperatlons"?

<*sdlsoap:binding style»"rpe" transport-"? <wsdl:operation name-"getSupportedMaps"?

<*sdlsoap:operation soapAction-""/?

<wsdl:input name-"getSupportedMapsRequest"?

<wsdlsoap:body encodingStyle-"" namespace-"urn://hl7.org/CTSVAPI" use-"eneoded”/?

</wsdl:input?

<wsdl:output name-"getSupportedMapsResponse"?

<wsdlsoap:body encodingStyle-"" namespace-"urn://hl7.org/CTSVAPI" use-"encoded"/?

</wsdl:output?

<wsdl:fault name»"UnexpectedError"?

<wsdlsoap:fault encodingStyle-"" namespace-"urn://hl7.org/CTSVAPI" use-"encoded"/?

</wsdl:fault?

</k'sdl: operation?

<wsdl:operation name-”mapConceptCode"?

<wsdlsoap:operation soapAction-""/?

<wsdl:input name-"mapConceptCodeRequest"?

<wsdlsoap:body encodingStyle-"" namespace-”urn://hl7.org/CTSVAPI" use-”encoded"/?

</k'Sdl: input?

<*sdl:output name-"mapConceptCodeResponse"?

<wsdlsoap:body encodingStyle-"" namespace-”urn://hl7.org/CTSVAPI" use-”encoded"/?

</k'Sdl : output?

<*sdl:Cault name«"AmbiguousMapRequest"?

<wsdlsoap:fault encodlngStyle«"" namespace-”urn://hl7.org/CTSVAPI" use-”encoded"/?

</k'Sdl: fault?

<*sdl:Cault name-"UnexpectedError"?

<wsdleoap:fault encodlngStyle-"" namespace-”urn://hl7.org/CTSVAPr" use-"encoded"/?

</wsdl:fault?

<wsdl:fault name-"MapNameSourceMismatch"?

<wsdlsoap:fault encodlngStyle-"" namespace-”urn://hl7.org/CTSVAPI" use-”encoded"/?

65

ГОСТ Р HCO/HL7 27951—2016

•C/k'Sdl: fault»

<wsdl: fault name-"MapNameTargetMismatch"»

<wsdlsoap:fault encodlngStyle-" namespace-”urn://hl7.org/CTSVAPI" use-”encoded"/>

</k-adl: fault>

<wsdl:fault name-"UnableToMap"»

<wsdlsoap:fault encodlngStyle-" namespace»"urn://hl7.org/CTSVAPI" use-”eneoded"/»

</k*sdl: fault>

<wsdl:fault name-"MappingNotAvailable">

<wsdlsoap:fault enoodlngStyle-" namespace»”urn://hl7.org/CTSVAPI" use-"encoded"/»

</k*sdl: fault>

<wsdl:fault name*"UnknownMapName">

<wsdlsoap:fault encodlngStyle-" namespace-"urn://hl7.org/CTSVAPI" use-"encoded"/>

</wsdl:fault>

<wsdl:fault name-"UnknownConceptCode">

<wsdlsoap:fault encodingStyle-" namespace-”urn://hl7.org/CTSVAPI" use-”encoded"/>

</k'Sdl:fault>

<wsdl:fault name-"UnknownCodeSysteffl"»

«wsdlsoap:fault encodlngStyle-" namespace«”urn://hl7.org/CTSVAPI" use-”encoded"/>

</k'Sdl: fault>

•c/wsdl:operation»

<wsdl:operation name-"getCTSVersion">

-cwsdlsoap: operation soapAction»""/»

<wsdl:input name-"getCTSVer3ionRequest”>

<wsdlsoap:body encodingStyle-”" namespace-"urn://hl7.org/CTSVAPI" use-"eneoded"/>

</wsdl:input»

<wsdl:output name-"getCTSVersionRe3ponse"»

<wsdlsoap:body encodingStyle-"" namespace-"urn://hl7.org/CTSVAPI" use-"encoded"/>

</wsdl:output>

<wsdl:fault name-"UnexpectedError"»

<wadlsoap:fault encodingStyle-" namespace-"urn://hl7.org/CTSVAPI" use«"encoded"/>

</k'sdl: fault»

</krsdl: operation»

<wsdl:operation naxne-"getServiceDescription"»

<wsdlsoap:operation soapAction-""/»

<wsdl:input name«"getServlceDescriptionRequest"»

<wsdlsoap:body encodlngStyie-"" namespace-”urn://hl7.org/CTSVAPI" use-”encoded"/>

</k'Sdl: input»

<wsdl: output name^getServiceDescriptionResponse'1»

<wsdlsoap:body encodlngStyle-”" namespace-”urn://hl7.org/CTSVAPI" use-”encoded"/>

</k'3dl: output»

<wsdl:fault name-"UnexpectedError"»

<wsdlsoap:fault encodlngStyle-" namespace-”urn://hl7.org/CTSVAPI" use-”encoded"/»

</k'Sdl: fault»

</wsdl:operation»

<wsdl: operation пате-''getServiceName"»

<wsdlsoap:operation soapAction-""/»

<wsdl:input name-"getServiceNameRequest"»

<wsdlsoap:body encodlngStyle-"" namespace-"urn://hl7.org/CTSVAPI" use-"encoded"/>

</wsdl:input»

66

ГОСТ Р HCO/HL7 27951—2016

<wsdl : output ndme-"getSexviceNdmeResponse"»

<wsdlsoap:body encodlngStyle-"" namespace-"игл://hl7.org/CTSVAPI” use-"encoded"/»

</wsdl:output»

<wsdl:fault name-"UnexpectedErrot">

<wsdlsoap:fault encodingStyl«-” namespace-"urn://hl7.org/CTSVAPl" use-"encoded"/>

</wadl:fault>

</k'adl: operation»

<*sdl:operation name-"getServiceVersion"»

<wsdlsoap:operation soapAction-""/»

<*sdl:input name-"getServiceVersionRequest"»

<wsdlsoap:body encodlng5tyle-” namespace-”urn://hl7.org/CTSVAPI" use-”encoded"/»

</wsdl:input»

-cwsdl:output »ame-"getServiceVersionResponse">

<wsdlsoap:body encodingStyle-” namespace-"urn://hl7.org/CTSVAPI" use-”encoded"/»

</h'3dl: output»

<wsdl:fault name-"UnexpectedErtor"»

<wsdlsoap:fault encodlngStyle-" namespace-"urn://hl7.org/CTSVAPI" use-”encoded"/»

</wsdl:fault»

</b'3dl: operation»

</wsdl:bindlng»

<wsdi:service name-"CodeMappingOperatlonsServlce"»

<wsdl:port binding-"impl:CodeMappingSecviceSoapBindlng" name-"CodeKappingServlce"»

<wsdlsoap:address

locatlon-”http://localhost:B0B0/axis/servlces/CodeMapping5ervlce”/»

</k'sdl: pox t>

</wsdi:service»

</wsdl :deJinltlons»

14 Сводные требования к службам

14.1    Введение

В настоящем разделе приведены сводные требования к широкому спектру терминологических служб, взятых из материалов и опыта применения других релевантных работ, указанных е разделе 2.

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

14.2    Информационные службы сервера

14.2.1    Введение

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

14.2.2    Предоставление информации о версии сервера и его возможностях

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

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

14.2.3    Предоставление информации о терминологиях, доступных с помощью сервера

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

серверам для доступа к определенной терминологии.

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

67

ГОСТ Р HCO/HL7 27951—2016

Эта услуга может предоставляться в форме проверки доступа к конкретной терминологии (например, поддерживает ли сервер терминологию X) или в форме запроса списка поддерживаемых терминологий.

14.3 Службы, предоставляющие метаданные терминологий

14.3.1    Введение

Данный подраздел посвящен службам, предоставляющим информацию о терминологии, поддерживаемой сервером.

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

14.3.2    Получение информации о терминологии, доступной с помощью сервера

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

Клиентское приложение должно быть способно иметь доступ к различным свойствам терминологий. поддерживаемых серверов (например, номера версий, даты выпусков, авторизованный источник, доступность в полном или ограниченном объеме).

14.3.3    Получение детальных сведений о свойствах понятий или терминов, содержащихся в данной терминологии

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

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

14.3.4    Получение сведений о типах отношений, используемых в данной терминологии

Вариант использования: служба позволяет клиентскому приложению получить сведения о типах

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

Некоторые терминологии поддерживают разнообразные типы отношений между терминами и/или понятиями. Например:

-    некоторые термины могут быть синонимами, представляющими одно и то же понятие:

-    понятие может быть связано с другим, более общим понятием (например, «пневмония» является подтипом «заболевания легких» и подтипом «инфекционного заболевания»};

•    понятие может быть определено в терминах нескольких других понятий:

•    понятие может быт ассоциировано с другими понятиями, квалифицирующими его.

14.3.5    Получение сведений о критериях поиска, поддерживаемых данной терминологией

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

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

14.4 Службы, предоставляющие доступ к содержанию терминологии

14.4.1 Введение

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

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

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

68

ГОСТ Р HCO/HL7 27951—2016

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

•    терминологии могут не обладать общей структурой, и поиск в них может быть не однотипным;

•    для каждого извлеченного термина необходимо идентифицировать терминологии, в которых он найден.

14.4.2    Получение свойств понятия или термина

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

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

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

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

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

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

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

14.4.3    Получение совокупности понятий или терминов, совпадающих с заданными текстовыми критериями

14.4.3.1    Общий вариант использования

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

Спектр полезных критериев поиска может варьироваться в зависимости от размера, структуры и богатства терминологии. Ниже приведены некоторые критерии для разных вариантов использования.

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

14.4.3.2    Критерии текстового поиска

В зависимости от размера терминологии и режима ввода данных могут оказаться полезными различные критерии текстового поиска (чем объемнее терминология, тем более вариабельными и избирательными должны быть критерии). Ниже перечислены основные типы критериев текстового поиска, которые могут оказаться востребованными.

Совпадение с фразой:

•    полное совпадение с фразой — полное словесное совпадение фразы и термина;

-    совпадение фразы с началом термина — совпадение фразы с началом термина;

-    совпадение фразы с термином — совладение фразы с какой-либо частью термина.

Совпадение со словом:

-    полное совпадение со словом — сравниваемое слово является частью термина:

•    совпадение слова с началом слова в термине — слово (или его часть) совпадает с началом слова в термине:

69

ГОСТ Р HCO/HL7 27951—2016

•    совпадение слова, дополненное шаблоном — совладение с шаблоном проверяется только в контексте слова;

•    совпадение словоформ (например, «туберкулезе и «туберкулезный»).

Совпадение с несколькими словами;

-    применение одного из критерия совпадения со словом к каждому слову.

Вариации совладения с несколькими словами:

•    совпадение с несколькими словами без учета порядка — все набранные слова встречаются где* либо в термине;

•    совпадение с несколькими словами с учетом порядка — все набранные слова встречаются где* либо в термине в том же порядке.

Совпадение с шаблоном:

•    совпадение с шаблоном фразы — термин совпадает с регулярным выражением;

•    совпадение с шаблоном слов — то же. что и совпадение слов, только искомое слово представ* лено регулярным выражением.

Модификации, применимые к большинству типов текстового поиска:

•    поиск, зависящий/не зависящий от регистра;

. обработка диакритических и специальных знаков;

•    определение разрывов слова при поиске ло словам;

•    фонетический поиск;

-    совпадение слов/фраэУсокращений с аналогичным значением (например, «ренальный» и «по* чечный», «ИМ» и «инфаркт миокарда»).

Текстовый поиск может дополнительно модифицироваться критериями, приведенными в следую* щем пункте.

14.4.3.3 Дополнительные критерии, модифицирующие текстовый поиск

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

Критерии статуса

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

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

Критерии словарного домена

Вариант использования: служба позволяет клиентскому приложению ограничить запрашиваемые термины или понятия конкретным словарным доменом. Например, ограничить поиск теми значениями, которые допустимы для конкретного атрибута сообщения, соответствующего стандарту HL7.

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

Для реализации таких критериев сервер должен иметь доступ к соответствующим таблицам ело* верных доменов HL7.

Критерии отношений

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

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

14.4.4 Получение совокупности понятий или терминов, заданной отношениями

14.4.4.1 Получение всех отношений заданного понятия или термина

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

Функция выборки полной совокупности отношений может быть эффективной, если клиентское приложение должно просматривать много отношений. Однако следующая пара служб, которые ищут

70

ГОСТ Р HCO/HL7 27951—2016

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

14.4.4.2    Получение типов отношений, применяемых к идентифицированному понятию или термину

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

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

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

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

14.4.4.3    Получение лонягий/терминов. имеющих заданный тип отношения с понятием/термином

Вариант использования: служба позволяет клиентскому приложению предложить пользователю

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

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

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

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

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

14.4.5    Получение всех понятий или терминов, принадлежащих заданному словарному домену

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

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

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

14.4.6    Проверка уникального идентификатора

14.4.6.1    Проверка действительности уникального идентификатора в терминологии

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

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

14.4.6.2    Дополнительные критерии, применимые при проверке идентификаторов

Критерии статуса

Вариант использования: служба позволяет клиентскому приложению проверить, используется ли в настоящее время идентификатор, содержащийся в сообщении или записи.

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

Критерии словарного домена

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

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

71

ГОСТ Р HCO/HL7 27951—2016

Для реализации таких критериев сервер должен иметь доступ к соответствующим таблицам словарных доменов HL7.

Критерии отношений

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

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

14.4.7 Отображение и преобразование кодов и кодовых фраз

14.4.7.1    Получение идентификатора с тем самым значением в другой терминологии

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

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

14.4.7.2    Декомпозиция понятия в посткоординируемое выражение

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

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

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

14.4.7.3    Преобразование посткоординироеанного выражения в прекоординированное понятие

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

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

15 Системы кодирования, используемые в API ОТС

В таблицах 33 и 34 приведены системы кодирования, используемые в API ОТС.

Таблица 33 — Перечень систем кодирования

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

ОИД

Описание

Примеры значений

CodeSystem

2.16.840.1.113883.5.22

Совокупность систем кодирования. известных HL7

CAS (химические абстрактные коды)

IETF1766 (идентификаторы языков)

CodeSystem (система кодирования)

72

ГОСТ Р HCO/HL7 27951—2016

Окончание таблицы 33

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

ОИД

Описание

Примеры значений

ConceptStatus

2.16.840.1.113883.5.1066

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

A (Active — активная)

D (Deleted — удаленная)

Р (Proposed — предложенная) R (Retired — отмененная)

Vocabulary-Domain

Qualifier

2.16.840.1.113883.5.147

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

CWE (coded with exceptions — кодированный с исключениями)

CNE (coded no exceptions — кодированный без исключений)

Language

2.16.840.1.113883.6.99

Человеческий язык, используемый в текстовых огмсаниях или при коммуникации. Коды берутся из ИСО 639

EN (English — английский)

DE (German — немецкий) EN-US (Ertglish-US dialect — американский диалект английского)

EN-GB (Englssh-GB dialect — британский диалект английского)

TranslationOuahty

2.16.840.1.113883.5.1093

Отношения между понятиями между Двумя системами хода

Exact (точное совпадение) Broader Than (шире) Narrower Than (уже) Different (различны)

ConceptProperty

2.16.840.1.113883.5.1087

Идентификаторы свойств понятий

openlssue (открытый вопрос) appliesTo (применяется к) howApplies (как применяется) OID (ОИД)

ConceptCode

Relationship

2.16.840.1.113883.5.1088

Отношения между двумя понятиями одной и той же системы кодирования

hasSubtype

hasPart

smailerThan

MatchAlgorithm

2.16.840.1.113883.5.1094

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

Identical

IdenticaUgnoreCase

StartsWHh

StartsWithtgnoreCase

EndsWith

EndsWithlgnoreCase

ContainsPhrase

ContainsPhraselgnoreCase

WordsAnyOrder

WordsAnyOrderlgnoreCase

Wildcards

WldCardsIgnoreCase

RegularExpression

Таблица 34 — Основные коды отношений

Кол

Обозначение

Описание

Транзитивность

Инверсна

hasSubtype

Имеет подтип

Отношение подтипа, не специфицированное иным образом

Да

isSubtypeOf

hasPart

Является частью

Отношение части к целому, не специфицированное иным образом

Да

isPartOf

smailerThan

Меньше

Общее отношение упорядочения (меньше)

Да

greaterThan

73

ГОСТ Р HCO/HL7 27951—2016

16 Спецификация API ОТО на языке IDL

16.1 Базовые типы данных HL7

Ниже приведено определение на языке IDL базовых типов данных HL7, используемых в ОТС.

/* Исходный файл: types.idl */

fifndef _types_IDL

♦define _types_IDL_

Определение на языке IDL подмножества типов данных HL7 Версии 3. Версия: V3 Ballot Cycle 5

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

*    Примечание - Некоторые целевые языки не чувстительны к регистру.

*    Как следствие, язык 1DL не позволяет записывать несколько представлений

*    одного и того же имени в разных регистрах. Чтобы максимально следовать

*    этому правилу, к именам в нижнем регистре, конфликтующим с именами в ‘ верхнем регистре, добавляется суффикс "_value".

»

*    Примечание - Из базовых типов данных удалены аспекты причины пустоты

*    nullFlavor.

»/

module types (

typedef boolean bl_value; struct BL {

Ы value v;

typedef long int_value; struct 1NT ( int_value v;

\t

typedef string uid_value; struct UID ( uid_value v;

I;

typedef sequence <UID> LIST_UID;

typedef string st_value; struct ST { st_value v;

I;

typedef string ts_value; struct TS {

74

ГОСТ Р HCO/HL7 27951—2016

ts value ТЕ;

typedef sequence<octet> bin_value;

enum cs_BinaryDataEncoding {

B64,

TXT

b*

typedef string cs_value;

/* Следующий фрагмент а действительности является объединением, ко для простоты вместо него дано явное представление

union binary_or_text switch<cs_BinaryDataEncoding) { case B64: bin_value binaryValue; case TXT: st_value textualValue;

it */

struct binary_or_text {

cs_8inaryDataEncoding itemType; bin_value binaryValue; st_value textualValue;

);

/* Примечание — Неуклюжее объявление sequence<ED> позволяет компилятору выполнить рекурсию. Кратность 0..1 */

struct ED {

binary_or_text this;

cs_value encoding;

cs_value mediaType;

cs_value compression;

bin_value integrityCheck;

cs_value reference;

cs_value ingegrityCheckAlgorithm;

cs_value charset;

cs_value language;

sequence<ED> thumbnail;

};

struct CS { cs_value code;

ED originalText; cs_value codingRationale;

it

struct CV <

cs_value code; uid_value codeSystem; st_value codeSystemName; st_value codeSystemVersion; st_value displayName;

ED originalText;

CS codingRationale;

I;

75

ГОСТ Р HCO/HL7 27951—2016

typedef sequence <CV> SET_CV;

/* Примечание - Фактически значение имеет тип данных CD, но из-за рекурсии такое объявление здесь не используется •/ struct CR {

CV name;

CV value;

BL inverted;

\:

typedef sequence <CR> LIST_CR;

struct CD <

cs_value code; uid_value codeSystem; st_value codeSystemName; st_value codeSystemVersion; st_value displayName;

LIST_CR qualifiers;

ED originalText; sequence <CD> translation;

CS codingRationale;

);

typedef sequence <CD> SET_CD;

struct CE <

cs_value code; uid_value codeSystem; st_value codeSystemName; st_value codeSystemVersion; st_value displayName;

ED originalText;

SET_CD translation;

CS codingRationale;

);

(endif

16.2 Определение API сообщений ОТС на языке IDL

Ниже приведено определение API сообщений ОТС на языке IDL (файл CTSMAPl.idl).

/* Source file: CTSMAPl.idi */

(ifndef _CTSMAPI_DEFINED

(define CTSMAPI DEFINED

(include "types.idl"

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

76

ГОСТ Р HCO/HL7 27951—2016

‘ сообщения HL7, и терминологическими службами.

Ч

module CTSMAPI (

*    Соглашение о суффиксах:

*Ххх    —    суффикс типа

*    _ххх    —    суффикс атрибута

к

Суффиксы

*    Id — уникальный идентификатор сущности

*    Name    —    уникальное имя

*    Code    —    код понятия

Ч

* Вазовые идентификаторы сущностей

»*»»*»» Л»»*» »*¥»*»**»**» к*»*»»»*»»»»»*»»»»»*»»»

/* HL7SpecBlock:basicData */

/‘ Спецификация идентификатора версии ОТС */ struct CTSVersionld \ types::1NT major; types::1NT minor;

);

/* ИСО ОИД, уникально обозначающий систему кодирования */ typedef types::U1D CodeSystemld;

/* Уникальное имя системы кодирования */ typedef types::ST CodeSystemName;

/* Код понятия, уникальный в системе кодирования */ typedef types::ST ConceptCode;

/‘ Уникальное имя словарного домена */

typedef types::ST    VocabularyDomainName;

typedef sequence<VocabularyDomainName> VocabularyDomainNameList;

/* Идентификатор набора значений */

typedef types::UID    ValueSetld;

/* Имя набора значений */

typedef types::ST    ValueSetName;

/‘ Уникальный идентификатор понятия, состоящий из идентификатора системы кодирования и кода понятия */ struct Conceptld \

CodeSystemld codeSystem_id;

ConceptCode concept_code;

);

/‘ Конкретный выпуск системы кодирования */ typedef types::ST ReleaseVersionld;

typedef sequence<ReleaseVersionld> ReleaseVersionldList;

77

ГОСТ Р ИСО/Ж.7 27951—2016

/‘ Непрозрачный контекст для итерационного раскрытия кода */

typedef types::bin_value ExpansionContext;

/* HL7SpecBlockEnd */

^ t >■t >• t >>>>••>>>»••>>>11>>>>1•> tIH t1>•>>> tl■«> >

Кодированные элементы

*

/

/‘ Идентификатор языка

‘ Синтаксис основан на IETF RFC 3066 - теги для идентификации языков

*    Состоит из основного субтега <primary subtag>, за которым следуют ‘ нуль или более вторичных субтегов <secondary subtag>

*    <primary subtag> — no возможности берется из ИСО 639 часть 1

*    (2 символа), иначе берется трехсимвольный код

*    — в этой спецификации коды "i-” и "х-" не разрешены

*    <secondary subtag L> — 2-8 символов

*    — двухсиивольные коды берутся из ИСО 3166 alpha-2 коды стран

*    коды длиной 3-8 символов берутся из регистра IANA — см.

*    

‘ <secondary subtag 2-n> - общих правил нет, некоторые субтеги ‘    зарегистрированы в 1ANA

-/

/* HL7Spec81ock:conceptCodes •/ typedef ConceptCode LanguageCode;

/‘ Идентификатор отношения

*    Система кодирования: отношения, определенные в стандарте HL7,

‘ берутся из системы кодирования ConceptCodeRelationship

*    {2.16.840.1.113883.5.1088)

*    Если в ней нет нужного эквивалента, можно использовать внешнюю

*    систему.

*/

typedef ConceptCode RelationshipCode;

/‘ Область применения словарного домена (сфера, геополитическая единица,

*    специальность и т. д.

‘    Система кодирования : VocabularyDomainQualifier (2.16.840.1.113883.5.147)

‘    (подтипы словарного домена RealmOfUse)

*/

typedef ConceptCode ApplicationContextCode;

/‘ Data type code (CD, CE, CS, etc)

*    Code System: DataType (2.16.840.1.113883.5.1007)

*/

typedef ConceptCode DataTypeCode;

/‘ Сила кодирования (CNE, CWE)

‘ Система кодирования: VocabularyDomainOualilier (2.16.840.1.113883.5.147) */

typedef ConceptCode CodingStrengthCode;

78

ГОСТ Р HCO/HL7 27951—2016

/‘ Тип узла набора значений (A, L, S)

* Система кодирования: ConceptGenerality (2.16.640.1.113683.5.24)

-/

typedef ConceptCode ValueSetNodeTypeCode;

/*

*    Тип системы кодирования (Б, El, 1)

*    Система кодирования: CodeSystetnType (2.16.840.1.113883.5.1065) */

typedef ConceptCode CodeSystemTypeCode;

/*

*    Алгоритм совпадения

*    Система кодирования: MatchAlgorithm (2.16.840.1.113883.5.1094) */

typedef ConceptCode MatchAlgorithmCode;

typedef sequence<MatchAlgorithntCode> MatchAlgorithmCodeList;

/* HL7SpecBlockEnd */

*************«**«**«**«**«**«*

‘ Сущности, представленные в UML-модели*

..........Л............................/

/‘ HL7SpecBlock:codeSystemDescriptor */

/* CodeSystemDescriptor

*    codeSystem_id

*    codeSystem_name

*    copyright

*    availableReleases 4

описатель системы кодирования ОИД системы кодирования мнемоническое имя систеыы кодирования авторские права на систему кодирования выпуск представленной системы кодирования

3truct CodeSystemDescriptor {

CodeSystemld codeSystecn_id;

CodeSystemName codeSystem_name; types::ST copyright;

ReleaseVersionldList    availableReleases;

),•

typedef sequence<CodeSystemDescriptor> CodeSystemDescriptorList;

/• HL7SpecBlockEnd -t

/‘ HL7SpecBlock:RIMCodedAttribute */

/* RIMAttributeld — идентификатор кодированного атрибута модели RIM.

*    Для его уникальности необходимы все три элемента:

*    model_id    —    идентификатор модели RIM

*    class_name    —    имя класса

*    attribute_name    —    имя атрибута в модели

*/

struct RIMAttributeld {

types::ST model_id; types:: ST class_nante; types::ST attribute_name;

79

ГОСТ Р ИСО/Ж.7 27951—2016

/* RlMCodedAttribute

*    RlMAttribute_id

А

*    dataType_code

*    codingStrength_code

A

*    vocabularyDomainjname */

struct RlMCodedAttribute

RIMAttributeld    RIMAttribute_id;

DataTypeCode dataType_code;

CodingStrengthCode coding£trength_code;

VocabularyDomainName vocabularyDomain_name;

);

typedef sequence<RIMCodedAttribute> RIMCodedAttributeList;

/* HL7SpecBlockEnd *7 /* HL7SpecBlock:valueSetDescriptor */

/* ValueSetDescriptor — описатель набора значений. Набор значений может быть ‘    уникально идентифицирован своим идентификатором

*    или именем. Имена присвоены не всем наборам значений.

* valueSet_id    — уникальный идентификатор набора значений

*    valueSetjname    — уникальное имя набора значений (есть не у всех

‘    наборов значений)

*/

struct ValueSetDescriptor \

ValueSetXd valueSet_id;

ValueSetNazne valueSet_nane;

>;

typedef sequence<ValueSetDe3criptor> ValueSetDescriptorList;

—    кодированный атрибут модели RIM

—    уникальный идентификатор атрибута (модель, класс, атрибут)

—    специфичный тип данных атрибута (СО, СЕ, CS, ...)

—    кодированное значение, представляющее силу кодирования атрибута (CWE и т. д.)

—    словарный домен атрибута (если есть)

{

HL7SpecBlockEnd */

/‘ HL7SpecBlock:vocabularyDomainDescription */

/‘ VocabularyDomainValueSet — ассоциация словарного домена с набором

*    значений в необязательном контексте

*    definedByValueSet    — идентификатор набора значений и необязательно имя,

‘    идентифицирующие словарный домен

*    applieslncontext    — контекст, в котором применим набор значений

-/

struct VocabularyDomainValueSet (

ValueSetDescriptor    definedByValueSet;

ApplicationContextCode    applicationContext_code;

I;

typedef sequence<VocabularyDomainValueSet> VocabularyDomainValueSetList;

/‘ VocabularyDomainDescription ‘ для целей просмотра

*    vocabularyDomain_name ‘ description

*    re3trictsDomain_name

*

—    полное описание словарного домена

—    уникальное имя домена

—    описание цели и назначения домена

—    словарный домен, являющийся суперклассом данного домена (если имеется)

80

ГОСТ Р HCO/HL7 27951—2016

‘ basisOfDomains    — словарные домены, я&пяпииеся подклассами данного домена

‘ (если имеется)

*    constrainsAttributes — атрибуты, непосредственно ограничивающие данный ‘ домен

*    represented&yValueSets — список ссылок на наборы значений */

struct VocabularyDomainDescription (

VocabularyDomainName    vocabularyDomain_name;

types::ST    description;

VocabularyDomainName    restrictsDomain_name;

sequence<VocabularyDomainName>    basisOfDomains;

sequence<RIMCodedAttribute>    constrainsAttributes;

VocabularyDomainValueSetList    representedByValueSets;

/* HL7$pecBlock£nd V

/* HL7SpecBlock:valueSetDescription */

/‘ ValueSetConstructoc — набор значений, используемый как    часть другого

*    набора значений

*    includeHeadCode — TRUE указывает, что головной код head_code является

‘    часть» конструируемого набора значений

*    FALSE указывает, что не является

*    includedValueSet — набор значений, используемый для определения

*    конструируемого набора •/

struct ValueSetConstructor {

ValueSetDescriptor includedValueSet; types::BL includeHeadCode;

);

typedef sequence<ValueSetConstructor> ValueSetConstructorList;

/* ValueSetCodeReference — ссылка на    код    понятия,    включаемого    в    набор

*    значений

‘ referenced_code    — код из системы кодирования, содержащей включаемое

*    значение

*    includeReferencedCode — TRUE указывает, что ссылочный код является частью

*    набора значений. FALSE указывает, что не сам

*    является,    а    только    связанные    с    ним    понятия

*    leafOnly — TRUE указывает, что включаются только конечные узлы (листья).

‘    FALSE указывает, что промежуточные узлы тоже включаются

*    relationship — код, идентифицирующий используемое отношение. Если указан,

*    то все потомки ссылочного кода referencedCode включаются

‘    в набор (если не отфильтрованы ограничениями, задаваемыми

*    полями includeReferencedCode и leafOnly)

*/

struct ValueSetCodeReference J

ConceptCode    referenced_code;

RelationshipCode relationship_code; types::BL includeReferencedCode; types::BL leafOnly;

);

typedef sequence<ValueSetCodeReference> ValueSetCodeReferenceList;

/* ValueSetDescription — описание набора значений

81

ГОСТ Р ИСО/Ж.7 27951—2016

*idAndName — идентификатор и имя набора значений (если таковое имеется)

*    description    — описание набора значений и его применения

*    definingExpression    — полуфорыализованное выражение, определяющее

‘    содержание набора значений (если таковое

*    имеется)

*    basedOnCodeSystem — идентификатор, имя и версия базовой системы

‘    кодирования, используемой для конструирования

*    этого набора данных

‘    allCodes    — TRUE указывает, что набор включает в себя все

*    коды названной системы кодирования

‘    FALSE указывает, что берется избранное

‘    подмножество

ьhead_code — код понятия из системы кодирования, представляющий    весь

*    набор значений (если таковой код имеется)

*/

struct ValueSetDescription (

ValueSetDescriptor idAndName; types::ST description; types: :ST definingExpression;

CodeSystereDescriptor basedOnCodeSystem; types::BL allCodes;

ConceptCode    head_code;

);

/‘ FullValueSetDescription — полное описание набора значений, используемое ‘    для просмотра

*    description    — описание набора значений

*    constructedUsing — наборы значений, используемые для определения

‘    данного набора

*    usedToDefine    — наборы значений, в определении которых участвует

*    данный набор

*    referencesCodes — конкретные коды,    которые включаются в данный набор

*    или исключаются    из    него

*/

struct FullValueSetDescription |

ValueSetDescription    description;

ValueSetConstructorList constructedUsingValueSets;

ValueSetDescriptor Li st    usedToDefine;

ValueSetCodeReferenceList    referencesCodes;

);

/• HL7SpecBlockEnd */

/‘ HL7SpecBlock:codeSystemRegistration */

/*■

‘ CodeSystemRegistration - регистрационная запись системы кодирования

*    sponsor — член комитета HL7 или организация, выступающая спонсором

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

*    publisher — лицо или организация, публикующая систему кодирования ьversionReportingMethod — метод обновления системы кодирования

*licensinglnformation — описание требуемых лицензий и способа приобретения

*    inUMLS — TRUE указывает, что система кодирования включена в

*    Унифицированную систему медицинского языка UMLS

82

ГОСТ Р HCO/HL7 27951—2016

*    systemSpecificLocatorlnf о — сведения, используемые для дальнейшей

*    идентификации системы кодирования в контексте

*    издателя. Могут представлять собой номер

‘    таблицы, подраздела и т. д.

*codeSystemType_code — одно из значений Б (внешняя), I (внутренняя),

‘    EI (внешняя, но управляется комитетом HL7)

Ч

struct CodeSystemRegistration { types::ST sponsor; types::ST publisher; types::ST versionReportingMethod; types::ST licensinglnformation; types::BL inUMLS;

types: :ST systemSpecificLocatorlnfo; CodeSystemTypeCode codeSystemType_code;

);

/*■

*    CodeSystemlnfo

*    description

*registrationlnfo 4

—    полная информация о системе кодирования

—    имя, идентификатор и поддерживаемые версии системы кодирования

—    дополнительная информация о регистрации, предоставленная комитетом HL7

struct CodeSystemlnfo (

CodeSystereDescriptor description; CodeSystemRegistration registrationlnfo;

);

HL7SpecBlockEnd ‘/

/ * Л V fc A * HVUV    ******    ************

‘    Конструкции, специфичные для сообщений *

/‘ HL7SpecBlock:validateCodeBlock */

/‘ ValidationDetail — сведения oC ошибке проверки кода

*    codelnError    — часть кодированного атрибута, в которой обнаружена ошибка

*    (базовый код, трансляция, имя или значение квалификатора)

*    isSrror    —    TRUE указывает, что зта ошибка считается    достаточно

‘    существенной, чтобы признать сообщение,    содержащее

ч    этот атрибут, неправильным

‘    FALSE указывает, что ошибка не является    фатальной,

‘    но представляет потенциальную угрозу для построения

*    сообщения

‘    error_id    —    уникальный идентификатор ошибки

‘    errorText    —    текст, ассоциированный с идентификатором    ошибки

Ч

struct ValidationDetail ( types::CD codelnError;

types::BL isError; types::ST error_id; types::ST errorText;

B3

ГОСТ Р HCO/HL7 27951—2016

typedef sequence<ValidationDetail> ValidationDetailList;

/‘ ValidateCodeReturn — структура возвращаемого значения *nErrors    — число обнаруженных ошибок

‘ nWarnings    — число обнаруженных предупреждений

k detail    — список отдельных ошибок и/или предупреждений

•7

struct ValidateCodeReturn \ types::INT nErrors; types::INT nWarnings;

ValidationDetailList detail;

/* HL7SpecBlockEnd */

/* HL7$pecBlock:ValueSetExpansion *7

/* ValueSetExpansion — раскрытие набора значений в режиме реального времени ‘    pathLength    — целое значение, определявшее расстояние от

*    корневого набора значений

*    nodeType_code — тип узла набора значений (A, L или S)

‘    valueSet — идентификатор и имя (если оно имеется) набора значений,

‘    ассоциированного с данным узлом

concept_id

displayName isExpandable expansionContext

—    система кодирования и код понятия, используемые для этого узла (если имеются)

—    текст, ассоциированный с записью (если имеется)

—    TRUE, если этот узел можно раскрыть дальше

—    (непрозрачный) контекст, используемый для дальнейшего раскрытия, если параметр isExpandable имеет значение TRUE

struct ValueSetExpansion {

types::INT    pathLength;

ValueSetNodeTypeCode    nodeType_code;

ValueSetDescriptor valueSet;

Conceptld types::ST types::BL ExpansionContext

concept_id;

displayName;

isExpandable;

expansionContext;

b*

typedef sequence<ValueSetExpansion> ValueSetExpansionList;

/* HL7SpecBlockEnd */

Исключения

/* HL7£pecBlock:exceptions *7

‘ He специфичная ошибка, воспрепятствовавшая успешному завершению вызова */

exception UnexpectedError ( types::ST possible_cause;

);

/"

84

ГОСТ Р HCO/HL7 27951—2016

* Имя словарного домена не распознано службой

ьvocabularyDomain_name — переданное имя, которое не распознано */

exception UnknownVocabularyDomain I

VocabularyDomainName vocabu1a г уDoma i n_name;

\;

/"

* Код контекста не распознан службой *context_code — не распознанный код */

exception (JnknownApplicationContextCode {

ApplicationConcextCode applicationContext_code;

);

/-

‘ Переданная идентификация набора значений не распознана * valueSet — идентификатор и/или имя набора значений -/

exception UnknownValueSet (

ValueSetDescriptor valueSet;

/-

*    В запросе переданы и имя, и идентификатор набора значений, но имя

*    не соответствует идентификатору

*/

exception ValueSetNameldMismatch { ValueSetld valueSet_id; ValueSetName valueSet_nante;

\;

exception UnknownConceptCode \

Conceptld concept_id;

);

exception SubsumptionNotSupported { CodeSystemld code$yscem_id;

);

exception UnrecognizedQualifier | types: :CR qualifier;

);

exception UnableToTranslate {

);

exception UnknownCodeSystem | CodeSystemld codeSystem_id;

);

exception UnknownLanguage { LanguageCode language_code;

);

85

ГОСТ Р ИСО/Ж.7 27951—2016

exception InvalidExpansionContext |

exception QualifiersNotSupported \ )}

exception NoApplicableValueSet |

VocabularyDomainName vocabularyDomain_name; ApplicationContextCode applicationContext_code;

);

exception CodeSystemNameldMismatch \ CodeSystemld codeSystem_id; CodeSystemNaroe codeSystem_name;

);

/*

‘ Время выполнения операции превысило заданный лимит Ч

exception TimeoutError \

);

/*

4 Формат искомого образца не может быть разобран

Ч

exception BadlyFormedMatchText { types::ST matchText;

);

/*

* Код алгоритма совпадения не поддерживается службой

Ч

exception UnknownMatchAlgorithm \

MatchAlgorithmCode matchAlgorithm_code;

/4

4 Для заданного кода и критериев языка не может быть найдено * подходящее обозначение Ч

exception NoApplicableDesignationFound { types: :CD codeToFillln; types:: ST di splayLanguage_code;

);

/* HL7SpecBlockEnd 4

/ * A V* A * * A V* A V *AV*A«*A**A«*ArfrA**AV*

* Раздел модуля идентификации * •*****(«*«***»*«**•**>**<«***/

/‘ HL7$pecBlock: identification */ interface Identification {

86

ГОСТ Р HCO/HL7 27951—2016

с урез; :ST getServiceName() raises (UnexpectedError); types! :ST getServiceVersion <) raises (UnexpectedError); types: :ST getServiceDescription() raises (UnexpectedError); types: :ST getHL7ReleaseVersion () raises (UnexpectedError); CTSVersionld getCTSVersion() raises (UnexpectedError);

(;

/* HL7£pec81ockEnd */

у**.»*.»*.»*.»*.»*.»*.»*.»*•»».»«.»

*    API времени исполнения    *

*    A V* A * * A V* A * ************    f

/* HL7Spec81ock:runtime *f

interface Runtime : Identification (

/* getSupportedMatchAlgorithms — возвратить список поддерживаемых алгоритмов ‘ совпадения Ч

MatchAlgorithmCodeList getSupportedMatchAlgorithms() raises (UnexpectedError);

/" getSupportedVocabularyDomains — возвратить список словарных доменов,

*    известных модуле вреиени исполнения

*

*matchText — искомый образец. Формат зависит от алгоритма совпадения.

*    Пустая строка означает возвращение всех имен *matchAlgorithm_code — код алгоритма совпадения.

*    timeout    — время ожидания завершения операции в миллисекундах

*    (0 — не ограничено)

*sizeLimit — максимальное число возвращаемых элементов

*    (0 — не ограничено)

*

*    Возвращаемое значение — список словарных доменов

*

*    Примечание — Если указан параметр sizeLimit и число записей в возвращенном

*    списке совпадает с его значением, то клиент должен предполагать, что

*    список не полон.

к

*    Исключения

* TimeoutError    — превышен лимит времени

*    BadlyFormedMatchText    — искомый образец не может быть разобран для

*    заданного алгоритма

*    UnknownMatchAlgorithm — алгоритм совпадения не распознан службой Ч

VocabularyDomainNameList getSupportedVocabularyDomains( in types::ST    matchText,

in MatchAlgorithmCode matchAlgorithm_code, in long timeout,

in long    sizeLimit

)

raises (BadlyFormedMatchText,

UnknownMatchAlgorithm,

TimeoutError,

UnexpectedError

);

87

ГОСТ Р ИСО/Ж.7 27951—2016

/‘ HL7SpecBlockEndElipsis */

/* HL7SpecBlock:validateCode */

/‘ validateCode — проверить значение элемента с типом данных CD на *    соответствие заданному словарному домену

к

vocabularyDomain_name    —    словарный домен атрибута

codeToValidate    —    проверяемый код

applicationContext_code    —    прикладной контекст (не обязателен}

activeConceptsOnly    — TRUE указывает, что код должен быть активным

в целевой системе кодирования FALSE указывает, что неактивные коды также учитываются (Примечание — Если код неактивен, то в этом случае должно генерироваться предупреждение)

errorCheckOnly    —    TRUE указывает ограниченную    проверку (только

на ошибки)

FALSE указывает расширенную проверку (на ошибки и предупреждения)

Возвращаемое значение — структура, содержащая счетчик ошибок пЕггогз,

счетчик предупреждений nWarnings, за которыми следует детальная информация

*    Примечание — Этот метод обеспечивает проверку текущего кода и

*    квалификаторов. Для проверки трансляций кода используйте

*    метод validateTranslations

к

*    Исключения:

‘    UnknownVocabularуDomain    — словарный домен не распознан службой

*    UnknownApplicationContextCode — прикладной контекст не распознан

*    NoApplicableValueSet    — не существует набора значений, относящегося

*    к этому домену в данном контексте

*/

ValidateCodeReturn validateCode< in Vocabu1a гуDoma i nName in types::CD

in ApplicationContextCode in types::BL in types::BL >

vocabularyDomain_name,

codeToVa1idate,

appli ca t ionCon tex t_code,

activeConceptsOnly,

errorCheckOnly

raises (UnknownVocabularyDomain, UnexpectedError, UnknownApplicationContextCode, NoApplicableValueSet);

/" HL7SpecBlockEnd -t

/* HL7SpecBlock:validateTranslation */

validateTranslation - проверить совокупность транляций значения типа CD

*    vocabularyDomain_name    — словарный домен атрибута

*    codeToValidate    — проверяемый код

*    applicationContext_code — прикладной контекст (не обязателен)

• activeConceptsOnly    — TRUE указывает, что код должен быть активным

88

ГОСТ Р HCO/HL7 27951—2016

в целевой системе кодирования FALSE указывает, что неактивные коды также учитываются (Примечание — Если код неактивен, то в этом случае должно генерироваться предупреждение)

errorCheckOnly    — TRUE указывает ограниченную проверку (только

на ошибки)

FALSE указывает расширенную проверку (на ошибки и предупреждения)

Возвращаемое значение — структура, содержащая счетчик ошибок nErrors,

счетчик предупреждений nWarnings, за которыми следует детальная информация

*    Исключения:

" UnknownVocabularyDomain

*    UnknownApplicacionContextCode */

—    словарный домен не распознан службой

—    прикладной контекст не распознан службой

ValidateCodeReturn validateTranslation(

in VocabularyDomainName in types::CD

in ApplicationContextCode in types::BL in types::BL )

vocabu1а г уDomai n_name,

codeToValidate,

app1i ca tionCon tex t_code,

activeConceptsOnly,

errorCheckOnly

raises (UnknownVocabularyDomain,

UnknownApplicationContextCode, UnexpectedError);

/‘ HL7SpecBlockEnd */

/‘ HL7SpecBlock:translateCode »/

/‘ translateCode — транслировать кодированный атрибут. Если указана целевая

*    система кодирования, то переданный код транслируется в эту систему. Если

*    она не указана, то код транслируется в форму, применимую в целевом ‘ контексте

*

к

к

к

к

к

к

voc abu1а гуDomai n_name fromCode toCodeSystemld

toApplicationContext_code

—    словарный домен кода и трансляции

—    транслируемый код

—    идентификатор целевой системы кодирования (не обязателен)

—    контекст, идентифицирующий целевую среду

* Возвращаемое значение — новый элемент типа CD, содержащий трансляцию

к

‘Исключения:

*    UnknownVocabularyDomain — словарный домен не распознан службой

‘ UnknownCodeSystem    — система кодирования в параметре fromCode или

‘    toCodeSystemld не распознана службой

*    UnknownApplicacionContextCode — прикладной контекст не распознан службой ‘ UnableToTranslate — трансляция не состоялась по указанной причине

*/

types::CD translateCode(

in VocabularyDomainName    vocabularyDomain_name,

in types::CD    fromCode,

89

ГОСТ Р HCO/HL7 27951—2016

in CodeSystemld    toCodeSystemld,

in ApplicationContextCode    toApplicationContext_code

)

raises (UnknownVocabularyDomain,

UnknownCodeSystem,

Un knownApplicat ionContex tCode, UnableToTranslate,

UnexpectedError);

/» HL7SpecBlockEnd "t /* HL7SpecBlock:fillInDetails */

f* filllnDetails — заполнить необязательные поля в значении типа CD,

‘    включая имя системы кодирования, выпуск и изображаемое

"    имя кода

*    codeToFillln    — заполняемый код

*    displayLanguage_code — язык, используемый для имени системы

*    кодирования и обозначения кода

к

*    Возвращаемое значение — кол с заполненными полями

к

*    Исключения:

*UnknownCodeSystem — часть кода, означающая систему кодирования,

*    не распознана службой

*    UnknownConceptCode — код понятия не действителен в заданной системе

*    кодирования либо код не действителен

*    UnknownLanguage    — код языка не распознан

*NoApplicableDesignationFoynd - для заданного значения типа CD не найдено

*    обозначение на заданном языке

*

*/

types:: CD filllnOetails (

in types::CD    codeToFillln,

in LanguageCode    displayLanguage_code

raises (UnknownCodeSystem, UnknownConceptCode, UnknownLanguage, UnexpectedError, NoApplicableDesignationFound);

/» HL7SpecBlockEnd "t f* HL7SpecBlock:subsumes */

/‘ subsumes    — проверить, является первый код категорией второго

*    parentCode    — код родителя

*    childCode    — код потомка

*

*    Возвращаемое значение — TRUE, если первый код является родительским

*    для второго

*    — FALSE, если не является

к

*    Примечания

‘    1 Трансляции игнорируются этим методом

*    2 Если оба кода эквивалентны, метод возвращает значение TRUE

90

ГОСТ Р HCO/HL7 27951—2016

3 Если один из ходов или оба кода являются исключениями из кодирования (СИЕ) и при этом не эквивалентны, то метод возвращает значение FALSE

*    Исключения:

"UnknownCodeSystem — система кодирования родителя или потомка не распознана

*    UnknownConceptCode — код parentCode или childCode не распознан службой *SubsumptionNotSupported — проверка родительского отношения не

‘    поддерживается службой или системой кодирования

*    UnrecognizedQualifier — один из квалификаторов понятия не распознан

*    службой

*QualifiersNotSupported — квалифицированные понятия не поддерживаются ‘    службой

*/

types::SL subsumes!

in types::CD parentCode, in types::CD childCode )

raises (UnknownCodeSystem, UnknownConceptCode,

SubsumptionNotSupported, Unrecogn i zedQual ifier,

Qua lifiersNot Supported, UnexpectedError);

/* HL7SpecBlockEnd */

/‘ HL7SpecBlock:areEquivalent »/

/‘ areEquivalent — определить, являются ли два кода эквивалентными

* codel    — первый код

* code2    — второй код

*

*    Возвращаемое значение — TRUE, если определено, что коды эквивалентны,

*    FALSE в противном случае

к

*    Исключения:

"UnknownCodeSystem

а

*UnknownConceptCode

*    SubsumptionNotSupported

а

*    UnrecognizedQualifier

а

k QualiflersNotSupported

а

*/

types::BL areEquivalent in types::CD codel, in types::CD code2 )

raises (UnknownCodeSystem,

UnknownConceptCode,

SubsumptionNotSupported, UnrecognizedQualifier,

—    система кодирования кодов codel или code2 не распознана службой

—    код codel или code2 не распознан службой

—    проверка родительского отношения не поддерживается службой или системой кодирования

—    один из квалификаторов понятия не распознан службой

—    квалифицированные понятия не поддерживаются службой

(

91

ГОСТ Р ИСО/Ж.7 27951—2016

QualiiiersNotSupported, UnexpeccedErcor)?

HL7SpecBlockEnd */

/ь HL7SpecBlock:lookupValueSetExpansion */

/* ValueSetExpansionList — возвратить иерархический список значений,

*    допустимых для заданного словарного домена и

*    контекста

*    vocabula гуDoraa in_name — раскрываемый словарный домен

*    applicationContext_code — контекст, используемый для выборки

*    набора значений <не обязателен)

*    language_code    — язык, используемый для визуализации списка

*    expandAll    — TRUE указывает, что все узлы раскрываются

*    на полную глубину, FALSE - на один уровень

*    cimeout — время ожидания завершения операции в миллисекундах

*    <0 - не ограничено)

*    sizeLimit — максимальное число возвращаедох элементов

*    <0 — не ограничено)

*    Возвращаемое значение — список допустимых кодов

*

‘ Примечание — Если указан параметр sizeLimit и число записей в возвращенном

*    списке совпадает с его значением, то клиент должен предполагать, что

*    список не полон

к

*    Исключения

*    UnknownVocabularуDomain    - домен не распознан службой

*    UnknownApplicationContextCode — прикладной контекст не распознан службой

*    UnknownLanguage    — код языка не распознан службой

‘    NoApplicableValueSet    — не существует набора значений, относящегося

*    к этому домену в данном контексте

* TimeoutError    — превышен лимит времени

*/

ValueSetExpansionList lookupValueSetExpansion(

in VocabularyDomainName    vocabularyDomain_name,

in ApplicationContextCode    applicationContext_code,

in LanguageCode    language_code,

in types::BL    expandAll,

in long    timeout,

in long    sizeLimit

)

raises (UnknownVocabularyDomain,

UnknownApplicationContextCode,

UnknownLanguage,

NoApplicableVa1ueS et,

TimeoutError,

UnexpectedError);

/* HL7SpecBlock£nd */

/* HL7SpecBlock:expandValueSetExpansionContext */

/* expandValueSetBxpansionContext — раскрыть узел, который не до конца

92

ГОСТ Р HCO/HL7 27951—2016

*    раскрыт предыдущий вызовом описанного

*    выше метода lookupValueSetExpansion

*    expandContext    — начальный контекст, используемый для раскрытия

*    Возвращаемое значение — список допустимых кодов для данного контекста

к

ValueSetExpansionList expandValueSetExpansionContext< in ExpansionContext    expansionContext

)

raises (InvalidExpansionContext,

TimeoutError,

UnexpectedError);

/* HL7SpecBlockEnd V b*

*    API обозревателя    *

»*»*»*►*»**»»*»**»»*»**»»*»**»»*»*/

/* HL7Spec81ock:browser */

interface Browser : Identification {

/* HL7SpecBlockEndElipsis */

/* HL7SpecBlock:browserDescription */

/* getSupportedMatchAlgorithms — возвратить список поддерживаемых алгоритмов

*    совпадения */

MatchAlgorithmCodeList getSupportedMatchAlgorithms<} raises (UnexpectedError);

/* getSupportedAttributes — возвратить кодированные атрибуты, известные

*    обозревателю, чьи имена соответствуют заданным

*    критериям

*

*    matchText    — искомый образец. Формат зависит от алгоритма

*    совпадения. Пустая строка означает возвращение

*    всех    имен

*    matchAlgorithra_code — код алгоритма совпадения

*    timeout    — время ожидания завершения операции в миллисекундах

*    <0 —    не ограничено)

*    si2eLimit    — максимальное число возвращаемых элементов

*    <0 —    не ограничено)

*    Возвращаемое значение — список кодированных атрибутов

к

*    Примечание — Если указан параметр si2eLiinit и число записей в возвращенном

*    списке совпадает с его значением, то клиент должен предполагать, что

*    список не полон

*    Исключения!

*    TimeoutError

— превышен лимит времени

93

ГОСТ Р HCO/HL7 27951—2016

‘ Bad1уFo гmedMa tchТех t — искомый образец не может быть разобран

*    указанным алгоритмом

*    UnknownMatchAlgorithm — алгоритм совпадения не распознан службой

•7

RIMCodedAttributeList getSupportedAttributes( in types::ST    matchText,

in MatchAlgorithmCode matchAlgorithm_code, in long    timeout,

in long    sizeLimit

)

raises {BadlyFormedMatchText,

UnknownMatchAlgorithm,

TimeoutError,

UnexpectedError);

l* getSupportedVocabularyDomains — возвратить словарные домены, известные

*    обозревателю, чьи имена соответствуют

*    заданным критериям

*

*    matchText    — искомый образец. Формат зависит от алгоритма

*    совпадения. Пустая строка означает возвращение

*    всех имен

‘ matchAlgorithm_code — код алгоритма совпадения

*    timeout    — время ожидания завершения операции в миллисекундах

*    <0 — не ограничено)

‘ sizeLimit    — максимальное число возвращаемых элементов

*    <0 - не ограничено)

к

‘ Возвращаемое значение — список словарных доменов

к

*    Примечание — Если указан параметр sizeLimit и число записей в возвращенном

*    списке совладает с его значением, то клиент должен предполагать, что

*    список не полон

к

‘ Исключения:

‘    TimeoutError    — превышен лимит времени

*    BadlyFormedMatchText — искомый образец не может быть разобран

*    указанным алгоритмом

*    UnknownMatchAlgorithm — алгоритм совпадения не распознан службой */

VocabularyDomainNameList getSupportedVocabularyDomains{ in types::ST    matchText,

in MatchAlgorithmCode matchAlgorithm_code, in long    timeout,

in long    sizeLimit

>

raises {BadlyFormedMatchText,

UnknownMatchAlgorithm,

TimeoutError,

UnexpectedError);

/* getSupportedValueSets — возвратить список наборов значений, известных

*    обозревателю, чьи имена совпадают с переданным

*    искомым образцом

94

ГОСТ Р HCO/HL7 27951—2016

‘ matchText    — искомый образец. Формат зависит от алгоритма

*    совпадения. Пустая строка означает возвращение

*    всех имен

‘ matchAlgorithm_code - код алгоритма совпадения

*    timeout    — время ожидания завершения операции в миллисекундах

*    <0 — не ограничено)

*    sizeLimit    — максимальное число возвращаемых элементов

*    <0 — не ограничено)

*

‘ Возвращаемое значение    — список наОоров значений

к

*    Примечание — Если указан параметр sizeLimit и число записей в возвращенном

*    списке совпадает с его значением, то клиент должен предполагать, что

*    список не полон

к

*    Исключения:

*    TimeoutError    — превышен лимит времени

*    BadlyFormedMatchText — искомый образец не может Сыть разобран

*    указанным алгоритмом

*    UnknownKatchAlgorithm - алгоритм совпадения не распознан службой

Ч

ValueSetDescriptorList getSupportedValueSets( in    types::ST    matchText,

in MatchAlgorithmCode matchAlgorithm_code, in long    timeout,

in long    sizeLimit

)

raises {BadlyFormedMatchText, UnknownMatchAlgorithm,

TimeoutError,

UnexpectedError);

/

getSupportedCodeSystems — возвратить список систем кодирования, известных

обозревателю, чьи имена совпадают с заданными критериями

matchText    — искомый образец. Формат зависит от алгоритма

совпадения. Пустая строка означает возвращение всех имен

matchAlgorithm_code - код алгоритма совпадения

timeout    — время ожидания завершения операции в миллисекундах

(О — не ограничено)

sizeLimit    — максимальное число возвращаемых элементов

(О - не ограничено)

Возвращаемое значение — список систем кодирования

Примечание — Если указан параметр sizeLimit и число записей в возвращенном списке совпадает с его значением, то клиент должен предполагать, что список не полон

95

ГОСТ Р ИСО/Ж.7 27951—2016

*    Исключения

*    TimeoutError    — превышен лимит времени

*    BadlyFormedMatchText — искомый образец не может быть разобран

*    заданным алгоритмом

*    UnknownMatchAlgorithm — алгоритм совпадения не распознан службой */

CodeSystemDescriptorList getSupportedCodeSystems( in    types::ST    matchText,

in MatchAlgori thmCode matchAlgorithm_code, in long    timeout,

in long    sizeLimit

)

raises {BadlyPormedMatchText,

UnknownMatchAlgorithm,

TimeoutError,

UnexpectedError);

/* HL7SpecBlockEnd */

/* HL7SpecBlock:lookupVocabularyDomain */

/* lookupVocabularyDomain — просмотреть полное описание словарного домена

*    domain — идентификатор просматриваемого словарного домена

к

*    Возвращаемое значение — полное описание словарного домена •/

VocabularyDomainDescription lookupVocabularyDomain( in VocabularyDomainName vocabularyDomain_name )

raises (UnknownVocabularyDomain,

UnexpectedError);

/" HL7SpecBlockEnd */

/* HL7SpecBlock:lookupValueSet */

/* lookupValueSet — возвратить полное описание набора значений

*    valueSet    — уникальный идентификатор или имя набора значений

*

* Возвращаемое значение — полное описание набора значений

к

*    Исключения:

*    UnknownValueSet — идентификатор набора значений задан, но не распознан

*    службой, либо задано только имя набора значений, но

*    не распознано службой, либо не заданы ни

*    идентификатор, ни имя набора значений

*    ValueSetNameldMismatch — заданы и идентификатор набора значений, и его

*    имя, но они не соответствуют друг другу

*/

FullValueSetDescription lookupValueSet(

in ValueSetld    valueSet_id,

in ValueSetName    valueSet name

>

raises (UnknownValueSet, ValueSetNameldMismatch, UnexpectedError);

/• HL7SpecBlockEnd *7 96

ГОСТ Р HCO/HL7 27951—2016

/‘ HL7SpecBlock:lookupCodeSystem */

/‘ lookupCodeSystem — возвратить описание и имя системы кодирования ‘ codeSystem — уникальный идентификатор системы кодирования

к

к Возвращаемое значение — описание системы кодирования

к

*    Исключения:

‘ UnknownCodeSystem — идентификатор системы кодирования задан, но не ‘    распознан службой, либо задано только имя системы

*    кодирования и не распознано службой, либо не

*    заданы ни идентификатор, ни имя системы

*    кодирования

*    CodeSystemNameldMismatch — заданы и идентификатор системы кодирования, и

‘    ее имя, но они не соответствуют друр другу

*/

CodeSystemlnfo lookupCodeSystem (

in CodeSystemld    codeSystem_id,

in CodeSystemName    codeSуstem_name

>

raises (UnknownCodeSystem, CodeSystemNameldMismatch, UnexpectedError);

/• HL7SpecBlockEnd */

/‘ HL7SpecBlock:lookupValueSetForDomain V

/* lookupValueSetForOomain — возвратить описатель набора значений, который

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

‘    заданном контексте (если такой набор имеется)

к

‘ vocabularyOomain_name — имя словарного домена

*    applicationConcext_code — код прикладного контекста (не обязателен)

‘ Возвращаемое значение — идентификатор и имя (если оно имеется)

‘    набора значений, который можно использовать

*    в данном контексте

к

*    Исключения:

*    (JnknownVocabularyDomain

‘ UnknownApplicationContextCode

В

*    NoApplicableValueSet

к

к

к

—    словарный домен не распознан службой

—    прикладной контекст не распознан службой

—    не существует набора значений, относящегося к этому домену в данном контексте

*/

ValueSetDescriptor lookupValueSetForDomain <

in VocabularyDomainName    vocabularyDomain_name,

in ApplicationContextCode applicationContext_code

)

raises (UnknownVocabularyDomain,

UnknownApplicationContextCode, NoApplicableValueSet,

UnexpectedError);

97

ГОСТ Р HCO/HL7 27951—2016

/‘ HL7SpecBlockEnd */

/* HL7SpecBlock:isCodeInValueSet */

/

isCodelnValueSec

valueSet_id

valueSet_name includeHeadCode

c ode To Va1i da t e

— определить, входит ли данный код понятия в набор значений

-    идентификатор набора значений <ке обязателен, но или идентификатор, или имя набора должны быть указаны)

-    имя набора значений {не обязательное)

-    TRUE указывает, что "головной код" набора значений, если таковой имеется, должен считаться частью набора

-    система кодирования и проверяемый код понятия

Возвращаемое значение - TRUE, если понятие входит в набор значений

FALSE, если не входит

Исключения:

UnknownValueSet    — идентификатор набора значений {если указан) не

распознан службой или, если идентификатор отсутствует, имя набора не распознано службой ValueSetNameldMismatch - идентификатор набора значений распознан

службой, но имя набора не соответствует этому идентификатору

UnknownCodeSystem    — система кодирования не распознана службой

UnknownConceptCode — код понятия не действителен в системе

кодирования

/

types::BL isCodelnValueSec< in ValueSetld in ValueSetName in typesi:BL in Conceptld

valueSet_id,

valueSetjname,

includeHeadCode,

codeToValidate

)

raises (UnknownValueSet,

ValueSetNameZdMismatch, UnknownConceptCode, UnknownCodeSystem, UnexpectedError);

/* HL7SpecBlockEnd -t

\;

):

tendif

16.3 Определение API словаря ОТС на языке IDL

Ниже приведено определение API словаря ОТС на языке IOL (файл CTSVAPl.idl).

/*

‘ Исходный файл: CTSVAPl.idl

*    Версия:    1.0

*    Дата:    10/31/03

98

ГОСТ Р HCO/HL7 27951—2016

*/

tifndef _CTSVAPI_DEF1NED

♦define CTSVAPI DEFINED

/•

*    API уровнл словаря Централизованных терминологических служб

*■ Этот модуль определяет интерфейс между приложением/ обрабатывающим

*    сообщения/ соответствующие стандарту HL7, и терминологическими службами

•7

module CTSVAPI {

/•*.....*........................ж..............

*    Соглашения о суффиксах:

*    Ххх    —    суффикс типа

*    _ххх    —    суффикс атрибута

4

*    Суффиксы

*    Id    —    уникальный идентификатор сущности

*    Name    —    уникальное имя

*    Code    —    код понятия

*    Version — идентификатор версии */

/

Основные типы данных

»*»**«»*»**«»*»**«»*»**«»*»**«**ж»г**»г*ж*г*ж»....*^

HL7SpecBlock:basicData */

/* Объектный идентификатор ИСО (ОИД) */ typedef string OID;

/* Описание или определение сущности. Может представлять собой текст большого * объема, несколько строк и т. д.

*/

typedef string Description;

/.................Ж..»*.........................*

Идентификаторы основных сущностей

/

/* Идентификатор версии спецификации ОТС */ struct CTSVersionld ( short major; short minor;

b*

/* Уникальный идентификатор системы кодирования */ typedef OID CodeSystemld;

typedef sequence<CodeSystemXd> CodeSystemldList;

Имя системы кодирования */

typedef string CodeSystemName;

Код понятия в системе кодирования *7 typedef string ConceptCode;

99

ГОСТ Р ИСО/Ж.7 27951—2016

typedef sequence«ConceptCode> ConceptCodeList;

/‘ Уникальный идентификатор понятия, состоящий из идентификатора системы ‘ кодирования и кода понятия */

struct ConceptId (

CodeSystemld codeSyscem_Ld;

ConceptCode concept_code;

b*

typedef sequence«ConceptId> ConceptldList;

/‘ Идентификатор версии */

typedef string Versionld;

Версия системы кодирования */

typedef Versionld    CodeSystemVersion;

typedef sequence«VersionId> CodeSystemVersionList;

/* Непрозрачный контекст, передаваемый служ&ой клиенту "/ typedef sequence<octet> ExpansionContext;

/‘ HL7SpecBiockEnd "t

«**«**«**«**«**«**«**«**«**«**«**«**«**«**»

Кодированные элементы

/

/* HL7£pec81ock:conceptCodes •/

/‘ Идентификатор языка

*    Синтаксис основан на спецификации IETF RFC 3066 — Теги идентификации

*    языков. Состоит из основного тега primary-subtag, за которым следуют нуль

*    или Солее вторичных субтегов <secondary subtag>

*    <primary subtag> — по возможности берется из ИСО 639 часть 1

*    (2 символа), иначе берется трехсиывольный код

*    — коды "i-" и "х-" не разрешены в данной спецификации

*

*«secondary subtag 1> — 2-8 символов

*    - коды из 2 символов берутся из стандарта кодов стран ИСО 3166

*    коды из 3-8 символов берутся из регистра IANA

*    —см.

*    «secondary subtag 2-п> — правила не определены, хотя некоторые теги

*    зарегистрированы в IANA

к

*    Системы кодирования: IS0639-1    (2.16.840.1.113883.6.99)

*    IS0639-2    (2.16.840.1.113883.6.100)

*    ISO 3166-1    (2.16.1)

*/

typedef ConceptCode LanguageCode;

typedef sequence«LanguageCode> LanguageCodeList;

/* MimeTypeCode identifier — идентификатор типа среды Mime. * Система кодирования: MediaType (2.16.840.1.113883.5.79)

•7

typedef ConceptCode MimeTypeCode;

typedef sequence«MimeTypeCode> MimeTypeCodeList;

/* ConceptStatusCode — указывает, является ли код понятия активным, 100

ГОСТ Р HCO/HL7 27951—2016

‘    устаревшим и т. д.

‘Система кодирования: ConceptStatusCode (2.16.840.1.113883.5.1086) */

cypedef ConceptCode ConceptStatusCode;

/* PropertyCode — идентификатор свойства в системе кодирования.

‘    Включает в себя и идентификатор системы кодирования, и код понятия.

‘    Система кодирования: ConceptProperty (2.16.840.1.113883.5.1087)

‘/

typedef ConceptCode    PropertyCode;

typedef sequence<PropertyCode> PropertyCodeLlst;

/‘ RelationehipCode — идентификатор отношения в системе кодирования.

‘    Содержит только код понятия.

*    Отношения, определенные в стандарте    HL7,    должны Ораться

‘    из системы кодирования ConceptCodeRelationahip

*    (2.16.840.1.113883.5.1088)

*/

typedef ConceptCode    RelationshipCode;

typedef sequence<RelationshipCode> RelationshipCodeList;

MapQualityCode — код понятия, идентифицирующий общее качество ото&ражения ‘    (например шире, уже,...)

‘    По возможности должен быть    взят из системы кодирования

‘    (2.16.840.1.113883.5.1093)

‘/

typedef ConceptCode MapQualityCode;

‘ RelationQualilierCode — квалификатор, уточняющий или раъясняюший отношение ‘    между двумя понятиями. В настоящее время комитетом

‘    HL7 не используется

*/

typedef ConceptCode RelationQualilierCode;

typedef sequence<RelationQualilierCode> RelationQualifierCodeList;

/*

*    MatchAlgorithmCode — код, идентифицирующий алгоритм совпадения,

*    используемый при поиске. По возможности должен быть

‘    взят из системы кодирования алгоритмов совладения

‘    (2.16.840.1.113883.5.1094)

*/

typedef ConceptCode MatchAlgorithmCode;

typedef sequence<MatchAlgorithmCode> MatchAlgorithmCodeList;

/‘ HL7SpecBlockEnd */

‘ Сущности, представляющие UML-модель *

llltlltAIttlttlttllll**»»*«**»»*•**•*»•/

/* HL7SpecBlock:code$y8temIdAndVersions */

CodeSystemldAndVersions - идентификатор, имя и версия системы кодирования ‘ codeSystem_id    - идентификатор системы кодирования (ОИД)

‘ codeSystem_name    — имя системы кодирования

101

ГОСТ Р HCO/HL7 27951—2016

4

4

4

Ч

copyright    — сведения об авторских правах, если таковые имеются

codeSystem_VersionList — версия выпуска системы кодирования (если

имеется)

struct CodeSystemldAndVersions {

CodeSystemld    code$ystem_id;

CodeSystemName    codeS у a t em_n a me ;

string    copyright;

CodeSystemVersionList    codeSystem_versions;

\:

typedef sequence<CodeSystemldAndVersions> CodeSystemldAndVersionsList

HL7SpecBlockEnd */

/“ HL7SpecBlock:codeSystemInfo */

/*

4

4

4

4

4

4

4

4

4

4

4

4

4

4

4

4

CodeSystemlnfo — детальное описание системы кодирования

—    идентификатор, имя и версия (версии) системы кодирования

—    официальное наименование системы кодирования codeSystemDescription — текстовое описание системы кодирования

—    список языков, поддерживаемых системой кодирования

—    список отношений, поддерживаемых системой кодирования

—    список свойств, поддерживаемых системой кодирования

—    версия системы кодирования, если применима

—    список типов среды MIME, поддерживаемых системой кодирования

suppoгtedRelationQualifters — квалификаторы отношений, поддерживаемых

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

codeSystem

fullName codeSys t€ supportedLanguages

supportedRelations

s uppo r tedProper t ies

representsVersion s uppo r t edM ime Types

struct CodeSystemlnfo (

CodeSystemldAndVersions

string

Description

LanguageCodeList

Relation3hipCodeList

PropertyCodeList

MimeTypeCodeList

RelationQualifierCodeList

);

/» HL7SpecBlockEnd */

/* HL7SpecBlock:conceptDesignation */

codeSystem;

fullName;

codeSystemDescription; supportedLanguages; suppo r te dRela t ions; supportedProperties; supportedMimeTypes; supportedRelationQualifters;

/‘ ConceptDesignation

4

‘ designation

*    language

*    preferredForLanguage

4

‘ contextsOfUse

4

4

—    имя или представление, данное понятию, представленному кодом

—    имя или обозначение понятия

—    язык обозначения

—    TRUE указывает, что обозначение предпочтительно для языка, указанного в поле ED.language

—    список контекстов,в которых применяется обозначение

struct ConceptDesignation string

designation;

102

ГОСТ Р HCO/HL7 27951—2016

LanguageCode    language_code;

boolean    preferredForLanguage;

b*

typedef sequence<ConceptDesignation> ConceptDesignationList; /- HL7SpecBlockEnd */

/* HL7SpecBlock:conceptProperty */

/* ConceptProperty — характеристика или атрибут понятия, представленного *    кодой

—    пара система кодирования/код свойства, идентифицирующая свойство

—    значение свойства

—    язык свойства <не обязателен)

—    тип среды MIME свойства (по умолчанию text/plain)

propeг tу_с ode

propertyValue language_code mimeType_code

struct ConceptProperty PropertyCode string LanguageCode MimeTypeCode \t

property_code; propertyValue; language_code; mimeType_code ;

typedef sequence<ConceptProperty> ConceptPropertyList;

/* HL7SpecBlockEnd */

/* HL7SpecBlock:conceptRelationship */

/* ConceptRelationship — определение отношения */ struct ConceptRelationship {

Conceptld    sourceConcept_id;

RelationshipCode relationship_code; RelationQualifierCodeList relationOualiiiers;

Conceptld    targetConcept_id;

);

typedef sequence<ConceptRelationship> ConceptRelationshipList; /* HL7SpecBlockEnd */

/* HL7SpecBlock:completeCodedConceptDescription •/

/* CompleteCodedConceptDescription — вся известная информация о коде понятия

*

к

к

к

к

к

к

к

к

ч

concept_id conceptStatus_code с ode System_ve r s i on

designatedBy hasProperties sourceFor

targetOf

—    идентификатор системы кодирования и код понятия

—    статус понятия в версии системы кодирования

—    версия системы кодирования, из которой взята информация

—    обозначения понятия

—    свойства понятия

—    коды квалифицированных отношений и коды непосредственных целевых понятий

—    коды квалифицированных отношений и коды непосредственных понятий-источников

struct CompleteCodedConceptDescription {

Conceptld    concept_id;

ConceptStatusCode    conceptstatus_code;

CodeSystemVersion codeSystem_version; ConceptDesignationList designatedBy; ConceptPropertyList    hasProperties;

ConceptRelationshipList sourceFor;

103

ГОСТ Р HCO/HL7 27951—2016

ConceptRelationshipList targetOf;

/* HL7SpecBlockEnd *7

/-

/*

HL7SpecBlock:relatedCode *7 RelatedCode — информация о связанном коде pathLength    —    расстояние от стартового узла

concept_code    —    код понятия

designation    —    подходящее обозначение понятия

canExpand    —    TRUE указывает, что возможно дальнейшее раскрытие

expansionContext — контекст {непрозрачный), используемый для дальнейшего

раскрытия

7

struct RelatedCode {

short    pathLength;

ConceptCode    concept_code;

string    designation;

RelationQualifierCodeList relationQualifiers; boolean    canExpand;

ExpansionContext    expansionContext;

>;

typedef seguence<RelatedCode> RelatedCodeList; /* HL7SpecBlockEnd *7 /HL7SpecBlock:supportedMap */

/"

к

к

к

к

к

к

к

к

к

к

к

CodeMap — отображение кода

map_name    — уникальный идентификатор конкретного отображения

fromCodeSystem_id fromCodeSystem_name fromCodeSystem_version

toCodeSys t em_id

t oCodeSуst em_name

toCode£ystem_version

mapDescription

система кодирования-источник отображения имя системы кодирования-источника версия системы кодирования-источника {не обязательна)

идентификатор целевой системы кодирования отображения

имя целевой системы кодирования

версия целевой систеш кодирования (не обязательна) описание отображения (источник, версия, дата, местонахождение и т. д.)

* Примечание — Отображения не симметричны */

struct CodeMap { string    map_name;

Description

CodeSystemld CodeSys temName CodeSystemVereion CodeSystemld Code S ys temName CodeSystemVersion

mapDescription;

f romCodeSys tem_id; fromCodeSystem_name; f romCodeSys tem_ve rs ion; toCodeSystem_id; toCodeSystem_name; toCodeSystem_version;

b-

typedef seguence<CodeHap> CodeKapList; Л HL7SpecBlockEnd *7 /* HL7SpecBlock:mappedConceptCode *7

104

ГОСТ Р HCO/HL7 27951—2016

MappedConceptCode — результат отображения кода понятия и признак качества *■    отоОражения

*    mappedConcept_id — отображаемый код и его система кодирования

*    mapQuality_code    — грубая мера точности отображения

Ч

struct MappedConceptCode {

Conceptld    mappedConcept_id;

MapOualityCode    mapQuality_code;

\:

/* HL7SpecBlockEnd *7 /* HL7SpecBlock:stringAndLanguage *7

/" StringAndLanguage — пара, образованная текстовой строкой и ассоциированным ‘    кодом языка

•/

struct StringAndLanguage \ string text;

LanguageCode language_code;

);

/* HL7SpecBlockEnd 4

/fc*vt**fc*vt**fc*vt**fc*vt**fc*vt**fc*vt**fc*vt**fc*vt*

*    Исключения    *

/* HL7£pec81ock:exceptions */

/*■

*    He специфичная ошибка, воспрепятствовавшая успешному завершению вызова

Ч

exception UnexpectedError \ string possible_cause;

);

/-

* Передан идентификатор системы кодирования, не распознанный службой Ч

exception UnknownCodeSystem {

CodeSystemld    codeSystem_id;

\;

/-

* Передан код понятия, не действительный в заданной системе кодирования

Ч

exception UnknownConceptCode (

ConceptCode    concept_code;

/-

* Использован код свойства, не действительный для системы кодирования

Ч

exception UnknownPropertyCode (

PropertyCode    property_code;

I;

105

ГОСТ Р ИСО/Ж.7 27951—2016

/-

* Передан код языка, не действительный для систеыы кодирования

-/

exception UnknownLanguageCode {

LanguageCode language_code;

);

/"

* Передан код отношения, не действительный для систеыы кодирования •/

exception UnknownRelationshipCode {

RelationshipCode relationship_code;

);

/*■

*    Передан код квалификатора отношения, не действительный для систеыы

*    кодирования */

exception UnknownRelationQualifter I

RelationQualifterCode    relationQualilier_code;

);

/"

* Передан не распознанный код типа среды М£МЕ */

exception UnknownMimeTypeCode {

MimeTypeCode mimeType_code;

);

/-

*    Контекст, переданный в параметре expandCodeContext, не действителен или

*    каким-то образом поврежден */

exception InvalidExpansionContext {

/-

*    Для переданного кода понятия и критериев выборки не найдено подходящее

*    обозначение */

exception NoApplicableDesignationFound {

Conceptld concept_id;

LanguageCode language_code;

),•

/*

* Идентификатор систеыы кодирования не соответствует ее имени */

exception CodeSystemNameldMismatch {

CodeSystemld codeSyatem_id; CodeSystemNamecodeSystem_name;

/-

* Формат текста для поиска совпадения не может быть разобран

106

ГОСТ Р HCO/HL7 27951—2016

•7

exception BadlyEormedMatchText { string oatchText;

);

/-

* Время выполнения операции превысило заданный лимит времени */

exception TimeoutError \

)!

/*

* Переданный код алгоритма совпадения не поддерживается службой

Ч

exception UnknownMatchAlgorithm {

MatchAlgorithmCode matchAlgorithm_code;

/* HL7SpecBlockEnd */

/“ HL7SpecBlock:mapExceptions */

/-

* Отсутствует доступное отображение между двумя системами кодирования Ч

exception MappingNotAvailable {

CodeSystemld    fromCodeSyscem_id;

CodeSystemld    toCodeSys tem_id;

b*

/-

*    Служба не может создать отображение между понятием-источником и целевым

*    понятием Ч

exception UnableToMap I

),•

/*

* Служба отображения не распознала переданное имя отображения

Ч

exception UnknownMapName { string    map_name;

);

/•

*    Имя отображения не было передано и существует несколько отображений

*    понятия системы кодирования-источника в целевую систему кодирования

*    Возвращаемые сведения содержат список возможных отображений •/

exception AcnbiguousMapRequest ( sequence<string> possible_maps;

}!

/*

*    Передано имя отображения, но идентификатор системы кодирования-источника,

*    содержащийся в параметре £romConcept_id, не совпадает с тем, что указан

107

ГОСТ Р ИСО/Ж.7 27951—2016

* в отображении */

exception MapNameSourceMismatch \ CodeSyatemld    f г omC ode S уs t em_ i d;

CodeSyatemld mapSourceCodeSystera_id;

/*

*    Передано имя отображения и идентификатор целевой системы кодирования

*    toCodeSystem_id не совпадает с тем, что указан в отображении */

exception MapNameTargetMismatch \

CodeSyatemld    toCode$ystem_id;

CodeSyatemld    mapTargetCodeSystera_id;

);

/* HL7SpecBlockEnd */

*    Раздел модуля идентификации *

/* HL7SpecBlock:identification */ interface Identification (

Имя реализованной службы k/

string getServiceName<J raises (UnexpectedError);

Версия реализованной службы */

string getServiceVersionf) raises (UnexpectedError);

Описание службы (источник, дата и т. д.) */

string getServiceDescription() raises (UnexpectedError);

/* Версия ОТС, представленная данной службой */

CTSVersionld getCTSVersion() raises (UnexpectedError);

Ь*

/* HL7SpecBlockEnd */

/* HL7SpecBiock:mapping •/

у**.»*.»*.**.»».»».»*.»*.»*.»*.»*.»*.»*.»*.»*.»*.»

‘    Интерфейс отображения кодов    *

к    к

*    Интерфейс отображения кодов представляет одно *

*    или несколько отображений систем кодирования *

»А»*А»*А»*А»*А»*А»*А»*А»*А»*А»*А»*А»»А**А*АА»*гА»*у

interface CodeMapping : Identification (

/‘ HL7SpecBlockEndElipsis */

/* HL7SpecBlock:supportedMaps */

/" getSupporcedMaps — возвратить список отображений, поддерживаемых службой */

CodeMapList getSupportedMaps{} raises (UnexpectedError);

/ь HL7SpecBlockEnd */

HL7SpecBlock:mapConceptCode */

106

ГОСТ Р HCO/HL7 27951—2016

/‘ mapConceptCode — отобразить код понятия из системы кодирования-источника

*    на ближайший эквивалент (если таковой имеется) в целевой системе ‘ кодирования

‘ fromConcept_id — система кодирования / отображаемый код понятия

*    toCodeSystem_id — целевая система кодирования

*    map_name    — имя используемого отображения. Может быть опущено,

‘    если существует лишь одно отображение системы

*    кодирования, указанной в параметре fromConcept_id,

‘    на систему кодирования toCodeSystem_id

В

*    Возвращаемое значение — результирующее понятие из целевой системы

к

Исключения:

система кодирования-источик или целевая система кодирования не поддерживается этой службой отображения

отображаемый код понятия не принадлежит системе кодирования

не существует отображения переданного кода понятия на целевую систему кодирования

требуемый код понятия не может быть отображен значение параметра mapping_name не распознано службой

идентификатор системы кодирования-источника, указанный в отображении, не совпадает с идентификатором системы кодирования, указанным в параметре fromConcept_id идентификатор целевой системы кодирования, указанный в отображении, не совпадает с идентификатором системы кодирования, указанным в параметре targetCodeSystem_id

существует более одного возможного отображения понятия-источника в целевую систему кодирования — не специфичная ошибка, воспрепятствовавшая успешному завершению вызова

MappedConceptCode mapConceptCode(

in Conceptld    fromConcept_id,

in CodeSystemld    toCodeSystem_id,

in string    map_name

)

raises ( UnknownCodeSystem,

UnknownConceptCode,

MappingNotAvailable,

UnknovmMapName,

AmbiguousMapRequest,

MapNameSourceMismatch,

MapNameTargetMismatch,

UnableToMap,

UnexpectedError);

/» HL7SpecBlockEnd V )7

‘ UnknownCodeSystem

к

UnknownConceptCode

MappingNotAvailable

‘ UnableToMap * UnknownMapName

MapSourceMismatch —

MapTargetMismatch —

AmbiguousMapRequest -

UnexpectedError

109

ГОСТ Р HCO/HL7 27951—2016

*    Службы времени исполнения

*    Службы времени исполнения предназначены

‘ для среды времени исполнения (производственной среды)

k*wk*kk*wk*kk*wk*kk*wk*kk*wk*kk*wk*kk*wk*kkk**-kw**»**»»*** J

/* HL7Spec81ock:runtime */

interface Runtime : Identification (

/* HL7Spec81ockEndElipsis »/

/* HL7SpecBlock:getSupportedCodeSystems */

/* getSupportedCodeSystems — возвратить список систем кодирования и их

*    версий, поддерживаемых данной службой *

‘ timeout    — время ожидания завершения операции в миллисекундах

‘    (0 — не ограничено)

*    sizeLimit    — максимальное число возвращаемых элементов

*    (0 — не ограничено)

*

‘ Возвращаемое значение — список поддерживаемых систем кодирования

к

‘ Примечание — Если указан параметр ai2eLimit и число записей в возвращенном

*    списке совладает с его значением, то клиент должен предполагать, что

*    список не полон

к

*    Исключения:

*    TimeoutError — превышен лимит времени

-/

CodeSystemldAndVersionsList    getSupportedCodeSysterns<

in long    timeout,

in long    sizeLimit

raises { TimeoutError,

UnexpectedError);

/* HL7SpecBlockEnd */

/* HL7SpecBlock:lookupCodeSystemInfo */

/‘ lookupCodeSystemlnfo — возвратить детальное описание системы кодирования ‘ codeSystem_id — ОИД запрашиваемой системы кодирования

*    codeSystem_name — имя запрашиваемой системы кодирования

*

‘ Идентификатор codeSystem_id либо имя code£ystem_name должны к присутствовать. Если имя присутствует, оно должно соответствовать

*    идентификатору, иначе генерируется исключение

к

*    Возвращаемые данные — детальное описание системы кодирования

к

*    Исключения:

*    UnknownCodeSystem — если система кодирования неизвестна службе

*    CodeSystemNameldMismatch — имя систеш кодирования не соответствует

*    ее идентификатору

•7

CodeSystemlnfo lookupCodeSystemlnfo( in CodeSystemld    codeSystem_id,

in CodeSystemName    codeSystem_name

)

raises (UnknownCodeSystem,

110

ГОСТ Р HCO/HL7 27951—2016

CodeSystemNameldMismatch, UnexpectedError);

/* HL7SpecBlockEnd *7 /* HL7SpecBlock:isConceptIdValid •/

/* isConceptldValid — определить, является ли данный код понятия

*    действительный в системе кодирования

*    concept_id    — идентификатор системы кодирования / проверяемый код

*    activeConceptsOnly — TRUE указывает, что понятие должно иыеть статус

*    активного, FALSE указывает, что оно может иыеть

*    любой статус

fr

*    Возвращаемое значение — TRUE, если код существует в текущей системе

*    кодирования и соответствует критерию статуса

к

*    Исключения:

*    UnknownCodeSystem — система кодирования не поддерживается службой */

boolean isConceptldValid( in Conceptld    concepc_id,

in boolean    activeConceptsOnly

>

raises (UnknownCodeSystem, UnexpectedError);

/- HL7SpecBlockEnd */

/* HL7SpecBlock:lookupDesignation *7

/* lookupDesignation — просмотреть предпочтительное обозначение и

*    ассоциированный язык заданного кода для заданного языка и контекста

*

* code    — просматриваемый код

* language — предпочтительный язык вывода

к

*    Возвращаемое значение — предпочительное обозначение на этом языке в этом

*    контексте

к

*    Исключения:

*    UnknownLanguageCode — переданный код языка не действителен для системы

*    кодирования

*    UnknownCodeSystem — система кодирования не поддерживается службой

*    UnknownConceptCode — код понятия не действителен для системы

*    кодирования

*    NoApplicableDesignationFound — обозначение, соответствующее требуемому

*    языку, не найдено

к

*/

StringAndLanguage lookupDesignation(

in Conceptld    concept_id,

in LanguageCode    language_code

)

raises (UnknownLanguageCode, UnknownCodeSystem, UnknownConceptCode, NoApplicableDesignationFound, UnexpectedError);

111

ГОСТ Р HCO/HL7 27951—2016

HL7SpecBlockEnd Ч /‘ HL7SpecBlock:areCodesRelated */

/‘ areCodesRelated    —

*    с ode S уs tem_i d    —

к

‘ source_code    —

*    target_code    —

relationship_code —

‘ relationship_qualifiers

*    directRelationsOnly —

к

к

к

определить, связаны ли два кода понятий

идентификатор системы кодирования родительского и

дочернего кода

источник отношения

цель отношения

запрашиваемое отношение

— квалификаторы отношения, если имеется

TRUE указывает, что проверяются только

непосредственные отношения родительский — дочерний

коп, FALSE указывает, что учитываются также

косвенные, транзитивные связи

*    Возвращаемое значение - TRUE: система кодирования содержит прямое или

*    косвенное    отношение    между родительским    и    дочерним

*    кодом

*    FALSE: система    кодирования не    содержит    такое

*    отношение

к

‘ Исключения:

*    UnknownConceptCode — родительский или дочерний код не действителен для

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

‘ UnknownCodeSystem — система кодирования не поддерживается службой

*    UnknownRelation — код отношения не действителен для системы

*    кодирования

*    UnknownRelacionshipQualifier — квалификатор отношения не действителен для

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

к

Ч

boolean areCodesRelaced( in CodeSyscemld    codeSystem_id,

in ConcepcCode    source_code,

in ConcepcCode    carget_code,

in RelacionshipCode    relacionship_code,

in RelationOualifierCodeList relationQualifiers, in boolean    direccRelacionsOnly

)

raises (UnknownConcepcCode,

UnknownCodeSystern,

UnknownRelacionshipCode,

UnknownRe lac ionQual ifier,

UnexpectedError);

/* HL7SpecBlockEnd */

/* HL7SpecBlock:browser •/

^•AVfrA«*AVfrAv*AV*A»4A**A«*AV*A*AAV*A«*AVfrA«*AVfrA

‘    Интерфейс обозревателя    *

interface Browser : Identification(

/* HL7SpecBlockEndElipsis */ 112

ГОСТ Р HCO/HL7 27951—2016

/* HL7SpecBlock:browserSupport */

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

*/

MacchAlgorithmCodeList    getSupporcedMatchAlgorithmsО raises

(UnexpectedError);

getSupporcedCodeSysterns — возвратить список систем кодирования и их

‘    версий, поддерживаемых данной службой

*

*    timeout    — время ожидания завершения операции в миллисекундах

*    (0 — не ограничено)

‘ si2eLimit    — максимальное число возвращаемых элементов

*    (0 — не ограничено)

*

*    Возвращаемое значение — список систем кодирования

*    Примечание — Если указан параметр si2eLimit и число записей в возвращенном

*    списке совладает с его значением, то клиент должен предполагать, что

*    список не полон

*

*    Исключения:

*    TimeoutError — превышен лимит времени

•7

CodeSystemldAndVersionsList    getSupportedCodeSystems 4

in long    timeout,

in long    sizeLimit)

raises {TimeoutError,

UnexpectedError);

/* HL7SpecBlockEnd *7

/* HL7SpecBlock:lookupConceptCodesByDesignation */

/* lookupConceptCodesByDesignation — возвратить коды понятий, обозначения

которых совпадают с образцом

—    запрашиваемая система кодирования

—    искомый образец. Формат зависит от алгоритма совпадения. Пустая строка означает возвращение всех имен

—    код алгоритма совпадения

—    фильтр языка. Если присутствует, то ведется поиск обозначений / описаний только на этом языке (ло умолчанию поиск ведется на всех языках)

—    TRUE указывает, что рассматриваются только активные коды

FALSE означает все статусы (Ло умолчанию TRUE)

—    время ожидания завершения операции в миллисекундах (О — не ограничено)

—    максимальное число возвращаемых элементов (О — не ограничено)

*    Возвращаемое значение - список кодов понятий, удовлетворяющий заданным

‘    критерям поиска

к

codeSystem_id

matchText

matchAlgorithm_code

language_code

activeConceptsOnly

timeout

si2eLimit

113

ГОСТ Р ИСО/Ж.7 27951—2016

‘ Примечание — Если указан параметр sizeLiinic и число записей в возвращенной

*    списке совпадает с его значением, то клиент должен предполагать, что

*    список не полон

*

‘ Исключения:

*    UnknownCodeSystem ‘ BadlyFormedMatchText

*    UnknownLanguageCode

*    TimeoutError ‘ UnknownMatchAlgorithm

—    система кодирования не поддерживается службой

—    искомый образец не может быть разобран

—    код языка не поддерживается службой

—    превышен лимит времени

—    алгоритм совпадения не поддерживается службой

*/

ConceptldList lookupConceptCodesByDesignation <

in CodeSystemld    codeSystem_id,

in string    matchText,

in MatchAlgorithmCode    matchAlgorithm_code,

in LanguageCode    language_code,

in boolean    activeConceptsOnly,

in long    timeout,

in long    sizeLimit

raises (UnknownCodeSystem, BadlyFormedMatchText, UnknownMatchAlgorithm, UnknownLanguageCode, TimeoutError, UnexpeccedError);

/ь HL7SpecBlockEnd */

/* HL7SpecBlock:lookupConceptCodesByProperty •/

/*■

*

к

к

к

к

к

к

к

к

к

к

к

к

к

к

к

к

к

lookupConceptCodesByProperty - возвратить коды понятий, чьи свойства

codeSystem_id matchText

matchAlgor i thm_code language_code

activeConceptsOnly

properties

mimeTypes

timeout

sizeLimit

совпадает с заданным образцом

—    запрашиваемая система кодирования

—    искомый образец. Формат зависит от алгоритма совпадения. Пустая строка означает возвращение всех имен

—    код алгоритма совпадения

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

(по умолчанию поиск ведется на всех языках)

—    TRUE указывает, что рассматриваются только активные коды. FALSE означает все статусы (По умолчанию TRUE)

—    список кодов свойств, участвующих в поиске (По умолчанию все свойства)

—    ищутся только свойства с данными типами среды MIKE (По умолчанию — все типы MIKE)

—    время ожидания завершения операции 8 миллисекундах (О — не ограничено)

—    максимальное число возвращаемых элементов (О — не ограничено)

* Возвращаемое значение — список кодов понятий, свойства которых совпадают

с заданными критериями поиска

к

114

ГОСТ Р HCO/HL7 27951—2016

‘ Примечание — Если указан параметр sizeLiinic и число записей в возвращенной

*    списке совпадает с его значением, то клиент должен предполагать, что

*    список не полон

*

k

*    Исключения:

*    UnknownCodeSystem

*    BadlyFormedMatchText

*

‘ UnknownLanguageCode * UnknownPropertyCode ‘ UnknownMimeTypeCode ‘ TimeoutError ‘ UnknownMatchAlgorithm

k

—    система кодирования не поддерживается службой

—    синтаксис искомого образа не соответствует алгоритму совпадения

—    код языка не поддерживается службой

—    код свойства не поддерживается службой

—    код типа среды MIME не распознан службой

—    превышен лимит времени

—    алгоритм совпадения не поддерживается службой

*7

/*■

ConceptIdLisc lookupConceptCodes8yProperty in CodeSystemld    codeSystem_id,

{

in string

in MatchAlgorithmCode in LanguageCode in boolean

in PropertyCodeList    properties,

in MimeTypeCodeList in long in long )

matchText,

ma tchA1go rithm_code, language_code, activeConceptsOnly,

mimeTypes,

timeout,

sizeLimit

raises (UnknownCodeSystem,

BadlyFormedMatchText,

UnknownMatchAlgorithm,

UnknownLanguageCode,

UnknownPropertyCode,

UnknownMimeTypeCode,

TimeoutError,

UnexpectedError);

HL7SpecBlockEnd */

HL7SpecBlock:LookupCompleteCodedConcept "/

lookupDesignations — получить полное описание кода понятия

*    concept_id — идентификатор запрашиваемого понятия

к

*    Возвращаемое значение — полное описание понятия

к

*    Исключения:

* UnknownCodeSystem    — система кодирования не поддерживается службой

* UnknwonConceptCode    — код понятия не действителен в системе кодирования

Ч

CompleteCodedConceptDescription lookupCompleteCodedConcept ( in Conceptld concept_id

raises (UnknownCodeSystem, UnknownConceptCode, UnexpectedError);

/ь HL7SpecBlockEnd */

/* HL7SpecBlock:lookupDesignations */

115

ГОСТ Р ИСО/Ж.7 27951—2016

к

lookupDesignations — возвратить обозначения конкретного понятия,

совпадающие с заданными критериями

concept_id

matchText

matchAlgorithm_code

language_code

—    идентификатор системы кодирования и код понятия, чьи обозначения требуется найти

—    искомый образец. Формат зависит от алгоритма совпадения. Пустая строка означает возвращение всех имен

—    код алгоритма совпадения

—    если указан, совладения ищутся только в обозначениях на зтоы языке

*    Исключения!

‘ UnknownCodeSystem

к

‘ UnknownConceptCode " EadlyPormedMatchText

4

‘ UnknownLanguageCode

*    UnknownMatchAlgorithm

к

к

идентификатор системы кодирования, содержащийся в параметре concept_id, не распознан код понятия не распознан

синтаксис искомого образца не действителен для

алгоритма совпадения

код языка не поддерживается службой

алгоритм совпадения не поддерживается службой

ConceptDesignationList lookupDesignations { in Conceptld    concept_id,

in string    matchText,

in MatchAlgorithmCode matchAlgorithm_code, in LanguageCode language_code

)

raises

(UnknownCodeSystem, UnknownConceptCode, BadlyFormedMatchText, UnknownMatchAlgorithm, UnknownLanguageCode, UnexpectedError);

/" HL7SpecBlockEnd */

/‘ HL7SpecBlock:lookupProperties

/"

к

lookupProperties - возвратить свойства конкретного понятия, совпадающие с

заданными критериями

—    идентификатор системы кодирования и код понятия, чьи свойства требуется найти

—    если указан, ограничивает поиск этим списком свойств

—    искомый образец. Формат зависит от алгоритма совпадения. Пустая строка означает возвращение всех имен

—    код алгоритма совпадения

—    если указан, то возвращаются свойства только на этом языке

—    ограничивает поиск только свойствами, имеющими этот тип среды MIME

concept_id

properties

matchText

matchAlgorithm_code

language

mimeType

*    Исключения:

*    UnknownCodeSystem

‘ UnknownConceptCode

*    UnknownPropertyCode

—    система кодирования не поддерживается службой

—    код понятия не действителен в системе кодирования

—    один из кодов свойств не распознан

116

ГОСТ Р HCO/HL7 27951—2016

‘ BadlyFormedMatchText — синтаксис искомого образца не может Сыть разобран

*    UnknownLanguageCode — код языка не поддерживается службой

*    UnknownMimeTypeCode — один из кодов типа среды MIMS не распознан

*    UnknownMatchAlgorithm — алгоритм совпадения не поддерживается службой

к

*/

ConceptPropertyList lookupProperties (

in ConcepCld    concept_id,

in PropertyCodeList    properties,

in string    matchText,

in MatchAlgorithmCode RiatchAlgorithm_code, in LanguageCode language_code, in MimeTypeCodeList    mimeTypes

)

raises (UnknownCodeSystem,

Un knownConceptCode,

BadlyFormedMatchText,

UnknownLanguageCode,

UnknownPropertyCode,

UnknownMatchAlgorithm,

UnknownMimeTypeCode,

UnexpectedError);

/» HL7SpecBlockEnd "/

f* HL7SpecBlock:lookupCodeExpansion */

/‘ lookupCodeExpansion — возвратить список детей (или родителей! заданного

кода

—    система кодирования / стартовый код понятия Если код понятия опушен и указана только система кодирования, то возвратить все коды понятий, "корневые" для данного отношения

—    раскрываемое отношение

—    TRUE указывает направление от источника отношения к цели, FALSE — от цели к источнику

—    TRUE указывает, что возвращаются только непосредственно связанные узлы. FALSE указывает, что возвращается полный транзитивный граф (если отношение транзитивно)

‘ designationLanguage_code — язык, используемый при возвращении обозначений

*    timeout    — время ожидания завершения операции в миллисекундах

*    (0 — не ограничено)

*    sizeLimit    — максимальное число возвращаемых элементов

*    (0 — не ограничено)

v

‘    Возвращаемое значение    — список раскрытых кодов

»

*    Примечание — Если указан параметр sizeLimit и число записей в возвращенном

*    списке совпадает с его значением, то клиент должен предполагать, что

*    список не полон

к

*    Исключения:

*    UnknownConceptCode — переданный код понятия не действителен для системы кодирования

*    UnknownCodeSystem — система кодирования не поддерживается службой

к

*    expandConcept_id

* к к

*    relationship

*    зои rceToTaгдеt

к

‘ directRelationsOnly

* к к

117

ГОСТ Р ИСО/Ж.7 27951—2016

*

к

к

к

к

ч

UnknownRelation — код отношения не действителен для системы

кодирования

UnknownLanguageCode — указанный язык не действителен для системы

кодирования

TimeoutError    - превышен лимит времени

RelatedCodeList lookupCodeExpansion {

in Conceptld    expandConcept_id,

in RelationshipCode    relationship_code,

in boolean    sourceToTarget,

in boolean    directRelationsOnly,

in LanguageCode    designationLanguage_code,

in long    timeout,

in long    sizeLimit

)

raises (UnknownConceptCode,

UnknownCodeSystern,

Un knownRelac ionshipCode, UnknownLanguageCode,

TimeoutError,

UnexpectedError);

/* HL7SpecBlockEnd 4

/‘ HL7SpecBlock:expandCodeExpansionContext *7

/* expandCodeExpansionContext — раскрыть далее результаты предшествующего ‘    вызова метода lookupCodeExpansion

* contextToExpand - контекст узла из предыдущего сеанса раскрытия кода

к

‘    Возвращаемое значение    — список раскрытых кодов

*    Примечание — Если указан параметр sizeLimit и число записей в возвращенном

*    списке совпадает с его значением, то клиент должен предполагать, что

*    список не полон.

к

*    Исключения:

‘ InvalidExpansionContext — контекст раскрытия не действителен или его срок

*    действия истек

*    TimeoutError    — превышен лимит времени

Ч

RelatedCodeLisc expandCodeExpansionContext{

in ExpansionContext contextToExpand )

raises (InvalidExpansionContext, TimeoutError,

UnexpectedError);

)!

/" HL7SpecBlockEnd */

);

118

ГОСТ Р HCO/HL7 27951—2016

17 Описание API ОТС на языке WSDL

17.1 Описание API времени исполнения на уровне сообщений

Ниже приведено описание службы времени исполнения MessageRuntime на языке WSDL (файл MessageRuntime.wsdl):

<?xml version-"1.0" encoding-''UTF-8"7>

<!-- edited with XMLSpy v2013 spl () by n"iAMD (Ru-Board) —> <wsdl:definitions xmlns:apachesoap-"" xmlns:impl-"urn://hl7.org/CTSMAPI" xmlne:intf-"urn://hl7.org/CTSMAPI" xmlns:tns2»"urn://cts.hl7.org/types" xrolns:wsdl-"" xmlns:wsdlsoap-""

xmlns:xsd-"" targetNamespace-"urn://hl7.org/ CTSMAP1">

<wsdl:import namespace-"urn://cts.hi7.org/types" location-"MessageRuntime.wsdl#schema2.xsd"/>

<wsdl:import namespace-"urn://hl7.org/CTSMAPI" location-"MessageRuntime.wsdl#schema1.xsd"/>

<wsdl:types/>

<wsdl:message name-"UnknownMatchAlgorithm">

<wsdl:part name-"fault" element-"impl:fault2"/>

</wsdl:message>

<wsdl:message name-"NoApplicableDesignationFound">

<wsdl:part name-"fault" element-"impl:faultll"/>

</wsdl:message>

<wsdl:message name-"UnexpectedError">

<wsdl:part name-"fault" element-"impl:fault"/>

</wsdl:message>

<wsdl: message name-"UnrecognizedQualifter ">

<wsdl:part name-"fault" element-"impl:faultl3"/>

</wsdl:message>

<wsdl:message name-"getCTSVersionRequest”>

<w3dl:part name-"parameters" element-"impl:getCTSVersion"/>

</wsdl:message>

<wsdl:message name-"sub3umesRequest">

<wsdl:part name-"parameters" element-"impl:subsumes”/>

</wsdl:message>

<wsdl:message narae-"getSupportedVocabularyDomainsReque3t">

<wsdl:part name-"parameters" element-"impl:getSupportedVocabularyDomains"/> </wsdl:message>

<wsdl:message name-"UnknownConceptCode">

<wsdl:part name-"fault" element-"impl:fault9"/>

</wsdl:message>

<wsdl:message name-"getServiceOescriptionRequest">

<wsdl:part name-"parameters" element-"impl:getServiceDescription"/>

</wsdl:message>

<wsdl:message name-"subsumesResponse">

<wsdl:part name-"parameters" element-"impl:subsumesResponse"/>

</wsdl:message>

<wsdl:message name-"UnknownApplicationContextCode">

<wsdl:part name-"fault" element-"impl:faults"/>

</wsdl:message>

<wsdl:message name-”UnknownCodeSystern">

<wsdl:part name-"fault" element-"impl:fault7"/>

</wsdl:message>

119

ГОСТ Р HCO/HL7 27951—2016

<wsdl:message name-"getServiceVersionResponse">

<wsdl:part name-“parameters'* element-'1 imp 1 :getServiceVersionResponse"/> </wsdl:message>

<wsdl:message name-"getSupportedMatchAlgorithmsRequest">

<wsdl:part name-"parameters" element-"impl:getSupportedMatchAlgorithms"/> </wsdl:message>

<wsdl:message name-"UnableToTranslate">

<wsdl:part name-"fault" element-"impl2£ault8"/>

</wsdl:message>

<wsdl:message name-"lookupValueSetExpansionRequest">

<wsdl:part name-"parameters" element-"impl:lookupValue£etExpansion"/>

</wsdl:message>

<wsdl:message name-"getCTSVersionRespor.se">

<wsdl:part name-"parameters" element-"impltgetCTSVersionResponse"/>

</wsdl:message>

<wsdl:message name-"getServiceNameResponse">

<wsdl:part name-"parameters" element-"impl2getServiceNameResponse"/>

</wsdl:message>

<wsdl:message name-”translateCodeRequest">

<wsdl:part name-"parameters" elemenc-"impl:translateCode"/>

</wsdl:message>

<wsdl: message name-" areEquivalentRespor.se" >

<wsdl:part name-"parameters" element-"impl:areEquivalentResponse"/>

</wsdl:message>

<wsdl:message name-"getSupportedMatchAlgorithmsResponse">

<wsdl:part name-"parameters" element-"impl:getSupportedMatchAlgorithmsRespo nse"/>

</wsdl:message>

<wsdl:message name-"validateTranslationResponse">

<wsdl2part name-"parameters" element-"impl2validateTranslationResponse"/> </wsdl:message>

<wsdl:message name-"TimeoutError">

<wsdl:part name-"fault" element-"iropl2fault3"/>

</wsdl:messaqe>

<wsdl:message name-"getServiceNameRequest">

<wsdl:part name-"parameters" element-"impl:getServiceName"/>

</wsdl:message>

<wsdl2message name-"validateTranslationRequest">

<wsdl2part name-"parameters" element-"impl2validateTranslation"/>

</wsdl:message>

<wsdl2message name-"expandValueSetExpan3ionContextResponse">

<wsdl2part name-"parameters" element-"impl2expandValueSetExpansionContextRe sponse"/>

</wsdl:message>

<wsdl2message name-"getHL7ReleaseVersionResponse">

<wsdl:part name-"parameters" element-"impl2getHL7ReleaseVersionResponse"/> </wsdl:message>

<wsdl2message name-"expandValueSetExpansionContextRequest">

<wsdl:part name-"parameters" element-"impl:expandValueSetExpansionContext"/> </wsdl:message>

<wsdl2message name-"validateCodeRequest">

<wsdl:part name-"parameters" element-"impl:validateCode"/>

</wsdl:message>

<wsdl 2 message name-"Qua lifiersNotSuppor ted" >

<wsdl:part name-"fault" element-"impl:faultl4"/>

</wsdl:теззаде>

120

ГОСТ Р HCO/HL7 27951—2016

<wsdl: message name-"getServiceDescriptionResponse">

<wsdl:part name-“parameters'* element-'1 imp 1 2getServiceDescriptionResponse”/> </wsdl:message>

<wsdl:message name-"va1idateCodeResponse”>

<wsdl:part name-“parameters” element-"impl:validateCodeResponse”/>

</wsdl:message>

<wsdl:message name-"NoApplicableVa1ueSe t">

<wsdl:part name-“fault“ element-"impl2£ault6"/>

</wsdl:message>

<wsdl: message name-"fUlInDetailsResponse">

<wsdl:part name-“parameters” element-"impl:fil11nDetailsResponse”/>

</wsdl:message>

<wsdl:message name-"areEquivalentRequest">

<wsdl:part name-“parameters” element-“impl:areEquivalent”/>

</wsdl:message>

<wsdl:message name-"getSupportedVocabularyDomainsResponse">

<wsdl:part name-“parameters” element-"impltgetSupportedVocabularyOomainsRes ponse"/>

</w3dl:message>

<wsdl:message name-“getServiceVersionRequest“>

<wsdl2part name-“parameters” element-"impl:getServiceVersion”/>

</wsdl:message>

<wsdl2message name-”SubsumptionNotSupported”>

<wsdl:part name-"fault" element-"iropl2faultl2”/>

</wsdl:message>

<wsdl2message name-“BadlyFormedMatchText">

<wsdl:part name-"fault" element-"impl2faultl“/>

</wsdl:message>

<wsdl2message name-“InvalidExpansionContext“>

<wsdl:part name-“£ault“ element-"impl2faultl5”/>

</wsdl:message>

<wsdl:message name-“UnknownLanguage“>

<wsdl:part name-"fault" element-"iropl2faultl0”/>

</wsdl:message>

<wsdl:message name-"UnknownVocabularyDomain">

<wsdl:part name-"fault" element-"iropl2fault4"/>

</wsdl:message>

<wsdl2message name-“lookupValueSetExpan3ionResponse">

<wsdl:part name-"parameters” element-"impl2lookupValueSetExpansionResponse"/> </wsdl:message>

<wsdl2message name-”getHL7ReleaseVersionRequest“>

<wsdl2part name-“parameters” element-"impl:getHL7ReleaseVersion'V>

</wsdl:message>

<wsdl2message name-“translateCodeResponse“>

<wsdl:part name-“parameters” element-"impl:translateCodeResponse“/>

</wsdl:message>

<wsdl 2 message name-“fillInDetailsRequest">

<wsdl2part name-“parameters” element-"impl2fillInDetails“/>

</wsdl:message>

<wsdl:portType name-“RuntimeOperations“>

<wsdl2operation name-”getSupportedMatchAlgorithms“>

<wsdlt input name-”getSupportedMatchAlgorithmsRequest" message-“impl:getSupportedMatchAlgorithmsRequest"/>

<wsdl :output name-"getSupportedMatchAlgorithmsResponse" message-"impl:getSupportedMatchAlgorithmsResponse”/>

Cwsdl:fault name-”UnexpectedError” message-"impl:UnexpectedError"/>

121

ГОСТ Р HCO/HL7 27951—2016

</vsdl:operation>

<wsdl:operation name**"getSupportedVocabularyDomains">

<wsdl: input name-"getSupportedVocabularyDomainsRequest" message-"impl:getSupportedVocabularyDomainsRequest"/>

<wsdl:output name-"getSupportedVocabularyDomainsResponse" message-1'imp 1 :getSupportedVocabularyDoraainsResponse"/>

<vsdl:fault name-"UnknownMatchAlgorithm" message-"imp1:UnknownMatchAlgorithm"/>

<wsdl:fault name-"UnexpectedError" message»"irapl!UnexpectedError"/>

<wsdl:fault name-"BadlyFormedMatchText" message-"impl:BadlyFormedMatchText"/> <wsdl:fault name»"TimeoutError" message-"irapl!TiraeoutError"/>

</wsdl:operation>

<wsdl:operation name-"validateCode">

<wsdl:input name-"validateCodeRequest" message-"impl:validateCodeRequest"/> <wsdl:output name-"validateCodeResponse" message-"implrvaLidateCodeResponse"/>

<wsdl:fault name-"NoApplicableValueSet" теззаде-"impl:NoApplicableValueSet"/> <wsdl: fault nair.e-nUnexpectedError" message-" irapl :UnexpectedError"/>

<vsdl:fault name-"UnknownApplicationContextCode" message-"impl:UnknownApp 1icat ionContextCode"/>

<wsdl:fault name-"UnknownVocabularyDomain" message-"impl:UnknownVocabularyDomain"/>

</wsdl:operation>

<wsdlsoperation name-"validateTranslation">

<vsdl:input name-"validateTranslationRequest" message-"impl:validateTranslationRequest"/>

<wsdl:output name-"validateTranslationResponse" message-"impl:validateTranslationResponse"/>

<wsdl:fault natne-"UnexpectedError" message-"irapl:UnexpectedError"/>

<wsdl:fault name-"UnknownApplicationContextCode" message-"impl:UnknownApplicationContextCode"/>

cwsdl:fault name-"UnknownVocabularуDomain" message-"impl:UnknownVocabularyDomain"/>

</wsdl:operation>

<wsdl:operation name-"translateCode">

<wsdl:input name-"translateCcdeRequest" message-"impl:translateCodeRequest"/> <wsdlloutput name-”translateCodeResponse" message-"impl:translateCodeResponse"/>

<wsdl:fault name-"UnexpectedError" message-"irapl:UnexpectedError"/>

<vsdlifault name-"UnableToT‘ranslate" message-"impl:UnableToTranslate"/> <wsdl:fault name-"UnknownCodeSystem" message-"impl:UnknownCode£ystem"/> <wsdl:fault name-"UnknownApplicationContextCode" message-"impl:UnknownApplicationContextCode"/>

<wsdl:fault name-"UnknownVocabularyDomain" message-"impl:UnknownVocabularyDomain"/>

</wsdl:operation>

<wsdl:operation name-"filllnDetails">

<wsdl: input name-"fillInDetailsRequest" message-"impl :lillInDetailsRequest"/> <vsdl: output name- "filllnCetai IsResponse " message-"impl :fill InDetailsResponse"/>

<wsdl:fault name-"UnexpectedError" message-"irapl:UnexpectedError"/>

<wsdl:fault name»"Unknownlanguage" message-"irapl:UnknownLanguage"/>

<wsdl:fault name-"UnknownConceptCode" message-"irapl:UnknownConceptCode"/> <wsdl:fault name-"UnknownCodeEystern" message-"impliUnknownCodeSystem"/> <wsdl:fault name-"NoApplicableCesignationFound" message-"impl:NoApplicableDesignationFound"/>

122

ГОСТ Р HCO/HL7 27951—2016

</wsdl:operation>

<wsdl:operation name-"subsumes">

<wsdl: input name-"subsumesRequest" message*'"imp 1: subsumesRequest"/>

<wsdl {output name-"subsumesResponse" message-”impl :subsumesResponse"/> <wsdl:fault name-"UnexpectedError" message-"imp1:UnexpectedError"/>

<wsdl:fault name-"SubsumptionNotSupportedn message-''imp 1 :SubsumptionNotSupported"/>

<wsdl: fault name-"QualiiiersNot Supported" message-” imp 1 :QualifiersNotSupported"/>

<wsdl: fault name-"UnknownConceptCode" message■»"irapl :UnknownConceptCode"/> <wsdl: fault name-"UnrecognizedQualiiier" message-” imp 1 {UnrecognizedQualifier"/>

<wsdl: fault name-"UnknovrnCodeSystem" message-”imp 1 :UnknownCodeSystem"/> </wsdl:operation>

<wedl:operation name-"areEquivalent">

<wsdl:input name»"areEquivalentRequest" message-”impl:areEquivalentRequest"/> <wsdi:output name-"areEquivalentResponse" message-”impl:areEquivalentResponse"/>

<vsdl:fault name-”UnexpectedError” message-"impl:UnexpectedError"/>

<wsdl:fault name-"SubsumptionNotSupported" message-” imp 1 rSubsumptionNotSupported''/>

<wsdl: fault name-"QualifiersNotSupported" message-" imp 1 {QualifiersNotSupported"/>

<wsdl:fault name-"UnknownConceptCode" message-"imp1:UnknownConceptCode"/> <wsdl: fault name-"UnrecognizedQualiiier” message-" imp 1 :UnrecognizedQualifier"/>

<wsdl:fault name-"UnknownCodeSystern" message-"impl:UnknownCodeSystem"/> </wsdl:operation>

<wsdl {operation name-"lookupValueSetExpans ion ">

<wsdl{input name-"lookupValueSetExpansionRequest” message-"impl:lookupValueSetExpansionRequest"/>

<wsdl{output name«"lookupValueSetExpansionResponse" message-”impl{lookupValueSetExpansionResponse"/>

<wsdl{fault name-"NoApplicableValueSet" message-”impl{NoApplicableValues

et”/>

<wsdl{fault name-"UnexpectedError” message-"irapl:UnexpectedError"/>

<wsdl {fault name-"UnknownLanguage” message-"irapl:UnknownLanguage"/>

<wsdl:fault name-"TimeoutError" message-"irapl{TiraeoutError"/>

<wsdl{fault name-"UnknownApplicationContextCode" message-"impl:UnknownApplicationContextCode"/>

<wsdl:fault name-"UnknownVocabulaгуDomain" message-"impl{UnknownVocabularyDomain”/>

</wsdl:operation>

<wsdl{operation name-"expandValueSetExpansionContext">

<wsdl{input name-"expandValueSetExpansionContextRequest" message-"impl {expandValueSetExpansionContextRequest"/>

<wsdl{output name-"expandValueSetExpansionContextResponse" message-"impl{expandValueSetExpansionContextResponse"/>

<wsdl{fault name-"lnvalidExpansionContext" message-"impl:Invalid£xpansionContext"/>

<wsdl{fault name-"UnexpectedError" message-"irapl:UnexpectedError"/>

<wsdl:fault name-"TimeoutError" message-"irapl{TiraeoutError"/>

</w3dl{operation*

<wsdl{operation naroe-"getServiceName">

<wsdl:input name-"getServiceNameRequest" message-"impl:getServiceNameRequest"/>

123

ГОСТ Р HCO/HL7 27951—2016

<wsdl: output name-"getServiceNameResponse" message-"imp1:getServiceNameResponse"/>

<wsdl:fault name-HUnexpected£rror" message-"irapl:UnexpectedErtor"/>

</wsdl:operation>

<wsdl:operation name-"getServiceVersion">

<wsdl:input name-"getServiceVersionRequest" message-"imp1:getServiceVersionRequest"/>

<wsdl:output name-"getServiceVersionResponse" message-"imp1:getServiceVersionResponse"/>

<wsdl:fault name-"UnexpectedErrot“ message-"impl:UnexpectedError"/>

</vsdl:operation>

<wsdl:operation name-"getServiceDescription">

<wsdl:input name-"getServiceDescriptionRequest" message-"impl:getServiceDescriptionRequest"/>

<wsdl:output name*"getServiceDescriptionResponse" message-"impl:getServiceDescriptionResponsen/>

<wsdl:fault name-nUnexpectedEtror" message-"impl:UnexpectedErtot"/>

</wsdI:operation>

<wsdl:operation name-"getHL7ReleaseVersion">

<wsdl:input name-"getHL7ReleaseVersionRequest" message-"impl:getHL7ReleaseVersionRequest"/>

<wsdl:output name-"getHL7ReleaseVersionResponse" message-"impl:getHL7ReleaseVetsionResponse"/>

<wsdl:fault name-"UnexpectedError" message-"impl:UnexpectedError"/>

</wsdl:operation>

<wsdl:operation name-"getCTSVersion">

<wsdl:input name-"getCTSVersionRequest" message-"impl:ge tCTSVersionRequest“/> <wsdl:output name-"getCTSVersionResponse" message-"impl:getCTSVersionResponse”/>

<wsdl:fault name-"UnexpectedErfor" message-"impl:UnexpectedError"/>

</wsdl:operation>

</wsdlrportType>

<wsdl:binding name-"MessageRuntimeServiceSoapBinding" type-"impl:RuntimeOperations">

<wsdlsoap:binding style-"document" transport-" soap/http"/>

<wsdl:operation name-"getSupportedMatchAlgorithms">

Cvsdlsoap:operation soapAction-""/>

<wsdl:input name-"getSupportedMatchAlgorithmsRequest">

<v»sdlsoap:body use-"literal"/>

</wsdl:input>

<wsdl:output name-"getSupportedMatchAlgorithmsResponse">

<wsdlsoap:body use-"literal"/>

</wsdl:output>

<wsdl:fault name-"UnexpectedEtror">

<wsdlsoap:fault name-"Unexpected£rror" use-"literal"/>

</wsdl:fault>

</wsdl:operation>

<wsdl:operation name-"getSupportedVocabularyOomains">

<wsdlsoap:operation soapAction-""/>

<wsdl:input name-"getSupportedVocabularyDomainsRequest”>

<wsdlsoap:body use-"literal"/>

</wsdl:input>

<wsdl:output name-"getSupportedVocabularyDomainsResponse">

<wsdlsoap:body use-"literal"/>

</wsdl:output>

<wsdl:fault name-nUnknownMatchAlgorithm">

124

ГОСТ Р HCO/HL7 27951—2016

<wsdlsoap: fault name-"UnknownMatchAlgorithm" use»"literal"/>

</wsdl:fault»

<wsdl:fault name»"UnexpectedError">

<wsdlsoap: fault name-"UnexpectedError" use»"literal"/>

</wsdl:fault>

<wsdl: fault name^BadlyFormedMatchText"»

<wsdlsoap: fault name»"BadlyFormedMatchText" use»"literal"/>

</wsdl:fault>

<wsdl:fault name-"TimeoutError">

<wsdlsoap:fault name»"TimeoutError" use-"literal"/»

</wsdl:fault»

</wsdl:operation»

<wsdl:operation name»"validateCode"»

<wsdlsoap:operation soapAction»""/»

<wsdl:input name»" va 1idateCode Request" >

<wsdlsoap:body use»"literal"/>

</wsdl:input»

<wsdi:output name»"validateCodeResponse"»

<wsdlsoap:body use-"literal"/>

</wsdl:output»

<vsdl:fault name-"NoApplicableVaLueSet"»

<wsdlsoap:fault name»"NoApplicableValueSet" use»"Literal"/»

</wsdl:fault»

<wsdl:fault name»NUnexpectedError">

<wsdlsoap:fault name-"UnexpectedError" use»"literal"/>

</wsdl:fault»

<wsdl:fault name-"UnknownApplicationContextCodeN>

<wsdlsoap:fault name-"UnknownApplicationContextCode" use-"literal"/» </wsdl:fault»

<wsdl:fault name-”UnknownVocabularyDomain"»

<wsdlsoap:fault name»"UnknownVocabularyDomain" use»"literal"/»

</wsdl:fault»

</wsdl:operation»

<w3dl{operation name»"validateTranslation"»

<wsdlsoap{operation soapAction»""/»

<wsdl:input name-nvalidateTranslationRequest"»

<wsdlsoap:body use-"literal"/>

</wsdl:input»

<wsdl:output name»"validateTranslationResponse"»

<wsdlsoap:body use»"literal"/>

</wsdl:output>

<wsdl:fault name»"UnexpectedError"»

<wsdlsoap:fault name»"UnexpectedError" use»"literal"/»

</wsdl:fault»

<wsdl:fault name-"UnknownApplicationContextCoden»

<wsdlsoap:fault name»"UnknownApplicationContextCode" use»"literal"/» </wsdl:fault»

<wsdl: fault name-"UnknovmVocabularyDofnain"»

<wsdlsoap:fault name»"UnknownVocabularyDomain" use»"literal"/»

</wsdl:fault»

</wsdl:operation»

<wsdl:operation name»"translateCode"»

<wsdlsoap:operation soapAction»""/»

<wsdl:input name»"translateCodeRequest"»

<wsdlsoap:body use-"literal"/»

</wsdl:input»

<wsdltoutput name»”translateCodeResponse">

125

ГОСТ Р HCO/HL7 27951—2016

<wsdlsoap:body use»nliteral"/>

</wsdl:output>

<wsdl:fault name*NUnexpectedError">

<wsdlsoap: fault name-"UnexpectedError" use**',literal"/>

</wsdl:fault>

<wsdl: fault name-'*UnableToTranslate,,>

<wsdlsoap: fault name^UnableToTranslate" use»"literal"/>

</wsdl:fault>

<wsdl:fault name-"UnknownCodeSystem">

<wsdlsoap: fault nafne»"UnknownCodeSystem" use*"literal"/>

</wsdl:fault>

<wsdl:fault name»"UnknownApplicationContextCode">

<wsdlsoap:fault name»"UnknownApplicationContextCode" use»"literal"/> </wsdl:fault>

<wsdl: fault name»"UnknownVocabularyDotnain*>

<wsdlsoap:fault nanie»"UnknownVocabularyDomain" use*"literal"/>

</wsdl:fault>

</wsdl:operation>

<wsdl:operation name*NfillInDetails">

<wsdlsoap:operation soapAction»""/>

<vsdl: input name»"fillInDetailsRequest">

<wsdlsoap:body use»'*literal"/>

</wsdl:input>

<wsdl:output name»"fillZnDetailsResponse">

<wsdlsoap:body use»"literal"/>

</wsdl:output>

<wsdl:fault name»NUnexpectedError">

<wsdlsoap: fault natne»"UnexpectedError" use»"literal"/>

</wsdl:fault>

<wsdl:fault name*”Unknownl.anguage">

<wsdlsoap:fault name»"UnknownLanguageN use»nliteral"/>

</wsdl:fault>

<wsdl:fault name»nUnknownConceptCode">

<vrsdlsoap:fault name»"UnknownConceptCode" use«'*literal"/>

</wsdl:fault>

<wsdl: fault name-'*UnknownCodeSystem,’>

<wsdlsoap: fault name»"UnknownCodeSystem" use-"Literal."/>

</wsdl:fault>

<wsdl:fault name*"NoApplicableDesignationFound">

cwsdlsoap: fault name-"NoApplicableDesignationFound" use»"literal'*/> </wsdl:fault>

</wsdlioperation>

<wsdl:operation name»nsubsumes">

Cwsdlsoap:operation soapAction-""/>

<wsdl:input name-nsubsumesRequest">

<wsdlsoap:body use-"literal"/>

</wsdl:input>

Cwsdl routput name-"sub3umesResponse,’>

<wsdlsoap:body use-^literal"/»

</wsdl:output>

<wsdl г fault name^UnexpectedError'^

<wsdlsoap:fault name»"UnexpectedErrorn use»nliteral"/>

</wsdl:fault>

<wsdl:fault name»"SubsumptionNotSupported">

<wsdlsoap:fault name-"SubsumptionNotSupported" use»"literal"/>

</wsdl:fault>

<wsdl: fault name-,,QualifiersNotSupported">

126

ГОСТ Р HCO/HL7 27951—2016

<wsdlsoap: fault name-"Qualifier3NotSupported" use-nliteral"/> </wsdl:fault>

<wsdl:fault name-"UnknownConceptCode">

<wsdlsoap: fault name-"UnknownConceptCode'' use-''literal"/> </wsdl:fault>

<wsdl: fault name-"UnrecognizedOualifier">

<wsdlsoap: fault name-"UnrecognizedQualifier" use-"literal"/> </wsdl:fault>

<wsdl: fault name-"Unkn©wnCodeSy9tem">

<wsdlsoap:fault name-"UnknownCodeSystem“ use-"literal"/>

</wsdl:fault>

</wsdl:operation>

<w3dl:operation name-"areEquivalent">

<wsdlsoap:operation 3oapAction-"'V>

<wsdl:input name-nare£quivalentRequestn>

<wsdlsoap:body use-"literal"/>

</Msdl:input>

<wsdi:output name-"areEquivalentResponse">

<wsdlsoap:body use-nliteral"/>

</wsdl:output>

<wsdl: fault name-"UnexpectedError,,>

<wsdlsoap:fault name-"UnexpectedError" use-nliteral"/>

</wsdl:fault>

<wsdl: fault name-'*SubsumptionNotSupportedn>

<wsdlsoap:fault name-"SubsumptionHotSupported" use-"literal"/> </wsdl:fault>

<wsdl: fault name-"OualifiersNotSupported">

<wsdlsoap:fault name-"QualifiersNotSupported" use-nliteral"/> </wsdl:fault>

<wsdl:fault name-nUnknownConceptCode">

<wsdlsoap:fault name-"UnknownConceptCode" use-'*literal"/> </wsdl:fault>

<wsdl: fault name-"UnrecognizedOualifier">

<wsdlsoap:fault name-"UnrecognizedQualifter" use-"litetal"/> </wsdl:fault>

<wsdl:fault name-'*UnknownCodeSy9tem">

<wsdlsoap:fault name-"UnknownCodeSystem" use-"literal''/>

</wsdl:fault>

</wsdl:operat ion>

<wsdl:operation name-"lookupValueSetExpansion">

<wsdlsoap:operation soapAction-"'V>

<wsdl: input name-,’lookupValueSetExpan3ionRequest">

<wsdlsoap:body use-nliteral"/>

</wsdl:input>

<wsdl: output name-"lookupValueSetExpansionResponse',> <wsdlsoap:body use-nliteral"/>

</wsdl:output>

<wsdl:fault name-"NoApplicableValue£etM>

<Msdlsoap: fault name-"NoApplicableValueSet" use-"literal''/> </wsdl:fault>

<wsdl:fault name-HUnexpectedError">

Cwsdlsoap:fault name-"UnexpectedError” use-nliteral"/>

</wsdl:fault>

<wsdl:fault name-NUnknownLanguage">

<wsdlsoap:fault name-"UnknownLanguage” use-nliteral"/>

</wsdl:fault>

127

ГОСТ Р HCO/HL7 27951—2016

<wsdl:fault name»,,TimeoutError">

<wsdlsoap: fault nante*>"Ti(neoutError" use»"literal"/>

</wsdl:fault>

<wsdl:fault name“"UnknownApplicationContextCode">

<wsdlsoap: fault nante»"UnknownApplicationContextCode" use»"literal"/> </wsdl:fault>

<wsdl:fault name»nUnknownVocabularyDomainn>

<wsdlsoap: fault nante»"UnknownVocabularyDomain" use»"literal"/>

</wsdl:fault>

</wsdl:operation>

<wsdl:operation name»"expandValueSetExpansionContext">

<wsdlsoap:operation soapAction»""/>

<wsdl:input name»"expandValueSetExpansionContextRequest"> <wsdlsoap:body use»"literal"/>

</wsdl:input>

<wsdl:output name»"expandValueSetExpansionContextResponse"> <vtsdlsoap:body use»"literal"/>

</wsdl:output>

<wsdl: fault name»"lnvalidExpansionContext'*>

<wsdlsoap: fault nante»"InvalidExpansionContext" use»"literal"/>

</wsdl:fault>

<wsdl:fault name»nUnexpectedError">

<wsdlsoap:fault name»"UnexpectedError" use»"literal"/>

</wsdl:fault>

<wsdl: fault name“'*TimeoutError ">

<wsdlsoap: fault nante»"Ti(neoutError" use»"literal'V>

</wsdl:fault>

</wsdl:operation>

<wsdl:operation name»"getServiceHame">

<wsdlsoap:operation soapAction»""/>

<wsdl: input name»,,getServiceName Request ">

<wsdlsoap:body use»"literal"/>

</wsdl:input>

<wsdl: output name»"getServiceNanteResponsen>

<wsdlsoap:body use»l*literal"/>

</wsdl:output>

<wsdl:fault name»"UnexpectedError">

<wsdlsoap: fault name»"UnexpectedError" use»nliteral"/>

</wsdl:fault>

</wsdl:operation>

<wsdl:operation name»"getServiceVersion’•>

<wsdlsoap:operation soapAction»""/>

<wsdl:input name»ngetServiceVersionRequest">

<wsdlsoap:body use»"literal"/>

</wsdl:input>

<wsdl:output name»"getServiceVersionResponseN>

<wsdlsoap:body use»"literal"/>

</wsdl:output>

<wsdl:fault name»"UnexpectedError”>

<wsdlsoap:fault nante»"Unexpected£rrorn use»nliteral"/>

</wsdl:fault>

</wsdl:operation>

<wsdl:operation паше»"getServiceDescription">

<wsdlsoap:operation soapAction»""/>

<wsdl:input name»"getServiceDescriptionRequest">

<wsdlsoap:body use»"literal"/>

126

ГОСТ Р HCO/HL7 27951—2016

</wsdl:input>

<wsdl:output name»"getServiceDescriptionResponse">

<wsdlsoap:body use-"literal"/>

</wsdl:output>

<wsdl:fault name-"UnexpectedError">

<wsdlsoap: fault name-"UnexpectedError" use~"literal"/>

</wsdl:fault>

</vsdl:operation>

<wsdl:operation name-"getHL7ReleaseVersion"> cvsdlsoap:operation soapAction-""/>

<vsdl:input name-"getHL7ReleaseVersionRequest">

<wsdlsoap:body use-"literal"/>

</wsdl:input>

cvsdl:output name»"getHL7ReleaseVersionResponse">

<wsdlsoap:body use-"literal"/>

</wsdl:output>

<wsdi:fault name«"UnexpectedError">

<wsdlsoap:fault name-"UnexpectedError" use«"literal"/>

</wsdl:fault>

</vsdl:operat ion>

<wsdl:operation name-"getCTSVersion">

<wsdlsoap:operation soapAction-""/>

<wsdl:input name-"getCTSVersionRequest">

<wsdlsoap:body use-"literal"/>

</wsdl:input>

<wsdl:output name»"getCTSVersionResponse">

<wsdlsoap:body use-"literal"/>

</wsdl:output>

<wsdl:fault name-"UnexpectedError">

<wsdlsoap: fault name-"UnexpectedError" use«"literal"/>

</wsdl:fault>

</vsdl:operation>

</wsdl:binding>

<wsdl:service name-"RuntimeOperationsService">

<wsdl:port name-"MessageRuntimeService" binding-"impl:MessageRuntimeService SoapBinding">

<wsdlsoap:address location-" MessageRuntimeService"/>

</vsdl:port>

</wsdl:service>

<!—WSDL created by Apache Axis version: 1.2RC2 Built on Nov 16, 2004 {12:19:44 EST)—>

</wsdl:definitions>

17.2 Описание API обозревателя на уровне сообщений

Ниже приведено описание службы обозревателя MessageBrowser на языке WSDL (файл Message Browser, wsdl):

<?xml version-"l .0" encoding-"UTF-6"?>

<wsdl:definitions targetNamespace-"urn://Ы7.org/CTSMAPl"

xml ns: apachesoap-"http: / /xml. apache. org/xml-soap" xml ns: impl*"urn: //Ы7. org/ CTSMAP1" xmlns:intf-"urn://hl7.org/CTSMAPI" xmlns:tns2-"urn://cts.hl7.org/types" xmlns:wsdl-" xmlns:wsdlsoap-". xmlsoap.org/wsdl/soap/" xmlns:xsd-"">

<!—WSDL created by Apache Axis version: 1.2RC2 Built on Nov 16, 2004 (12:19:44 EST)—>

129

ГОСТ Р HCO/HL7 27951—2016

<wsdl:types>

<schema elementFormDefault*"qualified" targetNamespace-"urn: //hl7.org/CT6MAPI" xmlns*"httpj//">

<import namespace»"urn://cts.hi7.org/types"/>

<element name-"getSupportedMatchAlgorithms">

<    comp1exType/>

</element>

<element name»"qetSupportedMatchAlgorithmsResponse”>

<complexType>

<sequence>

<element maxOccurs*"unbounded” nanie~"get£upportedMatchAlgorithmsReturn" type-”tns2:ST"/>

</sequence>

</complexType>

</element>

<complexType name«"UnexpectedError">

<sequence>

<element name^possible^ause" nillable-"true1' type*»"tns2:ST"/> </aequence>

</comp1exType>

<element name-^fault" type*»"irapl iUnexpected£rror"/>

<element name*"getSupportedAttributes'^

<comp1exType>

<sequertce>

<element name*"inO" type*"tns2:ST"/>

<element name-”inl" type*"tns2:ST"/>

<element name*"in2" type»"xsd:int"/>

<element name*"in3" type*"xsd:int"/>

</sequence>

</complexType>

</element>

<element name*"getSupportedAttributesResponse">

<    comple xType >

<sequence>

<element maxOccurs*"unbounded" name-"getSupportedAtcributesReturn" type-"impl:RIMCodedAttribute"/>

</sequence>

</complexType>

</element>

<complexType name*"RIMAttribute!d">

<sequence>

<element name-"model_id" nillable-"true1' type-"tns2 :ST"/>

<element name*"class_name" nillable«”true" type“”tns2:ST"/>

<element name*,,attribute_name" nillable^true1' type«"tns2:ST"/> </sequence>

</comp1exType>

<complexType name-"RIMCodedAttribute"»

<sequence>

<element name*"RIMAttribute_id” nillable-"true" type*"impl:RIMAttributeId"/>

<element name*"dataType_code" nillable*"true'* type*”tns2 :ST"/>

<element name*"codingStrength_code" nillable*"true" type*''tns2 tST"/> <element name»"vocabularyDomain_nante" nillable*"true" type*"tns2:ST"/> </sequence>

</comp1e xType>

<complexType name*"BadlyFormedMatchText">

130

ГОСТ Р HCO/HL7 27951—2016

<sequence>

<element name»"matchText" nillable“"true" type**"tn32:ST"/>

</sequence>

</complexType>

<element name“"faultl" type*>"impl!BadlyFormedMatchText"/>

<complexType name*»"UnknovnMatchAlgorithm">

<sequence>

<element name»"matchAlgorithm_code" nillable-"true" type-"tns2:ST"/> </sequence>

</complexType>

<element name“"fault2" type*"impl:UnknovnMatchAlgorithm"/>

<complexType name*»"TimeoutError">

<sequence/>

</comp1exType>

<element name«"fault3" type“,,itnpl:TimeoutError,,/>

<elament name-"getSupportedVocabularyDomains">

<complexType>

<sequence>

<element name-"inO" type-"tns2:ST"/>

<elament name-”ini" type*"tns2:ST"/>

<element name-"in2" type*"xsdiint"/>

<element name-"in3" type-"xsd:int"/>

</sequence>

</complexType>

</element>

<element name»"getSuppo£tedVocabularyDomainsResponse">

<complexType>

<sequence>

<element maxOccurs-"unbounded" name»"get£upportedVocabularyDomainsReturn" type-"tns2:ST"/>

</sequence>

</complexType>

</element>

<element name*»"get$upportedValueSets">

<comp1e xType>

<sequence>

<element name-"inO" type-"tns2:ST"/>

<element name-"ini" type*"tns2:ST"/>

<element name~"in2" type*"xsdiint"/>

<element name-"in3" type-"xsd:int"/>

</sequence>

</complexType>

</element>

<element name»"qetSupportedValueSetsResponse">

<complexType>

<sequence>

<element maxOccurs-"unbounded" nante-"getSupportedValueSetsRetutrn" type-"im pi:ValueSetCescriptor"/>

</sequence>

</complexType>

</element>

<complexType name-"ValueSetDescriptor">

<sequence>

<element name»"valueSet_id" nillable-"true" type*»"tns2 sUID"/>

<element name»>"valueSet_name" nillable«*"true" type-"tns2 tST"/>

</sequence>

131

ГОСТ Р ИСО/Ж.7 27951—2016

</comp1ехТуре»

«element name-"getSupportedCodeSysterns"»

«complexType»

«sequence»

«element name-"inO" type-"tns2:£T"/>

«element name-"inl" type-"tns2:ST"/>

«element name-"in2" type-"xsd:int"/>

«element name-"in3" type-"xsdiint"/>

«/sequence»

«/complexType»

«/element»

«element narae-"getSupportedCodeSystemsResponsen»

<comp1exType>

«sequence»

«element maxOccurs-"unbounded” name-"getSupportedCodeSystemsReturn" type-" impl:CodeSystemDescriptor"/»

«/sequence»

«/complexType»

«/element»

«complexType name-"ArrayOf_tns2_ST">

«sequence»

«element maxOccurs-"unbounded" minOccurs-"0" name-“item" type»"tns2!ST"/> «/sequence»

«/complexType»

«complexType name-"CodeSystemDescriptor">

«sequence»

«element name-"codeSystem_id" nillable-"true" type-"tns2 tUID"/»

«element name-"codeSystem_name" nillable-^true" type-"tns2:ST"/>

«element name-"copyright" nillable-"true" type-"tns2:ST"/>

«element name-"availableReleases" nillable-"true" type-"impl:ArrayOf_tns2_ST"/» «/sequence»

</complexType >

«element name-"lookupVocabularyDomain"»

« comp1e xType»

«sequence»

«element name-”inO" type-'*tns2:ST"/>

«/sequence»

«/complexType»

«/element»

«element name-"lookupVocabularyDomainResponse"»

< comp1e xType >

«sequence»

«element name-”lookupVocabularyDomainReturn" type-"impl:VocabularyDomainDe scription"/»

«/sequence»

«/complexType»

«/element»

«complexType name-"ArrayOfRIMCodedAttribute">

«sequence»

«element maxOccurs-"unbounded" min0ccurs-"0" name-"item" type-"impl:RlMCodedAttribute"/>

«/sequence»

«/complexType»

«complexType name-"VocabularyDomainValueSet"»

«sequence»

«element name-"deiinedByValue£et" nillable-"true" type-"impl:ValueSetDescrip tot"/»

132

ГОСТ Р HCO/HL7 27951—2016

«element name»"applicationContext_code" nillable»"true" type«"tns2:ST"/> </sequence>

«/complexType»

«complexType name**"ArrayOfVocabularyDomainValueSet"»

«sequence»

«element maxOccurs**"unbounded" minOccurs»'*0" name-^item" type»'*impl: Vocabul aryDomainValueSet"/»

«/sequence»

</complexType»

«complexType name»"VocabularyDomainDescription"»

«sequence»

«element name»"vocabularyDomain_name" nillable»"true" type»"tns2:ST"/> «element name»"description" nillable-"true" type-"tns2:£T"/>

«element name»"restrictsDomain_name" nillable^true" type**"tns2 :ST”/> <element name»"basisOfDomains" nillable»"true" type»"impl:ArrayOf_tns2_ST"/> <element name»"constrainsAttributes" nillable»"true" type»"impl:ArrayOfRIMC odedAttribute"/>

<element name»”representedByValueSets" nillable»"true" type»"impl:ArrayOfVo cabularyDomainValueSet"/»

«/sequence»

</complexType>

«complexType name»"UnknownVocabularyDomain"»

<sequence>

<eLemenc name»wvocabularyDomain_name" nillable»"true" type»"tns2:ST"/> «/sequence»

«/complexType»

<element name»"fault4" type»"impliUnknownVocabularyDomain"/>

«element name»”lookupValue£et"»

«complexType»

«sequence»

«element name»"inO" type»"tns2:UID"/>

«element name-"ini" type»"tns2:£T"/>

</aequence>

«/complexType»

«/element»

«element name»MlookupValue£etResponse"»

<comp1exType>

<aequence>

«element nair.e»''lookupValueSetReturnn type**" imp 1: Fu UValueSet Descript ion"/> </aequence>

</complexType>

«/element»

«complexType name»"ValueSetDescription"»

«sequence»

«element name»"idAndName" nillable»"true" type»”impl:ValueSetDescriptor"/> «element name»"description" nillable**"true" type»"tns2:ST"/>

«element name»"definingExpression" nillable»"trueu type-"tns2!£T,,/>

«element name»"basedOnCodeSystem" nillabie»"true" type»"impliCodeSystemDesc riptor"/»

«element name»"allCodesn nillable^true" type*»"tna2 :BL"/>

«element name-"head_code" nillable**"true" type»"tns2:ST"/>

«/sequence»

«/complexType»

«complexType name»"ValueSetConstructor"»

«sequence»

«element name»"includedValue£et" nillable»"true" type»"impl:ValueSetDescrip tor"/»

133

ГОСТ Р HCO/HL7 27951—2016

<element name-"includeHeadCode" nillable-"true" type-"tns2:BL"/>

</sequence>

</complexType>

<complexType name-"ArrayOfValueSetConatructor">

<sequence>

<element maxOccura-"unbounded" minOccurs-"0" name-”item" type-”impl: ValueSe tConatructor"/>

</sequence>

</complexType>

<complexType name-"ArrayOfValueSetDescriptor">

<sequence>

<element raaxQccurs-"unbounded" min0ccurs-”0" name-”item" type-”impl:ValueSe tDescriptor"/>

</aequence>

</complexType>

ccomplexType name-"ValueSetCodeReference">

<sequence>

<element name-"referenced_code" nillable-"true" type-”tna2:ST"/>

<element name-”relationahip_code” nillable-"true" type«"tns2:ST"/>

<eLement name-''includeReferencedCode" nillable-"true" type-"tna2:BL"/> <element name-"leafOnly" nillable-"true1' type-"tna2:BL"/>

</sequence>

</comp1exType>

<complexType name-"ArrayOfValueSetCodeReference”>

<sequence>

<eLement maxOccura-"unbounded” min0ccurs-"0" name-"item" type-”impl:ValueSe tCodeReferenee"/>

</sequence>

</comp1exType>

<complexType name-"FullValueSetDescription">

<sequence>

<element name-"deacription" nillable-"true" type-"impl:ValueSetDescripti

on'7>

<element name-”constructedUsingValueSets" nillable-"true” type-"implrArray OfValueSetConatructor"/>

<element name-”uaedToDeiine” nillable-"true" type-"impl:ArrayOfValueSetDescr iptor"/>

<element name-”referencesCodea" nillable-"true" type-"impl:ArrayOfValueSetC odeReference"/>

</sequence>

</comp1exType>

<complexType name-"UnknownValueSet”>

<sequence>

<element name-”valueSet" nillable-"true'' type-"irapl :ValueSetDescriptor"/> </aequence>

</comp1exType>

<element name-"fault5" type-“implsUnknownValueSet"/>

<complexType name-"ValueSetName!dMismatch">

<sequence>

<element name-"valueSet_id" nillable-"true'' type-"tns2iUID"/>

<element name-"valueSet_name" nillable-"true” type-"tna2:ST”/>

</sequence>

</comp1exType>

<element name-"faults" type-”impl:ValueSetNameIdMismatch”/>

<element name-"lookupCodeSyatem">

<comp1exType>

134

ГОСТ Р HCO/HL7 27951—2016

«sequence?

<element name-"inO" type*'*tns2:UID"/>

«element паше-''inl" type»‘*tns2:ST"/?

«/sequence?

«/complexType?

«/element?

<elament name^lookupCodeSystemResponse"?

«complexType?

«sequence?

«element name•"lookupCodeSystemReturn,, type»"impl tCodeSystemlnfo”/? «/sequence?

«/complexType?

«/element?

«complexType name**"CodeSystemRegistration"?

«sequence?

«element name*‘,*sponsoi:" nillable^true'* type*»''tns2 :ST'V?

«element name~npublisher" nillable-^true" type-"tns2:ST"/>

«element name-”versionReportingMethod" nillable»"true" type«"tns2i$T"/> «element name~NlicensingInformation" nillable»"true" type»"tns2 sST'V? «element пате-'ЧпимьЗ" nillable*»"true" type«*"tns2!BL“/?

«element name»'*systemSpeciiicLocatorInfo" nillable»Htrue" type»Htns2sST"/> «element name*«,,codeSystemType_code" nillable*"true" type*"tns2tST"/? </sequence>

«/complexType?

<complexType name-"CodeSystemInfo"?

«sequence?

<element name^description" nillable»"true" type-"impl:CodeSystemDescriptor"/? «element name~nregistrationlnfo" nillable»Htrue" type-"impl:CodeSystemRegis tration"/?

«/sequence?

</complexType?

«complexType name*»"UnknownCodeSystera"?

«sequence?

«element name-'*codeSystem_id" nillable^'true" type“"tns2 tUID'V?

</sequence>

</complexType?

«element name*»''fault7" type“''impl:UnknownCodeSystem"/?

«complexType name-"CodeSystemName2dMismatch”?

«sequence?

«element name«"codeSyscem_id“ nillable-"true" type-"tns2tUID"/?

«element name-^codeSysten^name" nillable-^true" type-"tns2:ST"/>

«/sequence?

</comple xType >

«element name-"fault8" type-nimpl:CodeSystemNameIdMismatch,,/>

«element naroe-"lookupValueSetForDomain"?

< comple xType >

<sequence>

«element name~"inO" type*,,,tna2:ST"/>

«element name-"inl" type«"tns2:ST"/?

«/sequence?

</complexType?

«/element?

«element name~MlookupValueSetFo£DomainResponsen?

<comp1exType>

«sequence?

«element name»"lookupValueSetForDomainReturn" type»"impl:ValueSetDescript

135

ГОСТ Р ИСО/Ж.7 27951—2016

</sequence>

</complexType>

</element>

<complexType na(ne-"UnknownApplicationContextCode">

<sequence>

<element nalne-,*applicationContext_code,, nillable-"true" type«"tna2:ST"/> </aequence>

</comp1exType>

<element name-"fault9" type-^impl:UnknownApplicationContextCode"/> <complexType name-"NoApplicableValue$et">

<sequence>

<element name-"vocabularyDomain_name" nillable-"true" type-"tna2:ST"/> <elemenc name«"applicationContext_code" nillable-"true" type«"tns2:ST"/> </sequence>

</complexType>

<element name-"faultlQ" type-"impl:NoApplicableValueSet"/>

<element naroe-"isCodeInValueSet">

<complexType>

<aequence>

<element name-"in0" type-"tns2:UID"/>

<element name-"inl" type-"tns2:ST"/>

<element name-"in2" type-"tna2:BL"/>

<elemenc name-"in3" type-"impl:ConceptId"/>

</aequence>

</complexType>

</element>

<complexType name-"ConceptId">

<sequence>

<eLemenc name-"codeSystem_id" nillable-"true" type-"tns2!UID"/>

<element name-"concept_code" nillable-"true" type-"tns2:ST"/>

</sequence>

</comp1exType>

<element name-"isCodeZnValueSetReaponse">

<complexType>

<aequence>

<element name-"iaCodeInValueSetRecurn" type-"tns2:BL"/>

</aequence>

</complexType>

</element>

<complexType name-"UnknownConceptCode">

<sequence>

<element name-"concept_id" nillable-"true" type-"impljConceptId"/> </aequence>

</comp1exType>

<element name-"faultll" type-"impljUnknownConceptCode"/>

<element narae-"getServiceName">

<comp1exType/>

</element>

<element name-"getServiceNameReaponse">

<comp1exType>

<sequence>

<element name-"getServiceNameReturn" type«"tns2:ST"/>

</sequence>

</согар1exType>

</element>

<element name-"getServiceVersion">

136

ГОСТ Р HCO/HL7 27951—2016

<comp1еxType/>

</element>

<element name‘»"getServiceVeraionResponse">

<complexType>

<aequence>

<element name»"getServiceVersionReturn1' type*»"tns2jST"/>

</aequence>

</coraplexType>

</element>

<element name-"getServiceDescription">

<comp1exType/>

</element>

<element narae<*"getServiceDescriptionKesponae">

<complexType>

<sequence>

<element name">"getServiceDeacriptionReturn" type»*"tns2:ST"/> </aequence>

</coraplexType>

</eleraent>

<element name»"getHL7ReleaseVersion">

<complexType/>

</eleraent>

<element name»"getHL7ReleaseVersionResponse">

<complexType>

<aequence>

<element name~"getHL7ReleaaeVersionReturn" type“"tns2:£T"/> </sequence>

</complexType>

</element>

<element name-,'getCTSVeraion,,>

<comp1exType/>

</element>

<element name*"getCTSVeraionResponse">

<complexType>

<aequence>

<element name~"getCTSVersionReturn" eype«"impl jCTSVersion2d"/> </aequence>

</complexType>

</element>

<complexType name»"CTSVersionId">

<sequence>

<element name-"raajor" nillable»"true" type*»"tns2jINT"/>

<element name»"minor" nillable*"true" type«"tns2: INT"/>

</sequence>

</complexType>

</achema>

<achema elementFormDe£ault»"qualified" cargetNamespace~"urn: //cts.hl7 .org/ types" xralns»"http!//">

<import namespace»"urn://hl7.org/CTSMAPl"/>

<complexType name»"ST">

<sequence>

<element name»"v" nillableM"truen type^xadjatring"/»

</aequence>

</complexType>

<complexType name»"(JID">

<sequence>

137

ГОСТ Р HCO/HL7 27951—2016

<element name-"v" nillable-"true" type-"xsd:string"/>

</sequence>

</complexType>

<complexType name-"BL">

<sequence>

<element name-"v" type-"xsd:boolean"/>

</sequence>

</comp1exType>

<complexType name-"INT">

<sequence>

<element name-"v" type«"xsd;int"/>

</sequence>

</comp1exType>

</achema>

</wsdl:typea>

<wsdl{message name-"UnknownMatchAlgorithm">

<wadL:pact element-"impl: fault2" name-"fault"/>

</wadl:mesaaqe>

<wsdl:message name-"lookupValueSetForDomainRequest">

<wsdl:part element-"impl:lookopValueSetForDomain" name-"parameters"/> </wsdl:messaqe>

<wsdl:message name-"UnexpectedErtor'•>

<wsdL:part element-"impl:fault" name-"fault"/>

</wsdl:messaqe>

<wsdl{message name-"getSupportedCodeSystemsRequestM>

<wsdL:part element-"impl:getSupportedCodeSy3terns" name-"parameters"/> </wsdl:messaqe>

<wsdl{message name-"lookupVaLueSetRequest''>

<wsdl:part element-"impl:lookupValueSet" name-"parameters"/>

</wsdl:messaqe>

<wsdl{message name-"getCTSVersionRequest">

<wsdljpart element-"impl:getCTSVersion" name-"parameters,,/>

</wsdl:messaqe>

<wsdl;message name-"getSupportedVocabularyDomainsRequest">

<wsdl:part element-"impl:getSupportedVocabularyDomains" name-"pa rametera"/>

</wsdl:messaqe>

<wsdl:message name-"UnknownConceptCode">

<wsdl:part element-"impl:faultll" name-"fault"/>

</wsdl:message>

<wsdl {message name-"getServiceDescriptionRequest">

<vrsdl :part element-"impl:getServiceDescription" name-"pairameters"/>

</wsdl:message>

<wsdl:message name-”Unknov(nApplicationContextCode">

<wsdl:part element-"impl: fault?” name-"fault"/>

</wsdl:message>

<wsdl{message name-"UnknownCodeSystem">

<wsdl:part element-"impl: fault?" name-"fault"/>

</wsdl:message>

<wsdl{message name-"getServiceVersionResponse">

<wsdl:part element-"impl:getServiceVersionResponse" name-"parameters"/>

</wsdl:message>

<wadl message name-"getSupportedMatchAlgorithmsRequest">

<vfsdltpart element-"impl:getSupportedMatchAlgorichms" name-"parameters"/> </wsdl{message>

136

ГОСТ Р HCO/HL7 27951—2016

<wsdl:message name-"lookupCode£ystemResponse">

<wsdl ipart element-"impl:lookupCodeSystemResponse" name-"parameters"/> </wsdl:message>

<wsdlmessage rtame-"lookupValueSetResponse">

<wsdl :parc element-"impl:lookupValueSetResponse" name-"parameters"/>

</wsdl:message>

<wsdl:message name-"getSupportedAttributesResponse">

<wsdlipart element-"impl:getSupportedAtcributesResponse" name-"parameters"/>

</wsdl:message>

<wsdlimessage name-"getSupportedValueSetsResponse">

<wsdl:part element-"impl:gecSupportedValueSetsResponse" name- "pa ramece rs "/ >

</wsdl:message>

<wsdl:message name-"getCTSVersionResponse">

<wsdl:parc element-"impligetCTSVersionResponse" narae-"paramecers"/>

</wsdl:message>

<wsdlimessage name-"gecServiceNameResponse">

<wsdl:part element-"impligetServiceNameResponse" name-"paramecers"/> </wsdl:message>

<wsdlimessage name-"UnknownValueSec">

<wsdl:part element-"impl:faults" name-"fault"/>

</wsdl:message>

<wsdlimessage name-"getSupportedMatchAlgorithmsResponse">

<wsdl:part element-"impligetSupportedMatchAlgorithrasResponse" name-"parameters"/>

</wsdl:message>

<wsdlimessage name-"CodeSystemNameIdMismatch">

<wsdl:part element-"impl:fault8” name-"fault"/>

</wsdl:message>

<wsdlimessage name-"lookupValueSetForDomainResponse">

<wsdl:part element-"impl:lookupValueSetForDomainResponse" name-"parameters"/>

</wsdl:message>

<wsdl '.message name-"TimeoutError ">

<wsdl:part element-"impl:fault3" name-"fault"/>

</wsdl:message>

<wsdlimessage name-"getServiceNameRequest">

<wsdl:part element-"impl:gecServiceName” name-"parameters"/>

</wsdl:message>

<wsdlimessage name-"getHL7ReleaseVersionResponse">

<wsdl:part element-"impl:getHL7ReleaseVersionResponse" name-"parameters"/> </wsdl:message>

<wsdlimessage name-"getSupportedValue£etsRequest">

<wsdl:part element-"impl:gecSupporcedValueSets" name-"parameters"/>

</wsdl:message>

<wsdlimessage name-"getServiceDescriptionResponse">

<wsdl:part element-"impl:getServiceDescriptionResponse" name-"pa ramece rs"/>

</wsdl:message>

<wsdlimessage name-"lookupVocabularyDomainRequest">

<wsdl:part element-"impl:lookupVocabularyDomain" name-"parameters"/>

</wsdl:message>

<wsdlimessage name-"NoApplicableValueSet">

<wsdl:part element-"impl:faultlO" name-"fault"/>

</wsdlimessage>

139

ГОСТ Р HCO/HL7 27951—2016

<wsdl:message name*"getSupportedAttributesRequest">

<wsdlipart element*"impl rgetSupportedAttributes" name*"parameters"/>

</wsdl:message>

<wsdlimessage name-"getSupportedCodeSystemsResponse">

<wsdl ipart element*"impl:getSupportedCodeSystemsResponse" name«"parameters"/>

</wsdl:message>

<wsdlimessage name*"getSupportedVocabularyDomainsResponse">

<wsdlipart element*'*impligetSupportedVocabularyDomainsResponse" name* "pa ramete rs " / >

</wsdl:message>

<wsdl:message name*"getServiceVersionRequest">

<vrsdl:part element*"impl:getServiceVersion" name*"parameters"/>

</wsdl:message>

<wsdlimessage name*"BadlyFormedMatchText">

<wsdl:pact element*"impl:faultl" name*"fault"/>

</wsdl:message>

<wsdlimessage name*"lookupVocabularyDomainResponse">

<wsdl:part element*"impl:lookupVocabularyDomainResponse" name*"pa tametets"/>

</wsdl:message>

<wsdlimessage name*"isCode!nValueSetRequest">

<wsdl:patt element*"impl:isCodeInValueSet" name***parameters"/>

</wsdl:message>

<wsdlimessage name-"lookupCodeSystemRequest">

<wsdl:patc element*"impl:lookupCodeSystem" name***parametersl'/>

</wsdl:message>

<wsdlimessage name*"UnknownVocabularyDomain">

<wsdl:patc element*"impl:fault4” name-"fault"/>

</wsdl:message>

<wsdlimessage name*"isCodeInValueSetResponse">

<wsdlipart element*"impl:isCodelnValueSetResponse" name-"parameters"/> </wsdl:message>

<wsdlimessage name*»"getHL7ReleaseVersionRequest">

<wsdl:part element*”impligetHL7ReleaseVersion" name*"parameters"^

</wsdl:message>

<wsdlimessage name*"ValueSetNameldMismatch">

<wsdl:part element*"impl:fault6" name»"fault"/>

</wsdl:message>

<wsdliportType name*"BrowserOperations">

<wsdlioperation name*"getSupportedMatchAlgorithms">

<wsdl:input message*"impligetSupportedMatchAlgorithmsRequest" name*"get SupporcedMatchAlgorithmsRequest"/>

<wsdl:output message*"impligetSupportedMatchAlgorithmsResponse" name*"g etSupportedMatchAlgorithmsResponse"/>

<wsdli fault message*"impltUnexpectedError" name*"UnexpectedError"/>

</wsdl:operation>

<wsdl:operation name*"getSupportedAttributes">

<wsdliinput message*"impligetSupportedAttributesRequest" narae-"getSuppo rtedAttributesRequest"/>

<wsdl:output message*"impligetSupportedAttributesResponse" name*"getSup portedAttributesResponse"/>

<wsdl i fault message*1'impl :UnknownMatchAlgorithm" name*"UnknownMatchAlgorithra"/>

<wsdlifault message*"impliUnexpectedError" name*"Unexpected£rror"/> <wsdlifault message*"impl:BadlyFonuedMatchText" name*"BadlyFormedMatchText"/>

140

ГОСТ Р HCO/HL7 27951—2016

<wsdl:fault message»"implsTimeoutError" name-"TimeoutError"/>

</wsdlsoperation>

<wsdl:operation name-"getSupportedVocabularyDomains">

<wsdl:input message»"implsgetSupportedVocabularуDomainsRequest" name-"g etSupportedVocabularyDomainsRequest"/>

<wsdl;output message-"iraplsgetSupportedVocabularyDomainsResponse" name-"getSuppor tedVocabular yDomainsResponse''/>

<wsdl:fault message-"implsUnknownMatchAlgorithm" name-"UnknownMatchAlgorithra"/>

<wsdl:fault message-"implsUnexpectedError" name-"UnexpectedError"/> <wsdl:fault message-"implsBadlyFormedMatchText" name-"BadlyFormedMatchText"/>

<wsdl:fault message»"implsTimeoutError" name-"TimeoutError"/>

</wsdlsoperation>

<wsdljoperation name-"getSupportedValue£ets">

<wsdlsinput message-"implsgetSupportedValueSetsRequest" name-"getSuppor tedValueSetsRequest"/>

<wsdl:output message-"impl:getSupportedValueSetsResponse" name-"getSupp or tedVa1ueSe t sResponse" / >

<wsdlsfault message-"impl:UnknownMatchAlgorithm" name-"UnknownMatchAlgorithm"/>

<wsdl:fault message-"impl:UnexpectedError" name-"UnexpectedError"/> <wsdl:fault message-"implsBadlyFormedMatchText" name-"BadlyFormedMatchText"/>

<wsdl:fault message»"impl:TimeoutErro£" name-"TimeoutError"/>

</wsdl:operation>

<wsdl:operation name-"getSupportedCodeSystems">

<wsdlsinput message-"implsgetSupportedCodeSy3temsRequest" name»"getSupp ortedCodeSystemsRequest"/>

<wsdlsoutput message-"implsgetSupportedCodeSystemsResponse" name»"getSu pportedCodeSystemsResponse"/>

<wsdlsfault message-"implsUnknownMatchAlgorithm" name-"UnknownMatchAlgorithm"/>

<wsdl:fault message-"impi sUnexpectedError" name»"UnexpectedError"/> <wsdl:fault message-"implsBadlyFormedMatchText" name-"BadlyFormedMatchText"/>

<wsdl:fault message-"implsTimeoutError" name-"TimeoutError"/>

</wsdls operation*

<wsdlsoperation name-"lookupVocabularyOomain">

<wsdls input message-"implslookupVocabularyDomainKequest" naree-"lookupVo cabularyDomainRequest"/>

<wsdlsoutput message-"implslookupVocabularyDomainResponse" name-"lookup VocabularyDomainResponse"/>

<wsdls fault message-"implsUnexpectedError" name-"UnexpectedError"/> <wsdl:fault message-"implsUnknownVocabularyDomain" name-"UnknownVocabul aryDomain"/>

</wsdlsoperation>

<wsdlsoperation name-"lookupValueSet">

<wsdls input message-"implslookupValueSetRequest" name-"lookupValueSetRequest"/>

<wsdlsoutput message-"implslookupValueSetResponse" name-"lookupValueSetResponse"/*

<wsdls fault message-"implsUnknownValueSet" name-"UnknownValueSet"/> <wsdl:fault message-"implsUnexpectedError" name-"UnexpectedError"/> <wsdls fault message-"implsValueSetNameldMismatch" name-"ValueSetNameldMismatch"/>

141

ГОСТ Р HCO/HL7 27951—2016

</wsdl:operation>

<wsdl:operation name-"lookupCodeSystem">

<wsdl;input message-"impl:lookupCodeSystemRequest" name-”lookupCodeSyst emRequest"/>

<wsdl:output message-"impl:lookupCodeSystemResponse" name-''lookupCodeSy stemResponse"/>

<wsdl:fault message-"impl:UnexpectedError" name-"Unexpected£rror”/> <wsdl:fault message-"impl:CodeSystemNameIdMismatch" name-"CodeSystemNam eIdMismatch"/>

<wsdl:fault message-"impl:UnknownCodeSystem" name-"UnknownCodeSystern"/> </wsdl:operation>

<wsdL{operation name-"lookupValueSetForDomain">

<wsdl:input message-"impl:lookupValueSetForDomainRequest" name-"lookupV alue£etForDomainRequest"/>

<wsdl:output message-"impl:lookupValueSetForDomainResponse” name-”looku pValueSetForDoraainResponse"/>

<wsdl:fault message-"impl:NoApplicableValue£etn name-"NoApplicableValue£et"/>

<wsdl:fault message-"impl:UnexpectedError" name-"Unexpected£rror"/> <wsdl:fault message-"impl:UnknownApplicationContextCode" name-"UnknownA pplicationContextCode"/>

<wsdl:fault message-"impl:UnknownVocabularyDomain” name-"UnknownVocabul aryDomain"/>

</wsdl:operation>

<vrsdl:operation name-"isCodelnValueSet">

<wsdl:input message-"impl:isCodelnValueSetRequest" name-"isCode!nValueS etRequest"/>

<wsdlioutput message-"impl:isCodelnValue£etResponse" name-''isCodeInValu eSetResponse"/>

<wsdl: fault message-"impl tllnknownValueSet" name-"UnknownValueSet'V> <wsdl:fault message-"impl:Unexpected£rror" name-"Unexpected£rror"/> <wsdl!fault message-"impl:ValueSetNameldMismatch" name-"Value£etNameZdMisreatchl,/>

<wsdl:fault message-"impi:UnknownConceptCode" name-"UnknownConceptCode"/>

<wsdl:fault message-"impl:UnknownCode£ystem" name-"UnknownCodeSystern"/> </wsdl:operation>

<wsdl:operation name-"getServiceName">

<wsdl;input message-"impl:getServiceNameRequest" name-"get£erviceNameRequest"/>

<wsdl:output message-"impl:get£erviceNameResponse" name-"getServiceNameResponse"/>

<wsdl:fault message-"impl:Unexpected£rror" name-"Unexpected£rror"/> </wsdl:operation>

<wsdL:operation name-"getServiceVersion">

<wsdl:input message-"impl:getServiceVersionRequest" name-"getServiceVer s ionReques t" / >

<wsdl:output message-"implsgetServiceVersionResponse” name-"getServiceV ersionResponse"/>

<wsdl:fault message-"impl:Unexpected£rror" name-"Unexpected£rror'V> </wsdl:operation>

<vrsdl .’operation name-"getServiceDescription”>

<wsdl:input message-"impligetServiceDescriptionRequest" name-"getServic eDescriptionRequest"/>

<wsdlioutput message-"impl:get£erviceDescriptionResponse" name-"getServ iceDescriptionResponse"/>

142

ГОСТ Р HCO/HL7 27951—2016

<wsdl:fault message*"impltUnexpectedError" name*"UnexpectedError"/> </wsdl:operation>

<wsdl:operation name*"getHL7ReleaseVersion">

<wsdl:input message*»"impl:getHL7ReleaseVersionRequest" name*"getHL7Rele aseVersionRequest"/>

<wsdl:output message*"impl{getHL7ReleaseVersionResponse" name*»"getHL7R eleaseVersionResponse"/>

<wsdl:fault message*"implrUnexpectedError” name-"UnexpectedError"/> </wsdl:operation>

<vrsdl:operation name«"getCTSVersion">

<wsdl:input message*"implsgetCTSVersionRequest" name*"ge tCTSVe rs ionReques t"/>

<wsdlioutput message*"impl:getCTSVersionResponse" name*"getCTSVersionResponse"/>

<wsdl: fault message*”impl {UnexpectedError" name-"UnexpectedError'V> </wsdl:operation>

</wsdl:portType>

<wsdl:binding name*"MessageBrowserServiceSoapBinding” type*" impl : Browse trOperations”>

<wsdlsoap:binding style-"docuraent" transport-" soap/http"/>

<wsdl:operation name*"getSupportedMatchAlgorithms”>

<vtsdlsoap:operation soapAction*" "/>

<wsdl:input name*"getSupportedMatchAlgorithmsRequest">

<vrsdlsoap:body use*"literal"/>

</wsdl:input>

<wsdl{output name*"getSupportedMatchAlgorithmsResponse">

<vrsdlsoap:body use*”literal"/>

</wsdl:output>

<wsdl:fault name*"UnexpectedError">

<wsdlsoap:fault name*"UnexpectedError" use*nliteral"/>

</wsdl:fault>

</wsdl:operation>

<wsdl{operation name*"getSupportedAttributes”>

<vsdlsoap:ope ration soapAction*""/>

<wsdl:input name*"getSupportedAttributesRequest">

<vrsdlsoap:body use*"literal"/>

</wsdl:input>

<wsdl{output name*"getSupportedAttributesResponse”>

<wsdlsoap:body use*nliteral"/>

</wsdl:output>

<wsdl{fault name*"UnknownMatchAlgorithm">

<vrsdlsoap:fault name*"UnknownMatchAlgorithm" use*nliteral"/>

</wsdl:fault>

<wsdl{fault name*"Unexpected£rror">

<vrsdlsoap:fault name*"UnexpectedError" use*nliteral"/>

</wsdl:fault>

<wsdl{fault name*"BadlyFormedMatchText">

<vrsdlsoap:fault name«"BadlyFormedMatchText" use*"literal"/>

</wsdl:fault>

<wsdl:fault name*"TiroeoutError">

<vrsdlsoap: fault name*"TimeoutError" use*"literal"/>

</wsdl:fault>

</wsdl:operation>

<vrsdl{operation name*"getSupportedVocabularyDomains">

<vsdlsoap:operation soapAction*""/>

143

ГОСТ Р HCO/HL7 27951—2016

<wsdl: input name»"getSupportedVocabularyDomainsRequest"> <wsdlsoaprbody use»"literal"/>

</wsdl:input>

<wsdlroutput name»"getSupportedVocabularyDomainsResponse"> <wsdlsoaprbody use»"literal"/>

</wsdl:output>

<wsdl: fault name»"UnknownMatchAlgorithia">

<wsdlsoaprfault name-"UnknownMatchAlgorithm" use»"literal"/> </wsdl:fault>

<wsdl: fault name“*'UnexpectedError">

<wsdlsoaprfault name»"UnexpectedError" use»"literal"/>

</wsdl:fault>

<wsdl: fault name»l,BadlyFormedMatchText ">

<wsdlsoapr fault name-"BadlyFormedMatchText" use»"literal "/> </wsdl:fault>

<wsdl:fault name»,,TimeoutEj:ror">

<wsdlsoaprfault name-"TimeoutError" use»"literal"/>

</wsdl:fault>

</wsdlroperation>

<wsdl roperation natne»"getSupportedValueSets">

<wsdlsoap:operation soapAction»"u/>

<wsdl:input name»"getSupportedValueSetsReque3t">

<wsdlsoaprbody use»"literal"/>

</wsdl:input>

<wsdlroutput na(ne»"getSupportedValue£etsResponse"> <wsdlsoaprbody use»"literal"/>

</wsdl:output>

<wsdl: fault name»"UnknownMatchAlgorithm">

<wsdlsoaprfault name»"UnknownMatchAlgorithni" use»"literal"/> </wsdl:fault>

<wsdl:fault name»"UnexpectedError">

<wsdlsoap:fault name-"UnexpectedError" use»"literal"/>

</wsdl:fault>

<wsdl:fault name»"BadlyFormedMatchText">

<wsdlsoap:fault name-"BadlyFormedMatchText" use»"literal"/> </wsdl:fault>

<wsdl:fault name-"TimeoutError">

<wsdlsoap:fault name-"TimeoutError" use»"literal"/>

</wsdlr fault>

</wsdlroperation>

<wsdl roperation nante»"getSupportedCodeSystems">

<wsdlsoap:operation soapAction»""/>

<wsdl:input name»"getSupportedCodeSystemsRequest"> <wsdlsoaprbody use»''literal"/>

</wsdlr input>

<wsdl routput na(ne»"getSupportedCodeSystemsResponse"> <wsdlsoaprbody use»"literal"/>

</wsdlroutput>

<wsdl: fault narae-"UnknownMatchAlgorithm">

<wsdlsoapr fault name»"UnknownKatchAlgorithmn use»''literal"/> </wsdlr fault>

<wsdl:fault name»"UnexpectedError">

<wsdlsoap: fault name»"UnexpectedError" use»''literal"/>

</wsdlr fault>

<wsdl;fault name»"BadlyFormedMatchText">

<wsdlsoaprfault name-"BadlyFormedMatchText" use»"literal "/>

144