6 EMR Reports that Improve Patient Care at JSS

Over the last one year, I have been working closely with doctors and care-providers at Jan Swasthya Sahyog (JSS), a voluntary, non-profit, registered society of health professionals providing both preventive and curative services to people from the tribal and rural areas of Bilaspur, Chhattisgarh through a community health programme and a hospital. The hospital receives patients from as many as 1500 villages and the community health programme caters to the unmet needs of 70 villages in a remote tiger reserve area.

JSS is the first implementation location for Bahmni. During my stay at JSS, one of the focus areas was to increase Bahmni’s adoption to achieve better patient care. During my stay, there were a few reports on Bahmni, which the local support team and I setup, that directly improved patient care. This blog explains the need for setting up these reports and how they were configured using Bahmni.

We set up the following reports:

  1. Listing abnormal lab results for critical tests
  2. ANC Patients with Expected Date of Delivery
  3. Overdue Referred Out Tests (LPA, LJ, CBNAAT) As of Today
  4. Listing forms filled to refer out tests
  5. TB — Patients with appointed Followups
  6. Coded and Non-coded Diagnosis entered

1. Listing abnormal lab results for critical tests

JSS has an in-hospital laboratory, where patients undergo lab investigations as per doctor’s recommendation. Some lab results are not available immediately as the investigations ordered might be one of those that are referred out or are done once in a week for operational efficiency.

The patients usually come from villages as far as 300 km and most of them are daily wage workers. The patients, for whom the results are going to take time to arrive, usually return to their villages after giving the sample and being given a follow up date by when the results would have arrived. When they return to hospital they are supposed to meet a doctor who can look at the results in Bahmni and decide further course of treatment.

However it may happen that the patient does not return for the visit after giving the test sample. A few of these investigations might result in detection of problems like cancer, sickle cell or Hepatitis B. In these cases if immediate treatment isn’t started, it might result in worsening of the condition, resulting in death.

For these patients who did not visit back, results were going unnoticed and not acted upon.

At JSS, the team wanted to ensure that patients are at least informed of the results in case of abnormalities and are reminded to visit the hospital to get started on treatment.

Once this need was identified the product team provided an out-of-the-box (canned) report called Patient With Lab Test Results. The report was setup at JSS and is helping in getting out a list of patients for whom abnormal results have arrived for a few selected tests.

Report type: Canned Report — PatientsWithLabtestResults


“abnormalityReportForCriticalTests”: {
“name”: “Abnormality report for critical tests”,
“type”: “PatientsWithLabtestResults”,
“config”: {
“conceptNames”: [“CA-125”,“CA19–9”,“T3”,“T4”,“TSH”,“Hb Electrophoresis”,“HbsAg ELISA”,“HIV ELISA (Blood)”,“HIV ELISA (Serum)”,“VDRL ELISA”],
“testOutcome”: [“abnormal”]

Screenshot of report :

A nurse looks at this report on a weekly basis, checks if the patient has been started on treatment or given a follow up date. If not, the nurse calls up the patient and informs them that a serious condition has been detected and requests them to report back to the hospital. If the patient is not reachable, a post card is sent to the patient’s address.

2. ANC — Patients with Expected Date of Delivery report

JSS runs a community health programme in 70 tribal villages. These villages are located in forests or at the forest-fringe, and many of them lack access to all weather roads.

Maternal mortality ratio is high in the region and high prevalence of unsafe and home deliveries remain a cause of concern.

[ Read here to know more about the problem and what JSS is doing. ]

One of the interventions JSS is doing is to conduct antenatal care (ANC) clinics every month at 11 different locations in the area it serves. Pregnant women from nearby villages come for checkups. Physical exams, lab investigations and counselling are done are as part of the visit.

JSS maintains records of this data and keeps track of when the delivery of each woman is expected to happen. They are followed up to encourage to go for delivery to a nearby facility or at least have a birth attendant trained by JSS do it at home.

However, with information on physical registers or excel based system, it was very difficult to find out who are expected to deliver in a given time frame. The person maintaining these records becomes the bottleneck and this system was prone to data entry errors or search errors leading to miss outs.

With Bahmni, JSS started recording data in clinical forms for every visit to ANC clinic. One of the observations recorded in the clinical form based from first such visit is the Last Menstrual Period (LMP) date. The entry of LMP auto-calculates the Expected Date of Delivery (EDD) in the form. A report is configured that queries on this EDD and returns a list of patients in any given time frame.

Report type : Canned Report — DateConceptValuesPatientList

Configuration :

“patientsWithEDD”: {
“name”: “ANC — Patients with EDD”,
“type”: “DateConceptValuesPatientsList”,
“config”: {
“conceptNames”: [“ANC, Estimated Date of Delivery”],
“templateName”: “ANC Template”

Screenshot of report :

So now with just a few clicks, anyone can get the report for any timeframe. For example, “give me a list of of women expected to deliver in the next week”. And then the concerned person can follow up with them. This has been very helpful.

The next report to be setup in this area is to provide a list of women with high risk pregnancies so that better and proactive follow ups can be done with them. We plan to use the Program attributes feature coming out in Bahmni v0.81, so will wait for that release of Bahmni, before creating this report.

3. Overdue Referred Out Tests as of Today

At JSS, a few lab investigations get referred out to external centres. The entry is made in OpenELIS as referred out and results are entered in it once they arrive.

The turn around times for receiving results of these referred out tests from these particular centres is well defined. Based on this the patients are asked to come back at a specific date and time. However sometimes the referral centres don’t report the results back in time.

The doctors notice this when the patient comes to hospital and they check that patient record again. This delay has multiple side effects — impact on patient care, possibility of increased spreading of infection in the community, waste of an appointment in an extremely busy OPD especially since many patients visit the hospital from far off places).

In order to proactively follow up with the centres as soon as the results are due, doctors and in-house lab technicians maintained a separate excel spreadsheet manually, which had to be kept up-to-date. To figure out which tests are overdue, filtering and sorting needed to be done on that excel spreadsheet. This work was cumbersome and prone to manual errors.

A Bahmni report has been created to show overdue tests based on their expected turn around times.

Report Type : Custom SQL Report — ElisGeneric

Configuration :

“overdueTests”: {
“name”: “Overdue Referred out Tests(LPA, LJ, CBNAAT) As of Today”,
“type”: “ElisGeneric”,
“config”: {



Screenshot of Report :

A lab technician, now figures out these particular overdue tests at any point in time with a few clicks and sends out a mail to respective centres to follow up on their status. Due to the ease of this task now, its even proposed that this be delegated to a data entry operator to save time of skilled lab technician.

4. Listing Forms filled to refer out Tests

As mentioned in the above section, certain lab investigations get referred out from JSS to external testing centres. These centres, especially the ones related to culture and drug sensitivity tests particularly for detecting TB, require doctors to fill up a paper form in a format provided by each of them. These forms consists of basic patient details, history of symptoms and treatment and test to be done.

A sample paper form which doctors were required to fill earlier

Once the form is filled by doctor and sent to JSS lab, the sample is taken by the lab technician. All such forms and samples get collected in the JSS laboratory and sent to the external centres in batches.

At times during this process, the forms would get misplaced. This might mean that a patient’s sample won’t get sent for testing in time. Upon discovery of this mistake, which was usually late in the cycle and detrimental to patient care, the doctor had to fill up the form again and usually even the sample had to be re-collected.

In our effort to improve the process and to avoid this mistake from happening, we used the clinical forms, custom prints and Obs template report features of Bahmni. We created clinical forms for each centre based on the questions to be answered. Doctors started filling these forms in Bahmni against the patient record while placing the lab investigation order. With most patient details already in EMR, they only needed to fill in the remaining details. We set up out-of-the-box obs template report for each clinical form such that the lab technician can easily take out the report for any timeframe to get a list of all the forms filled.

Report Type : Canned Report — obsTemplate

Configuration :

“RNTCPData”: {
“name”: “RNTCP Form”,
“type”: “obsTemplate”,
“config”: {
“templateName”: “RNTCP Form”

Screenshot of a Report :

This now acts as a checklist for the lab technicians to avoid missing out any sample to be sent. The custom prints feature allowed the lab technician to print the forms in the exact format required by the centres.

5. TB — Patients with appointed Followups

Tuberculosis is one of the worst and potentially fatal diseases that the team at JSS encounters in the rural area of Bilaspur.

When a patient suffers from tuberculosis, he is supposed to undergo a rigorous treatment for about nine months. Defaulting on the treatment could make the patient resistant to the medication. So a very important aspect in this from the provider’s perspective is to regularly follow up with these patients to see if patients are regularly taking medicines.

At JSS, the TB clinic happens once a week at the Ganiyari hospital to follow up with these patients. Patients are given dates to visit the hospital for follow up once every one or two months.

JSS at the moment does not use the appointment module but a clinical form was already being filled by doctors recording observations related to TB care. This also included the Next Follow Visit observation.

A report was setup to query on this observation.

Report type : Canned Report — DateConceptValuesPatientsList

Configuration :

“patientsWithTuberculosisFollowups”: {
“name”: “TB — Patients with appointed Followups”,
“type”: “DateConceptValuesPatientsList”,
“config”: {
“conceptNames”: [“Tuberculosis, Next Followup Visit”],
“templateName”: “Tuberculosis Followup Template”

Screenshot of the Report :

This report helps to identify which are the patients appointed to a particular TB clinic and then check whether the patients are actually turning up against this list, and to find out which ones are defaulting. These defaulting patients can then again be contacted to counsel them and encouraged to stick to the recommended schedule.

6. Coded and Non-coded Diagnosis entered

Coded diagnosis are the ones that are pre-configured in Bahmni. The coded diagnosis show up as an auto-complete option while entering the diagnosis on screen. Bahmni EMR however does not stop the user from entering free text as diagnosis. These free text entries are called non-coded diagnosis.

The problem with non-coded diagnosis is that they cannot be easily taken into account into aggregate computer reports as there could be the same diagnosis written differently by different users (spelling mistakes, differing convention, etc). Deriving any further analysis from non-coded free text diagnosis therefore becomes difficult . These reports and analysis are often required at JSS for advocacy activities and to suggest actions to be taken to improve patient care.

While setting up the list of coded diagnosis into the system, JSS didn’t want to go ahead with the full exhaustive list of ICD 10 diagnosis as those would be too many and would be complex for users to understand and enter. So a set of diagnosis were identified based on the problems seen in the past. Some were codified, meaning spell-corrected, written with a convention for easy search and added to the system. The list is not exhaustive and so periodically the list of non-coded diagnosis entered by the doctors need to be reviewed, again codified and added to the system.

To assist in identifying such data, a report listing patients and their diagnoses (coded as well as non-coded) was created.

Report Type : Custom SQL — MRSGeneric

Configuration :

“CodedAndnonCodedDiagnosesEntered”: {
“name”: “Coded And Non Coded Diagnoses Entered”,
“type”: “MRSGeneric”,
“config”: {
“sqlPath”: “/var/www/bahmni_config/openmrs/reports/coded_noncoded_diagnoses.sql”



Screenshot of Report :

Doctors also occasionally want to pull up a patient record for either some case study or follow up. Sometimes the only thing they remember is the diagnosis they had entered for the patient. The search-patient-by-diagnosis feature doesn’t exist out-of-box as of now in Bahmni. So this report comes handy for that as well.


Bahmni enabled us to easily create reports based on scenarios and criteria suggested by doctors and health care providers in JSS. Even if a report is not available as part of the product out-of-the-box, a custom SQL report can be created at the site itself. The only technical skill required is knowledge of the underlying database and SQL. If the requirement is found to be generic enough across multiple implementations, then the product team would provide the report as an out-of-the-box report in one of the subsequent releases.

This helps in providing timely care and hopefully saves lives.