Dosage
The Dosage structure used within STU3 and CareConnet implementations is unchanged from that published within the international R4 standard.
The resource cannot be rendered.
Element: sequence
Multi-sequence dosage instructions.
A multi-sequence would be required where a dosage instruction changes over a given time schedule, where a dosage instruction includes optional follow-up doses or where a concurrent dosage instruction is required for the same medication at a different dose.
Examples below include Prednisolone to treat Bell’s palsy where a dose starts at 60 mg per day for a period of time then reduces by 10 mg per day. This would be described as a sequential dosage instruction. A concurrent dosage example is provided to describe a different dose in the morning to that at midday.
Sequential Instructions
Where the value of sequence is an incremental integer it defines a sequential instruction.
Example use of the FHIR STU3 Dosage using multiple sequential sequences
| MedicationRequest.id[0] | 43955772-3136-49be-829e-ac04b56894d5 |
| MedicationRequest.contained[0].id[0] | med1 |
| MedicationRequest.contained[0].code[0].coding[0].system[0] | http://snomed.info/sct |
| MedicationRequest.contained[0].code[0].coding[0].code[0] | 52388000 |
| MedicationRequest.contained[0].code[0].coding[0].display[0] | Prednisolone |
| MedicationRequest.status[0] | active |
| MedicationRequest.intent[0] | order |
| MedicationRequest.medication[0].reference[0] | #med1 |
| MedicationRequest.subject[0].identifier[0].system[0] | https://fhir.nhs.uk/Id/nhs-number |
| MedicationRequest.subject[0].identifier[0].value[0] | 9999999999 |
| MedicationRequest.dosageInstruction[0].sequence[0] | 1 |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].bounds[0].value[0] | 4 |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].bounds[0].unit[0] | day |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].bounds[0].system[0] | http://unitsofmeasure.org |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].bounds[0].code[0] | d |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].frequency[0] | 1 |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].period[0] | 1 |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].periodUnit[0] | d |
| MedicationRequest.dosageInstruction[0].dose[0].value[0] | 60 |
| MedicationRequest.dosageInstruction[0].dose[0].unit[0] | milligram |
| MedicationRequest.dosageInstruction[0].dose[0].system[0] | http://unitsofmeasure.org |
| MedicationRequest.dosageInstruction[0].dose[0].code[0] | mg |
| MedicationRequest.dosageInstruction[1].sequence[0] | 2 |
| MedicationRequest.dosageInstruction[1].timing[0].repeat[0].bounds[0].value[0] | 1 |
| MedicationRequest.dosageInstruction[1].timing[0].repeat[0].bounds[0].unit[0] | day |
| MedicationRequest.dosageInstruction[1].timing[0].repeat[0].bounds[0].system[0] | http://unitsofmeasure.org |
| MedicationRequest.dosageInstruction[1].timing[0].repeat[0].bounds[0].code[0] | d |
| MedicationRequest.dosageInstruction[1].timing[0].repeat[0].frequency[0] | 1 |
| MedicationRequest.dosageInstruction[1].timing[0].repeat[0].period[0] | 1 |
| MedicationRequest.dosageInstruction[1].timing[0].repeat[0].periodUnit[0] | d |
| MedicationRequest.dosageInstruction[1].dose[0].value[0] | 50 |
| MedicationRequest.dosageInstruction[1].dose[0].unit[0] | milligram |
| MedicationRequest.dosageInstruction[1].dose[0].system[0] | http://unitsofmeasure.org |
| MedicationRequest.dosageInstruction[1].dose[0].code[0] | mg |
| MedicationRequest.dosageInstruction[2].sequence[0] | 3 |
| MedicationRequest.dosageInstruction[2].timing[0].repeat[0].bounds[0].value[0] | 1 |
| MedicationRequest.dosageInstruction[2].timing[0].repeat[0].bounds[0].unit[0] | day |
| MedicationRequest.dosageInstruction[2].timing[0].repeat[0].bounds[0].system[0] | http://unitsofmeasure.org |
| MedicationRequest.dosageInstruction[2].timing[0].repeat[0].bounds[0].code[0] | d |
| MedicationRequest.dosageInstruction[2].timing[0].repeat[0].frequency[0] | 1 |
| MedicationRequest.dosageInstruction[2].timing[0].repeat[0].period[0] | 1 |
| MedicationRequest.dosageInstruction[2].timing[0].repeat[0].periodUnit[0] | d |
| MedicationRequest.dosageInstruction[2].dose[0].value[0] | 40 |
| MedicationRequest.dosageInstruction[2].dose[0].unit[0] | milligram |
| MedicationRequest.dosageInstruction[2].dose[0].system[0] | http://unitsofmeasure.org |
| MedicationRequest.dosageInstruction[2].dose[0].code[0] | mg |
| MedicationRequest.dosageInstruction[3].sequence[0] | 4 |
| MedicationRequest.dosageInstruction[3].timing[0].repeat[0].bounds[0].value[0] | 1 |
| MedicationRequest.dosageInstruction[3].timing[0].repeat[0].bounds[0].unit[0] | day |
| MedicationRequest.dosageInstruction[3].timing[0].repeat[0].bounds[0].system[0] | http://unitsofmeasure.org |
| MedicationRequest.dosageInstruction[3].timing[0].repeat[0].bounds[0].code[0] | d |
| MedicationRequest.dosageInstruction[3].timing[0].repeat[0].frequency[0] | 1 |
| MedicationRequest.dosageInstruction[3].timing[0].repeat[0].period[0] | 1 |
| MedicationRequest.dosageInstruction[3].timing[0].repeat[0].periodUnit[0] | d |
| MedicationRequest.dosageInstruction[3].dose[0].value[0] | 30 |
| MedicationRequest.dosageInstruction[3].dose[0].unit[0] | milligram |
| MedicationRequest.dosageInstruction[3].dose[0].system[0] | http://unitsofmeasure.org |
| MedicationRequest.dosageInstruction[3].dose[0].code[0] | mg |
| MedicationRequest.dosageInstruction[4].sequence[0] | 5 |
| MedicationRequest.dosageInstruction[4].timing[0].repeat[0].bounds[0].value[0] | 1 |
| MedicationRequest.dosageInstruction[4].timing[0].repeat[0].bounds[0].unit[0] | day |
| MedicationRequest.dosageInstruction[4].timing[0].repeat[0].bounds[0].system[0] | http://unitsofmeasure.org |
| MedicationRequest.dosageInstruction[4].timing[0].repeat[0].bounds[0].code[0] | d |
| MedicationRequest.dosageInstruction[4].timing[0].repeat[0].frequency[0] | 1 |
| MedicationRequest.dosageInstruction[4].timing[0].repeat[0].period[0] | 1 |
| MedicationRequest.dosageInstruction[4].timing[0].repeat[0].periodUnit[0] | d |
| MedicationRequest.dosageInstruction[4].dose[0].value[0] | 20 |
| MedicationRequest.dosageInstruction[4].dose[0].unit[0] | milligram |
| MedicationRequest.dosageInstruction[4].dose[0].system[0] | http://unitsofmeasure.org |
| MedicationRequest.dosageInstruction[4].dose[0].code[0] | mg |
| MedicationRequest.dosageInstruction[5].sequence[0] | 6 |
| MedicationRequest.dosageInstruction[5].additionalInstruction[0].coding[0].system[0] | http://snomed.info/sct |
| MedicationRequest.dosageInstruction[5].additionalInstruction[0].coding[0].code[0] | 422327006 |
| MedicationRequest.dosageInstruction[5].additionalInstruction[0].coding[0].display[0] | Then stop |
| MedicationRequest.dosageInstruction[5].timing[0].repeat[0].bounds[0].value[0] | 1 |
| MedicationRequest.dosageInstruction[5].timing[0].repeat[0].bounds[0].unit[0] | day |
| MedicationRequest.dosageInstruction[5].timing[0].repeat[0].bounds[0].system[0] | http://unitsofmeasure.org |
| MedicationRequest.dosageInstruction[5].timing[0].repeat[0].bounds[0].code[0] | d |
| MedicationRequest.dosageInstruction[5].timing[0].repeat[0].frequency[0] | 1 |
| MedicationRequest.dosageInstruction[5].timing[0].repeat[0].period[0] | 1 |
| MedicationRequest.dosageInstruction[5].timing[0].repeat[0].periodUnit[0] | d |
| MedicationRequest.dosageInstruction[5].dose[0].value[0] | 10 |
| MedicationRequest.dosageInstruction[5].dose[0].unit[0] | milligram |
| MedicationRequest.dosageInstruction[5].dose[0].system[0] | http://unitsofmeasure.org |
| MedicationRequest.dosageInstruction[5].dose[0].code[0] | mg |
| MedicationRequest |
| id : 43955772-3136-49be-829e-ac04b56894d5 |
| contained |
| id : med1 |
| code |
| coding |
| system : http://snomed.info/sct |
| code : 52388000 |
| display : Prednisolone |
| status : active |
| intent : order |
| medication |
| reference : #med1 |
| subject |
| identifier |
| system : https://fhir.nhs.uk/Id/nhs-number |
| value : 9999999999 |
| dosageInstruction |
| sequence : 1 |
| timing |
| repeat |
| bounds |
| value : 4 |
| unit : day |
| system : http://unitsofmeasure.org |
| code : d |
| frequency : 1 |
| period : 1 |
| periodUnit : d |
| dose |
| value : 60 |
| unit : milligram |
| system : http://unitsofmeasure.org |
| code : mg |
| dosageInstruction |
| sequence : 2 |
| timing |
| repeat |
| bounds |
| value : 1 |
| unit : day |
| system : http://unitsofmeasure.org |
| code : d |
| frequency : 1 |
| period : 1 |
| periodUnit : d |
| dose |
| value : 50 |
| unit : milligram |
| system : http://unitsofmeasure.org |
| code : mg |
| dosageInstruction |
| sequence : 3 |
| timing |
| repeat |
| bounds |
| value : 1 |
| unit : day |
| system : http://unitsofmeasure.org |
| code : d |
| frequency : 1 |
| period : 1 |
| periodUnit : d |
| dose |
| value : 40 |
| unit : milligram |
| system : http://unitsofmeasure.org |
| code : mg |
| dosageInstruction |
| sequence : 4 |
| timing |
| repeat |
| bounds |
| value : 1 |
| unit : day |
| system : http://unitsofmeasure.org |
| code : d |
| frequency : 1 |
| period : 1 |
| periodUnit : d |
| dose |
| value : 30 |
| unit : milligram |
| system : http://unitsofmeasure.org |
| code : mg |
| dosageInstruction |
| sequence : 5 |
| timing |
| repeat |
| bounds |
| value : 1 |
| unit : day |
| system : http://unitsofmeasure.org |
| code : d |
| frequency : 1 |
| period : 1 |
| periodUnit : d |
| dose |
| value : 20 |
| unit : milligram |
| system : http://unitsofmeasure.org |
| code : mg |
| dosageInstruction |
| sequence : 6 |
| additionalInstruction |
| coding |
| system : http://snomed.info/sct |
| code : 422327006 |
| display : Then stop |
| timing |
| repeat |
| bounds |
| value : 1 |
| unit : day |
| system : http://unitsofmeasure.org |
| code : d |
| frequency : 1 |
| period : 1 |
| periodUnit : d |
| dose |
| value : 10 |
| unit : milligram |
| system : http://unitsofmeasure.org |
| code : mg |
Concurrent Instructions
Where the same integer value of sequence is defines it means a concurrent instruction.
| MedicationRequest.id[0] | 79159c4f-13c4-457a-8962-67fa22432c15 |
| MedicationRequest.contained[0].id[0] | med1 |
| MedicationRequest.contained[0].code[0].coding[0].system[0] | http://snomed.info/sct |
| MedicationRequest.contained[0].code[0].coding[0].code[0] | 317972000 |
| MedicationRequest.contained[0].code[0].coding[0].display[0] | Furosemide 40mg tablets |
| MedicationRequest.status[0] | active |
| MedicationRequest.intent[0] | order |
| MedicationRequest.medication[0].reference[0] | #med1 |
| MedicationRequest.subject[0].identifier[0].system[0] | https://fhir.nhs.uk/Id/nhs-number |
| MedicationRequest.subject[0].identifier[0].value[0] | 9999999999 |
| MedicationRequest.dosageInstruction[0].sequence[0] | 1 |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].bounds[0].value[0] | 1 |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].bounds[0].unit[0] | week |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].bounds[0].system[0] | http://unitsofmeasure.org |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].bounds[0].code[0] | wk |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].frequency[0] | 1 |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].period[0] | 1 |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].periodUnit[0] | d |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].when[0] | MORN |
| MedicationRequest.dosageInstruction[0].dose[0].value[0] | 2 |
| MedicationRequest.dosageInstruction[0].dose[0].unit[0] | tablet |
| MedicationRequest.dosageInstruction[0].dose[0].system[0] | http://snomed.info/sct |
| MedicationRequest.dosageInstruction[0].dose[0].code[0] | 428673006 |
| MedicationRequest.dosageInstruction[1].sequence[0] | 1 |
| MedicationRequest.dosageInstruction[1].timing[0].repeat[0].bounds[0].value[0] | 1 |
| MedicationRequest.dosageInstruction[1].timing[0].repeat[0].bounds[0].unit[0] | week |
| MedicationRequest.dosageInstruction[1].timing[0].repeat[0].bounds[0].system[0] | http://unitsofmeasure.org |
| MedicationRequest.dosageInstruction[1].timing[0].repeat[0].bounds[0].code[0] | wk |
| MedicationRequest.dosageInstruction[1].timing[0].repeat[0].frequency[0] | 1 |
| MedicationRequest.dosageInstruction[1].timing[0].repeat[0].period[0] | 1 |
| MedicationRequest.dosageInstruction[1].timing[0].repeat[0].periodUnit[0] | d |
| MedicationRequest.dosageInstruction[1].timing[0].repeat[0].timeOfDay[0] | 12:00:00 |
| MedicationRequest.dosageInstruction[1].dose[0].value[0] | 1 |
| MedicationRequest.dosageInstruction[1].dose[0].unit[0] | tablet |
| MedicationRequest.dosageInstruction[1].dose[0].system[0] | http://snomed.info/sct |
| MedicationRequest.dosageInstruction[1].dose[0].code[0] | 428673006 |
| MedicationRequest |
| id : 79159c4f-13c4-457a-8962-67fa22432c15 |
| contained |
| id : med1 |
| code |
| coding |
| system : http://snomed.info/sct |
| code : 317972000 |
| display : Furosemide 40mg tablets |
| status : active |
| intent : order |
| medication |
| reference : #med1 |
| subject |
| identifier |
| system : https://fhir.nhs.uk/Id/nhs-number |
| value : 9999999999 |
| dosageInstruction |
| sequence : 1 |
| timing |
| repeat |
| bounds |
| value : 1 |
| unit : week |
| system : http://unitsofmeasure.org |
| code : wk |
| frequency : 1 |
| period : 1 |
| periodUnit : d |
| when : MORN |
| dose |
| value : 2 |
| unit : tablet |
| system : http://snomed.info/sct |
| code : 428673006 |
| dosageInstruction |
| sequence : 1 |
| timing |
| repeat |
| bounds |
| value : 1 |
| unit : week |
| system : http://unitsofmeasure.org |
| code : wk |
| frequency : 1 |
| period : 1 |
| periodUnit : d |
| timeOfDay : 12:00:00 |
| dose |
| value : 1 |
| unit : tablet |
| system : http://snomed.info/sct |
| code : 428673006 |
Element: text
Free text dosage instructions.
text element to convey a dosage in a human readable format.
In the future, a nationally available Dose to Text Service (similiar to the one in our Demonstrator) will be available, and will be recommended to be used.
In the interim - if the text element is used:
Information to clinicians about administration or preparation of the medication (e.g. “infuse as rapidly as possibly via intraperitoneal port” or “immediately following drug x”) should be populated in dosage.text. It may also be be used (rarely) for cases where the instructions to patient are too complex to code.
The use of the Dosage.text element is discouraged to maximise dosage instructions defined using the coded structures. This position may be subject to change as a result of initial clinical and implementation experience or feedback from the FHIR community.
The Dosage.text element would also be populated in an implementation which does not support the coded structures.
In some cases, where the same instruction is relevant to both a clinician and patient, then the instructions may be repeated using several dosage structures - additionalInstruction or patientInstruction toward patient, text toward the clinician. This will ensure the receiving system makes the information available to the appropriate person.
Element: additionalInstruction
Additional dosage instructions that can be either SNOMED-CT coded terms or free-text instructions.
Where suitable SNOMED-CT coded terms exist, use them instead of free-text instructions. See the SNOMED-CT hierarchy descendants of 419492006 Additional dosage instructions (qualifier value). These terms are also available from the example FHIR valueset binding.
additionalInstructions can be conveyed as free-text; however, if free-text is used rather than a SNOMED-CT coded term, the `MedicationRequest` cannot be computable, and requires human intervention in the case of conditional or contradictory instructions.
Coded instruction
<additionalInstruction> <coding> <system value="http://snomed.info/sct"/> <code value="419529008"/> <display value="Dissolved under the tongue "/> </coding> </additionalInstruction>
Multiple coded instructions
<additionalInstruction> <coding> <system value="http://snomed.info/sct"/> <code value="417995008"/> <display value="Dissolve or mix with water before taking"/> </coding> </additionalInstruction> <additionalInstruction> <coding> <system value="http://snomed.info/sct"/> <code value="417980006"/> <display value="Contains aspirin"/> </coding> </additionalInstruction>
Free-text instruction (try to avoid using free-text where possible)
<additionalInstruction> <text value="with dialysis"/> </additionalInstruction>
additionalInstruction / when overlap
Timing.when and Dosage.additionalInstruction do contain some overlapping values.
For example, they can both describe “with or after food”.
In such cases, use Timing.when instead of a coded Dosage.additionalInstruction.
continue / stop instructions
There may be the need for a clinician to give explicit instructions to either stop or continue taking medication. This could be applicable for discharge medication where one medicine may be for short term pain relief and should be stopped after the prescribed quantity has been taken, while another medicine must be continued until further notice.
The patient’s GP would be informed of this as part of the discharge letter but having these instructions explicitly coded provides a more robust solution.
Three SNOMED-CT codes exist that can be used for this purpose.
- “Then stop” (SNOMED concept identifier = 422327006)
- “Then discontinue” (SNOMED concept identifier = 421484000)
- “Do not stop taking this medicine except on your doctor’s advice” (SNOMED concept identifier = 419444006)
Dosage.timing structures. These do not currently support coded concept terms. Implementation experience will provide evidence to support any future change to the underlying FHIR specification.
as directed
The use of a dosage instruction akin to “as directed” should be avoided wherever possible; however, if required then this can be SNOMED coded using 421769005 Follow directions (qualifier value) or conveyed as text as a patient instruction.
Element: patientInstruction
Free-text instructions for the patient. Patient instructions can only be defined as one text string per dosage instruction.
<patientInstruction value="Some relevant instructions for the patient"/>
Timing Elements: frequency and period
A large proportion of cases, especially those where the medication are described using a VMP or AMP concept, can have a dosage instruction defined with a combination of frequency and period elements within the Timing structure.
Simple dosage timing instructions can be described using frequency and period.
The combination of frequency and period allows for the two commonly used expressions of:
- x times a period
- every x period
The unit of the period must be one of the UCUM units:
| UCUM Unit | Definition |
|---|---|
s |
second |
min |
minute |
h |
hour |
d |
day |
wk |
week |
mo |
month |
a |
year |
A frequencyMax and/or periodMax can also be used to define ranges. The FHIR specification states if there's a periodMax, there must be a period.
Every 8 hours
<timing> <repeat> <frequency value="1"/> <period value="8"/> <periodUnit value="h"/> </repeat> </timing>
4 times a day
<timing> <repeat> <frequency value="4"/> <period value="1"/> <periodUnit value="d"/> </repeat> </timing>
2 to 4 times a day
<timing> <repeat> <frequency value="2"/> <frequencyMax value="4"/> <period value="1"/> <periodUnit value="d"/> </repeat> </timing>
every 3 to 4 weeks
<timing> <repeat> <frequency value="1"/> <period value="3"/> <periodMax value="4"/> <periodUnit value="wk"/> </repeat> </timing>
3 to 4 times every 1 to 2 weeks
<timing> <repeat> <frequency value="3"/> <frequencyMax value="4"/> <period value="1"/> <periodMax value="2"/> <periodUnit value="wk"/> </repeat> </timing>
daily
<timing> <repeat> <frequencyvalue="1"/> <periodvalue="1"/> <periodUnitvalue="d"/> </repeat> </timing>
twice a week
<timing> <repeat> <frequencyvalue="2"/> <periodvalue="1"/> <periodUnitvalue="wk"/> </repeat> </timing>
Examples of potentially confusing timing instructions
When converting the information into a FHIR message to a human readable version the frequency could be misconstrued.
For example:
take twice a week on a Monday and Thursday
Is the patient being instructed to take the medication twice per day on a Monday and Thursday (4 individual doses), or twice per week on a Monday and Thursday (2 individual doses)?
<timing> <repeat> <count value="2" /> <dayOfWeek value="mon" /> <dayOfWeek value="thu" /> </repeat> </timing>
Using the dose-to-text guidance within this documentation the above would be displayed as:
on Monday and Thursday - take twice
<timing> <repeat> <frequency value="2"/> <period value="1" /> <periodUnit value="wk"/> <dayOfWeek value="mon" /> <dayOfWeek value="thu" /> </repeat> </timing>
Using the dose-to-text guidance within this documentation the above would be displayed as:
twice a week - on Monday and Thursday
<timing> <repeat> <dayOfWeek value="mon" /> <dayOfWeek value="thu" /> </repeat> </timing>
Using the dose-to-text guidance within this documentation the above would be displayed as:
on Monday and Thursday
Real-World Example
Co-trimoxazole 80mg/400mg tablets (Actavis UK Ltd) - 1 tablet - twice a day - on Monday, Wednesday and Friday.
This prescription is used for immunocompromised patients to provide prophylaxis against a particular strain of pneumonia.
Timing Elements: when, offset, dayOfWeek, timeOfDay, event and code
A dosage instruction can be tied to the specific days, dates and times, plus life events related to eating or sleeping.
when and offset
The when element ties to the regular life events of sleeping and eating, for example:
C= event occurs at a mealWAKE= event occurs[offset]after waking
An offset allows the event to be tied x minutes before or after.
The offset is an unsigned integer value so different codes within the when value-set are used to define before or after.
Event occurs at breakfast
<timing> <repeat> <when value="CM"/> </repeat> </timing>
Event occurs at 1 hour before breakfast
<timing> <repeat> <when value="ACM"/> <offset value="60" /> </repeat> </timing>
Event occurs at 1 hour after breakfast
<timing> <repeat> <when value="PCM"/> <offset value="60" /> </repeat> </timing>
dayOfWeek and timeOfDay
A dosage instruction can specify days of a week and/or specific times within a day for administration.
on Monday and Thursday at 09:00 and 15:00
<timing> <repeat> <dayOfWeek value="mon" /> <dayOfWeek value="thu" /> <timeOfDay value="09:00:00" /> <timeOfDay value="15:00:00" /> </repeat> </timing>
Note the FHIR standard states that the elements frequency and period cannot be used as well as dayOfWeek, and the elements when, frequency and period cannot be used as well as timeOfDay.
event
A dosage instruction can specify specific dates and times for administration.
on 1st Nov 2019
<timing> <event value="2019-11-01" /> </timing>
on 1st Nov 2019 at 10:30 and again on 1st Dec 2019 at 22:30
<timing> <event value="2019-11-01T10:30" /> <event value="2019-12-01T22:30" /> </timing>
code
Allows a code, often a Latin abbreviation, for a timing schedule to be specified, for example: BID = twice a day
It is recommended that such codes are not used when the rest of the Dosage structure is supported by the system.
Use the structures like frequency and period instead, so that a timing schedule can be computable.
Timing Elements: duration, bounds and count
Adding constraints, bounds or limits to a dosage instruction.
duration and durationMax
A dosage instruction to be administered over a period of time is defined by a duration and / or a durationMax. These relate to the duration of a single administration so would be applicable for an infusion or potentially a transdermal patch.
The FHIR specification states that if there is a durationMax, there must be a duration.
The use of duration does not apply to medicines that are swallowed or otherwise instantly administered.
over 8 hours
<timing> <repeat> <duration value="8"/> <durationUnit value="h" /> </repeat> </timing>
over 10 to 15 minutes
<timing> <repeat> <duration value="10"/> <durationMax value="15"/> <durationUnit value="min"/> </repeat> </timing>
boundsDuration
An instruction to limit a single course of medication uses the bounds structure. This can be implemented in three ways;
boundsDuration- a period of time, for example: for 7 daysboundsRange- a low / high quantity, for example: for 2 to 3 weeksboundsPeriod- a date / time start to end period, for example: from 22/02/2021 to 04/03/2021
for 7 days
<timing> <repeat> <boundsDuration> <value value="7"/> <unit value="day"/> <system value="http://unitsofmeasure.org"/> <code value="d"/> </boundsDuration> </repeat> </timing>
for 2 to 3 weeks
<timing> <repeat> <boundsRange> <low> <value value="2"/> <unit value="week"/> <system value="http://unitsofmeasure.org"/> <code value="wk"/> </low> <high> <value value="3"/> <unit value="week"/> <system value="http://unitsofmeasure.org"/> <code value="wk"/> </high> </boundsRange> </repeat> </timing>
from 22/02/2021 to 04/03/2021
<timing> <repeat> <boundsPeriod> <start value="2021-02-22"/> <end value="2021-03-04"/> </boundsPeriod> </repeat> </timing>
count and countMax
An instruction for a set number of doses, including the use case of “once”, plus also any maximum number of doses, is defined by count and countMax.
Whilst the count is within repeat it does not mean repeat a number of additional times.
- A
countof 1 means adminster a dose once. - A
countof 3 means administer 3 doses.
The FHIR specification states if there is a countMax, there must be a count.
take once
<timing> <repeat> <count value="1"/> </repeat> </timing>
take twice
<timing> <repeat> <count value="2"/> </repeat> </timing>
take three times
Clincal Example: Teicoplanin - 10 mg/kg - every 12 hours - for 3 doses, then 6 to 10 mg/kg - daily
<timing> <repeat> <count value="3"/> </repeat> </timing>
take three to five times
<timing> <repeat> <count value="3"/> <countMax value="5"/> </repeat> </timing>
take once
Instead of using <count value="1"/> use <frequency value="1"/>.
an oral solid - 2 tablets - twice a day - take 14 times
Using a <count value="14"/> is confusing. Is this "take 2 tablets twice a day for 14 days" or "take 2 tablets twice a day and take 14 tablets in total, hence for 7 days"? It would be better to express as a duration.
<duration value="7"/> <durationUnit value="d" />
Element: asNeeded
Dosing 'asNeeded' and 'asNeededCodeableConcept' instructions.
Dosage.asNeeded[x]
The asNeeded structure can be used to define a simple “as required” (or “pro re nata” expressed as “PRN” for those who still prefer to use Latin abbreviations) instructions.
In this case use the asNeededBoolean option. The absence of asNeededBoolean is equivalent to where asNeededBoolean has a value of false.
The asNeededCodeableConcept option is used to bound the dosage instruction to a coded term. Any number of coded terms can be used from the SNOMED-CT hierarchy as a descendant of 404684003 Clinical Finding (finding). An extensive medication-as-needed-reason value-set is defined within FHIR which is a subset of the SNOMED-CT clinical findings hierarchy.
Example #1: Dosage.asNeeded
| MedicationRequest.id[0] | c804eca2-8b32-44d7-b654-b88bb9b1edd2 |
| MedicationRequest.contained[0].id[0] | med1 |
| MedicationRequest.contained[0].code[0].coding[0].system[0] | http://snomed.info/sct |
| MedicationRequest.contained[0].code[0].coding[0].code[0] | 321177003 |
| MedicationRequest.contained[0].code[0].coding[0].display[0] | Zopiclone 3.75mg tablets |
| MedicationRequest.status[0] | active |
| MedicationRequest.intent[0] | order |
| MedicationRequest.medication[0].reference[0] | #med1 |
| MedicationRequest.subject[0].identifier[0].system[0] | https://fhir.nhs.uk/Id/nhs-number |
| MedicationRequest.subject[0].identifier[0].value[0] | 9999999999 |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].frequency[0] | 1 |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].period[0] | 1 |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].periodUnit[0] | d |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].when[0] | HS |
| MedicationRequest.dosageInstruction[0].asNeeded[0] | True |
| MedicationRequest.dosageInstruction[0].route[0].coding[0].system[0] | http://snomed.info/sct |
| MedicationRequest.dosageInstruction[0].route[0].coding[0].code[0] | 26643006 |
| MedicationRequest.dosageInstruction[0].route[0].coding[0].display[0] | oral |
| MedicationRequest.dosageInstruction[0].dose[0].value[0] | 1 |
| MedicationRequest.dosageInstruction[0].dose[0].unit[0] | tablet |
| MedicationRequest.dosageInstruction[0].dose[0].system[0] | http://snomed.info/sct |
| MedicationRequest.dosageInstruction[0].dose[0].code[0] | 428673006 |
| MedicationRequest |
| id : c804eca2-8b32-44d7-b654-b88bb9b1edd2 |
| contained |
| id : med1 |
| code |
| coding |
| system : http://snomed.info/sct |
| code : 321177003 |
| display : Zopiclone 3.75mg tablets |
| status : active |
| intent : order |
| medication |
| reference : #med1 |
| subject |
| identifier |
| system : https://fhir.nhs.uk/Id/nhs-number |
| value : 9999999999 |
| dosageInstruction |
| timing |
| repeat |
| frequency : 1 |
| period : 1 |
| periodUnit : d |
| when : HS |
| asNeeded : True |
| route |
| coding |
| system : http://snomed.info/sct |
| code : 26643006 |
| display : oral |
| dose |
| value : 1 |
| unit : tablet |
| system : http://snomed.info/sct |
| code : 428673006 |
Zopiclone 3.75mg tablets, 1 tablet, at BEDTIME, PRN, oral
Example #2: Dosage.asNeededCodeableConcept
| MedicationRequest.id[0] | e02e462c-12db-4162-95f6-0436a60c5bc4 |
| MedicationRequest.contained[0].id[0] | med1 |
| MedicationRequest.contained[0].code[0].coding[0].system[0] | http://snomed.info/sct |
| MedicationRequest.contained[0].code[0].coding[0].code[0] | 56549003 |
| MedicationRequest.contained[0].code[0].coding[0].display[0] | Metoclopramide |
| MedicationRequest.status[0] | active |
| MedicationRequest.intent[0] | order |
| MedicationRequest.medication[0].reference[0] | #med1 |
| MedicationRequest.subject[0].identifier[0].system[0] | https://fhir.nhs.uk/Id/nhs-number |
| MedicationRequest.subject[0].identifier[0].value[0] | 9999999999 |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].frequencyMax[0] | 3 |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].period[0] | 1 |
| MedicationRequest.dosageInstruction[0].timing[0].repeat[0].periodUnit[0] | d |
| MedicationRequest.dosageInstruction[0].asNeeded[0].coding[0].system[0] | http://snomed.info/sct |
| MedicationRequest.dosageInstruction[0].asNeeded[0].coding[0].code[0] | 422587007 |
| MedicationRequest.dosageInstruction[0].asNeeded[0].coding[0].display[0] | nausea |
| MedicationRequest.dosageInstruction[0].route[0].coding[0].system[0] | http://snomed.info/sct |
| MedicationRequest.dosageInstruction[0].route[0].coding[0].code[0] | 26643006 |
| MedicationRequest.dosageInstruction[0].route[0].coding[0].display[0] | oral |
| MedicationRequest.dosageInstruction[0].dose[0].value[0] | 10 |
| MedicationRequest.dosageInstruction[0].dose[0].unit[0] | milligram |
| MedicationRequest.dosageInstruction[0].dose[0].system[0] | http://unitsofmeasure.org |
| MedicationRequest.dosageInstruction[0].dose[0].code[0] | mg |
| MedicationRequest |
| id : e02e462c-12db-4162-95f6-0436a60c5bc4 |
| contained |
| id : med1 |
| code |
| coding |
| system : http://snomed.info/sct |
| code : 56549003 |
| display : Metoclopramide |
| status : active |
| intent : order |
| medication |
| reference : #med1 |
| subject |
| identifier |
| system : https://fhir.nhs.uk/Id/nhs-number |
| value : 9999999999 |
| dosageInstruction |
| timing |
| repeat |
| frequencyMax : 3 |
| period : 1 |
| periodUnit : d |
| asNeeded |
| coding |
| system : http://snomed.info/sct |
| code : 422587007 |
| display : nausea |
| route |
| coding |
| system : http://snomed.info/sct |
| code : 26643006 |
| display : oral |
| dose |
| value : 10 |
| unit : milligram |
| system : http://unitsofmeasure.org |
| code : mg |
Element: site
Any site can be used from the SNOMED-CT hierarchy as a descendant of the concept 123037004 Body structure (body structure).
<!-- Site --> <site> <coding> <system value="http://snomed.info/sct"/> <code value="59380008"/> <display value="Anterior abdominal wall structure"/> </coding> </site>
Element: route
Any route can be used from the SNOMED-CT hierarchy as a descendant of the concept 284009009 Route of administration value (qualifier value).
<!-- Route --> <route> <coding> <system value="http://snomed.info/sct"/> <code value="78421000"/> <display value="intramuscular route"/> </coding> </route>
Element: method
The 999000041000001103 ePrescribing method simple reference set (foundation metadata concept) reference set collates the commonly used terms for method for use in the United Kingdom.
Whilst a FHIR value-set for method does exist, together with two separate hierarchies within SNOMED-CT (Dose form administration method and Dosing instruction fragment), it is recommended to use the ePrescribing reference set in the first instance.
<!-- Method --> <method> <coding> <system value="http://snomed.info/sct"/> <code value="129326001"/> <display value="Injection"/> </coding> </method>
Use of synonyms
In most instances it is anticipated that the UK Preferred term should be the term applied to SNOMED CT concepts However for some cases, for example the anatomically correct SNOMED-CT term may not be easily understood by the patient or clinician, the use of a synonym may be preferred.
Guidance for using terms that are not preferred terms is available within the published document Guidance on the use of CodeableConcept.
Element: dose
A dosage can be described via one of the following methods. In both instances when considering Units of Measure note that UCUM is preferred.
Dosage.doseQuantity
The amount of medication per dose, as a simple coded quantity.
<!-- Examples of the FHIR STU3 Dosage.timing.doseQuantity --> <!-- Example A: 1 capsule --> <doseQuantity> <value value="1"/> <unit value="capsule"/> <system value="http://snomed.info/sct"/> <code value="732937005"/> </doseQuantity> <!-- Example B: 30 milligrams --> <doseQuantity> <value value="30"/> <unit value="milligram"/> <system value="http://unitsofmeasure.org"/> <code value="mg"/> </doseQuantity>
Dosage.doseRange
A dose that may be in a given low / high range.
<!-- Example use of the FHIR STU3 Dosage.timing.doseRange --> <!-- for a dose between 7.5 to 30 milligram --> <doseRange> <low> <value value="7.5"/> <unit value="milligram"/> <code value="mg"/> <system value="http://unitsofmeasure.org"/> </low> <high> <value value="30"/> <unit value="milligram"/> <code value="mg"/> <system value="http://unitsofmeasure.org"/> </high> </doseRange>
Element: maxDosePer
Dosing maxDosePerPeriod, maxDosePerAdministration and 'maxDosePerLifetime' instructions
Dosage.maxDosePerPeriod
An example would be a Sumatriptan 6mg injection which can be repeated after an hour but not again over a 24 hour period. The maxDosePerPeriod is defined as 12mg/24hours.
The maxDosePerPeriod is defined for each dosage instruction. For a multi-sequence instruction it would therefore be possible to define different maximum dosing periods within different sequences of the complete instruction.
Maximum dose per period of 12mg/24 hour
<maxDosePerPeriod> <numerator> <value value="12"/> <unit value="milligram"/> <system value="http://unitsofmeasure.org"/> <code value="mg"/> </numerator> <denominator> <value value="24"/> <unit value="hour"/> <system value="http://unitsofmeasure.org"/> <code value="h"/> </denominator> </maxDosePerPeriod>
Dosage.maxDosePerAdministration
An example would be Anagrelide for which a single dose should not exceed 2.5 mg. The maxDosePerAdministration is defined as 2.5mg.
In many scenarios it is expected that the dosage.doseRange would be used instead of maxDosePerAdministration.
The maxDosePerAdministration is defined for each dosage instruction. For a multi-sequence instruction it would therefore be possible to define different maximum dose administrations within different sequences of the complete instruction.
Maximum dose per administration of 2.5mg
<maxDosePerAdministration> <value value="2.5"/> <unit value="milligram"/> <system value="http://unitsofmeasure.org"/> <code value="mg"/> </maxDosePerAdministration>
Dosage.maxDosePerLifetime
An example would be Daunorubicin which may have a maximum cumulative dose of 600mg/m2 (based on the size of the patient). The maxDosePerLifetime is defined as 600 mg/m2.
The maxDosePerLifetime can be defined for each dosage instruction; which, for a multi-sequence instruction is illogical, as any maxDosePerLifetime is equally applicable to all dosage sequence that relate to the single medication coded concept.
maxDosePerLifetime statement is required with a multi-sequence instruction, it is recommended to define it within the last / final sequence to ensure that the information is presented at the end of a the complete instruction, rather than th middle which could be overlooked.
Maximum dose over lifetime of the patient of 600 mg/m2
<maxDosePerLifetime> <value value="600"/> <unit value="milligram per square metre"/> <system value="http://unitsofmeasure.org"/> <code value="mg/m2"/> </maxDosePerLifetime>
Element: rate
A rate-based quantity, such as 30 ml per hour, can be expressed as a rateRatio with coded numerator and denominator values.
Where the unit of measure for the ratio is defined within UCUM (see Common UCUM Units), for example, “milliliter per hour”, it can also be expressed using the simpler rateQuantity structure.
Dosage.rateRatio
Where the rate is expressed as coded numerator and denominator values.
at a rate of 30ml/hour using rateRatio
<rateRatio> <numerator> <value value="30"/> <unit value="millilitre"/> <system value="http://unitsofmeasure.org"/> <code value="mL"/> </numerator> <denominator> <value value="1"/> <unit value="hour"/> <system value="http://unitsofmeasure.org"/> <code value="h"/> </denominator> </rateRatio>
Dosage.rateQuantity
Where the unit of measure applicable to a rate is defined within UCUM which is mathematically equivalent to defining the rate using the more complex rateRatio structure.
at a rate of 30ml/hour using rateQuantity
<rateQuantity> <value value="30"/> <unit value="milliliters per hour"/> <system value="http://unitsofmeasure.org"/> <code value="mL/h"/> </rateQuantity>
at a rate of 1mcg/kg/hour using rateQuantity
<rateQuantity> <value value="1"/> <unit value="microgram per kilogram per hour"/> <system value="http://unitsofmeasure.org"/> <code value="ug/kg/h"/> </rateQuantity>
Dosage.rateRange
Where the unit of measure applicable to a rate range is defined within UCUM the rateRange structure can be used.
give at 1-2 litres per minute using rateRange
<rateRange> <low> <value value="1"/> <unit value="liter per minute"/> <system value="http://unitsofmeasure.org"/> <code value="L/min"/> </low> <high> <value value="2"/> <unit value="liter per minute"/> <system value="http://unitsofmeasure.org"/> <code value="L/min"/> </high> </rateRange>