Project Wiki:-

Mentor:- Kailayapathy Suthagar
Backup Mentor:- Daniel Kayiwa

Source Code Repository

Project Description


  • ✅ Automating the LABC module installation
  • ✅ Modify the current implementation to add one or more access locations to a user.
  • ✅ Enable encounter access based on patient location.
  • ✅ Manage location-based restrictions based on user roles.
  • ✅ Create a REST endpoint to show/edit the configurations of LBAC.
  • ❌ Add location restrictions to Reporting-REST.
  • Create an OWA page to show the System Information.

Detail module deployment guidelines can be found from this link,

v0.2.0 Release

you can get the module from the OpenMRS Add-Ons or…

Week 09 [July 22, 2019 — July 28, 2019]

This week we had the second evaluation for the work done.

second Evaluation Result

I got passed also had to make a presentation/demo on the work done till now.

Mid-term presentation of LBAC Module

Reports in OpenMRS

A report in the OpenMRS system is the output of the SQL Queries of the Dataset Definition. Dataset Definition is a set of SQL queries which are executed for the report.

As per My project deliverables, I have to add location-based restrictions to the Reporting Module of OpenMRS. From the last week, I have been working understanding the reporting module and designing on how to add the restrictions.


Week 11 [Aug 05, 2019 — Aug 11, 2019]

Location Based restrictions to the reporting module idea didn’t work out as they are raw SQL queries executed for the result. we cannot apply spring AOP concept as they return custom values and don’t have any fixed fields.

To Build the Location Restrictions to Reporting Module the SQL queries have to parsed and constraints of Locations to be added before they are executed. So we have dropped it in our project Objective’s List.

Yes, We have changed the project timeline and now working on the OWA for the user to show the information regarding the distribution of Users, Encounters, Patients…

Week 07 [July 08, 2019 — July 14, 2019]

Yes, Now the Rest Configurations required for the LBAC modules are finished and ready to build the OWA page to use this endpoint as per my timeline.

  • LBAC-40: Get the Required Modules for the usage of LBAC.
  • LBAC-41: LBAC on/off feature for the entities of LBAC
  • LBAC-42: Login Screen management
Swagger for API Documentation

The swagger tool is used for the API Documentation that's easy to maintain and read.API must be easy to use and have great documentation so these users can successfully integrate with your API as quickly as possible. Example of API users are front end and back end developers.

Swagger takes…

Week 06 [July 01, 2019 — July 07, 2019]


Worked on Making encounter Access Based on Patient Location. Implemented this Feature, so the Provider can Access the previous Encounters of Patient even if they don’t belong to his Location. For this, we are having Global Property to whether have access either with patient location or Encounter location.

  • LBAC-39: Enable encounter access based on patient location

We are developing this Services to change the configurations of the LBAC Module. The Developed Rest Services are further used by the OWA (Open Web App) Page to edit the configurations from the UI. …

Week 05 [June 24, 2019 — June 30, 2019]

This week All GSoC students should have their evaluations and they will be continuing further weeks of GSoC only if they pass the Evaluation.

Evaluations serve to expose process flaws, assess performance, and precipitate pass/fail decisions.

Evaluation is a process to give feedback about the organization, work done and about yourself. Its a 5 minutes of process where student have to fill Evaluation on Summer of Code portal.

After the evaluation period, I received a mail about the Evaluation results. I have passed successfully:-).

Evaluation Result

Thanks to my Mentor Kailayapathy Suthagar and @OpenMRS.Now, …

Week 04 [June 17, 2019 — June 23, 2019]

In Role-Based Access system, we have defined privileges accordingly to access a particular functionality. Check My Previous Post HERE.

While Installing the LBAC Module we create the Privileges for every Location as LocationAccess LocationName format. We use this privilege to check whether the user can access this Location or Not.

Location Based Privileges in OpenMRS

We get Accessible Locations of a user from his Location user property if he doesn’t have any user property we get the Locations from the Roles.

  • LBAC-34: Location-based restrictions based on user roles.

My Tasks for second Evaluation is to create…

Week 03 [June 10, 2019 — June 16, 2019]

Week3 was more of designing the User Role Based Access Feature to the Module and Fixing the Issues of LBAC-33 and Integrating it with OpenMRS Reference App.

The Login Page requires User to Select Location Login for Logging into the System. The previous version of the app checks whether the LBAC module installed or not and accordingly displays the Login Locations Fragment if not installed or if the logging user doesn’t have a Location property. …

Week 02 [June 03, 2019 — June 09, 2019]


In Current Implementation, the OpenMRS User has only Access to only one Location. Please go through My previous week blog post to know more about the Storing of Location of User.

Location Property of User is used to restrict access from Encounters, observation and patient searches and to return only those of logged in location.

During the Community Bonding period had a discussion with mentor regarding the storing multiple Locations of a User. Gone through the docs of the currently Present OpenMRS system and have decided to store the list of locations of the user as a UserProperty.


Week 01 [May 27, 2019 — June 02, 2019]

Location Based Access Control

I have successfully completed the Task and the pull request was created.

  • LBAC-20: Automating the module installation requirements.

Installation of LBAC requires the Person to have a PersonAttributeType to store the location attribute of the person. A PersonAttribute is an attribute to store the UUID value of an Entity in the corresponding table based on the PersonAttributeType. PersonAttributeType describes the value the attribute is used to store. Example Citizenship, Location, BirthPlace etc..

Every User has user properties. The Location is assigned to a user and stored as a user property. Every User Property for a user are stored using Map…


Senior Undergraduate in Computer Science at IIT(BHU) Varanasi

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store