2012-07-03 22 views
0

我正在维护一个传统的欢乐系统。我们得到一些带有重复ZP1.36段的传入HL7消息。据我所知,欢乐是通过分裂函数将这些重复段分成重复段的数组。javascript分裂函数在欢乐中有特殊含义吗?

var repeat36 = msg['ZP1']['ZP1.36'].toString().split("</ZP1.36>"); //I think returns an array of ZP1.36 segments 

但在原始数据,我没有看到串ZP1.36 ...

我已经习惯了在VB /的Java/C#中使用拆分函数的字符串分割成标记周围一个特定的字符,如下所示:

var myTokens = "hello^world".toString().Split("^"); //returns a 2 item array {"hello", "world"} 

快乐的分裂功能似乎并没有这样工作。它似乎是基于假设的HL7消息结构来解析消息。

这是怎么回事?我错过了什么吗?快乐中分裂功能的规则是什么?

上欢乐社区http://www.mirthcorp.com/community/forums/showthread.php?p=26203#post26203

回答

3

我知道你已经找到并接受了你的问题的充分答案(转贴自Mirth论坛),但我认为在单独的答案中提供更多信息可能会有所帮助。

为了与HL7数据一起工作,Mirth的核心是利用一对现有技术。

  1. HAPI(发音为“Happy”):这是一个Java代码库,用于将管道分隔的V2.x HL7重新解释为XML。 V2.XML format本身也是官方的HL7规范(不要与V3 HL7本身是XML混淆)。产品名称“欢乐”显然被选为“快乐”的同义词。
  2. E4X:这是使用XML的JavaScript标准。它作为一种标准的网络技术未能获得显着的吸引力,然而,由于Mirth在Rhino JavaScript引擎中的可用性,它被杠杆化。

从例子是丹斯在欢乐论坛提供你:这片段是在HL7诉标准的XML格式

。2倍:

<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是保持E4X XML对象HL7数据
  • msg['ZP1']产生一个E4X XMLList对象,它包含ZP1段的列表。
+0

谢谢。这更好地解释了它。 – bernie2436

+0

@csj你真的确定它使用'hapi'而不是'mule'来处理HL7数据。我看到了许多骡子的例外...... – Sid

+1

Mule被用作路由引擎......至少它是。最新版本的Mirth有自己的家酿版本叫驴(这可能是我知道的一个骡叉)。 Mirth Corp的那些人喜欢他们的文字游戏。 – csj

1

丹斯跨贴,一个欢乐的员工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();