HAPI strozzatori su HL7 Z-segmenti
Domanda
Sto cercando di utilizzare HAPI per analizzare HL7 messaggi (v2.3) generati da un esterno sistema. Questi messaggi includono segmenti Z personalizzati, tra cui il secondo segmento del messaggio (tra il MSH e EVN).
MSH
Z
EVN
...
Il problema è che per qualsiasi segmento analizzati dopo rilevare questo primo segmento Z, HAPI genererà la struttura del messaggio ma tutti i dati in tale struttura è nullo. Quindi, io sarò ancora avere un oggetto segmento EVN, ma non avrà alcun dato in esso.
Ho provato:
- Niente, solo analizzare il messaggio con out-of-the-box HAPI, e ignorare questo segmento
- L'estensione HAPI creando le mie classi di messaggi ADT (estendendo le classi di default) che collegano nel segmento Z con:
- addNonstandardSegment ()
- add () con un'implementazione personalizzata di AbstractSegment
La mia soluzione attuale è quella di pre-analizzare il messaggio prima di HAPI ottiene e ritagliare questo segmento, ma questo è sicuramente l'approccio sbagliato. Qualcuno ha idee su cosa dovrei fare?
Soluzione
ottenuto. Si scopre che, a causa del fuori-luogo Z-segmento (più su questo più avanti), l'oggetto EVN veniva catalogato internamente come "EVN2" e un secondo vuoto EVN veniva aggiunto. Io non sono molto sicuro perché il codice si è comportato in questo modo, ma mi prendo che in un rapporto problema nel progetto HAPI.
La soluzione è quello di modificare l'estensione del messaggio ADT. Invece di estenderlo e aggiungendo la Z-segmento con this.add () nel mio costruttore sottoclasse, ho dovuto copiare la classe originale ADT_A * e modificare il suo metodo init () per aggiungere la classe segmento Z nell'ordine corretto come previsto messaggio.
A proposito, la soluzione precedente ho detto può essere fatto con un sottoclasse parser, che è valido per il fissaggio dei messaggi rotti -. solo non questo, poiché non è "spezzato" per se