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