Menu
Healthcare

Telehealth consultation booking and in-browser virtual visit platform

A progressive web platform taking patients from a guided clinical intake questionnaire through private document upload, appointment scheduling, payment and an in-browser video consultation — with the clinician seeing intake answers and uploaded records in the same place the visit starts.

Client — a telehealth provider
Concept visuals — not actual screenshots
01 — Challenge

Offering remote consultations looks like a video-calling problem and isn't — the video call is the easy part. Before it can happen, patients need to be triaged, prior records need to be collected somewhere private rather than emailed around, a slot needs to be booked against real availability, and payment needs to be taken — all before the clinician can even open the case. And because the platform touches protected health information at every step, each hop between the application, storage, the scheduling provider, the video provider and SMS is a place where something private could leak into a URL, a log or a message body.

Patients also won't install anything to attend a single consultation, so the video experience had to run inside the platform itself rather than handing them off to a third-party app. And appointment times had to convert correctly between the scheduling provider's representation and clinic-local time across daylight saving, because an hour's error here isn't cosmetic — it's a missed visit.

02 — Approach

Kept patient documents off the application server entirely — uploads go straight to private cloud object storage and are only ever readable through a short-lived, single-object signed URL generated at view time, with orphaned uploads from an abandoned intake cleaned up automatically. The clinical intake questionnaire is modelled as data rather than code: question text, type, answer options and ordering all live in the database with a drag-to-reorder admin interface, so the clinical team can change triage questions without waiting on a release. Answers are presented one question per screen and preserved across back-navigation, only becoming part of the immutable appointment record at the point of booking.

Scheduling and video are both delegated to hosted providers but embedded inside the platform's own pages, so a patient is never handed off to a separate vendor experience — a meeting is created server-side at booking time and joined through a browser SDK. The patient and administrative audiences are separated at the authentication layer with two distinct guards and middleware rather than layering roles into shared code, so the boundary between 'a patient sees their own record' and 'staff see the patient population' is structural. Running two third-party embeds inside a policy-restricted page needed a bespoke Content Security Policy class with one method per integration, so every vendor's requirements are declared and reviewable in one place rather than accumulating as an opaque header.

03 — Impact

A remote consultation became one continuous flow instead of a chain of emails, phone calls and separate vendor links, with the clinician holding the full clinical context — intake answers and documents — on the same screen as the consultation itself. Medical documents are private by design rather than by policy, patients attend without installing anything, and the practice has a single administrative view of patients, appointments and consultation history in place of diary entries and inboxes.

Stack
LaravelMySQLLaravelMySQLAWS S3StripeTwilioBladeBootstrap
More work
AED inspection and compliance platform for schools and hospitals→Clinical coordination platform for coverage requests, consultation and secure messaging→Social accountability platform for weight loss with peer meal rating and real-time chat→

Something holding you back?

New build, rebuild, or adding AI to what you already have — I'll take a look and give you an honest perspective.

Get in touch ↗