The Agency for Healthcare Research and Quality (AHRQ) has funded organizations across the country that are engaged in developing and using interface engines to exchange health information. Some of these include:
Title: Automated Adverse Drug Event Detection and Intervention
Primary Investigator: Jeffrey Ferranti
Title: Improving Health Care through HIT in Morgan County, IN
Primary Investigator: Deborah Aders
Title: Taconic Health Information Network and Community (THINC)
Primary Investigator: John A. Blair III
The Indiana Network for Patient Care (INPC) has developed a home-grown interface engine that is able to parse a variety of message types and coding formats. As data arrive at the INPC, the interface engine scans each message and translates any institutional coding formats to standard coding formats such as LOINC, NDC, and CPT. Once the institutional codes are translated and the other parts of the messages are validated, the interface engine reconstructs each message for transmission to the INPC repository for storage in a patient's electronic health record (EHR). The interface engine also includes a robust error detection and resolution mechanism to handle those instances where source systems transmit invalid codes or make other common mistakes.
Health care organizations need not develop their own interface engines, however, because many commercial vendors have developed off-the-shelf engines. Qualities of good commercial interface engines include the ability to handle large volumes of messages efficiently, ease of mapping data elements, and ease and flexibility of handling various messaging formats. While HL7 is a common messaging format, many other formats exist, including text files.
Clinical messaging and coding standards are evolving rapidly. There are many versions of standards, and different institutions often use different versions of the same standards. Thus, clinical messaging is difficult because of the need to ensure that the right data are being communicated and aggregated. Data translation of different standards is important. Furthermore, many institutions send messages in non-traditional formats, for example, by loosely interpreting the standards or putting information in the wrong place but in an acceptable way.
Because data translation is complex, the necessity of human intervention can be substantial. More adherence and use of standards and more intelligent engines with automated error recovery functions are needed to reduce human intervention and ensure that valid data are stored properly in health information systems.
Building a clinical-data sharing effort requires the translation of one data format into another. Data is typically shared in a common HL7 messaging format, but may contain different representations of the data within each message. The interface engine acts as a sort of "Rosetta Stone" for electronic messaging, ensuring that data from one system is translated appropriately for another system. For example, a lab system at a hospital may store its data using the LOINC coding standard, whereas a referral lab that performs work on behalf of the same hospital may store its data using a different coding format. If the hospital is to receive results electronically from its referral lab for storage in its central repository, the data from the referral lab must be translated to match the codes used by the hospital's lab system. This is the job of an interface engine, a piece of software that performs the following tasks:
- Translate data from one of several formats into other supported formats.
- Link various systems within a clinical enterprise and communicate data to those systems.
- Verify the accuracy and conformance of messages to known standards for data communication.
Interface engines receive incoming messages and route them to the appropriate information systems, and often the engine translates messages into formats that can be understood by the receiving system. Using an interface engine can simplify the integration of various data sources into existing health-it infrastructures. To route messages from one system to multiple disparate systems, the interface engine takes a single feed from the source system, and then provides standardized output for other systems. This reduces the total number of interfaces needed between systems by effectively requiring a single interface from each system, regardless of the number of external systems that will use the messages.