{
  "resourceType": "StructureDefinition",
  "id": "AccessibleResource",
  "url": "http://hl7.org/fhir/StructureDefinition/AccessibleResource",
  "version": "0.1",
  "name": "AccessibleResource",
  "status": "draft",
  "publisher": "Synapxe",
  "copyright": "Copyright (C) 2024 Synapxe",
  "fhirVersion": "5.0.0",
  "kind": "resource",
  "abstract": false,
  "type": "AccessibleResource",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/DomainResource",
  "derivation": "specialization",
  "differential": {
    "element": [
      {
        "id": "AccessibleResource",
        "path": "AccessibleResource",
        "constraint": [
          {
            "key": "dom-3",
            "severity": "error",
            "human": "If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource",
            "expression": "contained.where(((id.exists() and ('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url)))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(uri) = '#').exists()).not()).trace('unmatched', id).empty()"
          }
        ]
      },
      {
        "id": "AccessibleResource.functionGroup",
        "path": "AccessibleResource.functionGroup",
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "isModifier": false,
        "binding": {
          "strength": "required",
          "valueSet": "https://fhir.synapxe.sg/CodeSystem/function-group"
        }
      },
      {
        "id": "AccessibleResource.function",
        "path": "AccessibleResource.function",
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "isModifier": false
      },
      {
        "id": "AccessibleResource.action",
        "path": "AccessibleResource.action",
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "isModifier": false,
        "binding": {
          "strength": "required",
          "valueSet": "https://fhir.synapxe.sg/ValueSet/authz-action"
        }
      },
      {
        "id": "AccessibleResource.category",
        "path": "AccessibleResource.category",
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "isModifier": false
      },
      {
        "id": "AccessibleResource.description",
        "path": "AccessibleResource.description",
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "isModifier": false
      },
      {
        "id": "AccessibleResource.path",
        "path": "AccessibleResource.path",
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "isModifier": false
      },
      {
        "id": "AccessibleResource.viewOrder",
        "path": "AccessibleResource.viewOrder",
        "max": "1",
        "type": [
          {
            "code": "integer"
          }
        ],
        "isModifier": false
      },
      {
        "id": "AccessibleResource.createdBy",
        "path": "AccessibleResource.createdBy",
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "isModifier": false
      },
      {
        "id": "AccessibleResource.creationDateTime",
        "path": "AccessibleResource.creationDateTime",
        "max": "1",
        "type": [
          {
            "code": "BackboneElement"
          }
        ],
        "isModifier": false
      },
      {
        "id": "AccessibleResource.modifiedBy",
        "path": "AccessibleResource.modifiedBy",
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "isModifier": false
      }
    ]
  }
}