Навигация:  МОДУЛЬ "ПРОТОКОЛ HL7" > НАСТРОЙКА СХЕМ ВХОДА И ВЫХОДА >

Настройка конфигурации исходящих сообщений (HL7_OUT.xml)

Предыдущая страницаВернуться в начало главыСледующая страница

Файл HL7_OUT.xml. Настройка конфигурации исходящих сообщений.

 

<?xml version="1.0" encoding="windows-1251"?>

<!— Кодировка самого файла HL7_OUT.xml должна соответствовать указанной здесь кодировке-->

<hl7>

 <events>

         <!

         В секции перечисляются обрабатываемые события из таблицы HL7_EVENTS.

<code> – содержимое поля HL7_EVENTS.REC_TYPE + HL7_EVENTS.ACTION_TYPE. Если поле HL7_EVENTS.ACTION_TYPE не пусто, его значение прибавляется со знаком подчеркивания.

<name> – используется только в этом файле настроек (для удобства названия секций) и его можно не задавать. Тогда <name> будет совпадать с <code>.

         -->

         <event desc="Изменение пациента">

                 <name>PATIENT</name>

                 <code>P_U</code>

         </event>

         <event desc="Запись на прием">

                 <name>PLANNING</name>

                 <code>PLANNING_UPDATE</code>

         </event>

 </events>

 

 <sections>

         <!

         Секции описывают формат сообщения. Если имя секции совпадает с описанными выше событиями (events), то на основе этой секции и будет построено HL7 сообщение. Также есть промежуточные секции (например, common): они используются в других секциях (через свойство <parent>), чтобы избежать настройки для каждого сообщения одного и того же.                

         -->

         <COMMON>

                 <xml>

                         <!

                         Кодировка исходящего сообщения. Перед отправкой сообщение будет перекодировано  в соответствии с указанной кодировкой, она же будет указана в xml-заголовке отправляемого сообщения.

                         -->

                         <encoding>UTF-8</encoding>

                 </xml>

                 <segments>

                         <!

                         Из этих сегментов будет состоять исходящее xml-сообщение

                         -->

                         <MESSAGE_INFO>

                                 <!

                                 В фигурных скобках указываются имена полей sql-запросов. При формировании сообщения описанные ниже (в секции queries) запросы будут выполнены и из результирующей записи значения полей будут соответственно подставлены в исходящее сообщение (уже без фигурных скобок).

Есть несколько фиксированных системных полей, значение которых заполняет сам HL7 сервер:

{MESSAGE_ID} – автоматически генерируется для нового сообщения

{EVENT_ID} – HL7_EVENTS. HL7_EVENTS_ID

{REC_ID} - HL7_EVENTS.REC_ID

{HL7_COMMENT} - HL7_EVENTS.COMMENT

{EXT_CODE} - HL7_EVENTS.EXT_CODE

{EXT_CODE1} - HL7_EVENTS.EXT_CODE1

{EXT_CODE2} - HL7_EVENTS.EXT_CODE2

{CURRENT_DATE} - HL7_EVENTS.CURRENT_DATE

                                 -->

                                 <MESSAGE_ID>{MESSAGE_ID}</MESSAGE_ID>

                                 <DATETIME>{CURRENT_DATE}</DATETIME>

                         </MESSAGE_INFO>

                 </segments>

         </COMMON>

 

         <PATIENT>

                 <parent>COMMON</parent>

                 <xml>

                         <!

                         Имя корневого элемента исходящего HL7 сообщения. Его можно не указывать, тогда будет браться имя секции. В данном случае – PATIENT.

                         -->

                         <name>PAT</name>

                 </xml>

                 <segments>

                         <PATIENT_INFO>

                                 <PATIENTS_ID>{PATIENTS_ID}</PATIENTS_ID>

                                 <NOM>{NOM}</NOM>

                                 <PRENOM>{PRENOM}</PRENOM>

                                 <BIRTHDAY>{BIRTHDAY}</BIRTHDAY >

                         </PATIENT_INFO>

                         <!

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

                         -->

                         <INSURANCE query="insurance">

                                 <PROGRAM_ID>{PROGRAM_ID}</PROGRAM_ID>

                                 <PROGRAM_CODE>{PROGRAM_CODE}</PROGRAM_CODE>

                         </INSURANCE>

                 </segments>

                 <queries>

                         <!

                         SQL-скрипты, которые будут последовательно выполнены перед созданием исходящего сообщения.

<order> - порядок выполнения скрипта (если не указан, то выполняются последовательно)

<type> - open или exec (определяет способ выполнения скрипта)

<name> - можно указать имя запроса. Это необязательно и нужно только для повторяющихся сегментов (таких, как INSURANCE — см. выше)

<text> - текст скрипта.

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

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

                         -->

                         <query>

                                 <order>1</order>

                                 <type>open</type>

                                 <text>

select

 PATIENTS_ID,

 NOM,

 PRENOM,

 NE_LE as BIRTHDAY

from

 PATIENTS

where

 PATIENTS_ID = :REC_ID

                                 </text>

                         </query>

                         <query>

                                 <order>2</order>

                                 <type>open</type>

                                 <name>insurance</name>

                                 <text>

select

 FM_CLINK.FM_CLINK_ID as PROGRAM_ID,

 FM_CLINK.CODE as PROGRAM_CODE

from

 FM_CLINK_PATIENTS

inner join FM_CLINK ON FM_CLINK.FM_CLINK_ID = FM_CLINK_PATIENTS.FM_CLINK_ID

where

 FM_CLINK_PATIENTS.PATIENTS_ID = :REC_ID

                                 </text>

                         </query>

                 </queries>

         </PATIENT>

 

         <!

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

         -->

         <PLANNING>

                 <parent>PATIENT</parent>

                 <segments>

                         <PLANNING_INFO>

                                 <PLANNING_ID>{PLANNING_ID}</PLANNING_ID>

                                 <COMMENT>{PLANNING_COMMENT}</COMMENT>

                                 <EXAM_CODE>{EXAM_CODE}</EXAM_CODE>

                                 <EXAM_NAME>{EXAM_NAME}</EXAM_NAME>

                                 <SUBJ_ID>{SUBJ_ID}</SUBJ_ID>

                                 <SUBJ_NAME>{SUBJ_NAME}</SUBJ_NAME>

                         </PLANNING_INFO>

                 </segments>

                 <queries>

                         <query>

                                 <type>open</type>

                                 <text>

select

 p.PATIENTS_ID,

 p.NOM,

 p.PRENOM,

 p.NE_LE as BIRTHDAY,

 pl.PLANNING_ID,

 pl.COMMENTAIRE as PLANNING_COMMENT,

 ex.CODE as EXAM_CODE,

 ex.NAME as EXAM_NAME,

 sj.pl_subj_id as SUBJ_ID,

 sj.NAME as SUBJ_NAME

from

 planning pl join patients p on pl.PATIENTS_ID = p.PATIENTS_ID

            join pl_exam ex on ex.pl_exam_id = pl.pl_exam_id

            join pl_subj sj on sj.pl_subj_id = pl.pl_subj_id

where

 pl.PLANNING_ID = :REC_ID

                                 </text>

                         </query>

                         <query>

                                 <order>3</order>

                                 <type>exec</type>

                                 <text>

delete from HL7_EVENTS where MESSAGE_ID = :MESSAGE_ID                                                                                        </text>

                         <query>

                 </queries>

         </PLANNING>

 </sections>

</hl7>