InQuicker Platform API-V4 Documentation - Preliminary (1.1.3)

Download OpenAPI specification:Download

Introduction

Please note that this is preliminary documentation and is subject to change.

This is the reference documentation for version 4 of the InQuicker Platform API. You can use our API to enable patient scheduling in your business or application.

The InQuicker Platform API follows the JSON:API Specification. See their site to get started with JSON:API, and with client libraries to help build your custom solution.

Document Conventions

Endpoints are described with an HTTP method and a path. For example:

GET /providers

Prepend your InQuicker Platform API URL to the path to get the full endpoint URL. For example, if your API URL is https://api.inquicker.com/api/v4/winter.inquicker.com, then the full URL to get a list of providers would be:

https://api.inquicker.com/api/v4/winter.inquicker.com/providers

Curly braces {} in the endpoint path represent path parameters that you must replace. For example, if the endpoint is described as:

GET /locations/{location_id}

with a location id of 1, the final request URL would be:

https://api.inquicker.com/api/v4/winter.inquicker.com/locations/1

Making Requests

The v4 API endpoint URL is

https://{api_hostname}/api/v4/{partner_hostname}

where:

api_hostname
api.inquicker.com for production, api.inquickerstaging.com for staging
partner_hostname
your client-facing domain name, eg. my-site.inquicker.com.

Request headers

  • When developing your own integrations, be sure to set your User-Agent header to something informative, eg. MyClient/1.0.0.
  • Always set the Accept header to application/vnd.api+json.

The JSON:API specification allows for side-loading associated records using the include parameter. For example, the /locations/{location_id} endpoint can include related schedules. The response payload follows the specification, but is typically de-serialized by a client library. Please note that filter parameters do not apply to side-loaded resources.

Authentication

InQuicker requires a JWT to authorize access to all endpoints except for /token. To use the token endpoint, InQuicker requires the API key to be included in the Authorization header:

Authorization: this-is-your-api-key

This JWT token is used to access all other endpoints.

Example Workflow

The first example will show how to fetch the data required to display a typical Provider index page. We will be fetching Services, Appointment Types, and Insurance Plans so that they can be displayed as options for the user to filter the provider list. We are assuming that the provider list filtering will be handled by the front-end via JavaScript.

Get a JWT

In access the API, we first have to obtain a JSON Web Token (JWT). This is done by the application server, and the JWT is forwarded to the web client This call gives us the raw JWT data that we use in the Authorization: Bearer header to create the visit. The token is valid for 30 minutes, and can only be used to create a visit for the time slot specified in the token request.

curl "https://api.inquicker.com/v4/winter.inquicker.com/token" -G -H "ACCEPT: *.*" --data-urlencode 'api_key=your-api-key'

The response is the raw JWT, eg.

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjp7InNjaGVkdWxlX2lkIjoiZjNjN2QwNDQtM2UyMy00YzcwLThlOTktYTUwNGExOWYyODc0IiwiYXBwb2ludG1lbnRfYXQiOiJcIjIwMTktMTAtMDNUMTQ6MTU6MDAtMDU6MDBcIiJ9LCJleHAiOjE1NzAxMTc4NDMsImp0aSI6IjcxYTg0YWQwLWMyOWYtNDNmYi1iZTVjLTJlZGUyNzBhZDQ3ZCJ9.MESqdi2QeQwcmab--ZAvRTRCMASiHtt51LLR7VfHm1M

For the rest of these examples, we will use jwt-value instead of the full JWT for brevity.

Fetch Services, Appointment Types, and Insurance Plans

To fetch a full list of Services, we use the GET /services endpoint. Using Curl, the command is:

curl https://api.inquicker.com/api/v4/winter.inquicker.com/services -H "ACCEPT: application/vnd.api+json" -H 'Authorization: Bearer jwt-value'

This returns a Service Collection Response that looks like this:

  {
    "data": [{
      "id": "101",
      "type": "services",
      "links": {
        "self": "https://api.inquicker.com/v4/winter.inquicker.com/services/101"
      },
      "attributes": {
      "name": "Primary Care"
    }, {
      "id": "102",
      "type": "services",
      "links": {
        "self": "https://api.inquicker.com/v4/winter.inquicker.com/services/102"
      },
      "attributes": {
        "name": "Pediatrics"
      }
    }],
    "meta": {
      "record-count": 2
    }
  }

If you are used to using JSON::API services, this should look familiar, as it is a typical JSON::API response. If you are not familiar with this response structure, refer to the JSON::API specification to get a better understanding of the structure of this response.

In a similar fashion to how we fetched the service list, we will be fetching Appointment Types and Insurance Plans using the GET /appointent-types and GET /insurance-plans endpoints. This provides all the data we need to display options for the user to filter the provider list.

Fetch Providers with pagination and side-loading

To get the list of Providers, we will need to add some parameters to the query to add pagination and to side-load schedules and locations:

curl https://api.inquicker.com/v4/winter.inquicker.com/providers -H "ACCEPT: application/vnd.api+json" -H 'Authorization: Bearer jwt-value' --data-urlencode 'include=locations,schedules.location' --data-urlencode 'page[number]=1' --data-urlencode 'page[size]=10'

The response is a Provider Collection Response. The side-loaded data is included in the Relationships part of each Provider record as per the JSON::API standard. Here is a snippet of a typical response:

  {
    "data": [{
      "id": "1",
      "type": "providers",
      "links": {
        "self": "https://api.inquicker.com/v4/winter.inquicker.com/providers/1"
      },
      "attributes": {
        "affiliation": "employed",
        "appointment-types": [{
          "id": "1",
          "name": "Office Visit"
        }, {
          "id": "2",
          "name": "New Patient"
        }, {
          "id": "3",
          "name": "Physical"
        }],
        "backgrounds": [{"name": "Language Spoken"
     "description": "English"}],
        "bio": "",
        "card-image": "https://winter.inquicker.com/profile/practitioner/iqp_card_16479.jpg",
        "credentials": null,
        "gender": "f",
        "grad-school": null,
        "medical-groups": [],
        "name": "Emily Cormier",
        "profile-image": "https://winter.inquicker.com/profile/practitioner/iqp_profile_16479.jpg",
        "provider-type": "Practitioner",
        "subspecialties": [],
        "suffix": "MD",
        "ui-profile-image": "https://winter.inquicker.com/profile/practitioner/original_16479.jpg",
        "undergrad-school": null,
        "NPI": null
        },
      "relationships": {
        "locations": {
          "links": {
            "self": "https://api.inquicker.com/v4/winter.inquicker.com/providers/1/relationships/locations",
            "related": "https://api.inquicker.com/v4/winter.inquicker.com/providers/1/locations"
          },
          "data": [{
            "type": "locations",
            "id": "1"
          }]
        },
        "schedules": {
          "links": {
            "self": "https://api.inquicker.com/v4/winter.inquicker.com/providers/1/relationships/schedules",
            "related": "https://api.inquicker.com/v4/winter.inquicker.com/providers/1/schedules"
          },
          "data": [{
            "type": "schedules",
            "id": "1"
          }]
        }
      }
    }, {
      "id": "2",
      "type": "providers",

  ...

Get Available Appointment Times

We use the GET /available-appointment-times, passing the schedule ids in the shedule_ids parameter, and the appointment type in the appointment-type parameter.

curl "https://api.inquicker.com/v4/winter.inquicker.com/available-appointment-times" -G -H "ACCEPT: application/vnd.api+json" -H 'Authorization: Bearer jwt-value' --data-urlencode 'schedule_ids[]=1' --data-urlencode 'appointment_type=annual-physical'

This returns an Available Appointment Times Collection like this:

  [{
    "schedule-id": "1",
    "appointment-type": "annual-physical",
    "times": ["2019-09-21T13:00:00-04:00", "2019-09-21T13:15:00-04:00", "2019-09-21T13:30:00-04:00", "2019-09-21T13:45:00-04:00", "2019-09-21T14:00:00-04:00", "2019-09-21T14:15:00-04:00", "2019-09-21T14:30:00-04:00", "2019-09-21T14:45:00-04:00", "2019-09-21T15:00:00-04:00", "2019-09-21T15:15:00-04:00", "2019-09-21T15:30:00-04:00", "2019-09-21T15:45:00-04:00", "2019-09-21T16:00:00-04:00", "2019-09-21T16:15:00-04:00", "2019-09-21T16:30:00-04:00", "2019-09-21T16:45:00-04:00"]
  }]

Book the Visit

We create the visit with the POST /visits endpoint. The form data includes all required fields as described in the POST /visits endpoint documentation.

 curl 'https://api.inquicker.com/v4/winter.inquicker.com/visits' -H 'Accept: application/vnd.api+json' -H 'Authorization: Bearer jwt-value' -H 'Content-Type: application/vnd.api+json' --data-binary $'{"data":{"attributes":{"address":null,"address-2":null,"appointment-at":"2019-09-21T13:00:00-04:00","appointment-type":"annual-physical","birthdate":"1980-01-12T05:00:00.000Z","caregiver-name":null,"city":null,"comments":null,"email":"test@example.com","first-name":"John","gender":"male","has-physician":false,"is-self-pay":false,"insurance-group-number":null,"insurance-member-number":null,"insurance-plan-full-address":null,"insurance-plan-name":null,"insurance-plan-permalink":"1199-ppo","insurance-plan-phone-number":null,"last-name":"Doe","last-test-date":null,"last-test-location":null,"middle-initial":null,"new-patient":"false","optin":"0","patient-complaint":"gas","phone-number":"1231231231","pregnant":null,"primary-care-physician":null,"referring-provider-name":null,"requires-standing-assistance":null,"requires-translator":null,"state":null,"terms-tos":"1","translator-language":null,"weeks-pregnant":null,"zip":"90210"},"relationships":{"schedule":{"data":{"type":"schedules","id":"1"}}},"type":"visits"}}'

The response is a Visit Response record, which looks like this:

  {
    "data":
    {
      "id": "1",
      "type": "visits",
      "links":
      {
        "self": "http://api.inquicker.com/v4/winter.inquicker.com/visits/1"
      },
      "attributes":
      {
        "appointment-at": "2019-09-21T13:00:00-04:00",
        "appointment-type": "annual-physical",
        "appointment-type-name": "Annual Physical",
        "confirmation-number": 1,
        "remote-visit-ids": "1234"
      },
      "relationships":
      {
        "schedule":
        {
          "links":
          {
            "self": "http://api.inquicker.com/v4/winter.inquicker.com/visits/1/relationships/schedule",
            "related": "http://api.inquicker.com/v4/winter.inquicker.com/visits/1/schedule"
          }
        },
        "location":
        {
          "links":
          {
            "self": "http://api.inquicker.com/v4/winter.inquicker.com/visits/1/relationships/location",
            "related": "http://api.inquicker.com/v4/winter.inquicker.com/visits/1/location"
          }
        },
        "provider":
        {
          "links":
          {
            "self": "http://api.inquicker.com/v4/winter.inquicker.com/visits/1/relationships/provider",
            "related": "http://api.inquicker.com/v4/winter.inquicker.com/visits/1/provider"
          }
        }
      }
    }
  }

Access Points

Retrive Access Points based of a Particular Health System or region

List Access Points

Retrieve all access points for a given Health System or Region.

Responses

Response samples

Content type
application/vnd.api+json

Appointment Types

Access to Apppointment Types for a Health System.

List Appointent Types.

Retrieve all appointment types for a given Health System.

query Parameters
filter[context]
string
Enum: "Patient" "Discharge" "Internal"
Example: filter[context]=Patient

Filter by patient context

filter[service]
string
Example: filter[service]=6882

Filter by service id

filter[facility]
string
Example: filter[facility]=953141138

Filter by facility id

filter[permalink]
string
Example: filter[permalink]=permalink-1

Filter by permalink

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Retrieve an appointment type.

Retrieve a specific Apppointment Type.

path Parameters
appointment_type_id
required
string
Example: checkup

Identifier for appointment type

Responses

Response samples

Content type
application/vnd.api+json
{
  • "id": "checkup",
  • "type": "appointment-types",
  • "attributes": {
    },
}

Available Appointment Times

Available appointment times for a given schedule can be accessed using the Available Appointment Time resource.

List Available Appointment Times.

Retrieve available appointment times for a given schedule.

query Parameters
schedule_ids
required
Array of strings <id>
Example:

Schedules to search

appointment_type
string
Example: appointment_type=2

The id of the appointment type to filter by.

from
string <date-time>
Example: from=2019-10-03T19:15:00Z

Date to search from

to
string <date-time>
Example: to=2019-10-03T19:15:00Z

Date to search to

max_days
string
Example: max_days=5

Limit the results to the number of days from first result.

max_times
string
Example: max_times=100

Limit the results to a maximum number of times

schedule_context
string
Enum: "patient" "patient_now" "discharge"
Example: schedule_context=patient

Limit the results to schedule contexts

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Branding

Retrieve branding information that determines front-end visual attributes such as colours and the banner image URL.

List branding information.

Retrieve all branding records for the health system or region.

query Parameters
enable-experimental-features
string
Example:

Flag to enable experimental feature data to be returned in payload.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Custom Templates

Retrieve Custom Template that determines User-Interface for a particular formating set up for a schedule or Health System or Region.

List Custom Template

Retrieve the particular Custom Template for the health system or region.

query Parameters
type
required
string
Enum: "registration" "confirmation"
Example: type=registration

Required to get a Particular type for custom template.

schedule_id
required
string
Example: schedule_id=38098

Required to get a custom template related to this schedule id.

appointment_at
required
string <date-time>
Example: appointment_at=2022-11-09T11:00:00-08:00

Required to get a custom template for this appointment time.

language
required
string
Example: language=English

Required to get a custom template of this language.

appt_type_id
string
Example: appt_type_id=1777

Retrieve the Custom Template with the appointment type id.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Feedback

Creates feedback records to capture user feedback after a successful visit booking.

Create a Feedback.

The feedbacks resource is a POST only endpoint which allows partners to create feedback records. Feedback resources capture user feedback after a successful visit booking.

Request Body schema: application/json
id
string

Visit safe id

inquicker-rating
number

User's rating of the InQuicker experience, from 0-4

facility-rating
number

User's rating of the Facility, from 0-4

time-waited
string

Answer to the time waited question

would-recommend
string
Enum: "yes" "no"

Answer to the would recommend question

comments
string

Comments

referer
string

Answer to the referer question

Responses

Request samples

Content type
application/json
{
  • "id": "7200ac465839958a7116cb03a342dee2",
  • "inquicker-rating": 0,
  • "facility-rating": 0,
  • "time-waited": "string",
  • "would-recommend": "yes",
  • "comments": "string",
  • "referer": "string"
}

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Facilities

Retriving facilities of a particular Health System or region, can be queried from the /facilities endpoint

List Facilities information.

Retrieve all Facility records for the health system or region.

query Parameters
filter[permalink]
string
Example: filter[permalink]=facility-permalink

Filter Facility based on permalink.

Responses

Response samples

Content type
application/vnd.api+json
{}

Insurance Plans

Insurance plans are used to determine whether a patient's health insurance is accepted by a particular schedule.

Each plan belongs to an insurance company, and insurance companies can have many plans. Every health system has its own unique list of insurance companies and plans.

Each schedule, facility, region, and health system can specify which insurance plans are accepted for a particular service. If the accepted insurance plans are specified for a schedule, that will override the facility's accepted insurance plans, which overrides the region's accepted insurance plans, which overrides the health system's accepted insurance plans.

To get insurance plans available for a schedule, use the Schedules endpoint.

List Insurance Plans.

Insurance plans are used to determine whether a patient's health insurance is accepted by a particular schedule. Each plan belongs to an insurance company, and insurance companies can have many plans. Every health system has its own unique list of insurance companies and plans.

Each schedule, facility, region, and health system can specify which insurance plans are accepted for a particular service. If the accepted insurance plans are specified for a schedule, that will override the facility's accepted insurance plans, which overrides the region's accepted insurance plans, which overrides the health system's accepted insurance plans.

To get insurance plans available for a schedule, use the Schedules endpoint.

query Parameters
service_ids
required
string
Example: service_ids=6882,7288,7289,7290,7291,8074

Filter Insurance Plans based on service ids

Responses

Response samples

Content type
application/vnd.api+json
{}

Health Systems

Health-System-specific information used in front-end implementations.

Retrieve information specific to the Health System.

List information specific to the Health System. This information is useful for front-end implementation, such as Google Tag Manager settings, and full lists of languages and hospital affiliations.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Locations

Locations, also called Facilities, correspond to the physical locations where services are provided. Locations have one or more related Schedules.

List Locations.

Retrieve all locations for a given Health System, and links to all related active schedules.

Responses

Response samples

Content type
application/vnd.api+json
{}

Retrieve a Location.

Retrieve a specific location, along with links to related schedules.

path Parameters
location_id
required
string
Example: 1

Identifier for location

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": "{\"data\":{\"id\":\"location-name\",\"type\":\"locations\",\"attributes\":{\"address\":\"101 Some Street\",\"city\":\"Springfield\",\"facility-name\":\"Sample Facility\",\"latitude\":50.0901,\"longitude\":14.4207,\"name\":\"Feestport\",\"phone\":\"12223332323\",\"state\":\"Maine\",\"zip\":\"01234\", \"permalink\": \"location-permalink\"},\"links\":{\"self\":\"https://api.inquicker.com/v4/winter.inquicker.com/locations/location-name\"},\"relationships\":{\"schedules\":{\"links\":{\"self\":\"https://api.inquicker.com/v4/winter.inquicker.com/locations/location-name/relationships/schedules\",\"related\":\"https://api.inquicker.com/v4/winter.inquicker.com/locations/location-name/schedules\"}}}}}"
}

Medical Groups

Medical Groups group Providers into logical groups.

List Medical Groups.

Medical Groups are logical groupings of Providers. A Provider can have zero or more Medical Groups.

Responses

Response samples

Content type
application/vnd.api+json
{}

Retrieve a Medical Group.

Retrieve a Medical Group.

path Parameters
medical_group_id
required
string
Example: 1

Identifier for the Medical Group

Responses

Response samples

Content type
application/vnd.api+json
{}

Payments

Making a Payments

To make a payment through this API through any payment vendor available.

query Parameters
schedule_id
required
string
Example: schedule_id=38098

Retrieve the payment fee with the schedule id.

appt_type_id
required
string
Example: appt_type_id=1777

Retrieve the payment fee with the appointment type id.

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}

Getting fees to pay for making a payment.

Getting a fee for a particular schedule for a particular appointment type id.

query Parameters
schedule_id
required
string
Example: schedule_id=38098

Retrieve the payment fee with the schedule id.

appt_type_id
required
string
Example: appt_type_id=1777

Retrieve the payment fee with the appointment type id.

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}

Retrieving settings regarding payment.

Retrieving settings regarding payment for a particular facility.

query Parameters
url_permalink
required
string
Example: url_permalink=facility-1

Retrieve settings for payment for particular permalink

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}

Providers

Providers for a specific scope (hostname) can be extracted using the Provider resource.

List Providers.

Returns a list of providers.

query Parameters
page[size]
integer
Example: page[size]=999

The page size for the response

include
string
Example: include=schedules,schedules.location

The results includes the required details requested.

object (ProvidersFilter)
Example: provider_type=healthresource

Filter providers

Responses

Response samples

Content type
application/vnd.api+json
{}

Retrieve a Provider.

Retrieve a specific provider.

path Parameters
provider_id
required
string
Example: miss-kent-cormier

Identifier for provider

Responses

Response samples

Content type
application/vnd.api+json
{}

Schedules

Schedules can be queried from the /schedules endpoint, or from the locations endpoint for schedules at a specific location.

List Schedules.

Retrieve all schedules for a given Health System.

query Parameters
from
string
Example: from=2021-07-05T14%3A55%3A22-05%3A00

Return schedules that have availability within a specified window (from & to). 'From' is the start time. Used with the check_availability param.

to
string
Example: to=2021-07-05T14%3A55%3A22-05%3A00

Return schedules that have availability within a specified window (from & to). 'To' is the end time. Used with the check_availability param.

check_availability
string
Example: check_availability=true

If included, and 'true', the returned schedules must have availability within the specified 'from'-'to' window.

sort
string
Default: "nearest"
Enum: "nearest" "soonest" "-soonest"
Example: sort=soonest

Schedules are returned either by closest to geolocation ('near' param required), soonest availability (to the current time), or by reversed availability. By default, schedules are returned by 'nearest'.

page_size
string
Example: page_size=999

The Page size for pagination

page_number
string
Example: page_number=4

The Page number slicinbg based on page size

include
string
Enum: "location" "provider" "service" "appointment-types" "facility" "insurance-plans" "venue-of-care"
Example: include=location

The results includes the required details requested.

filter[accepting_new_patients]
string
Example: filter[accepting_new_patients]=true

Return schedules where the Provider is accepting new patients. Omitting this filter will return results regardless of whether the Provider is accepting new patients.

filter[active]
string
Default: "true"
Example: filter[active]=false

Return inactive (and active) schedules if this filter is present and set to 'false'. If this filter is not present, only active schedules are returned by default.

filter[appointment_type]
integer
Example: filter[appointment_type]=100

Return schedules that have a specific appointment type. Theid is required for this filter.

filter[context]
string
Default: "patient"
Enum: "patient" "patient_now" "discharge"

Return schedules that belong to a specific context.

filter[facility_id][]
integer
Example: filter[facility_id][]=100

Return schedules that belong to a specific facility. The facility id is required for this filter. This filter can be used multiple times in the same query.

filter[location_id][]
integer
Example: filter[location_id][]=100

Return schedules that belong to a specific location. The location id is required for this filter.

filter[gender]
string
Enum: "male" "female"

Filter schedules based on Provider gender.

filter[hospital_affiliation][]
string
Example: filter[hospital_affiliation][]=New York Hospital

Filter schedules based on Provider's hospital affiliation. You can use this filter multiple times in the same query string.

filter[insurance]
integer
Example: filter[insurance]=100

Return schedules that support a specific insurance plan. The insurance id is required for this filter.

filter[language][]
string
Example: filter[language][]=Spanish

Filter schedules based on Provider's spoken language. You can use this filter multiple times in the same query string.

filter[near]
string
Example: filter[near]=40.7464969,-74.0094471

Return schedules that are within a certain radius of a lat/long coordinate.

filter[provider_type]
string
Enum: "practitioner" "healthresource"

Return schedules whose providers belong to a specific type.

filter[radius]
integer
Example: filter[radius]=40

Return schedules that are within a certain radius.

filter[service_id][]
integer
Example: filter[service_id][]=100

Return schedules that belong to a specific service. The service id is required for this filter. This filter can be used multiple times in the same query.

filter[speciality]
integer
Example: filter[speciality]=100

Return schedules where the Provider has a specific specialty. The Specialty id is required for this filter.

filter[venue_of_care]
integer
Example: filter[venue_of_care]=100

Return schedules that belong to a specific Venue of Care. The VOC id is required for this filter.

filter[hidden]
boolean
Default: true
Example: filter[hidden]=true

If the filter is true then it will show all the schedules, else if filter is false it will show only non-hidden schedules.

Responses

Response samples

Content type
application/vnd.api+json
{}

Retrieve a Schedule.

This call is useful for getting certain attributes associated with a schedule (for example, if a provider only sees patients younger than 18, or the service associated with the schedule).

path Parameters
schedule_id
required
string
Example: 1

Identifier for schedule

Responses

Response samples

Content type
application/vnd.api+json
{}

Retrieve Insurance Plans for a Schedule.

Used to retrieve all accepted insurance plans for a schedule. Useful for populating dropdowns of available insurance plans for the patient to select.

Usage Notes:

  • If the patient selects an "other" insurance plan, the entry form can be designed to prompt for a free text insurance name. This is a case where the insurance name passed to create the visit need not match the name returned from the Insurance Plans call.
path Parameters
schedule_id
required
string
Example: 1

Identifier for schedule

Responses

Response samples

Content type
application/vnd.api+json
{}

Services

Services for a specific scope (hostname) can be extracted using the Schedule resource.

List Services.

Retrieve all services for a given Health System.

query Parameters
object (Services)
Example: context=patient

Responses

Response samples

Content type
application/vnd.api+json
{}

Retrieve a service.

Retrieve a specific Service.

path Parameters
service_id
required
string
Example: 1

Identifier for service

Responses

Response samples

Content type
application/json

Service Lines

Service Lines for a specific scope (hostname) can be extracted using the Schedule resource.

List Service Lines.

Retrieve all service lines for a given Health System.

query Parameters
filter[permalink]
string
Example: filter[permalink]=primary-care

Limit results to service-lines with given service(s).

Responses

Response samples

Content type
application/vnd.api+json
{}

Visits

The Visit API allows health systems to make their own visit creation forms, enabling them to integrate visit creation into their own websites and applications. The Health System’s application or website can collect a patient’s visit details and submit these to InQuicker through the Visit API. In the past, visit creation was handled exclusively through InQuicker’s online visit creation forms. The Visit API involves transferring patient details as shown below.

Personal and Contact Information:

  • Full name

  • Date of birth

  • Gender

  • Full address

  • Phone number

  • Email

  • Caregiver name

Appointment and Care Information:

  • Date, time, and type of appointment

  • Patient complaint and comments

  • Primary care physician indicator and name

  • Insurance plan name, group number, member number, and insurance phone number

  • Translator needed and language

  • Pregnancy status and number of weeks pregnant

  • Standing assistance required

  • New patient indicator

Analytics:

  • URL

  • Referer

  • User agent

Other:

  • Remote UID

  • Opt in

Health systems can access this feature by coordinating with their InQuicker implementation manager (IM).

The feature.api.v4_visit_create setting must be enabled at the Health System level within the InQuicker console.

Usage Notes

  • Although screening questions can be used to prevent a patient from scheduling online, answers cannot be sent through the Visit Creation call.

  • Since InQuicker's forms are bypassed, the Partner is responsible for doing their own validations as well as creating and linking their own "Terms of Service" form.

  • Although the Terms of Service (terms-tos) and Terms 911 (terms-911) fields may be returned as required when querying Visit Settings, they must not be passed when creating a visit. It is included to remind the Partner of it's requirement.

  • When setting up a schedule in InQuicker (to be used by API v4), do not require any visit fields that are not supported by API v4.

  • Before using API v4 for a schedule, make sure the schedule does not require any visit fields that are not supported by the API. Doing so will cause validation to fail if the field is not submitted, but if included, will trigger an error.

  • A schedule can be configured within InQuicker to use keyword filtering to prevent a visit from being created. For example, if the patient complaint contains "shortness of breath," the InQuicker scheduling page would prevent the patient from scheduling and would direct the patient to page about when to call 911. When using API v4 for visit creation the Partner is now responsible for such rules.

  • If using the translator language field (translator-language), the list of available languages for the schedule can be retrieved using API V2. The API won't validate this field so the Partner is responsible for doing this if desired.

Validations

Field validations can be set up on the schedule level. However, some have behavior that cannot be changed. Please see the validation section in the Visit Settings call for more specific information.

Attributes

Attribute Description Type Validations
address First line of patient's address String Required if visit.full_address feature enabled
address_2 Second line of patient's address String
appointment-at Date and time of appointment ISO 8601 Required
appointment-type Appointment type ID String Required if schedule has appointment types
birthdate Patient's birthdate ISO 8601 Required
caregiver-name Name of patient’s primary caregiver String Required if patient’s age is 13 or younger
city City of patient's address String Required if visit.full_address feature is enabled
comments Additional comments String
email Patient's email address String Required
first-name Patient's first name String Required
gender Patient's gender String Required - must be "female" or "male"
has-physician Indicates if patient has a physician String Required if visit.has_physician is enabled - must be "true" or "false"
is-self-pay Indicate if user will pay without Insurance String Optional - must be "true" or "false"
insurance-group-number Patient's insurance plan group number String Required if visit.insurance_group_number is set to required
insurance-member-number Patient's insurance plan member number String Required if visit.insurance_member_number is set to required
insurance-plan-name Patient's insurance plan name String Required if visit.insurance_plan_name is set to required
insurance-plan-permalink Patient's insurance plan permalink (corresponds to InQuicker plan) String Required if visit.insurance_plan_name is set to required (maps to InQuicker plan)
insurance-plan-phone-number Patient's insurance plan provider phone number String Required if visit.insurance_plan_phone_number is set to required
last-name Patient's last name String Required
middle-initial Patient's middle initial String
new-patient Indicates if the patient new to the system String Required - Must be "yes" or "no"
optin Indicate if user wishes to receive health system marketing emails Number 1 indicates true, 0 indicates false
patient-complaint Patient's health complaint String Required if visit.patient_complaint is set to required
phone-number Patient's contact phone number String Required
pregnant Indicates if patient is pregnant String Required if patient's gender is female and visit.pregnant is set to required - Must be "yes" or "no"
primary-care-physician Name of patient's primary care physician String Required if patient indicated they have a physician and visit.primary_care_physician is set to required
referer Full URL that brought the user to the site String
remote-uid Passthrough field associate with visit (ex. Healthgrades / GECB) String
requires-standing-assistance Indicates if patient requires standing assistance String Required if visit.requires_standing_assistance is set to required - Must be "yes" or "no"
requires-translator Indicates if patient requires a translator String Must be "yes" or "no"
state Patient's state String Required if visit.full_address is set required
translator-language Language requested for patient's translator String
url Full URL the user first visited on the site String Includes UTM parameters if applicable
user-agent User agent of the user who booked the appointment String
weeks-pregnant Number of weeks pregnant String Required if patient has indicated pregnancy
zip Patient's zip code String Required if visit.full_address is set to required

Create a Visit.

The visits resource is a POST only endpoint which allows partners to create visits. Visit resources cannot be queried in any way and the visit resource will not return any patient information.

Authorizations:
iq_api
Request Body schema: application/json
object (Visit Request Data)

Responses

Request samples

Content type
application/json
{
  • "data": {
    }
}

Response samples

Content type
application/json
{}

Visit Settings

Various settings that affect visit creation.

Retrieve the Visit Settings.

Settings within InQuicker have many effects on the visit scheduling process. The Visit Settings endpoint exports many of these settings allowing Partners to build forms having feature parity with InQuicker's own. The Visit Settings endpoint returns settings for a specific schedule.

The following visit settings are exported using this endpoint:

  • Validations

  • Enabled Fields

  • Patient Instructions

  • Pre-registration Forms

Validations

Validations describe how some fields will be validated by the server when attempting to create a visit object. The Validation details can be used to create client side validation routines which match the InQuicker server. One benefit of using this API is that custom validations can be added on the client side regardless of the InQuicker setup.

Important: Not all validations used on the server are reported using this interface. For example, some EHR integrations reference a database of valid phone numbers. Visit creation should always check for errors.

The following validations are reported with this endpoint:

Acceptance Validator

The acceptance validator ensures that the user has accepted a 'Yes/No' question. Acceptable values for the attribute are '1' or 'True'.

{
  "type": "validation",
  "attributes": {
    "kind": "acceptance",
    "attributes": [
      "terms-911"
    ],
    "accept": "1",
    "allow-nil": true
  }
},
Birthdate Validator

The birthdate validation checks that the attribute passed is any date before the current date.

  "type": "validation",
  "attributes": {
    "kind": "birthdate",
    "attributes": [
      "birthdate"
    ]
  }
},
Email Validator

The email validation routine checks that the attribute passed is a parsable email address and attempts to verify the domain part DNS record.

{
  "type": "validation",
  "attributes": {
    "kind": "email",
    "attributes": [
      "email"
    ]
  }
},
Format Validator

The format routine checks the attribute against a regular expression which is passed with the validator.

Parameters:

  • with: a regular expression.

Important The regular expression is a Ruby regular expression. While we favor simple regular expressions, we cannot guarantee that the regular expression passed will work with other languages.

{
  "type": "validation",
  "attributes": {
    "kind": "format",
    "attributes": [
      "middle-initial"
    ],
    "allow-blank": true,
    "with": "(?-mix:A[a-zA-Z]{1}z)"
  }
},
Inclusion Validator

The inclusion validation checks to see that the attribute is in a list of acceptable values.

Parameters:

  • in: array of acceptable values
{
  "type": "validation",
  "attributes": {
    "kind": "inclusion",
    "attributes": [
      "has-physician"
    ],
    "in": [
      true,
      false
    ]
  }
},
Length Validator

The length validator checks the length of the attribute.

Parameters:

  • is: the number of characters required
{
  "type": "validation",
  "attributes": {
    "kind": "length",
    "attributes": [
      "zip"
    ],
    "is": "5"
  }
},
Numercality Validator

The numercality validator checks to see if the attribute is numeric.

{
  "type": "validation",
  "attributes": {
    "kind": "numericality",
    "attributes": [
      "zip"
    ]
  }
},
Presence Validator

The presense routine validates that a value exists.

{
  "type": "validation",
  "attributes": {
    "kind": "presence",
    "attributes": [
      "birthdate"
    ]
  }
}
Phone Validator

The phone validator attempts to verify that the attribute passed is a North American phone number with an included area code.

The value is stripped of any delimeters, and then checked to ensure that 10 digits remain.

{
  "type": "validation",
  "attributes": {
    "kind": "phone",
    "attributes": [
      "phone-number"
    ]
  }
},

Enabled Fields List

Form fields are dependant on schedule context and configuration. The Enabled Fields List provides the list of enabled fields for this schedule's context.

For example, a clinic may which to collect a patient's full address, in which case address, address-2, city, and state would be present in the Enabled Fields list.

{
  "type": "enabled-fields",
  "attributes": {
    "fields": [
      "caregiver-name",
      "first-name",
      "has-physician",
      "last-name",
      "middle-initial",
      "new-patient",
      "patient-complaint",
      "phone-number",
      "terms-tos",
      "weeks-pregnant",
      "birthdate",
      "email",
      "gender",
      "pregnant",
      "zip"
    ]
  }
},

Screening Questions

A schedule can be configured to ask a series of questions for allowing the user to access the booking form. The set of questions are passed via the Screening Questions setting as a URL.

{
  "type": "screening-questions",
  "attributes": {
    "url": "https://example.com/screening-questions.json"
  }
},

Example content:

{
  "heading": "In order to ensure you receive the right type of care, please take a minute to answer the following questions.",
  "messages": [{
    "messageId": "abort",
    "content": "Due to your response, we have some additional questions"
  }],
  "questions": [{
    "text": "This is a standard question with a YES and NO answer and an abort action.",
    "single - choice": [{
      "value": "yes",
      "text": "Yes"
    }, {
      "value": "no",
      "text": "No"
    }],
    "outcomes": [{
      "value": "yes",
      "actions": [{
        "handler": "abortWithMessage",
        "messageId": "abort"
      }, {
        "handler": "gaAction",
        "action": "abort"
      }]
    }]
  }, {
    "text ": "This is a question with a YES and NO answer without an abort action.",
    "single - choice": [{
      "value": "yes",
      "text": "Yes"
    }, {
      "value": "no",
      "text": "No"
    }]
  }, {
    "text": "This is an information statement with an 'acknowledge' outcome.",
    "acknowledge ": [{
      "text": "OK"
    }]
  }, {
    "text": "Thank you for your time. Please proceed to the Patient Information Form to schedule your appointment.",
    "proceed": {
      "text": "Proceed"
    }
  }]
}

Patient Instructions

A schedule can be setup with instructions that can be displayed to the patient, usually on a confirmation page.

{
  "type": "patient-instructions",
  "attributes": {
    "text": "Please:<br/>Arrive 15 minutes prior to appointment.<br/>Bring insurance card, copay and driver's license or photo ID.<br/>Bring current medication list with dosages or bottles as per provider instructions.<br/>Bring referral if required by insurance.<br/>If patient is under the age of 18 must be accompanied by parent or guardian. "
  }
},

Pre-registration Form

A schedule can be setup with an optional Pre-registration Form, which is typically a link to a PDF form.

{
  "type": "preregistration-form",
  "attributes": {
    "url": "https://example.com/preregistration-form.pdf"
  }
},
path Parameters
schedule_id
required
string
Example: 123

Schedule of the intended visit

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Tokens

Token for a specific scope (hostname) to obtain a JSON Web Token (JWT) and the JWT is forwarded to the web client.

Get a JWT.

Get a JSON Web Token to use to authorize access to the API.

query Parameters
api_key
string
Example: api_key=db19faf29227a76ad88e22af411a8b3a16356dc3

Your API key.

object (appointment_at)

The time slot in ISO 8601 format.

Responses

Response samples

Content type
text/plain
eyJ0eXAiOiJKV1QiLCJhbGcjOiJIUzI1NiJ9.eyJkYXRhIjp7InNjaGVkdWxlX2lkIjoiZjNjN2QwNDQtM2UyMy10YzcwLThlOTktYTUwNGExOWYyODc0IiwiYXBwb2ludG1lbnRfYXQiOiJcIjIwMTktMTAtMDNUMTQ6MTU6MDAtMDU6MDBcIiJ9LCJleHAiOjE1NzAxMTc4NDMsImp0aSI6IjcxYTg0YWQwLWMyOWYtNDNmYi1iZTVjLTJlZGUyNzBhZDQ3ZCJ9.MESqdi2QeQwcmab--ZAvRTRCMASiHtt51LLR7VfHm1M