Дроссели HAPI на Z-сегментах HL7 - PullRequest
3 голосов
/ 20 января 2010

Я пытаюсь использовать HAPI для анализа сообщений HL7 (v2.3), сгенерированных внешней системой. Эти сообщения включают в себя пользовательские сегменты Z, включая второй сегмент сообщения (между MSH и EVN).

MSH
Z
EVN
...

Проблема в том, что для любых сегментов, проанализированных после обнаружения этого первого Z-сегмента, HAPI сгенерирует структуру сообщения, но все данные в этой структуре будут нулевыми. Итак, у меня все еще будет объект сегмента EVN, но в нем не будет никаких данных.

Я пробовал:

  • Ничего, просто проанализируйте сообщение с помощью готового HAPI и игнорируйте этот сегмент
  • Расширение HAPI путем создания моих собственных классов сообщений ADT (расширение классов по умолчанию), соединяющихся в сегменте Z с помощью:
    • addNonstandardSegment ()
    • add () с пользовательской реализацией AbstractSegment

Мой текущий обходной путь - предварительно проанализировать сообщение, прежде чем HAPI его получит, и отключить этот сегмент, но это определенно неправильный подход. У кого-нибудь есть идеи о том, что мне следует делать?

1 Ответ

2 голосов
/ 20 января 2010

Понял. Оказывается, из-за неуместного Z-сегмента (подробнее об этом ниже) объект EVN был каталогизирован внутри как «EVN2», а второй пустой EVN был добавлен. Я не совсем уверен почему код вел себя так, но я расскажу об этом в отчете о проблеме в проекте HAPI.

Обходной путь - изменить расширение сообщения ADT. Вместо того, чтобы расширять его и добавлять Z-сегмент с помощью this.add () в моем конструкторе подкласса, мне пришлось скопировать исходный класс ADT_A * и изменить его метод init (), чтобы добавить класс Z-сегмента в правильном порядке, как и ожидалось. сообщение.

Кстати, предыдущий обходной путь, о котором я упоминал, может быть выполнен с помощью подклассного синтаксического анализатора , который действителен для исправления поврежденных сообщений, но только не этого, поскольку он не "сломан" по сути. *

...