{
  "resourceType": "StructureDefinition",
  "id": "questionnaire-constraint",
  "extension": [
    {
      "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg",
      "valueCode": "fhir"
    },
    {
      "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm",
      "valueInteger": 1
    }
  ],
  "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-constraint",
  "version": "4.0.0",
  "name": "constraint",
  "status": "draft",
  "date": "2013-07-04",
  "publisher": "HL7",
  "contact": [
    {
      "telecom": [
        {
          "system": "url",
          "value": "http://www.hl7.org"
        }
      ]
    }
  ],
  "description": "An invariant that must be satisfied before responses to the questionnaire can be considered \"complete\".",
  "fhirVersion": "4.0.0",
  "mapping": [
    {
      "identity": "rim",
      "uri": "http://hl7.org/v3",
      "name": "RIM Mapping"
    }
  ],
  "kind": "complex-type",
  "abstract": false,
  "context": [
    {
      "type": "element",
      "expression": "Questionnaire"
    },
    {
      "type": "element",
      "expression": "Questionnaire.item"
    },
    {
      "type": "element",
      "expression": "Questionnaire.item.item"
    }
  ],
  "type": "Extension",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Extension",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "Extension",
        "path": "Extension",
        "short": "Constraint",
        "definition": "An invariant that must be satisfied before responses to the questionnaire can be considered \"complete\".",
        "comment": "This maps to the ElementDefinition.constraint element.",
        "min": 0,
        "max": "*"
      },
      {
        "id": "Extension.extension:key",
        "path": "Extension.extension",
        "sliceName": "key",
        "short": "Unique identifier",
        "definition": "Unique id for the constraint within the questionnaire.",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "Extension"
          }
        ]
      },
      {
        "id": "Extension.extension:key.extension",
        "path": "Extension.extension.extension",
        "max": "0"
      },
      {
        "id": "Extension.extension:key.url",
        "path": "Extension.extension.url",
        "type": [
          {
            "code": "uri"
          }
        ],
        "fixedUri": "key"
      },
      {
        "id": "Extension.extension:key.valueId",
        "path": "Extension.extension.valueId",
        "type": [
          {
            "code": "id"
          }
        ]
      },
      {
        "id": "Extension.extension:requirements",
        "path": "Extension.extension",
        "sliceName": "requirements",
        "short": "Why needed",
        "definition": "An explanation of why this extension is required (for documentation purposes).",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Extension"
          }
        ]
      },
      {
        "id": "Extension.extension:requirements.extension",
        "path": "Extension.extension.extension",
        "max": "0"
      },
      {
        "id": "Extension.extension:requirements.url",
        "path": "Extension.extension.url",
        "type": [
          {
            "code": "uri"
          }
        ],
        "fixedUri": "requirements"
      },
      {
        "id": "Extension.extension:requirements.valueString",
        "path": "Extension.extension.valueString",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "Extension.extension:severity",
        "path": "Extension.extension",
        "sliceName": "severity",
        "short": "error|warning",
        "definition": "Indicates how serious violating the invariant is.",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "Extension"
          }
        ]
      },
      {
        "id": "Extension.extension:severity.extension",
        "path": "Extension.extension.extension",
        "max": "0"
      },
      {
        "id": "Extension.extension:severity.url",
        "path": "Extension.extension.url",
        "type": [
          {
            "code": "uri"
          }
        ],
        "fixedUri": "severity"
      },
      {
        "id": "Extension.extension:severity.valueCode",
        "path": "Extension.extension.valueCode",
        "type": [
          {
            "code": "code"
          }
        ],
        "binding": {
          "extension": [
            {
              "url": "http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName",
              "valueString": "ConstraintSeverity"
            }
          ],
          "strength": "required",
          "description": "How important the invariant is.",
          "valueSet": "http://hl7.org/fhir/ValueSet/constraint-severity|4.0.0"
        }
      },
      {
        "id": "Extension.extension:expression",
        "path": "Extension.extension",
        "sliceName": "expression",
        "short": "Formal rule",
        "definition": "The FHIRPath expression of the rule for computable interpretation.",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "Extension"
          }
        ]
      },
      {
        "id": "Extension.extension:expression.extension",
        "path": "Extension.extension.extension",
        "max": "0"
      },
      {
        "id": "Extension.extension:expression.url",
        "path": "Extension.extension.url",
        "type": [
          {
            "code": "uri"
          }
        ],
        "fixedUri": "expression"
      },
      {
        "id": "Extension.extension:expression.valueString",
        "path": "Extension.extension.valueString",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "Extension.extension:human",
        "path": "Extension.extension",
        "sliceName": "human",
        "short": "Human-readable rule",
        "definition": "A free text expression of the rule to display to the user if the rule is violated.",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "Extension"
          }
        ]
      },
      {
        "id": "Extension.extension:human.extension",
        "path": "Extension.extension.extension",
        "max": "0"
      },
      {
        "id": "Extension.extension:human.url",
        "path": "Extension.extension.url",
        "type": [
          {
            "code": "uri"
          }
        ],
        "fixedUri": "human"
      },
      {
        "id": "Extension.extension:human.valueString",
        "path": "Extension.extension.valueString",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "Extension.extension:location",
        "path": "Extension.extension",
        "sliceName": "location",
        "short": "Relative path to elements",
        "definition": "Relative paths to the questions this rule is enforced against.",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "Extension"
          }
        ]
      },
      {
        "id": "Extension.extension:location.extension",
        "path": "Extension.extension.extension",
        "max": "0"
      },
      {
        "id": "Extension.extension:location.url",
        "path": "Extension.extension.url",
        "type": [
          {
            "code": "uri"
          }
        ],
        "fixedUri": "location"
      },
      {
        "id": "Extension.extension:location.valueString",
        "path": "Extension.extension.valueString",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "Extension.url",
        "path": "Extension.url",
        "type": [
          {
            "code": "uri"
          }
        ],
        "fixedUri": "http://hl7.org/fhir/StructureDefinition/questionnaire-constraint"
      },
      {
        "id": "Extension.value[x]",
        "path": "Extension.value[x]",
        "min": 0,
        "max": "0"
      }
    ]
  }
}