During last Saturday’s weekly conference call we discussed adding the ability to schedule an order-able list of patients on the calendar that is not time-based.
Brady mentioned that there has been some interest in the past for a feature like this, particularly by practices that put patients on a list for a given day without scheduling actual times.
The types of practices that might have use for this type of scheduling feature might be:
(1) Urgent care/ER practices
(2) Practices in third world countries that have a more informal method for scheduling
(3) Practices that do home visits (like mine).
I would like to try to do this project as a core project (not a module.). And, I would like to add the feature to the calendar without changing how it works.
During the last week, I have been looking at how the scheduling calendar functions and how it is coded. I have also been brainstorming some ideas of how to implement the scheduling of an order-able list of patients.
Creating A New Provider Category - Patient List
When you click on a time to create a new appointment, you have the option to create two different types of Events – a “patient” event or a “provider” event.
Please note that I will refer to appointments as events since that is how the OpenEMR code refers to appointments. The table used to save appointments is called ‘openemr_postcalendar_events’.
I would create a new category of “provider” event and call it “Patient List”.
This category would have a start time and an end time and all of the other features of other provider event categories.
When this Patient List block is displayed in the calendar, it would be displayed the same way other provider events are displayed. However, inside the block, we would need to display the list of patients scheduled during that block. I don’t think this would be very difficult.
Scheduling Appointments inside the Patient List Appointment Block
When clicking on the patient list scheduling block, there would need to be two different types of popups.
(1) Edit the Patient List Event.
(2) Add/Edit Patients in the Patient List.
The top of the patient list block would have the label “PATIENT LIST”. Clicking on that would open a popup to edit the patient list provider event.
Next to the label “PATIENT LIST” would be a plus icon. Clicking on that would open a popup to add a patient event just like clicking on a time to schedule a patient in a time slot. However, the popup would be slightly different. There would be no provider tab and no date/time entry. There would be an additional input box for order number.
Clicking on a patient name in the list (if there are any) would open a popup to edit the patient event.
Database Storage for the Patient List Appointment Block
All of the appointments for patients scheduled in the patient list block would be stored in the same table that all other appointments are stored in – ‘openemr_postcalendar_events’.
Two new columns in the table ‘openemr_postcalendar_events’ would be created:
(1) pc_patient_list_item (type = boolean)
The columns for start time and duration for the patients in the patient list would match the start time and duration for the patient list block that they are in.
Calendar Code Upgrade
The current scheduling calendar in openemr is outdated, does not display well, and needs new modern features, such as drag and drop to change appointment time and duration.
It is based on an open source project that no longer exists, is no longer updated, and is not coded in a way that is easy to read and modify:
PostCalendar - PostNuke Events Calendar Module
There is an open source calendar project that is modernized, has a better UI, displays well, is coded well, and is still actively maintained/updated. It was even discussed in the forums five years ago:
In their website, click on demo, then login to see their calendar scheduler.
Its basic design and structure is almost identical to the calendar in OpenEMR. However, it is just more modernized with additional features and design tweaks.
If you look at it superficially, it even looks like it could be a fork from the PostNuke Events Calendar Module (but it is not and the coding is very different).
I know this calendar upgrade/replacement would be a major endevour, but I don’t think it would be too big or too difficult.
I would like to hear everyone’s thoughts about my proposals.