A patient portal that utilizes AWS Lambda to integrate with a legacy scheduling system. Surfaces upcoming appointments and Zoom links when clinics moved to virtual care during the COVID-19 pandemic.
is a leader in care for children with autism and other developmental differences. They provide in-clinic Applied Behavioral Analysis (ABA) therapies as well as clinical and medical care with locations all around California. Because of their unique care models that integrate various types of therapies, Cortica currently uses two different systems, Athena
, to enroll patients, schedule appointments, and bill insurance providers and clients. Sidebench has been working with Cortica for the past several months to build custom software that will eliminate the need to rely on multiple legacy systems.
My work started with Cortica in February 2020, with the intention of reinventing a parent's digital experience with Cortica--from discovery (SEO, website), to online enrollment, to their first visit, to understanding their schedules. When the COVID-19 pandemic forced Cortica to completely change their operations and move all therapies to online within days in March, we pivoted to ship a quick win for our long time partners.
To properly paint the picture, envision the impact that Cortica has on their patient families
: some children begin their time at Cortica with such severe autism that they partake in 4+ hours of therapy every day. Other families might have multiple children at Cortica, juggling multiple other schedules. It's not uncommon to see parents that have quit their jobs to become full time caregivers for their children.
In March, Cortica's scheduling team moved quickly to assign Zoom links for therapy appointments, coordinating with both parents and providers to ensure that both parties would be able to attend sessions. However, the process of scheduling and creating a Zoom meeting was tedious and manual: Cortica was using providers' personal meeting ID's, and manually copying and pasting those links into a free form field in their legacy scheduling tool. The scheduling team then composed individual emails to parents with their list of appointments and their appropriate Zoom links.
Problems arose when parents received a multitude of emails with lists of Zoom links--some emails might have contained a typo, then there would be a correcting email, but everything would get lost in their inbox. Imagine a parent with two young children that needed their therapies, each at different times and on different days, with different providers (read: different Zoom links). Parents were cancelling and missing appointments, because it was more hassle to keep everything in order for already busy parents, during a pandemic no less.
To find a better solution, I started with laying out the full process of Cortica's scheduling team, pointing out inefficiencies and steps that were high risk for error: Zoom links could be pasted into the wrong field or appointment, links could be missed when transferring to an email draft, or a parent could lose track of their most recent scheduling email.
I explained the problem to our technical architects at Sidebench to brainstorm what we could build within 4 weeks to help. I wanted to streamline the way a parent can view their upcoming appointments. Our Cortica stakeholder made it clear that he was looking for a true portal, where a parent can log in, view appointments, and access their correct Zoom links.
Without moving Cortica's whole operations to a new workflow (e.g. staying in their legacy systems), we pitched a simple portal that could do exactly what our stakeholder wanted. But, we would need the "perfect API" from CentralReach, one of Cortica's old scheduling tools for ABA therapies.
We would build user authentication (with Auth0), then use AWS Lambda to call to our "perfect API." Our perfect API would call to the CentralReach data warehouse and query just for that logged in user to surface only the appointments that belong to the logged in user.
CentralReach doesn't have a ready-to-use API, nor are they easy to work with. We only needed specific fields from appointments: who the patient is, who the provider is, when the appointment is, and the Zoom link from an "appointment notes" field. Luckily, a contractor on Cortica's team who has been helping us do work with CentralReach, was able to create an "Appointments API" to give us what we needed.
The Appointments API pulls appointment data from CentralReach on a per-client basis for only upcoming appointments, constrained to the next two weeks. That's when we used Lambda retrieve that data from the API and then return it to the frontend.
When parents create their accounts on our new portal, they would have to sign up with the same email address they have associated with their CentralReach account.
Every time a user refreshes their portal, it triggers a call and a hit to the CentralReach data warehouse. We were hitting Power Automate limits every day during development, and knew that we were at risk when we launched, especially since registering a new account made at least two calls. We increased our Power Automate limits and implemented caching, with nuances for when appointments might be updated or refreshed to display those changes on the frontend.
I lead requirements documentation and development for the four weeks that it took for us to design and build this portal. The intention was always to provide a quick win for both clinics and parents so we've moved resources away from iterating on the portal. However, we will integrate this portal into Axon, our custom scheduling solution that we're launching this year with Cortica.