description: The manufactured drug product defined by all its parts or layers. If the drug product composition is homogeneous it will have a single part or component. package_name: hl7.fhir.us.pq-cmc-fda derivation: constraint name: FinishedProduct type: ManufacturedItemDefinition elements: identifier: {mustSupport: true, index: 0} status: {mustSupport: true, index: 1} name: {short: Product Proprietary Name | Product Non-proprietary Name, mustSupport: true, index: 2} manufacturedDoseForm: binding: {strength: required, valueSet: 'http://hl7.org/fhir/us/pq-cmc-fda/ValueSet/pqcmc-manufactured-dose-form-terminology'} index: 3 property: mustSupport: true array: true min: 6 index: 4 elements: type: mustSupport: true index: 5 elements: text: {mustSupport: true, index: 6} required: [text] slicing: rules: closed description: Slice based on value discriminator: - {path: type.text, type: value} min: 6 slices: Schematic: match: type: {text: Product Schematic} schema: short: Product Schematic mustSupport: true array: true min: 1 _required: true index: 45 elements: type: elements: text: pattern: {type: String, value: Product Schematic} index: 46 value: mustSupport: true choices: [valueAttachment] index: 48 valueAttachment: {type: Attachment, mustSupport: true, choiceOf: value, index: 49} required: [valueAttachment, value] OvrRelsMech: match: type: {text: Product Overall Release Mechanism} schema: short: Product Overall Release Mechanism mustSupport: true index: 12 elements: type: elements: text: pattern: {type: String, value: Product Overall Release Mechanism} index: 13 value: mustSupport: true choices: [valueCodeableConcept] index: 15 valueCodeableConcept: {type: CodeableConcept, mustSupport: true, choiceOf: value, index: 16} required: [value, valueCodeableConcept] CoatInd: match: type: {text: Coating Indicator} schema: short: Product Coating Indicator mustSupport: true index: 17 elements: type: elements: text: pattern: {type: String, value: Coating Indicator} index: 18 value: mustSupport: true choices: [valueBoolean] index: 20 valueBoolean: {type: boolean, mustSupport: true, choiceOf: value, index: 21} required: [value, valueBoolean] TotWgtDen: match: type: {text: Product Total Weight Numeric Denominator} schema: short: Product Total Weight Numeric Denominator mustSupport: true index: 61 elements: type: elements: text: pattern: {type: String, value: Product Total Weight Numeric Denominator} index: 62 value: mustSupport: true choices: [valueQuantity] index: 64 valueQuantity: {type: Quantity, mustSupport: true, choiceOf: value, index: 65} value[x]: elements: value: {mustSupport: true, index: 66} required: [value] required: [value, valueQuantity] CapClass: match: type: {text: Capsule Classification Category} schema: short: Capsule Shell Part Classification Category mustSupport: true index: 34 elements: type: elements: text: pattern: {type: String, value: Capsule Classification Category} index: 35 value: mustSupport: true choices: [valueCodeableConcept] index: 37 valueCodeableConcept: {type: CodeableConcept, mustSupport: true, choiceOf: value, index: 38} required: [value, valueCodeableConcept] OvrRelsProf: match: type: {text: Product Overall Release Profile} schema: short: Product Overall Release Profile mustSupport: true _required: true index: 7 elements: type: elements: text: pattern: {type: String, value: Product Overall Release Profile} index: 8 value: mustSupport: true choices: [valueCodeableConcept] index: 10 valueCodeableConcept: {type: CodeableConcept, mustSupport: true, choiceOf: value, index: 11} required: [value, valueCodeableConcept] TotWgtNum: match: type: {text: Product Total Weight Numeric Numerator} schema: short: Product Total Weight Numeric Numerator mustSupport: true _required: true index: 55 elements: type: elements: text: pattern: {type: String, value: Product Total Weight Numeric Numerator} index: 56 value: mustSupport: true choices: [valueQuantity] index: 58 valueQuantity: {type: Quantity, mustSupport: true, choiceOf: value, index: 59} value[x]: elements: comparator: {short: Product Total Weight Operator, mustSupport: true, index: 60} required: [value, valueQuantity] BeaTypCnt: match: type: {text: Tablet Bead Type Count} schema: short: Tablet Bead Type Count mustSupport: true index: 28 elements: type: elements: text: pattern: {type: String, value: Tablet Bead Type Count} index: 29 value: mustSupport: true pattern: type: Quantity value: {code: '1', system: 'http://unitsofmeasure.org'} choices: [valueQuantity] index: 31 valueQuantity: type: Quantity mustSupport: true pattern: type: Quantity value: {code: '1', system: 'http://unitsofmeasure.org'} choiceOf: value index: 32 value[x]: elements: value: {mustSupport: true, index: 33} required: [value] required: [value, valueQuantity] LayCnt: match: type: {text: Tablet Layer Count} schema: short: Product Tablet Layer Count mustSupport: true index: 22 elements: type: elements: text: pattern: {type: String, value: Tablet Layer Count} index: 23 value: mustSupport: true pattern: type: Quantity value: {code: '1', system: 'http://unitsofmeasure.org'} choices: [valueQuantity] index: 25 valueQuantity: type: Quantity mustSupport: true pattern: type: Quantity value: {code: '1', system: 'http://unitsofmeasure.org'} choiceOf: value index: 26 value[x]: elements: value: {mustSupport: true, index: 27} required: [value] required: [value, valueQuantity] CapConCnt: match: type: {text: Capsule Constituent Count} schema: short: Product Capsule Constituent Count mustSupport: true index: 39 elements: type: elements: text: pattern: {type: String, value: Capsule Constituent Count} index: 40 value: mustSupport: true pattern: type: Quantity value: {code: '1', system: 'http://unitsofmeasure.org'} choices: [valueQuantity] index: 42 valueQuantity: type: Quantity mustSupport: true pattern: type: Quantity value: {code: '1', system: 'http://unitsofmeasure.org'} choiceOf: value index: 43 value[x]: elements: value: {mustSupport: true, index: 44} required: [value] required: [value, valueQuantity] QualStd: match: type: {text: Quality Standard} schema: short: Product Quality Standard mustSupport: true array: true min: 1 _required: true index: 72 elements: type: elements: text: pattern: {type: String, value: Quality Standard} index: 73 value: mustSupport: true choices: [valueCodeableConcept] index: 75 valueCodeableConcept: {type: CodeableConcept, mustSupport: true, choiceOf: value, index: 76} required: [value, valueCodeableConcept] WgtTyp: match: type: {text: Product Weight Type} schema: short: Product Weight Type mustSupport: true _required: true index: 50 elements: type: elements: text: pattern: {type: String, value: Product Weight Type} index: 51 value: mustSupport: true choices: [valueCodeableConcept] index: 53 valueCodeableConcept: {type: CodeableConcept, mustSupport: true, choiceOf: value, index: 54} required: [value, valueCodeableConcept] Sterile: match: type: {text: Sterile Product Indicator} schema: short: Sterile Product Indicator mustSupport: true _required: true index: 77 elements: type: elements: text: pattern: {type: String, value: Sterile Product Indicator} index: 78 value: mustSupport: true choices: [valueBoolean] index: 80 valueBoolean: {type: boolean, mustSupport: true, choiceOf: value, index: 81} required: [value, valueBoolean] TotWgtTxt: match: type: {text: Total Weight Textual} schema: short: Product Total Weight Textual mustSupport: true index: 67 elements: type: elements: text: pattern: {type: String, value: Total Weight Textual} index: 68 value: mustSupport: true choices: [valueMarkdown] index: 70 valueMarkdown: {type: markdown, mustSupport: true, choiceOf: value, index: 71} required: [valueMarkdown, value] component: constraint: cmc-amount-ratio-or-quantity: human: The amount ratio extension and an amount with a non-percentage unit are mutually exclusive source: http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pqcmc-product-part severity: error expression: "defineVariable('system','http://unitsofmeasure.org').select(\n modifierExtension.where(url = 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pq-amount-ratio')\n .union(\n amount.where(\n system = %system and \n code.memberOf('http://hl7.org/fhir/us/pq-cmc-fda/ValueSet/pqcmc-non-percentage-units')\n )\n ).count() = 1\n)" mustSupport: true index: 82 elements: modifierExtension: index: 83 slicing: rules: open ordered: false discriminator: - {path: url, type: value} min: null slices: amountRatio: match: {url: null} schema: {type: Extension, mustSupport: true, url: 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pq-amount-ratio', index: 84} min: 0 max: 1 type: short: Product Part Type mustSupport: true index: 85 elements: coding: binding: {strength: required, valueSet: 'http://hl7.org/fhir/us/pq-cmc-fda/ValueSet/pqcmc-product-part-type'} index: 86 function: {type: CodeableConcept, short: Product Part Function Description, mustSupport: true, index: 87} amount: mustSupport: true array: true max: 2 index: 88 slicing: rules: open ordered: false discriminator: - {path: code, type: value} min: null max: 2 slices: weight: match: {code: null} schema: mustSupport: true index: 89 elements: value: {short: Product Part Total Weight Numeric, mustSupport: true, index: 90} unit: {short: Product Part Total Weight Numeric UOM, mustSupport: true, index: 91} code: binding: {strength: required, valueSet: 'http://hl7.org/fhir/us/pq-cmc-fda/ValueSet/pqcmc-non-percentage-units'} index: 92 required: [value, unit] percent: match: {code: null} schema: mustSupport: true index: 93 elements: value: {short: Product Part Content Percent, mustSupport: true, index: 94} unit: {short: Product Part Content Percent UOM, mustSupport: true, index: 95} code: binding: {strength: required, valueSet: 'http://hl7.org/fhir/us/pq-cmc-fda/ValueSet/pqcmc-percentage-units'} index: 96 required: [value, unit] constituent: short: Product Part Ingredient Component Function Category constraint: cmc-ingredient-functions: human: |- If Drug Product Component constituent Function Category is Active Ingredient or Adjuvant THEN Drug Product Component constituent Function is not applicable. If Drug Product Component Function Category constituent is Inactive Ingredient (excipient) THEN Drug Product Component Function must be from the value list. source: http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pqcmc-product-part severity: error expression: function.coding.where(code = 'C42637' and system = 'http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl').exists() implies function.coding.code.count() = 2 cmc-amount-ratio-or-quantity: human: The amount ratio extension and an amount with a non-percentage unit are mutually exclusive source: http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pqcmc-product-part severity: error expression: "defineVariable('system','http://unitsofmeasure.org').select(\n modifierExtension.where(url = 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pq-amount-ratio')\n .union(\n amount.where(\n system = %system and \n code.memberOf('http://hl7.org/fhir/us/pq-cmc-fda/ValueSet/pqcmc-non-percentage-units')\n )\n ).count() = 1\n)" mustSupport: true index: 97 extensions: textualStrength: url: http://hl7.org/fhir/StructureDefinition/originalText type: Extension mustSupport: true index: 99 elements: value: short: Textual Strength choices: [valueString] index: 101 valueString: {type: string, short: Textual Strength, choiceOf: value, index: 102} elements: extension: index: 98 slicing: rules: open ordered: false discriminator: - {path: url, type: value} min: null slices: textualStrength: match: {url: null} schema: type: Extension mustSupport: true url: http://hl7.org/fhir/StructureDefinition/originalText index: 99 elements: value: short: Textual Strength choices: [valueString] index: 101 valueString: {type: string, short: Textual Strength, choiceOf: value, index: 102} modifierExtension: index: 103 slicing: rules: open ordered: false discriminator: - {path: url, type: value} min: null slices: amountRatio: match: {url: null} schema: {type: Extension, mustSupport: true, url: 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pq-amount-ratio', index: 104} min: 0 max: 1 amount: mustSupport: true array: true min: 1 max: 2 index: 105 slicing: rules: open ordered: false discriminator: - {path: code, type: value} min: 1 max: 2 slices: weight: match: {code: null} schema: mustSupport: true _required: true index: 106 elements: value: {short: Product Part Ingredient Amount Numeric, mustSupport: true, index: 107} unit: {short: Product Part Ingredient Amount Numeric UOM, mustSupport: true, index: 108} code: binding: {strength: required, valueSet: 'http://hl7.org/fhir/us/pq-cmc-fda/ValueSet/pqcmc-non-percentage-units'} mustSupport: true index: 109 required: [value, unit, code] percent: match: {code: null} schema: mustSupport: true index: 110 elements: value: {short: Product Part Ingredient Content Percent, mustSupport: true, index: 111} unit: {short: Product Part Ingredient Content Percent UOM, mustSupport: true, index: 112} code: binding: {strength: required, valueSet: 'http://hl7.org/fhir/us/pq-cmc-fda/ValueSet/pqcmc-percentage-units'} index: 113 required: [value, unit] location: short: Product Part Ingredient Physical Location mustSupport: true index: 114 elements: coding: binding: {strength: required, valueSet: 'http://hl7.org/fhir/us/pq-cmc-fda/ValueSet/pqcmc-product-part-ingredient-physical-location'} mustSupport: true index: 115 text: {mustSupport: true, index: 116} required: [coding] function: mustSupport: true array: true min: 1 max: 2 index: 117 slicing: rules: closed description: Slice on the function coding discriminator: - {path: $this, type: value} min: 1 max: 2 slices: Category: match: {} schema: binding: {strength: required, valueSet: 'http://hl7.org/fhir/us/pq-cmc-fda/ValueSet/pqcmc-drug-product-component-function-category-terminology'} mustSupport: true _required: true index: 118 min: 1 max: 1 Function: match: {} schema: short: Product Part Ingredient Function mustSupport: true binding: {strength: required, valueSet: 'http://hl7.org/fhir/us/pq-cmc-fda/ValueSet/pqcmc-excipient-function-terminology'} index: 119 min: 0 max: 1 hasIngredient: {type: CodeableReference, mustSupport: true, index: 120} required: [function, hasIngredient, amount] property: type: BackboneElement mustSupport: true array: true min: 2 index: 121 elements: type: mustSupport: true index: 122 elements: text: {mustSupport: true, index: 123} required: [text] slicing: rules: closed description: Slice based on value discriminator: - {path: type.text, type: value} min: 2 slices: PPiD: match: type: {text: Product Part Identifier} schema: short: Product Part Identifier mustSupport: true _required: true index: 124 elements: type: elements: text: pattern: {type: String, value: Product Part Identifier} index: 125 value: mustSupport: true choices: [valueCodeableConcept] index: 127 valueCodeableConcept: {type: CodeableConcept, mustSupport: true, choiceOf: value, index: 128} required: [value, valueCodeableConcept] PPiDref: match: type: {text: Product Part Identifier Reference} schema: short: Product Part Identifier Reference mustSupport: true index: 129 elements: type: elements: text: pattern: {type: String, value: Product Part Identifier Reference} index: 130 value: mustSupport: true choices: [valueCodeableConcept] index: 132 valueCodeableConcept: {type: CodeableConcept, mustSupport: true, choiceOf: value, index: 133} required: [value, valueCodeableConcept] RelsProf: match: type: {text: Product Part Release Profile} schema: short: Product Part Release Profile mustSupport: true _required: true index: 134 elements: type: elements: text: pattern: {type: String, value: Product Part Release Profile} index: 135 value: mustSupport: true choices: [valueCodeableConcept] index: 137 valueCodeableConcept: {type: CodeableConcept, mustSupport: true, choiceOf: value, index: 138} required: [value, valueCodeableConcept] RelsMech: match: type: {text: Product Part Release Mechanism} schema: short: Product Part Release Mechanism mustSupport: true index: 139 elements: type: elements: text: pattern: {type: String, value: Product Part Release Mechanism} index: 140 value: mustSupport: true choices: [valueCodeableConcept] index: 142 valueCodeableConcept: {type: CodeableConcept, mustSupport: true, choiceOf: value, index: 143} required: [value, valueCodeableConcept] CoatPurpose: match: type: {text: Coating Product Part Purpose} schema: short: Coating Product Part Purpose mustSupport: true array: true index: 144 elements: type: elements: text: pattern: {type: String, value: Coating Product Part Purpose} index: 145 value: mustSupport: true choices: [valueCodeableConcept] index: 147 valueCodeableConcept: {type: CodeableConcept, mustSupport: true, choiceOf: value, index: 148} required: [value, valueCodeableConcept] Color: match: type: {text: Product Part Color Description} schema: short: Product Part Color Description mustSupport: true index: 149 elements: type: elements: text: pattern: {type: String, value: Product Part Color Description} index: 150 value: mustSupport: true choices: [valueCodeableConcept] index: 152 valueCodeableConcept: {type: CodeableConcept, mustSupport: true, choiceOf: value, index: 153} required: [value, valueCodeableConcept] AddInfo: match: type: {text: Product Part Additional Information} schema: short: Product Part Additional Information mustSupport: true index: 154 elements: type: elements: text: pattern: {type: String, value: Product Part Additional Information} index: 155 value: mustSupport: true choices: [valueMarkdown] index: 157 valueMarkdown: {type: markdown, mustSupport: true, choiceOf: value, index: 158} required: [valueMarkdown, value] component: {mustSupport: true, index: 159} required: [constituent] package_version: 2.0.0-ballot class: profile kind: resource url: http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pqcmc-product-part base: http://hl7.org/fhir/StructureDefinition/ManufacturedItemDefinition version: 2.0.0-ballot required: [component]