What is Integration?
From lab and radiology systems, to scheduling and billing, software systems in healthcare encompass a variety of applications that need to exchange information. The problem is that each system communicates over different protocols. They expect information to be received and sent in a certain way and are fairly inflexible. You can think of integrations as brokers whose job it is to bridge the gap between different systems to enable the flow of information.
What is Robust Integration?
Robust integrations are flexible. Because they act as go-betweens between systems that are inflexible, they have to know what to expect and account for all the things that could go wrong with systems.
Think of the vast amount of messages an EMR issues with critical information about patients. If, for example, the scheduling system is temporarily unavailable, ensuring these messages are held in a queue until the system is back up and nothing gets missed is one important function of a robust integration.
How Would You Make a Robust Interface?
You build integration by chaining together a series of different components that work independently. You have to know anywhere that one system needs to talk to another and what to expect from each system. By breaking it down into small pieces that work independently, each system knows what it’s trying to do so that the difference between a problem and normal operations is apparent.
How Should Organizations with a Large Collection of Interfaces Think About Integration?
In some ways having lots of systems is a good thing. It means new components and state-of-the-art technology can enter the mix without displacing what’s already there. Systems can specialize to do small tasks and if something goes wrong it’s isolated in one spot and doesn’t take out the entire facility. So there’s robustness in specialized systems, but the downside is that there’s also more opportunities for things to go wrong.
In some cases robust integrations can deal with the unavailability of a system by retrying again and again. However, in a hospital there is emergency situations and it’s critical to know if certain information doesn’t flow. It’s important to account for failure in your design so it knows what to do depending on the type of problem.
3 Best Practices in Robust Integration Design
1. Separation of Concerns:
Essentially any integration consists of 4 functions:
- Networking – connecting and moving information
- Translation – mapping fields from one format to another
- Enrichment – taking a piece of sparse information and using it to find out more
- Storage – reading from and writing information to databases and data warehouses
Each of these elements of integration are separate from the other. If there’s any overlap it increases the risk of side effects.
2. The Rule of 3s
Every integration activity can be grouped into 3 areas:
- Universal – functions or activities virtually all integrations share
- Common – activities you do often
- Unique – activities no other integration does
The Iguana project uses shared modules for common situations. This helps you cut down on busy work that wastes time and makes interfaces harder to maintain. An important part of the rule of 3 is to remember that hardly anything is unique. Learning to spot it from what you see every day gets you far more consistent results, minimizes maintenance efforts and reduces the amount of time it takes to build the interfaces themselves.
3. The Importance of Normalization
Using an internal standard format is a key best practice for implementing a successful integration. In other words, instead of just translating data from point A to point B directly, you first translate it or normalize it into your internal format before it goes anywhere. This may sound like more work initially but think of it as looking to the future. Normalization makes internal data more robust and reusable.