From an issue posted to the mailing list. It would be nice if the PipeParser provided a way of hinting where unexpected segments should go. Possibly something along the lines of
theParser.setUnexpectedSegmentBehaviour(ADD_TO_ROOT);
..and..
theParser.setUnexpectedSegmentBehaviour(ADD_INLINE);
Original message from Michael Connor follows:
We’ve got a message where we want to have a custom segment at the end of an Patient Admit, ADT A01 message. We don’t have anything between IN1 and the custom segment.
…
[{ --- INSURANCE begin
IN1 Insurance
[ IN2 ] Insurance Additional Info.
[{ IN3 }] Insurance Additional Info - Cert
[{ ROL }] Role
}] --- INSURANCE end
[ ACC ] Accident Information
[ UB1 ] Universal Bill Information
[ UB2 ] Universal Bill 92 Information
[ PDA ] Patient Death and Autopsy
[ ZFA ] Financial Agreement
When HAPI parses the message, the ZFA ends up as a segment in the INSURANCE group, not the root of the message. Is there some way of changing this behavior? I’ve verified this with the HAPI test panel. Two other utilities that I’ve tried, MWB and Chameleon HL7 Messaging Toolkit, parse it differently, placing the Z segments at the root of the message, as desired, and not in an INSURANCE group.
Here’s some sample data:
MSH|^~\&|DATASERVICES|CORPORATE|||20120711120510.2-0500||ADT^A01^ADT_A01|9c906177-dfca-4bbe-9abd-d8eb43df93a0|D|2.6
EVN||20120701000000-0500
PID|1||397979797^^^SN^SN~4242^^^BKDMDM^PI~1000^^^YARDI^PI||Williams^Rory^H^^^^A||19641028000000-0600|M||||||||||31592^^^YARDI^AN
NK1|1|Pond^Amelia^Q^^^^A|SPO|1234 Main St^^Sussex^WI^53089|^PRS^CP^^^^^^^^^555-1212||N
NK1|2|Smith^John^^^^^A~^The Doctor^^^^^A|FND|1234 S Water St^^New London^WI^54961||^WPN^PH^^^^^^^^^555-9999|C
PV1|2|I||R
GT1|1||Doe^John^A^^^^A||5678 Maple Ave^^Sussex^WI^53089|^PRS^PH^^^^^^^^^555-9999|||||OTH
IN1|1|CAP1000|YYDN|ACME HealthCare||||GR0000001|||||||HMO|||||||||||||||||||||PCY-0000042
IN1|2||||||||||||||Medicare|||||||||||||||||||||123-45-6789-A
IN1|3||||||||||||||Medicaid|||||||||||||||||||||987654321L
ZFA|6|31592|12345|YARDI|20120201000000-0600
Fix has been checked in