{
  "resourceType": "StructureDefinition",
  "id": "bookable-healthcareservice-profile",
  "url": "http://fhir.xt.dev/StructureDefinition/BookableHealthcareService",
  "version": "0.0.3",
  "name": "BookableHealthcareService",
  "status": "draft",
  "date": "2026-05-06T20:30:00+00:00",
  "publisher": "x-tention Informationstechnologie GmbH",
  "contact": [
    {
      "telecom": [
        {
          "system": "email",
          "value": "fhir.profiling@x-tention.com",
          "use": "work"
        }
      ]
    }
  ],
  "description": "A HealthcareService that can be booked for a patient.",
  "copyright": "x-tention Informationstechnologie GmbH",
  "fhirVersion": "4.0.1",
  "kind": "resource",
  "abstract": false,
  "type": "HealthcareService",
  "baseDefinition": "http://fhir.xt.dev/StructureDefinition/BaseAppointmentHealthcareService",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "HealthcareService.extension:offeredInHealthcareService",
        "path": "HealthcareService.extension",
        "sliceName": "offeredInHealthcareService",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "http://fhir.xt.dev/StructureDefinition/OfferedInHealthcareService"
            ]
          }
        ],
        "isModifier": false
      },
      {
        "id": "HealthcareService.extension:offeredInHealthcareService.value[x].reference",
        "path": "HealthcareService.extension.value[x].reference",
        "min": 1
      },
      {
        "id": "HealthcareService.identifier",
        "path": "HealthcareService.identifier",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "use"
            },
            {
              "type": "value",
              "path": "type.coding.system"
            },
            {
              "type": "value",
              "path": "type.coding.code"
            }
          ],
          "rules": "closed"
        }
      },
      {
        "id": "HealthcareService.identifier:primaryIdentifier",
        "path": "HealthcareService.identifier",
        "sliceName": "primaryIdentifier",
        "short": "Primary Identifier",
        "definition": "This is the primary identifier of the bookableHealthcareService. For Timerbee HealthcareServices this is the external purpose identifier.",
        "min": 1,
        "max": "1"
      },
      {
        "id": "HealthcareService.identifier:primaryIdentifier.use",
        "path": "HealthcareService.identifier.use",
        "fixedCode": "official"
      },
      {
        "id": "HealthcareService.identifier:primaryIdentifier.type",
        "path": "HealthcareService.identifier.type",
        "min": 1
      },
      {
        "id": "HealthcareService.identifier:primaryIdentifier.type.coding",
        "path": "HealthcareService.identifier.type.coding",
        "min": 1,
        "max": "1"
      },
      {
        "id": "HealthcareService.identifier:primaryIdentifier.type.coding.system",
        "path": "HealthcareService.identifier.type.coding.system",
        "min": 1,
        "fixedUri": "http://fhir.xt.dev/CodeSystem/IdentifierType"
      },
      {
        "id": "HealthcareService.identifier:primaryIdentifier.type.coding.version",
        "path": "HealthcareService.identifier.type.coding.version",
        "max": "0"
      },
      {
        "id": "HealthcareService.identifier:primaryIdentifier.type.coding.code",
        "path": "HealthcareService.identifier.type.coding.code",
        "min": 1,
        "fixedCode": "BHSI"
      },
      {
        "id": "HealthcareService.identifier:primaryIdentifier.type.coding.userSelected",
        "path": "HealthcareService.identifier.type.coding.userSelected",
        "max": "0"
      },
      {
        "id": "HealthcareService.identifier:primaryIdentifier.type.text",
        "path": "HealthcareService.identifier.type.text",
        "max": "0"
      },
      {
        "id": "HealthcareService.identifier:primaryIdentifier.system",
        "path": "HealthcareService.identifier.system",
        "min": 1
      },
      {
        "id": "HealthcareService.identifier:primaryIdentifier.value",
        "path": "HealthcareService.identifier.value",
        "definition": "This is the value of the primary identifier of the bookableHealthcareService. For Timerbee HealthcareServices this is the external purpose identifier.",
        "min": 1
      },
      {
        "id": "HealthcareService.providedBy.reference",
        "path": "HealthcareService.providedBy.reference",
        "min": 1
      },
      {
        "id": "HealthcareService.serviceProvisionCode",
        "path": "HealthcareService.serviceProvisionCode",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "coding.system"
            },
            {
              "type": "value",
              "path": "coding.code"
            }
          ],
          "rules": "open"
        }
      },
      {
        "id": "HealthcareService.serviceProvisionCode:notCoveredByPublicInsurance",
        "path": "HealthcareService.serviceProvisionCode",
        "sliceName": "notCoveredByPublicInsurance",
        "max": "1"
      },
      {
        "id": "HealthcareService.serviceProvisionCode:notCoveredByPublicInsurance.coding",
        "path": "HealthcareService.serviceProvisionCode.coding",
        "min": 1,
        "max": "1"
      },
      {
        "id": "HealthcareService.serviceProvisionCode:notCoveredByPublicInsurance.coding.system",
        "path": "HealthcareService.serviceProvisionCode.coding.system",
        "min": 1,
        "fixedUri": "http://fhir.xt.dev/CodeSystem/ServiceRequirements"
      },
      {
        "id": "HealthcareService.serviceProvisionCode:notCoveredByPublicInsurance.coding.version",
        "path": "HealthcareService.serviceProvisionCode.coding.version",
        "max": "0"
      },
      {
        "id": "HealthcareService.serviceProvisionCode:notCoveredByPublicInsurance.coding.code",
        "path": "HealthcareService.serviceProvisionCode.coding.code",
        "min": 1,
        "fixedCode": "not-covered-public"
      },
      {
        "id": "HealthcareService.serviceProvisionCode:notCoveredByPublicInsurance.coding.userSelected",
        "path": "HealthcareService.serviceProvisionCode.coding.userSelected",
        "max": "0"
      },
      {
        "id": "HealthcareService.eligibility",
        "path": "HealthcareService.eligibility",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "code.coding.system"
            },
            {
              "type": "value",
              "path": "code.coding.code"
            }
          ],
          "rules": "open"
        }
      },
      {
        "id": "HealthcareService.eligibility:referralOnly",
        "path": "HealthcareService.eligibility",
        "sliceName": "referralOnly",
        "requirements": "A HealthcareService with this eligibility constraint can only be booked by the patient if they have received an (ambulatory) referral order from a licensed physician.",
        "max": "1"
      },
      {
        "id": "HealthcareService.eligibility:referralOnly.code",
        "path": "HealthcareService.eligibility.code",
        "min": 1
      },
      {
        "id": "HealthcareService.eligibility:referralOnly.code.coding",
        "path": "HealthcareService.eligibility.code.coding",
        "min": 1,
        "max": "1"
      },
      {
        "id": "HealthcareService.eligibility:referralOnly.code.coding.system",
        "path": "HealthcareService.eligibility.code.coding.system",
        "min": 1,
        "fixedUri": "http://fhir.xt.dev/CodeSystem/ServiceRequirements"
      },
      {
        "id": "HealthcareService.eligibility:referralOnly.code.coding.version",
        "path": "HealthcareService.eligibility.code.coding.version",
        "max": "0"
      },
      {
        "id": "HealthcareService.eligibility:referralOnly.code.coding.code",
        "path": "HealthcareService.eligibility.code.coding.code",
        "min": 1,
        "fixedCode": "ambulatory-referral-required"
      },
      {
        "id": "HealthcareService.eligibility:referralOnly.code.coding.userSelected",
        "path": "HealthcareService.eligibility.code.coding.userSelected",
        "max": "0"
      },
      {
        "id": "HealthcareService.eligibility:referralOnly.code.text",
        "path": "HealthcareService.eligibility.code.text",
        "max": "0"
      },
      {
        "id": "HealthcareService.eligibility:orderedHospitalizationOnly",
        "path": "HealthcareService.eligibility",
        "sliceName": "orderedHospitalizationOnly",
        "requirements": "A HealthcareService with this eligibility constraint can only be booked by the patient if they have received a hospitalization order from a licensed physician.",
        "max": "1"
      },
      {
        "id": "HealthcareService.eligibility:orderedHospitalizationOnly.code",
        "path": "HealthcareService.eligibility.code",
        "min": 1
      },
      {
        "id": "HealthcareService.eligibility:orderedHospitalizationOnly.code.coding",
        "path": "HealthcareService.eligibility.code.coding",
        "min": 1,
        "max": "1"
      },
      {
        "id": "HealthcareService.eligibility:orderedHospitalizationOnly.code.coding.system",
        "path": "HealthcareService.eligibility.code.coding.system",
        "min": 1,
        "fixedUri": "http://fhir.xt.dev/CodeSystem/ServiceRequirements"
      },
      {
        "id": "HealthcareService.eligibility:orderedHospitalizationOnly.code.coding.version",
        "path": "HealthcareService.eligibility.code.coding.version",
        "max": "0"
      },
      {
        "id": "HealthcareService.eligibility:orderedHospitalizationOnly.code.coding.code",
        "path": "HealthcareService.eligibility.code.coding.code",
        "min": 1,
        "fixedCode": "hospitalization-order-required"
      },
      {
        "id": "HealthcareService.eligibility:orderedHospitalizationOnly.code.coding.userSelected",
        "path": "HealthcareService.eligibility.code.coding.userSelected",
        "max": "0"
      },
      {
        "id": "HealthcareService.eligibility:orderedHospitalizationOnly.code.text",
        "path": "HealthcareService.eligibility.code.text",
        "max": "0"
      },
      {
        "id": "HealthcareService.eligibility:invitationOnly",
        "path": "HealthcareService.eligibility",
        "sliceName": "invitationOnly",
        "requirements": "A HealthcareService with this eligibility constraint can only be booked by the patient if they have been invited after manual verification of their eligibility status.",
        "max": "1"
      },
      {
        "id": "HealthcareService.eligibility:invitationOnly.code",
        "path": "HealthcareService.eligibility.code",
        "min": 1
      },
      {
        "id": "HealthcareService.eligibility:invitationOnly.code.coding",
        "path": "HealthcareService.eligibility.code.coding",
        "min": 1,
        "max": "1"
      },
      {
        "id": "HealthcareService.eligibility:invitationOnly.code.coding.system",
        "path": "HealthcareService.eligibility.code.coding.system",
        "min": 1,
        "fixedUri": "http://fhir.xt.dev/CodeSystem/ServiceRequirements"
      },
      {
        "id": "HealthcareService.eligibility:invitationOnly.code.coding.version",
        "path": "HealthcareService.eligibility.code.coding.version",
        "max": "0"
      },
      {
        "id": "HealthcareService.eligibility:invitationOnly.code.coding.code",
        "path": "HealthcareService.eligibility.code.coding.code",
        "min": 1,
        "fixedCode": "invitation-required"
      },
      {
        "id": "HealthcareService.eligibility:invitationOnly.code.coding.userSelected",
        "path": "HealthcareService.eligibility.code.coding.userSelected",
        "max": "0"
      },
      {
        "id": "HealthcareService.eligibility:invitationOnly.code.text",
        "path": "HealthcareService.eligibility.code.text",
        "max": "0"
      },
      {
        "id": "HealthcareService.characteristic",
        "path": "HealthcareService.characteristic",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "coding.system"
            },
            {
              "type": "value",
              "path": "coding.code"
            }
          ],
          "rules": "open"
        }
      },
      {
        "id": "HealthcareService.characteristic:slotsSelectable",
        "path": "HealthcareService.characteristic",
        "sliceName": "slotsSelectable",
        "max": "1"
      },
      {
        "id": "HealthcareService.characteristic:slotsSelectable.coding",
        "path": "HealthcareService.characteristic.coding",
        "min": 1,
        "max": "1"
      },
      {
        "id": "HealthcareService.characteristic:slotsSelectable.coding.system",
        "path": "HealthcareService.characteristic.coding.system",
        "min": 1,
        "fixedUri": "http://fhir.xt.dev/CodeSystem/ServiceCharacteristics"
      },
      {
        "id": "HealthcareService.characteristic:slotsSelectable.coding.version",
        "path": "HealthcareService.characteristic.coding.version",
        "max": "0"
      },
      {
        "id": "HealthcareService.characteristic:slotsSelectable.coding.code",
        "path": "HealthcareService.characteristic.coding.code",
        "min": 1,
        "fixedCode": "slot-selectable"
      },
      {
        "id": "HealthcareService.characteristic:slotsSelectable.coding.userSelected",
        "path": "HealthcareService.characteristic.coding.userSelected",
        "max": "0"
      },
      {
        "id": "HealthcareService.characteristic:slotsSelectable.text",
        "path": "HealthcareService.characteristic.text",
        "max": "0"
      },
      {
        "id": "HealthcareService.characteristic:requestProcess",
        "path": "HealthcareService.characteristic",
        "sliceName": "requestProcess",
        "max": "1"
      },
      {
        "id": "HealthcareService.characteristic:requestProcess.coding",
        "path": "HealthcareService.characteristic.coding",
        "min": 1,
        "max": "1"
      },
      {
        "id": "HealthcareService.characteristic:requestProcess.coding.system",
        "path": "HealthcareService.characteristic.coding.system",
        "min": 1,
        "fixedUri": "http://fhir.xt.dev/CodeSystem/ServiceCharacteristics"
      },
      {
        "id": "HealthcareService.characteristic:requestProcess.coding.version",
        "path": "HealthcareService.characteristic.coding.version",
        "max": "0"
      },
      {
        "id": "HealthcareService.characteristic:requestProcess.coding.code",
        "path": "HealthcareService.characteristic.coding.code",
        "min": 1,
        "fixedCode": "request-process"
      },
      {
        "id": "HealthcareService.characteristic:requestProcess.coding.userSelected",
        "path": "HealthcareService.characteristic.coding.userSelected",
        "max": "0"
      },
      {
        "id": "HealthcareService.characteristic:requestProcess.text",
        "path": "HealthcareService.characteristic.text",
        "max": "0"
      },
      {
        "id": "HealthcareService.characteristic:appearsInSearches",
        "path": "HealthcareService.characteristic",
        "sliceName": "appearsInSearches",
        "max": "1"
      },
      {
        "id": "HealthcareService.characteristic:appearsInSearches.coding",
        "path": "HealthcareService.characteristic.coding",
        "min": 1,
        "max": "1"
      },
      {
        "id": "HealthcareService.characteristic:appearsInSearches.coding.system",
        "path": "HealthcareService.characteristic.coding.system",
        "min": 1,
        "fixedUri": "http://fhir.xt.dev/CodeSystem/ServiceCharacteristics"
      },
      {
        "id": "HealthcareService.characteristic:appearsInSearches.coding.version",
        "path": "HealthcareService.characteristic.coding.version",
        "max": "0"
      },
      {
        "id": "HealthcareService.characteristic:appearsInSearches.coding.code",
        "path": "HealthcareService.characteristic.coding.code",
        "min": 1,
        "fixedCode": "appears-in-searches"
      },
      {
        "id": "HealthcareService.characteristic:appearsInSearches.coding.userSelected",
        "path": "HealthcareService.characteristic.coding.userSelected",
        "max": "0"
      },
      {
        "id": "HealthcareService.characteristic:appearsInSearches.text",
        "path": "HealthcareService.characteristic.text",
        "max": "0"
      },
      {
        "id": "HealthcareService.characteristic:videoconference",
        "path": "HealthcareService.characteristic",
        "sliceName": "videoconference",
        "max": "1"
      },
      {
        "id": "HealthcareService.characteristic:videoconference.coding",
        "path": "HealthcareService.characteristic.coding",
        "min": 1,
        "max": "1"
      },
      {
        "id": "HealthcareService.characteristic:videoconference.coding.system",
        "path": "HealthcareService.characteristic.coding.system",
        "min": 1,
        "fixedUri": "http://fhir.xt.dev/CodeSystem/ServiceCharacteristics"
      },
      {
        "id": "HealthcareService.characteristic:videoconference.coding.version",
        "path": "HealthcareService.characteristic.coding.version",
        "max": "0"
      },
      {
        "id": "HealthcareService.characteristic:videoconference.coding.code",
        "path": "HealthcareService.characteristic.coding.code",
        "min": 1,
        "fixedCode": "videoconsultation"
      },
      {
        "id": "HealthcareService.characteristic:videoconference.coding.userSelected",
        "path": "HealthcareService.characteristic.coding.userSelected",
        "max": "0"
      },
      {
        "id": "HealthcareService.characteristic:videoconference.text",
        "path": "HealthcareService.characteristic.text",
        "max": "0"
      }
    ]
  }
}