1

我正在维护一个遗留的欢乐系统。我们收到一些带有重复 ZP1.36 段的传入 HL7 消息。据我所知,mirth 是通过 split 函数将这些重复段划分为重复段数组。

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"}

Mirth 的 split 功能似乎不是这样工作的。它似乎正在根据 HL7 消息的假定结构解析消息。

这是怎么回事?我错过了什么吗?mirth 中拆分函数的规则是什么?

交叉发布在 mirth 社区http://www.mirthcorp.com/community/forums/showthread.php?p=26203#post26203

4

2 回答 2

4

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

从本质上讲,Mirth 利用了一些预先存在的技术来处理 HL7 数据。

  1. HAPI(发音为“Happy”):这是一个 Java 代码库,用于将管道分隔的 V2.x HL7 重新解释为 XML。V2.XML格式本身也是官方的 HL7 规范(不要与原生 XML 的 V3 HL7 混淆)。产品名称“Mirth”显然被选为“快乐”的代名词。
  2. E4X:这是用于处理 XML 的 JavaScript 标准。它未能作为标准的 Web 技术获得显着的吸引力,但是,由于它在Rhino JavaScript引擎中的可用性,它被 Mirth 所利用。

从 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']生成一个包含 ZP1 段列表的 E4X XMLList 对象。
于 2012-10-18T09:03:04.773 回答
1

Mirth 留言板上的 Mirth 员工 Dans解释说,拆分功能适用于传入消息的 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();
于 2012-07-06T20:58:51.083 回答