Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Anchor
_Hlk61297121
_Hlk61297121
INTEGRATION OF OpenIMIS FHIR_R4 TO OpenHIM

Introduction

The goal of this project is to increase the scope of the open-source Insurance Management Information System (openIMIS) by developing a standard interface for extending and creating new FHIR APIs (Figure 1) that supports integration of disparate systems via openHIM. The purpose of this document is to provide an overview of design decisions made in the process of integrating OpenIMIS FHIR R4 modules into OpenHIM using opensource tools.

Figure 1: FHIR 4 API design requirements

...

To expose the API endpoints, a REST interface is built on top of the services/Django models via Django REST Framework. The framework also provides a browsable documentation.

Figure 2: openIMIS Django Admin Interface

OpenHIM Mediators

The OpenHIM reference architecture shown in Figure 3 consists of the following major components namely: Core, Admin Console and Mediators. Core provides the OpenHIM's main functionality; it processes the transactions from client systems. Its functionality is enhanced via Mediators, which are loosely coupled services that can add business logic to the transaction flow.

Figure 3: openHIM reference architecture
The openHIM Core listens on ports 5000 (HTTPS) and 5001 (HTTP). These ports are the interface that clients use to communicate with the OpenHIM core. A client is an external system or App that send request and receive response via OpenHIM core. The Core exposes requested data using API endpoints via HTTPS port 8080. The Admin Console is a web-based interface implemented using AngularJS that makes it easier to manage OpenHIM mediators, client transactions and channels. A Channel defines a path that a client request will take through the OpenHIM. It describes one more routes for request(s) to be forwarded to client(s) allowed to use the channel.

...

The integration work package involved developing openHIM mediators that are mapped to OpenHIM core using Python Utils that was forked from https://github.com/de-laz/openhim-mediator-utils-py. Each of the FHIR4 API endpoints shared by Davis was mapped to OpenHIM mediators developed using Django (Python web framework) as shown in Figure 4. Through the heartbeat functionality in the OpenHIM core, the administrator is able to check for the uptime of the individual mediators.
In this section we provide the implementation details for each workflow documented in the Project's Scope of Work. However, it is important to note that the Workflows for Contribution and Valuated Claims are yet to be implemented due to missing metadata or FHIR4 resources on the HL7-FHIR standard.

Figure 4: OpenHIM Python mediator

Claim Mediators

The Claim workflow shown in Figure 5 was mapped to FHIR4 resource and registered on openHIM claim mediator implemented as a Django app. However, the metadata for Valuated Claim Response need to be discussed for possible extension using FHIR4 Explanation of Benefits (EOB) and/or related resources.

Figure 5: OpenHIM claim mediator
Django App (Solution) codename: ~/django_openhim_mediators/claim_mediator
Endpoint: http://104.236.37.64:5001/api/api_fhir_r4/Claim
Username: health1
Password: health@123
Supported Methods: GET, POST

Coverage Mediator

The Coverage workflow shown in Figure 6 was mapped to Coverage FHIR4 API and registered on openHIM coverage mediator implemented as a Django app.

Figure 6: OpenHIM coverage mediator
Django App (Solution) codename: ~/django_openhim_mediators/coverage_mediator
Endpoint: http://104.236.37.64:5001/api/api_fhir_r4/Coverage
Username: health1
Password: health@123
Supported Methods: GET, POST

Person and Family FHIR4 Mediator

The Person and Group workflow shown in Figure 7 has been implemented using separate openHIM mediators used to register the two API endpoints that expose patients/insurees, and families/groups FHIR resources

Figure 7: OpenHIM family and group mediator
Family Mediator
Django App (Solution) codename: ~/django_openhim_mediators/family_mediator
Endpoint: http://104.236.37.64:5001/api/api_fhir_r4/Family
Username: health1
Password: health@123
Supported Methods: GET, POST
Patient Mediator
Django App (Solution) codename: ~/django_openhim_mediators/patient_mediator
Endpoint: http://104.236.37.64:5001/api/api_fhir_r4/Patient
Username: health1
Password: health@123
Supported Methods: GET, POST

Contract Mediator

The Contract workflow shown in Figure 8 was mapped to Contract FHIR4 API and registered on openHIM contract mediator implemented as a Django app.

Anchor
_Hlk61300296
_Hlk61300296
Figure 8: OpenHIM contract mediator
Django App (Solution) codename: ~/django_openhim_mediators/contract_mediator
Endpoint: http://104.236.37.64:5001/api/api_fhir_r4/Contract
Username: health1
Password: health@123
Supported Methods: GET, POST

Organisation Mediator

The Organisation workflow shown in Figure 9 was mapped to Organisation FHIR4 API endpoint and registered on openHIM organisation mediator implemented as a Django app.

Figure 9: OpenHIM Organisation mediator
Django App (Solution) codename: ~/django_openhim_mediators/organisation_mediator
Endpoint: http://104.236.37.64:5001/api/api_fhir_r4/Organisation
Username: health1
Password: health@123
Supported Methods: GET/POST

Testing openHIM Mediator

To test the mediators, we used insomnia which is an alternative to Postman, Figure 10 shows successful testing of the mediator using POST (push) and GET (pull) operations:

Figure 10: Testing openHIM mediators
To test integration, we used Admin Console that communicate to the openHIM core via port 8080. Figures 11 shows the health (heartbeats) of registered python-based mediators used to facilitate FHIR 4 POST (push), GET (pull) and transaction log operations:

Figure11: Console showing registered FHIR4 Python mediators
Figures 12 shows the channels that are used to route request from the client to the upstream openIMIS server. Each channel has URL pattern that maps to openIMIS registered FHIR4 API endpoints:

Fig 12: FHIR 4 Channels corresponding to registered mediators

...