Generic Tagging Mechanism Project

Primary mentor

Wyclif Luyima

Backup mentor


Assigned to


Project Champions


OpenMRS has always lacked a mechanism that allows users to annotate domain objects with simple text labels/tags, these labels can be useful in various ways e.g to group data and generating work queues. Take an example where a doctor sees some patients on a given day and wishes to make a follow up on some of the findings about 5 of them at a later time, he or she could quickly tag these patients during their respective sessions with a 'Follow Up' label and would quickly look them up later by the tag. The goal of this project is to provide a tagging mechanism in OpenMRS that cuts across all domain objects.


  • Introduce a Tagging API i.e  a new service along with the DAO, this would require adding a new tables to the database to store the tagging information, it would be nice to use lucene for the search mechanism i.e to find objects with a given tag.
  • Implement a reusable fragment for the UI framework that can be included on a create/edit page of any domain object to allow a user to manage its tags, it would also be nice if the fragment can let the developer decide the orientation of the list of tags i.e vertical vs horizontal.
  • Implement a feature such that when a user clicks on a tag in the UI, they are shown a page that lists all domain objects with that tag, this listing page should be able to let them filter results by type for instance, to view only concept with a given tag.
  • The tagging service and UI components should require users to have the appropriate privilege(s) in order to manage tags.
  • Ability to disable tagging application wide

Skills Needed

  • Decent Java coding skills
  • Ability to work with minimal supervision

Extra Credit

  • Implement a reusable component similar to the UI framework fragment above which is intended for use in the legacy UI to allow users to add and remove tags to and from a domain object.


Related Issue: TRUNK-2284