HL7 to FHIR Route

This route receives HL7 data, translates the incoming HL7 data to the FHIR format, and then submits the resources to the FHIR server in the following way:

  • The route receives HL7 data from either an HTTP request body or from a file system folder.
  • Directs the data to the route Store Input Data that stores the original data in a file system folder (only if the property '${SaveSourceFile}' = 'true').
  • If data came into the route as an HTTP request (through the component RESTful Web Service Inbound), the route sends back an HTTP response "status":"202 Accepted".
  • Validates and splits the incoming data based on the split rules.
  • Submits tracking metadata about the source file to the tracking system (Visualizer Server).
  • Maps the HL7 data to the FHIR bundle format based on the mapping rules.
  • Forms a FHIR bundle of the type Transaction with the request method POST for each resource.
  • Passes the FHIR bundle directly to the database that is used by the FHIR server.

Note If the route receives input data from an HTTP request, the data processing is performed asynchronously. This means that the route returns a response to say that the data has been accepted for processing as soon as the data processing begins. The route responds with the status 202 Accepted to the external system even while the data processing is underway.

Route Components Description

Component Name Component Type Description
RESTWS Inbound HL7 RESTful Web Service Inbound Receives a request with an HL7 file. The component requires a security token passed in the request header Authorization.
FS Inbound HL7 File System Inbound Picks up an HL7 file from the following file system location: ${FSDataIntake}/Clinical/HL7. This endpoint is used as an alternative to the component RESTWS Inbound HL7 to receive input data.
Store Input Data Subroute Directs the data to the route Store Input Data that stores the original data on a file system (only if the property '${SaveSourceFile}' = 'true'). The data stored in this location can be used by Visualizer Server.
Process Errors - Last Message Subroute Sends a message with the property LastMessage=true to the route Process Errors to initiate the aggregation of all the error messages for the current processing session.
Check Inbound Type Router Checks to see if the input data has been received as an HTTP request (RESTWS Inbound HL7) or picked up from the file system (FS Inbound HL7).
Response RESTful Web Service Outbound If the data came in as an HTTP request, the component sends an HTTP response ("status":" 202 Accepted"), indicating that the request has been successfully received and will now be processed.
Validate and Split Native Processing Validates and splits the incoming HL7 data based on the split rules (${XESFHIRRoot}/config/splitRules/HL7SplitRules.xml).
Process Split Subroute Sends the split files to the route Process Split that translates Hl7 data to the FHIR format and uploads FHIR resources onto a FHIR server.
Track Source File Subroute Sends the data to the subroute for submission of the tracking data (metadata of the source file) to the tracking system (Visualizer Server) if required. The subroute also saves HTML reports from the component Validate and Split to a file system folder. The profile environment properties define the folder location: ${DataRepositoryPath}/{Prp[OriginalFileFolder]}.
Errors Router Checks to see if there were any errors during processing on the component Validate and Split.
Audit Success Validation Audit Logs an audit event regarding the validation based on the configuration of the Audit Service for the profile.
If Save Router Checks to see if the error reports must be saved.
Log Reports File System Outbound

Passes information on errors to the component Process Errors and stores the error data (validation report, translator report, and so on) grouped by RequestID to a file system folder before the data is sent to the JMS queue of the profile FHIR Aux. The profile environment properties define the folder location: {Prp[ErrorContextPath]}/reports.

Note Use a cleanup tool regularly to remove log reports that you do not need anymore from this directory.

Error Channel Inbound Error Channel Inbound Send all the error data collected on the route to the subroute Process Errors.
Process Errors Subroute Sends the error data to the JMS queue of the profile FHIR Aux.