Wiki Spaces


Get Help from Others

Q&A: Ask OpenMRS
Discussion: OpenMRS Talk
Real-Time: IRC Chat | Slack


Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.

Primary mentor

Backup mentor


Assigned to




The aim of this project is to provide the ability for users healthcare providers to mark commonly-used data entry forms as favoritestag/mark patients of special interest, and provide views of tagged patients for quick access.


Most hospitals and clinics that use Bahmni see a very wide range of patients, and thus they have many different data collection forms specific to different medical problems (ranging from HIV to Diabetes to Prenatal Care, and more). As this list of available forms grows, picking them in the user interface gets cumbersome.

Most individual doctors use a smaller set of forms most of the time. If we allow each user to mark some forms as favorite, and show these first, we will save time. Even ten seconds that the doctor doesn't have to spend searching a list in the UI when they're seeing a patient is very valuable.


You access the Form Entry screen in Bahmni by going to the Clinical EMR application and then going to Clinical => (Select patient) => Consultation => Add New Obs Form.

In this project you would make the following changes to that screen:

1. The button for each form should have a star icon; clicking on this toggles whether the form is a favorite for this user
2. The forms popup should have two tabs, one for Favorites, and one for All Forms.

See this doc for sample mockups of what this would look like in the app.

On the back end we should add a REST web service to make it easy for the AngularJS application to set/unset and list favorite forms.

Under the hood we might be able to store these using OpenMRS's User.userProperties field, however those are limited in value to only 255 characters, so we will either need to modify OpenMRS to make that field longer, or introduce a new Java domain object that lets us store these.

Project Champions

and healthcare providers often want to view or analyse certain cohorts/groups of patients based on various conditions (e.g. patients receiving similar kinds of treatment, patients with outstanding lab results). Adding functionality for users to tag patients using custom user-defined tags would allow for quick lookup of these patient groups, and provide a starting point for further development on patient analysis and notifications.


Patient tagging is not meant as a replacement for functionality like care-plans, programs, order sets, etc. which have much richer needs/scenarios e.g. patient state, visit schedule. 

This project involves development in the existing Bahmni EMR to let users manage custom tags, and associate patients with these tags.

This would cover the following workflows:

I create a new tag(s) → I choose a patient → I mark the patient with one or more tags

I select an existing tag → I view a list of patients that have been marked with that tag → I select a patient from the list to view their patient record




A tag is a string associated with a patient.

Local Scoped Tag

A local scoped tag is a one that is visible only to the user to whom it belongs.

Global Scoped Tag

A global scoped tag is a one that is visible to everyone having access to the app.

This project would require data modelling work to extend the existing data model to support tags, as well as implementing functionality to manage tags, mark patients and view lists of tagged patients.

This would include work across the technology stack - adding back-end functionality, a REST web service, and user interfaces in the front-end AngularJS application.

Project Champions

Skills Needed

  • Java & Javascript (especially AngularJS)
  • Experience working with RESTful Web Services


  1. Adding front-end functionality to a large mature AngularJS application.

  2. Adding a back-end REST web service to an OpenMRS module that exposes an existing Java API in a more convenient way.

  3. Documentation of this new feature in our wiki pages

Extra Credit

  • Extend the 'favorite' functionality to apply it to Medications.



  1. To be able to manage (add/edit/remove) custom tags (local scope)

  2. To be able to mark patients using one of the tags available to the healthcare provider

  3. To be able to see a list of patients by tag - e.g. clinical, in-patient

Extra Credit

  • To be able to create Global scoped tags based on privileges

  • To be able to mark patients with Global scoped tags

  • To be able to associate an indicator colour (and icon) and see the indicator on patient queues.