Inspiration:

Having volunteered at the local pediatric urgent care, I have seen the results of an inefficient scheduling plan. For an Urgent Care to run smoothly, we want to see patients as soon as possible. To care for patients who severely need to be treated, an efficient scheduling system is paramount. In the current approach, the coordinator sifts through each volunteer's emailed availability by hand. Not only does this take time, but the results are prone to error.

Our solution to this involves automating the schedule creation process by streamlining each step from volunteers choosing their availability, to optimization, to displaying the final schedule.

What it does:

We have created a scheduling system that ingests volunteer availability input into a google form, processes the data, optimizes the schedule, and finally outputs the data into Google Calendar.

How I built it:

We have created a Google Form as the first point of contact for volunteers to input their availability, which automatically feeds into a Google Sheet. We use the Google Sheets API to pull down this data, which then begins by getting preprocessed. This list is optimized for constraints based on facility locations, facility requirements, and heuristics for number of shifts per volunteer. These constraints ensure that as many people as possible who volunteered get at least one appointment per week, and the Urgent Care is able to see patients as often as possible.

Challenges I ran into:

We decided to split the execution into the sub-tasks of requesting the data from the Google Sheets API, pre-processing the data, optimizing the schedule, and publishing the data out to Google Calendar so that we could work on all modules concurrently. There were some challenges in defining the data structure that would need to be published by one stage and ingested by the following stage. We worked this out by beginning at the Google Endpoints of what data the volunteers submit to the google form and what data google calendar needs to generate the necessary events. From here, we worked out what data would need to be processed, generated, and provided to teach stage of the pipeline.

Accomplishments that I'm proud of:

I am a Biomedical Sciences major with no background in Computer Science and in the past 24 hours, working with a team of three programmers, we have been able to make immense progress on an issue that has loomed over the urgent care I work at.

As a Computer Science major, I learned a lot about working with complex data structures and the care required to process large amounts of data. Using pandas to create dataframes from CSVs was a great tool that helped immensely with creating representations of users with user metadata, and hospital schedules with hospital metadata.

What I learned:

We learned a whole ton about using pandas and manipulating nested data structures. A lot of the complexity of the project entailed wrangling the data, which included a variety of complex representations, from working with datetime, to user information, to nested dictionaries representing monthly calendars.

What's next for Bypass Scheduling:

Add an option to schedule more than one volunteer for facilities that want multiple volunteers at any given time block, optimize for the amount of shifts that each volunteer wants, and hand over control of the google platform and code to the Urgent Care centers that will be using this application.

Share this project:

Updates