6.1.1.2.1 Состав сообщений и общие правила кодирования; типы данных

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

Для формирования сообщений используется XML-кодирование с кодовой страницей Windows-1251. Каждой группе событий, информация о которых передается в информационных сообщениях или запрашивается в сообщениях запроса, соответствует определенная структура сообщений. Для каждой структуры сообщений используется отдельная xml-схема. От имени структуры сообщения образуются имена файлов xml-схем и имена корневых элементов соответствующих сообщений. Например, если сообщение имеет структуру ADT_A01, то корневой элемент этого сообщения имеет имя <ADT_A01>, а сама структура описывается xml-схемой, хранящейся в файле ADT_A01.xsd.

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

Пример.

<BHS><BHS.11>1903ED97-F5C4-41C5-8035-C6606A9BD7C2</BHS.11></BHS>

Сегмент с именем BHS ("Заголовок пакета сообщений"), в который вложено поле N 11 ("Идентификатор пакета"). Значение поля - GUID 1903ED97-F5C4-41C5-8035-C6606A9BD7C2.

Значениями полей могут быть данные определенных типов. Типы данных бывают простыми и составными (комплексными). Значение простого типа данных состоит из атомарного значения, на которое могут быть наложены ограничения. Значения комплексных типов данных состоят из компонентов, которые, так же, как и поля сегментов, имеют имена, использующиеся при описании типов данных. При XML-кодировании значение каждого компонента комплексного типа указывается в xml-элементе, имя которого составляется из имени типа данных и порядкового номера компонента, разделенных точкой.

Пример.

<BHS.6>

<HD.1>47</HD.1>

<HD.2>1.2.643.2.40.3.3.1.0</HD.2>

<HD.3>ISO</HD.3>

</BHS.6>

Поле сегмента BHS с порядковым номером 6 ("Учреждение-получатель пакета") заполнено значением, имеющим тип данных HD ("Иерархический идентификатор"), который, в свою очередь, имеет три компонента.

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

Пример.

<PID.5>

<XPN.1>

<FN.1>Степанов</FN.1>

</XPN.1>

<XPN.2>Олег</XPN.2>

<XPN.3>Михайлович</XPN.3>

<XPN.7>L</XPN.7>

</PID.5>

Поле сегмента PID ("Идентификация застрахованного лица") с порядковым номером 5 ("Фамилия, имя, отчество застрахованного лица") имеет комплексный тип данных XPN ("Фамилия, имя, отчество"), в котором заполнены четыре компонента: 1-й ("Фамилия"), 2-й ("Имя"), 3-й ("Отчество") и 7-й ("Тип ФИО"; в данном случае указан тип L (Legal) - "ФИО, официально признанные в настоящий момент"). 1-й компонент типа данных XPN имеет комплексный тип FN ("Фамилия"), из которого используется только первый компонент (первый субкомпонент первого компонента поля PID.5).

Описания типов данных, используемых в сообщениях стандарта ISO 27931, даны в разделе 6.1.2.