Skip to content

Instantly share code, notes, and snippets.

@nileshprasad137 nileshprasad137/
Last active Aug 23, 2017

What would you like to do?
Final Work Submission for GSoC'17.

Work Summary - GSoC'17

The primary aim of my GSoC project was to recreate all the features which were using Smarty Template Engine and remove SMARTY as a resource. It involved removing and replacing UI components that use it, while managing the separation of controller classes and templates, maintaining the object oriented approach. Secondary aim of the project was to enhance User Interface throughout the application and to introduce client side validation.

Smarty Template Engine Replacement

To achieve my primary goal, I had to think of a proper approach to replace the use of SMARTY. I decided to modify the existing controller classes to work independent of Smarty class, by replacing Smarty defined functions like fetch(), display() and assign() using the concepts of output buffering in PHP. I made 3 pull requests to completely replace Smarty from LibreEHR.

Here are the Pull requests to achieve my primary goal :

  1. Removed the Smarty dependence of Controller Classes and completely revamp Administration/Practice:
  2. Removed Smarty from Prescription classes:
  3. Deleted all HTML Smarty Templates and minor changes in Vitals form:

Discussions related to Smarty Removal can be found at :

UI Enhancements

After achieving my primary goal, I started to work over UI of the application. After discussion with mentors, I decided to use Bootstrap as a CSS framework. I worked upon the layout of the forms and tables and introduced responsive behaviour in iframes, which was very important as LibreEHR gives its users the ability to open several iframes at the same time. I also worked upon the file and wrote a function to include latest versions of jQuery, Bootstrap, KnockoutJS and Date-Time-Picker as these are frequently used throughout the application. This function would really help doing the much needed jQuery migration to the latest version.

Pull requests for UI Enhancements :

  1. UI Enhancements in Patient Finder and Edit-Globals :
  2. UI Enhancements in Administration/Practice :
  3. UI Enhancements in Encounter Screens :
  4. UI Enhancements in Menu-Bar:
  5. Cleanup and minor UI improvements in Administration :
  6. UI Enhancements and add feature to set flowboard preferences from flowboard itself :

UI discussions at :

LibreEHR application being so large, I was not able to enhance UI over some frames but I'll continue this job post GSoC.

I also worked on the issue of Integer Fields accepting strings in demographics section. Here is the issue -
LibreEHR application uses a layout generator to generate forms and user has the ability to change the datatype of existing fields. But,there were no suitable datatypes available for storing integers, emails or URLs. I introduced these 3 datatypes which helped me resolve the issue.

Here is the Pull Request to resolve the issue :

Quick Links

Thank you mentors - Tony McCormick, Art Eaton, Tery Hill . You've been really cooperative and helpful throughout.


This comment has been minimized.

Copy link

aethelwulffe commented Aug 22, 2017

No text issues, reads good, has all the information you need (but certainly does not cover everything you did!).


This comment has been minimized.

Copy link

teryhill commented Aug 23, 2017

Looks good to me also.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.