Finnish Base Profiles
2.0.0 - release

Publication Build: This will be filled in by the publication tooling

## Resource Profile: FI Base Medication

Official URL: https://hl7.fi/fhir/finnish-base-profiles/StructureDefinition/fi-base-medication | Version: 2.0.0
Active as of 2025-10-05 | Computable Name: FiBaseMedication

This is the Finnish base profile for the Medication resource for other than patient access use cases.

### Scope and Usage

The FI Base Medication profile requires that references from the Medication resource to other resources are to resources that also conform to the Finnish Base Profiles.

This profile can be used to ensure greater compatibility, but it should not be expected that all Medications within the Finnish healthcare IT ecosystem conform to this profile.

This implementation guide does present examples of the Medication resource being used in Finnish context.

For patient access use cases, please see the FI SMART Medication profile of the Finnish SMART implementation guide.

See also the Medication Codes section on the terminology page of this guide, and the Medications Module of the main FHIR specification.

For all medication related resources (Medication, MedicationAdministration, MedicationRequest, MedicationStatement), please also see the Prescription project and the related implementation guide of the Kanta system. That project contains useful definitions, examples, and sequence descriptions (mostly in Finnish).

Usages:

- Refer to this Profile: FI Base MedicationAdministration, FI Base MedicationRequest, FI Base MedicationStatement, FI Base Medication... Show 4 more, Fi Base Procedure, FI Base MedicationRequest, FI Base Medication and Fi Base Procedure

### 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
--- | --- | --- | --- | ---
Medication |  | 0..* | Medication | Definition of a Medication dom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources dom-3: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated dom-5: If a resource is contained in another resource, it SHALL NOT have a security label dom-6: A resource should have narrative for robust management
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created ele-1: All FHIR elements must have a @value or children
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored ele-1: All FHIR elements must have a @value or children ext-1: Must have either extensions or value[x], not both
status | ?!Σ | 0..1 | code | active | inactive | entered-in-error Binding: Medication Status Codes (required): A coded concept defining if the medication is in active use. ele-1: All FHIR elements must have a @value or children
manufacturer | Σ | 0..1 | Reference(FI Base Organization(2.0.0)) | Manufacturer of the item ele-1: All FHIR elements must have a @value or children
Documentation for this format

#### Terminology Bindings

Path | Conformance | ValueSet | URI
Medication.status | required | Medication Status Codes `http://hl7.org/fhir/ValueSet/medication-status|4.0.1` From the FHIR Standard

#### Constraints

Id | Grade | Path(s) | Details | Requirements
dom-2 | error | Medication | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() |
dom-3 | error | Medication | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() |
dom-4 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() |
dom-5 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() |
dom-6 | best practice | Medication | A resource should have narrative for robust management : text.`div`.exists() |
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 Medication

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Medication |  |  | Medication |
manufacturer |  | 0..1 | Reference(FI Base Organization(2.0.0)) | Manufacturer of the item
ingredient |  |  |  |
Slices for item[x] |  | 1..1 | CodeableConcept, Reference(Substance | Medication) | The actual ingredient or content Slice: Unordered, Open by type:$this
item[x]:itemReference |  | 0..1 | Reference(Substance | FI Base Medication(2.0.0)) | The actual ingredient or content
Documentation for this format

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Medication |  | 0..* | Medication | Definition of a Medication
id | Σ | 0..1 | id | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation
contained |  | 0..* | Resource | Contained, inline Resources
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | Σ | 0..* | Identifier | Business identifier for this medication
code | Σ | 0..1 | CodeableConcept | Codes that identify this medication Binding: SNOMEDCTMedicationCodes (example): A coded concept that defines the type of a medication.
status | ?!Σ | 0..1 | code | active | inactive | entered-in-error Binding: Medication Status Codes (required): A coded concept defining if the medication is in active use.
manufacturer | Σ | 0..1 | Reference(FI Base Organization(2.0.0)) | Manufacturer of the item
form |  | 0..1 | CodeableConcept | powder | tablets | capsule + Binding: SNOMEDCTFormCodes (example): A coded concept defining the form of a medication.
amount | Σ | 0..1 | Ratio | Amount of drug in package
ingredient |  | 0..* | BackboneElement | Active or inactive ingredient
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
Slices for item[x] |  | 1..1 |  | The actual ingredient or content Slice: Unordered, Open by type:$this
itemCodeableConcept |  |  | CodeableConcept |
itemReference |  |  | Reference(Substance | Medication) |
item[x]:itemReference |  | 0..1 | Reference(Substance | FI Base Medication(2.0.0)) | The actual ingredient or content
isActive |  | 0..1 | boolean | Active ingredient indicator
strength |  | 0..1 | Ratio | Quantity of ingredient present
batch |  | 0..1 | BackboneElement | Details about packaged medications
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
lotNumber |  | 0..1 | string | Identifier assigned to batch
expirationDate |  | 0..1 | dateTime | When batch will expire
Documentation for this format

#### Terminology Bindings

Path | Conformance | ValueSet | URI
Medication.language | preferred | CommonLanguages `http://hl7.org/fhir/ValueSet/languages` From the FHIR Standard
Additional Bindings | Purpose
AllLanguages | Max Binding
Medication.code | example | SNOMEDCTMedicationCodes `http://hl7.org/fhir/ValueSet/medication-codes` From the FHIR Standard
Medication.status | required | Medication Status Codes `http://hl7.org/fhir/ValueSet/medication-status|4.0.1` From the FHIR Standard
Medication.form | example | SNOMEDCTFormCodes `http://hl7.org/fhir/ValueSet/medication-form-codes` From the FHIR Standard

#### Constraints

Id | Grade | Path(s) | Details | Requirements
dom-2 | error | Medication | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() |
dom-3 | error | Medication | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() |
dom-4 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() |
dom-5 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() |
dom-6 | best practice | Medication | A resource should have narrative for robust management : text.`div`.exists() |
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 Medication

Summary

Structures

This structure refers to these other structures:

- FI Base Organization (https://hl7.fi/fhir/finnish-base-profiles/StructureDefinition/fi-base-organization)
- FI Base Medication (https://hl7.fi/fhir/finnish-base-profiles/StructureDefinition/fi-base-medication)

Slices

This structure defines the following Slices:

- The element 1 is sliced based on the value of Medication.ingredient.item[x]

Key Elements View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Medication |  | 0..* | Medication | Definition of a Medication dom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources dom-3: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated dom-5: If a resource is contained in another resource, it SHALL NOT have a security label dom-6: A resource should have narrative for robust management
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created ele-1: All FHIR elements must have a @value or children
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored ele-1: All FHIR elements must have a @value or children ext-1: Must have either extensions or value[x], not both
status | ?!Σ | 0..1 | code | active | inactive | entered-in-error Binding: Medication Status Codes (required): A coded concept defining if the medication is in active use. ele-1: All FHIR elements must have a @value or children
manufacturer | Σ | 0..1 | Reference(FI Base Organization(2.0.0)) | Manufacturer of the item ele-1: All FHIR elements must have a @value or children
Documentation for this format

#### Terminology Bindings

Path | Conformance | ValueSet | URI
Medication.status | required | Medication Status Codes `http://hl7.org/fhir/ValueSet/medication-status|4.0.1` From the FHIR Standard

#### Constraints

Id | Grade | Path(s) | Details | Requirements
dom-2 | error | Medication | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() |
dom-3 | error | Medication | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() |
dom-4 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() |
dom-5 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() |
dom-6 | best practice | Medication | A resource should have narrative for robust management : text.`div`.exists() |
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 Medication

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Medication |  |  | Medication |
manufacturer |  | 0..1 | Reference(FI Base Organization(2.0.0)) | Manufacturer of the item
ingredient |  |  |  |
Slices for item[x] |  | 1..1 | CodeableConcept, Reference(Substance | Medication) | The actual ingredient or content Slice: Unordered, Open by type:$this
item[x]:itemReference |  | 0..1 | Reference(Substance | FI Base Medication(2.0.0)) | The actual ingredient or content
Documentation for this format

Snapshot View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Medication |  | 0..* | Medication | Definition of a Medication
id | Σ | 0..1 | id | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation
contained |  | 0..* | Resource | Contained, inline Resources
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | Σ | 0..* | Identifier | Business identifier for this medication
code | Σ | 0..1 | CodeableConcept | Codes that identify this medication Binding: SNOMEDCTMedicationCodes (example): A coded concept that defines the type of a medication.
status | ?!Σ | 0..1 | code | active | inactive | entered-in-error Binding: Medication Status Codes (required): A coded concept defining if the medication is in active use.
manufacturer | Σ | 0..1 | Reference(FI Base Organization(2.0.0)) | Manufacturer of the item
form |  | 0..1 | CodeableConcept | powder | tablets | capsule + Binding: SNOMEDCTFormCodes (example): A coded concept defining the form of a medication.
amount | Σ | 0..1 | Ratio | Amount of drug in package
ingredient |  | 0..* | BackboneElement | Active or inactive ingredient
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
Slices for item[x] |  | 1..1 |  | The actual ingredient or content Slice: Unordered, Open by type:$this
itemCodeableConcept |  |  | CodeableConcept |
itemReference |  |  | Reference(Substance | Medication) |
item[x]:itemReference |  | 0..1 | Reference(Substance | FI Base Medication(2.0.0)) | The actual ingredient or content
isActive |  | 0..1 | boolean | Active ingredient indicator
strength |  | 0..1 | Ratio | Quantity of ingredient present
batch |  | 0..1 | BackboneElement | Details about packaged medications
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
lotNumber |  | 0..1 | string | Identifier assigned to batch
expirationDate |  | 0..1 | dateTime | When batch will expire
Documentation for this format

#### Terminology Bindings

Path | Conformance | ValueSet | URI
Medication.language | preferred | CommonLanguages `http://hl7.org/fhir/ValueSet/languages` From the FHIR Standard
Additional Bindings | Purpose
AllLanguages | Max Binding
Medication.code | example | SNOMEDCTMedicationCodes `http://hl7.org/fhir/ValueSet/medication-codes` From the FHIR Standard
Medication.status | required | Medication Status Codes `http://hl7.org/fhir/ValueSet/medication-status|4.0.1` From the FHIR Standard
Medication.form | example | SNOMEDCTFormCodes `http://hl7.org/fhir/ValueSet/medication-form-codes` From the FHIR Standard

#### Constraints

Id | Grade | Path(s) | Details | Requirements
dom-2 | error | Medication | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() |
dom-3 | error | Medication | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty() |
dom-4 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() |
dom-5 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty() |
dom-6 | best practice | Medication | A resource should have narrative for robust management : text.`div`.exists() |
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 Medication

Summary

Structures

This structure refers to these other structures:

- FI Base Organization (https://hl7.fi/fhir/finnish-base-profiles/StructureDefinition/fi-base-organization)
- FI Base Medication (https://hl7.fi/fhir/finnish-base-profiles/StructureDefinition/fi-base-medication)

Slices

This structure defines the following Slices:

- The element 1 is sliced based on the value of Medication.ingredient.item[x]

Other representations of profile: CSV, Excel, Schematron