MERTH: перезаписать объект MSG с содержимым в объекте XML
Вопрос
Задача состоит в том, чтобы отправить объект XML из канала-A на канал B
<MyMessage>
<ID>42</ID>
<hl7v2>
MSH|^~\&|LAB|....
PID|1|....
</hl7v2>
</MyMessage>
Шаги связи канала:
- В исходном трансформаторе канала B извлеките содержимое HL7V2
- Перезаписать текущий объект MSG в канале 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 );
Ссылка на полноразмерное изображение
Вопрос: У вас есть какие -либо предложения о том, как перезаписать объект MSG?
Как я могу начать ссылаться на MSG как таковое:
msg['PID']['PID.5']
Текущие условия
- Тип ввода приемного канала - XML
- Необходимость состоит в том, чтобы извлечь все свойства из этого объекта XML; ID - это база данных PK, которая будет использоваться позже в пункте назначения.
Решение
Мне жаль, что мой первоначальный ответ был увязен от особенностей моего собственного сценария. Я переработал и протестировал, чтобы убедиться, что это работает в вашем сценарии.
Отправка канала - завершает необработанный HL7 в вашу XML -структуру, и перемещается на канал, который называется CETEXML. Я закодировал это в исходном трансформаторе, но вы должны кодировать его там, где он работает для вас.
var wrappedHL7 = <MyMessage><ID>123</ID>
<hl7v2>{messageObject.getRawData()}</hl7v2>
</MyMessage>;
router.routeMessage("ReceiveXML", wrappedHL7);
Прием канал - извлекает HL7 из XML, преобразует его в XML и назначает обратно в объект MSG. Я закодировал это в исходном фильтре - следовательно, «вернуть истин»;
msg = new XML(SerializerFactory.getHL7Serializer(false,false,true).toXML(msg['hl7v2'].toString()));
return true;
Другие советы
Все, что вам нужно сделать, это поместить входящее XML -сообщение в область входящего шаблона в веселье, а затем использовать дерево сообщений, чтобы перетаскивать информацию из XML, которая необходима в разделе JavaScript разъема.