Я работаю с Mirth Connect v2.0 и застрял на одной задаче, преобразовании XML в HL7 v3. Я подключился к базе данных Ms-Access (больничная система находится в Access), я настроил канал и установил тип соединителя на File Writer на вкладке назначения. Когда я развертываю канал, я вижу, что файл журнала заполнен записями в формате XML, теперь я застрял в том, как преобразовать/преобразовать сообщение XML в HL7. Любые указатели там?
Преобразование сообщений XML в HL7 с помощью Mirth Connect
Ответы (3)
На вкладке Сводка канала
Нажмите «Установить типы данных» и убедитесь, что для исходного входящего трафика установлено значение XML, для исходящего исходящего трафика установлено значение HL7 v3, а для исходящего целевого — HL7 v3.
На вкладке Источник нажмите Редактировать преобразователь на левой боковой панели.
В окне Edit Transformer слева выберите вкладку Шаблоны сообщений.
Вы можете загрузить образцы файлов в шаблоны Входящие и Исходящие, используя маленькие значки папок.
Вы можете перетаскивать узлы между входящим и исходящим шаблонами, чтобы создать преобразование.
Это довольно стандартные вещи Мирта, так что я надеюсь, что не упростил. Надеюсь, это поможет вам двигаться в правильном направлении.
Я конвертирую XML в hl7, используя образцы XML-данных, вы можете использовать свои собственные. Вы можете вставить приведенный ниже код в кислый трансформатор:
var length = msg['orderList']['order'].length();
var rcount = 0;
for(var i=0;i<length;i++)
{
var SEG = new XML("<OBR/>");
SEG['OBR.1']['OBR.1.1']=i+1;
SEG['OBR.16']['OBR.16.1']=msg['orderList']['order'][i]['provider'].toString();
tmp['OBR'][i]=SEG;
var reslen = msg['orderList']['order'][i]['result'].length();
logger.info(reslen);
for(var j=0;j<reslen;j++)
{
var RSEG = new XML("<OBX/>");
RSEG['OBX.1']['OBX.1.1'] = rcount;
RSEG['OBX.3']['OBX.3.1'] = msg['orderList']['order'][i]['result'][j]['resultcode'].toString();
RSEG['OBX.3']['OBX.3.2']=msg['orderList']['order'][i]['result'][j]['text'].toString();
RSEG['OBX.7'] = msg['orderList']['order'][i]['result'][j]['range'].toString();
RSEG['OBX.6']['OBX.6.2'] = msg['orderList']['order'][i]['result'][j]['unit'].toString();
tmp['OBX'][rcount]=RSEG;
rcount++;
}
}
logger.info(**SerializerFactory.getSerializer('HL7V2').fromXML(tmp)**);
Не забудьте создать шаблон HL& в исходном коде.
**MSH|^~\&|||||||||
PID|||||||||||||||||||||||||||
ORC|||||||||||||||||||**
образец XML
<PatientOrder>
<patient>
<name><fullname>XXXXXXXXXXX, XXXX.</fullname><firstname>XXXXX</firstname><lastname>XXXXX</lastname></name>
<address>
<address1>XXXXXX XXXX XXXX Med XXXX</address1><address2>Information XXXXX Fl</address2><address3>XXXX XXXX St </address3><address4>XXXXXX XXXXXX, XX XXXXX</address4><telephone>XXX/XXXX-XXXX</telephone><fax>XXX/XXX-XXX</fax><latitude>X2.XXXXX</latitude><longitude>-X1.XXXXX</longitude></address>
</patient>
<orderList>
<order>
<provider>57423</provider>
<result>result
<resultcode>7685-1</resultcode>
<text>Hemoglobin test2</text>
<resultdate></resultdate>
<range>3to52</range>
<unit>mg</unit>
</result>
<result>result
<resultcode>7685-1</resultcode>
<text>Hemoglobin test2</text>
<resultdate></resultdate>
<range>3to52</range>
<unit>mg</unit>
</result>
</order>
<order>
<provider>57423</provider>
<result>result
<resultcode>7685-1</resultcode>
<text>Hemoglobin test2</text>
<resultdate></resultdate>
<range>3to52</range>
<unit>mg</unit>
</result>
</order>
</orderList>
</PatientOrder>
Вероятно, вы захотите использовать XSLT, но фактический требуемый код будет зависеть от схемы вашей базы данных и от того, как она преобразуется в XML. Решение ВАШЕЙ конкретной проблемы преобразования выходит за рамки рекомендаций для вопросов StackOverflow, если вы не можете сделать вопрос НАМНОГО более конкретным (например, «Я сделал X, ожидая Y, и вместо этого получил Z).
Похоже, что есть много продуктов, которые будут выполнять этот тип преобразования. Я нашел много запросов в Google по запросу «xml to HL7». Я предлагаю вам начать там.