Care Direct Time Slots

DexCare offers the ability to schedule in person visits that are agnostic as to the type of provider (for example it could be an in person retail clinic).

In order for patients to set up an appointment they must choose an available time slot during which time services can be provided to them.

The following API endpoints allow you to list the departments within your organization and the time slots that they have available.

Once a time slot is selected, your application hand off control to DexCare’s scheduling application web interface elements to schedule an appointment.

Retrieving All Departments

Retrieves a list of departments configured for your environment along with their metadata.

Endpoint

get All Departments

/v1/departments

Parameters

brand

Filters by those departments that are only branded with the specified value <string> defined in your environment configuration.

If your health system has only one brand, this value can be excluded.

type: query
default: <All brands>
example: brand=<your brand>
values: string

clinicType

Filters only Retail or Virtual clinics

type: query
default: Retail
example: clinicType=Retail
values: Retail Virtual

onlyActive

Allows inactive departments to be listed

type: query
default: true
example: onlyActive=false
values: true false

Responses

200

Returns an array of JSON objects representing the Department entity. For each Department, this will include details including:

  • allowable visit types
  • brand — This field allows the product to segment requests by a brand within a larger health system
  • clinicType — this contains Retail, Virtual, or Primary Care currently
  • contact information
  • open hours
  • timezone
  • urlName — used to request a single department (see below)

In the v4 version of the API the billingServiceArea field was added to the department entity. A billing service area is used for revenue attribution. If you need this information, it is recommended that you use this version of the API instead by substituting ‘v4’ for ‘v1’ in the service endpoint URL. However, certain fields will not be present as notated in the example below.

For an example of the full structure of a Department, see Retrieving Department Information

Examples

Example: List Retail Departments, All Brands

Get a list of all Retail departments, for all brands that are active.

https://api.care.dexcarehealth.com/v1/departments

Example: List Retail Departments, Single Brand

Get a list of all Retail departments, branded only as “YourBrand”, including inactive departments. Including a brand is important if your health system has multiple branded subsidiaries or partners.

https://api.care.dexcarehealth.com/v4/departments?brand=YourBrand&onlyActive=false

Retrieving Department Information

Retrieves a specific department’s metadata. Similar to the /departments endpoint, this endpoint selects a more extensive set of properties for a single department.

Endpoint

get Single Department

/v1/departments/<urlName>

Parameters

urlName

REQUIRED

The urlName that is configured within DexCare for a given department

type: path
default: N/A
example: /v1/departments/Broadway
values: string

Responses

200

JSON object includes details of the requested Department.


{
    "isActive": true,
    "startActivated": "2020-02-12T17:00:00+00:00",
    "departmentId": "40557000",
    "departmentGuid": "40557000",
    "ehrSystemName": "org.yourorg.ehrsystem",
    "billingServiceArea": {	//in v4, not present in v1
      "updateDateTime": null, 
      "displayName": "ExServiceArea", 
      "id": "0f20af12-f93d-4b98-888b-73cda513abcd", 
      "createDateTime": null
    },
    "instanceId": "1",
    "brandName": "Acme",
    "displayName": "AcmeC4",
    "address": {
        "city": "Portland",
        "state": "OR",
        "postalCode": "97210",
        "line1": "2103 W Burnside St",
        "line2": null
    },
    "phone": "(800) 860-1100",
    "timezone": "America/Los_Angeles",
    "urlName": "AcmeC4",
    "latitude": 45.5051,
    "longitude": -122.675,
    "imageS3Bucket": "https://customer-assets.care.dexcarehealth.com/clinicImages/", //in v1, not present in v4; base URL of where some assets associated with the department are stored
    "smallImageUrl": "https://customer-assets.care.dexcarehealth.com/clinicImages/acme/AcmeC4.jpg",
    "clinicType": "Retail",
    "partner": "None", //in v1, not present in v4; the name of another company if this department is in association with them i.e. Walgreens
    "extensionUrlDomain": "http://yourdomain.org", //in v1, not present in v4; the base URL of the healthcare system's website
    "allowedVisitTypes": [
        {
            "visitTypeId": "75015169",
            "name": "Acme ExpressCare Illness",
            "preferenceLogic": null,
            "reasonLabel": "What health changes, if any, have occurred since the previous visit?",
            "description": "Retail Appointment",
            "shortName": "Illness",
            "group": "none",
            "sortOrder": 0,
            "appointmentDuration": 30	//in v1, not present in v4
        }
    ],
    "openDays": [
        {
            "day": "Monday",
            "openHours": {
                "startTime": "07:00:00",
                "endTime": "19:00:00"
            }
        },
 ...
        {
            "day": "Sunday",
            "openHours": {
                "startTime": "07:00:00",
                "endTime": "19:00:00"
            }
        }
    ]
}

allowedVisitTypes
Identifiable by the field shortName, allowed visit types will indicate the types of appointments that may be scheduled at this location
brand
Brand categorize a Department based on affiliation (i.e. subsidiaries or partners)
contact information
Fields and structures such as address, phone are useful to display to users to contact the Department
clinicType
Either Retail or Virtual this field will indicate whether an in person visit is possible or whether the visit must be done online virtually
latitude and longitude
Coordinates that allow the Department to be located on a map
timezone
Note that the timezone of the Department will be relevant to the timeslots returned but the /departments/<urlName>/timeslots endpoint
open hours
Structure with the day of the week as well as startTime and endTime fields to indicate the hours that the Department is open
urlName
String identifier for the Department to be used in subsequent calls, such as to get the time slots that are open

404

The department with the given “urlName” was not found

Examples

Get the department metadata for the department with urlName = “AcmeC4”.

https://api.care.dexcarehealth.com/v1/departments/AcmeC4

Retrieving Available Time Slots for a Department

Retrieves a list of available time slots for a given department.

The timezone of time slots corresponds to the timezone of the department.

Time slots will be restricted to the default range for the visit type. This normally includes time slots for the current day unless a specified cut off time has passed, after which only time slots for future days are returned.

For example, when the visit type is “Illness” (the default visit type for Retail clinic type), the range is the current day, with a cut off time defaulted to 17:00 clinic time, as well as the next day’s slots.

For other visit types, the default could be longer (such as 7 days for vaccine visits).

Time slots that are already booked are excluded.

Endpoint

get Single Department Timeslots

/v1/departments/<urlName>/timeslots

urlName

REQUIRED

The urlName that is configured within DexCare for a given department

type: path
default: N/A
example: /v1/departments/Broadway/timeslots
values: string

Responses

200

JSON object containing an array of available time slots broken down by day.

Truncated example payload:

{
    "departmentId": "40557000",
    "timezone": "America/Los_Angeles",
    "startDate": "2021-07-02T00:00:00-07:00",
    "endDate": "2021-07-03T23:59:59-07:00",
    "scheduleDays": [
        {
            "departmentId": "40557000",
            "date": "2021-07-03T12:00:00",
            "timeSlots": [
						   {
								"providerNationalId": "INT-1177000",
								"providerId": "1177000",
								"id": "ewogICJyZXNvdXJjZVR5cGUiOiAiU2xvdCIsCiAgImV4dGVuc2lvbiI6IFsgewogICAgInVybCI6ICJodHRwOi8vcHJvdmlkZW5jZS5vcmcvc2xvdERhdGUiLAogICAgInZhbHVlU3RyaW5nIjogIjIwMjEtMDctMDMiCiAgfSwgewogICAgInVybCI6ICJodHRwOi8vcHJvdmlkZW5jZS5vcmcvdmlzaXRUeXBlSWQiLAogICAgInZhbHVlU3RyaW5nIjogIjc1MDE1MTY5IgogIH0sIHsKICAgICJ1cmwiOiAiaHR0cDovL3Byb3ZpZGVuY2Uub3JnL3RpbWV6b25lIiwKICAgICJ2YWx1ZVN0cmluZyI6ICJBbWVyaWNhL0xvc19BbmdlbGVzIgogIH0gXSwKICAiYXBwb2ludG1lbnRUeXBlIjogewogICAgImNvZGluZyI6IFsgewogICAgICAiY29kZSI6ICJvcGVuIgogICAgfSBdCiAgfSwKICAic3RhcnQiOiAiMjAyMS0wNy0wM1QxNTowMDowMC4wMDArMDA6MDAiLAogICJlbmQiOiAiMjAyMS0wNy0wM1QxNToyMDowMC4wMDArMDA6MDAiCn0=",
								"slotDateTime": "2021-07-03T08:00:00-07:00",
								"departmentId": "40557000",
								"departmentIdentifier": "org.providence.dig.epic.provorca|40557000",
								"slotType": "Retail",
								"duration": "20",
								"visitTypeId": "75015169"
							},
...
 

Key properties of the TimeSlot entity include:

slotDateTime
ISO 8601 formatted representation of the time slot in the department’s time zone
duration
Length of the time slot in minutes
id
Base64 encoded string that contains the slot start and end time in UTC, see below
Below is an example of a decoded id string from the above example:
{
  "resourceType": "Slot",
  "extension": [ {
    "url": "http://providence.org/slotDate",
    "valueString": "2021-07-03"
  }, {
    "url": "http://providence.org/visitTypeId",
    "valueString": "75015169"
  }, {
    "url": "http://providence.org/timezone",
    "valueString": "America/Los_Angeles"
  } ],
  "appointmentType": {
    "coding": [ {
      "code": "open"
    } ]
  },
  "start": "2021-07-03T15:00:00.000+00:00",
  "end": "2021-07-03T15:20:00.000+00:00"
}

404

Department with urlName was not found

Examples

Get the time slots for the department with urlName = “AcmeC4”

https://api.care.dexcarehealth.com/v1/departments/AcmeC4/timeslots

Booking Appointments

Now that you have selected a timeslot, you can direct users to DexCare’s retail booking flow