Angshuman Sarkar
Jul 20, 2016 · 4 min read

Provisioning Bahmni

Continuing with our endeavor of running Bahmni services independently and for making provisioning, installation and wiring of the services absolutely smooth, we have made quite some progress. Some of them are

  • v0.81 onwards bahmni-installer works for all services not just emr.
  • Deployment is now flexible with configurable ansible inventory file and setup file. e.g: database replications, active-passive setup, multi-machine setup, deploying additional omods, specifying customization config etc etc
  • Bahmni can be setup with demo databases making it easy for new trials.
  • Bahmni comes with its own command line tool now. So you can say

bahmni install

bahmni db-backup | db-restore

bahmni update-config

type: bahmni --help for more options after installing the bahmni command.

Read more here: Installing Bahmni (Advanced Install)


During installation, Bahmni will add firewall rules to make the servers more secure. We also have default installation setup SELINUX with enforcing policy; this allows Bahmni service processes targeted and run in a confined domain. A confined process if exploited or compromised in any way are contained and can only cause limited damage.

The services themselves are run by a no-login user.

Moving ahead, we have begun spiking Ansible Vault for better storage of sensitive information.


We have worked with OpenMRS community on some advanced EMR features. Order Set is a feature using which clinicians can order a set of drugs/medications together. This allows users to save on time and effort, by ordering a set of drugs with predefined dosages, routes and frequencies. This is now part of OpenMRS core.

We have also worked on Episodes of care, which caters to services provided for a specific illness during a set time period. The first cut is a lighter version of the feature; done as a separate module, and you can find details here.

In addition, we have also developed Concept Attributes, intending to extend the concept model. This feature is part of upcoming OpenMRS core 2.0. When we migrate to OpenMRS core 2.0, we intend to leverage this for many future Bahmni features. e.g categorising of Concepts.

Memory leaks

We discovered some memory leaks in Clinical module (namely observation templates, patient dashboard) and plugged them. Well, the pros and cons of hitchhiking with JavaScript!!

Bahmni Offline

Alpha is out (yay). We have started field testing with few field level workers.

We have had to rework our design a fair bit. We have done away with the “service worker” approach of app cache, and instead we are bundling the app now. We have also reworked the reference data sync, and synchronize only relevant metadata and concepts applicable for the provider.

There is a separate ‘Event Log’ service and a specific omod that hooks onto a standard Bahmni distribution capable of serving the Offline app.

We are worried about data theft and have encrypted the SQLite db in android device using SQLCipher. We tried to find a viable solution for Offline’s chrome version, and after much investigation realized that there is no secure and reliable way to encrypt data on a chrome extension. Till such times come, we are going to suggest that devices using the chrome app, encrypt their devices for security. Also, in future we are going to work on a feature which allows Bahmni administrator to remotely wipe the database, when it comes online again. If you have ideas or suggestion, please let us know on OpenMRS Talk.

Going ahead, we will continue to work to make ‘Bahmni offline’ more generic and pluggable to any Bahmni installation. While we figure out a way to publish a pluggable offline android/chrome version, if you are interested to help in testing it out, please write to us.

Data Export

For one of our clients, we provided a way to export complete data of Bahmni in CSV format. It’s a batch job scheduled to run every night and is based on spring-batch. The codebase can be found here.

Tech Forum

We have started a ‘Tech Forum’ which happens every 2 weeks Tuesday 9 am IST. It is an internal call right now till we figure out how to make our design discussions public. In the meantime, if you are interested to join the call, you may write to us and we will share with the details of the call. You can always engage with us in OpenMRS talk on Bahmni.

Implementation Experience

Arjun, who has been working with JSS, wrote a detailed writeup on Bahmni and Fuji CR xRay integration via dcm4chee/PACS based on his research work. This information will be very useful to other Bahmni deployments in integrating with a CR system

Do let us know if you like this post, and what more would you like to hear from us.

Disclaimer: The views and opinions expressed by the author are personal to the author and do not necessarily reflect the positions of ThoughtWorks.

Bahmni Blog

A collection of articles written by members of the Bahmni community

Angshuman Sarkar

Written by

Bahmni Blog

A collection of articles written by members of the Bahmni community

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade