I feel like I’ve been a bit derelict about posting about the many new features in TL7. First and foremost, I’m pleased that we now support 100% of the messages supported in Newfoundland, plus a number of messages that were planned for Newfoundland, but which have fallen off of their scope. Many of these messages require significant processing.
Consider the following example. I issue a prescription against Patient A. Then I realize Patient A and Patient B are really the same patient, and so I merge the two, making Patient B the “official” record. Then I issue a retract of the prescription. There’s a lot of bendy-twisty logic there, and even though we’re mostly interested in supporting test functionality rather than production functionality, we’ve had to recognize and support a number of complicated cases.
Early on in the development of the application, we elected to track all revisions of key entity data — that turned out to pay big dividends when we hit some of those History messages. In the course of the development of the system, our revisioning system evolved. Originally, we had some custom code that tracked revisions; in later releases we began using Envers to track revisions, and have been pleased with it.
We’ve recently begun turning our attention to the British Columbia PharmaNet messages. A key thing that makes PharmaNet different is the fact that it uses HL7 v2, so that’s our first foray into v2 messaging. By comparison, v2 is pretty easy.
A key element of the internal message processing support is increased use of an HL7 component called TEAL. It’s probably no surprise to anyone who’s worked with HL7 v3 that there are a lot of annoying arbitrary oddities that make HL7 messages often look like they contain very few common elements. TEAL helps us smooth out those rough edges, and makes it possible to more generically work with parts of a message. TEAL has improved our efficiency with messages considerably.