How to model generic prescribing while keeping brands as individual Drugs for billing?
Context
We’re implementing a generic prescribing workflow in KenyaEMR (OpenMRS-based) and want to understand how the community has approached this before we design anything ourselves.
The requirement in one line: the clinician orders generically (e.g. “Paracetamol 500mg tablet”) without picking a brand, but at dispensing/billing time we need to know and bill the specific brand actually given to the patient, since brands differ in price and need separate stock/batch tracking.
Why this matters for us
In most public-sector and NHIF/SHA-funded facilities, a given generic can map to 3-10 different brands/manufacturers in stock at any time, and which one gets handed to the patient depends on what’s actually available on the shelf that day — not on clinician preference. But billing has to reflect the actual brand dispensed, since different brands can have different unit prices, and stock has to be decremented against the actual batch dispensed for traceability (we’re also layering GS1 EPCIS track-and-trace on top of this, so batch/lot accuracy matters a lot to us).
What we have currently
In our current KenyaEMR setup, the Paracetamol concept has dozens of Drug entries hanging off it — one per brand/formulation (e.g. “Paracetamol 500 mg Oral Tablet, Effervescent - Perfamol”, “… - Efferalgan”, “… - Fevastin ET”, “… - Gacet”, and so on). I have attached screenshots for understanding how this is currently presented in KenyaEMR
The problem: the order form itself is already drug brand-specific according to how we have added formularies as attached. When a clinician searches “Paracetamol 500mg” to place a drug order, what actually gets selected and shown on the order form will be brand specific (e.g. “Paracetamol 500 mg Oral Tablet, Effervescent - Perfamol”). So ordering today effectively is brand selection — the clinician is picking a specific manufacturer’s product, rather than ordering the generic and letting the pharmacist resolve the brand later.
This is the core thing we want to change: we want the clinician-facing order to be brand-agnostic, while still preserving brand-level Drug records for accurate billing and stock tracking downstream.
On the inventory side, we’re currently using the Stock Management module to manage stock, and it tracks items by drug_id — i.e. stock quantities, batches, and movements are all recorded against the specific brand-level Drug, not the generic Concept. This works fine for inventory accuracy, but it reinforces the same constraint: since stock is only ever known at the Drug (brand) level, anything downstream (dispensing, billing) that wants to resolve a brand from a generic order has to somehow bridge from Concept to the specific Drug/drug_id that’s actually in stock


