Skip to content

Instantly share code, notes, and snippets.

@apooravc
Last active August 13, 2018 15:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save apooravc/ef9275bfd09421d7e9033ab88966ce6e to your computer and use it in GitHub Desktop.
Save apooravc/ef9275bfd09421d7e9033ab88966ce6e to your computer and use it in GitHub Desktop.
GSoC 2018 - Work submission

Work Summary - GSoC 2018

Project

Title: Improving the Calendar system in LibreHealth EHR | Project proposal
Mentors: Terry Hill, Priyanshu Sinha
Organization: LibreHealth | Repository

Introduction

During the previous Google Summer of Code, a successor to PostNuke Calendar, which was the earlier basis for EHR’s Calendar system, was deployed. That was a JavaScript event-based Calendar called FullCalendar. The goals of this migration were to solve issues with using PostNuke Calendar and to improve the user interface of Calendar system to make it more intuitive and accessible to the users. My project aimed to further improve the current Calendar system. This involved adding an audit feature for appointments which would allow users to see who rescheduled an appointment and when it was rescheduled as well as adding several enhancements that would improve user experience, user interface of the Calendar system and the scope of testing Calendar system for debugging purposes.

Work Done

Work done can be divided into following categories:

  • Feature: This includes newly added Calendar features.
  • UI/UX Enhancements: This includes changes that improve user interface, user experience of Calendar system.
  • System Improvements/Fixes: This includes fixes, improvements done in Calendar back-end and other areas of EHR.

Feature

  1. Audit feature for appointments | (Merged) PR #1176
    Description: This feature logs changes done in an appointment's date, time and status. It also tracks which user did a change and on which date. It lets users select a patient, track that patient's appointments by date or a search query and view log records of selected appointment.
  2. Managing vacation/holidays in bulk | (Open) PR #1183 | Last GSoC commit
    Description: This feature lets users make vacation events for a given date range and provider as well as make holiday events for a selected set of disjoint date, day type (full day/half day) and facility under providers who are specific to facility of corresponding holiday events. It also lets users delete a set of holidays by selecting corresponding date and facility.
  3. Event drag-resize-copy feature | (Open) PR #1199 | Last GSoC commit
    Description: This feature lets users drag and drop an event to change its date or time (starting and ending) or provider and resize an event to change its ending time or duration. This also lets users copy an existing event and paste that event at a new position thus, creating a clone event with new date or time (starting and ending) or provider.
  4. Cover Calendar for facility ACL | (Open) PR #1189 | Last GSoC commit
    Description: This PR adds a facility ACL (Access Control List) feature to EHR so that a user would be able to access only those patients who are at a facility that the user has access to (which are user's schedule facilities). This PR merges my work in covering calendar related changes with Art Eaton's Facility ACL PR.

UI/UX Enhancements

  1. Event based Calendar refresh | (Merged) PR #1161
    Description: There are many events which changes calendar, for e.g.: creating a new event. To view these changes, one must either manually refresh calendar or wait for fixed time-based calendar refresh. This PR adds an event based refresh which refreshes calendar whenever such events are triggered and completed.
  2. Direct access of patient’s demographics from Calendar | (Merged) PR #1148
    Description: This PR makes the name, on appointment slot, of patient a hyperlink so that users may click on it to open corresponding patient's demographics. Another PR adds event's description after hyperlink.
  3. Refactor facility list in calendar | (Merged) PR #1156
    Description: This PR improves the layout of facility list in calendar's sidebar.
  4. Add status delete alert in patient event panel | (Merged) PR #1158
    Description: This PR adds an alert so that users can re-confirm their decision to delete appointments and an alert to prevent users from making an event with status "Deleted".
  5. Move appt. time check to correct place | (Merged) PR #1159
    Description: This PR moves appointment's time check to make it happen before event panel's form submission and not after so that if time is out of clinic hours, alert to prevent creation of appointment is shown and event panel is not closed. Otherwise, alert is shown after event panel is closed and then, users have to re-enter all details.
  6. Add appointment's tooltip display styles | (Open) PR #1198 | Last GSoC commit
    Description: This PR adds display styles to an appointment's tooltip like an appointment's slot text has and replaces custom calendar tool-tip with a new tool-tip plugin and layout.
  7. Scroll time in Calendar views | (Merged) PR #1203
    Description: This PR makes calendar scroll to current (local) time slot if it can otherwise, it scrolls as much as it can and a red line indicator crossing current time is also added. Scrolling happens whenever calendar loads, refreshes or whenever user changes views (1-day, 2-day, week) or navigates through dates (prev, next, today).
  8. Provider scroll in Calendar's agenda views | (Open) PR #1205 | Last GSoC commit
    Description: This PR adds a horizontal scroll bar in agenda views of calendar to prevent crowding of provider columns when there is a large number of providers selected to being displayed in such views.

System Improvements/Fixes

  1. Repeat parameters in Calendar Admin tab | (Open) PR #1201 | Last GSoC commit
    Description: This PR adds repeat parameters in calendar admin so that a set of repeat parameters settings can be stored with respect to an existing or new category and can be accessed as default settings of repeat parameters corresponding to the selected category in patient or provider event panel.
  2. Fix calendar schedule facilities | (Merged) PR #1137
    Description: There is a global $GLOBALS['restrict_user_facility'] in features tab in Admin which when true restricts facilities in calendar event panel to only selected schedule facilities set up in Edit User for selected(clicked) user(provider) in calendar. This PR adds this global and several other statements to make this feature work properly.
  3. Logging appointment delete in calendar | (Merged) PR #1116
    Description: This PR makes system log deletion of appointments in patient-tracker and patient-tracker-element tables and adds status "Deleted" in status drop-down option list in event panel.
  4. Not able to change fields in calendar globals | (Merged) PR #1172
    Description: Some of the global fields in Administration > Calendar section were not saving changes. Corresponding updates were not taking place in the database. This PR fixes this issue by making a couple of syntax changes in the elseif chain in validation block of edit_globals.php.
  5. Update FullCalendar | (Merged) PR #1218
    Description: This PR updates FullCalendar and FullCalendar scheduler source code in calendar module to the latest stable version as of March 2018.
  6. Set time zone over EHR | (Merged) PR #1179
    Description: This PR adds a drop-down option list of supported time zones to System tab in Admin > Globals which lets users select time zone for date/time functions used over all places in EHR system. Initially, it covered Calendar system only.
  7. Refactoring Facilities for iziModal | (Merged) PR #1134
    Description: This PR changes plugin used for displaying Add Facility modal and Edit Facility modal from fancybox to iziModal which improves the modal interface.
  8. Fix iziModal - Updater conflict | (Merged) PR #1194 & (Open) PR #1206 | Last GSoC commit
    Description: There was a conflict between iziModal and updater. When iziModal was closed, tabs that were opened were refreshed but, updater was also getting opened. This was resolved by adding a custom class name to reference tab's refresh icon (in former PR) and changing class selector to this new class name wherever iziModal is used in system (in latter PR).

Work Left To Do

  1. Calendar testing suite. Track with Issue #774
  2. Extend audit feature to recurring appointments.
  3. Extend event drag-resize-copy feature to recurring appointments.

Quick Links

Thank you, mentors - Terry Hill, Priyanshu Sinha for your patience and help throughout this journey.

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