Time to kick off the debate on prescribing functionality. We are still some way from implementing this, but we need to have a well thought-out plan.

This topic focuses on steps that surround prescription of a selected drug. Clinical steps that will have preceded drug (treatment) selection are outlined on PrescribingProcessClinical. Requirements for various reports (including "Prescriptions" by country) are at PrescribingReports.

Binding the clinical record to a drug database

The first problem is how to represent prescription data in the clinical database. We encounter the same problem as identities: there is no simple unique way of identifying drugs.

The database must therefore have a high degree of redundancy in this design.

prescribed drugs table

This is a descendent of clin_root_item so is already linked to patient, episode, and encounter

field type rationale
script_no integer links to the forms log to identify the last script
drug_db text the drug database from which this is drawn
ext_id text that database's own ID for this drug (opaque to us)
brand text the brand name, can be NULL for generic prescription
amount float the amount of drug dispensed
amount_unit text each for discrete things (tablets, capsules) ml or g for fluid drugs, this should be constrained
dose_cycle integer the length of the dosing cycle, in hours. Defaults to 24, can be 168 for once weekly alendronate, 2 for \eyedrops, etc.
dose float [] dose to be given, can be an array of up to 4 values to express different doses throughout the day So [1, 0, 1.5, 0] is 1 mane 1.5 nocte, [2, 1, 0, 0] is 2 mane, 1 midi (i.e. frusemide)
form varchar (3) one of inj neb inh [inhaler] tab cap etc. [1]
route varchar one of oral eye ear inhale topical PR PV IM IV SC
description text free text about the drugs form, where structured description impossible, such as triphasic OCP
SR boolean true if this is the slow-release preparation of the drug
PP boolean pre prandium before meals
PA boolean per aqua with water
instructions text free text instructions if not accomodated by the flags above

We also need a second table to hold the generic contents

field type rationale
script_no primary key
generic text generic name, preferable rINN
amount float amount of drug
unit text one of mg mg/ml g ml IU etc.

Drug database

We should use an XMLRPC interface. Spec is here. This requires separate "drivers" for each database type. Because the API is geared towards drugref, some changes may be required to accomodate other databases.

The "reference" information is available through separate drug information browsers, each targeted to a specific database, it accepts search queries from the prescribing widget (when the user clicks on the "drug information" button) and displays the matching monograph(s).

Hilmar Berger has already written a (?? working ??) browser for the German AMIS database.

This subject of drug database got reactivated on the Devel list in February 2009. See DrugDatabases.


Prescribing has some aspects which are very locale specific.

In Australia, some drugs are "on Authority", from our persective, this means displaying a (specific for that drug) text string in a dialogue box when certain drugs are prescribed, the doctor rings the authority office, and receives an authority code, which is typed into a text field on the dialogue box, then printed on the script.

(insert description of example of a regulatory requirement from germany)

We may end up just having to fork the prescribing widget for each country, using a common codebase, but should we consider a single widget which calls a "localisation" plugin at various key points in the prescrbing process?

++ Misc notes option to "stop" medication in addition to delete, so delete is only used if medication prescribed in error, but stopped medication could show up as Rx with letters crossed through or in a different colour and date visible so you don't have to search through encounter notes to figure out when a particular med was stopped - clean up medications so you don't have a dozen amoxicillins or dexamethasones to hunt through to find the particular dose and formulation (e.g. tab vs suspension) you want - clean up Rx syntax, especially for prn meds - ability to add instructions re augmenting or tapering dose - i.e. one prescription then a "followed by" and a second prescriptions, useful for SSRIs, smoking cessation, ACE-inhibitors - speaking of ACE-inhibitors, combo drugs like Altace-HCT come in several different dose combinations of the two components, but some EMRs don't show you that distinction. Altace-HCT is listed several times and you have to choose a drug then highlight components and see if you've picked the right one, or just edit the prescription manually as I usually do, but is inefficient.
Topic revision: 12 Feb 2010, JamesBusser
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback
Powered by Olark