HAPI engasga nos segmentos Z HL7
Pergunta
estou tentando usar HAPI para analisar mensagens HL7 (v2.3) geradas por um sistema externo.Estas mensagens incluem segmentos Z personalizados, incluindo o segundo segmento da mensagem (entre MSH e EVN).
MSH
Z
EVN
...
O problema é que para qualquer segmento analisado após encontrar este primeiro segmento Z, o HAPI gerará a estrutura da mensagem, mas todos os dados nessa estrutura serão nulos.Portanto, ainda terei um objeto de segmento EVN, mas não conterá nenhum dado.
Eu tentei:
- Nada, apenas analise a mensagem com HAPI pronto para uso e ignore este segmento
- Estendendo o HAPI criando minhas próprias classes de mensagens ADT (estendendo as classes padrão) conectando-se no segmento Z com:
- addNonstandardSegment()
- add() com uma implementação personalizada de AbstractSegment
Minha solução atual é pré-analisar a mensagem antes que o HAPI a receba e cortar esse segmento, mas essa é definitivamente a abordagem errada.Alguém tem idéias sobre o que eu deveria estar fazendo?
Solução
Entendi.Acontece que, devido ao segmento Z fora do lugar (mais sobre isso abaixo), o objeto EVN estava sendo catalogado internamente como "EVN2" e um segundo EVN em branco estava sendo adicionado.Não sei bem por que o código se comportou dessa maneira, mas abordarei isso em um relatório de problemas no projeto HAPI.
A solução alternativa é alterar a extensão da mensagem ADT.Em vez de estendê-lo e adicionar o segmento Z com this.add() em meu construtor de subclasse, tive que copiar a classe ADT_A* original e modificar seu método init() para adicionar a classe do segmento Z na ordem correta conforme o esperado mensagem.
Aliás, a solução alternativa anterior que mencionei pode ser feita com um analisador subclassificado, que é válido para consertar mensagens quebradas - mas não esta, já que não está "quebrada" por si só.