Настоящая версия протокола экспорта/импорта между ЦОД и участником ДЛО предусматривает следующий набор обязательных правил при обмене данными между экспортером и импортером.
5.1. Общие правила представления данных в XML-формате
Здесь и далее используются определения и спецификации, разработанные The World Wide Web Consortium (W3C) (http://www.w3.org).
Структура XML-файлов протоколов и других документов описываются с помощью схем (XML Schema), спецификация которых описана (http://www.w3.org/2001/XMLSchema). Схема для каждого вида документа (XML файла) представляется в виде XSD-файла.
5.2. Структура файла
Для всех документов (файлов XML) применяется следующая базовая схема:
Тег корневого файла <MAIN chsm="">. Корневой тег содержит атрибут "chsm" - значение контрольной суммы. Алгоритм расчета контрольной суммы описан в п.8. данного документа.
Тег (обязательный) с идентификатором формата <FORMAT_GUID>, в котором указывается GUID, соответствующий формату.
Тег (обязательный) <PROTOCOL>, в котором указывается мнемоника протокола.
Тег (обязательный) <VER>, в котором указывается версия формата.
Тег <CREATE_BY> (необязательный) содержит наименование программы, создавшей экземпляр файла.
Тег <APP_BUILD> (необязательный) содержит номер сборки (версии) программы, создавшей экземпляр файла.
Тег <CREATE_TIME> (необязательный), содержит дату и время создания файла.
Тег <TITLE> (необязательный), содержит строку со смысловым обозначением формата файла.
Тег <ЕСР> (необязательный), содержит двоичные данные с электронной подписью отправителя.
Раздел SENDINFO (тег <SENDINFO>, обязательный) типа docFlowInfoType (определение приведено ниже).
Все остальные данные включаются в теге <DATAMAIN>, структура которого определяется конкретным форматом.
5.3. Правила формирования посылок
Тег SENDINFO с информацией о посылке экспорта/импорта является обязательным.
В теге <HOST_GUID> должен быть указан GUID экспортера. GUID экспортера представляет собой символьный идентификатор участника уникальный в пределах территориальной информационной системы дополнительного лекарственного обеспечения отдельных категорий граждан. При обработке файла, необходимо провести проверку допустимости приема файла данного протокола, от данного экспортера. В качестве GUID-хоста в системе используется ОГРН учреждения экспортера. В случае если у одного учреждения присутствует несколько хостов экспортеров (например, разные отделения одного лечебно-профилактического учреждения), для уникальности к ОГРН в квадратных или круглых скобках добавляется номер хоста внутри данного учреждения. Например
<HOST_GUID>1023101687190[2]</HOST_GUID>.
Посылки от одного экспортера должны последовательно нумероваться и номер посылки указываться в теге <PACKAGE_NUMBER>. ПО должно исключить возможность формирования двух разных посылок с одним номером от одного экспортера. ПО, осуществляющее импорт посылок, должно контролировать последовательность обработки посылок и исключить возможность нарушения порядка обработки посылок одного экспортера.
Для каждой вновь создаваемой посылки экспортер должен определить новый GUID посылки, который должен быть отражен в теге <SEND_GUID>, а также сохранен для последующего использования. ПО осуществляющее импорт посылок, обязано контролировать уникальность импорта посылок и исключить возможность обработки посылок с одинаковым GUID. В качестве GUID (Global Unique Identifier) посылки должен использоваться Глобальный Уникальный Идентификатор, используемый в операционной системе Microsoft Windows.
GUID представляет собой уникальное псевдослучайное 128-битное значение, которое теоретически не должно повториться. Алгоритм генерации GUID основан на аппаратной части компьютера (параметры BIOS, частота процессора, номер сетевой карты и т.д.) и использует случайные показания внутреннего таймера. Эту запись можно определить в виде строки следующего формата:
' {хххххххх-хххх-хххх-хххх-хххххххххххх} '
В каждой посылке необходимо указывать GUID предыдущей посылки в теге <PREV_SEND_GUID>. При обработке файла необходимо обеспечивать правило, по которому посылки должны обрабатываться последовательно, т.е. значение тега <PREV_SEND_GUID> должно соответствовать предыдущей принятой посылке. Для первой посылки от экспортера тег <PREV_SEND_GUID> имеет пустое значение.
В случае, когда посылка разбивается на несколько файлов, в ней необходимо указывать теги <FILE_NUMBER>, <PREV_FILE_NUMBER> <NEXT_FILE_NUMBER>, номер текущего файла, предыдущего и последующего. Все файлы посылки имеют сквозную (в рамках посылки) нумерацию. При обработке многофайловой посылки необходимо соблюсти последовательность обработки файлов.
5.4. Формирование XML-файлов