我正在维持传统的欢乐系统。我们得到一些带有重复ZP1.36段的传入HL7消息。据我所知,欢乐通过分裂函数将这些重复段分成重复段的数组。
var repeat36 = msg['ZP1']['ZP1.36'].toString().split("</ZP1.36>"); //I think returns an array of ZP1.36 segments
但在原始数据中,我没有看到字符串ZP1.36 ......
我习惯在VB / Java / C#中使用split函数,将字符串分成特定字符周围的标记,如下所示:
var myTokens = "hello^world".toString().Split("^"); //returns a 2 item array {"hello", "world"}
Mirth的分裂功能似乎没有这种方式。它似乎是基于HL7消息的假定结构来解析消息。
这是怎么回事?我错过了什么吗?分裂功能在欢笑中的规则是什么?
交叉发布在欢乐社区http://www.mirthcorp.com/community/forums/showthread.php?p=26203#post26203
答案 0 :(得分:4)
我知道您已经找到并接受了对您的问题的充分答复(转自Mirth论坛),但我认为在单独的答案中提供更多信息可能会有所帮助。
Mirth的核心是利用一些预先存在的技术来处理HL7数据。
来自Dans在Mirth论坛上为您提供的示例:
此代码段采用HL7 v.2x的标准XML格式:
<ZP1.36>
<ZP1.36.1>Hello</ZP1.36.1>
<ZP1.36.2>World</ZP1.36.2>
<ZP1.36>
此JavaScript代码使用E4X表示法来解析和访问已重新解释为E4X XML和XMLList数据类型的HL7数据:
var zp1361 = msg['ZP1']['ZP1.36']['ZP1.36.1'].toString();
var zp1362 = msg['ZP1']['ZP1.36']['ZP1.36.2'].toString();
msg
是保存HL7数据的E4X XML对象msg['ZP1']
生成一个E4X XMLList对象,其中包含ZP1段列表。答案 1 :(得分:1)
Dans,一位Mirth员工on the Mirth message boards解释说,拆分功能适用于传入消息的xml转换。
所以基本上,你正在使用xml,而ZP1.36已经拆分了:
<ZP1.36>
<ZP1.36.1>Hello</ZP1.36.1>
<ZP1.36.2>World</ZP1.36.2>
<ZP1.36>
如果你想获得各种子元素,你可以这样做:
var zp1361 = msg['ZP1']['ZP1.36']['ZP1.36.1'].toString();
var zp1362 = msg['ZP1']['ZP1.36']['ZP1.36.2'].toString();