HAPI задыхается на HL7 Z-сегментах
Вопрос
Я пытаюсь использовать Хапи Для анализа сообщений HL7 (v2.3), сгенерированных внешней системой. Эти сообщения включают пользовательские сегменты Z, включая второй сегмент сообщения (между MSH и EVN).
MSH
Z
EVN
...
Проблема заключается в том, что для любых сегментов проанализировано после встречи с этим первым сегментом Z, HAPI будет генерировать структуру сообщения, но все данные в этой структуре являются нулевыми. Итак, у меня все еще будет объект сегмента EVN, но в нем не будет никаких данных.
Я пытался:
- Ничего, просто проанализируйте сообщение с необоснованным HAPI и игнорируйте этот сегмент
- Расширение HAPI, создав мои собственные классы сообщений ADT (расширение классов по умолчанию), подключаясь в сегменте Z с:
- addnonstandardsegment ()
- add () с помощью пользовательской реализации абстрактного разбора
Мой текущий обходной путь состоит в том, чтобы предварительно перенаправить сообщение до того, как HAPI получит его и вырезает этот сегмент, но это определенно неправильный подход. У кого -нибудь есть идеи о том, что я должен делать?
Решение
Понятно. Оказывается, что из-за внеклассного Z-сегмента (подробнее об этом ниже), объект EVN был каталогизирован внутренне как «evn2», и был добавлен второй пустой EVN. Я не совсем уверен Почему код вел себя таким образом, но я воспользуюсь этим в отчете о выпуске в проекте HAPI.
Обходной путь состоит в том, чтобы изменить расширение сообщения ADT. Вместо того, чтобы расширить его и добавлять Z-сегмент с этим. ADD () в моем конструкторе подкласса, мне пришлось скопировать исходный класс ADT_A* и изменить его метод init (), чтобы добавить класс сегмента Z в соответствующий заказ в качестве ожидаемого сообщение.
Кстати, предыдущий обходной путь, который я упомянул, можно сделать с помощью Подклассный анализатор, который действителен для исправления сломанных сообщений - только не этот, так как он не «сломан» как таковой.