Implementation Guide
ePA Medication Service
Version 1.3.0 - release

## Data Type Profile: Medication Unique Identifier

Official URL: https://gematik.de/fhir/epa-medication/StructureDefinition/epa-medication-unique-identifier | Version: 1.0.6-2
Active as of 2025-05-12 | Computable Name: EPAMedicationUniqueIdentifier
Copyright/Legal: gematik GmbH / Dieses Artefakt ist lizenziert unter Apache License, Version 2.0.

This unique identifier is generated within the Medication Service. It is either a hash derived from a specific set of data elements of the Medication resource or a direct repetition of a single data element. This identifier ensures the distinct identification of Medication resources across the ePA system.

Usages:

- Use this DataType Profile: EPA Pharmaceutical Product Medication, EPA Medication PZN Ingredient and EPA Medication

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
--- | --- | --- | --- | ---
Identifier |  | 0..* | Identifier | An identifier intended for computation
use | ?!Σ | 0..1 | code | usual | official | temp | secondary | old (If known) Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .
system | S Σ | 1..1 | uri | The namespace for the identifier value Required Pattern: https://gematik.de/fhir/epa-medication/sid/epa-medication-unique-identifier
value | S Σ | 1..1 | string | The value that is unique Example General: 123456
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Identifier.use | Base | required | IdentifierUse | 📍4.0.1 | FHIR Std.

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

This structure is derived from Identifier

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Identifier |  |  | Identifier |
system | S | 1..1 | uri | The namespace for the identifier value Required Pattern: https://gematik.de/fhir/epa-medication/sid/epa-medication-unique-identifier
value | S | 1..1 | string | The value that is unique
Documentation for this format

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Identifier |  | 0..* | Identifier | An identifier intended for computation
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
use | ?!Σ | 0..1 | code | usual | official | temp | secondary | old (If known) Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .
type | Σ | 0..1 | CodeableConcept | Description of identifier Binding: Identifier Type Codes (extensible): A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.
system | S Σ | 1..1 | uri | The namespace for the identifier value Required Pattern: https://gematik.de/fhir/epa-medication/sid/epa-medication-unique-identifier
value | S Σ | 1..1 | string | The value that is unique Example General: 123456
period | Σ C | 0..1 | Period | Time period when id is/was valid for use Constraints: per-1
assigner | Σ C | 0..1 | Reference(Organization) | Organization that issued id (may be just text) Constraints: ref-1
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Identifier.use | Base | required | IdentifierUse | 📍4.0.1 | FHIR Std.
Identifier.type | Base | extensible | IdentifierType | 📍4.0.1 | FHIR Std.

#### 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()`
per-1 | error | Identifier.period | If present, start SHALL have a lower value than end | `start.hasValue().not() or end.hasValue().not() or (start <= end)`
ref-1 | error | Identifier.assigner | SHALL have a contained resource if a local reference is provided | `reference.startsWith('#').not() or (reference.substring(1).trace('url') in %rootResource.contained.id.trace('ids'))`

This structure is derived from Identifier

Summary

Mandatory: 2 elements
Must-Support: 2 elements

Key Elements View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Identifier |  | 0..* | Identifier | An identifier intended for computation
use | ?!Σ | 0..1 | code | usual | official | temp | secondary | old (If known) Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .
system | S Σ | 1..1 | uri | The namespace for the identifier value Required Pattern: https://gematik.de/fhir/epa-medication/sid/epa-medication-unique-identifier
value | S Σ | 1..1 | string | The value that is unique Example General: 123456
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Identifier.use | Base | required | IdentifierUse | 📍4.0.1 | FHIR Std.

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

Differential View

This structure is derived from Identifier

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Identifier |  |  | Identifier |
system | S | 1..1 | uri | The namespace for the identifier value Required Pattern: https://gematik.de/fhir/epa-medication/sid/epa-medication-unique-identifier
value | S | 1..1 | string | The value that is unique
Documentation for this format

Snapshot View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Identifier |  | 0..* | Identifier | An identifier intended for computation
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
use | ?!Σ | 0..1 | code | usual | official | temp | secondary | old (If known) Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .
type | Σ | 0..1 | CodeableConcept | Description of identifier Binding: Identifier Type Codes (extensible): A coded type for an identifier that can be used to determine which identifier to use for a specific purpose.
system | S Σ | 1..1 | uri | The namespace for the identifier value Required Pattern: https://gematik.de/fhir/epa-medication/sid/epa-medication-unique-identifier
value | S Σ | 1..1 | string | The value that is unique Example General: 123456
period | Σ C | 0..1 | Period | Time period when id is/was valid for use Constraints: per-1
assigner | Σ C | 0..1 | Reference(Organization) | Organization that issued id (may be just text) Constraints: ref-1
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Identifier.use | Base | required | IdentifierUse | 📍4.0.1 | FHIR Std.
Identifier.type | Base | extensible | IdentifierType | 📍4.0.1 | FHIR Std.

#### 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()`
per-1 | error | Identifier.period | If present, start SHALL have a lower value than end | `start.hasValue().not() or end.hasValue().not() or (start <= end)`
ref-1 | error | Identifier.assigner | SHALL have a contained resource if a local reference is provided | `reference.startsWith('#').not() or (reference.substring(1).trace('url') in %rootResource.contained.id.trace('ids'))`

This structure is derived from Identifier

Summary

Mandatory: 2 elements
Must-Support: 2 elements

Other representations of profile: CSV, Excel, Schematron