В настоящее время я создаю посреднический поток, работающий над HL7. Я получаю HL7s через MLLP. Затем я клонирую сообщение на 2 части. В первом я фильтрую тип сообщения, который работает хорошо. Тогда я просто хочу переслать сообщение в систему MLLP, но я не вижу, как это сделать. Во второй части я хочу написать HL7 в каталоге. Я могу создать файл, но содержимое написано в формате XML, а не в формате hl7. Вот содержимое моей последовательности:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="NormalSeq" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<propertyGroup>
<property expression="//hl7:MSG.1[1]/text()" name="HL7_TYPE" scope="default" type="STRING" xmlns:hl7="urn:hl7-org:v2xml"/>
<property expression="//hl7:MSG.2[1]/text()" name="HL7_SUBTYPE" scope="default" type="STRING" xmlns:hl7="urn:hl7-org:v2xml"/>
</propertyGroup>
<clone>
<target>
<sequence>
<log>
<property name="ROUTE" value="MED_EQUIPMENT"/>
</log>
<filter regex="true" source="get-property('HL7_TYPE') = 'ADT' and get-property('HL7_SUBTYPE') = 'A04'">
<then>
<log>
<property name="FOR_MED_EQU" value="YES"/>
</log>
<call>
<endpoint key="HL7MEDEQU"/>
</call>
</then>
<else>
<log>
<property name="FOR_MED_EQU" value="NO"/>
</log>
<drop/>
</else>
</filter>
</sequence>
</target>
<target>
<sequence>
<propertyGroup>
<property name="ROUTE" scope="default" type="STRING" value="LAB"/>
<property expression="fn:concat(get-property('SYSTEM_DATE', 'yyyyMMdd.HHmmssSSS'), '.hl7')" name="transport.vfs.ReplyFileName" scope="transport" type="STRING"/>
<property name="OUT_ONLY" scope="default" type="STRING" value="true"/>
</propertyGroup>
<log>
<property expression="get-property('transport.vfs.ReplyFileName')" name="FILENAME"/>
<property expression="fn:concat(get-property('SYSTEM_DATE', 'yyyyMMdd.HHmmssSSS'), '.hl7')" name="SYSDATE"/>
</log>
<send>
<endpoint key="HL7_Lab_EP"/>
</send>
</sequence>
</target>
<target>
<sequence/>
</target>
</clone>
</sequence>
вот код входящего-конечного:
<?xml version="1.0" encoding="UTF-8"?>
<inboundEndpoint name="HL7GW" onError="FaultSeq" protocol="hl7" sequence="NormalSeq" suspend="false" xmlns="http://ws.apache.org/ns/synapse">
<parameters>
<parameter name="inbound.hl7.Port">2000</parameter>
<parameter name="inbound.hl7.AutoAck">true</parameter>
<parameter name="inbound.hl7.TimeOut">10000</parameter>
<parameter name="inbound.hl7.CharSet">UTF-8</parameter>
<parameter name="inbound.hl7.ValidateMessage">true</parameter>
<parameter name="inbound.hl7.BuildInvalidMessages">true</parameter>
<parameter name="inbound.hl7.PassThroughInvalidMessages">true</parameter>
</parameters>
</inboundEndpoint>
, а вот код конечных точек:
<?xml version="1.0" encoding="UTF-8"?>
<endpoint name="HL7_ECG_EP" xmlns="http://ws.apache.org/ns/synapse">
<address uri="hl7://localhost:2001">
<suspendOnFailure>
<initialDuration>-1</initialDuration>
<progressionFactor>1.0</progressionFactor>
</suspendOnFailure>
<markForSuspension>
<retriesBeforeSuspension>0</retriesBeforeSuspension>
</markForSuspension>
</address>
</endpoint>
<?xml version="1.0" encoding="UTF-8"?>
<endpoint name="HL7_Lab_EP" xmlns="http://ws.apache.org/ns/synapse">
<address uri="vfs:file:///c:/temp/hl7">
<suspendOnFailure>
<initialDuration>-1</initialDuration>
<progressionFactor>1.0</progressionFactor>
</suspendOnFailure>
<markForSuspension>
<retriesBeforeSuspension>0</retriesBeforeSuspension>
</markForSuspension>
</address>
</endpoint>
Подводя итог, я хотел бы: 1. Отправить HL7 в MLLP в системе, внешней по отношению к ESB 2. Сохранить эти HL7 в каталоге в формате HL7, а не в XML, как показано ниже:
MSH|^~\&|HL7Soup|Instance1|HL7Soup|Instance2|200808181126|SECURITY|ADT^A04|MSG00001|P|2.5.1
EVN|A01-|200808181123|
PID||77291|PATID1234^9^55A||Smith^Willian^A^III||19720415|M-||2106-3|555 Upper Harbour Rd^^Springfield^NC^3401-540|NN|(919)479-4354|(919)371-654~(919)377-3455||S|AGN|PATID12345001^2^R10|1234567890|A-84334^NC
NK1|1|Smith^Barbara^K|SPO|||||20011105
NK1|1|Smith^Bill^A|FTH
PV1|1|I|2000^2012^01||||004777^LEBAUER^SIDNEY^J.|||SUR||-||1|A0-
AL1|1||^PENICILLIN||PRODUCES HIVES~RASH
AL1|2||^CAT DANDER
DG1|001|I9|1550|MAL NEO LIVER, PRIMARY|20080501103005|F||
PR1|2234|M11|111^CODE151|COMMON PROCEDURES|200809081123
ROL|45^RECORDER^ROLE MASTER LIST|AD|CP|34622^SMITH^JILL|200805011201
GT1|1122|1519|BILL^GATES^A
IN1|001|A357|1234|BCMD|||||132987
IN2|ID1551001|SSN12345678
Любая помощь будет принята с благодарностью.