我收到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
我刚刚开始学习HAPI。我注意到在您的示例中,您没有指定解析消息的方式。最喜欢的是,它使用terser解析为通用消息。如果是这种情况,我认为应该看起来像这样
string insurance = terser.Get("/.INSURANCE/.IN12-1");
我相信通用消息没有组,并且访问此段可能需要使用IN12而不是IN1(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)