A lot of data needs to be interchanged between different systems in healthcare. Far too many of the systems set up for these interchanges are too specific and limiting. We see an amazing amount of ad hoc solutions without sufficient layering, resulting in solutions that can't evolve and can't be reused. Let's change that.
Let's first be very clear about the layers. Communication is one thing, content is another and never should the two be interdependent. Each layer should have as few assumptions about the others as possible, without becoming overly abstract or complex. Indirection is good, but only up to a point.
Communication as such is often assumed to be addressable as in a single destination or a group destination, but even that is a confining assumption. So here we're going to define two kinds of communications:
Directed communication has a destination or a group of destinations already defined by the originator. Most, if not all, current medical communicated data sets fall into this category.
(Help me here to find a better term...) Pulled communications have no destination. It's up to a set of services to pull out these documents from a repository according to attributes in the communications and rules in the services, and transform or handle them accordingly. This is an extremely useful model for planning and third party services, as we'll see later.
Message transformation depends on the source data structure, the destination data structure, and possibly a path of intermediary data structures if no direct transformation exists. The message transformation is entirely independent on the communication system and may even be used without any form of communication. Also, there is no way to implement all kinds of message transformation in a single system and the iotaLink design is intended to allow easy hookup for specialized transformers into the stream of messages to allow open competition for services.