Bahmni Implementation Training

This training program is designed for teams implementing Bahmni in a hospital. The teams could be internal IT teams of the hospital or an external partner organisation helping the hospital implement Bahmni.

The goal of the training program is to provide the implementation team with a good understanding of the process of implementing Bahmni. By the end of the program, the implementation team will be able to:

The program is structured into three parts.

Week 1: Preparatory Training

During this week, learners are expected to familiarise themselves with the pre-requisite knowledge and information required to implement Bahmni. Only after they are familiar with this knowledge, they should proceed with the training in Week 2.

Week 2: Features and Functionalities of Bahmni

During this week, learners are expected to become familiar with the features and functionalities of Bahmni. They are encouraged to view the videos demonstrating the various features and functionalities of Bahmni.

Week 3: Configuring Bahmni

For learners who will implement Bahmni, this is the most critical part of the training program. In this week, they will learn to configure Bahmni. They are expected to understand the architecture of Bahmni and also learn to achieve extended customisations in Bahmni using the configuration files. 

Week 1: Preparatory Training

Introduction to Bahmni

Welcome to Bahmni. It is an open source EMR and a full Hospital Management System with Lab, Billing, Pharmacy, PACS and other integrated features.

An Overview

Bahmni is made up of four services - OpenMRS, OpenElis, Odoo, and DCM4CHEE, which are integrated with each other. All integration happens using the atom feeds exposed by the individual services. These services run off an Apache Webserver and can be accessed by an Android application or a Chrome browser.

Bahmni - An Open Source Hospital System for Low Resource Setting

This video gives a quick introduction to Bahmni, an open source EMR and Hospital System built by ThoughtWorks,  along with its scope, benefits and ease-of-use. 

For more details on Bahmni, please visit:

Bahmni Implementation Scenarios

Basic Clinical Implementation

In this setup Bahmni is used for very minimal clinical data capture and for managing hospital operations. The setup involves using Bahmni for Registration, Basic Clinicals, Laboratory, Pharmacy and / or Billing and Reporting

Key Business Processes:

  • Patient Registration is done using the system

  • Basic Clinical entry is done in system - e.g. Diagnosis, clinical history or specific observations

  • Other clinical details are still on paper - like Prescription, Observations, Lab / Radiology orders

  • Laboratory - Based on orders given on paper - Enter samples and Lab results in the system

  • Pharmacy - Based on paper based prescription - Enter drug orders in the system, dispense drugs, generates bill and manage inventory

  • Billing - Based on paper orders - Enter services availed, products consumed (OPD & IPD) and generate bills from paper based records

  • Doctors get to see clinical history on patient dashboard based on data entered by other departments

Example sites - Gudalur in India, Charikot in Nepal, Kaliganj and Gazipur in Bangladesh

Non-Clinical Implementation

In this setup Bahmni is used primarily for managing hospital’s operations and not for any clinical purposes. The setup involves using Bahmni for Registration, Laboratory, Billing and Administrative Reporting.

Key business processes:

  • Patient Registration is done using the system

  • Clinical functions like Triage, Diagnosis, Prescription, Observations, Lab / Radiology orders are on Paper by doctors and clinicians

  • Laboratory - Based on orders given on paper - Enter samples and Lab results in the system

  • Pharmacy - Based on paper based prescription - Enter drug orders in the system, dispense drugs, generates bill and manage inventory

  • Billing - Based on paper orders - Enter services availed, products consumed (OPD & IPD) and generate bills from paper based records

Example sites - SEARCH in India

Phases of Implementation

Bahmni Implementation is making Bahmni ready to be used at a hospital facility.  So how is Bahmni different from other products like WhatsApp, Word or PowerPoint? 

  • Bahmni is an enterprise product and not a consumer product.

  • It is similar to OpenMRS, sharepoint, Odoo, and SAP

  • Bahmni caters to clients with different needs:

    • Activities

    • Workflows

    • Terminologies

    • Forms

    • Reports

Phases of Bahmni Implementation

  1. Set up an implementation team
  2. Gather requirements & analyse needs

  3. Configure Bahmni 

  4. Showcase

  5. Set up & deploy infrastructure 

  6. Roll out & training

  7. Define post-deployment support

  8. Plan for adoption

  9. Create SOPs for managing down-time 

  10. Manage on-going learning & improvement

1. Set up an implementation team

Based on the scope and size of the implementation project, a team needs to be set up. This team includes representatives from the client, the implementation team, and the end-user.  Representatives from the client includes stakeholders, decision makers, point of contact from the client side, and end-users (doctors, nurses, and hospital staff). The implementation team includes a business analyst, implementation engineers, and a project coordinator.

2. Gather requirements & analyse needs

The implementation team visits the implementation site to study the current and existing processes. The team has extensive conversations with clients/stakeholders during one-on-one meetings or in groups, During these discussions, they try to understand the as-is processes at the implementation site and propose the to-be process. They gather insights about the client's expectations and map these back to the features and functionalities of Bahmni. 

Let us see some examples below of how Bahmni has been used and configured to meet the specific requirements of hospitals and unique healthcare needs.

Implementation for MoH Bhutan

In a Bahmni implementation at Bhutan, the client's objective was to digitise all health facilities across Bhutan including referral hospitals. This would provide stakeholders better decision-making based on data gathered through inter-connected systems to ensure continuity of care. A sub-requirement was to automate certain clinical processes and workflows. The implementation team redesigned the workflow in Bahmni to suit the current requirements. Consequently, Registration, OPD and IPD workflows and reports were configured as per requirements. 

Implementation in Nepal

Bayalpata hospital in Nepal needed an electronic management system to reduce the time that staff spent on collecting data. Possible works with Bayalpata Hospital where patient reporting was laborious. About 1500 to 2100 patients visited the hospital every week. Bahmni was implemented across all major departments of the hospital such as inpatient, outpatient, lab, radiology, pharmacy, billing, registration, and warehouse. In this hospital, the use of the ERP module of Bahmni was quite rigorous. Therefore, Bahmni was configured to generate custom reports accordingly.

Implementation for EndTB

Similarly, Bahmni was used in an initiative to counter tuberculosis called EndTB. This was a research project that needed an EMR for data capture and analysis. Apart from the default features of Bahmni, some high value features were added to it such as reports, mobile/offline access, drug sensitivity test result capture, internationalisations (multi-language support), patient summary, including drugogram, treatment schedule upon patient enrollments, alerts management, program cohort dashboard etc. 

3. Configure Bahmni

This involves configuring the various attributes in Bahmni. For example, configuring Bahmni means configuring the following in Bahmni:

  1. Configure different applications

  2. Setup forms

  3. Setup reports

  4. Master data such as village list, diagnosis list, drugs list, inventory etc.

This is discussed in detail in Week 3: Configuring Bahmni.

4. Showcase 

Post configuration, the implementation team showcases the changes to the clients for feedback and validation. The typical agenda of a showcase is as follows:

  1. Confirming what you understood
  2. Showing how it works to meet the client's needs
  3. Soliciting feedback
  4. Clients, especially non-IT folks, come up with more concrete ideas when they see the real thing

5. Deployment

After the showcase to clients, you should now prepare for deployment of Bahmni. The key activities to note are: 

  1. Setting up infrastructure such as Network, Hardware, Operating System

  2. Installing Bahmni 

  3. Applying the custom configurations

6. Roll out and training 

Post configuration and deployment, you need to plan the roll out of Bahmni. To manage effectively, Bahmni can be rolled out department-wise, user wise or disease-wise as planned. The key next steps now are:

1. Training end-users such as doctors, nurses, registration clerks, etc to use Bahmni. Some users might not have used computers in their lifetime!  This might involve basic computer training, keyboard or mouse training, as well as helping them relate to a digital system,

2. Training support personnel such as administrators and IT support with the key skills and knowledge required to use and run Bahmni smoothly.

7. Post-deployment support

This is in the form of  L1 & L2 Support in order to address post-deployment issues such as:

  1. Infrastructure failures

  2. Configuration bugs

  3. Minor enhancements

8. Plan for adoption 

Adoption of an Electronic Medical Record is a well known problem. Unless users use the system for the right reasons, Bahmni can’t make the impact it is built for.

Some of the key challenges to address are:

  1. Low resource settings: Provider to Patient ratio is typically very high. Patient care is not directly dependent on EMRs.

  2. Usability challenges of moving things from a paper-based system to a digital system.

  3. Partnering with the client to adopt the system

  4. Generating reports to monitor the usage of the system

  5. Coming up with strategies or ideas to help users adopt the system

  6. Passing on the feedback to product team to make the product more usable

9. Create SOPs for managing down-time

There needs to be standard operating practices to manage the down-time of hardware, software and other infrastructure used in Bahmni implementation.  It is good to develop procedures for situations when the hardware is down so that doctors, nurses and other end-users have clear instructions about workflows when Bahmni is unavailable. Downtime procedures and supplies should be available electronically and on paper for greater accessibility. 

10. Manage on-going learning and improvement 

Over time, many good practices evolve that should be tracked and shared across users. For Bahmni, it is good to involve the client in the community discussions to help them resolve queries, share experiences, and offer advice and suggestions. These resources can be used by other implementation teams and hospitals to gain maximum advantage of Bahmni. 

Pre-requisites Technical

Preparatory training for implementers

Implementation engineers need to understand some of the basic and advanced concepts of Linux, database SQL, GIT & GitHub, and JSON. Below are links to some of these that you need to be familiar with before proceeding with implementation.

Git on GitHub

An introduction to Git version control system and how to fork, clone, and submit a pull request for Bahmni code in GitHub.

Attempt a quiz on GIT Github commands


JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming LanguageStandard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language. Read more.

Attempt a quiz on JSON

Overview of Hospital Functions

Doctor to patient ratio

WHO Recommends - 1:1000

In low resource settings - 1:1700


  • Availability of resources (infrastructure & practitioners) in rural areas

  • Affordability: 3.5% households are pushed below poverty line due to catastrophic out-of-pocket expenditure on healthcare 

  • Quality: Increased chances of medical errors owing to high patient load

Hierarchy of healthcare facilities

Primary healthcare denotes the first level of contact between individuals and families with the health system. 

Secondary healthcare refers to a second tier of health system, in which patients from primary health care are referred to specialists in higher hospitals for treatment. 

Tertiary healthcare refers to a third the level of health system, in which specialised consultative care is provided usually on referral from primary and secondary medical care. Specialised Intensive Care Units, advanced diagnostic support services and specialised medical personnel on the key features of tertiary health care. 

PHC - Primary Health Center

CHC - Community Health Center

Role of Hospital Information System

  • Immortalization of patient data: Reduces chances of errors owing to loss of paper records or non-disclosure of some information by the patient

  • Research & Advocacy: Easy extraction of data to support research and advocacy

  • Improved patient care: With analytics, better management of patient information

  • Care plans: Highlighting missed appointments resulting in better compliance to treatment

  • Worklist: Lessens the chances of missing “act-upon” items by care-providers

  • Clinical Decision Support Systems: Reduction in medical errors

Common Health IT Standards

ICD (International Classification of Diseases)

International standard for reporting diseases and health conditions. 

It is the diagnostic classification standard for all clinical and research purposes.

It helps in sharing and comparing health information between hospitals, regions, settings and countries.

SNOMED CT (Systematized Nomenclature of Medicine Clinical Terms) 

It provides the core general terminology for electronic health records. 

Its comprehensive coverage includes: clinical findings, symptoms, diagnoses, procedures, body structures, organisms and other etiologies, substances, pharmaceuticals, devices and specimens.

SNOMED CT cross maps to other terminologies like ICD-9, ICD-10 and LOINC.

It supports DICOM and HL7 standards.

Difference between ICD and SNOMED CT

SNOMED CT is more granular medical terminology. 

SNOMED CT is more comprehensive and multilingual.

There is a proposed merger between ICD and SNOMED which will be released as ICD-11.

LOINC (Logical Observation Identifiers Names and Codes)

It is a database and universal standard for identifying medical laboratory observations.

It assists in the electronic exchange and gathering of clinical results (such as laboratory tests, clinical observations).

HL7 - Standard format for interoperability

HL7 provides a framework for the exchange, integration, sharing, and retrieval of electronic health information. 

These standards define how information is packaged and communicated from one party to another. They define the structure and data types required for seamless integration between systems.

FHIR (Fast Health Interoperability Resources)

FHIR can satisfy the needs covered by almost all of the primary HL7 interoperability standards.

In many cases, it also provides additional benefits in terms of ease of interoperability. 

There is a possibility that FHIR could gradually replace some or all of these standards. 

DICOM (Digital Imaging and Communication in Medicine)

DICOM provides standards for imaging modalities such as 

  • Radiography

  • Ultrasonography

  • Computed Tomography (CT)

  • Magnetic Resonance Imaging (MRI)

  • Radiation Therapy.

DICOM includes protocols for image exchange (e.g., via portable media such as DVDs), image compression, 3-D visualization, image presentation, and results reporting.

OCL (Open Concept Lab)

In OpenMRS distributions, CIEL (Columbia International eHealth Lab) is the most widely used terminology dictionary.

CIEL gets periodic updates and has mappings to ICD, SNOMED CT and LOINC codes.

Open Concept Lab module is used to distribute CIEL and is being enhanced to be much more GitHub-like in how dictionaries & collections of concepts are managed.

OpenMRS distributions will now be able to subscribe to parts of CIEL dictionary and co-existence of CIEL and local concepts will be possible.


Universal Health Coverage - This system ensures healthcare for all the citizens of the country and provides protection against the catastrophic expenditure on healthcare. Could be achieved through following funding models:

  • Single Payer

  • Compulsory insurance (Could be purchased from public or private insurance companies)

  • Tax-based funding

  • Social Health Insurance

Importance of Data Privacy

Health information is very sensitive information and has a potential of being abused by insurance companies, employers or even by community members and can lead to stigmatization and discrimination.

Regulations on Data Security

Govt of India has proposed guidelines for healthcare data security. Please read more about it here.

Installing the Latest Version of Bahmni

By now, you must be familiar with the preparatory knowledge required to implement Bahmni. Before you proceed to week 2 of the training program, you must install the latest version of Bahmni. You can find the latest version of Bahmni here.

Installing Bahmni on Windows

This video explains how to setup Bahmni on Windows machine using the Bahmni Virtual (Vagrant) Box. You can also edit files inside the Vagrant box by setting up a sym-link between the Vagrant Box and Windows machine. This allows you to edit the files on your Windows machine directly using your favourite Text File Editor. 

Installing Bahmni for Production

This video is a step by step introduction on how to Install Bahmni v0.82 (using the bahmni command line installer). 

In this video, you will see how to install Bahmni v0.82, on a CentOS v6.7 machine by following the steps mentioned in this wiki document:

You will also see how to browse the file system to find the various OpenMRS modules of Bahmni, and how to see the logs.

In the end, you will also learn to improve the security of your installation, by setting up IPTables on your CentOS box. 

For any questions, please discuss them on OpenMRS Talk (Bahmni Category) here:

Seeking help!

If you have a question or a problem while working with Bahmni, please post it on the Bahmni talk Q&A Forum. Here is the link:

Week 2: Features and Functionalities of Bahmni

Explore Bahmni Demo

The best way to understand the features and functionalities of Bahmni is to explore it. Explore the version locally installed on your system or run the demo version from the link below.

Subsequently, we will walk you through various real-life hospital scenarios to give you a better idea about the features and functionalities of Bahmni in each scenario.

Scenario 1: Patient with high fever visits hospital

Scenario 2: Patient rushed to emergency

Scenario 3: Patient returns for a follow-up

High level workflow in a hospital

Practice exercises

By now you must be familiar with the various features and functionalities of Bahmni. Let's attempt some exercises to practise your familiarity with some of the features of Bahmni. Open the demo version of Bahmni or the locally installed version of Bahmni to practise these tasks.

Task 1: Register a new patient named Ahmed

Hints: Open the demo version of Bahmni to fill out the following details to register a new patient.

  1. Enter Patient Details (Your name and details), Address
  2. Take photo
  3. Start OPD Visit
  4. Enter Visit Details - Height and weight,  Registration fees
  5. Print the registration card

Task 2: Enter observations and order investigations in the Clinical App

Task 3: Refer out lab tests and upload test results

Task 4: Add Diagnosis, Medication and Disposition in clinical tab

Task 5: Perform the steps to sell medicines in ERP

Steps to perform the task:

  1. Go to sales quotations

  2. Edit some medicines

  3. Confirm quotation

  4. Go to sales

  5. Confirm sale order

  6. Collect money

  7. Print receipt

Task 6: Perform the steps to purchase and move products in ERP

Follow the steps below:

  1. Create a request for quotation (Purchases -> Purchase -> Quotation)

  2. Choose Supplier -> Add items 

  3. Confirm Order

  4. Receive products

  5. Split products

  6. Receive products

  7. Go to Warehouse -> Receive/Deliver By Orders -> Internal moves

  8. Move the Products from central store to Pharmacy.

Week 3: Configuring Bahmni

Overview of Bahmni Configuration

Bahmni EMR is a user interface layer that is built on top of OpenMRS. Where possible, Bahmni depends on configuration that can be performed directly in OpenMRS.

For example, OpenMRS provides a mechanism to define custom attributes for a patient. Bahmni uses this underlying facility to show custom attributes for the patient on the Registration app. However, on Bahmni, there is also a way to define mandatory attributes for a patient. This cannot directly be achieved by configurations in OpenMRS. Such extended customizations are achieved in Bahmni using configuration files.

Any feature that is to be configured in Bahmni will typically need a combination of OpenMRS configuration and modifying the Bahmni configuration files. 

OpenMRS Configuration

Configuring certain OpenMRS attributes such as users, patient attriibutes, locations, drugs, concepts and concept sets, etc. are required for every installation of Bahmni. Most OpenMRS configuration can be done using the OpenMRS Administration UI.

Bahmni App Configuration

Bahmni configuration files are deployed under /bahmni_config/openmrs/apps of the Bahmni web server. Each implementation should have its own copy of configuration files. The configuration files are largely simple json files. 

Odoo / OpenERP Configuration

Bahmni integrates OpenMRS with OpenERP which is a an open source ERP product. It is useful in Billing, Pharmacy and Stock management. Any patient registered in OpenMRS is synced by Bahmni as a customer in OpenERP. 

Modules in Bahmni

Before we proceed to configure the various attributes of the EMR such as users, patient attributes, locations, drugs, concepts and concept sets, etc, it is good to understand the various modules in Bahmni.

Modules to Configure in Bahmni

Laboratory Module

Bahmni integrates OpenMRS with OpenELIS, a laboratory management system. The doctor can order lab tests from the Orders tab in the consultation screen and the test will sync to OpenELIS where the lab technician can see the backlog of patients with their respective lab order requests. Bahmni automatically syncs the tests that are set up from the OpenMRS admin page to OpenELIS thus facilitating easy laboratory management.

ERP Modules

Bahmni integrates OpenMRS with OpenERP which is a an open source ERP product. It is useful in Billing, Pharmacy and Stock management. Any patient registered in OpenMRS is synced by Bahmni as a customer in OpenERP. 

Reports Module

Reporting is an essential feature of any EMR. The data that is stored in the EMR needs to be exported and analyzed. Bahmni provides a reporting module for the same. There are some standard reports that come as a part of the reporting module and the implementer also has the ability to define some custom reports.   

Configuring Registration workflow in Bahmni

Let us look at the steps to configure certain attributes of Bahmni in the Registration workflow.

You must be familiar with the real-life workflow of a new patient visiting a hospital. Below are the steps to configure certain attributes of Bahmni for a New Registration workflow.

New Registration

  1. Logging into Bahmni

  2. Home Page

Reference: Configure Home App

Sample Config

3. Registration Tab

Reference: Patient Registration Module

4. Search existing patient

Reference: Configure Patient Search

5. Create new patient 

6. Call out each details as you enter the fields. You can add any specific details for the fields if you want. 

Reference: Configure Core Fields

7. Address Hierarchy

Reference: Configure Address Information

8. Add Photo

Reference: Configure Photo Capture

9. Enter Height & Weight. BMI status auto calculated

Reference: Auto-Calculation of Observations

10. Start OPD Visit

11. Print Registration card being generated

Reference: Configure Printing of Patient Card

Configuring Clinical workflow in Bahmni

You are now familiar with the clinical workflow of Bahmni. Below are the steps to configure certain attributes of Bahmni in the Clinical workflow.

  1. Doctor Logging into Bahmni

Reference: Configure Security and Access Control

2. Configure Home Page (as before)

Reference: Configure Home App

3. Clinical Tab -> List of Active Patients

Reference: Configure Patient Lists / Queues

4. Patient Dashboard

Reference: Configure Patient Dashboard

5. Capture Patient Consultation Data

Reference: Configure Consultation UI

6. Capture details of Consultation Data such as vitals, details of history and examination, etc.

Reference: Configure Observation Forms

7. Order Lab Tests (Click on Lab and Radiology)

Reference: Configure Orders Tab for Lab and Radiology

8. Select Lab Tests

 Reference: Configure Specific Lab Tests

Configuring Lab Systems in Bahmni

By now, you must be familiar with the workflow of the Lab Systems in Bahmni. Below are the steps to configure OpenELIS and the other attributes of the Lab Systems during implementation.

1. Login to OpenELIS 

Reference: OpenELIS Basic Configuration

2. Tests ordered by Doctor in Bahmni auto synced in OpenELIS

Reference: Configure Laboratory Management System

3. Using OpenELIS

Reference: Using Laboratory System

Configuring the Clinical & Billing workflow in Bahmni

You must have walked-through the video demonstrating the OPD workflow. Below are the steps to configure the clinical tab and OpenERP while implementing Bahmni. 

OPD Workflow -> Doctor

  1. Clinical Tab -> Search for existing Patient

Reference: Configure Patient Lists / Queues

2. Clinical Tab -> Enter Diagnosis

Reference: Configure Diagnosis Tab

3. Clinical Tab -> Prescribe Medications

Reference: Configure Medication Tab

OPD Workflow -> Billing

  1. OpenERP -> Login to OpenERP

Reference: OpenERP Basic Configurations

2. OpenERP -> View Order and Quotation

Reference: Configure Pharmacy

Reference: Configure Pharmacy/Billing App

3. Using Billing and Accounting

Reference: Using Billing and Accounting

Configuring the Nurse's IPD workflow

Configuring IPD workflow 

Let us look at the hospital workflow after a patient is advised admission. The nurse takes up the role of assigning a bed to the patient. She logs into Bahmni and opens the IPD app to move forward. Let us see the typical configurations for the IPD workflow:

  1. Nurse logs into Bahmni

  2. Set up IPD: Reference: Configure IPD App 

  3. Admit Patient: 

    Reference: Configure Patient Admission
  4. Assign Ward/Bed: 

    Reference: Ward/Bed Management

Exercises for OpenMRS data model

1. Create a patient. Check database tables. Identify:

a. Name

b. gender

c. age

d. address

e. caste

f. patient identifier

Hint: A nice tool to look at the OpenMRS data model -

2. Add a concept set. Identify:

a. names

b. locales

c. concept sets

3. Add a coded concept. Identify: 

a. Where are the answers stored

4. Add a numeric concept. Make sure to add normal limits. Identify

a. Where are the limits stored

5. Create a lab order


a. Order name

b. Encounter

c. Patient

6. Add results. Make sure you add abnormal. Identify

a. Where is it stored

b. How is it stored

c. How is it linked to the order?

d. Is there anything specific about the encounter where the 

7. Add a coded diagnosis

a. Where it is stored

b. How is it stored

8. Add a non coded diagnosis. Identify:

a. Where it is stored

b. How is it stored

7. Add a form. Identify:

a. How is it stored

b. Where is it stored

c. How is it linked to the form name? 

8. Edit the form (To check with Arjun)

a. Identify how this changes existing data.

For multiple values, it should be comma separated

b. Where does the autocomplete in registration come from? 

c. How are limits stored in numeric concepts?

d. How to figure out who created an order? 

!!!!Important Concepts!!!!


All Observation Templates

All Orderables

Diagnosis Set of Sets

Concept reference source


ICD 10 codes


Important concept classes






Coded and non-coded diagnosis

Important References & Resources


You have reached the end of the course. Hopefully, you have a good understanding of Bahmni implementation now. As you continue to work on Bahmni,  you will become more comfortable with the various nuances of configuring Bahmni to suit your specific requirements. 

You are recommended to be an active participant of the Bahmni community activities to gain maximum advantage of the learning and developments at Bahmni.