haau3 FHIR Implementation Guide (HFIG)
1.0.0 - ci-build
haau3 FHIR Implementation Guide (HFIG) - Local Development build (v1.0.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
| Official URL: https://haau3.com/fhir/StructureDefinition/haau3-structured-dosage | Version: 1.0.0 | |||
| Draft as of 2026-11-01 | Computable Name: Haau3StructuredDosage | |||
A Dosage that haau3's Structured Sig wrote from a prescription's free-text directions. The directions are kept verbatim in text, and each element the words support is coded: the dose and its unit, the route, the method, the timing and whether it is taken as needed. Nothing is invented: an element the directions do not support is absent, and anything a person should check is a review flag on the Dosage. Every Dosage names the engine and vocabulary versions it was written under.
The Dosage the structure-dosage operation writes from a prescription's free-text directions. It travels inside the operation's Parameters answer, and inside any record a caller puts it in, such as a MedicationRequest's dosageInstruction, with its review flags and versions on it.
What it promises
text is always present, the directions exactly as sent.site, asNeededCodeableConcept and additionalInstruction may be text alone, in the directions' own words.Timing.code is present only when the repeat is exactly the coded frequency's own.The profile is open: an element it does not mention may be filled by a later version, which the engine version names.
Usages:
You can also check for usages in the FHIR IG Statistics
Description of Profiles, Differentials, Snapshots and how the different presentations work.
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() |
|---|---|---|---|---|
![]() |
0..* | Dosage | How the medication is/was taken or should be taken | |
![]() ![]() |
2..* | Extension | Extension Slice: Unordered, Open by value:url Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them | |
![]() ![]() ![]() |
0..* | (Complex) | Something a person should check URL: https://haau3.com/fhir/StructureDefinition/structured-sig-review-flag | |
![]() ![]() ![]() |
1..1 | string | Structured Sig Engine Version URL: https://haau3.com/fhir/StructureDefinition/structured-sig-engine-version | |
![]() ![]() ![]() |
1..1 | string | Structured Sig Vocabulary Version URL: https://haau3.com/fhir/StructureDefinition/structured-sig-vocabulary-version | |
![]() ![]() ![]() |
0..1 | string | The RxNorm release the medication was looked up in, when it was URL: https://haau3.com/fhir/StructureDefinition/structured-sig-rxnorm-release | |
![]() ![]() |
0..* | Extension | Extensions that cannot be ignored even if unrecognized | |
![]() ![]() |
1..1 | string | The directions, exactly as sent | |
![]() ![]() |
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". | |
![]() ![]() |
0..1 | Timing | When medication should be administered | |
![]() ![]() ![]() |
0..* | Extension | Extensions that cannot be ignored even if unrecognized | |
![]() ![]() ![]() |
C | 0..1 | Element | When the event is to occur Constraints: tim-1, tim-2, tim-4, tim-5, tim-6, tim-7, tim-8, tim-9, tim-10 |
![]() ![]() ![]() |
0..1 | CodeableConcept | BID | TID | QID | AM | PM | QD | QOD | + Binding: TimingAbbreviation (preferred): Code for a known / defined timing pattern. | |
![]() ![]() |
0..1 | 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. | ||
![]() ![]() ![]() |
boolean | |||
![]() ![]() ![]() |
CodeableConcept | |||
![]() ![]() |
0..1 | CodeableConcept | Body site to administer to Binding: SNOMEDCTAnatomicalStructureForAdministrationSiteCodes (example): A coded concept describing the site location the medicine enters into or onto the body. | |
![]() ![]() |
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. | |
![]() ![]() |
0..1 | CodeableConcept | Technique for administering medication Binding: SNOMEDCTAdministrationMethodCodes (example): A coded concept describing the technique by which the medicine is administered. | |
![]() ![]() |
C | 0..* | Element | Amount of medication administered Constraints: haau3-sig-2 |
![]() ![]() ![]() |
0..1 | Amount of medication per dose | ||
![]() ![]() ![]() ![]() |
Range | |||
![]() ![]() ![]() ![]() |
Quantity(SimpleQuantity) | |||
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Dosage.additionalInstruction | Base | example | SNOMED CT Additional Dosage Instructions | 📍4.0.1 | FHIR Std. |
| Dosage.timing.code | Base | preferred | TimingAbbreviation | 📍4.0.1 | FHIR Std. |
| Dosage.asNeeded[x] | Base | example | SNOMED CT Medication As Needed Reason Codes | 📍4.0.1 | FHIR Std. |
| Dosage.site | Base | example | SNOMED CT Anatomical Structure for Administration Site Codes | 📍4.0.1 | FHIR Std. |
| Dosage.route | Base | example | SNOMED CT Route Codes | 📍4.0.1 | FHIR Std. |
| Dosage.method | Base | example | SNOMED CT Administration Method Codes | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| haau3-sig-2 | error | Dosage.doseAndRate | A dose's quantities are in UCUM or SNOMED CT, or carry no unit. |
(dose.ofType(Quantity) | dose.ofType(Range).low | dose.ofType(Range).high).all(system.empty() or system = 'http://unitsofmeasure.org' or system = 'http://snomed.info/sct')
|
| tim-1 | error | Dosage.timing.repeat | if there's a duration, there needs to be duration units |
duration.empty() or durationUnit.exists()
|
| tim-2 | error | Dosage.timing.repeat | if there's a period, there needs to be period units |
period.empty() or periodUnit.exists()
|
| tim-4 | error | Dosage.timing.repeat | duration SHALL be a non-negative value |
duration.exists() implies duration >= 0
|
| tim-5 | error | Dosage.timing.repeat | period SHALL be a non-negative value |
period.exists() implies period >= 0
|
| tim-6 | error | Dosage.timing.repeat | If there's a periodMax, there must be a period |
periodMax.empty() or period.exists()
|
| tim-7 | error | Dosage.timing.repeat | If there's a durationMax, there must be a duration |
durationMax.empty() or duration.exists()
|
| tim-8 | error | Dosage.timing.repeat | If there's a countMax, there must be a count |
countMax.empty() or count.exists()
|
| tim-9 | error | Dosage.timing.repeat | If 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-10 | error | Dosage.timing.repeat | If there's a timeOfDay, there cannot be a when, or vice versa |
timeOfDay.empty() or when.empty()
|
This structure is derived from Dosage
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() |
|---|---|---|---|---|
![]() |
0..* | Dosage | How the medication is/was taken or should be taken | |
![]() ![]() |
2..* | Extension | Extension | |
![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() |
0..* | (Complex) | Something a person should check URL: https://haau3.com/fhir/StructureDefinition/structured-sig-review-flag | |
![]() ![]() ![]() |
1..1 | string | Structured Sig Engine Version URL: https://haau3.com/fhir/StructureDefinition/structured-sig-engine-version | |
![]() ![]() ![]() |
1..1 | string | Structured Sig Vocabulary Version URL: https://haau3.com/fhir/StructureDefinition/structured-sig-vocabulary-version | |
![]() ![]() ![]() |
0..1 | string | The RxNorm release the medication was looked up in, when it was URL: https://haau3.com/fhir/StructureDefinition/structured-sig-rxnorm-release | |
![]() ![]() |
1..1 | string | The directions, exactly as sent | |
![]() ![]() |
0..* | CodeableConcept | Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness" | |
![]() ![]() |
0..1 | Timing | When medication should be administered | |
![]() ![]() ![]() |
0..1 | Element | When the event is to occur | |
![]() ![]() ![]() |
0..1 | CodeableConcept | BID | TID | QID | AM | PM | QD | QOD | + | |
![]() ![]() |
0..1 | boolean, CodeableConcept | Take "as needed" (for x) | |
![]() ![]() |
0..1 | CodeableConcept | Body site to administer to | |
![]() ![]() |
0..1 | CodeableConcept | How drug should enter body | |
![]() ![]() |
0..1 | CodeableConcept | Technique for administering medication | |
![]() ![]() |
C | 0..* | Element | Amount of medication administered Constraints: haau3-sig-2 |
![]() ![]() ![]() |
0..1 | Range, SimpleQuantity(4.0.1) | Amount of medication per dose | |
Documentation for this format | ||||
| Id | Grade | Path(s) | Description | Expression |
| haau3-sig-2 | error | Dosage.doseAndRate | A dose's quantities are in UCUM or SNOMED CT, or carry no unit. |
(dose.ofType(Quantity) | dose.ofType(Range).low | dose.ofType(Range).high).all(system.empty() or system = 'http://unitsofmeasure.org' or system = 'http://snomed.info/sct')
|
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() |
|---|---|---|---|---|
![]() |
0..* | Dosage | How the medication is/was taken or should be taken | |
![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() |
2..* | Extension | Extension Slice: Unordered, Open by value:url Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them | |
![]() ![]() ![]() |
0..* | (Complex) | Something a person should check URL: https://haau3.com/fhir/StructureDefinition/structured-sig-review-flag | |
![]() ![]() ![]() |
1..1 | string | Structured Sig Engine Version URL: https://haau3.com/fhir/StructureDefinition/structured-sig-engine-version | |
![]() ![]() ![]() |
1..1 | string | Structured Sig Vocabulary Version URL: https://haau3.com/fhir/StructureDefinition/structured-sig-vocabulary-version | |
![]() ![]() ![]() |
0..1 | string | The RxNorm release the medication was looked up in, when it was URL: https://haau3.com/fhir/StructureDefinition/structured-sig-rxnorm-release | |
![]() ![]() |
0..* | Extension | Extensions that cannot be ignored even if unrecognized | |
![]() ![]() |
0..1 | integer | The order of the dosage instructions | |
![]() ![]() |
1..1 | string | The directions, exactly as sent | |
![]() ![]() |
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". | |
![]() ![]() |
0..1 | string | Patient or consumer oriented instructions | |
![]() ![]() |
0..1 | Timing | When medication should be administered | |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..* | Extension | Extensions that cannot be ignored even if unrecognized | |
![]() ![]() ![]() |
0..* | dateTime | When the event occurs | |
![]() ![]() ![]() |
C | 0..1 | Element | When the event is to occur Constraints: tim-1, tim-2, tim-4, tim-5, tim-6, tim-7, tim-8, tim-9, tim-10 |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() |
0..1 | Length/Range of lengths, or (Start and/or end) limits | ||
![]() ![]() ![]() ![]() ![]() |
Duration | |||
![]() ![]() ![]() ![]() ![]() |
Range | |||
![]() ![]() ![]() ![]() ![]() |
Period | |||
![]() ![]() ![]() ![]() |
0..1 | positiveInt | Number of times to repeat | |
![]() ![]() ![]() ![]() |
0..1 | positiveInt | Maximum number of times to repeat | |
![]() ![]() ![]() ![]() |
0..1 | decimal | How long when it happens | |
![]() ![]() ![]() ![]() |
0..1 | decimal | How long when it happens (Max) | |
![]() ![]() ![]() ![]() |
0..1 | code | s | min | h | d | wk | mo | a - unit of time (UCUM) Binding: UnitsOfTime (required): A unit of time (units from UCUM). | |
![]() ![]() ![]() ![]() |
0..1 | positiveInt | Event occurs frequency times per period | |
![]() ![]() ![]() ![]() |
0..1 | positiveInt | Event occurs up to frequencyMax times per period | |
![]() ![]() ![]() ![]() |
0..1 | decimal | Event occurs frequency times per period | |
![]() ![]() ![]() ![]() |
0..1 | decimal | Upper limit of period (3-4 hours) | |
![]() ![]() ![]() ![]() |
0..1 | code | s | min | h | d | wk | mo | a - unit of time (UCUM) Binding: UnitsOfTime (required): A unit of time (units from UCUM). | |
![]() ![]() ![]() ![]() |
0..* | code | mon | tue | wed | thu | fri | sat | sun Binding: DaysOfWeek (required) | |
![]() ![]() ![]() ![]() |
0..* | time | Time of day for action | |
![]() ![]() ![]() ![]() |
0..* | code | Code for time period of occurrence Binding: EventTiming (required): Real world event relating to the schedule. | |
![]() ![]() ![]() ![]() |
0..1 | unsignedInt | Minutes from event (before or after) | |
![]() ![]() ![]() |
0..1 | CodeableConcept | BID | TID | QID | AM | PM | QD | QOD | + Binding: TimingAbbreviation (preferred): Code for a known / defined timing pattern. | |
![]() ![]() |
0..1 | 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. | ||
![]() ![]() ![]() |
boolean | |||
![]() ![]() ![]() |
CodeableConcept | |||
![]() ![]() |
0..1 | CodeableConcept | Body site to administer to Binding: SNOMEDCTAnatomicalStructureForAdministrationSiteCodes (example): A coded concept describing the site location the medicine enters into or onto the body. | |
![]() ![]() |
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. | |
![]() ![]() |
0..1 | CodeableConcept | Technique for administering medication Binding: SNOMEDCTAdministrationMethodCodes (example): A coded concept describing the technique by which the medicine is administered. | |
![]() ![]() |
C | 0..* | Element | Amount of medication administered Constraints: haau3-sig-2 |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..1 | CodeableConcept | The kind of dose or rate specified Binding: DoseAndRateType (example): The kind of dose or rate specified. | |
![]() ![]() ![]() |
0..1 | Amount of medication per dose | ||
![]() ![]() ![]() ![]() |
Range | |||
![]() ![]() ![]() ![]() |
Quantity(SimpleQuantity) | |||
![]() ![]() ![]() |
0..1 | Amount of medication per unit of time | ||
![]() ![]() ![]() ![]() |
Ratio | |||
![]() ![]() ![]() ![]() |
Range | |||
![]() ![]() ![]() ![]() |
Quantity(SimpleQuantity) | |||
![]() ![]() |
0..1 | Ratio | Upper limit on medication per unit of time | |
![]() ![]() |
C | 0..1 | SimpleQuantity(4.0.1) | Upper limit on medication per administration Constraints: sqty-1 |
![]() ![]() |
C | 0..1 | SimpleQuantity(4.0.1) | Upper limit on medication per lifetime of the patient Constraints: sqty-1 |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Dosage.additionalInstruction | Base | example | SNOMED CT Additional Dosage Instructions | 📍4.0.1 | FHIR Std. |
| Dosage.timing.repeat.durationUnit | Base | required | UnitsOfTime | 📍4.0.1 | FHIR Std. |
| Dosage.timing.repeat.periodUnit | Base | required | UnitsOfTime | 📍4.0.1 | FHIR Std. |
| Dosage.timing.repeat.dayOfWeek | Base | required | DaysOfWeek | 📍4.0.1 | FHIR Std. |
| Dosage.timing.repeat.when | Base | required | EventTiming | 📍4.0.1 | FHIR Std. |
| Dosage.timing.code | Base | preferred | TimingAbbreviation | 📍4.0.1 | FHIR Std. |
| Dosage.asNeeded[x] | Base | example | SNOMED CT Medication As Needed Reason Codes | 📍4.0.1 | FHIR Std. |
| Dosage.site | Base | example | SNOMED CT Anatomical Structure for Administration Site Codes | 📍4.0.1 | FHIR Std. |
| Dosage.route | Base | example | SNOMED CT Route Codes | 📍4.0.1 | FHIR Std. |
| Dosage.method | Base | example | SNOMED CT Administration Method Codes | 📍4.0.1 | FHIR Std. |
| Dosage.doseAndRate.type | Base | example | DoseAndRateType | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| haau3-sig-2 | error | Dosage.doseAndRate | A dose's quantities are in UCUM or SNOMED CT, or carry no unit. |
(dose.ofType(Quantity) | dose.ofType(Range).low | dose.ofType(Range).high).all(system.empty() or system = 'http://unitsofmeasure.org' or system = 'http://snomed.info/sct')
|
| sqty-1 | error | Dosage.maxDosePerAdministration, Dosage.maxDosePerLifetime | The comparator is not used on a SimpleQuantity |
comparator.empty()
|
| tim-1 | error | Dosage.timing.repeat | if there's a duration, there needs to be duration units |
duration.empty() or durationUnit.exists()
|
| tim-2 | error | Dosage.timing.repeat | if there's a period, there needs to be period units |
period.empty() or periodUnit.exists()
|
| tim-4 | error | Dosage.timing.repeat | duration SHALL be a non-negative value |
duration.exists() implies duration >= 0
|
| tim-5 | error | Dosage.timing.repeat | period SHALL be a non-negative value |
period.exists() implies period >= 0
|
| tim-6 | error | Dosage.timing.repeat | If there's a periodMax, there must be a period |
periodMax.empty() or period.exists()
|
| tim-7 | error | Dosage.timing.repeat | If there's a durationMax, there must be a duration |
durationMax.empty() or duration.exists()
|
| tim-8 | error | Dosage.timing.repeat | If there's a countMax, there must be a count |
countMax.empty() or count.exists()
|
| tim-9 | error | Dosage.timing.repeat | If 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-10 | error | Dosage.timing.repeat | If there's a timeOfDay, there cannot be a when, or vice versa |
timeOfDay.empty() or when.empty()
|
This structure is derived from Dosage
Key Elements View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() |
|---|---|---|---|---|
![]() |
0..* | Dosage | How the medication is/was taken or should be taken | |
![]() ![]() |
2..* | Extension | Extension Slice: Unordered, Open by value:url Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them | |
![]() ![]() ![]() |
0..* | (Complex) | Something a person should check URL: https://haau3.com/fhir/StructureDefinition/structured-sig-review-flag | |
![]() ![]() ![]() |
1..1 | string | Structured Sig Engine Version URL: https://haau3.com/fhir/StructureDefinition/structured-sig-engine-version | |
![]() ![]() ![]() |
1..1 | string | Structured Sig Vocabulary Version URL: https://haau3.com/fhir/StructureDefinition/structured-sig-vocabulary-version | |
![]() ![]() ![]() |
0..1 | string | The RxNorm release the medication was looked up in, when it was URL: https://haau3.com/fhir/StructureDefinition/structured-sig-rxnorm-release | |
![]() ![]() |
0..* | Extension | Extensions that cannot be ignored even if unrecognized | |
![]() ![]() |
1..1 | string | The directions, exactly as sent | |
![]() ![]() |
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". | |
![]() ![]() |
0..1 | Timing | When medication should be administered | |
![]() ![]() ![]() |
0..* | Extension | Extensions that cannot be ignored even if unrecognized | |
![]() ![]() ![]() |
C | 0..1 | Element | When the event is to occur Constraints: tim-1, tim-2, tim-4, tim-5, tim-6, tim-7, tim-8, tim-9, tim-10 |
![]() ![]() ![]() |
0..1 | CodeableConcept | BID | TID | QID | AM | PM | QD | QOD | + Binding: TimingAbbreviation (preferred): Code for a known / defined timing pattern. | |
![]() ![]() |
0..1 | 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. | ||
![]() ![]() ![]() |
boolean | |||
![]() ![]() ![]() |
CodeableConcept | |||
![]() ![]() |
0..1 | CodeableConcept | Body site to administer to Binding: SNOMEDCTAnatomicalStructureForAdministrationSiteCodes (example): A coded concept describing the site location the medicine enters into or onto the body. | |
![]() ![]() |
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. | |
![]() ![]() |
0..1 | CodeableConcept | Technique for administering medication Binding: SNOMEDCTAdministrationMethodCodes (example): A coded concept describing the technique by which the medicine is administered. | |
![]() ![]() |
C | 0..* | Element | Amount of medication administered Constraints: haau3-sig-2 |
![]() ![]() ![]() |
0..1 | Amount of medication per dose | ||
![]() ![]() ![]() ![]() |
Range | |||
![]() ![]() ![]() ![]() |
Quantity(SimpleQuantity) | |||
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Dosage.additionalInstruction | Base | example | SNOMED CT Additional Dosage Instructions | 📍4.0.1 | FHIR Std. |
| Dosage.timing.code | Base | preferred | TimingAbbreviation | 📍4.0.1 | FHIR Std. |
| Dosage.asNeeded[x] | Base | example | SNOMED CT Medication As Needed Reason Codes | 📍4.0.1 | FHIR Std. |
| Dosage.site | Base | example | SNOMED CT Anatomical Structure for Administration Site Codes | 📍4.0.1 | FHIR Std. |
| Dosage.route | Base | example | SNOMED CT Route Codes | 📍4.0.1 | FHIR Std. |
| Dosage.method | Base | example | SNOMED CT Administration Method Codes | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| haau3-sig-2 | error | Dosage.doseAndRate | A dose's quantities are in UCUM or SNOMED CT, or carry no unit. |
(dose.ofType(Quantity) | dose.ofType(Range).low | dose.ofType(Range).high).all(system.empty() or system = 'http://unitsofmeasure.org' or system = 'http://snomed.info/sct')
|
| tim-1 | error | Dosage.timing.repeat | if there's a duration, there needs to be duration units |
duration.empty() or durationUnit.exists()
|
| tim-2 | error | Dosage.timing.repeat | if there's a period, there needs to be period units |
period.empty() or periodUnit.exists()
|
| tim-4 | error | Dosage.timing.repeat | duration SHALL be a non-negative value |
duration.exists() implies duration >= 0
|
| tim-5 | error | Dosage.timing.repeat | period SHALL be a non-negative value |
period.exists() implies period >= 0
|
| tim-6 | error | Dosage.timing.repeat | If there's a periodMax, there must be a period |
periodMax.empty() or period.exists()
|
| tim-7 | error | Dosage.timing.repeat | If there's a durationMax, there must be a duration |
durationMax.empty() or duration.exists()
|
| tim-8 | error | Dosage.timing.repeat | If there's a countMax, there must be a count |
countMax.empty() or count.exists()
|
| tim-9 | error | Dosage.timing.repeat | If 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-10 | error | Dosage.timing.repeat | If there's a timeOfDay, there cannot be a when, or vice versa |
timeOfDay.empty() or when.empty()
|
Differential View
This structure is derived from Dosage
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() |
|---|---|---|---|---|
![]() |
0..* | Dosage | How the medication is/was taken or should be taken | |
![]() ![]() |
2..* | Extension | Extension | |
![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() |
0..* | (Complex) | Something a person should check URL: https://haau3.com/fhir/StructureDefinition/structured-sig-review-flag | |
![]() ![]() ![]() |
1..1 | string | Structured Sig Engine Version URL: https://haau3.com/fhir/StructureDefinition/structured-sig-engine-version | |
![]() ![]() ![]() |
1..1 | string | Structured Sig Vocabulary Version URL: https://haau3.com/fhir/StructureDefinition/structured-sig-vocabulary-version | |
![]() ![]() ![]() |
0..1 | string | The RxNorm release the medication was looked up in, when it was URL: https://haau3.com/fhir/StructureDefinition/structured-sig-rxnorm-release | |
![]() ![]() |
1..1 | string | The directions, exactly as sent | |
![]() ![]() |
0..* | CodeableConcept | Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness" | |
![]() ![]() |
0..1 | Timing | When medication should be administered | |
![]() ![]() ![]() |
0..1 | Element | When the event is to occur | |
![]() ![]() ![]() |
0..1 | CodeableConcept | BID | TID | QID | AM | PM | QD | QOD | + | |
![]() ![]() |
0..1 | boolean, CodeableConcept | Take "as needed" (for x) | |
![]() ![]() |
0..1 | CodeableConcept | Body site to administer to | |
![]() ![]() |
0..1 | CodeableConcept | How drug should enter body | |
![]() ![]() |
0..1 | CodeableConcept | Technique for administering medication | |
![]() ![]() |
C | 0..* | Element | Amount of medication administered Constraints: haau3-sig-2 |
![]() ![]() ![]() |
0..1 | Range, SimpleQuantity(4.0.1) | Amount of medication per dose | |
Documentation for this format | ||||
| Id | Grade | Path(s) | Description | Expression |
| haau3-sig-2 | error | Dosage.doseAndRate | A dose's quantities are in UCUM or SNOMED CT, or carry no unit. |
(dose.ofType(Quantity) | dose.ofType(Range).low | dose.ofType(Range).high).all(system.empty() or system = 'http://unitsofmeasure.org' or system = 'http://snomed.info/sct')
|
Snapshot View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() |
|---|---|---|---|---|
![]() |
0..* | Dosage | How the medication is/was taken or should be taken | |
![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() |
2..* | Extension | Extension Slice: Unordered, Open by value:url Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them | |
![]() ![]() ![]() |
0..* | (Complex) | Something a person should check URL: https://haau3.com/fhir/StructureDefinition/structured-sig-review-flag | |
![]() ![]() ![]() |
1..1 | string | Structured Sig Engine Version URL: https://haau3.com/fhir/StructureDefinition/structured-sig-engine-version | |
![]() ![]() ![]() |
1..1 | string | Structured Sig Vocabulary Version URL: https://haau3.com/fhir/StructureDefinition/structured-sig-vocabulary-version | |
![]() ![]() ![]() |
0..1 | string | The RxNorm release the medication was looked up in, when it was URL: https://haau3.com/fhir/StructureDefinition/structured-sig-rxnorm-release | |
![]() ![]() |
0..* | Extension | Extensions that cannot be ignored even if unrecognized | |
![]() ![]() |
0..1 | integer | The order of the dosage instructions | |
![]() ![]() |
1..1 | string | The directions, exactly as sent | |
![]() ![]() |
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". | |
![]() ![]() |
0..1 | string | Patient or consumer oriented instructions | |
![]() ![]() |
0..1 | Timing | When medication should be administered | |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..* | Extension | Extensions that cannot be ignored even if unrecognized | |
![]() ![]() ![]() |
0..* | dateTime | When the event occurs | |
![]() ![]() ![]() |
C | 0..1 | Element | When the event is to occur Constraints: tim-1, tim-2, tim-4, tim-5, tim-6, tim-7, tim-8, tim-9, tim-10 |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() |
0..1 | Length/Range of lengths, or (Start and/or end) limits | ||
![]() ![]() ![]() ![]() ![]() |
Duration | |||
![]() ![]() ![]() ![]() ![]() |
Range | |||
![]() ![]() ![]() ![]() ![]() |
Period | |||
![]() ![]() ![]() ![]() |
0..1 | positiveInt | Number of times to repeat | |
![]() ![]() ![]() ![]() |
0..1 | positiveInt | Maximum number of times to repeat | |
![]() ![]() ![]() ![]() |
0..1 | decimal | How long when it happens | |
![]() ![]() ![]() ![]() |
0..1 | decimal | How long when it happens (Max) | |
![]() ![]() ![]() ![]() |
0..1 | code | s | min | h | d | wk | mo | a - unit of time (UCUM) Binding: UnitsOfTime (required): A unit of time (units from UCUM). | |
![]() ![]() ![]() ![]() |
0..1 | positiveInt | Event occurs frequency times per period | |
![]() ![]() ![]() ![]() |
0..1 | positiveInt | Event occurs up to frequencyMax times per period | |
![]() ![]() ![]() ![]() |
0..1 | decimal | Event occurs frequency times per period | |
![]() ![]() ![]() ![]() |
0..1 | decimal | Upper limit of period (3-4 hours) | |
![]() ![]() ![]() ![]() |
0..1 | code | s | min | h | d | wk | mo | a - unit of time (UCUM) Binding: UnitsOfTime (required): A unit of time (units from UCUM). | |
![]() ![]() ![]() ![]() |
0..* | code | mon | tue | wed | thu | fri | sat | sun Binding: DaysOfWeek (required) | |
![]() ![]() ![]() ![]() |
0..* | time | Time of day for action | |
![]() ![]() ![]() ![]() |
0..* | code | Code for time period of occurrence Binding: EventTiming (required): Real world event relating to the schedule. | |
![]() ![]() ![]() ![]() |
0..1 | unsignedInt | Minutes from event (before or after) | |
![]() ![]() ![]() |
0..1 | CodeableConcept | BID | TID | QID | AM | PM | QD | QOD | + Binding: TimingAbbreviation (preferred): Code for a known / defined timing pattern. | |
![]() ![]() |
0..1 | 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. | ||
![]() ![]() ![]() |
boolean | |||
![]() ![]() ![]() |
CodeableConcept | |||
![]() ![]() |
0..1 | CodeableConcept | Body site to administer to Binding: SNOMEDCTAnatomicalStructureForAdministrationSiteCodes (example): A coded concept describing the site location the medicine enters into or onto the body. | |
![]() ![]() |
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. | |
![]() ![]() |
0..1 | CodeableConcept | Technique for administering medication Binding: SNOMEDCTAdministrationMethodCodes (example): A coded concept describing the technique by which the medicine is administered. | |
![]() ![]() |
C | 0..* | Element | Amount of medication administered Constraints: haau3-sig-2 |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..1 | CodeableConcept | The kind of dose or rate specified Binding: DoseAndRateType (example): The kind of dose or rate specified. | |
![]() ![]() ![]() |
0..1 | Amount of medication per dose | ||
![]() ![]() ![]() ![]() |
Range | |||
![]() ![]() ![]() ![]() |
Quantity(SimpleQuantity) | |||
![]() ![]() ![]() |
0..1 | Amount of medication per unit of time | ||
![]() ![]() ![]() ![]() |
Ratio | |||
![]() ![]() ![]() ![]() |
Range | |||
![]() ![]() ![]() ![]() |
Quantity(SimpleQuantity) | |||
![]() ![]() |
0..1 | Ratio | Upper limit on medication per unit of time | |
![]() ![]() |
C | 0..1 | SimpleQuantity(4.0.1) | Upper limit on medication per administration Constraints: sqty-1 |
![]() ![]() |
C | 0..1 | SimpleQuantity(4.0.1) | Upper limit on medication per lifetime of the patient Constraints: sqty-1 |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Dosage.additionalInstruction | Base | example | SNOMED CT Additional Dosage Instructions | 📍4.0.1 | FHIR Std. |
| Dosage.timing.repeat.durationUnit | Base | required | UnitsOfTime | 📍4.0.1 | FHIR Std. |
| Dosage.timing.repeat.periodUnit | Base | required | UnitsOfTime | 📍4.0.1 | FHIR Std. |
| Dosage.timing.repeat.dayOfWeek | Base | required | DaysOfWeek | 📍4.0.1 | FHIR Std. |
| Dosage.timing.repeat.when | Base | required | EventTiming | 📍4.0.1 | FHIR Std. |
| Dosage.timing.code | Base | preferred | TimingAbbreviation | 📍4.0.1 | FHIR Std. |
| Dosage.asNeeded[x] | Base | example | SNOMED CT Medication As Needed Reason Codes | 📍4.0.1 | FHIR Std. |
| Dosage.site | Base | example | SNOMED CT Anatomical Structure for Administration Site Codes | 📍4.0.1 | FHIR Std. |
| Dosage.route | Base | example | SNOMED CT Route Codes | 📍4.0.1 | FHIR Std. |
| Dosage.method | Base | example | SNOMED CT Administration Method Codes | 📍4.0.1 | FHIR Std. |
| Dosage.doseAndRate.type | Base | example | DoseAndRateType | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
| haau3-sig-2 | error | Dosage.doseAndRate | A dose's quantities are in UCUM or SNOMED CT, or carry no unit. |
(dose.ofType(Quantity) | dose.ofType(Range).low | dose.ofType(Range).high).all(system.empty() or system = 'http://unitsofmeasure.org' or system = 'http://snomed.info/sct')
|
| sqty-1 | error | Dosage.maxDosePerAdministration, Dosage.maxDosePerLifetime | The comparator is not used on a SimpleQuantity |
comparator.empty()
|
| tim-1 | error | Dosage.timing.repeat | if there's a duration, there needs to be duration units |
duration.empty() or durationUnit.exists()
|
| tim-2 | error | Dosage.timing.repeat | if there's a period, there needs to be period units |
period.empty() or periodUnit.exists()
|
| tim-4 | error | Dosage.timing.repeat | duration SHALL be a non-negative value |
duration.exists() implies duration >= 0
|
| tim-5 | error | Dosage.timing.repeat | period SHALL be a non-negative value |
period.exists() implies period >= 0
|
| tim-6 | error | Dosage.timing.repeat | If there's a periodMax, there must be a period |
periodMax.empty() or period.exists()
|
| tim-7 | error | Dosage.timing.repeat | If there's a durationMax, there must be a duration |
durationMax.empty() or duration.exists()
|
| tim-8 | error | Dosage.timing.repeat | If there's a countMax, there must be a count |
countMax.empty() or count.exists()
|
| tim-9 | error | Dosage.timing.repeat | If 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-10 | error | Dosage.timing.repeat | If there's a timeOfDay, there cannot be a when, or vice versa |
timeOfDay.empty() or when.empty()
|
This structure is derived from Dosage
Other representations of profile: CSV, Excel, Schematron