{
  "resourceType": "StructureDefinition",
  "id": "ext-voluntary",
  "url": "https://vitalhub.com/fhir/StructureDefinition/ext-voluntary",
  "name": "Voluntary",
  "status": "active",
  "publisher": "VitalHub",
  "description": "Extension to capture voluntary consent status and related involuntary flags for PHI disclosure and treatment.",
  "fhirVersion": "4.0.1",
  "kind": "complex-type",
  "abstract": false,
  "type": "Extension",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Extension",
  "derivation": "constraint",
  "context": [
    {
      "type": "element",
      "expression": "Consent"
    }
  ],
  "differential": {
    "element": [
      {
        "id": "Extension",
        "path": "Extension",
        "short": "Voluntary/Involuntary status",
        "definition": "Complex extension with three boolean flags: voluntary, involuntaryPHI, involuntaryTreatment.",
        "constraint": [
          {
            "key": "inv-involuntaryOnlyWhenVoluntaryTrue",
            "severity": "error",
            "human": "Involuntary sub-extensions may only be present if voluntary = true",
            "expression": "extension.where(url='voluntary').valueBoolean = true or extension.where(url='involuntaryPHI' or url='involuntaryTreatment').empty()"
          }
        ]
      },
      {
        "id": "Extension.url",
        "path": "Extension.url",
        "min": 1,
        "max": "1",
        "fixedUri": "https://vitalhub.com/fhir/StructureDefinition/ext-voluntary"
      },
      {
        "id": "Extension.extension",
        "path": "Extension.extension",
        "min": 0,
        "max": "*",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "url"
            }
          ],
          "ordered": false,
          "rules": "open"
        },
        "type": [
          {
            "code": "Extension"
          }
        ],
        "base": {
          "path": "Extension.extension",
          "min": 0,
          "max": "*"
        }
      },
      {
        "id": "Extension.extension:voluntary",
        "path": "Extension.extension",
        "sliceName": "voluntary",
        "short": "Indicates voluntary consent",
        "definition": "Boolean flag for voluntary consent status.",
        "min": 0,
        "max": "1"
      },
      {
        "id": "Extension.extension:voluntary.url",
        "path": "Extension.extension.url",
        "min": 1,
        "max": "1",
        "fixedUri": "voluntary"
      },
      {
        "id": "Extension.extension:voluntary.valueBoolean",
        "path": "Extension.extension.valueBoolean",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "boolean"
          }
        ]
      },
      {
        "id": "Extension.extension:involuntaryPHI",
        "path": "Extension.extension",
        "sliceName": "involuntaryPHI",
        "short": "Indicates involuntary PHI disclosure",
        "definition": "Boolean flag for involuntary PHI disclosure.",
        "min": 0,
        "max": "1"
      },
      {
        "id": "Extension.extension:involuntaryPHI.url",
        "path": "Extension.extension.url",
        "min": 1,
        "max": "1",
        "fixedUri": "involuntaryPHI"
      },
      {
        "id": "Extension.extension:involuntaryPHI.valueBoolean",
        "path": "Extension.extension.valueBoolean",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "boolean"
          }
        ]
      },
      {
        "id": "Extension.extension:involuntaryTreatment",
        "path": "Extension.extension",
        "sliceName": "involuntaryTreatment",
        "short": "Indicates involuntary treatment",
        "definition": "Boolean flag for involuntary treatment.",
        "min": 0,
        "max": "1"
      },
      {
        "id": "Extension.extension:involuntaryTreatment.url",
        "path": "Extension.extension.url",
        "min": 1,
        "max": "1",
        "fixedUri": "involuntaryTreatment"
      },
      {
        "id": "Extension.extension:involuntaryTreatment.valueBoolean",
        "path": "Extension.extension.valueBoolean",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "boolean"
          }
        ]
      }
    ]
  }
}