{
  "resourceType": "StructureDefinition",
  "id": "Notification",
  "url": "http://ihis.sg/fhir/StructureDefinition/Notification",
  "name": "Notification",
  "title": "Notification Resource",
  "status": "draft",
  "fhirVersion": "4.0.1",
  "kind": "resource",
  "abstract": false,
  "type": "Notification",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/DomainResource",
  "derivation": "specialization",
  "snapshot": {
    "element": [
      {
        "id": "Notification",
        "path": "Notification",
        "short": "Notification Resource",
        "definition": "A resource representing a notification with various attributes",
        "min": 0,
        "max": "*",
        "base": {
          "path": "DomainResource",
          "min": 0,
          "max": "*"
        },
        "isModifier": false
      },
      {
        "id": "Notification.extension",
        "path": "Notification.extension",
        "short": "Additional information for the notification",
        "definition": "A collection of extension elements to provide additional information about the notification",
        "min": 0,
        "max": "*",
        "base": {
          "path": "Extension",
          "min": 0,
          "max": "*"
        },
        "isModifier": false
      },
      {
        "id": "Notification.modifierExtension",
        "path": "Notification.modifierExtension",
        "short": "Additional information for the notification, modifying the element's meaning",
        "definition": "A collection of modifier extension elements, used to modify the meaning of the notification",
        "min": 0,
        "max": "*",
        "base": {
          "path": "Extension",
          "min": 0,
          "max": "*"
        },
        "isModifier": true
      },
      {
        "id": "Notification.notificationContext",
        "path": "Notification.notificationContext",
        "short": "Context of the notification",
        "definition": "The specific context or domain of the notification (e.g., Appointments)",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "Notification.channelType",
        "path": "Notification.channelType",
        "short": "Channel type for notification",
        "definition": "The method of notification delivery (e.g., push-notification, email)",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "Notification.recipient",
        "path": "Notification.recipient",
        "short": "Recipients of the notification",
        "definition": "A list of recipients for the notification",
        "min": 1,
        "max": "*",
        "type": [
          {
            "code": "BackboneElement"
          }
        ]
      },
      {
        "id": "Notification.recipient.type",
        "path": "Notification.recipient.type",
        "short": "Type of recipient identifier",
        "definition": "The type of identifier used to specify the recipient (e.g., device-user-id)",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "Notification.recipient.userIdentifier",
        "path": "Notification.recipient.userIdentifier",
        "short": "User identifier details",
        "definition": "The user identifier for the recipient",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "Identifier"
          }
        ]
      },
      {
        "id": "Notification.pushNotificationAttribute",
        "path": "Notification.pushNotificationAttribute",
        "short": "Attributes specific to push notifications",
        "definition": "Push notification specific attributes such as filtering and badge count",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "BackboneElement"
          }
        ]
      },
      {
        "id": "Notification.pushNotificationAttribute.deviceFilterCriteria",
        "path": "Notification.pushNotificationAttribute.deviceFilterCriteria",
        "short": "Criteria for device filtering",
        "definition": "Criteria used to filter devices for push notifications",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "Notification.pushNotificationAttribute.badge",
        "path": "Notification.pushNotificationAttribute.badge",
        "short": "Badge count for notification",
        "definition": "The badge count for the push notification",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "Notification.priority",
        "path": "Notification.priority",
        "short": "Notification priority",
        "definition": "The priority of the notification",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "Notification.additionalInfo",
        "path": "Notification.additionalInfo",
        "short": "Additional information for the notification",
        "definition": "Additional notes or details for the notification",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "Notification.title",
        "path": "Notification.title",
        "short": "Title of the notification",
        "definition": "The title of the notification",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      },
      {
        "id": "Notification.content",
        "path": "Notification.content",
        "short": "Content of the notification",
        "definition": "The body content of the notification",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ]
      }
    ]
  },
  "differential": {
    "element": [
      {
        "id": "Notification",
        "path": "Notification",
        "short": "Notification Resource",
        "definition": "A resource representing a notification with various attributes"
      },
      {
        "id": "Notification.extension",
        "path": "Notification.extension",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "url"
            }
          ],
          "rules": "open"
        }
      },
      {
        "id": "Notification.modifierExtension",
        "path": "Notification.modifierExtension",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "url"
            }
          ],
          "rules": "open"
        }
      },
      {
        "id": "Notification.notificationContext",
        "path": "Notification.notificationContext",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "short": "Context of the notification",
        "definition": "The specific context or domain of the notification (e.g., Appointments)"
      },
      {
        "id": "Notification.channelType",
        "path": "Notification.channelType",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "short": "Channel type for notification",
        "definition": "The method of notification delivery (e.g., push-notification, email)"
      },
      {
        "id": "Notification.recipient",
        "path": "Notification.recipient",
        "min": 1,
        "max": "*",
        "type": [
          {
            "code": "BackboneElement"
          }
        ],
        "short": "Recipients of the notification"
      },
      {
        "id": "Notification.recipient.type",
        "path": "Notification.recipient.type",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "short": "Type of recipient identifier",
        "definition": "The type of identifier used to specify the recipient (e.g., device-user-id)"
      },
      {
        "id": "Notification.recipient.userIdentifier",
        "path": "Notification.recipient.userIdentifier",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "Identifier"
          }
        ],
        "short": "User identifier details"
      },
      {
        "id": "Notification.pushNotificationAttribute",
        "path": "Notification.pushNotificationAttribute",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "BackboneElement"
          }
        ],
        "short": "Attributes specific to push notifications"
      },
      {
        "id": "Notification.pushNotificationAttribute.deviceFilterCriteria",
        "path": "Notification.pushNotificationAttribute.deviceFilterCriteria",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "short": "Criteria for device filtering"
      },
      {
        "id": "Notification.pushNotificationAttribute.badge",
        "path": "Notification.pushNotificationAttribute.badge",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "short": "Badge count for notification"
      },
      {
        "id": "Notification.priority",
        "path": "Notification.priority",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "short": "Notification priority",
        "binding": {
          "strength": "required",
          "valueSet": "http://hl7.org/fhir/ValueSet/request-priority"
        }
      },
      {
        "id": "Notification.additionalInfo",
        "path": "Notification.additionalInfo",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "short": "Additional information for the notification"
      },
      {
        "id": "Notification.title",
        "path": "Notification.title",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "short": "Title of the notification"
      },
      {
        "id": "Notification.content",
        "path": "Notification.content",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "short": "Content of the notification"
      }
    ]
  }
}