Файл Server_OUT.xml. Настройка конфигурации исходящих сообщений.
<?xml version="1.0" encoding="windows-1251"?>
<hl7>
<events>
<!—
В секции перечисляются обрабатываемые события.
<code> – код события;
<name> – используется только в этом файле настроек (для удобства названия секций) и его можно не задавать. Тогда <name> будет совпадать с <code>.
-->
<event desc="Печать больничных листов">
<code>CURELIST_QUERY</code>
</event>
</events>
<sections>
<!—
Секции описывают формат сообщения. Если имя секции совпадает с описанными выше событиями (events), то на основе этой секции и будет построено сообщение. Также есть промежуточные секции (например, common): они используются в других секциях (через свойство <parent>), чтобы избежать настройки для каждого сообщения одного и того же.
-->
<CURELIST_QUERY>
<segments>
<QUERY_INFO>
<!—
В фигурных скобках указываются имена полей sql-запросов. При формировании сообщения описанные ниже (в секции queries) запросы будут выполнены и из результирующей записи значения полей будут соответственно подставлены в исходящее сообщение (уже без фигурных скобок).
-->
<PARAM>{P_PARAM}</PARAM>
<MOTCONSU_ID>{P_MOTCONSU_ID}</MOTCONSU_ID>
<PATIENTS_ID>{P_PATIENTS_ID}</PATIENTS_ID>
<RECORD_ID>{P_RECORD_ID}</RECORD_ID>
</QUERY_INFO>
<VARIABLES>
<DATA_CURR_DISABIL_CERTIF>
<!— Имя таблицы, откуда берутся значения. -->
<RECORD>
<!— Между этими тэгами располагаются поля, которые принадлежат одной строке. -->
<FIELD8>
<!—
Описание поля: название параметра из запроса, координаты, стиль шрифта, размер шрифта, интервал между символами, интервал между рядами. -->
<VALUE>{PERVICH}</VALUE>
<!— Название столбца -->
<X>69</X>
<!— Координата по оси Х -->
<Y>11</Y>
<!— Координата по оси У (считается от верхнего левого угла ячейки) -->
<FONT_NAME>{FontName}</FONT_NAME>
<!— Имя шрифта (можно задавать вручную для каждого поля) -->
<FONT_SIZE>{FontSize}</FONT_SIZE>
<!— Размер шрифта (можно задавать вручную для каждого поля) -->
<CHAR_INTERVAL>{CharInterval}</CHAR_INTERVAL>
<!— Интервал между символами (можно задавать вручную для каждого поля) -->
<ROW_INTERVAL>{RowInterval}</ROW_INTERVAL>
<!— Интервал между рядами (можно задавать вручную для каждого поля), работает в случае, когда поля лежат между одним тэгом <RECORD>, то есть принадлежат одной строке таблицы -->
</FIELD8>
</RECORD>
</DATA_CURR_DISABIL_CERTIF>
<PATIENTS>
<!— Имя другой таблицы, откуда берутся значения. -->
<RECORD>
<FIELD>
<VALUE>{NOMER_MED_KARTI}</VALUE>
<X>169</X>
<Y>278</Y>
<FONT_NAME>{FontName}</FONT_NAME>
<FONT_SIZE>{FontSize}</FONT_SIZE>
<CHAR_INTERVAL>{CharInterval}</CHAR_INTERVAL>
<ROW_INTERVAL>{RowInterval}</ROW_INTERVAL>
</FIELD>
</RECORD>
</PATIENTS>
<DIAGNOZES>
</DIAGNOZES>
</VARIABLES>
</segments>
<queries>
<!—
SQL-скрипты, которые будут последовательно выполнены перед созданием исходящего сообщения.
<order> - порядок выполнения скрипта (если не указан, то выполняются последовательно)
<type> - open или exec (определяет способ выполнения скрипта)
<name> - можно указать имя запроса.
<text> - текст скрипта.
В скриптах могут использоваться параметры (:PARAM_NAME), которые по имени должны совпадать с системными полями (см. выше) либо с именами полей предыдущих запросов.
Например, первый запрос (типа open) возвращает несколько полей, значение которых можно через параметры использовать во втором и последующих скриптах.
-->
<query>
<name>query1</name>
<type>open</type>
<text>
<!—
Запрос на заполнение параметров печати для всех полей.
-->
select 'Courier' as FontName, 10 as FontSize, 4 as CharInterval, 0 as RowInterval
</text>
</query>
<query>
<name>query2</name>
<type>open</type>
<text>
<!— Запрос для требуемых полей.-->
SELECT TOP 1
(case when PERVICHN_I = 1 then 'v' else '' end) as PERVICH,--первичный
coalesce(NOMER_MEDICISKOJ_KART, N_OMON)as NOMER_MED_KARTI--№ истории болезни
FROM DATA_DISABILITY_CERTIFIC
join DATA_CURR_DISABIL_CERTIF on DATA_CURR_DISABIL_CERTIF.DATA280_ID = DATA_DISABILITY_CERTIFIC.SS_LKA_NA_OTKR_TIE
join PATIENTS on DATA_CURR_DISABIL_CERTIF.patients_id = Patients.patients_id
WHERE DATA376_ID =:P_PARAM
</text>
<!—
:P_PARAM передается с помощью утилиты GetDBDataXML, в которую этот параметр передается утилитой PrintTextWithInterval, которая в свою очередь получает значение из МЕДИАЛОГ.
-->
</query>
</queries>
</CURELIST_QUERY>
</sections>
</hl7>
<?xml version="1.0" encoding="Windows-1251" ?> - <CURELIST_QUERY> - <QUERY_INFO> <PARAM>53</PARAM> <MOTCONSU_ID>{MOTCONSU_ID}</MOTCONSU_ID> <PATIENTS_ID>{PATIENTS_ID}</PATIENTS_ID> <RECORD_ID /> </QUERY_INFO> - <VARIABLES> - <DATA_CURR_DISABIL_CERTIF> - <RECORD> - <FIELD8> <VALUE>v</VALUE> <X>69</X> <Y>11</Y> <FONT_NAME>Courier</FONT_NAME> <FONT_SIZE>10</FONT_SIZE> <CHAR_INTERVAL>4</CHAR_INTERVAL> <ROW_INTERVAL>0</ROW_INTERVAL> </FIELD8> </RECORD> </DATA_CURR_DISABIL_CERTIF> - <PATIENTS> - <RECORD> - <FIELD> <VALUE>1</VALUE> <X>169</X> <Y>278</Y> <FONT_NAME>Courier</FONT_NAME> <FONT_SIZE>10</FONT_SIZE> <CHAR_INTERVAL>4</CHAR_INTERVAL> <ROW_INTERVAL>0</ROW_INTERVAL> </FIELD> </RECORD> </PATIENTS> <DIAGNOZES /> </VARIABLES> </CURELIST_QUERY> |