commvita
Connected care platform
Medicines & pharmacy

Medicines and pharmacy: from prescription to optimisation

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.

Live vs demonstrated: Live — real, API-backed platform logic (wired end-to-end today) Demonstrated — representative control surface with seeded data / illustrative UI mock-up
© 2026 Commvita Digital Health Solutions Ltd. All rights reserved.

1 One medication record, coded once

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.

Ahead of the field
The interaction check happens at the point of prescribing, against what the patient is already on. When a prescriber picks a drug, commvita checks it against that person’s active prescriptions using twenty-five clinically significant rules graded contraindicated, major or moderate, and puts the description and the management advice on the prescribing form before the prescription can be signed. Every system we assessed either checks later, checks against a typed list rather than the record, or hands the prescriber an alert with no advice attached.From commvita’s own competitive assessment of this module against the systems it competes with. Our assessment, not an independent one.

The record

dm+d · BNF section · indication · prescriber

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.

The checks

Interactions · formulary · prescriber authority

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.

The registers

Controlled drugs · MAR · therapeutic monitoring

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.

Where the dictionary comes from. The prescribing search reads dm+d at the VTM and VMP levels and returns the forms, routes, legal category, controlled-drug schedule, whether the concept sits in the Nurse Prescribers’ Formulary and whether it carries a monitoring requirement. In this demonstration the platform runs on a bundled catalogue of 66 concepts. It takes a full TRUD release through a bulk ingest, and it will read the national dm+d service directly when configured to, falling back to the local catalogue if that service is unreachable. The 66-concept figure is a demonstration ceiling, not a design one.

2 Prescribing, with the checks in the way

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.

GP EPS Prescriptions, Active Prescriptions tab. Tiles read 12 total issued, 2 awaiting sign-off, 4 dispensed and 1 non-formulary needing action. A table lists twelve prescriptions with patient, NHS number, drug with its BNF section number, dose and frequency, type, status, EPS reference, formulary status and issue date. Oxycodone 5mg capsules and morphine sulfate 10mg MR tablets are tagged controlled drug; adalimumab is tagged non formulary and cancelled; methotrexate 2.5mg is tagged restricted and carries an interaction warning icon on a highlighted row. Signed rows offer Send to EPS and Cancel; draft rows offer Sign.
Prescriptions · Active PrescriptionsCaptured from the running system, build B-591 · seeded data
1

The interaction rules run against the record

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.

POST /prescriptions/interactions/check25 rules
2

Formulary is a decision, not a colour

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.

GET /formulary/check/formulary-proposals
3

Sign, send, track, recall

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.

/prescriptions/{id}/sign/send/recall/events

3 Controlled drugs: two signatures and a running balance

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.

Medications module, CD Register tab. A banner reads 7 high-risk medicines active, listing prednisolone, aripiprazole, apixaban, risperidone, donepezil, warfarin and morphine sulfate SR. The header shows 6,743 active medications and 7 high-risk, with tabs for Active Medications, MAR Chart with 2 due, CD Register with 5 entries, High-Risk Monitoring with 3 actions, and Stopped or Suspended. The register table notes that Schedule 2 drugs require dual-witness signatures and the running balance must match physical stock, then lists five entries: oxycodone SR 10mg in 14 balance 14, diamorphine 5mg per ml in 10 balance 10, morphine sulfate SR 10mg in 28 balance 28, then out 1 balance 27, then out 1 balance 26, each recorded by Sr. Johnson and witnessed by Sr. Davies or HCA Martinez, with notes such as AM dose administered.
Medications · CD RegisterCaptured from the running system, build B-591 · seeded data

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.

What the audit trail holds. Prescribing, stopping, administering a controlled drug and recording a dose on the MAR chart each write a typed action to the platform audit trail with the actor, the resource and a short detail line. A high-risk medicine is marked as such in the audit detail at the moment it’s prescribed. That trail is queryable by resource type, so “show me every medicines action on this record” is a filter instead of a project.

4 The MAR chart, and the drugs that need a blood test

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.

Medications module, MAR Chart tab, showing five administration rows: levothyroxine 75mcg scheduled 07:30 and administered 07:35 by HCA Martinez, outcome given; morphine sulfate SR 10mg scheduled 08:00 administered 08:15 by Sr. Johnson, given, noted patient comfortable no adverse effects; warfarin 3mg scheduled 18:00 administered 18:05 by Sr. Davies, given, noted INR 2.4 therapeutic range; morphine sulfate SR 10mg scheduled 20:00 and donepezil 5mg scheduled 22:00, both still due with no administration time recorded.
Medications · MAR ChartCaptured from the running system, build B-591 · seeded data

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.

Medications module, High-Risk Monitoring tab. A line reads therapeutic monitoring for INR, lithium level, HbA1c, TSH, FBC and renal function, with 3 actions required. Four rows: warfarin INR 2.4 against target 2.0 to 3.0, in range, recorded by Sr. Davies; levothyroxine TSH 0.12 against 0.4 to 4.0, out of range, with the action note TSH suppressed, risk of AF or osteoporosis, reduce dose and review in 6 weeks; warfarin INR 3.8 against 2.0 to 3.0, out of range, note INR above range, dose held, GP informed, recheck in 48h; metformin HbA1c 64 against a target under 53, out of range, note HbA1c above target, discuss dose escalation with GP.
Medications · High-Risk MonitoringCaptured from the running system, build B-591 · seeded data

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.

5 Structured medication review and the polypharmacy problem

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.

Medicines Optimisation dashboard headed STOPP/START v3, polypharmacy, ACB, structured medication reviews. A banner states alignment to NICE NG5 and STOPP/START criteria version 3, with structured medication reviews required for patients on ten or more medicines and those with an anticholinergic burden score of three or more. Tiles read 10 total reviews, 4 overdue, 6 due, 2 urgent, 6 with high polypharmacy and 5 with ACB of 3 or more. A red alert names three patients with contraindicated drug combinations requiring urgent review; an amber alert says 6 patients on 10 or more medications need a structured medication review. Level switches offer GP Practice, PCN and ICB. The table lists ten patients with practice, medicine count, polypharmacy band, ACB score, STOPP and START flag counts, contraindication marker, last review date, due date, priority, review type, status and Start Review, Defer and Complete actions.
Medicines Optimisation · review caseloadCaptured from the running system, build B-591 · seeded data
Ahead of the field
Stewardship outliers are flagged against national and ICB benchmarks, with the message to the prescriber already written. The prescribing analytics surface compares a practice’s antibiotic prescribing against national and ICB positions and raises an outlier alert, then offers a pre-populated message to the prescriber with the clinical context in it. Every prescribing analysis product we assessed stops at the report and leaves the conversation to somebody else.From commvita’s own competitive assessment of this module against the systems it competes with. Our assessment, not an independent one.

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.

6 Pharmacy First, discharge medicines and the ward caseload

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.

Clinical Pharmacy and Medicines Reconciliation, standards line reading NICE NG5, PCNE v9, GPhC Standards 2018, NHS CD Regulations 2001, NHS Rightcare Medicines Optimisation and EPMA/OPMA. A yellow banner reads seeded demonstration data, not a live system feed. Six tabs: Pharmacy Dashboard, Medicines Reconciliation with 11, Drug Chart Review with 13, TTA Management with 2, Clinical Interventions, and Controlled Drugs and Governance. Tiles show 9 awaiting reconciliation of 18 admissions, 10 TTAs to dispense with 2 overdue beyond four hours, 2 drug chart reviews today of 15 total charts, 5 interventions today at 85 percent acceptance, and 46,190 pounds cost avoided this month from 20 PCNE interventions. A ward pharmacist assignment board lists six wards with named pharmacists, patient counts, reconciliation completion bars from 55 to 91 percent and statuses of on track, attention or behind. An urgent TTA tracker shows 2 red beyond four hours, 3 amber and 5 green, with two named patients at 5.0 and 5.3 hours elapsed.
Clinical Pharmacy · dashboard (seeded)Captured from the running system, build B-591 · seeded data

Pharmacy First

7 pathways · referral · outcome

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.

/pharmacy-first/pharmacy-first/referrals

Discharge medicines

TTA turnaround · 4-hour standard

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.

/pharmacy-ttas/pharmacy-ttas/delay-report

Clinical pharmacy

Reconciliation · drug chart review · interventions

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.

/clinical-pharmacy
Be clear about these three. The Pharmacy First, discharge medicines and clinical pharmacy pages hold their content in the page. Two of them carry a banner on screen saying the data is seeded. The prescribing, medication, controlled drugs, MAR, monitoring and optimisation surfaces above them read and write the platform database through the API and the status table separates the two. I would rather a buyer knew which is which before a procurement than after one.

Where it lives in commvita

CapabilityRouteModel / APIStatus
Medication record (dm+d coded)/medicationsAPI /medications · /dmd/search · /dmd/lookup · audit on prescribe and stop● Live
Prescribing and EPS/prescriptionsAPI /prescriptions · sign · send · recall · /events● Live
Drug interaction checking/prescriptionsAPI POST /prescriptions/interactions/check · 25 rules, graded● Live
Formulary check and proposals/prescriptions · /formularyAPI /formulary/check · /formulary-proposals● Live
Controlled drugs register/medicationsAPI /cd-register · dual witness · running balance● Live
MAR chart/medicationsAPI /mar-chart · scheduled and administered times● Live
High-risk drug monitoring/medicationsAPI /high-risk-monitoring · target range · action note● Live
Structured medication review/medicines-optimisationAPI /medicines-optimisation/reviews · /stats · STOPP/START v3● Live
Prescribing analytics and stewardship/prescribing-analyticsAPI /prescribing-analytics/dashboard · practices · formulary deviation · high-cost drugs● Live
Polypharmacy network and heatmap/medicines-networkReads content held in the page; extends the optimisation and analytics data above☉ Demonstrated
Pharmacy First/pharmacy-firstPage reads seeded content and says so; API /pharmacy-first/referrals · outcomes · analytics · directory exist☉ Demonstrated
Discharge medicines (TTAs)/pharmacy-ttasPage reads seeded content; API /pharmacy-ttas/tracker · delay-report · summary exist☉ Demonstrated
Clinical pharmacy caseload/clinical-pharmacyReads seeded content and carries a banner saying so; no API behind this page today☉ Demonstrated
It isn’t a dispensing system. It isn’t a dispensing system and it doesn’t run a pharmacy robot. It isn’t a medical device and carries no medical-device claim: the interaction rules, the STOPP and START criteria and the monitoring ranges are decision support presented to a named clinician who decides, and an override is recorded, not blocked. It doesn’t invent a drug dictionary of its own. It reads dm+d, and in this demonstration it reads a bundled subset of dm+d, which is a smaller thing than a live national feed and is labelled as such above.
© 2026 Commvita Digital Health Solutions Ltd. All rights reserved. dm+d (NHS dictionary of medicines and devices)SNOMED CT · FHIR R4 MedicationRequestEPS Phase 4 Misuse of Drugs Regulations 2001NICE NG5 Medicines OptimisationSTOPP/START v3PCNE v9GPhC Standards Non-SaMD