The goal is to align Bahmni with the DevOps and cloud services common approaches and support creation of readily deployable goods. This can be achieved by adding container orchestration support to Bahmni with kubernetes.
Bahmni is an easy to use, complete, open source Hospital Information System (HIS) and Electronic Medical Record (EMR) that has been built in the Global South to meet the needs of low resource environments. Bahmni is a distribution of the OpenMRS medical record platform, with a user interface built from the ground up. It also supports Odoo (formerly OpenERP), OpenELIS, and dcm4chee, providing an integrated robust solution that manages patient information in a flexible fashion through the care cycle, including registration, various points-of-care, investigations, lab orders and results management, PACS and billing.
BeeHyv will use the investment to facilitate the resources needed towards shipping the proposed solution to the community. This will generally cover the development and administrative costs related to the project.
The kubernetes orchestration support for Bahmni, aims to provide out-of-the-box support for rapid, lower cost and scalable deployment which can be freely utilized and adapted by any implementation service provider or national digital health agencies.
BeeHyv comes with both being a preferred technology partner for non-profits on several low resource settings and for startups in defining and implementing devops strategies. Our expertise in both open-source technologies and devops technologies while working on past projects would ensure that the set goals of the proposed solution are met.
The Bahmni project was started by Thoughtworks in January 2013, and in January 2018 Bahmni coalition was formed to own the Bahmni project. At present, the Bahmni Coalition includes 11 organizations, including BeeHyv.
BeeHyv will undertake the development activities and will work closely with of Bahmni coalition and other relevant communities to achieve the project goals
Problem statement:
Currently, Bahmni can be installed and configured for a hospital one at a time.
-
This installation involves numerous manual steps, which lead to error prone installations.
-
Besides being a time consuming installation, the Bahmni installations depend on a specific operation system (Cento OS).
-
Also, the scaling support based on services is not available for Bahmni installations.
Technical approach:
The Bahmni deployment involves setting up software in CentOS machines - for which currently dockerization support is being added. To add to that, we would like to create Kubernetes pods so that Bahmni can be scaled at component level based on the specific use case. The various steps involved are
-
Each instance of Bahmini will be deployed in a namespace in Kubernetes.
-
Each namespace will consist of the following components
-
Bahmani web
-
OpenMRS(Tomcat)
-
OpenElis(Tomcat)
-
OpenMRS(MySQL)
-
Odoo(Python)
-
Odoo-connect
-
DCM4CHEE(Jboss)
-
OpenElis(Postgres) /DCM4CHEE(Postgres)/Odoo(Postgres)
-
Following components will be a stateful deployment since the data needs to be persisted
-
openelisdbdata
-
odoodbdata
-
odooappdata
-
openmrs-data
-
openmrsdbdata
-
Kubernetes deployment yaml along with service for OCL in a common namespace will be created. This will be used by all the Bahmani instances.
-
LoadBalancer will be created using the Kubernetes service object and will point to the Bahmni web pod.
Tasks required (To be achieved)
-
Creation of helm chart for Bahmini and deployment file for OCL
-
Pipeline for building of the docker images
-
Setup of monitoring and logging
-
Pipeline for deploying the helm chart and OCL
Monitoring and Evaluation approach:
We propose to follow the Agile development model with 2-week sprints, with daily stand-ups. A project management tool like Trello or JIRA would be used to assign work to the team and track progress. A status report will be published to the Digital Square team before the monthly sync-up (proposed) to set the agenda for the call. It will contain the following information:
-
Activities completed during the reporting period / planned during the reporting period but not completed (Slipped activities will be reported in bold).
-
Activities scheduled for the next reporting period.
-
Blockers, dependencies, and queries.
-
Cumulative progress report for the sprint.
The diagram given below explains the model at a very high level.
Project Deliverables
BeeHyv will provide the following deliverables: code and documentation detailing the tasks accomplished to achieve the codes.
The status and outputs of the deliverables will be provided in the following reports
1. Regular Status reports - These reports will document updates of the activity plans to be submitted regularly at agreed-upon intervals.
2. Interim report - This report will have a summary of the project and a brief description of the progress at an agreed-upon interval through the project execution.
3. Final project report - This report will provide a detailed description of the final results of the project and will be presented during the closure of the project.
Project Gantt Chart
Risk Mitigation:
It is critical that the scenarios for all implementations are considered while designing the solution and any failure in this regard will lead to adoption risks. To mitigate this risk, we plan to have periodic discussions with the Bahmni coalition and incorporate their inputs into the solution development process.
Comments
Digital Square comments
- The application focuses on Kubernetes, you will need to also consider supporting docker if you are not (due to Kubernetes also being resource hungry, which may not be feasible to test in a simple machine considering low resource settings where most of these global goods are used)
- Also clearly detail on activities to align with Instant OpenHIE
Hello Digital Square team -
Hello Digital Square team - Many thanks for your comment. We are grateful for the opportunity provided. I wanted to check if this application is "In scope" and we need to address this comment in our technical application or we need to address this comment and update the concept note for your perusal.
We have considered docker and
We have considered docker and dockerization is already happening - In response to the suggestions, we will install in minikube for testing and the eventual plan is to install this in simple aws/any cloud env