2

我无法使用 terser 或 happi API 解析非标准消息段。段“PV2”多次出现在结构中,其中一次表示为非标准段,这是我用于解析消息的段。

使用 message.printStructure() 后,显示以下结构(示例)。

ADT_A08 (start)
MSH - MSH|^~\&|||||||ADT^A08||P|2.3||||
EVN - Not populated
PID - PID|1||^^^&ISO~^^&~^^^     &ISO~^^^&||^||19230324|F||-1|  ^^ BOXES^CA^81125||||||||
[ PD1 ] - PD1||||^^
[ { NK1 } ] - NK1|1|^|CH||
             NK1|2|^|||
PV1 - PV1|1|I|^MC3706^1|C|||^^^|^^^|^^^|||||1|||^^^|IN||||||||||||||||||||||||||202308211705
[ PV2 ] - Not populated
[ { DB1 } ] - Not populated
PROCEDURE (start)
[{
   PR1 - Not populated
  [ { ROL } ] - Not populated
}]
PROCEDURE (end)
[ { GT1 } ] - GT1|1||^||  ^^^^|(408)-283-1928|||||SLF|828-46-4375||||INFORMATION UNAVAILABLE
[ { PV22 } ] (non-standard) - PV2||ABC|^XYZ
.
.
.
ADT_A08 (end) 

我需要获得任何 PV2 非标准段的字段。我可以通过使用 terser 或 HAPI API 来获取“PV22”段的值。(但不是预期用途)

terser.get("/.PV22-3-2");  // outputs XYZ

知道唯一的“PV2”作为段名,我如何获得“PV2”非标准值???

terser.get("/.PV2-3-2"); // outputs null

但我希望使用“PV22”时的输出。IE。输出应该是“XYZ”。我如何实现它?提前致谢。!!!!!!

4

2 回答 2

4

原因是您的 PV2 段在源消息中的位置错误。它应该紧跟在 PV1 段之后,在这种情况下它将被正常解析。

因为它位于消息的末尾,所以它被解析为非标准段,HAPI 在末尾添加“2”以将其与标准 PV1 段区分开来。

于 2016-09-28T21:10:19.597 回答
1

James Agnew 是 Master,所以他的回答非常明确。我对 HL7 或 HAPI 的了解几乎没有他那么多。关键可能是:如果您的消息是非标准的(就像 PV2 附加到末尾一样),您可能无法从 HAPI 获得您想要的一切。这不是魔术。如果您为这种情况编写一些自定义代码,AbstractGroup.getNonStandardNames() 似乎确实为您提供了足够的访问权限以在运行时检测 PV22。在我看来,简洁的框架就像一个方便的框架,可用于处理严格遵守标准的消息;对于不太一致的消息,您必须做更多的工作。

于 2016-10-04T00:27:53.830 回答