ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.

PackagedProductDefinition

The commercial packaging of a pharmaceutical product: box, vial, kit, multi-level pack. The packaging grain of the ISO IDMP chain.

Purpose

PackagedProductDefinition describes the commercial presentation of a drug: units per box, inner packaging (blister, sachet), outer packaging (printed carton), kits combining multiple products. The resource drives unit-price calculation, barcode scanning, and per-batch manufacturer traceability.

Key elements

FieldTypeCardinalityRole
identifierIdentifier[]0..*Identifiers (GTIN, NDC, CIP).
namestring0..1Packaging name.
typeCodeableConcept0..1Pack type.
packageForReference(MedicinalProductDefinition)[]0..*Packaged product.
statusCodeableConcept0..1Status.
containedItemQuantityQuantity[]0..*Total quantity inside the pack.
descriptionmarkdown0..1Description.
legalStatusOfSupplyBackboneElement[]0..*Legal status (Rx, OTC).
marketingStatusMarketingStatus[]0..*Marketing status.
characteristicCodeableConcept[]0..*Characteristics (colour, material).
packagingBackboneElement0..1Recursive composition (pack → blister → tablets).

JSON example

json packagedproductdefinition-example.json
{
  "resourceType": "PackagedProductDefinition",
  "id": "example-aspirin-box-20",
  "identifier": [{
    "system": "https://www.gs1.org/gtin",
    "value": "03400938153317"
  }],
  "name": "Aspirine 300mg, boîte de 20 comprimés",
  "type": {
    "coding": [{
      "system": "http://hl7.org/fhir/packagedproductdefinition-package-type",
      "code": "Box"
    }]
  },
  "packageFor": [{
    "reference": "MedicinalProductDefinition/aspirin-300"
  }],
  "containedItemQuantity": [{
    "value": 20,
    "unit": "tablet"
  }],
  "packaging": {
    "type": {
      "coding": [{
        "system": "http://standardterms.edqm.eu",
        "code": "30009000",
        "display": "Box"
      }]
    },
    "quantity": 1
  }
}

Common pitfalls

  • containedItemQuantity vs packaging.quantity: containedItemQuantity = number of final units, packaging.quantity = number of packs at this level.
  • No GTIN: hampers GS1 traceability.
  • Missing legalStatusOfSupply: cannot tell whether the product is Rx-only.