(new) openIMIS installations

The Target (modular) Architecture of openIMIS foresee several deployment possibilities and is installed "aside" a legacy installation. Aside may mean:

  • on the same server, but as a separated (set of) process (listening to distinct ports)

  • or on separated servers connected to each others behind a 'gateway' in order to look like a single one for the users



openIMIS - wiki - concreet installations.odp

Logical Deployment Diagram:

  • gateway: hit point of all incoming traffic: users as well as applications, mobile device flows,...

  • backend & ibackend: python modules implementing business logic

  • frontend: browser (react) application (i.e. static content downloaded by browsers)

  • legacy app: .NET code (*.aspx) serving the legacy pages

  • rabbitmq: queueing server (when async calls are served distributed)

  • worker: python modules (same as backend), but connected to rabbit mq

  • database: mssql database, holding legacy business logic as stored procs

Reference Deployment Diagram:

When installed on 2 distinct servers, the legacy/new openIMIS installations are variations of the following configurations:



The LEGACY_* installation is the "usual" openIMIS setup.

The only thing that is required is to open the 1433 port (database) for connections coming from the new server (NEW_IP).

The NEW_* stack is assembled via the openimis-dist_dkr docker-compose configuration and, today, provides the following components:

  • the gateway is built from openimis-gateway_dkr docker and is dedicated to secure and route incoming calls to the appropriate components. It manages the SSL certificate and redirect 80 to 443 (switch from http to https)

    • the / URLs are routed to http(s)://LEGACY_DNS, while doing so the lua scripts "intercept" the login and maintain a session on the gateway for the user. In other words, the http(s) requests/responses issued during the login phase are interpreted by the lua script to serve as STS (Security Token Service) and thus simulates a SSO configuration.

    • the /front URLs are also part of the simulated SSO config: it allow any client browser to download the React app (and then issue the calls to /iapi to access configuration, data,...)

    • the /api URLs are dedicated to be called directly from connected apps (mainly for the /api/api_fhir endpoints). They are not protected by the lua scripts and thus don't take part in the fake SSO setup. By default the NEW_AUTH is a Basic Auth.

    • the /iapi URLs are dedicated to serve graphql calls from the React app. They are protected by the lua scripts and thus require the user to be authenticated by the "legacy" openIMIS

  • the backend is built from openimis-be_py docker and is dedicated to serve the django application for /api calls (mainly the /api/fhir_api), but the /api/graphql is also exposed. It requires the LEGACY_IP - DATABASE_NAME credentials

  • the ibackend is also built from openimis-be_py docker and serves the django application for /iapi calls (mainly the /iapi/graphql). It requires the LEGACY_IP - DATABASE_NAME credential.

  • the frontend is built from openimis-fe_js docker and is dedicated to serve the React app.

The backend / ibackend setup is not "mandatory": we could have only one "backend".

However it has a tremendous advantage: backend / ibackend can have distinct "lifecycles":  they can be switched on/off independently and may even host distinct versions of the various components.

In other words, if a bug is detected by the users (thus in the graphql api), we can patch it without impacting (not even stop/start) the endpoints for the applications connected to the FHIR API

... and the other way round too: we can fix the FHIR API without impacting the users.

One clear limitation though: they are connected to the same database (thus if the patch requires database change, the backward compatibility of the change must be guaranteed).



RELEASE (TEMPORARY SOLUTION)

The release.openimis.org installation is NOT a standard openIMIS installation in several major aspects:

  • because of Windows 2012 compatibility issues, it is not running within dockers

    • React app is served from IIS

    • Django app is deployed as a separate Windows service

    • openResty gateway is deployed as a separate Windows service, with a corresponding 'fake' app on IIS (to establish reverse proxy rules)

  • the application is deployed from the source code, from the release github branch (i.e. not from published components versions from npm or pypi)

The only objective of this setup is to enable acceptance testing for the release but should not be reproduced for production usage.

Some highlights:

  • the C:\Windows\System32\drivers\etc\hosts file has an entry for release.legacy.openimis (bound to 127.0.0.1) in order to make release.legacy.openimis IIS app routable from the OpenResty gateway

  • the (react) front is built (yarn build) from C:\new_OpenIMIS_TEST\frontend\openimis-fe-* modules, linked (yarn link) into C:\new_OpenIMIS_TEST\frontend\openimis-fe_js

  • the (django) backend is served from C:\new_OpenIMIS_TEST\backend\openimis-be_py\launch.bat, which uses the C:\new_OpenIMIS_TEST\backend\openimis-be_py\venv virtual env in which all C:\new_OpenIMIS_TEST\backend\openimis-be-*  modules are linked (pip install -e ...)

DEMO Platform (TEMPORARY SOLUTION)

LEGACY_DNS: https://demo.openimis.org/

LEGACY_IP: 132.148.242.96

DATABASE_NAME: ??

LEGACY_SERVER: Windows 2012 R2

NEW_DNS: https://openimis.bluesquare.org/

NEW_IP: 18.197.14.226

NEW_SERVER: Ubuntu 18.04.02 LTS

frontend modules versions:

  • openimis/fe-core@0.0.21

  • openimis/fe-home@0.0.10

  • openimis/fe-location@0.0.8

  • openimis/fe-insuree@0.0.15

  • openimis/fe-medical@0.0.8

  • openimis/fe-medical_pricelist@0.0.2

  • openimis/fe-product@0.0.4

  • openimis/fe-policy@0.0.11

  • openimis/fe-claim@0.0.18

  • openimis/fe-claim_batch@0.0.3

  • openimis/fe-admin@0.0.14

  • openimis/fe-tools@0.0.11

  • openimis/fe-profile@0.0.11

ibackend modules versions:

  • openimis-be-core==0.0.15

  • openimis-be-location==0.0.7

  • openimis-be-medical==0.0.7

  • openimis-be-medical_pricelist==0.0.2

  • openimis-be-product==0.0.3

  • openimis-be-insuree==0.0.7

  • openimis-be-policy==0.0.8

  • openimis-be-contribution==0.0.1

  • openimis-be-claim==0.0.16

  • openimis-be-claim_batch==0.0.3

NEPALI "TEST" Platform:



LEGACY_DNS: http://imistest.hib.gov.np/

LEGACY_IP: 202.70.87.17

DATABASE_NAME: NP_CENTRAL_V3

LEGACY_SERVER: Windows 2012 R2

NEW_DNS: https://openimis.bluesquare.org/

NEW_IP: 18.197.14.226

NEW_SERVER: Ubuntu 18.04.02 LTS



Legacy openIMIS Version: 1.2 (... connected to NP_CENTRAL_V3 ??)

DATABASE Version: 1.3

frontend modules versions:

  • openimis/fe-core@0.0.15

  • openimis/fe-home@0.0.7

  • openimis/fe-location@0.0.5

  • openimis/fe-insuree@0.0.10

  • openimis/fe-medical@0.0.5

  • openimis/fe-policy@0.0.8

  • openimis/fe-claim@0.0.12

  • openimis/fe-admin@0.0.11

  • openimis/fe-tools@0.0.9

  • openimis/fe-profile@0.0.9

ibackend modules versions:

  • openimis-be-core==0.0.12

  • openimis-be-location==0.0.4

  • openimis-be-medical==0.0.5

  • openimis-be-product==0.0.1

  • openimis-be-insuree==0.0.6

  • openimis-be-policy==0.0.7

  • openimis-be-contribution==0.0.1

  • openimis-be-claim==0.0.10

  • openimis-be-api_fhir==0.0.4

backend modules versions:

  • openimis-be-core==0.0.11

  • openimis-be-location==0.0.3

  • openimis-be-medical==0.0.3

  • openimis-be-product==0.0.1

  • openimis-be-insuree==0.0.4

  • openimis-be-policy==0.0.6

  • openimis-be-contribution==0.0.1

  • openimis-be-claim==0.0.7

  • openimis-be-api_fhir==0.0.4

NEPALI QA Platform



LEGACY_DNS: ??

LEGACY_IP: 132.148.151.32

DATABASE_NAME: openIMIS-demo-1.3.0

LEGACY_SERVER: Windows 2012 R2

NEW_DNS: https://openimis.nepalehr.org

NEW_IP: 18.194.86.139

NEW_SERVER: Ubuntu 18.04.02 LTS



frontend modules versions: N/A

ibackend modules versions: N/A

backend modules versions:

  • openimis-be-core==0.0.11

  • openimis-be-location==0.0.3

  • openimis-be-medical==0.0.3

  • openimis-be-product==0.0.1

  • openimis-be-insuree==0.0.4

  • openimis-be-policy==0.0.6

  • openimis-be-contribution==0.0.1

  • openimis-be-claim==0.0.7

  • openimis-be-api_fhir==0.0.4





Did you encounter a problem or do you have a suggestion?

Please contact our Service Desk



This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/