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

时间:2016-03-18 07:33:51

标签: hl7 hapi nhapi

我正在接收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

2 个答案:

答案 0 :(得分:1)

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

- config
  - elasticsearch.yml

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

答案 1 :(得分:1)

您很近,但是您正在IN1上使用一个重复组,它不是一个重复片段。请记住,INSURANCE组正在重复其中的段,而不是:

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();

     

...

     以下所有location_spec均引用

:   / 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,   以下语法也可以使用(因为只有一个AIG   段在SUI_S12中的位置):

     

/。AIG-5(1)