Video Key Moments
Unifying HL7, EDI & FHIR Data for Healthcare Reporting & Analytics
In this demo, we configure a multi-source route in the PilotFish eiConsole that ingests HL7 messages over LLP, X12 EDI claim files from FTP and FHIR JSON over REST. All of these feeds are normalized into a canonical XML model, then mapped to a reporting database and a REST-based JSON analytics service. The result is a repeatable pattern you can use for quality metrics, population health reporting and operational dashboards across systems and formats.
[Try the Free 90-day Trial] [Talk to an Expert]
30-second summary
- Ingest HL7, X12 EDI and FHIR JSON in a single configurable route
- Use listeners and transports for HIE data, lab results, devices, cloud APIs and databases
- Normalize all messages to canonical XML, then map to relational schemas and JSON analytics payloads
- Test the route end-to-end, then deploy to eiPlatform for unattended execution and real-time monitoring in eiDashboard
Build a Multi-Source Route for Analytics
The demo starts in the eiConsole with a set of example routes that mirror real-world healthcare scenarios:
- Data acquisition and normalization of Health Information Exchange (HIE) data
- Transformation of laboratory orders, status updates and results
- On-premise medical equipment integration, such as smart cards that must tie into pharmacy, EMR and billing systems
- Acquisition of clinical and administrative data for reporting and analytics
- Integration of HL7-based hospital systems with cloud solution providers using JSON, XML and web services
We focus on a multiple-source route for reporting and analytics. The route grid graphically depicts the flow of data between Source and Target systems. In this example:
- HL7 messages arrive over LLP
- Claims-based X12 EDI files are dropped into an FTP folder
- FHIR JSON payloads arrive via a RESTful web service
From each Source, we extract key patient information, populate a relational database and call a simple REST-based JSON service. All of this is configured using the eiConsole’s assembly-line interface.
Retrieve and Normalize Your Healthcare Data
The Listener stage is the entry point for each Source system. From a drop-down, you select the appropriate listener type and fill out the related property panels. The eiConsole supports real-time, periodic, scheduled and triggered listeners.
Common examples include:
- HL7 over LLP
- FTP, SFTP and FTPS
- SOAP and RESTful web services
- Messaging middleware such as JMS, MSMQ and RabbitMQ
Before transformation, configured processors provide a library of building blocks for manipulation and validation, such as:
- Decryption
- Decompression
- Structural or business-rule validation
Processors, like other stages in the assembly line, are extensible through an open Java-based API so you can plug in organization-specific logic where needed.
Convert Messages into a Common XML Model
The Source Transformation stage converts inbound data from its native format into a canonical XML representation through a two-step process.
1. Parsing to XML
Transformation modules handle a wide range of non-XML formats, including:
- CSV
- Delimited and fixed-width files
- EDI ANSI X12 and other HIPAA formats
- HL7
- JSON
- Microsoft Excel
The HL7 transformation module is designed to be lenient, so it can parse the many versions and “flavors” of HL7 you see in the field. If it looks like HL7, the goal is to parse it for downstream processing.
2. Logical Mapping
After parsing, logical mapping is performed as an XML-to-XML transformation represented as XSLT. This is where you standardize fields, derive values and align messages to a canonical analytics model.
Map HL7, EDI & FHIR to Analytics Schemas
The Data Mapper allows a technical business analyst to drag and drop fields to build transformations between any two data formats. Its three-panel mapping paradigm makes even complex mappings easy to visualize.
Key capabilities include:
- A format builder for defining Source and Target data structures
- Direct import of metadata such as the HL7 data dictionary
- Use of sample files to show exactly what a system produces or consumes
- “Friendly Names” for HL7 elements so field meanings are obvious
In the demo, HL7 is loaded as the Source, a simple XML sample file is used as the Target, and the analyst drags and drops fields to create a one-to-one map. A palette of functions above the mapping canvas supports conditional logic, looping and data manipulation without custom or proprietary scripting. The mapping remains standard XSLT with a large developer ecosystem.
Route, Deliver and Operationalize Your Data
Back on the route grid, the Route stage lets you apply routing rules. Using XPath or other expressions, you can:
- Inspect data content
- Branch messages based on patient attributes, facility, payer, message type or any other criteria
- Send a single inbound message to one or many Target systems
At the same time you configure proactive error notification via transaction monitors, so failures can trigger alerts or custom recovery actions.
On the Target side:
- Each Target system has its own Transformation and Transport
- The Target Transformation is the mirror image of the Source Transform, converting canonical XML into the format required by the Target
- Transformation modules again handle physical formats such as HL7, EDI or JSON
Finally, the Transport stage defines how data is delivered. In this demo:
- A relational database is updated with patient demographic information
- A RESTful web service is called with a JSON representation for analytics
The eiConsole supports both synchronous and asynchronous transports and offers pre and post processes for encryption, compression, cleanup tasks and chaining additional steps in the flow.
Test, Deploy and Monitor at Scale
Once configuration is in place, you switch to Test Mode. You can test the route from end-to-end or select a subset of stages. When starting in the middle, you simply supply a sample file. As processing runs:
- Successful stages are marked with a green check
- Failures are marked with a red X
You can inspect the data at each stage, which makes debugging and validation straightforward. In the demo, an HL7 ADT message is supplied as input. It is converted into XML with Friendly Names by the HL7 transformation module, mapped into a simple XML canonical, then routed to:
- SQLXML for insertion into a patient table
- JSON that is posted to a RESTful web service
After successful testing, the interface is ready for production deployment on the eiPlatform runtime. Deployment options include:
- Drag & drop via the server view
- Promotion through file-based change management and source control
- Operational management and reporting using the web-based eiDashboard
Once deployed, eiPlatform executes routes unattended and provides rich monitoring and alerting. It works great in Docker containers and modern cloud environments.
Why PilotFish for Reporting & Analytics?
- One route handles HL7, X12 EDI, FHIR and other formats for analytics use cases
- Canonical XML and drag & drop mapping simplify getting data into your reporting schemas
- Visual tooling reduces development effort and ongoing maintenance
- Transaction monitors, testing tools and eiDashboard provide end-to-end visibility
- Docker-friendly deployment supports scalable, modern architectures
FAQ
The eiConsole supports HL7, X12 EDI, FHIR JSON, CSV, delimited and fixed-width files, Excel and other custom formats. Each is parsed into canonical XML so you can map once and reuse that model across many sources and Targets.
Yes. Routing rules let you direct a single inbound message to multiple Target systems. In the demo, the same canonical message updates a relational database and drives a RESTful JSON analytics service.
Listeners support real-time messaging protocols like HL7 LLP and REST, as well as FTP-based file drops, queues and scheduled polling. You can mix and match multiple Listener types within the same project.
By normalizing HL7, EDI and FHIR into canonical XML and mapping to your reporting schemas, PilotFish provides clean, consistent data to downstream data warehouses, data marts and BI platforms without custom point-to-point interfaces.
Interfaces configured in the eiConsole are deployed to the eiPlatform runtime, where they run unattended. You can host eiPlatform on-premise, in the cloud or in Docker containers and use the eiDashboard for monitoring and alerting.
Check out our FAQ pages for more.
HL7, EDI & FHIR Data Integration for Analytics & Reporting with PilotFish
This is a demonstration of the PilotFish eiConsole, a graphical integrated development environment for the rapid configuration of any Healthcare Interface.
Here we see a number of example routes that represent some real-life uses of the software.
- Data acquisition and normalization of Health Information Exchange (HIE) data
- Receipt in the transformation of laboratory orders status and results
- On-Premise medical equipment integration, such as smart cards in a hospital that must be integrated with pharmacy, EMR and billing systems
- Acquisition of clinical and administrative data for reporting and analytics
- Integration of HL7 based hospital systems with cloud-based solution providers that may be using technology such as JSON, XML and web services
Creating a Multiple Source Data Route with HL7, EDI and FHIR JSON
Now let’s take a more in-depth look at this multiple Source route to reporting in analytics example. Double-clicking a route takes us to the main route grid which graphically depicts the flow of data between Source and Target systems.
Here we see data coming in as HL7 over LLP. We have some claims-based EDI files being dropped in an FTP folder. We also have some FHIR JSON coming in through a RESTful web service.
In each case, we’ll extract some basic patient information and use it to populate a relational database and execute a simple REST-based JSON service. To accomplish this the user simply configures the eiConsole Interface Assembly Line, a consistent set of stages that are flexible enough to connect any system to any other regardless of data format, or connectivity protocol. Moving from left to right, we start with the Source system which maintains descriptive information about the sending system.
Retrieving Your Healthcare Data
Next is the Listener – the entry point of the interface to configure a Listener. We select the appropriate listener type from the drop-down and fill out the related property panels. The eiConsole supports real-time periodic scheduled and triggered listeners. Some commonly implemented listeners include HL7 over LLP, FTP including SFTP and FTPS, SOAP and RESTful based web services, and Messaging Middleware such as JMS, MSMQ, and RabbitMQ.
After the Listeners, configured processors offer a library of widgets for manipulation and validation before data transformation. Common examples include decryption, decompression or validation.
Processors, as is true of other stages in the assembly line, are extensible through an open Java-based API. After pre-processing, we move on to the Source Transformation. Here the data is converted from the inbound format into a canonical XML representation through a two-step process.
Convert Your Data into a Common XML Format
First, Parsing to Convert Data into XML. Transformation modules exist to convert a variety of non-XML formats, including CSVs, delimited and fixed-width files, EDI ANSI X12 and other HIPAA formats, HL7 of course, JSON, Microsoft Excel and others.
Note that the HL7 transformation module has been specifically designed to be lenient. Given all the various versions and non-standard flavors of HL7 messages, this ensures that virtually anything that even looks like HL7 can be parsed for future processing. The second step of transformation is logical mapping, which is always an XML to XML transformation represented as XSLT.
Mapping Your HealthCare Transactions with the Data Mapper
This is the Data Mapper that allows a technical business analyst to drag & drop to build transformations between any two data formats. The 3-panel mapping paradigm is unique in its ability to represent even the most complex mappings graphically.
To use the mapper, the Source and Target data formats are built right in through the format builder dialogue. Various types of metadata such as the HL7 data dictionary can be directly imported. Sample files can also be used to provide an accurate picture of what a system may actually produce or consume.
Note also that when using HL7, “Friendly Names” can be applied to the elements to make it easier to determine what fields. Here HL7 was loaded as the Source, and a simple XML sample file was used as the Target. Dragging and dropping these fields together in the center panel creates a one-to-one map.
The palette of functions above the mapping allows for conditional logic, looping logic, data manipulation and much more. All of this can be accomplished without custom or proprietary scripting; however, the mapping is directly based on XSLT, a standard transformation language with a strong developer community.
Routing Your Data to the Target Destination
Returning to the main grid, the next step is Routing. Here XPath or other routing rules can be used to inspect the data and direct the inbound message toward the appropriate Target system or systems.
Proactive error notification via the transaction monitor metaphor is also configured at this point. We then move to the Target side of the interface. Each Target system has an accompanying Transformation and Transport.
The Target Transform is the mirror image of the Source Transforming the canonical XML Format to the format required by the Target system. Note that on the Target side, the Transformation Module executes second, converting the output of any logical mapping into the physical format required by the Target.
Finally, we move on to the Transport stage, and in this case, we’re updating a relational database and also calling a RESTful web service. However, as is true with a Listener, a wide variety of transmission mechanisms are supported. Both synchronous and asynchronous processing is also possible.
Pre and post processes are also available in the Transport step for encrypting, compressing or otherwise manipulating the data prior to transmission. In addition, post processes could be used for cleanup tasks and executing subsequent steps in a complex data flow. Once an interface has been configured in the eiConsole, it can then be switched into testing mode.
Testing Your Interface Routes
In Test mode, we can test a route from end-to-end or choose a subset of stages we wish to test. When we start in the middle of the process, we’re asked to supply a sample file manually. As the file is processed, successful stages are marked with a green check and failures are indicated with a red X.
You can then look at how the data appeared at each stage in our process. Here we supplied an HL7 ADT message for input. The message was converted into XML with the “Friendly Names” by the HL7 transformation module. Finally, the Source mapping extracted key pieces of patient demographic information into a simple XML canonical.
The data was routed to both defined Targets. The canonical was mapped first onto SQLXML. Here we indicate an insert into a table called patient and second, we simply rendered some JSON. We then will update the database and post it to that RESTful web service.
Moving Interfaces into Production
Now that an interface has been successfully tested from end-to-end, it’s ready for deployment to the eiPlatform runtime environment. Deployment can be handled via drag & drop using the server view, also the PilotFish Web-based eiDashboard, or through your preferred file-based change management process.
Once deployed, the eiPlatform, provides a myriad of reporting, alerting and monitoring utilities. The eiPlatform is used for Production Management Interfaces. And that’s all there is to it!
We Are Here to Answer Your Questions
Please feel free to contact us with any additional technical questions or for a more customized demonstration of the software. We offer a Free 90-Day Trial of the eiConsole. Try it for yourself!
If you’re curious about the software features, free trial, or even a demo – we’re ready to answer any and all questions. Please call us at 813 864 8662 or click the button.
X12, chartered by the American National Standards Institute for more than 35 years, develops and maintains EDI standards and XML schemas.