The relationship between Bahmni EMR, OpenMRS, ELIS and ERP

I need help with regards to the differences between Bahmni EMR, Bahmni Lab (OpenELIS), Bahmni ERP, OpenMRS. From Bahmni wiki, the distinction is not very clear. But from what I understood, Bahmni EMR is encompassing the other three products.

So far I am able to clone the software from the repo rather than download the box itself. I am also able to install it on CentOS using bahmni-installer CLI. I can view all these interfaces now:

http:///home http:///openelis http://:8069 http:///openmrs

My issue is I can manage (customize) OpenELIS, OpenMRS except http:///home that does not have an ADMINISTRATION tab.

  • Is OpenELIS, OpenMRS the two applications in Bahmni that will be used in the clinical setting?
  • OpenMRS does not have options for uploading patient photo like what appears when you login to http:///home using Registration Clerk. Is uploading patient photo applicable in OpenMRS?

(Posted on behalf of a community member)

When you install Bahmni, it also installs OpenMRS, OpenELIS and OpenERP (each with their own databases), unless you choose to skip installation of some of these products. For instance, some people may want to only use the clinical pieces of Bahmni, and may choose to not install OpenERP. That is also fine. You can also choose to only use the EMR piece, and not install ELIS and ERP.

The Bahmni EMR uses OpenMRS as its backend system. So the Bahmni UI, sends requests for storing data and reading data to OpenMRS, and OpenMRS in turns talks to MySQL Database to store / read data.

In a hospital setup, clinicians, nurses and registration would use the Bahmni EMR UI for viewing/entering data. Even though OpenMRS also has its own UI, in Bahmni context, it is used as an Administration tool, for data setup – like registering providers, setting up Address hierarchy, setting up concepts, setting up drugs, and other such reference data. But for day to day activity, one would be using the Bahmni EMR UI.

For this reason, Patient registration should be done in Bahmni (and not in OpenMRS), so that features like Picture Upload, and other attributes can be captured.

I hope this explains it. For the context of Bahmni, the OpenMRS UI is the Administration UI to setup data. Certain things though, like Clinical Forms, still need to be uploaded via Bahmni UI, which then gets stored in OpenMRS DB.

Bahmni UI --> OpenMRS APIs (backend) —> OpenMRS MySQL Database

OpenMRS UI --> OpenMRS MySQL Database

Eventually, both are talking to the same database, but day-to-day functions are easier and configurable in Bahmni UI.

Bahmni also does one more thing: It integrates all the 3 systems… OpenMRS, OpenELIS and OpenERP… so that when you register a patient from Bahmni UI (which creates a patient in OpenMRS), then automatically a Patient is also registered in OpenELIS (Lab), and a Customer is added to OpenERP. Similarly, if you enter lab results in OpenELIS, they flow to OpenMRS, and hence become visible in Bahmni EMR UI. This way two way data flow happens in Bahmni, so that you only need to enter a single piece of information in a single system, while other systems receive the appropriate data.


Hi @gsluthra, I have a non-Bahmni instance of OpenMRS already running and need to integrate it with OpenELIS. Can I configure an AtomFeed on the OpenMRS instance that syncs with OpenELIS (replicating what Bahmni does out of the box)?

I also see a REST endpoint for Patient and LabResults in OpenElis, is there documentation on this service?

Thanks, Dominic


I have am no longer working actively on Bahmni for a year plus. So not very sure of the answer. I think it will be quite complicated to use existing OpenMRS — you might be able to, by copying over Bahmni modules.

I think @darius or @angshuonline or @bharatak might be able to answer this question.

It is possible but can be fair amount of work.
Assuming that you have

  1. OpenMRS Ref App or another distribution
  2. You want to use OpenELIS from Bahmni Repo. Not OpenELIS global.

To have test orders and results flow between systems, at broad level

  1. You will need to raise events from Order source (OpenMRS) - use the openmrs-atomfeed module, you can see examples from Bahmni how to raise an event.
  2. You will first need to sync the samples, tests etc sync to ELIS. For that bunch of conventions and structures need to be followed.
  • Create a concept Class ‘Sample’ and under that add your panels (class=labset) and tests (class=labtest).
  • You can check the organization and structures for “All orderables” in bahmni demo.
  • However, if you are raising your own events, then you need not follow all the conventions, - Sample type definition and setting the labs/panels as members to a sample type is mandatory though.
  1. Configure ELIS to check the feeds on OpenMRS, it should be able to sync in the tests
  2. From OpenMRS, raise an order and publish and event. The event contains an URL, that should support a contract that ELIS understands already. Check the ELIS codebase for examples.
  3. The way we sync back from ELIS by watching feeds and processing events from OpenMRS. You can check the bahmni-core codebase how that is done. Alternatively, write your code on ELIS side to push using OpenMRS REST API.

There are lots of other details. Its not really hard, but will require fair amount of work!


Thanks @angshuonline for your detailed response, I will consider giving this a try!

have you get any success by connecting openMRS to openELIS bahmni version?

No, I’m not planning to at the moment.

Do you have idea, how to run openElis globall locally ?