2016-09-27 93 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,如果您爲這種情況編寫一些自定義代碼。在我看來,這個簡潔的框架可以用來處理與標準密切相關的消息。對於不太一致的消息,你必須做更多的工作。