Skip to content
EbenKwete
All work

02Patient journey

Castellana Clínica Dental

From symptom to appointment

A rebuilt patient journey for a dental clinic: patients find the treatment matching what they actually feel, and request an appointment without leaving the site. The request form, the clinic's calendar and a purpose-built appointment system share one record, so qualification, confirmations and reminders happen on their own, inside GDPR constraints.

Role
Product & Full-stack
Year
2026
Type
Patient journey
Status
Delivered
Visit the live site(opens in a new tab)
Castellana Clínica Dental contact page: clinical staff in scrubs beside an invitation to get in touch, above the treatment navigation

Stack

  • Next.js
  • TypeScript
  • Django REST
  • PostgreSQL
  • Brevo
  • Custom booking system

The problem

Patients do not search for implantology. They search for a broken tooth, a pain, a price. The site listed treatments the way the clinic thinks about them, so a visitor had to self-diagnose before finding anything, and then call during opening hours.

Automating that is constrained: a dental enquiry is health data. The system had to qualify and route requests without quietly turning a medical concern into a marketing record.

What I built

01

Treatment discovery

Entry points are written from the patient's symptom and situation rather than the clinical name, each leading to the treatment page and, from there, straight into a request, with no detour through a generic contact page.

02

Request, calendar & appointments

Rather than bolt a booking widget onto the site, the appointment system was built against a Django REST API the clinic owns: the request form, the calendar and the appointment record are one thing, not three that have to be kept in agreement.

A submitted request arrives already qualified, then gets its confirmation, its reminder and a follow-up if it goes cold, sent through Brevo, without anyone re-typing it.

03

Data handling

The flow is built around what it is allowed to keep: explicit consent, a stated retention period, the minimum set of fields, and clinical detail kept out of channels that were never meant to carry it.

Engineering decisions

GDPR-shaped data model

Consent, retention and minimisation are properties of the schema rather than a banner. A field that cannot be justified is not collected in the first place.

Single qualified record

Form, calendar and appointment share one record in Postgres, so a confirmation and a reminder can never disagree about the appointment.

Symptom-first information architecture

Routes are organised by the patient's problem and cross-linked to the clinical treatment, which is also what makes them findable in search.

Outcome

A clinic whose site answers the question the patient actually asked, and turns that answer into a booked appointment without a phone call.