PackagesCanonicalsLogsProblems
    Packages
    hl7.fhir.us.pq@cmc-fda-2.0.0-ballot
    http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pqcmc-quality-specification
description: A quality specification is for a drug product or drug substance (excipient, API or raw material).
package_name: hl7.fhir.us.pq
derivation: constraint
name: QualitySpecification
type: PlanDefinition
elements:
  date: {short: Specification Version Date, mustSupport: true, index: 15}
  approvalDate: {short: Specification Status Date, mustSupport: true, index: 16}
  goal:
    short: Acceptance Criteria
    mustSupport: true
    index: 17
    extensions:
      ac-additional-info: {url: 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pq-additional-info-extension', min: 0, max: 1, type: Extension, short: Acceptance Criteria Additional Information, index: 19}
    elements:
      extension:
        index: 18
        slicing:
          rules: open
          ordered: false
          discriminator:
          - {path: url, type: value}
          min: null
          slices:
            ac-additional-info:
              match: {url: null}
              schema: {type: Extension, short: Acceptance Criteria Additional Information, url: 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pq-additional-info-extension', index: 19}
              min: 0
              max: 1
      description: {short: Original Text, mustSupport: true, index: 20}
      addresses:
        short: Acceptance Criteria Usage
        binding: {strength: required, valueSet: 'http://hl7.org/fhir/us/pq-cmc-fda/ValueSet/pqcmc-test-usage-terminology'}
        mustSupport: true
        index: 21
      target:
        short: Acceptance Criteron
        constraint:
          cmc-target-range: {human: 'When the Range extension is present, detail cannot be present.', source: 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pqcmc-quality-specification', severity: error, expression: 'modifierExtension.where(url = ''http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pq-target-range'').exists() implies detail.exists().not()'}
        mustSupport: true
        index: 22
        elements:
          modifierExtension:
            index: 23
            slicing:
              rules: open
              ordered: false
              discriminator:
              - {path: url, type: value}
              min: null
              slices:
                targetRange:
                  match: {url: null}
                  schema: {type: Extension, mustSupport: true, url: 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pq-target-range', index: 24}
                  min: 0
                  max: 1
          measure: {type: CodeableConcept, short: Detailed parameter being measured if more granular than Sub-Test, mustSupport: true, index: 25}
          detail:
            short: Number of Replicates
            mustSupport: true
            choices: [detailInteger]
            index: 42
            slicing:
              slices:
                detailInteger:
                  match: {}
                  schema:
                    short: Number of Replicates
                    mustSupport: true
                    choices: [detailInteger]
                    index: 42
                  min: 0
                  max: 1
          detailQuantity:
            short: ValueNumeric
            type: Quantity
            mustSupport: true
            choiceOf: detail
            index: 33
            slicing:
              slices:
                detailQuantity:
                  match: {}
                  schema: {short: ValueNumeric, type: Quantity, mustSupport: true, choiceOf: detail, index: 33}
                  min: 0
                  max: 1
          detailString:
            short: Value
            type: string
            mustSupport: true
            choiceOf: detail
            index: 40
            slicing:
              slices:
                detailString:
                  match: {}
                  schema: {short: Value, type: string, mustSupport: true, choiceOf: detail, index: 40}
                  min: 0
                  max: 1
          detailInteger:
            short: Number of Replicates
            type: integer
            mustSupport: true
            choiceOf: detail
            index: 43
            slicing:
              slices:
                detailInteger:
                  match: {}
                  schema: {short: Number of Replicates, type: integer, mustSupport: true, choiceOf: detail, index: 43}
                  min: 0
                  max: 1
          detail[x]:
            elements:
              value: {mustSupport: true, index: 34}
              comparator: {mustSupport: true, index: 35}
              unit: {mustSupport: true, index: 36}
              code: {mustSupport: true, index: 37}
            required: [value, unit, code]
          due: {index: 44}
    required: [addresses, target]
  type:
    short: Specification Type
    mustSupport: true
    index: 7
    elements:
      coding:
        mustSupport: true
        array: true
        min: 2
        max: 2
        index: 8
        slicing:
          rules: closed
          ordered: false
          description: Slice on the coding itself
          discriminator:
          - {path: $this, type: value}
          min: 2
          max: 2
          slices:
            DefinitionType:
              match: {code: workflow-definition, system: 'http://terminology.hl7.org/CodeSystem/plan-definition-type', display: Workflow Definition}
              schema:
                mustSupport: true
                pattern:
                  type: Coding
                  value: {code: workflow-definition, system: 'http://terminology.hl7.org/CodeSystem/plan-definition-type', display: Workflow Definition}
                _required: true
                index: 9
              min: 1
              max: 1
            SpecType:
              match: {}
              schema:
                short: Specification Type
                mustSupport: true
                _required: true
                binding: {strength: required, valueSet: 'http://hl7.org/fhir/us/pq-cmc-fda/ValueSet/pqcmc-specification-type-terminology'}
                index: 10
              min: 1
              max: 1
  title: {short: Specification Title, mustSupport: true, index: 5}
  extension:
    index: 0
    slicing:
      rules: open
      ordered: false
      discriminator:
      - {path: url, type: value}
      min: 1
      slices:
        ApprovalStatus:
          match: {url: null}
          schema: {type: Extension, mustSupport: true, url: 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pq-specification-status-extension', index: 1}
          min: 1
          max: 1
        spec-additional-info:
          match: {url: null}
          schema: {type: Extension, short: Specification Additional Information, url: 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pq-additional-info-extension', index: 2}
          min: 0
          max: 1
  status: {mustSupport: true, index: 11}
  subtitle: {short: Specification Subtitle, mustSupport: true, index: 6}
  identifier: {mustSupport: true, index: 3}
  action:
    short: Method
    constraint:
      cmc-link-required: {human: Action linkId is required for alternate tests, source: 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pqcmc-quality-specification', severity: error, expression: (action.relatedAction.count() > 0) implies action.linkId.exists()}
      cmc-single-or-multistage:
        human: if a test is multi-stage, the test can't have a prefix and its stages must have a name and can't be named 'Single Stage' and must be unique. If it's single stage its prefix is 'Single Stage' and its groups can't have prefixes
        source: http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pqcmc-quality-specification
        severity: error
        expression: "((\n    prefix.exists() implies \n        action.prefix.empty() and prefix = 'Single Stage'    \n) and (\n    prefix.empty() implies (\n        (action.where(\n            prefix.exists() and \n            prefix != 'Single Stage'\n        ).count() = action.count()) and \n        action.prefix.isDistinct()\n    )\n)) = true"
    mustSupport: true
    index: 45
    elements:
      description: {short: Test Additional Information, mustSupport: true, index: 49}
      linkId: {short: only required for alternate tests, mustSupport: true, index: 46}
      goalId: {short: Reference to Acceptance Criteria, mustSupport: true, index: 59}
      relatedAction:
        short: Alternate Test
        mustSupport: true
        index: 60
        elements:
          targetId: {mustSupport: true, index: 61}
          relationship:
            short: Code is concurrent
            mustSupport: true
            pattern: {type: Code, value: concurrent}
            index: 62
      title: {short: Test Name, mustSupport: true, index: 48}
      documentation:
        mustSupport: true
        index: 56
        elements:
          type:
            pattern: {type: Code, value: documentation}
            index: 57
          label: {short: Reference to Procedure, mustSupport: true, index: 58}
        required: [label]
      prefix: {short: Stage Name, mustSupport: true, index: 47}
      reason:
        min: 1
        short: Test Category | Test Subcategory
        index: 53
        mustSupport: true
        array: true
        elements:
          extension:
            index: 54
            slicing:
              slices:
                categoryLevel:
                  match: {}
                  schema: {type: Extension, mustSupport: true, url: 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pq-hierarchical-level-extension', index: 55}
                  min: 1
                  max: 1
        binding: {strength: required, valueSet: 'http://hl7.org/fhir/us/pq-cmc-fda/ValueSet/pqcmc-test-category-terminology'}
        extensions:
          categoryLevel: {url: 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pq-hierarchical-level-extension', min: 1, max: 1, type: Extension, mustSupport: true, index: 55}
        max: 2
        required: [extension]
      code:
        short: Test Method Origin
        mustSupport: true
        index: 50
        elements:
          coding:
            binding: {strength: required, valueSet: 'http://hl7.org/fhir/us/pq-cmc-fda/ValueSet/pqcmc-test-method-origin-terminology'}
            mustSupport: true
            index: 51
          text: {short: Analytical Procedure, mustSupport: true, index: 52}
        required: [coding, text]
      action:
        type: BackboneElement
        short: Groups or Stages
        mustSupport: true
        index: 63
        elements:
          prefix: {short: Stage Name, mustSupport: true, index: 64}
          title: {short: Test Name (only reqired if different than above), mustSupport: true, index: 65}
          description: {short: Test Additional Information | Stage Additional Information, mustSupport: true, index: 66}
          documentation:
            mustSupport: true
            index: 67
            elements:
              type:
                pattern: {type: Code, value: documentation}
                index: 68
              document:
                short: Test or Stage Additional Information Visual Attachments
                mustSupport: true
                index: 69
                elements:
                  contentType: {mustSupport: true, index: 70}
                  data: {mustSupport: true, index: 71}
                  title: {short: Document file name including the file extension, mustSupport: true, index: 72}
                required: [title, contentType, data]
            required: [document]
          goalId: {short: Reference to Acceptance Criteria, mustSupport: true, index: 73}
          action:
            type: BackboneElement
            short: Sub-Test
            constraint:
              cmc-subtest-rrt: {human: 'a subtest''s prefix represents relative retention time, should it exist', source: 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pqcmc-quality-specification', severity: error, expression: prefix.exists() implies prefix.single() = 'RRT'}
            mustSupport: true
            index: 74
            elements:
              prefix: {short: RRT, mustSupport: true, index: 75}
              title: {short: Test Name | RRT (complex testing), mustSupport: true, index: 76}
              description: {short: Test Additional Information | Stage Additional Information, mustSupport: true, index: 77}
              goalId: {short: Reference to Acceptance Criteria, mustSupport: true, index: 78}
            required: [title, goalId]
    required: [title, reason, code]
  version: {short: Specification Version, mustSupport: true, index: 4}
  subjectReference:
    type: Reference
    mustSupport: true
    choiceOf: subject
    refers: ['http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pqcmc-drug-product-handle', 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pqcmc-excipient', 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pqcmc-routine-drug-substance']
    index: 14
  subject:
    mustSupport: true
    choices: [subjectReference]
    index: 13
package_version: cmc-fda-2.0.0-ballot
extensions:
  ApprovalStatus: {url: 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pq-specification-status-extension', min: 1, max: 1, type: Extension, mustSupport: true, index: 1}
  spec-additional-info: {url: 'http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pq-additional-info-extension', min: 0, max: 1, type: Extension, short: Specification Additional Information, index: 2}
class: profile
kind: resource
url: http://hl7.org/fhir/us/pq-cmc-fda/StructureDefinition/pqcmc-quality-specification
base: http://hl7.org/fhir/StructureDefinition/PlanDefinition
version: 2.0.0-ballot
required: [extension, subjectReference, action, subject, title, type, version, date]