2016-09-27 95 views
1

我无法使用terser或happi API解析非标准消息段。 段“PV2”存在于结构多个时间段中,其中一段称为非标准段,它是我的分段消息段。HL7 Hapi获得非标准段,标准段中出现段的名称

使用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非标准段的字段。我可以用更简洁或高致病性禽流感API来获取的部分“PV22”的数值。(但不作为用途)

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

如何获得“PV2”非标值知道只有“PV2 “作为细分名称?

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

但我期望输出为使用“PV22”。即。输出应该是“XYZ”。 我该如何实现它? 提前致谢!!!!!!

回答

1

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

由于它位于消息的末尾,因此它被解析为非标准段,HAPI在末尾添加“2”以区别于标准PV1段。

+0

是的。 Group API指定如果名称已经使用过,它可能会附加一个数字。但是我想知道在RUNTIME时我的PV2是标准还是非标准。我可以通过使用显示PV22的AbstractGroup.getNonStandardNames()来获得非标准段的列表,但是我想要使用terser来获取PV2值的值,而不管标准还是非标准。比如使用terser.get(“/。PV2-3-2”),不指定PV22。 –

1

詹姆斯阿格纽是主人,所以他的回答非常明确。我对HL7或HAPI的了解程度与他的差不多。重点可能在于:如果您的信息不符合标准(因为PV2已贴上标签),您可能无法从HAPI获得所需的一切。这不是魔术。 AbstractGroup.getNonStandardNames()似乎为您提供足够的访问权限来在运行时检测PV22,如果您为这种情况编写一些自定义代码。在我看来,这个简洁的框架可以用来处理与标准密切相关的消息。对于不太一致的消息,你必须做更多的工作。