HL7® FHIR® Te Aho o Te Kahu, Cancer Control Agency Implementation Guide
0.1.0 - CI Build

HL7® FHIR® Te Aho o Te Kahu, Cancer Control Agency Implementation Guide, published by Te Aho o Te Kahu, Cancer Control Agency. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7NZ/cca/ and changes regularly. See the Directory of published versions

## Data Type Profile: Dosage

Official URL: http://hl7.org.nz/fhir/StructureDefinition/CcaDosage | Version: 0.1.0
Active as of 2026-05-21 | Computable Name: CcaDosage

CCA Regimen Dosage.

Usages:

- This DataType Profile is not used by any profiles in this Implementation Guide

You can also check for usages in the FHIR IG Statistics

### Formal Views of Profile Content

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

- Key Elements Table
- Differential Table
- Snapshot Table
- Statistics/References
- All

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Dosage |  | 0..* | Dosage | How the medication is/was taken or should be taken
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
route | Σ | 0..1 | CodeableConcept | How drug should enter body Binding: Route (required)
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Dosage.route | Base | required | Route | 📦0.1.0 | This IG

#### Constraints

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()`

This structure is derived from Dosage

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Dosage |  | 0..* | Dosage | How the medication is/was taken or should be taken
additionalInstruction |  | 0..0 |  | Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
patientInstruction |  | 0..0 |  | Patient or consumer oriented instructions
timing |  |  |  |
code |  | 0..1 | CodeableConcept | BID | TID | QID | AM | PM | QD | QOD | + Binding: Medication dose administration frequency (required)
site |  | 0..0 |  | Body site to administer to
route |  | 0..1 | CodeableConcept | How drug should enter body Binding: Route (required)
method |  | 0..0 |  | Technique for administering medication
doseAndRate |  |  |  |
type |  | 0..0 |  | The kind of dose or rate specified
maxDosePerPeriod |  | 0..0 |  | Upper limit on medication per unit of time
maxDosePerLifetime |  | 0..0 |  | Upper limit on medication per lifetime of the patient
Documentation for this format

#### Terminology Bindings (Differential)

Path | Status | Usage | ValueSet | Version | Source
Dosage.timing.code | Base | required | Medication dose administration frequency | 📦0.1.0 | This IG
Dosage.route | Base | required | Route | 📦0.1.0 | This IG

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Dosage |  | 0..* | Dosage | How the medication is/was taken or should be taken
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
sequence | Σ | 0..1 | integer | The order of the dosage instructions
text | Σ | 0..1 | string | Free text dosage instructions e.g. SIG
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 Constraints: tim-1, tim-2, tim-4, tim-5, tim-6, tim-7, tim-8, tim-9, tim-10
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
boundsDuration |  |  | Duration |
boundsRange |  |  | Range |
boundsPeriod |  |  | Period |
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 | Σ | 0..1 | positiveInt | Event occurs frequency times per period
frequencyMax | Σ | 0..1 | positiveInt | Event occurs up to frequencyMax times per period
period | Σ | 0..1 | decimal | Event occurs frequency times per period
periodMax | Σ | 0..1 | decimal | Upper limit of period (3-4 hours)
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).
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: Medication dose administration frequency (required)
asNeeded[x] | Σ | 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.
asNeededBoolean |  |  | boolean |
asNeededCodeableConcept |  |  | CodeableConcept |
route | Σ | 0..1 | CodeableConcept | How drug should enter body Binding: Route (required)
doseAndRate | Σ | 0..* | 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
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) |
maxDosePerAdministration | Σ | 0..1 | SimpleQuantity(4.0.1) | Upper limit on medication per administration
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
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 | required | Medication dose administration frequency | 📦0.1.0 | This IG
Dosage.asNeeded[x] | Base | example | SNOMED CT Medication As Needed Reason Codes | 📍4.0.1 | FHIR Std.
Dosage.route | Base | required | Route | 📦0.1.0 | This IG

#### Constraints

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()`
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

Summary

Prohibited: 7 elements

Key Elements View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Dosage |  | 0..* | Dosage | How the medication is/was taken or should be taken
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
route | Σ | 0..1 | CodeableConcept | How drug should enter body Binding: Route (required)
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Dosage.route | Base | required | Route | 📦0.1.0 | This IG

#### Constraints

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()`

Differential View

This structure is derived from Dosage

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Dosage |  | 0..* | Dosage | How the medication is/was taken or should be taken
additionalInstruction |  | 0..0 |  | Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
patientInstruction |  | 0..0 |  | Patient or consumer oriented instructions
timing |  |  |  |
code |  | 0..1 | CodeableConcept | BID | TID | QID | AM | PM | QD | QOD | + Binding: Medication dose administration frequency (required)
site |  | 0..0 |  | Body site to administer to
route |  | 0..1 | CodeableConcept | How drug should enter body Binding: Route (required)
method |  | 0..0 |  | Technique for administering medication
doseAndRate |  |  |  |
type |  | 0..0 |  | The kind of dose or rate specified
maxDosePerPeriod |  | 0..0 |  | Upper limit on medication per unit of time
maxDosePerLifetime |  | 0..0 |  | Upper limit on medication per lifetime of the patient
Documentation for this format

#### Terminology Bindings (Differential)

Path | Status | Usage | ValueSet | Version | Source
Dosage.timing.code | Base | required | Medication dose administration frequency | 📦0.1.0 | This IG
Dosage.route | Base | required | Route | 📦0.1.0 | This IG

Snapshot View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Dosage |  | 0..* | Dosage | How the medication is/was taken or should be taken
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
sequence | Σ | 0..1 | integer | The order of the dosage instructions
text | Σ | 0..1 | string | Free text dosage instructions e.g. SIG
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 Constraints: tim-1, tim-2, tim-4, tim-5, tim-6, tim-7, tim-8, tim-9, tim-10
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
boundsDuration |  |  | Duration |
boundsRange |  |  | Range |
boundsPeriod |  |  | Period |
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 | Σ | 0..1 | positiveInt | Event occurs frequency times per period
frequencyMax | Σ | 0..1 | positiveInt | Event occurs up to frequencyMax times per period
period | Σ | 0..1 | decimal | Event occurs frequency times per period
periodMax | Σ | 0..1 | decimal | Upper limit of period (3-4 hours)
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).
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: Medication dose administration frequency (required)
asNeeded[x] | Σ | 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.
asNeededBoolean |  |  | boolean |
asNeededCodeableConcept |  |  | CodeableConcept |
route | Σ | 0..1 | CodeableConcept | How drug should enter body Binding: Route (required)
doseAndRate | Σ | 0..* | 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
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) |
maxDosePerAdministration | Σ | 0..1 | SimpleQuantity(4.0.1) | Upper limit on medication per administration
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
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 | required | Medication dose administration frequency | 📦0.1.0 | This IG
Dosage.asNeeded[x] | Base | example | SNOMED CT Medication As Needed Reason Codes | 📍4.0.1 | FHIR Std.
Dosage.route | Base | required | Route | 📦0.1.0 | This IG

#### Constraints

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()`
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

Summary

Prohibited: 7 elements

Other representations of profile: CSV, Excel, Schematron