A day view, filtered by doctor and by status. It is the screen the front desk lives in, so it shows the day rather than a month grid you have to click into.

Filter by doctor, by status, or by neither.
No double booking, but back to back is fine
The system refuses to book two patients into the same doctor at the same time, and names the clash when it does. What it does allow is 09:00 to 09:15 followed by 09:15 to 09:30, because touching ends are not a clash and that is how a clinic actually runs.
Cancelling an appointment or marking a no-show frees the slot again straight away. Neither leaves a hole in the day that somebody has to remember to clear.
It holds when two people click at once
The clash check takes a database lock for the length of the booking, so two clerks working the phones cannot both pass the check and both write. One gets the slot and the other is told. A check that only looks before writing is fine in a demo and fails on a busy Monday.
The times are derived from one field
You give a date, a start time and a length. The system works out the end time, the slot label and the sort key from those. In the system this replaced, each was stored separately and they disagreed often enough that people stopped trusting the list.
Vitals are recorded on the appointment
Blood pressure, pulse, temperature and weight are fields on the appointment itself, so the observation sits with the visit it was taken at rather than on the patient record where it loses its date.
Reminders go out without anyone pressing send
A scheduled job texts everybody due in tomorrow. It runs against your own patient records, through ICTCore, so the numbers do not have to leave your infrastructure to reach a gateway:
php artisan hospital:appointment-reminder
Put it on cron and it is safe to leave alone. If messaging is not configured yet it reports what it would have done rather than failing.
See it rather than read about it. The appointment screen is in the user guide.
The user guide walks the whole system in the order you would meet it, and the screenshots page has every screen. The source is on GitHub under the GPL v3.