【问题标题】:Unable to Parse Multiple IN1 Segment in HL7 using HAPI TERSER无法使用 HAPI TERSER 解析 HL7 中的多个 IN1 段
【发布时间】:2016-07-04 20:49:40
【问题描述】:

我正在接收 HL7 消息版本 2.5.1。

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

所以在上面的例子中 IN1 是重复的,但是当我尝试用 TERSER 解析 第二个 IN1 段时,它会抛出异常 "Can '不创建结构 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

【问题讨论】:

  • 邮件头长什么样子?
  • 消息头:MSH|^~\&|Test|test|||20160309072750-0500||OML^O21^OML_O21|f9194efc-6ae2-42ea-ae28-40f8d7500a5a|T|2.5.1 |||AL|NE|||||
  • 不应该是common order group (ORC .)跟随保险组吗?
  • 你有HL7的样品吗?
  • @sqlab - 正如我在我的问题中发布的那样,有一个 ORC 段 - MSH|.. PID|.. PV1|.. ORC|.. IN1|1|... IN1|2 |....

标签: hl7 hapi nhapi


【解决方案1】:

我也刚开始学习 HAPI。我注意到在您的示例中,您没有指定如何解析消息。最重要的是,它使用 terser 解析为通用消息。如果是这样的话,我认为它应该是这样的

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

我相信 Generic Message 没有组,访问此段可能需要使用 IN12 而不是 IN1(1)

【讨论】:

    【解决方案2】:

    您很接近,但您在 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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多