【问题标题】:HL7 with Mirth: How to avoid Segments with double sequence numbers?HL7 with Mirth:如何避免带有双序列号的段?
【发布时间】:2016-10-11 11:25:04
【问题描述】:

使用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 行?

欢迎所有提示!

【问题讨论】:

    标签: javascript hl7 mirth hl7-v2


    【解决方案1】:

    试试这个:

    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;这是第一个 OBX 实例的 [0]。所以当你添加“tmp['OBX'][1]['OBX.1']['OBX.1.1'] = 1;”您添加了第二个 OBX|1|什么时候应该像上面那样编码。

    createSegment(segmentName, msg, i) 其中 i 是段实例。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2018-12-23
        • 2022-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-03
        • 1970-01-01
        • 2014-03-21
        相关资源
        最近更新 更多