Interoperability Requirements #1: Transmission of Data

May 3, 2011

In order to communicate, healthcare systems must exchange data through some transmission channel. The basic requirements are simple: it must be possible to move a sequence of bytes from one computer to the other, and the bytes need to encode some higher level of meaning (“format”) that can be extracted. In general, there needs to be some framing protocol so that the start and end of the sequence can be recognized, and sequence needs to be correctly maintained. If the conversation between the computers is bi-directional, the transfer of the sequence of bytes must be di-directional too. This is all now a trivial operation. There is an immense set of protocols to choose from, and not much challenge in the use of each of them. It would be easy, then, to decide that all the problems at this level are resolved.

Unfortunately, no. Just as meaning is built by multiple layers of structure, it is common for formats to be layered and interleaved.For instance, when communicating by voice, sound waves are used to carry syllables which build up words and phrases. These are assembled into paragraphs and other structures such as lists, and meaning is derived from these.in computing, too, multiple formats are layered together, e.g.unicode / text + XML + HTML + Some higher level format. When reading formats, it is up to the discretion of the reading process to decide how many layers to unwind; there is a variety of mostly performance related trade-offs to be made at this point.

That’s where the problems lie at this level: choosing the formats to layer, and deciding how they interleave (if they have to, which does happen). There’s so many to choose from! Ideally, we could just bury our head in the sand, and assume it will happen elsewhere. But this is the bottom concrete layer - without this, you can’t interoperate - which is what we’re trying to do here. So you have to choose something. HL7 has to choose something. And you and HL7 are damned whichever is chosen.

And this is just the first level ;-) Update: Tom Beale reminded me that the other vexed question about transmission layers is which primitive data types to use, and from which layer. (And how could I forget about data types!)