使用Mirth Connect Interoperability server我试图在HL7中构建一条消息。我正在尝试在邮件中添加一些自定义OBX segments,但是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)
如果1已经存在,为什么我不能添加序列号为2的新段?为什么它接受两个以相同序列号开头的OBX线?
欢迎所有提示!
答案 0 :(得分: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是段实例。
答案 1 :(得分: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);