# Scheduling Booked

This data model communicates information about a patient’s office or other outpatient appointment. EHR systems can send `Scheduling` messages to update your system with the appointment status, date/time, scheduled providers, and scheduled resources.

Every appointment gets assigned a visit number and patient ID. Any changes to the appointment are made with the relevant visit number. If the appointment is canceled and later rescheduled, however, a new visit number is created. Also keep in mind that scheduling holds and blocks don’t have an associated patient ID.

This data model has event types that allow you to:

- receive a notification about appointment updates; 
- push or receive a list of available appointment slots; 
- query for and receive open appointment times; or
- query for and receive booked appointment times. 

> **EHR support for Scheduling**
>
> EHR systems typically make scheduling information available through either a standard SIU HL7v2 feed or a proprietary API. SIU messages follow a push notification model while a proprietary API and web service rely on queries. 
>
> You also have the option to use data on demand if you prefer to query, but your connection only supports push notifications for scheduling data. For example, if you primarily want information about a booked appointment, you can use the `Booked` event type to get the information you need with data on demand. [Learn more about data on demand](https://docs.redoxengine.com/permalink/4TD76U5kQESdKsZvzDHfx5).

> **Scheduling vs. SurgicalScheduling vs. PatientAdmin data models**
>
> There’s some overlap among these data models, but here’s what to expect for each: 
>
> - The `Scheduling` data model contains information about outpatient appointments. This may include pre- and post-op office appointments.
> - The `SurgicalScheduling` data model contains information about surgical appointments. This contains information besides appointment details, like questionnaire answers from the patient, equipment requirements for the procedure, or in-progress notes about the surgery.
> - The `PatientAdmin` data model contains insurance information for appointments or surgical procedures.

Query for booked times within a given time range. Results are returned in `Scheduling.BookedResponse`.

> **Required query parameters and populated response**
>
> The required elements and populated response vary depending on the EHR system you're integrating with. Work with your connection to understand which query parameters they require and what to expect in the response during implementation testing.

> **Data on demand enabled**
>
> This event type is available with data on demand. [Learn more about data on demand.](https://docs.redoxengine.com/permalink/4TD76U5kQESdKsZvzDHfx5)

Status: Data on demand

## Request body

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `Meta` | object | Yes |  |
| `Meta.DataModel` | string | Yes | Scheduling |
| `Meta.EventType` | string | Yes | Booked |
| `Meta.EventDateTime` | string or null | No | Displays the UTC date and time that an outgoing request is delivered or an incoming request is received. *[ISO 8601 Format](http://en.wikipedia.org/wiki/ISO_8601)* |
| `Meta.Test` | boolean or null | No | Indicates whether the request is a test or not. |
| `Meta.Source` | object | No | Contains the information for the system initiating the message, including the source ID and name. *Included in messages from Redox* |
| `Meta.Source.ID` | string or null | No | Identifies the system initiating the message. If you have multiple OAuth API keys per environment type, this value is required. If you have only one OAuth API key per environment type, or you're using legacy API keys, this value is optional. *UUID* |
| `Meta.Source.Name` | string or null | No | Displays the name of the system initiating the message. |
| `Meta.Destinations` | Array of object | No | Contains the information for the endpoint(s) receiving the request. A request must contain at least one destination, but asynchronous requests can have more than one destination. Synchronous requests like queries can only support one destination. *Required when sending data to Redox.* |
| `Meta.Destinations[].ID` | string or null | No | Identifies the endpoint that the request is directed to. *UUID* |
| `Meta.Destinations[].Name` | string or null | No | Displays the name of the endpoint that the request is directed to. |
| `Meta.Logs` | Array of object | No | Contains the log identifier(s) for the request. |
| `Meta.Logs[].ID` | string or null | No | Identifies the request log(s) that correspond to this request. You can use this value to locate the relevant log in the Redox dashboard for support and reference. *UUID* |
| `Meta.Logs[].AttemptID` | string or null | No | Identifies the request log attempt value, which is useful when retries are possible. *UUID* |
| `Meta.FacilityCode` | string or null | No | Code for the facility related to the message. *Only use this field if a health system indicates you should. The code is specific to the health system's EHR and might not be unique across health systems. In general, the facility fields within the data models (e.g. OrderingFacility) are more reliable and informative.* |
| `StartDateTime` | string | Yes | Defines the start of the time range to search for appointments. *[ISO 8601 Format](http://en.wikipedia.org/wiki/ISO_8601)* |
| `EndDateTime` | string or null | No | Defines the end of the time range to search for appointments. *[ISO 8601 Format](http://en.wikipedia.org/wiki/ISO_8601)* |
| `Visit` | object | No |  |
| `Visit.Reason` | string or null | No | Indicates the appointment reason to search for. |
| `Visit.VisitNumber` | string or null | No | Displays the unique identifier for the patient visit. You must query for a specific booked appointment by a known VisitNumber. |
| `Visit.AttendingProviders` | Array of object | No |  |
| `Visit.AttendingProviders[].ID` | string or null | No | ID of the provider. *This ID is often required for Inpatient Visits.* |
| `Visit.AttendingProviders[].IDType` | string or null | No | ID type of the ID for the provider |
| `Visit.AttendingProviders[].FirstName` | string or null | No | First name of the provider |
| `Visit.AttendingProviders[].LastName` | string or null | No | Last name of the provider |
| `Visit.AttendingProviders[].Credentials` | Array of string | No | List of credentials for the provider. *e.g. MD, PhD* |
| `Visit.AttendingProviders[].Address` | object | No | Provider's address |
| `Visit.AttendingProviders[].Address.StreetAddress` | string or null | No | Street address |
| `Visit.AttendingProviders[].Address.City` | string or null | No | City |
| `Visit.AttendingProviders[].Address.State` | string or null | No | State |
| `Visit.AttendingProviders[].Address.ZIP` | string or null | No | ZIP |
| `Visit.AttendingProviders[].Address.County` | string or null | No | County |
| `Visit.AttendingProviders[].Address.Country` | string or null | No | Country. Value set 39791e31-0cee-4c58-a6c1-3d9e2c71d13b: AF, AX, AL, DZ, AS, AD, AO, AI, AQ, AG, AR, AM, AW, AU, AT, AZ, BS, BH, BD, BB, BY, BE, BZ, BJ, BM, BT, BO, IO, CM, CL, CO, CI, DK, EC, ER, FK, TF, GM, GI, GW, VA, IS, IM, JP, KI, LS, LT, MK, MV, MX, MS, NA, NC, MP, PK, PG, PL, RU, PM, SA, SG, SB, SS, SE, TZ, TO, TV, US, VN, EH, ZW, BQ, BR, BF, CA, TD, KM, CK, CU, DO, EE, FI, GE, GL, GN, GY, IN, IE, JE, KW, LB, LY, MO, ML, MR, MN, MM, NZ, NU, OM, PY, PT, RO, KN, SN, RS, ZA, LK, SJ, SY, TK, TM, UG, UM, UZ, WF, BA, BG, CV, CX, CD, CW, DJ, GQ, FO, PF, DE, GD, GG, HT, HK, IR, IL, KE, KG, LU, MY, MT, MU, ME, MZ, NP, NF, PW, PH, QA, BL, MF, ST, SX, SI, GS, SR, TJ, TG, TN, UA, VU, VG, BW, BN, KH, KY, CC, CR, CY, EG, FJ, FR, GH, GP, GU, HN, IQ, JM, KZ, KP, LA, LR, MW, MH, YT, MD, MA, NI, NG, NO, PA, PN, RE, RW, LC, SM, SC, SK, ES, CH, TH, TT, TR, GB, VE, VI, ZM, BV, BI, CF, CN, CG, HR, CZ, DM, SV, ET, GF, GA, GR, GT, HM, HU, ID, IT, JO, KR, LV, LI, MG, MQ, FM, MC, NR, NL, NE, PS, PE, PR, SH, VC, WS, SL, SO, SD, SZ, TW, TL, TC, AE, UY, YE, DR |
| `Visit.AttendingProviders[].EmailAddresses` | Array of string | No | Provider's email address(es) |
| `Visit.AttendingProviders[].PhoneNumber` | object | No |  |
| `Visit.AttendingProviders[].PhoneNumber.Office` | string or null | No | Provider's office phone number. *In E. 164 Format. (e.g. +16085551234)* |
| `Visit.AttendingProviders[].Location` | object | No | Provider's location |
| `Visit.AttendingProviders[].Location.Type` | string or null | No | Type of location. *Examples: Clinic, Department, Home, Nursing Unit, Provider's Office, Phone* |
| `Visit.AttendingProviders[].Location.Facility` | string or null | No | Facility. *Example: Community Hospital* |
| `Visit.AttendingProviders[].Location.FacilityIdentifiers` | Array of object | No | List of IDs specific to this facility |
| `Visit.AttendingProviders[].Location.FacilityIdentifiers[].ID` | string or null | No | An ID specific to this facility |
| `Visit.AttendingProviders[].Location.FacilityIdentifiers[].IDType` | string or null | No | The source or system to which this ID pertains. *Could be an OID or a human-readable name* |
| `Visit.AttendingProviders[].Location.Department` | string or null | No | Department |
| `Visit.AttendingProviders[].Location.DepartmentIdentifiers` | Array of object | No | List of IDs specific to this department |
| `Visit.AttendingProviders[].Location.DepartmentIdentifiers[].ID` | string or null | No | An ID specific to this department |
| `Visit.AttendingProviders[].Location.DepartmentIdentifiers[].IDType` | string or null | No | The source or system to which this ID pertains. *Could be an OID or a human-readable name* |
| `Visit.AttendingProviders[].Location.Room` | string or null | No | Room. *Example: 136* |
| `Visit.VisitProvider` | object | No |  |
| `Visit.VisitProvider.ID` | string or null | No | ID of the visit provider. *This ID is often required for Inpatient Visits.* |
| `Visit.VisitProvider.IDType` | string or null | No | ID type of the ID for the visit provider |
| `Visit.VisitProvider.FirstName` | string or null | No | First name of the visit provider |
| `Visit.VisitProvider.LastName` | string or null | No | Last name of the visit provider |
| `Visit.VisitProvider.Credentials` | Array of string | No | List of credentials for the visit provider. *e.g. MD, PhD* |
| `Visit.VisitProvider.Address` | object | No | Provider's address |
| `Visit.VisitProvider.Address.StreetAddress` | string or null | No | Street address |
| `Visit.VisitProvider.Address.City` | string or null | No | City |
| `Visit.VisitProvider.Address.State` | string or null | No | State |
| `Visit.VisitProvider.Address.ZIP` | string or null | No | ZIP |
| `Visit.VisitProvider.Address.County` | string or null | No | County |
| `Visit.VisitProvider.Address.Country` | string or null | No | Country. Value set 39791e31-0cee-4c58-a6c1-3d9e2c71d13b: AF, AX, AL, DZ, AS, AD, AO, AI, AQ, AG, AR, AM, AW, AU, AT, AZ, BS, BH, BD, BB, BY, BE, BZ, BJ, BM, BT, BO, IO, CM, CL, CO, CI, DK, EC, ER, FK, TF, GM, GI, GW, VA, IS, IM, JP, KI, LS, LT, MK, MV, MX, MS, NA, NC, MP, PK, PG, PL, RU, PM, SA, SG, SB, SS, SE, TZ, TO, TV, US, VN, EH, ZW, BQ, BR, BF, CA, TD, KM, CK, CU, DO, EE, FI, GE, GL, GN, GY, IN, IE, JE, KW, LB, LY, MO, ML, MR, MN, MM, NZ, NU, OM, PY, PT, RO, KN, SN, RS, ZA, LK, SJ, SY, TK, TM, UG, UM, UZ, WF, BA, BG, CV, CX, CD, CW, DJ, GQ, FO, PF, DE, GD, GG, HT, HK, IR, IL, KE, KG, LU, MY, MT, MU, ME, MZ, NP, NF, PW, PH, QA, BL, MF, ST, SX, SI, GS, SR, TJ, TG, TN, UA, VU, VG, BW, BN, KH, KY, CC, CR, CY, EG, FJ, FR, GH, GP, GU, HN, IQ, JM, KZ, KP, LA, LR, MW, MH, YT, MD, MA, NI, NG, NO, PA, PN, RE, RW, LC, SM, SC, SK, ES, CH, TH, TT, TR, GB, VE, VI, ZM, BV, BI, CF, CN, CG, HR, CZ, DM, SV, ET, GF, GA, GR, GT, HM, HU, ID, IT, JO, KR, LV, LI, MG, MQ, FM, MC, NR, NL, NE, PS, PE, PR, SH, VC, WS, SL, SO, SD, SZ, TW, TL, TC, AE, UY, YE, DR |
| `Visit.VisitProvider.EmailAddresses` | Array of string | No | Provider's email address(es) |
| `Visit.VisitProvider.PhoneNumber` | object | No |  |
| `Visit.VisitProvider.PhoneNumber.Office` | string or null | No | Provider's office phone number. *In E. 164 Format. (e.g. +16085551234)* |
| `Visit.VisitProvider.Location` | object | No | Provider's location |
| `Visit.VisitProvider.Location.Type` | string or null | No | Type of location. *Examples: Clinic, Department, Home, Nursing Unit, Provider's Office, Phone* |
| `Visit.VisitProvider.Location.Facility` | string or null | No | Facility. *Example: Community Hospital* |
| `Visit.VisitProvider.Location.FacilityIdentifiers` | Array of object | No | List of IDs specific to this facility |
| `Visit.VisitProvider.Location.FacilityIdentifiers[].ID` | string or null | No | An ID specific to this facility |
| `Visit.VisitProvider.Location.FacilityIdentifiers[].IDType` | string or null | No | The source or system to which this ID pertains. *Could be an OID or a human-readable name* |
| `Visit.VisitProvider.Location.Department` | string or null | No | Department |
| `Visit.VisitProvider.Location.DepartmentIdentifiers` | Array of object | No | List of IDs specific to this department |
| `Visit.VisitProvider.Location.DepartmentIdentifiers[].ID` | string or null | No | An ID specific to this department |
| `Visit.VisitProvider.Location.DepartmentIdentifiers[].IDType` | string or null | No | The source or system to which this ID pertains. *Could be an OID or a human-readable name* |
| `Visit.VisitProvider.Location.Room` | string or null | No | Room. *Example: 136* |
| `Visit.Location` | object | No | Defines the location of the appointment. |
| `Visit.Location.Type` | string or null | No | Type of location. *Examples: Clinic, Department, Home, Nursing Unit, Provider's Office, Phone* |
| `Visit.Location.Facility` | string or null | No | Facility. *Example: Community Hospital* |
| `Visit.Location.FacilityIdentifiers` | Array of object | No | List of IDs specific to this facility |
| `Visit.Location.FacilityIdentifiers[].ID` | string or null | No | An ID specific to this facility |
| `Visit.Location.FacilityIdentifiers[].IDType` | string or null | No | The source or system to which this ID pertains. *Could be an OID or a human-readable name* |
| `Visit.Location.Department` | string or null | No | Department |
| `Visit.Location.DepartmentIdentifiers` | Array of object | No | List of IDs specific to this department |
| `Visit.Location.DepartmentIdentifiers[].ID` | string or null | No | An ID specific to this department |
| `Visit.Location.DepartmentIdentifiers[].IDType` | string or null | No | The source or system to which this ID pertains. *Could be an OID or a human-readable name* |
| `Visit.Location.Room` | string or null | No | Room. *Example: 136* |
| `Visit.Patients` | Array of object | No | Identifies the patient(s) for the appointment. |
| `Visit.Patients[].Identifiers` | Array of object | No | Contains a list of identifiers and identifiers types that correlate to the patient. |
| `Visit.Patients[].Identifiers[].ID` | string or null | No | Contains an identifier for the patient. |
| `Visit.Patients[].Identifiers[].IDType` | string or null | No | Defines the type of the identifier used for the patient. *E.g. MRN, EPI* |

## Example

```json
{
  "Meta": {
    "DataModel": "Scheduling",
    "EventType": "Booked",
    "EventDateTime": "2026-11-13T22:05:58.042Z",
    "Test": true,
    "Source": {
      "ID": "7ce6f387-c33c-417d-8682-81e83628cbd9",
      "Name": "Redox Dev Tools"
    },
    "Destinations": [
      {
        "ID": "af394f14-b34a-464f-8d24-895f370af4c9",
        "Name": "Redox EMR"
      }
    ],
    "Logs": [
      {
        "ID": "d9f5d293-7110-461e-a875-3beb089e79f3",
        "AttemptID": "925d1617-2fe0-468c-a14c-f8c04b572c54"
      }
    ],
    "FacilityCode": null
  },
  "StartDateTime": "2026-11-13T22:05:58.276Z",
  "EndDateTime": null,
  "Visit": {
    "Reason": null,
    "VisitNumber": null,
    "AttendingProviders": [
      {
        "ID": "4356789876",
        "IDType": "NPI",
        "FirstName": "Pat",
        "LastName": "Granite",
        "Credentials": [
          "MD"
        ],
        "Address": {
          "StreetAddress": "123 Main St.",
          "City": "Madison",
          "State": "WI",
          "ZIP": "53703",
          "County": "Dane",
          "Country": "USA"
        },
        "EmailAddresses": [],
        "PhoneNumber": {
          "Office": "+16085551234"
        },
        "Location": {
          "Type": null,
          "Facility": null,
          "FacilityIdentifiers": [],
          "Department": null,
          "DepartmentIdentifiers": [],
          "Room": null
        }
      }
    ],
    "VisitProvider": {
      "ID": null,
      "IDType": null,
      "FirstName": null,
      "LastName": null,
      "Credentials": [],
      "Address": {
        "StreetAddress": null,
        "City": null,
        "State": null,
        "ZIP": null,
        "County": null,
        "Country": null
      },
      "EmailAddresses": [],
      "PhoneNumber": {
        "Office": null
      },
      "Location": {
        "Type": null,
        "Facility": null,
        "FacilityIdentifiers": [],
        "Department": null,
        "DepartmentIdentifiers": [],
        "Room": null
      }
    },
    "Location": {
      "Type": null,
      "Facility": null,
      "FacilityIdentifiers": [],
      "Department": null,
      "DepartmentIdentifiers": [],
      "Room": null
    },
    "Patients": [
      {
        "Identifiers": [
          {
            "ID": "0000000001",
            "IDType": "MR"
          },
          {
            "ID": "e167267c-16c9-4fe3-96ae-9cff5703e90a",
            "IDType": "EHRID"
          },
          {
            "ID": "a1d4ee8aba494ca",
            "IDType": "NIST"
          }
        ]
      }
    ]
  }
}
```
