[%settitle Dosage%] [%file newheader%] [%file newnavbar%] <%dtxheader base Dosage%>
Dosage Regimes
| Responsible Owner: [[%wgt phx%]]([%wg phx%]) Work Group | Standards Status:Normative |
|---|
Types Framework Cross Reference: Base Types | Datatypes | Resources | Patterns
The Dosage related structures define general dosage instruction information typically represented in medication requests, medication dispenses and medication statements.
There are four different types involved in the representation of Dosage Information:
- DosageDetails: Summary of the dosage details, and orchestration of complex dosage regimes
- Dosage: The core information about the dosage regime for a medication
- DosageSafety: Information about dosage safety: dose limits for medications that have safety issues
- DosageCondition: Expresses conditional rules for dosage regimes, such as 'take this medication if tolerated'
The examples page shows how many different complex dosage regimes are represented using these structures.
Note to Balloters: The way Medication dosage regimes are represented and used has undergone extensive reorganization with breaking changes in R6:
- The
dosageInstructionelement in MedicationRequest, MedicationDispense, and MedicationStatement has changed from multipleDosageelements (0..*) to a singleDosageDetailselement (0..1)- Complex dosing regimes are now represented within DosageDetails using steps and components rather than multiple Dosage instances
- The
DosageDetailsdata type allows combining multiple dosages and replaces the use of.sequence.- There are changes to the Boundaries for MedicationRequest
- The Timing datatype has related changes - namely the addition of
startOffsetandendOffset.Balloters should pay careful attention to these structures and the examples.
Dosage text and structured Data
Dosages may contain renderedInstruction and/or structured data (as a simple dosage or a complex sequence of step elements).
The rendered instructions are typical prescription instructions, with a relatively concise expression that is mostly understood by human. If the Medication related resources (request, dispense, or statement) are only serving the purpose of human mediated medication functionality, it's sufficient to populate renderedInstruction, and leave the rest of the structure empty.
However in many contexts, it is good to augment the human readable instructions with precisely formulated dosage regimes so that medication management systems can assist with correct and safe administration. As of the publication of this specification, GenAI services are mostly able to decode correct renderedInstructions correctly, but this can't be assumed correct (and not just because of AI limitations), so in any context where there is interest in providing medication management support, the dosage structure should be fully populated.
However, even after it's fully populated, it's not unusual for the renderedInstruction to contain additional details not found in the structure, or found in the structure in extensions that not all systems can understand, so the renderedInstruction is always important to show to huamns. Even in the presence of fully populated structures, it's a challenge to produce good concise and readable renderedInstruction, so applications SHOULD always consider populating renderedInstruction.
Limitations of Use
The dosage model presented on this page does not address the following aspects of medication management:
- Complex Titration based dosage regimes
- Cross-medication dosage orchestration and safety management
- Medication regimes that are intimately linked to wider care planning regimes
For all of these challenges, the management and orchestration of the care process starts with PlanDefinition and/or RequestOrchestration. See also the MedicationRequest Boundaries.
DosageDetails
The DosageDetails type is the container type for dosing information, and contains:
renderedInstruction: a single summary of the details in the dosage details- Either a
simpledosage, or a complex dosage course with one or morestepitems, able to represent multiple dose regimes with tapering doses, and event relationships safetyinformation that represents dose limits for relevant medications
[%dt DosageDetails 2%]
Constraints
[%dt.constraints DosageDetails%] [%tx DosageDetails%]
Note: the DosageDetails structure allows modifier extensions.
When a DosageDetails contains multiple steps, the steps are sequential - the dosage course follows through the steps one at a time. Each step has to specify an end condition - either by explicitly linking the step to some external event, or by specifying a limit on the timing of the event using either Timing.repeat.bounds[x] or Timing.repeat.count on the Timing data type.
Each step may include one or more component entries.
When there more than one component dosages in a step, all components within the same step are considered concurrent. Typically, there are multiple components for the following reasons:
- Different dosages on different days, or different times of the day
- An instruction to take a medication, with an additional instruction for PRN, usually with restrictions around the PRN usage
- Different dosages for different clinical conditions
If there are multiple components, and they specify different bounds for their repeating events, the step lasts as long as the longest component.
DosageDetails is used in the following places: [%dtusage DosageDetails%]
Dosage
The Dosage data type describes a single course of medication application. The course is a consistent application of a medication one or more times, as specified by the dosage details.
[%dt Dosage 1%]
Note: the Dosage structure allows modifier extensions.
Constraints
[%dt.constraints Dosage%] [%tx Dosage%]
Dosage is used in the following places: [%dtusage Dosage%]
DosageSafety
The DosageSafety type represents safety information about the medicine - that is, dosage limitations associated with medications for which safety issues exists.
[%dt DosageSafety 3%]
A period can only be specified if the scope is 'period', in which case it must be present.
The DosageSafety type allows for representing multiple limits. Limits can defined for four different scopes of interest:
| administration | A dose limit that applies for a single administration |
|---|---|
| dosage | A dose limit that applies to the dosage structure where it is applied - either the entire dosage course, a specific step in the sequence, or a specific component |
| period | A dose limit that applies over the specified time period, irrespective of the details of the dosage course (and, in principle, other medications that include the same active agent) |
| lifetime | A dose limit that is a lifetime dose limit for the medication across all medication applications |
There is no rule that there can only be one limit per scope, because there might be both absolute and context dependent limits, such as 'no more than 1g', and also 'no more than 5 ug/kg of body weight'.
Constraints
[%dt.constraints DosageSafety%] [%tx DosageSafety%]
DosageSafety is used in the following places: [%dtusage DosageSafety%]
DosageCondition
DosageCondition describes when the dosage regime is dependent on external events or conditions. Some examples of it's use:
- Do this lesser dosage if the patient can't tolerate a higher dose
- Use this medication if the patient can't tolerate some other medication
- Use this dosage until symptoms resolve
- Use this dosage if the medication is available in sufficient supply
[%dt DosageCondition 3%]
Constraints
[%dt.constraints DosageCondition%] [%tx DosageCondition%]
DosageCondition is used in the following places: [%dtusage DosageCondition%]
[%file newfooter%] try { var currentTabIndex = sessionStorage.getItem('fhir-resource-tab-index'); } catch(exception){ } if (!currentTabIndex) currentTabIndex = '0'; $( '#tabs-Dosage' ).tabs({ active: currentTabIndex, activate: function( event, ui ) { store(ui.newTab.index()); } }); $( '#tabs-DosageDetails' ).tabs({ active: currentTabIndex, activate: function( event, ui ) { store(ui.newTab.index()); } }); $( '#tabs-DosageSafety' ).tabs({ active: currentTabIndex, activate: function( event, ui ) { store(ui.newTab.index()); } }); $( '#tabs-DosageCondition' ).tabs({ active: currentTabIndex, activate: function( event, ui ) { store(ui.newTab.index()); } }); function store(currentTab) { document.activeElement.blur(); try { sessionStorage.setItem('fhir-resource-tab-index', currentTab); } catch(exception){ } $( '#tabs-Dosage' ).tabs('option', 'active', currentTab); $( '#tabs-DosageDetails' ).tabs('option', 'active', currentTab); $( '#tabs-DosageSafety' ).tabs('option', 'active', currentTab); $( '#tabs-DosageCondition' ).tabs('option', 'active', currentTab); }