Profile Overview
This profile is designed to help you translate large volumes of clinical HL7 data into the FHIR format, and then insert the produced FHIR data directly into a FHIR server's database. You might want to use this profile when you have to process a huge number of HL7 transactions on the input - for example, when you migrate HL7 clinical data that your organization has accumulated throughout the years of operation to a new FHIR server.
The profile directly interacts with a FHIR server's underlying database for efficiency. When you have thousands of transactions that have to be translated and then uploaded onto a FHIR server, uploading FHIR resources as individual FHIR bundles is highly time-consuming and has several downsides:
- You will be using regular bundle upload endpoints that may be inadequate for large pieces of data;
- No support for data in NDJSON format;
- No universally unique identifier (UUID) references for the resources within the batch type bundles;
- The entire transaction type bundle gets rejected if one of the resources in it contains an error;
- No performance optimizations for historical data load.
An efficient way to upload data in bulk is to use the component HAPI Bulk Import that is best-performing with bulk operations. The major component's benefits are the following:
- HAPI Bulk Import automatically maintains UUID references between the resources within a bundle,
- The component processes each resource in a separate database transaction, which eliminates the possibility of the entire bundle getting rejected because of an error in just one resource,
- The component HAPI Bulk Import is designed to work with data files in the FHIR format (JSON or NDJASON).
Profile Location
Edifecs Library / FHIR / Bulk API Use Cases / FHIR Bulk Import - Clinical Data ETL
Requirements
- XEServer Module for FHIR 9.2.1
- Edifecs XEngine 9.2 or later
- Edifecs XEServer 9.2.1 or later
- Edifecs Application Manager (EAM) 9.2.1 or later
- XEConnect 9.2.1 or later
Prerequisites
- Install JDBC drivers.
Put the driver h2-1.4.200.jar (H2) or mssql-jdbc-8.4.1.jre11.jar (MS SQL) to the following directories:
- XESModuleForFHIR\features\fhir\components\hapi-bulk-import\lib
- XEServer\platform\lib.user\jdbc
-
Set up a database connection.
The route component HAPI Bulk Import uses the file ${XESProfileConfig}/hapi.properties to establish a connection to the FHIR database. By default, the file hapi.properties points to a local FHIR server. This is defined by the property:
server_address=https://localhost:10443/hapi-fhir-jpaserver/R4/
If you want to use the profile with a remote FHIR server, you have to update the property server_address correspondingly.
Also, the default configuration hapi.properties assumes that FHIR server uses an H2 database. This is indicated by the following properties:
# Local H2 Database
hibernate.dialect=org.hibernate.dialect.H2Dialect
datasource.driver=org.h2.Driver
datasource.url=jdbc:h2:C:/Edifecs/XESModuleForFHIR/db/fhir_bridge;DEFAULT_LOCK_TIMEOUT=10000;LOCK_MODE=0
datasource.username=
datasource.password=
If you want to use a different database type (for example, MS SQL), you have to comment out H2 database properties and uncomment MS SQL properties:
# SQL Server Database
#hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
#datasource.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
#datasource.url=jdbc:sqlserver://localhost;databaseName=fhir;sendStringParametersAsUnicode=false
#datasource.username=user
#datasource.password=password