MediRecords FHIR Implementation Guide
1.4.1 - release


Data Type Profile: MR Dosage

Defining URL:https://fhir.medirecords.com/StructureDefinition/mr-medication-dosage
Version:1.4.1
Name:MRDosage
Title:MR Dosage
Status:Active as of 2025-02-03 04:29:41+0000
Definition:

MediRecords Medication Dosage profile to record details about the dosage prescribed

Source Resource:XML / JSON / Turtle

The official URL for this profile is:

https://fhir.medirecords.com/StructureDefinition/mr-medication-dosage

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

This structure is derived from AUBaseDosage

Summary

Mandatory: 1 element
Must-Support: 11 elements

Structures

This structure refers to these other structures:

Slices

This structure defines the following Slices:

  • The element 1 is sliced based on the value of Dosage.timing.repeat.bounds[x]
  • The element 1 is sliced based on the value of Dosage.asNeeded[x]
  • The element 1 is sliced based on the value of Dosage.doseAndRate.dose[x]

This structure is derived from AUBaseDosage

NameFlagsCard.TypeDescription & Constraintsdoco
.. Dosage 0..* AUBaseDosage Dosage information in an Australian healthcare context
... text S 1..1 string Free text dosage instructions e.g. SIG
... additionalInstruction S 0..* CodeableConcept Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
... timing
.... repeat
..... Slices for bounds[x] 0..1 Duration, Range, Period Length/Range of lengths, or (Start and/or end) limits
Slice: Unordered, Open by type:$this
...... bounds[x]:boundsPeriod 0..1 Period Length/Range of lengths, or (Start and/or end) limits
....... start S 0..1 dateTime Estimated start of course based on prescription start date
....... end S 0..1 dateTime Estimated end of course based on prescription start date and number of doses supplied
..... frequency S 0..1 positiveInt Event occurs frequency times per period
..... period S 0..1 decimal Event occurs frequency times per period
..... periodUnit S 0..1 code s | min | h | d | wk | mo | a - unit of time (UCUM)
.... code
..... text S 0..1 string Free text description of the frequency
.... asNeeded[x]:asNeededBoolean S 0..1 boolean Take "as needed" (for x)
... route S 0..1 CodeableConcept How drug should enter body
... doseAndRate 0..1 Element Amount of medication administered
.... Slices for dose[x] 0..1 Range, SimpleQuantity Amount of medication per dose
Slice: Unordered, Open by type:$this
..... dose[x]:doseQuantity 0..1 SimpleQuantity A fixed quantity (no comparator)
...... value S 0..1 decimal Numerical value (with implicit precision)

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Dosage 0..* AUBaseDosage Dosage information in an Australian healthcare context
... id 0..1 string Unique id for inter-element referencing
... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
... text SΣ 1..1 string Free text dosage instructions e.g. SIG
... additionalInstruction SΣ 0..* CodeableConcept Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
Binding: SNOMEDCTAdditionalDosageInstructions (preferred)
... patientInstruction Σ 0..1 string Patient or consumer oriented instructions
... timing Σ 0..1 Timing When medication should be administered
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... event Σ 0..* dateTime When the event occurs
.... repeat ΣC 0..1 Element When the event is to occur
tim-1: if there's a duration, there needs to be duration units
tim-2: if there's a period, there needs to be period units
tim-4: duration SHALL be a non-negative value
tim-5: period SHALL be a non-negative value
tim-6: If there's a periodMax, there must be a period
tim-7: If there's a durationMax, there must be a duration
tim-8: If there's a countMax, there must be a count
tim-9: If there's an offset, there must be a when (and not C, CM, CD, CV)
tim-10: If there's a timeOfDay, there cannot be a when, or vice versa
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... Slices for bounds[x] Σ 0..1 Length/Range of lengths, or (Start and/or end) limits
Slice: Unordered, Open by type:$this
...... boundsDuration Duration
...... boundsRange Range
...... boundsPeriod Period
...... bounds[x]:boundsPeriod Σ 0..1 Period Length/Range of lengths, or (Start and/or end) limits
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
....... start SΣC 0..1 dateTime Estimated start of course based on prescription start date
....... end SΣC 0..1 dateTime Estimated end of course based on prescription start date and number of doses supplied
..... count Σ 0..1 positiveInt Number of times to repeat
..... countMax Σ 0..1 positiveInt Maximum number of times to repeat
..... duration Σ 0..1 decimal How long when it happens
..... durationMax Σ 0..1 decimal How long when it happens (Max)
..... durationUnit Σ 0..1 code s | min | h | d | wk | mo | a - unit of time (UCUM)
Binding: UnitsOfTime (required): A unit of time (units from UCUM).

..... frequency SΣ 0..1 positiveInt Event occurs frequency times per period
..... frequencyMax Σ 0..1 positiveInt Event occurs up to frequencyMax times per period
..... period SΣ 0..1 decimal Event occurs frequency times per period
..... periodMax Σ 0..1 decimal Upper limit of period (3-4 hours)
..... periodUnit SΣ 0..1 code s | min | h | d | wk | mo | a - unit of time (UCUM)
Binding: UnitsOfTime (required): A unit of time (units from UCUM).

..... dayOfWeek Σ 0..* code mon | tue | wed | thu | fri | sat | sun
Binding: DaysOfWeek (required)
..... timeOfDay Σ 0..* time Time of day for action
..... when Σ 0..* code Code for time period of occurrence
Binding: EventTiming (required): Real world event relating to the schedule.


..... offset Σ 0..1 unsignedInt Minutes from event (before or after)
.... code Σ 0..1 CodeableConcept BID | TID | QID | AM | PM | QD | QOD | +
Binding: TimingAbbreviation (preferred): Code for a known / defined timing pattern.

..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... coding Σ 0..* Coding Code defined by a terminology system
..... text SΣ 0..1 string Free text description of the frequency
... Slices for asNeeded[x] Σ 0..1 Take "as needed" (for x)
Slice: Unordered, Open by type:$this
Binding: Clinical Finding . (preferred)
.... asNeededBoolean boolean
.... asNeededCodeableConcept CodeableConcept
.... asNeeded[x]:asNeededBoolean SΣ 0..1 boolean Take "as needed" (for x)
... site Σ 0..1 CodeableConcept Body site to administer to
Binding: Body Site . (preferred)
... route SΣ 0..1 CodeableConcept How drug should enter body
Binding: Route of Administration . (preferred)
... method Σ 0..1 CodeableConcept Technique for administering medication
Binding: SNOMEDCTAdministrationMethodCodes (preferred)
... doseAndRate Σ 0..1 Element Amount of medication administered
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... type Σ 0..1 CodeableConcept The kind of dose or rate specified
Binding: DoseAndRateType (example): The kind of dose or rate specified.

.... Slices for dose[x] Σ 0..1 Amount of medication per dose
Slice: Unordered, Open by type:$this
..... doseRange Range
..... doseQuantity Quantity(SimpleQuantity)
..... dose[x]:doseQuantity C 0..1 SimpleQuantity A fixed quantity (no comparator)
qty-3: If a code for the unit is present, the system SHALL also be present
sqty-1: The comparator is not used on a SimpleQuantity
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... value SΣ 0..1 decimal Numerical value (with implicit precision)
...... unit Σ 0..1 string Unit representation
...... system ΣC 0..1 uri System that defines coded unit form
...... code Σ 0..1 code Coded form of the unit
.... rate[x] Σ 0..1 Amount of medication per unit of time
..... rateRatio Ratio
..... rateRange Range
..... rateQuantity Quantity(SimpleQuantity)
... maxDosePerPeriod Σ 0..1 Ratio Upper limit on medication per unit of time
... maxDosePerAdministration Σ 0..1 SimpleQuantity Upper limit on medication per administration
... maxDosePerLifetime Σ 0..1 SimpleQuantity Upper limit on medication per lifetime of the patient

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Dosage 0..* AUBaseDosage Dosage information in an Australian healthcare context
... text Σ 1..1 string Free text dosage instructions e.g. SIG
... additionalInstruction Σ 0..* CodeableConcept Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
Binding: SNOMEDCTAdditionalDosageInstructions (preferred)
... timing Σ 0..1 Timing When medication should be administered
.... repeat Σ 0..1 Element When the event is to occur
..... Slices for bounds[x] Content/Rules for all slices
...... bounds[x]:boundsPeriod Σ 0..1 Period Length/Range of lengths, or (Start and/or end) limits
....... start ΣC 0..1 dateTime Estimated start of course based on prescription start date
....... end ΣC 0..1 dateTime Estimated end of course based on prescription start date and number of doses supplied
..... frequency Σ 0..1 positiveInt Event occurs frequency times per period
..... period Σ 0..1 decimal Event occurs frequency times per period
..... periodUnit Σ 0..1 code s | min | h | d | wk | mo | a - unit of time (UCUM)
Binding: UnitsOfTime (required): A unit of time (units from UCUM).

.... code Σ 0..1 CodeableConcept BID | TID | QID | AM | PM | QD | QOD | +
..... text Σ 0..1 string Free text description of the frequency
.... asNeeded[x]:asNeededBoolean Σ 0..1 boolean Take "as needed" (for x)
... route Σ 0..1 CodeableConcept How drug should enter body
Binding: Route of Administration . (preferred)
... doseAndRate Σ 0..1 Element Amount of medication administered
.... Slices for dose[x] Content/Rules for all slices
..... dose[x]:doseQuantity 0..1 SimpleQuantity A fixed quantity (no comparator)
...... value Σ 0..1 decimal Numerical value (with implicit precision)

doco Documentation for this format

This structure is derived from AUBaseDosage

Summary

Mandatory: 1 element
Must-Support: 11 elements

Structures

This structure refers to these other structures:

Slices

This structure defines the following Slices:

  • The element 1 is sliced based on the value of Dosage.timing.repeat.bounds[x]
  • The element 1 is sliced based on the value of Dosage.asNeeded[x]
  • The element 1 is sliced based on the value of Dosage.doseAndRate.dose[x]

Differential View

This structure is derived from AUBaseDosage

NameFlagsCard.TypeDescription & Constraintsdoco
.. Dosage 0..* AUBaseDosage Dosage information in an Australian healthcare context
... text S 1..1 string Free text dosage instructions e.g. SIG
... additionalInstruction S 0..* CodeableConcept Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
... timing
.... repeat
..... Slices for bounds[x] 0..1 Duration, Range, Period Length/Range of lengths, or (Start and/or end) limits
Slice: Unordered, Open by type:$this
...... bounds[x]:boundsPeriod 0..1 Period Length/Range of lengths, or (Start and/or end) limits
....... start S 0..1 dateTime Estimated start of course based on prescription start date
....... end S 0..1 dateTime Estimated end of course based on prescription start date and number of doses supplied
..... frequency S 0..1 positiveInt Event occurs frequency times per period
..... period S 0..1 decimal Event occurs frequency times per period
..... periodUnit S 0..1 code s | min | h | d | wk | mo | a - unit of time (UCUM)
.... code
..... text S 0..1 string Free text description of the frequency
.... asNeeded[x]:asNeededBoolean S 0..1 boolean Take "as needed" (for x)
... route S 0..1 CodeableConcept How drug should enter body
... doseAndRate 0..1 Element Amount of medication administered
.... Slices for dose[x] 0..1 Range, SimpleQuantity Amount of medication per dose
Slice: Unordered, Open by type:$this
..... dose[x]:doseQuantity 0..1 SimpleQuantity A fixed quantity (no comparator)
...... value S 0..1 decimal Numerical value (with implicit precision)

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Dosage 0..* AUBaseDosage Dosage information in an Australian healthcare context
... id 0..1 string Unique id for inter-element referencing
... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
... text SΣ 1..1 string Free text dosage instructions e.g. SIG
... additionalInstruction SΣ 0..* CodeableConcept Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
Binding: SNOMEDCTAdditionalDosageInstructions (preferred)
... patientInstruction Σ 0..1 string Patient or consumer oriented instructions
... timing Σ 0..1 Timing When medication should be administered
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... event Σ 0..* dateTime When the event occurs
.... repeat ΣC 0..1 Element When the event is to occur
tim-1: if there's a duration, there needs to be duration units
tim-2: if there's a period, there needs to be period units
tim-4: duration SHALL be a non-negative value
tim-5: period SHALL be a non-negative value
tim-6: If there's a periodMax, there must be a period
tim-7: If there's a durationMax, there must be a duration
tim-8: If there's a countMax, there must be a count
tim-9: If there's an offset, there must be a when (and not C, CM, CD, CV)
tim-10: If there's a timeOfDay, there cannot be a when, or vice versa
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... Slices for bounds[x] Σ 0..1 Length/Range of lengths, or (Start and/or end) limits
Slice: Unordered, Open by type:$this
...... boundsDuration Duration
...... boundsRange Range
...... boundsPeriod Period
...... bounds[x]:boundsPeriod Σ 0..1 Period Length/Range of lengths, or (Start and/or end) limits
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
....... start SΣC 0..1 dateTime Estimated start of course based on prescription start date
....... end SΣC 0..1 dateTime Estimated end of course based on prescription start date and number of doses supplied
..... count Σ 0..1 positiveInt Number of times to repeat
..... countMax Σ 0..1 positiveInt Maximum number of times to repeat
..... duration Σ 0..1 decimal How long when it happens
..... durationMax Σ 0..1 decimal How long when it happens (Max)
..... durationUnit Σ 0..1 code s | min | h | d | wk | mo | a - unit of time (UCUM)
Binding: UnitsOfTime (required): A unit of time (units from UCUM).

..... frequency SΣ 0..1 positiveInt Event occurs frequency times per period
..... frequencyMax Σ 0..1 positiveInt Event occurs up to frequencyMax times per period
..... period SΣ 0..1 decimal Event occurs frequency times per period
..... periodMax Σ 0..1 decimal Upper limit of period (3-4 hours)
..... periodUnit SΣ 0..1 code s | min | h | d | wk | mo | a - unit of time (UCUM)
Binding: UnitsOfTime (required): A unit of time (units from UCUM).

..... dayOfWeek Σ 0..* code mon | tue | wed | thu | fri | sat | sun
Binding: DaysOfWeek (required)
..... timeOfDay Σ 0..* time Time of day for action
..... when Σ 0..* code Code for time period of occurrence
Binding: EventTiming (required): Real world event relating to the schedule.


..... offset Σ 0..1 unsignedInt Minutes from event (before or after)
.... code Σ 0..1 CodeableConcept BID | TID | QID | AM | PM | QD | QOD | +
Binding: TimingAbbreviation (preferred): Code for a known / defined timing pattern.

..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... coding Σ 0..* Coding Code defined by a terminology system
..... text SΣ 0..1 string Free text description of the frequency
... Slices for asNeeded[x] Σ 0..1 Take "as needed" (for x)
Slice: Unordered, Open by type:$this
Binding: Clinical Finding . (preferred)
.... asNeededBoolean boolean
.... asNeededCodeableConcept CodeableConcept
.... asNeeded[x]:asNeededBoolean SΣ 0..1 boolean Take "as needed" (for x)
... site Σ 0..1 CodeableConcept Body site to administer to
Binding: Body Site . (preferred)
... route SΣ 0..1 CodeableConcept How drug should enter body
Binding: Route of Administration . (preferred)
... method Σ 0..1 CodeableConcept Technique for administering medication
Binding: SNOMEDCTAdministrationMethodCodes (preferred)
... doseAndRate Σ 0..1 Element Amount of medication administered
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... type Σ 0..1 CodeableConcept The kind of dose or rate specified
Binding: DoseAndRateType (example): The kind of dose or rate specified.

.... Slices for dose[x] Σ 0..1 Amount of medication per dose
Slice: Unordered, Open by type:$this
..... doseRange Range
..... doseQuantity Quantity(SimpleQuantity)
..... dose[x]:doseQuantity C 0..1 SimpleQuantity A fixed quantity (no comparator)
qty-3: If a code for the unit is present, the system SHALL also be present
sqty-1: The comparator is not used on a SimpleQuantity
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... value SΣ 0..1 decimal Numerical value (with implicit precision)
...... unit Σ 0..1 string Unit representation
...... system ΣC 0..1 uri System that defines coded unit form
...... code Σ 0..1 code Coded form of the unit
.... rate[x] Σ 0..1 Amount of medication per unit of time
..... rateRatio Ratio
..... rateRange Range
..... rateQuantity Quantity(SimpleQuantity)
... maxDosePerPeriod Σ 0..1 Ratio Upper limit on medication per unit of time
... maxDosePerAdministration Σ 0..1 SimpleQuantity Upper limit on medication per administration
... maxDosePerLifetime Σ 0..1 SimpleQuantity Upper limit on medication per lifetime of the patient

doco Documentation for this format

 

Other representations of profile: CSV, Excel, Schematron

Terminology Bindings

PathConformanceValueSetURI
Dosage.additionalInstructionpreferredSNOMEDCTAdditionalDosageInstructions
http://hl7.org/fhir/ValueSet/additional-instruction-codes
from the FHIR Standard
Dosage.timing.repeat.durationUnitrequiredUnitsOfTime
http://hl7.org/fhir/ValueSet/units-of-time|4.0.1
from the FHIR Standard
Dosage.timing.repeat.periodUnitrequiredUnitsOfTime
http://hl7.org/fhir/ValueSet/units-of-time|4.0.1
from the FHIR Standard
Dosage.timing.repeat.dayOfWeekrequiredDaysOfWeek
http://hl7.org/fhir/ValueSet/days-of-week|4.0.1
from the FHIR Standard
Dosage.timing.repeat.whenrequiredEventTiming
http://hl7.org/fhir/ValueSet/event-timing|4.0.1
from the FHIR Standard
Dosage.timing.codepreferredTimingAbbreviation
http://hl7.org/fhir/ValueSet/timing-abbreviation
from the FHIR Standard
Dosage.asNeeded[x]preferredClinicalFinding .
https://healthterminologies.gov.au/fhir/ValueSet/clinical-finding-1
Dosage.sitepreferredBodySite .
https://healthterminologies.gov.au/fhir/ValueSet/body-site-1
Dosage.routepreferredRouteOfAdministration .
https://healthterminologies.gov.au/fhir/ValueSet/route-of-administration-1
Dosage.methodpreferredSNOMEDCTAdministrationMethodCodes
http://hl7.org/fhir/ValueSet/administration-method-codes
from the FHIR Standard
Dosage.doseAndRate.typeexampleDoseAndRateType
http://hl7.org/fhir/ValueSet/dose-rate-type
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
qty-3errorDosage.doseAndRate.dose[x]:doseQuantityIf a code for the unit is present, the system SHALL also be present
: code.empty() or system.exists()
sqty-1errorDosage.doseAndRate.dose[x]:doseQuantityThe comparator is not used on a SimpleQuantity
: comparator.empty()
tim-1errorDosage.timing.repeatif there's a duration, there needs to be duration units
: duration.empty() or durationUnit.exists()
tim-2errorDosage.timing.repeatif there's a period, there needs to be period units
: period.empty() or periodUnit.exists()
tim-4errorDosage.timing.repeatduration SHALL be a non-negative value
: duration.exists() implies duration >= 0
tim-5errorDosage.timing.repeatperiod SHALL be a non-negative value
: period.exists() implies period >= 0
tim-6errorDosage.timing.repeatIf there's a periodMax, there must be a period
: periodMax.empty() or period.exists()
tim-7errorDosage.timing.repeatIf there's a durationMax, there must be a duration
: durationMax.empty() or duration.exists()
tim-8errorDosage.timing.repeatIf there's a countMax, there must be a count
: countMax.empty() or count.exists()
tim-9errorDosage.timing.repeatIf there's an offset, there must be a when (and not C, CM, CD, CV)
: offset.empty() or (when.exists() and ((when in ('C' | 'CM' | 'CD' | 'CV')).not()))
tim-10errorDosage.timing.repeatIf there's a timeOfDay, there cannot be a when, or vice versa
: timeOfDay.empty() or when.empty()