Clinexia
In practice

What it looks like in the moment.

Concrete scenarios that show how Clinexia behaves when a doctor, receptionist or pharmacist is in the middle of doing their job. Not promised outcomes — actual product behaviour.

A drug the patient is allergic to

Consultation page · Prescription tab

A patient is recorded with a Penicillin allergy. The doctor types "Amoxicillin 500mg" in the prescription. The medicine name input turns rose, an inline chip says "Patient is allergic to Penicillin · severe", and a banner at the top of the tab lists every conflict. The match is class-aware — typing "augmentin" or "ampicillin" triggers the same warning. Source: a curated drug-class map (penicillin, NSAIDs, sulfa, cephalosporins, macrolides, quinolones, opioids, statins, ACE inhibitors, beta blockers, iodine).

A male patient picked for gynecology

Appointments · Book modal

Reception selects the Gynecology department in the appointment form for a patient recorded as male. A warning banner appears under the department field. If they submit anyway, the server returns 422 with: "Gynecology consultations are restricted to female patients." The same rule fires on consultation creation and appointment-request conversion. Pediatrics enforces age ≤ 18 the same way.

Scanning shelves for expiring stock

Pharmacy · Medicines list

The medicines list shows each row's batch number and expiry as MM/YYYY. Rows where the expiry month has passed turn rose with an "expired" chip. Rows within 60 days of expiry turn amber with a "soon" chip. The MM/YYYY input on the form auto-inserts the slash. The batch and expiry are persisted on the medicine row itself; movement history is separate.

Diagnosing without typing in plain text

Consultation page · Notes tab

The Diagnosis field is a typeahead over 168 seeded ICD-10 codes — endocrine, circulatory, respiratory, gynae/ANC, ortho/fractures, mental health, preventive. Each code is taggable with a primary marker and a per-diagnosis note. The "Top diagnoses" report becomes a real query, not a free-text aggregation.

Two patients booked back-to-back

Appointments · Day grid

Doctor has a 30-minute appointment ending at 10:15. Reception tries to book another at 10:18. The server rejects with: "Previous appointment ends at 10:15. Please book at or after 10:20." This is the 5-minute grace gap — configurable as a class constant. Calendar blocks for leave, lunch and maintenance trigger the same overlap check.

Comparing today's visit with the last one

Consultations · Notes tab

When a doctor opens a consultation, the page checks for the patient's previous visit in the same specialty. If one exists, a "Compared to previous visit" panel renders at the top of the Notes tab: vitals delta with directional arrows, diagnoses split into continuing / new / resolved, medications split into continuing / added / stopped. The comparison uses the in-progress state, not just what's saved.

The whole medical history on one page

Patient profile · Full history

Each patient has a /history view: hero strip with active allergies and chronic conditions, vital trends as sparklines (BP, weight, BMI, blood sugar — with target ranges and out-of-range flags), top recurring ICD codes aggregated across visits, and a chronological visit log with every diagnosis, every prescription line and linked specialty treatments.

A pediatric visit, captured as one

Consultations · Specialty tab

When the consultation's plugin_code is "pediatrics", the Specialty tab loads the pediatric form — birth weight, gestational age, delivery type, feeding type, growth snapshot (weight/height/head circumference), developmental status, immunization status, allergy + recurrent infection history, parent observation, and advice fields (feeding / hydration / vaccination / parent counselling, plus a danger-signs-explained checkbox). Each of the 5 specialties has its own form.