Medication Scheme Implementation Guide
1.0.0 - draft Estonia flag

Medication Scheme Implementation Guide, published by TEHIK. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/TEHIK-EE/ig-ee-medication-scheme/ and changes regularly. See the Directory of published versions

Data Type Profile: EETISDosage

Official URL: https://fhir.ee/StructureDefinition/ee-tis-dosage Version: 1.0.0
Draft as of 2024-01-31 Computable Name: EETISDosage

Annustamisjuhis. Dosage is for exact representation of what quantity in which units and how often should medication be taken by patient.

Usage:

Formal Views of Profile Content

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

This structure is derived from Dosage

NameFlagsCard.TypeDescription & Constraintsdoco
.. Dosage 0..* Dosage Dosage
... sequence 0..1 integer The order of the dosage instructions
... text 0..1 string Free text dosage instructions e.g. SIG
Max Length: 1000
... additionalInstruction 0..* CodeableConcept Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
... timing 0..1 Timing When medication should be administered
.... repeat 0..1 Element When the event is to occur.
..... bounds[x] 0..1 Duration, Range, Period Length/Range of lengths, or (Start and/or end) limits.
Slice: Unordered, Open by type:$this
..... 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 The units of time for the duration.
..... frequency 0..1 positiveInt Indicates the number of repetitions that should occur within a period. I.e. Event occurs frequency times per period
..... frequencyMax 0..1 positiveInt Event occurs up to frequencyMax times per period
..... period 0..1 decimal The duration to which the frequency applies. I.e. Event occurs frequency times per period
..... periodMax 0..1 decimal Upper limit of period (3-4 hours)
..... dayOfWeek 0..* code If one or more days of week is provided, then the action happens only on the specified day(s).
..... timeOfDay 0..* time Specified time of day for action to take place.
..... when 0..* code Code for time period of occurrence
..... offset 0..1 unsignedInt Minutes from event (before or after)
... asNeeded 0..1 boolean Take "as needed"
... asNeededFor 0..1 CodeableConcept Take "as needed" (for x)
... site 0..1 CodeableConcept Body site to administer to
... route 0..1 CodeableConcept How drug should enter body
... method 0..1 CodeableConcept Technique for administering medication
... doseAndRate 0..* Element Amount of medication administered, to be administered or typical amount to be administered
.... dose[x] 0..1 Range, SimpleQuantity Amount of medication per dose
.... rate[x] 0..1 Ratio, Range, SimpleQuantity Amount of medication per unit of time
... maxDosePerPeriod 0..* 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 C 0..* Dosage Dosage
dos-1: AsNeededFor can only be set if AsNeeded is empty or true
... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
... sequence Σ 0..1 integer The order of the dosage instructions
... text Σ 0..1 string Free text dosage instructions e.g. SIG
Max Length: 1000
... patientInstruction Σ 0..1 string Patient or consumer oriented instructions
... timing Σ 0..1 Timing When medication should be administered
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... 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
..... 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
..... count ΣC 0..1 positiveInt Number of times to repeat
..... countMax ΣC 0..1 positiveInt Maximum number of times to repeat
..... duration ΣC 0..1 decimal How long when it happens
..... durationMax ΣC 0..1 decimal How long when it happens (Max)
..... durationUnit ΣC 0..1 code The units of time for the duration.
Binding: UnitsOfTime (required): A unit of time (units from UCUM).

..... frequency Σ 0..1 positiveInt Indicates the number of repetitions that should occur within a period. I.e. Event occurs frequency times per period
..... frequencyMax Σ 0..1 positiveInt Event occurs up to frequencyMax times per period
..... period ΣC 0..1 decimal The duration to which the frequency applies. I.e. Event occurs frequency times per period
..... periodMax ΣC 0..1 decimal Upper limit of period (3-4 hours)
..... dayOfWeek Σ 0..* code If one or more days of week is provided, then the action happens only on the specified day(s).
Binding: DaysOfWeek (required)
..... timeOfDay ΣC 0..* time Specified time of day for action to take place.
..... when ΣC 0..* code Code for time period of occurrence
Binding: EventTiming (required): Real-world event relating to the schedule.


..... offset ΣC 0..1 unsignedInt Minutes from event (before or after)
... asNeeded ΣC 0..1 boolean Take "as needed"
... asNeededFor ΣC 0..1 CodeableConcept Take "as needed" (for x)
Binding: SNOMEDCTMedicationAsNeededReasonCodes (example): A coded concept identifying the precondition that should be met or evaluated prior to consuming or administering a medication dose. For example "pain", "30 minutes prior to sexual intercourse", "on flare-up" etc.


... site Σ 0..1 CodeableConcept Body site to administer to
Binding: SNOMEDCTAnatomicalStructureAdministrationSites (example): A coded concept describing the site location the medicine enters into or onto the body.

... route Σ 0..1 CodeableConcept How drug should enter body
Binding: SNOMEDCTRouteCodes (example): A coded concept describing the route or physiological path of administration of a therapeutic agent into or onto the body of a subject.

... method Σ 0..1 CodeableConcept Technique for administering medication
Binding: SNOMEDCTAdministrationMethodCodes (example): A coded concept describing the technique by which the medicine is administered.

... doseAndRate Σ 0..* Element Amount of medication administered, to be administered or typical amount to be administered
.... dose[x] Σ 0..1 Amount of medication per dose
..... doseRange Range
..... doseQuantity Quantity(SimpleQuantity)
.... rate[x] Σ 0..1 Amount of medication per unit of time
..... rateRatio Ratio
..... rateRange Range
..... rateQuantity Quantity(SimpleQuantity)
... maxDosePerPeriod Σ 0..* 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

Terminology Bindings

PathConformanceValueSetURI
Dosage.additionalInstructionexampleSNOMEDCTAdditionalDosageInstructions
http://hl7.org/fhir/ValueSet/additional-instruction-codes
from the FHIR Standard
Dosage.timing.repeat.durationUnitrequiredUnitsOfTime
http://hl7.org/fhir/ValueSet/units-of-time|5.0.0
from the FHIR Standard
Dosage.timing.repeat.dayOfWeekrequiredDaysOfWeek
http://hl7.org/fhir/ValueSet/days-of-week|5.0.0
from the FHIR Standard
Dosage.timing.repeat.whenrequiredEventTiming
http://hl7.org/fhir/ValueSet/event-timing|5.0.0
from the FHIR Standard
Dosage.asNeededForexampleSNOMEDCTMedicationAsNeededReasonCodes
http://hl7.org/fhir/ValueSet/medication-as-needed-reason
from the FHIR Standard
Dosage.siteexampleSNOMEDCTAnatomicalStructureAdministrationSites
http://hl7.org/fhir/ValueSet/approach-site-codes
from the FHIR Standard
Dosage.routeexampleSNOMEDCTRouteCodes
http://hl7.org/fhir/ValueSet/route-codes
from the FHIR Standard
Dosage.methodexampleSNOMEDCTAdministrationMethodCodes
http://hl7.org/fhir/ValueSet/administration-method-codes
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dos-1errorDosageAsNeededFor can only be set if AsNeeded is empty or true
: asNeededFor.empty() or asNeeded.empty() or asNeeded
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()
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.select($this in ('C' | 'CM' | 'CD' | 'CV')).allFalse())
tim-10errorDosage.timing.repeatIf there's a timeOfDay, there cannot be a when, or vice versa
: timeOfDay.empty() or when.empty()
NameFlagsCard.TypeDescription & Constraintsdoco
.. Dosage C 0..* Dosage Dosage
dos-1: AsNeededFor can only be set if AsNeeded is empty or true
... id 0..1 id 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 Σ 0..1 string Free text dosage instructions e.g. SIG
Max Length: 1000
... additionalInstruction Σ 0..* CodeableConcept Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
Binding: SNOMEDCTAdditionalDosageInstructions (example): A coded concept identifying additional instructions such as "take with water" or "avoid operating heavy machinery".


... patientInstruction Σ 0..1 string Patient or consumer oriented instructions
... timing Σ 0..1 Timing When medication should be administered
.... id 0..1 id 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
..... 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
..... count ΣC 0..1 positiveInt Number of times to repeat
..... countMax ΣC 0..1 positiveInt Maximum number of times to repeat
..... duration ΣC 0..1 decimal How long when it happens
..... durationMax ΣC 0..1 decimal How long when it happens (Max)
..... durationUnit ΣC 0..1 code The units of time for the duration.
Binding: UnitsOfTime (required): A unit of time (units from UCUM).

..... frequency Σ 0..1 positiveInt Indicates the number of repetitions that should occur within a period. I.e. Event occurs frequency times per period
..... frequencyMax Σ 0..1 positiveInt Event occurs up to frequencyMax times per period
..... period ΣC 0..1 decimal The duration to which the frequency applies. I.e. Event occurs frequency times per period
..... periodMax ΣC 0..1 decimal Upper limit of period (3-4 hours)
..... periodUnit ΣC 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 If one or more days of week is provided, then the action happens only on the specified day(s).
Binding: DaysOfWeek (required)
..... timeOfDay ΣC 0..* time Specified time of day for action to take place.
..... when ΣC 0..* code Code for time period of occurrence
Binding: EventTiming (required): Real-world event relating to the schedule.


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

... asNeeded ΣC 0..1 boolean Take "as needed"
... asNeededFor ΣC 0..1 CodeableConcept Take "as needed" (for x)
Binding: SNOMEDCTMedicationAsNeededReasonCodes (example): A coded concept identifying the precondition that should be met or evaluated prior to consuming or administering a medication dose. For example "pain", "30 minutes prior to sexual intercourse", "on flare-up" etc.


... site Σ 0..1 CodeableConcept Body site to administer to
Binding: SNOMEDCTAnatomicalStructureAdministrationSites (example): A coded concept describing the site location the medicine enters into or onto the body.

... route Σ 0..1 CodeableConcept How drug should enter body
Binding: SNOMEDCTRouteCodes (example): A coded concept describing the route or physiological path of administration of a therapeutic agent into or onto the body of a subject.

... method Σ 0..1 CodeableConcept Technique for administering medication
Binding: SNOMEDCTAdministrationMethodCodes (example): A coded concept describing the technique by which the medicine is administered.

... doseAndRate Σ 0..* Element Amount of medication administered, to be administered or typical amount to 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
.... type Σ 0..1 CodeableConcept The kind of dose or rate specified
Binding: DoseAndRateType (example): The kind of dose or rate specified.

.... dose[x] Σ 0..1 Amount of medication per dose
..... doseRange Range
..... doseQuantity Quantity(SimpleQuantity)
.... rate[x] Σ 0..1 Amount of medication per unit of time
..... rateRatio Ratio
..... rateRange Range
..... rateQuantity Quantity(SimpleQuantity)
... maxDosePerPeriod Σ 0..* 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

Terminology Bindings

PathConformanceValueSetURI
Dosage.additionalInstructionexampleSNOMEDCTAdditionalDosageInstructions
http://hl7.org/fhir/ValueSet/additional-instruction-codes
from the FHIR Standard
Dosage.timing.repeat.durationUnitrequiredUnitsOfTime
http://hl7.org/fhir/ValueSet/units-of-time|5.0.0
from the FHIR Standard
Dosage.timing.repeat.periodUnitrequiredUnitsOfTime
http://hl7.org/fhir/ValueSet/units-of-time|5.0.0
from the FHIR Standard
Dosage.timing.repeat.dayOfWeekrequiredDaysOfWeek
http://hl7.org/fhir/ValueSet/days-of-week|5.0.0
from the FHIR Standard
Dosage.timing.repeat.whenrequiredEventTiming
http://hl7.org/fhir/ValueSet/event-timing|5.0.0
from the FHIR Standard
Dosage.timing.codepreferredTimingAbbreviation
http://hl7.org/fhir/ValueSet/timing-abbreviation
from the FHIR Standard
Dosage.asNeededForexampleSNOMEDCTMedicationAsNeededReasonCodes
http://hl7.org/fhir/ValueSet/medication-as-needed-reason
from the FHIR Standard
Dosage.siteexampleSNOMEDCTAnatomicalStructureAdministrationSites
http://hl7.org/fhir/ValueSet/approach-site-codes
from the FHIR Standard
Dosage.routeexampleSNOMEDCTRouteCodes
http://hl7.org/fhir/ValueSet/route-codes
from the FHIR Standard
Dosage.methodexampleSNOMEDCTAdministrationMethodCodes
http://hl7.org/fhir/ValueSet/administration-method-codes
from the FHIR Standard
Dosage.doseAndRate.typeexampleDoseAndRateType
http://terminology.hl7.org/ValueSet/dose-rate-type

Constraints

IdGradePath(s)DetailsRequirements
dos-1errorDosageAsNeededFor can only be set if AsNeeded is empty or true
: asNeededFor.empty() or asNeeded.empty() or asNeeded
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()
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.select($this in ('C' | 'CM' | 'CD' | 'CV')).allFalse())
tim-10errorDosage.timing.repeatIf there's a timeOfDay, there cannot be a when, or vice versa
: timeOfDay.empty() or when.empty()

This structure is derived from Dosage

Summary

Slices

This structure defines the following Slices:

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

Differential View

This structure is derived from Dosage

NameFlagsCard.TypeDescription & Constraintsdoco
.. Dosage 0..* Dosage Dosage
... sequence 0..1 integer The order of the dosage instructions
... text 0..1 string Free text dosage instructions e.g. SIG
Max Length: 1000
... additionalInstruction 0..* CodeableConcept Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
... timing 0..1 Timing When medication should be administered
.... repeat 0..1 Element When the event is to occur.
..... bounds[x] 0..1 Duration, Range, Period Length/Range of lengths, or (Start and/or end) limits.
Slice: Unordered, Open by type:$this
..... 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 The units of time for the duration.
..... frequency 0..1 positiveInt Indicates the number of repetitions that should occur within a period. I.e. Event occurs frequency times per period
..... frequencyMax 0..1 positiveInt Event occurs up to frequencyMax times per period
..... period 0..1 decimal The duration to which the frequency applies. I.e. Event occurs frequency times per period
..... periodMax 0..1 decimal Upper limit of period (3-4 hours)
..... dayOfWeek 0..* code If one or more days of week is provided, then the action happens only on the specified day(s).
..... timeOfDay 0..* time Specified time of day for action to take place.
..... when 0..* code Code for time period of occurrence
..... offset 0..1 unsignedInt Minutes from event (before or after)
... asNeeded 0..1 boolean Take "as needed"
... asNeededFor 0..1 CodeableConcept Take "as needed" (for x)
... site 0..1 CodeableConcept Body site to administer to
... route 0..1 CodeableConcept How drug should enter body
... method 0..1 CodeableConcept Technique for administering medication
... doseAndRate 0..* Element Amount of medication administered, to be administered or typical amount to be administered
.... dose[x] 0..1 Range, SimpleQuantity Amount of medication per dose
.... rate[x] 0..1 Ratio, Range, SimpleQuantity Amount of medication per unit of time
... maxDosePerPeriod 0..* 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

Key Elements View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Dosage C 0..* Dosage Dosage
dos-1: AsNeededFor can only be set if AsNeeded is empty or true
... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
... sequence Σ 0..1 integer The order of the dosage instructions
... text Σ 0..1 string Free text dosage instructions e.g. SIG
Max Length: 1000
... patientInstruction Σ 0..1 string Patient or consumer oriented instructions
... timing Σ 0..1 Timing When medication should be administered
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... 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
..... 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
..... count ΣC 0..1 positiveInt Number of times to repeat
..... countMax ΣC 0..1 positiveInt Maximum number of times to repeat
..... duration ΣC 0..1 decimal How long when it happens
..... durationMax ΣC 0..1 decimal How long when it happens (Max)
..... durationUnit ΣC 0..1 code The units of time for the duration.
Binding: UnitsOfTime (required): A unit of time (units from UCUM).

..... frequency Σ 0..1 positiveInt Indicates the number of repetitions that should occur within a period. I.e. Event occurs frequency times per period
..... frequencyMax Σ 0..1 positiveInt Event occurs up to frequencyMax times per period
..... period ΣC 0..1 decimal The duration to which the frequency applies. I.e. Event occurs frequency times per period
..... periodMax ΣC 0..1 decimal Upper limit of period (3-4 hours)
..... dayOfWeek Σ 0..* code If one or more days of week is provided, then the action happens only on the specified day(s).
Binding: DaysOfWeek (required)
..... timeOfDay ΣC 0..* time Specified time of day for action to take place.
..... when ΣC 0..* code Code for time period of occurrence
Binding: EventTiming (required): Real-world event relating to the schedule.


..... offset ΣC 0..1 unsignedInt Minutes from event (before or after)
... asNeeded ΣC 0..1 boolean Take "as needed"
... asNeededFor ΣC 0..1 CodeableConcept Take "as needed" (for x)
Binding: SNOMEDCTMedicationAsNeededReasonCodes (example): A coded concept identifying the precondition that should be met or evaluated prior to consuming or administering a medication dose. For example "pain", "30 minutes prior to sexual intercourse", "on flare-up" etc.


... site Σ 0..1 CodeableConcept Body site to administer to
Binding: SNOMEDCTAnatomicalStructureAdministrationSites (example): A coded concept describing the site location the medicine enters into or onto the body.

... route Σ 0..1 CodeableConcept How drug should enter body
Binding: SNOMEDCTRouteCodes (example): A coded concept describing the route or physiological path of administration of a therapeutic agent into or onto the body of a subject.

... method Σ 0..1 CodeableConcept Technique for administering medication
Binding: SNOMEDCTAdministrationMethodCodes (example): A coded concept describing the technique by which the medicine is administered.

... doseAndRate Σ 0..* Element Amount of medication administered, to be administered or typical amount to be administered
.... dose[x] Σ 0..1 Amount of medication per dose
..... doseRange Range
..... doseQuantity Quantity(SimpleQuantity)
.... rate[x] Σ 0..1 Amount of medication per unit of time
..... rateRatio Ratio
..... rateRange Range
..... rateQuantity Quantity(SimpleQuantity)
... maxDosePerPeriod Σ 0..* 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

Terminology Bindings

PathConformanceValueSetURI
Dosage.additionalInstructionexampleSNOMEDCTAdditionalDosageInstructions
http://hl7.org/fhir/ValueSet/additional-instruction-codes
from the FHIR Standard
Dosage.timing.repeat.durationUnitrequiredUnitsOfTime
http://hl7.org/fhir/ValueSet/units-of-time|5.0.0
from the FHIR Standard
Dosage.timing.repeat.dayOfWeekrequiredDaysOfWeek
http://hl7.org/fhir/ValueSet/days-of-week|5.0.0
from the FHIR Standard
Dosage.timing.repeat.whenrequiredEventTiming
http://hl7.org/fhir/ValueSet/event-timing|5.0.0
from the FHIR Standard
Dosage.asNeededForexampleSNOMEDCTMedicationAsNeededReasonCodes
http://hl7.org/fhir/ValueSet/medication-as-needed-reason
from the FHIR Standard
Dosage.siteexampleSNOMEDCTAnatomicalStructureAdministrationSites
http://hl7.org/fhir/ValueSet/approach-site-codes
from the FHIR Standard
Dosage.routeexampleSNOMEDCTRouteCodes
http://hl7.org/fhir/ValueSet/route-codes
from the FHIR Standard
Dosage.methodexampleSNOMEDCTAdministrationMethodCodes
http://hl7.org/fhir/ValueSet/administration-method-codes
from the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dos-1errorDosageAsNeededFor can only be set if AsNeeded is empty or true
: asNeededFor.empty() or asNeeded.empty() or asNeeded
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()
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.select($this in ('C' | 'CM' | 'CD' | 'CV')).allFalse())
tim-10errorDosage.timing.repeatIf there's a timeOfDay, there cannot be a when, or vice versa
: timeOfDay.empty() or when.empty()

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Dosage C 0..* Dosage Dosage
dos-1: AsNeededFor can only be set if AsNeeded is empty or true
... id 0..1 id 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 Σ 0..1 string Free text dosage instructions e.g. SIG
Max Length: 1000
... additionalInstruction Σ 0..* CodeableConcept Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
Binding: SNOMEDCTAdditionalDosageInstructions (example): A coded concept identifying additional instructions such as "take with water" or "avoid operating heavy machinery".


... patientInstruction Σ 0..1 string Patient or consumer oriented instructions
... timing Σ 0..1 Timing When medication should be administered
.... id 0..1 id 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
..... 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
..... count ΣC 0..1 positiveInt Number of times to repeat
..... countMax ΣC 0..1 positiveInt Maximum number of times to repeat
..... duration ΣC 0..1 decimal How long when it happens
..... durationMax ΣC 0..1 decimal How long when it happens (Max)
..... durationUnit ΣC 0..1 code The units of time for the duration.
Binding: UnitsOfTime (required): A unit of time (units from UCUM).

..... frequency Σ 0..1 positiveInt Indicates the number of repetitions that should occur within a period. I.e. Event occurs frequency times per period
..... frequencyMax Σ 0..1 positiveInt Event occurs up to frequencyMax times per period
..... period ΣC 0..1 decimal The duration to which the frequency applies. I.e. Event occurs frequency times per period
..... periodMax ΣC 0..1 decimal Upper limit of period (3-4 hours)
..... periodUnit ΣC 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 If one or more days of week is provided, then the action happens only on the specified day(s).
Binding: DaysOfWeek (required)
..... timeOfDay ΣC 0..* time Specified time of day for action to take place.
..... when ΣC 0..* code Code for time period of occurrence
Binding: EventTiming (required): Real-world event relating to the schedule.


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

... asNeeded ΣC 0..1 boolean Take "as needed"
... asNeededFor ΣC 0..1 CodeableConcept Take "as needed" (for x)
Binding: SNOMEDCTMedicationAsNeededReasonCodes (example): A coded concept identifying the precondition that should be met or evaluated prior to consuming or administering a medication dose. For example "pain", "30 minutes prior to sexual intercourse", "on flare-up" etc.


... site Σ 0..1 CodeableConcept Body site to administer to
Binding: SNOMEDCTAnatomicalStructureAdministrationSites (example): A coded concept describing the site location the medicine enters into or onto the body.

... route Σ 0..1 CodeableConcept How drug should enter body
Binding: SNOMEDCTRouteCodes (example): A coded concept describing the route or physiological path of administration of a therapeutic agent into or onto the body of a subject.

... method Σ 0..1 CodeableConcept Technique for administering medication
Binding: SNOMEDCTAdministrationMethodCodes (example): A coded concept describing the technique by which the medicine is administered.

... doseAndRate Σ 0..* Element Amount of medication administered, to be administered or typical amount to 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
.... type Σ 0..1 CodeableConcept The kind of dose or rate specified
Binding: DoseAndRateType (example): The kind of dose or rate specified.

.... dose[x] Σ 0..1 Amount of medication per dose
..... doseRange Range
..... doseQuantity Quantity(SimpleQuantity)
.... rate[x] Σ 0..1 Amount of medication per unit of time
..... rateRatio Ratio
..... rateRange Range
..... rateQuantity Quantity(SimpleQuantity)
... maxDosePerPeriod Σ 0..* 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

Terminology Bindings

PathConformanceValueSetURI
Dosage.additionalInstructionexampleSNOMEDCTAdditionalDosageInstructions
http://hl7.org/fhir/ValueSet/additional-instruction-codes
from the FHIR Standard
Dosage.timing.repeat.durationUnitrequiredUnitsOfTime
http://hl7.org/fhir/ValueSet/units-of-time|5.0.0
from the FHIR Standard
Dosage.timing.repeat.periodUnitrequiredUnitsOfTime
http://hl7.org/fhir/ValueSet/units-of-time|5.0.0
from the FHIR Standard
Dosage.timing.repeat.dayOfWeekrequiredDaysOfWeek
http://hl7.org/fhir/ValueSet/days-of-week|5.0.0
from the FHIR Standard
Dosage.timing.repeat.whenrequiredEventTiming
http://hl7.org/fhir/ValueSet/event-timing|5.0.0
from the FHIR Standard
Dosage.timing.codepreferredTimingAbbreviation
http://hl7.org/fhir/ValueSet/timing-abbreviation
from the FHIR Standard
Dosage.asNeededForexampleSNOMEDCTMedicationAsNeededReasonCodes
http://hl7.org/fhir/ValueSet/medication-as-needed-reason
from the FHIR Standard
Dosage.siteexampleSNOMEDCTAnatomicalStructureAdministrationSites
http://hl7.org/fhir/ValueSet/approach-site-codes
from the FHIR Standard
Dosage.routeexampleSNOMEDCTRouteCodes
http://hl7.org/fhir/ValueSet/route-codes
from the FHIR Standard
Dosage.methodexampleSNOMEDCTAdministrationMethodCodes
http://hl7.org/fhir/ValueSet/administration-method-codes
from the FHIR Standard
Dosage.doseAndRate.typeexampleDoseAndRateType
http://terminology.hl7.org/ValueSet/dose-rate-type

Constraints

IdGradePath(s)DetailsRequirements
dos-1errorDosageAsNeededFor can only be set if AsNeeded is empty or true
: asNeededFor.empty() or asNeeded.empty() or asNeeded
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()
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.select($this in ('C' | 'CM' | 'CD' | 'CV')).allFalse())
tim-10errorDosage.timing.repeatIf there's a timeOfDay, there cannot be a when, or vice versa
: timeOfDay.empty() or when.empty()

This structure is derived from Dosage

Summary

Slices

This structure defines the following Slices:

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

 

Other representations of profile: CSV, Excel, Schematron