In a particular project we have come up with the need for the following Enhancements to the Appointments Scheduling Module in Bahmni:
Auto Refresh of appointments
List View and Calendar view appointments currently refresh either on a manual refresh of the page or when the user creates or edits an appointment. If we are looking at a Calendar that is used by multiple providers to keep their agendas updated, we must ensure that the screen always shows the latest changes. In the absence of which, double , conflicting appointments etc will be booked for a provider.
We are looking at bringing in Auto refresh of the List view and the calendar View. The appointments will be refreshed in a set time period. We will retain the filters when this Auto refresh happens and refresh will happen only when the page is idle. Also we will take care of the validations with the updated information just after a refresh.
Ability to Undo Status change - Missed/ Complete appointments
In Bahmni we allow the undo of the Check-in action. However, for actions like Missed or complete, we cannot undo this change. We must have a way of going back, especially in cases of manual errors in changing the statuses.
Because of the way we track appointments status change in bahmni, we can never know the previous status of the appointments, unless it is the first change. So a undo is not possible but a reset to one fixed status is possible. Logically keeping this is as “Scheduled” makes sense. Users can then do the next steps after doing this reset.
Scheduled → Checked-in → Completed
Scheduled → Missed
Scheduled → Cancelled
So essentially through this feature will allow users to reset any appointment to a Scheduled Status. It will be configurable to specify which statuses can be reset. Also we will introduce privileges to ensure who is allowed to reset the status.
Limitation: Each state transition does not have a privilege. If you have set some statuses that are allowed to reset and the user has the privileges to do it, then they would be allowed to reset all allowed statuses.
Weekly View of a Calendar
Currently In bahmni we support only a Day view for both the List & Calendar View. It is necessary for providers to be able to quickly look at a week’s agenda in a glance to place their patient appointments.
The Calendar Plug in we are using already supports the Week View. We will make it configurable i.e implementations can choose to turn of the Week view. The implementations that choose to use the Week view will be able to see an option to switch between Day and Week Views.
Custom Calendar/ Appointments List Tabs
Currently, we have a single Tab called “Appointments List” for all providers and services. We apply Filters to see the information we would want to see. However there are scenarios where we would like to have a tab easily accessible, with a set of providers, grouped on some provider attributes. For example, you would want to see doctors of a Cardiology Department. Similarly, you can have another Tab for all the doctors from the Orthopaedic department. This is especially helpful for someone like a supervisor or a receptionist who would like to quickly see a group of providers to book appointments. This saves the effort of applying filters and filters get reset when a page is refreshed. And the users can switch between Tabs as required.
The approach is to introduce the ability to have Custom Tabs similar to the existing “Appointments List” tab, grouped on some Provider Attributes. The tab will behave the same way as the existing Tab, with both List & calendar view. But the focus is primarily on the Calendar View - to give the ability to see calendars specific to your needs without much effort and clutter. We will also ensure that privileges exist for each Tab, so that we show/hide the tabs based on who is logged in. In fact we could build on this further to have a “My Calendar” view, which will be tab specific to the provider who logs in - a provider specific view.
Further, we right now show only those provider columns in the calendar that have appointments. We will bring in a configuration to choose to display the Providers columns without appointments as well. This is because an empty column gives the person booking an appointment an idea of the available slots and is more intuitive to find a slot in the calendar.
Accepting or Rejecting an Appointment Request
Think of Appointments similar to meetings on Google calendar, where a meeting request can accepted or rejected or have a tentative acceptance. We are proposing something to similar to that where we can accept or reject an appointment when it is not booked by themselves. Appointments are often booked on behalf of doctors. This could be done by receptionists or some other doctor who wants to refer their patient to be seen by this particular doctor.
Now in some hospitals, one might not require such a request feature. However there are hospitals which strictly do not want doctors to add/edit appointments for other providers.
Introduce the ability to accept/ reject/Tentatively accept an appointment booked by someone other than the provider. Make this privilege based. We can different levels of privilege:
- Allow to book on anyone’s calendar without any restriction.
- Allow to book only on for self
- Allow to book, but must be accepted by the other provider to be considered as a valid appointment.
Similarly, we must have privileges for Editing/Status change of appointments. Also on the UI we must differentiate such appointments which are booked on your behalf and require action. We also need to have actions for Accepting/Rejecting/Tentatively Accepting such appointments.
We will be presenting our technical approaches to these in the next PAT call. Looking forward to people’s comments and suggestions.