http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-behave|4.0.0-ballot

Defines additional capabilities for controlling data entry and calculating values within the questionnaire.
description: Defines additional capabilities for controlling data entry and calculating values within the questionnaire.
derivation: constraint
name: SDCQuestionnaireBehave
type: Questionnaire
elements:
  extension:
    mustSupport: true
    array: true
    index: 0
    slicing:
      slices:
        entryMode:
          match: {}
          schema: {mustSupport: true, array: true, index: 0}
          min: 0
        submissionEndpoint:
          match: {}
          schema: {mustSupport: true, array: true, index: 1}
          min: 0
        signatureRequired:
          match: {}
          schema: {array: true, index: 2}
          min: 0
        constraint:
          match: {}
          schema: {array: true, index: 3}
          min: 0
        library:
          match: {}
          schema: {array: true, index: 4}
          min: 0
        launchContext:
          match: {}
          schema: {array: true, index: 5}
          min: 0
        variable:
          match: {}
          schema: {array: true, index: 6}
          min: 0
  modifierExtension:
    index: 7
    slicing:
      rules: open
      ordered: false
      discriminator:
      - {path: url, type: value}
      min: null
      slices:
        rendering-criticalExtension:
          match: {url: null}
          schema: {mustSupport: true, array: true, index: 8}
          min: 0
  item:
    constraint:
      sdc-behave-2: {human: An item cannot have both enableWhen and enableWhenExpression, source: 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-behave', severity: error, expression: 'enableWhen.empty() or extension(''http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression'').empty()'}
      sdc-behave-1: {human: An item cannot have both initial.value and initialExpression, source: 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-behave', severity: error, expression: 'initial.empty() or extension(''http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression'').empty()'}
      sdc-behave-3:
        human: For items of type 'quantity', it is best practice to include either a 'unitOption' or 'unitValueSet' extension to provide a list of valid units.
        source: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-behave
        severity: warning
        extension:
        - {url: 'http://hl7.org/fhir/StructureDefinition/elementdefinition-bestpractice', valueBoolean: true}
        expression: (type = 'quantity' implies (extension('http://hl7.org/fhir/StructureDefinition/questionnaire-unitOption').exists() or extension('http://hl7.org/fhir/StructureDefinition/questionnaire-unitValueSet').exists())) and (repeat(item).where(type = 'quantity')).all(extension('http://hl7.org/fhir/StructureDefinition/questionnaire-unitOption').exists() or extension('http://hl7.org/fhir/StructureDefinition/questionnaire-unitValueSet').exists())
    index: 9
    extensions:
      answerOptionsToggleExpression: {url: null, min: 0, mustSupport: true, array: true, index: 45}
      minQuantity:
        url: null
        mustSupport: false
        index: 34
        elements:
          value:
            mustSupport: false
            choices: []
            index: 36
          value[x]:
            extensions:
              minQuantityCalculated: {url: null, min: 0, max: 1, index: 37}
            elements:
              extension:
                index: 37
                slicing:
                  slices:
                    minQuantityCalculated:
                      match: {}
                      schema: {index: 37}
                      min: 0
                      max: 1
      maxValue:
        url: null
        mustSupport: true
        index: 30
        elements:
          value:
            mustSupport: false
            choices: []
            index: 32
          value[x]:
            extensions:
              maxValueCalculated: {url: null, min: 0, max: 1, index: 33}
            elements:
              extension:
                index: 33
                slicing:
                  slices:
                    maxValueCalculated:
                      match: {}
                      schema: {index: 33}
                      min: 0
                      max: 1
      disabledDisplay: {url: null, min: 0, max: 1, index: 10}
      allowedProfile: {url: null, min: 0, array: true, index: 51}
      candidateExpression: {url: null, min: 0, max: 1, index: 52}
      maxDecimalPlaces: {url: null, min: 0, max: 1, mustSupport: true, index: 42}
      unitSupplementalSystem: {url: null, min: 0, max: 1, index: 49}
      keyboardType: {url: null, min: 0, max: 1, index: 58}
      itemConstraint: {url: null, min: 0, array: true, index: 54}
      allowedResource: {url: null, min: 0, mustSupport: true, array: true, index: 50}
      lookupQuestionnaire: {url: null, min: 0, max: 1, index: 53}
      unitValueSet: {url: null, min: 0, max: 1, mustSupport: true, index: 47}
      initialExpression: {url: null, min: 0, max: 1, index: 55}
      usageMode: {url: null, min: 0, max: 1, mustSupport: true, index: 12}
      unitOpen: {url: null, min: 0, max: 1, index: 48}
      minValue:
        url: null
        mustSupport: true
        index: 26
        elements:
          value:
            mustSupport: false
            choices: []
            index: 28
          value[x]:
            extensions:
              minValueCalculated: {url: null, min: 0, max: 1, index: 29}
            elements:
              extension:
                index: 29
                slicing:
                  slices:
                    minValueCalculated:
                      match: {}
                      schema: {index: 29}
                      min: 0
                      max: 1
      minLength: {url: null, min: 0, max: 1, mustSupport: true, index: 24}
      answerExpression: {url: null, min: 0, max: 1, mustSupport: true, index: 11}
      itemMaxOccurs:
        url: null
        mustSupport: true
        index: 19
        elements:
          value:
            mustSupport: false
            choices: []
            index: 21
          value[x]:
            extensions:
              itemMaxOccursExpression: {url: null, min: 0, max: 1, mustSupport: true, index: 23}
            elements:
              extension:
                index: 22
                slicing:
                  rules: open
                  ordered: false
                  discriminator:
                  - {path: url, type: value}
                  min: null
                  slices:
                    itemMaxOccursExpression:
                      match: {url: null}
                      schema: {mustSupport: true, index: 23}
                      min: 0
                      max: 1
      itemMinOccurs:
        url: null
        mustSupport: true
        index: 14
        elements:
          value:
            mustSupport: false
            choices: []
            index: 16
          value[x]:
            extensions:
              itemMinOccursExpression: {url: null, min: 0, max: 1, mustSupport: true, index: 18}
            elements:
              extension:
                index: 17
                slicing:
                  rules: open
                  ordered: false
                  discriminator:
                  - {path: url, type: value}
                  min: null
                  slices:
                    itemMinOccursExpression:
                      match: {url: null}
                      schema: {mustSupport: true, index: 18}
                      min: 0
                      max: 1
      mimeType: {url: null, min: 0, mustSupport: true, array: true, index: 43}
      regex: {url: null, min: 0, max: 1, mustSupport: true, index: 25}
      enableWhenExpression: {url: null, min: 0, max: 1, mustSupport: true, index: 57}
      calculatedExpression: {url: null, min: 0, max: 1, index: 56}
      maxQuantity:
        url: null
        mustSupport: false
        index: 38
        elements:
          value:
            mustSupport: false
            choices: []
            index: 40
          value[x]:
            extensions:
              maxQuantityCalculated: {url: null, min: 0, max: 1, index: 41}
            elements:
              extension:
                index: 41
                slicing:
                  slices:
                    maxQuantityCalculated:
                      match: {}
                      schema: {index: 41}
                      min: 0
                      max: 1
      maxSize: {url: null, min: 0, max: 1, index: 44}
      unitOption: {url: null, min: 0, mustSupport: true, array: true, index: 46}
      itemSignatureRequired: {url: null, min: 0, array: true, index: 13}
    elements:
      extension:
        index: 10
        slicing:
          slices:
            answerOptionsToggleExpression:
              match: {}
              schema: {mustSupport: true, array: true, index: 45}
              min: 0
            minQuantity:
              match: {}
              schema:
                mustSupport: false
                index: 34
                elements:
                  value:
                    mustSupport: false
                    choices: []
                    index: 36
                  value[x]:
                    extensions:
                      minQuantityCalculated: {url: null, min: 0, max: 1, index: 37}
                    elements:
                      extension:
                        index: 37
                        slicing:
                          slices:
                            minQuantityCalculated:
                              match: {}
                              schema: {index: 37}
                              min: 0
                              max: 1
            maxValue:
              match: {}
              schema:
                mustSupport: true
                index: 30
                elements:
                  value:
                    mustSupport: false
                    choices: []
                    index: 32
                  value[x]:
                    extensions:
                      maxValueCalculated: {url: null, min: 0, max: 1, index: 33}
                    elements:
                      extension:
                        index: 33
                        slicing:
                          slices:
                            maxValueCalculated:
                              match: {}
                              schema: {index: 33}
                              min: 0
                              max: 1
            disabledDisplay:
              match: {}
              schema: {index: 10}
              min: 0
              max: 1
            allowedProfile:
              match: {}
              schema: {array: true, index: 51}
              min: 0
            candidateExpression:
              match: {}
              schema: {index: 52}
              min: 0
              max: 1
            maxDecimalPlaces:
              match: {}
              schema: {mustSupport: true, index: 42}
              min: 0
              max: 1
            unitSupplementalSystem:
              match: {}
              schema: {index: 49}
              min: 0
              max: 1
            keyboardType:
              match: {}
              schema: {index: 58}
              min: 0
              max: 1
            itemConstraint:
              match: {}
              schema: {array: true, index: 54}
              min: 0
            allowedResource:
              match: {}
              schema: {mustSupport: true, array: true, index: 50}
              min: 0
            lookupQuestionnaire:
              match: {}
              schema: {index: 53}
              min: 0
              max: 1
            unitValueSet:
              match: {}
              schema: {mustSupport: true, index: 47}
              min: 0
              max: 1
            initialExpression:
              match: {}
              schema: {index: 55}
              min: 0
              max: 1
            usageMode:
              match: {}
              schema: {mustSupport: true, index: 12}
              min: 0
              max: 1
            unitOpen:
              match: {}
              schema: {index: 48}
              min: 0
              max: 1
            minValue:
              match: {}
              schema:
                mustSupport: true
                index: 26
                elements:
                  value:
                    mustSupport: false
                    choices: []
                    index: 28
                  value[x]:
                    extensions:
                      minValueCalculated: {url: null, min: 0, max: 1, index: 29}
                    elements:
                      extension:
                        index: 29
                        slicing:
                          slices:
                            minValueCalculated:
                              match: {}
                              schema: {index: 29}
                              min: 0
                              max: 1
            minLength:
              match: {}
              schema: {mustSupport: true, index: 24}
              min: 0
              max: 1
            answerExpression:
              match: {}
              schema: {mustSupport: true, index: 11}
              min: 0
              max: 1
            itemMaxOccurs:
              match: {}
              schema:
                mustSupport: true
                index: 19
                elements:
                  value:
                    mustSupport: false
                    choices: []
                    index: 21
                  value[x]:
                    extensions:
                      itemMaxOccursExpression: {url: null, min: 0, max: 1, mustSupport: true, index: 23}
                    elements:
                      extension:
                        index: 22
                        slicing:
                          rules: open
                          ordered: false
                          discriminator:
                          - {path: url, type: value}
                          min: null
                          slices:
                            itemMaxOccursExpression:
                              match: {url: null}
                              schema: {mustSupport: true, index: 23}
                              min: 0
                              max: 1
            itemMinOccurs:
              match: {}
              schema:
                mustSupport: true
                index: 14
                elements:
                  value:
                    mustSupport: false
                    choices: []
                    index: 16
                  value[x]:
                    extensions:
                      itemMinOccursExpression: {url: null, min: 0, max: 1, mustSupport: true, index: 18}
                    elements:
                      extension:
                        index: 17
                        slicing:
                          rules: open
                          ordered: false
                          discriminator:
                          - {path: url, type: value}
                          min: null
                          slices:
                            itemMinOccursExpression:
                              match: {url: null}
                              schema: {mustSupport: true, index: 18}
                              min: 0
                              max: 1
            mimeType:
              match: {}
              schema: {mustSupport: true, array: true, index: 43}
              min: 0
            regex:
              match: {}
              schema: {mustSupport: true, index: 25}
              min: 0
              max: 1
            enableWhenExpression:
              match: {}
              schema: {mustSupport: true, index: 57}
              min: 0
              max: 1
            calculatedExpression:
              match: {}
              schema: {index: 56}
              min: 0
              max: 1
            maxQuantity:
              match: {}
              schema:
                mustSupport: false
                index: 38
                elements:
                  value:
                    mustSupport: false
                    choices: []
                    index: 40
                  value[x]:
                    extensions:
                      maxQuantityCalculated: {url: null, min: 0, max: 1, index: 41}
                    elements:
                      extension:
                        index: 41
                        slicing:
                          slices:
                            maxQuantityCalculated:
                              match: {}
                              schema: {index: 41}
                              min: 0
                              max: 1
            maxSize:
              match: {}
              schema: {index: 44}
              min: 0
              max: 1
            unitOption:
              match: {}
              schema: {mustSupport: true, array: true, index: 46}
              min: 0
            itemSignatureRequired:
              match: {}
              schema: {array: true, index: 13}
              min: 0
      enableWhen:
        elements:
          question: {mustSupport: true, index: 59}
          operator: {mustSupport: true, index: 60}
          answer:
            mustSupport: true
            choices: []
            index: 62
      enableBehavior: {mustSupport: true, index: 63}
      required:
        index: 64
        elements:
          value:
            extensions:
              requiredExpression: {url: null, min: 0, max: 1, mustSupport: true, index: 66}
            elements:
              extension:
                index: 65
                slicing:
                  rules: open
                  ordered: false
                  discriminator:
                  - {path: url, type: value}
                  min: null
                  slices:
                    requiredExpression:
                      match: {url: null}
                      schema: {mustSupport: true, index: 66}
                      min: 0
                      max: 1
      repeats:
        elements:
          value:
            extensions:
              repeatsExpression: {url: null, min: 0, max: 1, mustSupport: true, index: 68}
            elements:
              extension:
                index: 67
                slicing:
                  rules: open
                  ordered: false
                  discriminator:
                  - {path: url, type: value}
                  min: null
                  slices:
                    repeatsExpression:
                      match: {url: null}
                      schema: {mustSupport: true, index: 68}
                      min: 0
                      max: 1
      readOnly:
        elements:
          value:
            extensions:
              readOnlyExpression: {url: null, min: 0, max: 1, mustSupport: true, index: 70}
            elements:
              extension:
                index: 69
                slicing:
                  rules: open
                  ordered: false
                  discriminator:
                  - {path: url, type: value}
                  min: null
                  slices:
                    readOnlyExpression:
                      match: {url: null}
                      schema: {mustSupport: true, index: 70}
                      min: 0
                      max: 1
      answerValueSet:
        elements:
          value:
            extensions:
              answerValueSetExpression: {url: null, min: 0, max: 1, mustSupport: true, index: 72}
            elements:
              extension:
                index: 71
                slicing:
                  rules: open
                  ordered: false
                  discriminator:
                  - {path: url, type: value}
                  min: null
                  slices:
                    answerValueSetExpression:
                      match: {url: null}
                      schema: {mustSupport: true, index: 72}
                      min: 0
                      max: 1
      answerOption:
        extensions:
          optionExclusive: {url: null, min: 0, max: 1, mustSupport: true, index: 74}
          itemWeight: {url: null, min: 0, max: 1, mustSupport: true, index: 75}
        elements:
          extension:
            index: 73
            slicing:
              rules: open
              ordered: false
              discriminator:
              - {path: url, type: value}
              min: null
              slices:
                optionExclusive:
                  match: {url: null}
                  schema: {mustSupport: true, index: 74}
                  min: 0
                  max: 1
                itemWeight:
                  match: {url: null}
                  schema: {mustSupport: true, index: 75}
                  min: 0
                  max: 1
extensions:
  entryMode: {url: null, min: 0, mustSupport: true, array: true, index: 0}
  submissionEndpoint: {url: null, min: 0, mustSupport: true, array: true, index: 1}
  signatureRequired: {url: null, min: 0, array: true, index: 2}
  constraint: {url: null, min: 0, array: true, index: 3}
  library: {url: null, min: 0, array: true, index: 4}
  launchContext: {url: null, min: 0, array: true, index: 5}
  variable: {url: null, min: 0, array: true, index: 6}
class: profile
kind: resource
url: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-behave
base: http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnairecommon
version: 4.0.0-ballot