Mirth: перезаписать объект msg содержимым в объекте XML - PullRequest
1 голос
/ 16 декабря 2009

Задача - отправить объект XML с канала A на канал B

<MyMessage>
<ID>42</ID>
<hl7v2>
    MSH|^~\&|LAB|....
    PID|1|....
</hl7v2>
</MyMessage>

Шаги канала связи:

  • в исходном трансформаторе Channel-B, извлечь содержимое HL7v2
  • ПЕРЕЗАПИСАТЬ текущий объект сообщения в канале B с извлеченным содержимым
  • продолжить в других исходных трансформаторах канала B и ожидать ссылки msg['PID']['PID.5'] как обычно.

Хорошей новостью является то, что я могу извлечь полезную нагрузку HL7v2 в переменную. Проблема или трудность заключается в сбросе объекта msg или любого другого объекта, чтобы иметь возможность ссылаться на свойства HL7, как ожидалось.

Когда я создаю новую переменную с SerializerFactory.getHL7Serializer, она оборачивается тегами <HL7Message>.

channelMap.put('MessageID', msg['ID']); //successful
channelMap.put('v2payload',msg['HL7v2']); //also looks good

var v2Msg = SerializerFactory.getHL7Serializer(false,false,true).toXML(msg['HL7v2']);

channelMap.put('v2Msg', v2Msg );

alt text ссылка на полноразмерное изображение

Вопрос : Есть ли у вас какие-либо предложения о том, как перезаписать объект msg?

Как я могу начать ссылаться на сообщение как на следующее:

msg['PID']['PID.5']

Текущие условия

  • тип входного канала приема - XML ​​
  • необходимо извлечь все свойства из этого объекта XML; ID - это база данных PK, которая будет использоваться позже в пункте назначения.

Ответы [ 2 ]

2 голосов
/ 16 декабря 2009

Извините, мой первоначальный ответ увяз с особенностями моего собственного сценария. Я переработал и проверил, чтобы убедиться, что это работает в вашем сценарии.

Отправка канала - включает необработанный hl7 в структуру xml и пересылает в канал с именем ReceiveXML. Я закодировал это в Source Transformer, но вы должны закодировать его там, где он работает.

var wrappedHL7 = <MyMessage><ID>123</ID>
                      <hl7v2>{messageObject.getRawData()}</hl7v2>
                 </MyMessage>;

router.routeMessage("ReceiveXML", wrappedHL7);

Receiving Channel - извлекает hl7 из xml, преобразует его в xml и присваивает обратно объекту msg. Я закодировал это в исходном фильтре - следовательно, «верните истину»

msg = new XML(SerializerFactory.getHL7Serializer(false,false,true).toXML(msg['hl7v2'].toString()));
return true;
0 голосов
/ 31 марта 2010

Все, что вам нужно сделать, это поместить ваше входящее XML-сообщение во входящую область шаблона в mirth, а затем использовать дерево сообщений для перетаскивания информации из XML, которая вам нужна, в раздел javascript соединителя.

...