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.
++ Localisation
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.