HL7 Hapi获得非标准段,段名称出现在标准段

时间:2016-09-27 10:16:42

标签: java hl7 hapi

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

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

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”。即。输出应为“XYZ”。 我该如何实现? 提前致谢。!!!!!!

2 个答案:

答案 0 :(得分:1)

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

因为它位于邮件的末尾,所以它被解析为非标准段,HAPI会添加" 2"最后将其与标准PV1细分市场区分开来。

答案 1 :(得分:1)

James Agnew是大师,所以他的回答非常明确。我不像他那样了解HL7或HAPI。重点可能是:如果您的消息是非标准的(因为PV2固定在最后),您可能无法从HAPI获得所需的一切。这不是魔术。如果您为该情况编写一些自定义代码,AbstractGroup.getNonStandardNames()似乎确实为您提供了在运行时检测PV22的足够访问权限。在我看来,terser就像一个便利框架,可用于处理与标准密切相关的消息;对于不太符合要求的消息,你必须做更多的工作。