Case study
One app to schedule 40+ doctors across 25 states.
How I built a scheduling and referral system for a nationwide anesthesia network, on top of the Google tools they already used, without changing how their doctors work.
The situation
Pediatric Dental Anesthesia Associates is a network of more than 40 anesthesiologists who travel to partner dental offices in over 25 states to sedate children for dental work. A doctor typically visits one office a day each month and sees anywhere from a handful to a dozen patients in a visit. Keeping that many moving parts straight is a full-time job for the scheduling team.
Each doctor already had their own Google Calendar, and the team kept office, staff and calendar details in Google Sheets. There was a small AppSheet prototype, but it was limited. Referrals from dental offices had no structured workflow, and the offices had no simple way to check on their own cases.
The constraint that shaped everything
The doctors were not going to change how they work. Their calendar is how they know where to be tomorrow, and asking 40 busy physicians to learn a new tool was a non-starter. So the rule from day one was to build around Google Calendar, not on top of it. Whatever the schedulers did in the new app had to show up in the doctors' calendars within seconds, and changes made in a calendar had to flow back.
The approach
Rather than introduce new servers and new bills, I used tools the team already had. Each one has a clear job.
AppSheetThe app people use, on phone and desktop
Google SheetsThe database, one tab per table
Apps ScriptThe sync engine that connects it all
The result is a small system with no hosting to maintain. AppSheet reads straight from the Sheets database in real time. When a scheduler saves an appointment, AppSheet calls a webhook that creates the event in the right doctor's calendar. A timed script then checks the calendars for edits and writes them back to the database.
One app, the right view for each person
Schedulers work on desktop, nurses and physicians are on their phones, and dental offices log in from their own front desks. Instead of building separate apps, there is one app that shows each person only what they need.
- Schedulers create, edit and cancel appointments, review incoming referrals and move a case to a different doctor without losing its history.
- Nurses see the daily list for their doctors and update status from the field.
- Physicians see their own schedule, read-only.
- Dental offices submit referrals, follow the status of their cases and see only their own patients.
- Admins manage the reference data and users.
Access comes from a single users table matched to each person's Google login, and the row-level rules are enforced by the app itself. If an office account is ever set up incorrectly, it sees nothing rather than everything.
Turning referrals into appointments
Offices with app access submit a referral directly. Offices without it use a short form that lands in the same place. Either way, a new referral automatically becomes a draft appointment for the scheduler to finish, with the patient and office details already filled in. When the draft is scheduled, the referral updates to accepted on its own, and the office can see the result without calling anyone.
The hard parts
Two-way sync sounds simple until you think about what can go wrong. Most of the real work went into the details nobody sees.
- Sync loops. If the script writes to the calendar and the calendar then triggers the script, you get an endless echo. Every record carries a marker of where the last change came from, so the script can ignore its own writes.
- Two people at once. Google Sheets has no row locking, so every write goes through a lock to keep simultaneous edits from corrupting data.
- Speed. Booking in the app shows up in the calendar in a few seconds. The reverse check runs on a timer and only looks at what changed recently, so it stays fast across 40 calendars.
- Existing data. The team already had office and staff IDs in use, so the new database keeps them rather than starting over.
- Nothing is deleted. Cancelled appointments and inactive users are marked, not removed, so there is always a history.
Where it stands
The app is live and in daily use by the client's scheduling team, nurses, physicians and partner dental offices. The database, the sync engine, the referral workflow and the role-based views are all in production.
It also did its job as a foundation. The client is now scaling up to a larger system with more capabilities, building on the same structure rather than starting over. Because the app handles scheduling for a medical practice, access is limited by role, offices see only their own cases, and no patient data appears anywhere on this site.
Need something similar for your business?
Start a conversation