FHIR dosage timings

I’m working on the creation of a set of order sentences using FHIR dosage. I have a couple of timings I cant work out how to represent as a timing:

  1. At least n hours before - n hours before is easy but I can’t see how to express ‘at least’

  2. n hours before or m hours after - Can’t see how to include both a for and after constraint.



If I am interpreting item 2 correctly, I would do as follows:

{ "dosageInstruction": [ { "sequence": 1, "text": "Take 1 Tablet oral route ... n hours before eventx", "method": { "text": "Take", "coding": [ { "code": "419652001", "system": "http://snomed.info/ct", "display": "Take" } ] }, "doseAndRate": [ { "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", "code": "ordered", "display": "Ordered" } ] }, "doseQuantity": { "code": "C48542", "unit": "tablet", "system": "http://unitsofmeasure.org", "value": "1" } } ], "route": { "text": "oral route", "coding": [ { "code": "26643006", "system": "http://snomed.info/ct", "display": "oral route" } ] }, "timing": { "repeat": { "frequency": "1", "frequencyMax": "1", "period": 1, "periodUnit": "d", "when": [ "eventx" ], "offset": "n" }, "code": { "text": "n hours before eventx" } }, "maxDosePerAdministration": { "value": 10, "unit": "mg", "system": "http://unitsofmeasure.org", "code": "mg" } }, { "sequence": 1, "text": "or", "method": { "text": "Or", "coding": [ { "code": "420561004", "system": "http://snomed.info/ct", "display": "Or" } ] } }, { "sequence": 1, "text": "m hours after eventx", "timing": { "repeat": { "frequency": "1", "frequencyMax": "1", "period": 1, "periodUnit": "d", "when": [ "eventx" ], "offset": "m" }, "code": { "text": "m hours after eventx" } } } ]}

Utilizing consecutive instructions and keeping the sequence number the same.

  1. For n hours before
  2. For just the or
  3. For m hours after


Thanks Hans I’ll give that a try.



Don’t want to open new thread but have other challenge with timing.
In our system we can create administration like:

  • take 2 pills every 3 days

I could create Timing with frequency 2 and Period 3 d - but it could be interpreted as

  • take 2 pills during 3 days ?


Timing with frequency 2 and Period 3 d

Would mean 2 times in 3 days

Use Dosage with Dosage.timing of of 3 days and Dosage.dose of 2 pills.

Is it possible then to inform that the first pill should be administrated at e.g 7AM and second at 4PM?
I could use TimeOfDay with 2 values but I’m not convinced as it’s not consistent with frequency.

I’d guess

Dose.dose = 1
Dose.timing.timeOfDay[0] = 07:00
Dose.timing.timeOfDay[1] = 16:00


I thin I’ve found proper approach: Standard Dose Syntax Examples | Dose Syntax Implementation for FHIR (Furosemide 40mg tablets, take two in the morning and one at midday for one week) - it’s by creating multiple DosageInstruction in my MedicationRequest.


In MedicatioRequest each dosageInstruction can have at most one dosage and can have several timings.
Your example has two different dosages, so needs two instances of dosageInstruction. Your example has the same dose at both times, so can use a single instance of dosageInstruction.

Of course, it can use two instances of dosageInstruction.