Modular Architecture - Technology stack illustrated



Docker (intro)

  • Base principles of Docker (image vs. container,... ) and Docker compose

  • DEMO: Using Docker to start a mssql database and restore (current) openIMIS backup

    • Configuring Microsoft Docker image in Docker-container yml file (mounting volumes,...)

    • Trigger image download and launch container:

      • docker-compose up imis-db
    • List running containers:

      • docker container ls
    • Connect to docker: 

      • docker exec -it openimis-poc_imis-db_1 /bin/bash
    • ... and, within the docker, restore database:

"All proxy" modularized frontend configuration

Implementing the Location backend module

  • Reverse of imis (mssql database) into django model:

python manage inspectdb > reverse/models.py

  • Moving the tblLocation and tblPayer to own module and fine tuning the model (Foreign keys,...)

  • python shell and navigation in model

  • exposing Location via the django /admin console

  • exposing the Location in json:api

  • exposing the Location in dynamic rest api

Replacing the locations_proxy by react locations implementation

  • Creating the Location react component and binding to rest api

  • Displaying Payers info within the Location detail, without hard dependence between module:

    • The PayersOfLocationList.js contribution

    • The LOCATION_SELECTED redux event

Database switch

  • Switching from managed = False to managed = True in django model

  • Changing the table name convention (prefixing by module name,...)

  • Clearing and regenerating migrations 

  • Switching database and recreate the database structure

  • Moving data from mssql to postgres

    • via CSV

    • via JSON... and JSONB column (via pgfutter)... some JSONB features

Module refactorings

  • adding a uuid to models

  • adapting the generated migration script to generate the uuid on existing database

Adopting FHIR as core data model

  • Using fhirbase to generate the FHIR database schema

  • Importing Locations into the FHIR tables... and adpatations in

    • the backend (django model)

    • the frontend



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/