Finnish Base Profiles
2.0.0 - release

Finnish Base Profiles, published by HL7 Finland. This guide is not an authorized publication; it is the continuous build for version 2.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/fhir-fi/finnish-base-profiles/ and changes regularly. See the Directory of published versions

## 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

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
--- | --- | --- | --- | ---
Medication |  | 0..* | Medication | Definition of a Medication
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
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
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Medication.status | Base | required | Medication status codes | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
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 |  | 0..* | Medication | Definition of a 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 This profile does not constrain the narrative in regard to content, language, or traceability to data elements
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 | Status | Usage | ValueSet | Version | Source
Medication.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std.
Medication.code | Base | example | SNOMED CT Medication Codes | 📍4.0.1 | FHIR Std.
Medication.status | Base | required | Medication status codes | 📍4.0.1 | FHIR Std.
Medication.form | Base | example | SNOMED CT Form Codes | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
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
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
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
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Medication.status | Base | required | Medication status codes | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
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 |  | 0..* | Medication | Definition of a 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 This profile does not constrain the narrative in regard to content, language, or traceability to data elements
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 | Status | Usage | ValueSet | Version | Source
Medication.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std.
Medication.code | Base | example | SNOMED CT Medication Codes | 📍4.0.1 | FHIR Std.
Medication.status | Base | required | Medication status codes | 📍4.0.1 | FHIR Std.
Medication.form | Base | example | SNOMED CT Form Codes | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
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