代码之家  ›  专栏  ›  技术社区  ›  G__

HL7 Z段上的HAPI阻塞

  •  3
  • G__  · 技术社区  · 14 年前

    我想用 HAPI 解析外部系统生成的HL7(V2.3)消息。这些消息包括自定义Z段,包括消息的第二段(在MSH和EVN之间)。

    MSH
    Z
    EVN
    ...
    

    问题是,对于遇到第一个z段后解析的任何段,HAPI将生成消息结构,但该结构中的所有数据都为空。所以,我仍然有一个EVN段对象,但它不会包含任何数据。

    我试过了:

    • 什么都没有,只是用开箱即用的hapi解析消息,忽略这个段
    • 通过创建自己的ADT消息类(扩展默认类)来扩展HAPI,在Z段中使用以下方法连接:
      • 添加非标准段()
      • 带有abstractSegment自定义实现的add()。

    我目前的解决方法是在hapi得到消息之前对其进行预分析,并去掉这个部分,但这绝对是错误的方法。有人对我应该做什么有想法吗?

    1 回复  |  直到 13 年前
        1
  •  2
  •   G__    14 年前

    知道了。结果是,由于Z段不在原位(更多内容见下文),EVN对象正在内部编目为“EVN2”,并添加了第二个空白EVN。我不太清楚代码为什么会这样做,但我会在HAPI项目的一个问题报告中提到这一点。

    解决方法是更改ADT消息的扩展。我不需要扩展它并在子类构造函数中用这个.add()添加z段,而是必须复制原始的adt_a*类并修改其in it()方法,以正确的顺序添加z段类作为预期的消息。

    顺便说一句,我前面提到的解决方法可以用 subclassed parser 这对于修复断开的消息是有效的-而不是这个消息,因为它本身并不是“断开的”。