One medication record per person, coded in dm+d. Interaction checking at the point of prescribing, a controlled drugs register that balances, MAR charts for community and care settings, therapeutic monitoring for high-risk drugs, structured medication review against STOPP/START, and the pharmacy surfaces either side of the prescription.
Medicines are where most avoidable harm starts and where a large share of the money goes. Most organisations hold the same person’s medicines in four or five places: the GP system, the ward chart, the care home’s paper MAR, the community pharmacy’s record, the discharge letter. commvita holds one medication record per person, coded in dm+d, and every surface in this explainer reads and writes that one record.
Drug, dose, frequency, route, indication and the prescriber who signed it, held against the person. The demonstration database carries 6,743 active medication rows across the seeded population. Every row is one drug for one person, coded, not free text in a note.
Three checks run when a drug is chosen: does it interact with what this person already takes, is it on the formulary this organisation uses, and is this prescriber allowed to prescribe it at all. A community nurse prescriber restricted to the Nurse Prescribers’ Formulary is stopped by the system, not by a policy nobody reads.
Three statutory or near-statutory registers hang off the same record: the controlled drugs register with a running balance, the medicines administration record for community and care settings, and therapeutic monitoring for the drugs that need a blood result before the next dose.
A prescription starts with a positively identified patient. Not a name typed into a box: an identified person, because the allergy and interaction checks have nothing to run against otherwise. From there the form carries the dm+d search, the dose, the route, the indication and the formulary decision, and it won’t let a prescriber sign past a contraindication without recording an override.
Choosing a drug fires a check that pulls the person’s signed, sent and with-dispenser prescriptions and pairs them against the new one. Matches come back sorted worst first, each with what the interaction does and what to do about it. Warfarin with an NSAID returns the bleeding risk and the advice to use paracetamol, add a proton pump inhibitor if the NSAID is essential, and monitor the INR.
The same selection checks the formulary hierarchy the organisation runs. Non-formulary is allowed and it demands a written reason before the prescription can be created. That reason is what turns a non-formulary count into something a medicines committee can act on.
A prescription moves through draft, signed, sent to Spine, with dispenser, dispensed or cancelled, and each move is an event on the prescription instead of a status somebody overwrites. A prescription can be recalled after it has been sent. The EPS surface is Phase 4 against FHIR R4 with smartcard authentication.
The controlled drugs register is the one medicines record that’s a legal document. It has to show what came in, what went out, who recorded it, who witnessed it and what the balance is after every movement, and the balance has to match the cupboard.
The witness field is required for a Schedule 2 entry. The balance is computed from the movements not typed, so a register that doesn’t reconcile is visible as a number instead of discovered at an inspection. Each administration writes an audit row of its own, carrying the drug, the actor and the fact that a dual witness was recorded.
Two registers that community and care settings usually keep on paper. One says whether the dose was given. The other says whether it was safe to give it.
Every row carries the time the dose was scheduled and the time it went in, by whom, with an outcome of given, due, missed or refused. The gap between those two times is the thing a care regulator asks about, and it’s a subtraction here instead of a reconstruction from initials on a chart.
The high-risk list is the one every safety report keeps naming: anticoagulants, insulin, opioids, lithium, methotrexate. Each monitoring entry carries the test, the result, the target range and a plain yes or no on whether it’s in range. Out of range demands an action note, and the count of outstanding actions sits on the tab label where the clinician will see it.
Prescribing safely one drug at a time isn’t the same as prescribing safely. The optimisation dashboard works at the level of the whole regimen: how many medicines, how much anticholinergic burden, which STOPP criteria fire, which START criteria say something is missing, and who is overdue a review.
The same caseload is switchable between practice, PCN and ICB, which matters because deprescribing is a population job done one person at a time. A review can be started, deferred with a reason or completed, and the completion writes back to the record, not to a spreadsheet. Alongside it sits a visualiser that draws the cohort as a network of drugs and conditions with the deprescribing candidates ringed, and aggregates STOPP and START flags into a heatmap by practice. That visualiser holds its content in the page and has no API behind it; it’s a demonstrated surface and the status table below says so.
Three pharmacy surfaces that sit either side of the prescription: the community pharmacy taking work off general practice, the hospital pharmacy getting a patient out of a bed, and the ward pharmacist doing the reconciliation that stops the two disagreeing.
All seven clinical pathways are pre-built, a referral goes out to a named pharmacy with the clinical context attached, and the outcome comes back into the record so the loop closes. The page reads seeded content and says so on screen; referral, outcome, analytics and directory endpoints exist behind it.
To-take-away medicines tracked from the moment discharge is requested, with the waiting time against the four-hour standard, the item count, the pharmacist and a delay flag. The delay report attributes lost hours by ward and by pharmacist, which is what turns a pharmacy queue into a bed the site manager can plan for.
The ward pharmacist’s day: a reconciliation queue with the sources checked off, a drug chart review queue, an intervention log coded to PCNE with the cost avoided attached, and a ward assignment board that shows which ward is behind before the consultant asks.
| Capability | Route | Model / API | Status |
|---|---|---|---|
| Medication record (dm+d coded) | /medications | API /medications · /dmd/search · /dmd/lookup · audit on prescribe and stop | ● Live |
| Prescribing and EPS | /prescriptions | API /prescriptions · sign · send · recall · /events | ● Live |
| Drug interaction checking | /prescriptions | API POST /prescriptions/interactions/check · 25 rules, graded | ● Live |
| Formulary check and proposals | /prescriptions · /formulary | API /formulary/check · /formulary-proposals | ● Live |
| Controlled drugs register | /medications | API /cd-register · dual witness · running balance | ● Live |
| MAR chart | /medications | API /mar-chart · scheduled and administered times | ● Live |
| High-risk drug monitoring | /medications | API /high-risk-monitoring · target range · action note | ● Live |
| Structured medication review | /medicines-optimisation | API /medicines-optimisation/reviews · /stats · STOPP/START v3 | ● Live |
| Prescribing analytics and stewardship | /prescribing-analytics | API /prescribing-analytics/dashboard · practices · formulary deviation · high-cost drugs | ● Live |
| Polypharmacy network and heatmap | /medicines-network | Reads content held in the page; extends the optimisation and analytics data above | ☉ Demonstrated |
| Pharmacy First | /pharmacy-first | Page reads seeded content and says so; API /pharmacy-first/referrals · outcomes · analytics · directory exist | ☉ Demonstrated |
| Discharge medicines (TTAs) | /pharmacy-ttas | Page reads seeded content; API /pharmacy-ttas/tracker · delay-report · summary exist | ☉ Demonstrated |
| Clinical pharmacy caseload | /clinical-pharmacy | Reads seeded content and carries a banner saying so; no API behind this page today | ☉ Demonstrated |