GSoC with OpenMRS Final Evaluation

Hello Everyone! This was the last week of the Google Summer of Codes program and we were supposed to submit the final evaluations containing details of all the work, documentation etc. Below I shall try to give you all an overview of what the project was, how I went about it and what was achieved finally.

Overview:
The HTML Form Entry module of OpenMRS module family allows people with basic HTML skills to develop forms and enter data into the system via these forms using the OpenMRS UI. The HTML Form Entry module being very old, even predating the REST API, uses a generic HTML Form Submission process to create and edit encounters and obs. There were requirements in recent times where people wanted to be able to submit these same forms using a REST API (each one having their own specific use cases ranging from bulk entry to offline form entry)

Primary Objective

Extend the HTML Form Entry Module to allow submission of HTML forms via RESTful APIs therby Restifying all the current API endpoints.
Develop a proof of concept OWA (Open Web App) allowing basic data entry to submit HTML forms through the API so that the API can be thoroughly tested.

Due to lack of time, only the first objective could be achieved.

Work:

The project was all about making the existing HTML form entry module services available over REST. We started with studying about the controllers in the HFE module and tried to figure out the flow of how things integrate with the UI. Later on we decided on what all features are required to have REST access and also decided on the format of the API request and responses. The flow from here on was pretty much learning about spring annotations by reading the openmrs docs and implementing the controllers which internally used the HFE module’s services. There were some blockers when it came to writing tests and figuring out what all tests should be written, and also in setting up the openmrs testing environment. Writing Tests is still under progress and I aim to get it done in the following days. The state of the project as per my knowledge and expectation is that the APIs can be used by simply integrating the module with openmrs but may or may not ensure consistency according to user expectations as extensive testing is still to be done.

Contributions: The github repository for the module can be found at the below link.
https://github.com/openmrs/openmrs-module-htmlformentryrest

Resources
Brief documentation of the REST APIs can be found at:
https://wiki.openmrs.org/display/docs/HTML+Form+Entry+REST+documentation

Thoughts on GSoC:

GSoC has been a great learning opportunity for me. Got to learn a lot of new technologies, learnt to read and understand big codebases, etc. OpenSource is the core of the computer science community, development community etc. and more and more people should contribute to it.
Thank you OpenMRS for giving me this opportunity and Special thanks to my mentors for guiding me all the way. 
I hope to keep in touch with the community as and when I find time to contribute whenever possible.

A Short Demo explaining how the APIs work: https://youtu.be/hYCzEfVglg4

The project wiki can be found at the below link:

https://wiki.openmrs.org/display/projects/RESTful+Submission+of+Forms+in+HTML+Form+Entry

Like what you read? Give Piyush Kundnani a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.