Supply of Products for Healthcare (SUPPLY)
0.3.0 - ci-build International flag

Supply of Products for Healthcare (SUPPLY), published by IHE Pharmacy Technical Committee. This guide is not an authorized publication; it is the continuous build for version 0.3.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/IHE/pharm-supply/ and changes regularly. See the Directory of published versions

Logical Model: ProductModel - Detailed Descriptions

Draft as of 2024-03-26

Definitions for the ProductModel logical model.

Guidance on how to interpret the contents of this table can be found here

0. ProductModel
Definition

This is the logical model for a Product

ShortA functional description of a product’s functionality, used for counting
Logical ModelInstances of this logical model are not marked to be the target of a Reference
2. ProductModel.identifier
Definition

Business identifier for the product

ShortBusiness identifier for the product
NoteThis is a business identifier, not a resource identifier (see discussion)
Control0..*
TypeIdentifier
4. ProductModel.baseUnitOfMeasure
Definition

The base unit of measure - the unit in which the product is used or counted.

ShortThe base unit of measure - the unit in which the product is used or counted.
Control0..1
TypeCodeableConcept
6. ProductModel.description
Definition

The type of counting - whether it is a manual counting, automated data capture, estimate..

ShortThe type of counting - whether it is a manual counting, automated data capture, estimate..
Control0..*
TypeBackboneElement
8. ProductModel.description.attributeType
Definition

The type of operation - add/subtract

ShortThe type of operation - add/subtract
Control1..1
TypeCodeableConcept
10. ProductModel.description.attributeType[x]
Definition

The value of the attribute

ShortThe value of the attribute
Control1..1
TypeChoice of: integer, string, boolean
[x] NoteSee Choice of Data Types for further information about how to use [x]
Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
12. ProductModel.association
Definition

For example, Product A (powder) should be mixed with product B '(saline)', or 'product A should be applied with device B' , or 'Product X applies to parent device Y

ShortFor example, Product A (powder) should be mixed with product B '(saline)', or 'product A should be applied with device B' , or 'Product X applies to parent device Y
Control0..*
TypeBackboneElement
14. ProductModel.association.associationType
Definition

e.g. 'applied with' or 'used with' or 'to be mixed with

ShortThe type of association
Control1..1
TypeCodeableConcept
16. ProductModel.association.associatedProduct[x]
Definition

The actual related product

ShortThe actual related product
Control1..1
TypeChoice of: CodeableConcept, Reference(ProductModel, ItemModel)
[x] NoteSee Choice of Data Types for further information about how to use [x]
SlicingThis element introduces a set of slices on ProductModel.association.associatedProduct[x]. The slices are unordered and Open, and can be differentiated using the following discriminators:
  • type @ $this
  • 18. ProductModel.association.associatedProduct[x]:associatedProductCodeableConcept
    Slice NameassociatedProductCodeableConcept
    Control0..1
    BindingThe codes SHOULD be taken from Product association type Value Set
    (preferred to http://profiles.ihe.net/PHARM/supply/ValueSet/vs-ihe-pharm-product-association-type)
    TypeCodeableConcept
    [x] NoteSee Choice of Data Types for further information about how to use [x]
    20. ProductModel.association.quantity
    Definition

    The quantity of the associated product in this product - Numerator is the quantity of the related product. Denominator is the quantity of the present product. for example a value of 20 means that this product contains 20 units of the related product; a value of 1:20 means the inverse - that the contained product contains 20 units of this product.

    ShortThe quantity of the associated product in this product
    Control1..1
    TypeRatio
    22. ProductModel.classification
    Definition

    The classification(s) of the product, e.g. ATC code, schedule, device class, ...

    ShortThe classification(s) of the product, e.g. ATC code, schedule, device class, ...
    Control0..*
    TypeCodeableConcept

    Guidance on how to interpret the contents of this table can be found here

    0. ProductModel
    Definition

    This is the logical model for a Product


    Base definition for all elements in a resource.

    ShortA functional description of a product’s functionality, used for countingBase for all elements
    Control0..*
    Is Modifierfalse
    Logical ModelInstances of this logical model are not marked to be the target of a Reference
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    2. ProductModel.identifier
    Definition

    Business identifier for the product

    ShortBusiness identifier for the product
    NoteThis is a business identifier, not a resource identifier (see discussion)
    Control0..*
    TypeIdentifier
    4. ProductModel.baseUnitOfMeasure
    Definition

    The base unit of measure - the unit in which the product is used or counted.

    ShortThe base unit of measure - the unit in which the product is used or counted.
    Control0..1
    TypeCodeableConcept
    6. ProductModel.description
    Definition

    The type of counting - whether it is a manual counting, automated data capture, estimate..

    ShortThe type of counting - whether it is a manual counting, automated data capture, estimate..
    Control0..*
    TypeBackboneElement
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    8. ProductModel.description.modifierExtension
    Definition

    May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.

    Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).

    ShortExtensions that cannot be ignored even if unrecognized
    Comments

    There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

    Control0..*
    TypeExtension
    Is Modifiertrue because Modifier extensions are expected to modify the meaning or interpretation of the element that contains them
    Summarytrue
    Requirements

    Modifier extensions allow for extensions that cannot be safely ignored to be clearly distinguished from the vast majority of extensions which can be safely ignored. This promotes interoperability by eliminating the need for implementers to prohibit the presence of extensions. For further information, see the definition of modifier extensions.

    Alternate Namesextensions, user content, modifiers
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    10. ProductModel.description.attributeType
    Definition

    The type of operation - add/subtract

    ShortThe type of operation - add/subtract
    Control1..1
    TypeCodeableConcept
    12. ProductModel.description.attributeType[x]
    Definition

    The value of the attribute

    ShortThe value of the attribute
    Control1..1
    TypeChoice of: integer, string, boolean
    [x] NoteSee Choice of Data Types for further information about how to use [x]
    Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
    14. ProductModel.association
    Definition

    For example, Product A (powder) should be mixed with product B '(saline)', or 'product A should be applied with device B' , or 'Product X applies to parent device Y

    ShortFor example, Product A (powder) should be mixed with product B '(saline)', or 'product A should be applied with device B' , or 'Product X applies to parent device Y
    Control0..*
    TypeBackboneElement
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    16. ProductModel.association.modifierExtension
    Definition

    May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.

    Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).

    ShortExtensions that cannot be ignored even if unrecognized
    Comments

    There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

    Control0..*
    TypeExtension
    Is Modifiertrue because Modifier extensions are expected to modify the meaning or interpretation of the element that contains them
    Summarytrue
    Requirements

    Modifier extensions allow for extensions that cannot be safely ignored to be clearly distinguished from the vast majority of extensions which can be safely ignored. This promotes interoperability by eliminating the need for implementers to prohibit the presence of extensions. For further information, see the definition of modifier extensions.

    Alternate Namesextensions, user content, modifiers
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    18. ProductModel.association.associationType
    Definition

    e.g. 'applied with' or 'used with' or 'to be mixed with

    ShortThe type of association
    Control1..1
    TypeCodeableConcept
    20. ProductModel.association.associatedProduct[x]:associatedProductCodeableConcept
    Slice NameassociatedProductCodeableConcept
    Definition

    The actual related product

    ShortThe actual related product
    Control0..1
    BindingThe codes SHOULD be taken from Product association type Value Set
    (preferred to http://profiles.ihe.net/PHARM/supply/ValueSet/vs-ihe-pharm-product-association-type)
    TypeCodeableConcept
    [x] NoteSee Choice of Data Types for further information about how to use [x]
    SlicingThis element introduces a set of slices on ProductModel.association.associatedProduct[x]. The slices are unordered and Open, and can be differentiated using the following discriminators:
    • type @ $this
    • 22. ProductModel.association.quantity
      Definition

      The quantity of the associated product in this product - Numerator is the quantity of the related product. Denominator is the quantity of the present product. for example a value of 20 means that this product contains 20 units of the related product; a value of 1:20 means the inverse - that the contained product contains 20 units of this product.

      ShortThe quantity of the associated product in this product
      Control1..1
      TypeRatio
      24. ProductModel.classification
      Definition

      The classification(s) of the product, e.g. ATC code, schedule, device class, ...

      ShortThe classification(s) of the product, e.g. ATC code, schedule, device class, ...
      Control0..*
      TypeCodeableConcept

      Guidance on how to interpret the contents of this table can be found here

      0. ProductModel
      Definition

      This is the logical model for a Product

      ShortA functional description of a product’s functionality, used for counting
      Control0..*
      Is Modifierfalse
      Logical ModelInstances of this logical model are not marked to be the target of a Reference
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      2. ProductModel.id
      Definition

      Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.

      ShortUnique id for inter-element referencing
      Control0..1
      This element is affected by the following invariants: ele-1
      Typestring
      Is Modifierfalse
      XML FormatIn the XML format, this property is represented as an attribute.
      Summaryfalse
      4. ProductModel.extension
      Definition

      May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.

      ShortAdditional content defined by implementations
      Comments

      There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

      Control0..*
      TypeExtension
      Is Modifierfalse
      Summaryfalse
      Alternate Namesextensions, user content
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
      SlicingThis element introduces a set of slices on ProductModel.extension. The slices are unordered and Open, and can be differentiated using the following discriminators:
      • value @ url
      • 6. ProductModel.identifier
        Definition

        Business identifier for the product

        ShortBusiness identifier for the product
        NoteThis is a business identifier, not a resource identifier (see discussion)
        Control0..*
        TypeIdentifier
        8. ProductModel.baseUnitOfMeasure
        Definition

        The base unit of measure - the unit in which the product is used or counted.

        ShortThe base unit of measure - the unit in which the product is used or counted.
        Control0..1
        TypeCodeableConcept
        10. ProductModel.description
        Definition

        The type of counting - whether it is a manual counting, automated data capture, estimate..

        ShortThe type of counting - whether it is a manual counting, automated data capture, estimate..
        Control0..*
        TypeBackboneElement
        Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
        12. ProductModel.description.id
        Definition

        Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.

        ShortUnique id for inter-element referencing
        Control0..1
        This element is affected by the following invariants: ele-1
        Typeid
        Is Modifierfalse
        XML FormatIn the XML format, this property is represented as an attribute.
        Summaryfalse
        14. ProductModel.description.extension
        Definition

        May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.

        ShortAdditional content defined by implementations
        Comments

        There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

        Control0..*
        TypeExtension
        Is Modifierfalse
        Summaryfalse
        Alternate Namesextensions, user content
        Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
        ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
        SlicingThis element introduces a set of slices on ProductModel.description.extension. The slices are unordered and Open, and can be differentiated using the following discriminators:
        • value @ url
        • 16. ProductModel.description.modifierExtension
          Definition

          May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.

          Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).

          ShortExtensions that cannot be ignored even if unrecognized
          Comments

          There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

          Control0..*
          TypeExtension
          Is Modifiertrue because Modifier extensions are expected to modify the meaning or interpretation of the element that contains them
          Summarytrue
          Requirements

          Modifier extensions allow for extensions that cannot be safely ignored to be clearly distinguished from the vast majority of extensions which can be safely ignored. This promotes interoperability by eliminating the need for implementers to prohibit the presence of extensions. For further information, see the definition of modifier extensions.

          Alternate Namesextensions, user content, modifiers
          Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
          ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
          18. ProductModel.description.attributeType
          Definition

          The type of operation - add/subtract

          ShortThe type of operation - add/subtract
          Control1..1
          TypeCodeableConcept
          20. ProductModel.description.attributeType[x]
          Definition

          The value of the attribute

          ShortThe value of the attribute
          Control1..1
          TypeChoice of: integer, string, boolean
          [x] NoteSee Choice of Data Types for further information about how to use [x]
          Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
          22. ProductModel.association
          Definition

          For example, Product A (powder) should be mixed with product B '(saline)', or 'product A should be applied with device B' , or 'Product X applies to parent device Y

          ShortFor example, Product A (powder) should be mixed with product B '(saline)', or 'product A should be applied with device B' , or 'Product X applies to parent device Y
          Control0..*
          TypeBackboneElement
          Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
          24. ProductModel.association.id
          Definition

          Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.

          ShortUnique id for inter-element referencing
          Control0..1
          This element is affected by the following invariants: ele-1
          Typeid
          Is Modifierfalse
          XML FormatIn the XML format, this property is represented as an attribute.
          Summaryfalse
          26. ProductModel.association.extension
          Definition

          May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.

          ShortAdditional content defined by implementations
          Comments

          There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

          Control0..*
          TypeExtension
          Is Modifierfalse
          Summaryfalse
          Alternate Namesextensions, user content
          Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
          ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
          SlicingThis element introduces a set of slices on ProductModel.association.extension. The slices are unordered and Open, and can be differentiated using the following discriminators:
          • value @ url
          • 28. ProductModel.association.modifierExtension
            Definition

            May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and managable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.

            Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).

            ShortExtensions that cannot be ignored even if unrecognized
            Comments

            There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

            Control0..*
            TypeExtension
            Is Modifiertrue because Modifier extensions are expected to modify the meaning or interpretation of the element that contains them
            Summarytrue
            Requirements

            Modifier extensions allow for extensions that cannot be safely ignored to be clearly distinguished from the vast majority of extensions which can be safely ignored. This promotes interoperability by eliminating the need for implementers to prohibit the presence of extensions. For further information, see the definition of modifier extensions.

            Alternate Namesextensions, user content, modifiers
            Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
            ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
            30. ProductModel.association.associationType
            Definition

            e.g. 'applied with' or 'used with' or 'to be mixed with

            ShortThe type of association
            Control1..1
            TypeCodeableConcept
            32. ProductModel.association.associatedProduct[x]:associatedProductCodeableConcept
            Slice NameassociatedProductCodeableConcept
            Definition

            The actual related product

            ShortThe actual related product
            Control0..1
            BindingThe codes SHOULD be taken from Product association type Value Set
            (preferred to http://profiles.ihe.net/PHARM/supply/ValueSet/vs-ihe-pharm-product-association-type)
            TypeCodeableConcept
            [x] NoteSee Choice of Data Types for further information about how to use [x]
            SlicingThis element introduces a set of slices on ProductModel.association.associatedProduct[x]. The slices are unordered and Open, and can be differentiated using the following discriminators:
            • type @ $this
            • 34. ProductModel.association.quantity
              Definition

              The quantity of the associated product in this product - Numerator is the quantity of the related product. Denominator is the quantity of the present product. for example a value of 20 means that this product contains 20 units of the related product; a value of 1:20 means the inverse - that the contained product contains 20 units of this product.

              ShortThe quantity of the associated product in this product
              Control1..1
              TypeRatio
              36. ProductModel.classification
              Definition

              The classification(s) of the product, e.g. ATC code, schedule, device class, ...

              ShortThe classification(s) of the product, e.g. ATC code, schedule, device class, ...
              Control0..*
              TypeCodeableConcept