3

I'm trying to use HAPI to parse HL7 (v2.3) messages generated by an external system. These messages include custom Z segments, including the second segment of the message (between MSH and EVN).

MSH
Z
EVN
...

The problem is that for any segments parsed after encountering this first Z segment, HAPI will generate the message structure but all data in that structure is null. So, I'll still have an EVN segment object, but it won't have any data in it.

I've tried:

  • Nothing, just parse the message with out-of-the-box HAPI, and ignore this segment
  • Extending HAPI by creating my own ADT message classes (extending the default classes) connecting in the Z segment with:
    • addNonstandardSegment()
    • add() with a custom implementation of AbstractSegment

My current workaround is to pre-parse the message before HAPI gets it and cut out this segment, but this is definitely the wrong approach. Does anyone have ideas on what I should be doing?

4

1 に答える 1

2

とった。Z セグメントの位置がずれているため (詳細は後述)、EVN オブジェクトが内部で「EVN2」としてカタログ化され、2 つ目の空白の EVN が追加されていたことがわかりました。よくわかりません。なぜコードがこのように振る舞ったのかはわかりませんが、HAPI プロジェクトの問題レポートで取り上げます。

回避策は、ADT メッセージの拡張子を変更することです。それを拡張し、サブクラス コンストラクターで this.add() を使用して Z セグメントを追加する代わりに、元の ADT_A* クラスをコピーし、その init() メソッドを変更して、期待どおりの適切な順序で Z セグメント クラスを追加する必要がありました。メッセージ。

ところで、私が言及した前の回避策は、サブクラス化されたパーサーで実行できます。これは、壊れたメッセージを修正するのに有効ですが、それ自体は「壊れている」わけではないため、これではありません。

于 2010-01-20T19:59:50.653 に答える