2016-10-11 13 views
0

Использование Mirth Connect Interoperability server Я пытаюсь построить сообщение в HL7. Я пытаюсь добавить к сообщению ряд пользовательских OBX segments, но Mirth мне тяжело.HL7 с Mirth: Как избежать сегментов с двойными порядковыми номерами?

В моем шаблоне я получил линию, говоря так:

OBX|1|ED|CODE^NAME^COMPANY||^application^pdf^Base64^VeryLongBase64String||||||F 

и пользовательский сценарий я также хочу добавить еще некоторую информацию вручную:

createSegment('OBX', tmp, 1); 
tmp['OBX'][1]['OBX.1']['OBX.1.1'] = 1; 
tmp['OBX'][1]['OBX.2']['OBX.2.1'] = "ST"; 
createSegment('OBX', tmp, 2); 
tmp['OBX'][2]['OBX.1']['OBX.1.1'] = 2; 
tmp['OBX'][2]['OBX.2']['OBX.2.1'] = "ST"; 

Это создает следующее сообщение :

MSH|^~\&|COMPANY|COMPANY|||20161011120822||ORU^R01|0000029|1|2.4|||AL|NE 
PID|1||9999999^^^LOCAL^PI||||19861020|F| 
STUFF^L|||20161011120822|20161011120822| 
OBX|1|ED|Q001^121^THECOMPANY||^application^pdf^Base64^VeryLongBase64String||||||F 
OBX|1|ST 
OBX|2|ST 

Но как вы можете видеть, у меня есть две линии, которые начинаются с OBX|1|, поэтому я изменил закомментирована первые три строки моего сценария, так что я начинаю с OBX|2| с дополнительной информацией:

//createSegment('OBX', tmp, 1); 
//tmp['OBX'][1]['OBX.1']['OBX.1.1'] = 1; 
//tmp['OBX'][1]['OBX.2']['OBX.2.1'] = "ST"; 
createSegment('OBX', tmp, 2); 
tmp['OBX'][2]['OBX.1']['OBX.1.1'] = 2; 
tmp['OBX'][2]['OBX.2']['OBX.2.1'] = "ST"; 

, но это дает мне ошибку, говоря:

Transformer error 
ERROR MESSAGE: Error evaluating transformer 
com.mirth.connect.server.MirthJavascriptTransformerException: 
CHANNEL: test setup 
CONNECTOR: sourceConnector 
SCRIPT SOURCE: TRANSFORMER 
SOURCE CODE:  
46: //createSegment('OBX', tmp, 1); 
47: //tmp['OBX'][1]['OBX.1']['OBX.1.1'] = 1; 
48: //tmp['OBX'][1]['OBX.2']['OBX.2.1'] = "ST"; 
49: createSegment('OBX', tmp, 2); 
50: tmp['OBX'][2]['OBX.1']['OBX.1.1'] = 2; 
51: tmp['OBX'][2]['OBX.2']['OBX.2.1'] = "ST"; 
52: 
LINE NUMBER: 50 
DETAILS: TypeError: Cannot read property "OBX.1" from undefined 
    at 682bcffd-73bf-405b-af83-ba83b19d86ab:50 (doTransform) 
    at 682bcffd-73bf-405b-af83-ba83b19d86ab:126 (doScript) 
    at 682bcffd-73bf-405b-af83-ba83b19d86ab:128 
    at com.mirth.connect.server.transformers.JavaScriptFilterTransformer$FilterTransformerTask.call(JavaScriptFilterTransformer.java:154) 
    at com.mirth.connect.server.transformers.JavaScriptFilterTransformer$FilterTransformerTask.call(JavaScriptFilterTransformer.java:119) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

Почему 't Я добавляю новые сегменты с порядковым номером 2, если 1 уже существует? И почему он принимает две линии OBX, начиная с того же порядкового номера?

Все советы приветствуются!

ответ

0

Попробуйте это:

createSegment('OBX', tmp, 1); 
tmp['OBX'][1]['OBX.1']['OBX.1.1'] = 2; 
tmp['OBX'][1]['OBX.2']['OBX.2.1'] = "ST"; 
createSegment('OBX', tmp, 2); 
tmp['OBX'][2]['OBX.1']['OBX.1.1'] = 3; 
tmp['OBX'][2]['OBX.2']['OBX.2.1'] = "ST"; 

Первый OBX является TMP [ 'OBX'] [0] [ 'OBX.1'] [ 'OBX.1.1'] = 1; Это [0], который является первым экземпляром OBX. поэтому, когда вы добавили «tmp ['OBX»] [1] [' OBX.1 '] [' OBX.1.1 '] = 1; " вы добавили второй OBX | 1 | когда он должен был быть закодирован, как указано выше.

createSegment (segmentName, msg, i) где i - экземпляр сегмента.

0

Вы также можете просто создать элемент XML непосредственно и добавьте сегмент в конце вашего сообщения http://wso2.com/project/mashup/0.2/docs/e4xquickstart.html

var obx = <OBX/>; 
obx['OBX.1']['OBX.1.1'] = 2; 
obx['OBX.2']['OBX.2.1'] = "ST"; 
tmp.appendChild(obx); 

 Смежные вопросы

  • Нет связанных вопросов^_^