Its been a while since I've written a technical blog entry. HL7 is a favorite topic of mine, especially HL7 v3. Therefore, after reading David Li's piece in NeoTool's blog, Preparing for HL7 V3, I was motivated to give my 2 cents on the topic.
I've spent a lot of time trying to implement a practical HL7 v3 solution. I quickly realized that to use it for messaging would be highly impractical. There are just too many possible interpretations of how to convey a message using the v3 messaging model. A great quote I remember describing HL7 v3's XML structure, was "they used every trick in the book".
What I did find helpful however was the RIM (Reference Information Model) as a health-care data model. Having said that, I would caution against using the HL7 v3 RIM to model a logical relational database design.
RIM can serve as a very useful starting point for a design, but do not use it too literally. Doing so can lead to a very inefficient and needlessly complex database design. As I learned in engineering school, learning where to make trade-offs is the difference between a practical design and an exact, but impractical design.