Skip to content

Instantly share code, notes, and snippets.

@nileshprasad137
Last active August 23, 2017 00:01
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nileshprasad137/8cf19bbdcc7b38e6e54c191fd1c594bf to your computer and use it in GitHub Desktop.
Save nileshprasad137/8cf19bbdcc7b38e6e54c191fd1c594bf to your computer and use it in GitHub Desktop.
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: LibreHealthIO/lh-ehr#598
  2. Removed Smarty from Prescription classes: LibreHealthIO/lh-ehr#614
  3. Deleted all HTML Smarty Templates and minor changes in Vitals form: LibreHealthIO/lh-ehr#665

Discussions related to Smarty Removal can be found at : LibreHealthIO/lh-ehr#553

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 headers.inc.php 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 : LibreHealthIO/lh-ehr#600
  2. UI Enhancements in Administration/Practice : LibreHealthIO/lh-ehr#634
  3. UI Enhancements in Encounter Screens : LibreHealthIO/lh-ehr#641
  4. UI Enhancements in Menu-Bar: LibreHealthIO/lh-ehr#653
  5. Cleanup and minor UI improvements in Administration : LibreHealthIO/lh-ehr#666
  6. UI Enhancements and add feature to set flowboard preferences from flowboard itself : LibreHealthIO/lh-ehr#664

UI discussions at : LibreHealthIO/lh-ehr#597

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 - LibreHealthIO/lh-ehr#447.
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 : LibreHealthIO/lh-ehr#574

Quick Links

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

@aethelwulffe
Copy link

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

@teryhill
Copy link

Looks good to me also.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment