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?

Foi útil?

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ó.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top