EMA Write PMS API Implementation Guide - Enrichments
1.2.1 - ci-build
EMA Write PMS API Implementation Guide - Enrichments - Local Development build (v1.2.1) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
| Official URL: http://ema.europa.eu/fhir/StructureDefinition/emaWriteApiPackagedProductDefinitionRestrictions | Version: 1.2.1 | |||
| Draft as of 2026-06-26 | Computable Name: EmaWriteApiPackagedProductDefinitionRestrictions | |||
Defines the restrictive rules a PackagedProductDefinition resource instance must conform to when belonging to a FHIR bundle representing a Human Variation Application
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..* | PackagedProductDefinition | A medically related item or items, in a container or package | |
![]() ![]() |
?!Σ | 0..1 | CodeableConcept | The status within the lifecycle of this item. High level - not intended to duplicate details elsewhere e.g. legal status, or authorization/marketing status Binding: PublicationStatus (preferred): The lifecycle status of an artifact. |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| PackagedProductDefinition.status | Base | preferred | PublicationStatus | 📍5.0.0 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | PackagedProductDefinition | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | PackagedProductDefinition | 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().ofType(canonical) | %resource.descendants().ofType(uri) | %resource.descendants().ofType(url))) or descendants().where(reference = '#').exists() or descendants().where(ofType(canonical) = '#').exists() or descendants().where(ofType(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
|
| dom-4 | error | PackagedProductDefinition | 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 | PackagedProductDefinition | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | PackagedProductDefinition | 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())
|
This structure is derived from PackagedProductDefinition
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
PackagedProductDefinition | |||
![]() ![]() |
0..0 | Metadata about the resource | ||
![]() ![]() |
0..0 | A set of rules under which this content was created | ||
![]() ![]() |
0..0 | Language of the resource content | ||
![]() ![]() |
0..0 | Text summary of the resource, for human interpretation | ||
![]() ![]() |
0..0 | Contained, inline Resources | ||
![]() ![]() |
0..0 | Extension | ||
![]() ![]() |
0..0 | Extension | ||
![]() ![]() |
0..0 | A name for this package. Typically as listed in a drug formulary, catalogue, inventory etc | ||
![]() ![]() |
0..0 | A high level category e.g. medicinal product, raw material, shipping container etc | ||
![]() ![]() |
0..0 | The date at which the given status became applicable | ||
![]() ![]() |
0..0 | Identifies if the drug product is supplied with another item such as a diluent or adjuvant | ||
![]() ![]() |
0..0 | Additional information or supporting documentation about the packaged product | ||
![]() ![]() |
0..0 | Allows the key features to be recorded, such as "hospital pack", "nurse prescribable" | ||
Documentation for this format | ||||
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | PackagedProductDefinition | A medically related item or items, in a container or package | |
![]() ![]() |
Σ | 0..1 | id | Logical id of this artifact |
![]() ![]() |
Σ | 0..* | Identifier | A unique identifier for this package as whole - not for the content of the package |
![]() ![]() |
Σ | 0..* | Reference(MedicinalProductDefinition) | The product that this is a pack for |
![]() ![]() |
?!Σ | 0..1 | CodeableConcept | The status within the lifecycle of this item. High level - not intended to duplicate details elsewhere e.g. legal status, or authorization/marketing status Binding: PublicationStatus (preferred): The lifecycle status of an artifact. |
![]() ![]() |
Σ | 0..* | Quantity | A total of the complete count of contained items of a particular type/form, independent of sub-packaging or organization. This can be considered as the pack size. See also packaging.containedItem.amount (especially the long definition) |
![]() ![]() |
Σ | 0..1 | markdown | Textual description. Note that this is not the name of the package or product |
![]() ![]() |
Σ | 0..* | BackboneElement | The legal status of supply of the packaged item as classified by the regulator |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() |
Σ | 0..1 | CodeableConcept | The actual status of supply. In what situation this package type may be supplied for use Binding: LegalStatusOfSupply (example): The prescription supply types appropriate to a medicinal product |
![]() ![]() ![]() |
Σ | 0..1 | CodeableConcept | The place where the legal status of supply applies Binding: JurisdictionValueSet (example): Jurisdiction codes |
![]() ![]() |
Σ | 0..* | MarketingStatus | Allows specifying that an item is on the market for sale, or that it is not available, and the dates and locations associated |
![]() ![]() |
Σ | 0..* | Reference(Organization) | Manufacturer of this package type (multiple means these are all possible manufacturers) |
![]() ![]() |
Σ | 0..1 | BackboneElement | A packaging item, as a container for medically related items, possibly with other packaging items within, or a packaging component, such as bottle cap |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() |
Σ | 0..* | Identifier | An identifier that is specific to this particular part of the packaging. Including possibly a Data Carrier Identifier |
![]() ![]() ![]() |
Σ | 0..1 | CodeableConcept | The physical type of the container of the items Binding: PackagingType (example): A high level categorisation of a package. |
![]() ![]() ![]() |
Σ | 0..1 | boolean | Is this a part of the packaging (e.g. a cap or bottle stopper), rather than the packaging itself (e.g. a bottle or vial) |
![]() ![]() ![]() |
Σ | 0..1 | integer | The quantity of this level of packaging in the package that contains it (with the outermost level being 1) |
![]() ![]() ![]() |
Σ | 0..* | CodeableConcept | Material type of the package item Binding: PackageMaterial (example): A material used in the construction of packages and their components. |
![]() ![]() ![]() |
Σ | 0..* | CodeableConcept | A possible alternate material for this part of the packaging, that is allowed to be used instead of the usual material Binding: PackageMaterial (example): A material used in the construction of packages and their components. |
![]() ![]() ![]() |
Σ | 0..* | ProductShelfLife | Shelf Life and storage information |
![]() ![]() ![]() |
Σ | 0..* | Reference(Organization) | Manufacturer of this packaging item (multiple means these are all potential manufacturers) |
![]() ![]() ![]() |
Σ | 0..* | BackboneElement | General characteristics of this item |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() ![]() |
Σ | 1..1 | CodeableConcept | A code expressing the type of characteristic Binding: ProductCharacteristic (example): This value set includes all observable entity codes from SNOMED CT - provided as an exemplar value set. |
![]() ![]() ![]() ![]() |
Σ | 0..1 | A value for the characteristic | |
![]() ![]() ![]() ![]() ![]() |
CodeableConcept | |||
![]() ![]() ![]() ![]() ![]() |
Quantity | |||
![]() ![]() ![]() ![]() ![]() |
date | |||
![]() ![]() ![]() ![]() ![]() |
boolean | |||
![]() ![]() ![]() ![]() ![]() |
Attachment | |||
![]() ![]() ![]() |
Σ | 0..* | BackboneElement | The item(s) within the packaging |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() ![]() |
Σ | 1..1 | CodeableReference(ManufacturedItemDefinition | DeviceDefinition | PackagedProductDefinition | BiologicallyDerivedProduct | NutritionProduct) | The actual item(s) of medication, as manufactured, or a device, or other medically related item (food, biologicals, raw materials, medical fluids, gases etc.), as contained in the package |
![]() ![]() ![]() ![]() |
Σ | 0..1 | Quantity | The number of this type of item within this packaging or for continuous items such as liquids it is the quantity (for example 25ml). See also PackagedProductDefinition.containedItemQuantity (especially the long definition) |
![]() ![]() ![]() |
Σ | 0..* | See packaging (PackagedProductDefinition) | Allows containers (and parts of containers) within containers, still as a part of single packaged product |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| PackagedProductDefinition.status | Base | preferred | PublicationStatus | 📍5.0.0 | FHIR Std. |
| PackagedProductDefinition.legalStatusOfSupply.code | Base | example | Legal Status Of Supply | 📍5.0.0 | FHIR Std. |
| PackagedProductDefinition.legalStatusOfSupply.jurisdiction | Base | example | Jurisdiction ValueSet | 📍5.0.0 | FHIR Std. |
| PackagedProductDefinition.packaging.type | Base | example | Packaging Type | 📍5.0.0 | FHIR Std. |
| PackagedProductDefinition.packaging.material | Base | example | Package Material | 📍5.0.0 | FHIR Std. |
| PackagedProductDefinition.packaging.alternateMaterial | Base | example | Package Material | 📍5.0.0 | FHIR Std. |
| PackagedProductDefinition.packaging.property.type | Base | example | Product Characteristic | 📍5.0.0 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | PackagedProductDefinition | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | PackagedProductDefinition | 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().ofType(canonical) | %resource.descendants().ofType(uri) | %resource.descendants().ofType(url))) or descendants().where(reference = '#').exists() or descendants().where(ofType(canonical) = '#').exists() or descendants().where(ofType(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
|
| dom-4 | error | PackagedProductDefinition | 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 | PackagedProductDefinition | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | PackagedProductDefinition | 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 PackagedProductDefinition
Key Elements View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | PackagedProductDefinition | A medically related item or items, in a container or package | |
![]() ![]() |
?!Σ | 0..1 | CodeableConcept | The status within the lifecycle of this item. High level - not intended to duplicate details elsewhere e.g. legal status, or authorization/marketing status Binding: PublicationStatus (preferred): The lifecycle status of an artifact. |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| PackagedProductDefinition.status | Base | preferred | PublicationStatus | 📍5.0.0 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | PackagedProductDefinition | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | PackagedProductDefinition | 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().ofType(canonical) | %resource.descendants().ofType(uri) | %resource.descendants().ofType(url))) or descendants().where(reference = '#').exists() or descendants().where(ofType(canonical) = '#').exists() or descendants().where(ofType(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
|
| dom-4 | error | PackagedProductDefinition | 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 | PackagedProductDefinition | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | PackagedProductDefinition | 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())
|
Differential View
This structure is derived from PackagedProductDefinition
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
PackagedProductDefinition | |||
![]() ![]() |
0..0 | Metadata about the resource | ||
![]() ![]() |
0..0 | A set of rules under which this content was created | ||
![]() ![]() |
0..0 | Language of the resource content | ||
![]() ![]() |
0..0 | Text summary of the resource, for human interpretation | ||
![]() ![]() |
0..0 | Contained, inline Resources | ||
![]() ![]() |
0..0 | Extension | ||
![]() ![]() |
0..0 | Extension | ||
![]() ![]() |
0..0 | A name for this package. Typically as listed in a drug formulary, catalogue, inventory etc | ||
![]() ![]() |
0..0 | A high level category e.g. medicinal product, raw material, shipping container etc | ||
![]() ![]() |
0..0 | The date at which the given status became applicable | ||
![]() ![]() |
0..0 | Identifies if the drug product is supplied with another item such as a diluent or adjuvant | ||
![]() ![]() |
0..0 | Additional information or supporting documentation about the packaged product | ||
![]() ![]() |
0..0 | Allows the key features to be recorded, such as "hospital pack", "nurse prescribable" | ||
Documentation for this format | ||||
Snapshot View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | PackagedProductDefinition | A medically related item or items, in a container or package | |
![]() ![]() |
Σ | 0..1 | id | Logical id of this artifact |
![]() ![]() |
Σ | 0..* | Identifier | A unique identifier for this package as whole - not for the content of the package |
![]() ![]() |
Σ | 0..* | Reference(MedicinalProductDefinition) | The product that this is a pack for |
![]() ![]() |
?!Σ | 0..1 | CodeableConcept | The status within the lifecycle of this item. High level - not intended to duplicate details elsewhere e.g. legal status, or authorization/marketing status Binding: PublicationStatus (preferred): The lifecycle status of an artifact. |
![]() ![]() |
Σ | 0..* | Quantity | A total of the complete count of contained items of a particular type/form, independent of sub-packaging or organization. This can be considered as the pack size. See also packaging.containedItem.amount (especially the long definition) |
![]() ![]() |
Σ | 0..1 | markdown | Textual description. Note that this is not the name of the package or product |
![]() ![]() |
Σ | 0..* | BackboneElement | The legal status of supply of the packaged item as classified by the regulator |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() |
Σ | 0..1 | CodeableConcept | The actual status of supply. In what situation this package type may be supplied for use Binding: LegalStatusOfSupply (example): The prescription supply types appropriate to a medicinal product |
![]() ![]() ![]() |
Σ | 0..1 | CodeableConcept | The place where the legal status of supply applies Binding: JurisdictionValueSet (example): Jurisdiction codes |
![]() ![]() |
Σ | 0..* | MarketingStatus | Allows specifying that an item is on the market for sale, or that it is not available, and the dates and locations associated |
![]() ![]() |
Σ | 0..* | Reference(Organization) | Manufacturer of this package type (multiple means these are all possible manufacturers) |
![]() ![]() |
Σ | 0..1 | BackboneElement | A packaging item, as a container for medically related items, possibly with other packaging items within, or a packaging component, such as bottle cap |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() |
Σ | 0..* | Identifier | An identifier that is specific to this particular part of the packaging. Including possibly a Data Carrier Identifier |
![]() ![]() ![]() |
Σ | 0..1 | CodeableConcept | The physical type of the container of the items Binding: PackagingType (example): A high level categorisation of a package. |
![]() ![]() ![]() |
Σ | 0..1 | boolean | Is this a part of the packaging (e.g. a cap or bottle stopper), rather than the packaging itself (e.g. a bottle or vial) |
![]() ![]() ![]() |
Σ | 0..1 | integer | The quantity of this level of packaging in the package that contains it (with the outermost level being 1) |
![]() ![]() ![]() |
Σ | 0..* | CodeableConcept | Material type of the package item Binding: PackageMaterial (example): A material used in the construction of packages and their components. |
![]() ![]() ![]() |
Σ | 0..* | CodeableConcept | A possible alternate material for this part of the packaging, that is allowed to be used instead of the usual material Binding: PackageMaterial (example): A material used in the construction of packages and their components. |
![]() ![]() ![]() |
Σ | 0..* | ProductShelfLife | Shelf Life and storage information |
![]() ![]() ![]() |
Σ | 0..* | Reference(Organization) | Manufacturer of this packaging item (multiple means these are all potential manufacturers) |
![]() ![]() ![]() |
Σ | 0..* | BackboneElement | General characteristics of this item |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() ![]() |
Σ | 1..1 | CodeableConcept | A code expressing the type of characteristic Binding: ProductCharacteristic (example): This value set includes all observable entity codes from SNOMED CT - provided as an exemplar value set. |
![]() ![]() ![]() ![]() |
Σ | 0..1 | A value for the characteristic | |
![]() ![]() ![]() ![]() ![]() |
CodeableConcept | |||
![]() ![]() ![]() ![]() ![]() |
Quantity | |||
![]() ![]() ![]() ![]() ![]() |
date | |||
![]() ![]() ![]() ![]() ![]() |
boolean | |||
![]() ![]() ![]() ![]() ![]() |
Attachment | |||
![]() ![]() ![]() |
Σ | 0..* | BackboneElement | The item(s) within the packaging |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() ![]() |
Σ | 1..1 | CodeableReference(ManufacturedItemDefinition | DeviceDefinition | PackagedProductDefinition | BiologicallyDerivedProduct | NutritionProduct) | The actual item(s) of medication, as manufactured, or a device, or other medically related item (food, biologicals, raw materials, medical fluids, gases etc.), as contained in the package |
![]() ![]() ![]() ![]() |
Σ | 0..1 | Quantity | The number of this type of item within this packaging or for continuous items such as liquids it is the quantity (for example 25ml). See also PackagedProductDefinition.containedItemQuantity (especially the long definition) |
![]() ![]() ![]() |
Σ | 0..* | See packaging (PackagedProductDefinition) | Allows containers (and parts of containers) within containers, still as a part of single packaged product |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| PackagedProductDefinition.status | Base | preferred | PublicationStatus | 📍5.0.0 | FHIR Std. |
| PackagedProductDefinition.legalStatusOfSupply.code | Base | example | Legal Status Of Supply | 📍5.0.0 | FHIR Std. |
| PackagedProductDefinition.legalStatusOfSupply.jurisdiction | Base | example | Jurisdiction ValueSet | 📍5.0.0 | FHIR Std. |
| PackagedProductDefinition.packaging.type | Base | example | Packaging Type | 📍5.0.0 | FHIR Std. |
| PackagedProductDefinition.packaging.material | Base | example | Package Material | 📍5.0.0 | FHIR Std. |
| PackagedProductDefinition.packaging.alternateMaterial | Base | example | Package Material | 📍5.0.0 | FHIR Std. |
| PackagedProductDefinition.packaging.property.type | Base | example | Product Characteristic | 📍5.0.0 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | PackagedProductDefinition | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | PackagedProductDefinition | 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().ofType(canonical) | %resource.descendants().ofType(uri) | %resource.descendants().ofType(url))) or descendants().where(reference = '#').exists() or descendants().where(ofType(canonical) = '#').exists() or descendants().where(ofType(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
|
| dom-4 | error | PackagedProductDefinition | 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 | PackagedProductDefinition | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | PackagedProductDefinition | 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 PackagedProductDefinition
Other representations of profile: CSV, Excel, Schematron