You should try and end up with a segment grammar that is as
flat as possible. Flat message structures are much easier to
parse and process programmatically than deeply nested ones. Fortunately
most commercial HL7 implementations are not as deeply nested in
practice as the standard says they can be.