无法使用HAPI TERSER解析HL7中的多个IN1段

问题描述 投票:2回答:2

我收到HL7消息版本2.5.1。

MSH|..
PID|..
PV1|..
ORC|..
IN1|1|...
IN1|2|....

因此在上面的示例中,IN1重复,但是当我尝试使用TERSER解析第二个IN1段时,它会抛出异常“无法创建结构IN1的重复#1 - 此结构不重复”。

This is what i have tried so far

    string insurance = terser.Get("/.INSURANCE/.IN1(0)-1"); // Works fine
    string insurance = terser.Get("/.INSURANCE/.IN1(1)-1"); // Throws exception
string insurance = terser.Get("/.INSURANCE(0)/.IN1(0)-1"); // Works fine
    string insurance = terser.Get("/.INSURANCE(1)/.IN1(0)-1"); // Throws exception
hl7 hapi nhapi
2个回答
1
投票

我刚刚开始学习HAPI。我注意到在您的示例中,您没有指定解析消息的方式。最喜欢的是,它使用terser解析为通用消息。如果是这种情况,我认为应该看起来像这样

string insurance = terser.Get("/.INSURANCE/.IN12-1"); 

我相信通用消息没有组,并且访问此段可能需要使用IN12而不是IN1(1)


1
投票

你很接近,但你在IN1上使用的重复组不是重复段。请记住,保险集团正在重复不在内的细分市场:

Try:

/.INSURANCE(0)/.IN1-1"

/.INSURANCE(1)/.IN1-1"




"/.INSURANCE(1)/.IN1(0)-1" 

works because there's only one IN1 segment in the group (rep 0 defaults to the 1st segment in the group):

Terser api上阅读关于群组的部分:

...

group_spec:[“。”] group_name_pattern

在这里,一个。表示应从消息中的当前位置开始搜索组(使用SegmentFinder)。通配符“”和“?”表示任意数量的任意字符和单个任意字符。例如,“M”和“?S?”匹配MSH。将匹配名称与给定group_name_pattern匹配的第一个组。

segment_spec类似于group_spec。

作为另一个示例,SIU_S12消息中的以下子组件:

msg.getSIU_S12_RGSAISNTEAIGNTEAILNTEAIPNTE(1).getSIU_S12_AIGNTE()getAIG()getResourceGroup(1).getIdentifier()。;

...

/ SIU_S12_RGSAISNTEAIGNTEAILNTEAIPNTE(1)/ SIU_S12_AIGNTE / AIG-5(1)-1 / AIG(1)/ SIU_S12_AIGNTE / AIG-5(1)-1 /AIG(1)/.AIG- 5(1)

搜索功能仅迭代每个组的rep 0。因此,如果需要此示例中第一组的rep 0而不是rep 1,则以下语法也可以工作(因为SUI_S12中只有一个AIG段位置):

/.AIG-5(1)

© www.soinside.com 2019 - 2024. All rights reserved.