簡體   English   中英

帶有Mirth的HL7:如何避免使用雙序列號的Segments?

[英]HL7 with Mirth: How to avoid Segments with double sequence numbers?

我正在使用Mirth Connect互操作性服務器HL7中構造一條消息。 我正在嘗試向消息中添加許多自定義OBX段 ,但是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|開始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行?

歡迎所有提示!

嘗試這個:

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是細分實例。

您也可以直接創建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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM