У меня есть исходное сообщение из базы данных 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 на имя переменной.