Six steps, from a search on a phone to a reminder for the next visit. Scroll through them: the phone shows what Awa sees at each step.
- 1
Search
Specialty, neighbourhood, language and the next free slot, from a phone, in French first.
FHIR · Practitioner · HealthcareService9:41Find a doctor
Cardiologist · DakarMNDr Moussa NdiayeCardiology · PlateauNext: Tue 14, 10:30FSDr Fatou SarrCardiology · MermozNext: Wed 15, 09:00IFDr Ibrahima FallCardiology · AlmadiesNext: Thu 16, 14:30 - 2
Book
The patient picks a slot straight from the doctor’s live agenda, with the doctor’s own availability rules.
FHIR · Slot → Appointment9:41MNDr Moussa NdiayeCardiology · PlateauAvailable slots
Mon13Tue14Wed15Thu16Fri1708:3009:0009:3010:0010:3011:0014:0014:3015:00Confirm booking - 3
Pay
Wave or Orange Money through a local aggregator, confirmed instantly. Paying at booking is designed to cut no-shows.
FHIR · ChargeItem9:41Payment
Consultation · Cardiology15 000 FCFATue 14 Oct · 10:30 · Dr NdiayePay with
WaveOrange MoneyCardPay 15 000 FCFA✓ Paid · receipt sent by SMS - 4
Consult
At the clinic or by video in the browser. The doctor console holds notes, history and the patient’s details.
FHIR · Encounter9:41Dr Moussa Ndiaye04:12In consultation - 5
Ordonnance
A pre-filled template the doctor adjusts, signed and delivered to the patient’s phone as a PDF with a QR check.
FHIR · MedicationRequest9:41Your prescription
✓ Sent to your phoneOrdonnanceFHIR · MedicationRequestDr Moussa Ndiaye · Cardiology
Awa Diop · 14 Oct 2026
Amoxicillin 500 mg3× a day · 7 days · ATC J01CA04Paracetamol 1 gIf needed · max 3 a day · ATC N02BE01Scan to verify - 6
Follow up
Reminders and the next appointment by SMS or WhatsApp.
FHIR · Communication9:41QQuralys
Quralys: reminder, follow-up with Dr Ndiaye on Tue 28 Oct at 10:30. Reply 1 to confirm, 2 to reschedule.
1
Confirmed. See you on Tuesday.
UpcomingFollow-up · Tue 28 Oct, 10:30
One screen for the whole practice. The agenda patients book into, the history of the patient in front of you, notes, the ordonnance and the video call, without switching tools.
A live agenda
Your own availability rules, online booking day and night, no double bookings.
Prepaid consultations
Wave or Orange Money at booking, with a receipt by SMS. Designed to cut no-shows.
The history on screen
Past visits, diagnoses coded in ICD-11, allergies and prescriptions before the patient sits down.
Pre-filled ordonnances
Templates you adjust in seconds, signed, sent to the patient’s phone with a QR check.
Video in one click
A private room per appointment, built on Jitsi, with an audio-only fallback for weak networks.
Reminders that work
SMS or WhatsApp reminders and the next appointment, without a secretary on the phone.
Video consult
Built on JitsiEmbedded rooms, signed per appointment, with adaptive quality and an audio-only fallback for weak networks.
A video consult is the same appointment and the same record as a visit at the clinic.
Standard first, from the first table. The whole stack is TypeScript, so the FHIR R4 type definitions enforce the standard in code. Records are stored in FHIR shape, which means moving to a full FHIR server later is an import, not a rewrite.
{
"resourceType": "Appointment",
"status": "booked",
"serviceType": [{ "text": "Cardiology consultation" }],
"start": "2026-10-14T10:30:00Z",
"end": "2026-10-14T11:00:00Z",
"participant": [
{ "actor": { "reference": "Patient/awa-diop" },
"status": "accepted" },
{ "actor": { "reference": "Practitioner/moussa-ndiaye" },
"status": "accepted" }
],
"slot": [{ "reference": "Slot/2026-10-14-1030" }]
}FHIR R4 core
Patient, Practitioner, Organization, Schedule, Slot, Appointment, Encounter, MedicationRequest, Observation. Types are enforced in code, so the standard can’t drift.
DHIS2 gateway
Translates clinical events into the tracker events and aggregate indicators the national DHIS2 expects.
Partner API
SMART on FHIR authorisation with patient consent, so existing apps read and write the same record instead of copying it.
International codes
ICD-11 for diagnoses, LOINC for lab results, ATC for medicines: codes any system understands.
“Nobody should retype a prescription. Write it once, in the international format, and every authorised door can open it.”
Each module is a separate product with its own users, but all of them read and write the same FHIR record. That is what makes Quralys an ecosystem rather than a bundle of apps.
01Booking
Month 1Find a doctor, book and prepay
02Practice suite
Month 1Planning, notes, pre-filled ordonnances
03Video consult
Month 1Jitsi, tuned for low bandwidth
04Partner API
Months 4–6SMART on FHIR for existing apps
05National gateway
Months 6–12A live link to the national DHIS2
06Pharmacy finder
Months 6–12Which nearby pharmacy has it in stock
07Lab results
Months 6–12LOINC-coded, to doctor and patient
08Patient record
Year 2A history that moves between clinics
09West Africa
After SenegalThe same core, country by country
10Insurance
LaterCoverage and claims
11Telepharmacy
LaterAdvice and delivery
12Public health analytics
LaterAnonymous, aggregate insight
Two stages, one data model. The MVP runs on managed cloud services so the first month goes into product. Once validated, the platform moves to infrastructure inside Senegal, run as code on Kubernetes with GitOps.
Now
- Vercel: apps, API, preview deploys
- Managed Postgres, FHIR-shaped
- Jitsi as a Service
- Wave and Orange Money
Next
- Kubernetes in a Senegalese data centre
- GitLab CI, Argo CD and Helm
- HAPI FHIR server and Keycloak (SMART on FHIR)
- Self-hosted Jitsi with TURN servers
- DHIS2 gateway, observability, in-country backups
Land in Senegal
After validationBecause records are FHIR-shaped from the start, the move from the cloud to Senegal is a migration of resources, not a redesign.