You have to perform an analysis on all of the different ADT message types coming out of your EMR and determine which segments come out for each message type and identify the order in which they come out . Plot this all out on a spreadsheet so you can visually identify the patterns and the exceptions.
I only have experience with two EMRs. With each, the kind of segments and their order were the same for most message types. Lets call that the ‘standard layout’. The exceptions were Bed Swaps, Merges and Person Updates. We found that the default A08 was the closest match to the ‘standard layout’ but was still not quite workable as-is. We created a variant, and updated the A08 – adding a few segments, making some optional, some repeatable – and kept working and re-working it until we got it to match for all types except the swaps, merges and person updates. So we have one route detail for the ‘A08’ and additional route details for each of the exceptions, and these exception route details use different translates which reference different (or specific) message type formats.
This A08 variant does a lot of work to ‘streamline’ the HL7 content. It removes most of the clutter – which most of the downstream apps require ( to be removed) anyway, so we do it once up front, instead of doing it 40 different times for each ancillary. We still need separate translates for each ancillary, but those are much simpler, because they work with simpler input.
This work was tedious and took months, but looking back after three years, I can easily say it was worth it. And we don’t get those error messages.