SMART Product Catalog
0.1.0 - ci-build

SMART Product Catalog, published by WHO. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-pcmt/tree/main and changes regularly. See the Directory of published versions

Logical Model: Product

Official URL: http://smart.who.int/pcmt/StructureDefinition/Product Version: 0.1.0
Draft as of 2025-03-06 Computable Name: Product

A Product represents a physical item or set of items which can be held in inventory, ordered, exchanged, dispensed or other utilized within the health system, clinical and supply chain workflows.

Usage:

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

NameFlagsCard.TypeDescription & Constraintsdoco
.. Product 0..* Base Product
Instances of this logical model can be the target of a Reference
... identifier 0..* Identifier Identifier for the product (e.g. SKUs, GTINs)
... name 1..* BackboneElement The name of the product
ele-1: All FHIR elements must have a @value or children
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... nameType 1..1 code The type of name e.g. 'official' or 'user-friendly'
Binding: Name Type for a Product (extensible)
.... value 1..1 string The name of the product
... description 0..1 string The description of the product
... status 1..1 code Product status
Binding: Status for a Product (extensible)
... manufacturer 0..1 Reference(mCSD Organization) Manufacturer
... countryOfOrigin 0..1 CodeableConcept The country of origin
... shelfLife 0..1 SimpleQuantity The shelf life of the product in days
... unitOfUse 1..1 CodeableConcept The unit in which the generic product is used / counted
... dosageForm 0..1 CodeableConcept The physical form of the medication
... routeOfAdministration 0..* CodeableConcept The route of administration of the medication
... doseQuantity 0..1 SimpleQuantity The number of doses in this package
... strength 0..1 SimpleQuantity The strength of the product e.g. 500 mg
... attribute 0..* BackboneElement Attributes or characterisitics of the product
ele-1: All FHIR elements must have a @value or children
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... type 1..1 CodeableConcept The attribute type (e.g. a physcial dimension)
Binding: AttributeType for a Product (extensible)
.... value[x] 1..1 The value of the attribute
..... valueString string
..... valueInteger integer
..... valueDecimal decimal
..... valueBoolean boolean
..... valueUrl url
..... valueDateTime dateTime
..... valueRange Range
..... valueRatio Ratio
..... valueAnnotation Annotation
..... valueAddress Address
..... valueDuration Duration
..... valueCodeableConcept CodeableConcept
... associatedProduct 0..* BackboneElement Association(s) between a product and referenced products. Such relationships could be for packaging, representing duplicates/semantic equivalencies between Products, etc
ele-1: All FHIR elements must have a @value or children
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... product 1..1 Reference(Product) The generic product characteristics
.... relationship 1..* Coding Relationship
Binding: Product Relationships (extensible)
.... quantity 1..1 Quantity how many units of use of the generic product are in the product

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
Product.name.nameTypeextensibleNameType
http://smart.who.int/pcmt/ValueSet/NameType
from this IG
Product.statusextensibleStatus (a valid code from Product and regulatory authorization status)
http://smart.who.int/pcmt/ValueSet/Status
from this IG
Product.attribute.typeextensibleAttributeType (a valid code from Attribute type of Products)
http://smart.who.int/pcmt/ValueSet/AttributeType
from this IG
Product.associatedProduct.relationshipextensibleProductRelationship (a valid code from Product Relationship)
http://smart.who.int/pcmt/ValueSet/ProductRelationship
from this IG

Constraints

IdGradePath(s)DetailsRequirements
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

This structure is derived from Base

NameFlagsCard.TypeDescription & Constraintsdoco
.. Product 0..* Base Product
Instances of this logical model can be the target of a Reference
... identifier 0..* Identifier Identifier for the product (e.g. SKUs, GTINs)
... name 1..* BackboneElement The name of the product
.... nameType 1..1 code The type of name e.g. 'official' or 'user-friendly'
Binding: Name Type for a Product (extensible)
.... value 1..1 string The name of the product
... description 0..1 string The description of the product
... status 1..1 code Product status
Binding: Status for a Product (extensible)
... manufacturer 0..1 Reference(mCSD Organization) Manufacturer
... countryOfOrigin 0..1 CodeableConcept The country of origin
... shelfLife 0..1 SimpleQuantity The shelf life of the product in days
... unitOfUse 1..1 CodeableConcept The unit in which the generic product is used / counted
... dosageForm 0..1 CodeableConcept The physical form of the medication
... routeOfAdministration 0..* CodeableConcept The route of administration of the medication
... doseQuantity 0..1 SimpleQuantity The number of doses in this package
... strength 0..1 SimpleQuantity The strength of the product e.g. 500 mg
... attribute 0..* BackboneElement Attributes or characterisitics of the product
.... type 1..1 CodeableConcept The attribute type (e.g. a physcial dimension)
Binding: AttributeType for a Product (extensible)
.... value[x] 1..1 The value of the attribute
..... valueString string
..... valueInteger integer
..... valueDecimal decimal
..... valueBoolean boolean
..... valueUrl url
..... valueDateTime dateTime
..... valueRange Range
..... valueRatio Ratio
..... valueAnnotation Annotation
..... valueAddress Address
..... valueDuration Duration
..... valueCodeableConcept CodeableConcept
... associatedProduct 0..* BackboneElement Association(s) between a product and referenced products. Such relationships could be for packaging, representing duplicates/semantic equivalencies between Products, etc
.... product 1..1 Reference(Product) The generic product characteristics
.... relationship 1..* Coding Relationship
Binding: Product Relationships (extensible)
.... quantity 1..1 Quantity how many units of use of the generic product are in the product

doco Documentation for this format

Terminology Bindings (Differential)

PathConformanceValueSetURI
Product.name.nameTypeextensibleNameType
http://smart.who.int/pcmt/ValueSet/NameType
from this IG
Product.statusextensibleStatus (a valid code from Product and regulatory authorization status)
http://smart.who.int/pcmt/ValueSet/Status
from this IG
Product.attribute.typeextensibleAttributeType (a valid code from Attribute type of Products)
http://smart.who.int/pcmt/ValueSet/AttributeType
from this IG
Product.associatedProduct.relationshipextensibleProductRelationship (a valid code from Product Relationship)
http://smart.who.int/pcmt/ValueSet/ProductRelationship
from this IG
NameFlagsCard.TypeDescription & Constraintsdoco
.. Product 0..* Base Product
Instances of this logical model can be the target of a Reference
... identifier 0..* Identifier Identifier for the product (e.g. SKUs, GTINs)
... name 1..* BackboneElement The name of the product
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... nameType 1..1 code The type of name e.g. 'official' or 'user-friendly'
Binding: Name Type for a Product (extensible)
.... value 1..1 string The name of the product
... description 0..1 string The description of the product
... status 1..1 code Product status
Binding: Status for a Product (extensible)
... manufacturer 0..1 Reference(mCSD Organization) Manufacturer
... countryOfOrigin 0..1 CodeableConcept The country of origin
... shelfLife 0..1 SimpleQuantity The shelf life of the product in days
... unitOfUse 1..1 CodeableConcept The unit in which the generic product is used / counted
... dosageForm 0..1 CodeableConcept The physical form of the medication
... routeOfAdministration 0..* CodeableConcept The route of administration of the medication
... doseQuantity 0..1 SimpleQuantity The number of doses in this package
... strength 0..1 SimpleQuantity The strength of the product e.g. 500 mg
... attribute 0..* BackboneElement Attributes or characterisitics of the product
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... type 1..1 CodeableConcept The attribute type (e.g. a physcial dimension)
Binding: AttributeType for a Product (extensible)
.... value[x] 1..1 The value of the attribute
..... valueString string
..... valueInteger integer
..... valueDecimal decimal
..... valueBoolean boolean
..... valueUrl url
..... valueDateTime dateTime
..... valueRange Range
..... valueRatio Ratio
..... valueAnnotation Annotation
..... valueAddress Address
..... valueDuration Duration
..... valueCodeableConcept CodeableConcept
... associatedProduct 0..* BackboneElement Association(s) between a product and referenced products. Such relationships could be for packaging, representing duplicates/semantic equivalencies between Products, etc
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... product 1..1 Reference(Product) The generic product characteristics
.... relationship 1..* Coding Relationship
Binding: Product Relationships (extensible)
.... quantity 1..1 Quantity how many units of use of the generic product are in the product

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
Product.name.nameTypeextensibleNameType
http://smart.who.int/pcmt/ValueSet/NameType
from this IG
Product.statusextensibleStatus (a valid code from Product and regulatory authorization status)
http://smart.who.int/pcmt/ValueSet/Status
from this IG
Product.attribute.typeextensibleAttributeType (a valid code from Attribute type of Products)
http://smart.who.int/pcmt/ValueSet/AttributeType
from this IG
Product.associatedProduct.relationshipextensibleProductRelationship (a valid code from Product Relationship)
http://smart.who.int/pcmt/ValueSet/ProductRelationship
from this IG

Constraints

IdGradePath(s)DetailsRequirements
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

Key Elements View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Product 0..* Base Product
Instances of this logical model can be the target of a Reference
... identifier 0..* Identifier Identifier for the product (e.g. SKUs, GTINs)
... name 1..* BackboneElement The name of the product
ele-1: All FHIR elements must have a @value or children
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... nameType 1..1 code The type of name e.g. 'official' or 'user-friendly'
Binding: Name Type for a Product (extensible)
.... value 1..1 string The name of the product
... description 0..1 string The description of the product
... status 1..1 code Product status
Binding: Status for a Product (extensible)
... manufacturer 0..1 Reference(mCSD Organization) Manufacturer
... countryOfOrigin 0..1 CodeableConcept The country of origin
... shelfLife 0..1 SimpleQuantity The shelf life of the product in days
... unitOfUse 1..1 CodeableConcept The unit in which the generic product is used / counted
... dosageForm 0..1 CodeableConcept The physical form of the medication
... routeOfAdministration 0..* CodeableConcept The route of administration of the medication
... doseQuantity 0..1 SimpleQuantity The number of doses in this package
... strength 0..1 SimpleQuantity The strength of the product e.g. 500 mg
... attribute 0..* BackboneElement Attributes or characterisitics of the product
ele-1: All FHIR elements must have a @value or children
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... type 1..1 CodeableConcept The attribute type (e.g. a physcial dimension)
Binding: AttributeType for a Product (extensible)
.... value[x] 1..1 The value of the attribute
..... valueString string
..... valueInteger integer
..... valueDecimal decimal
..... valueBoolean boolean
..... valueUrl url
..... valueDateTime dateTime
..... valueRange Range
..... valueRatio Ratio
..... valueAnnotation Annotation
..... valueAddress Address
..... valueDuration Duration
..... valueCodeableConcept CodeableConcept
... associatedProduct 0..* BackboneElement Association(s) between a product and referenced products. Such relationships could be for packaging, representing duplicates/semantic equivalencies between Products, etc
ele-1: All FHIR elements must have a @value or children
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
.... product 1..1 Reference(Product) The generic product characteristics
.... relationship 1..* Coding Relationship
Binding: Product Relationships (extensible)
.... quantity 1..1 Quantity how many units of use of the generic product are in the product

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
Product.name.nameTypeextensibleNameType
http://smart.who.int/pcmt/ValueSet/NameType
from this IG
Product.statusextensibleStatus (a valid code from Product and regulatory authorization status)
http://smart.who.int/pcmt/ValueSet/Status
from this IG
Product.attribute.typeextensibleAttributeType (a valid code from Attribute type of Products)
http://smart.who.int/pcmt/ValueSet/AttributeType
from this IG
Product.associatedProduct.relationshipextensibleProductRelationship (a valid code from Product Relationship)
http://smart.who.int/pcmt/ValueSet/ProductRelationship
from this IG

Constraints

IdGradePath(s)DetailsRequirements
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

Differential View

This structure is derived from Base

NameFlagsCard.TypeDescription & Constraintsdoco
.. Product 0..* Base Product
Instances of this logical model can be the target of a Reference
... identifier 0..* Identifier Identifier for the product (e.g. SKUs, GTINs)
... name 1..* BackboneElement The name of the product
.... nameType 1..1 code The type of name e.g. 'official' or 'user-friendly'
Binding: Name Type for a Product (extensible)
.... value 1..1 string The name of the product
... description 0..1 string The description of the product
... status 1..1 code Product status
Binding: Status for a Product (extensible)
... manufacturer 0..1 Reference(mCSD Organization) Manufacturer
... countryOfOrigin 0..1 CodeableConcept The country of origin
... shelfLife 0..1 SimpleQuantity The shelf life of the product in days
... unitOfUse 1..1 CodeableConcept The unit in which the generic product is used / counted
... dosageForm 0..1 CodeableConcept The physical form of the medication
... routeOfAdministration 0..* CodeableConcept The route of administration of the medication
... doseQuantity 0..1 SimpleQuantity The number of doses in this package
... strength 0..1 SimpleQuantity The strength of the product e.g. 500 mg
... attribute 0..* BackboneElement Attributes or characterisitics of the product
.... type 1..1 CodeableConcept The attribute type (e.g. a physcial dimension)
Binding: AttributeType for a Product (extensible)
.... value[x] 1..1 The value of the attribute
..... valueString string
..... valueInteger integer
..... valueDecimal decimal
..... valueBoolean boolean
..... valueUrl url
..... valueDateTime dateTime
..... valueRange Range
..... valueRatio Ratio
..... valueAnnotation Annotation
..... valueAddress Address
..... valueDuration Duration
..... valueCodeableConcept CodeableConcept
... associatedProduct 0..* BackboneElement Association(s) between a product and referenced products. Such relationships could be for packaging, representing duplicates/semantic equivalencies between Products, etc
.... product 1..1 Reference(Product) The generic product characteristics
.... relationship 1..* Coding Relationship
Binding: Product Relationships (extensible)
.... quantity 1..1 Quantity how many units of use of the generic product are in the product

doco Documentation for this format

Terminology Bindings (Differential)

PathConformanceValueSetURI
Product.name.nameTypeextensibleNameType
http://smart.who.int/pcmt/ValueSet/NameType
from this IG
Product.statusextensibleStatus (a valid code from Product and regulatory authorization status)
http://smart.who.int/pcmt/ValueSet/Status
from this IG
Product.attribute.typeextensibleAttributeType (a valid code from Attribute type of Products)
http://smart.who.int/pcmt/ValueSet/AttributeType
from this IG
Product.associatedProduct.relationshipextensibleProductRelationship (a valid code from Product Relationship)
http://smart.who.int/pcmt/ValueSet/ProductRelationship
from this IG

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Product 0..* Base Product
Instances of this logical model can be the target of a Reference
... identifier 0..* Identifier Identifier for the product (e.g. SKUs, GTINs)
... name 1..* BackboneElement The name of the product
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... nameType 1..1 code The type of name e.g. 'official' or 'user-friendly'
Binding: Name Type for a Product (extensible)
.... value 1..1 string The name of the product
... description 0..1 string The description of the product
... status 1..1 code Product status
Binding: Status for a Product (extensible)
... manufacturer 0..1 Reference(mCSD Organization) Manufacturer
... countryOfOrigin 0..1 CodeableConcept The country of origin
... shelfLife 0..1 SimpleQuantity The shelf life of the product in days
... unitOfUse 1..1 CodeableConcept The unit in which the generic product is used / counted
... dosageForm 0..1 CodeableConcept The physical form of the medication
... routeOfAdministration 0..* CodeableConcept The route of administration of the medication
... doseQuantity 0..1 SimpleQuantity The number of doses in this package
... strength 0..1 SimpleQuantity The strength of the product e.g. 500 mg
... attribute 0..* BackboneElement Attributes or characterisitics of the product
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... type 1..1 CodeableConcept The attribute type (e.g. a physcial dimension)
Binding: AttributeType for a Product (extensible)
.... value[x] 1..1 The value of the attribute
..... valueString string
..... valueInteger integer
..... valueDecimal decimal
..... valueBoolean boolean
..... valueUrl url
..... valueDateTime dateTime
..... valueRange Range
..... valueRatio Ratio
..... valueAnnotation Annotation
..... valueAddress Address
..... valueDuration Duration
..... valueCodeableConcept CodeableConcept
... associatedProduct 0..* BackboneElement Association(s) between a product and referenced products. Such relationships could be for packaging, representing duplicates/semantic equivalencies between Products, etc
.... @id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... product 1..1 Reference(Product) The generic product characteristics
.... relationship 1..* Coding Relationship
Binding: Product Relationships (extensible)
.... quantity 1..1 Quantity how many units of use of the generic product are in the product

doco Documentation for this format

Terminology Bindings

PathConformanceValueSetURI
Product.name.nameTypeextensibleNameType
http://smart.who.int/pcmt/ValueSet/NameType
from this IG
Product.statusextensibleStatus (a valid code from Product and regulatory authorization status)
http://smart.who.int/pcmt/ValueSet/Status
from this IG
Product.attribute.typeextensibleAttributeType (a valid code from Attribute type of Products)
http://smart.who.int/pcmt/ValueSet/AttributeType
from this IG
Product.associatedProduct.relationshipextensibleProductRelationship (a valid code from Product Relationship)
http://smart.who.int/pcmt/ValueSet/ProductRelationship
from this IG

Constraints

IdGradePath(s)DetailsRequirements
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

 

Other representations of profile: CSV, Excel