Как конвертировать HL7 v2.x в XML в пункте назначения Mirth - PullRequest
1 голос
/ 21 июня 2019

У меня есть исходное сообщение из базы данных SQL. Форматируется так:

<result>
    <rawmessage>A|Full Raw|HL7|Message|is here </rawmessage>
    <id>The-Messages-GUID-FromMSSQL</id>
</result>

Я бы хотел взять информацию из запроса и разделить ее на несколько таблиц, где каждая строка привязана к GUID, связанному с сообщением. Я могу получить необработанное сообщение и преобразовать строку HL7 в XML, но не могу получить данные.

В настоящее время я понимаю, что типы источника и назначения в канале должны быть XML. Я могу получить доступ к идентификатору с помощью msg['id'] и сохранить его на карте канала. Я также могу преобразовать строку HL7 в XML и сохранить ее в переменной (см. Ниже). Когда я пытаюсь получить доступ к сегменту или полю, например, с помощью msg2['OBR']['OBR.2']['OBR.2.1'].toString(), я получаю сообщение Cannot read property "OBR" from undefined на вкладке ошибок и в информации в консоли я получаю Undefined. Если я удаляю ['HL7Message'], я получаю Cannot read property "OBR.2" from undefined в ошибке и <?xml version="1.0" encoding="UTF-8"?><HL7Message><MSH> в информации. Если я определю переменную сопоставления каналов как msg1['OBR.2.1'], она вернется как неопределенная.

Вот мой шаг трансформатора тока:

channelMap.put('Raw Message', msg['rawmessage'].toString());
channelMap.put('Raw GUID', msg['id'].toString());
channelMap.put('XML Message', SerializerFactory.getSerializer('HL7V2').toXML($('Raw Message')));

var msg2 = $('XML Message')['HL7Message'];
logger.info(msg2);

channelMap.put('OBR 2', msg2['OBR.2.1']);

Я бы ожидал получить значение поля, используя нотацию, аналогичную msg['OBR']['OBR.2']['OBR.2.1'].toString() («нормальная» нотация Mirth), заменив msg на имя переменной.

1 Ответ

0 голосов
/ 24 июня 2019

Разница между строками xml и объектами xml. Сериализатор возвращает строку. Это преобразует вашу строку в объект.

var msg2 = new XML($('XML Message'));
...