Argo-Scheduling Implementation Guide Release 1.0.0

This page is part of the Argonaut Scheduling Implementation Guide (v1.0.0: Release) based on FHIR R3. This is the current published version in it's permanent home (it will always be available at this URL). For a full list of available versions, see the Directory of published versions

Availability Prefetch Operation

OPERATION: Availability Prefetch Operation

The official URL for this operation definition is:

http://fhir.org/guides/argonaut-scheduling/OperationDefinition/slot-prefetch

This operation fetches available free slots for the 'initial load', update and reconciliation steps in the Prefetch Use Case. The server determines which open slots to expose to the application for use in creating new appointments. If neither a start or end date is given then the maximum period as defined by local business rules and starting from when the operation was transacted SHALL be used. The actors practitioner, organization and location further refine the search.

URL: [base]/Slot/$prefetch

Parameters

Use Name Cardinality Type Binding Documentation
IN start 1..1 dateTime

The period of time that should be checked for free slots. If no start date is provided, all available slots prior to the end date are in scope (subject to limits imposed by local business rules).

IN end 1..1 dateTime

The period of time that should be checked for appointment availability. If no end date is provided, all available slots after the start date are in scope (subject to limits imposed by local business rules).

IN practitioner 0..* uri

The Practitioner reference when performing a provider based query. This is a reference to a FHIR Practitioner resource, e.g. 'Practitioner/123'.

IN organization 0..* uri

The Organization reference when performing a provider based query. This is a reference to a FHIR Organization resource, e.g. 'Organization/abc'.

IN location-string 0..* string

A (part of the) address of the location of interest. (e.g., zip codes, city or state). This string parameter is interpreted as a String search parameter and covers the string type elements in the Address datatype.

IN location-reference 0..* uri

A Location reference when performing an operation where the Location resource id is known.

OUT return 0..1 Bundle(Argonaut Slot Bundle Profile)

An Argonaut Slot Bundle Profile of type searchset with entries of proposed Slot resources and may also contain an OperationOutcome with errors, warnings or information as a result of processing the operation - e.g., an informational notice that the returned slots are not within the requested start and end times. An empty bundle means no available slots based on inputs

  • All input parameters are simple types allowing either the GET or the POST syntax to be used to initiate the interaction. Examples of both are shown below.
  • If more than one actor type is present, the response SHALL contain slots with all of these actors (i.e, this is a logical 'AND'). If an actor type is repeated the response SHALL contain slots with any of these actors and the order SHOULD be interpreted as the order of preference (i.e. this is a logical 'OR' and does not drive a joint appointment with multiple practitioners. locations or organizations).
  • References can be to an absolute URL, but servers only perform operations on their own resources.

Using Both GET and POST Syntax the operation can be invoked as follows:

GET [base]/Slot/$prefetch?{parameters}

POST [base]/Slot/$prefetch

Examples

Prefetch open slots from July 15,2017 to August 17,2017

Request using GET Syntax

GET [base]/Slot/$prefetch?start=2017-07-15T20:00:00Z&end=2017-07-17T20:00:00Z

Request using POST Syntax

POST [base]/Slot/$prefetch

Post request body

    {
      "resourceType": "Parameters",
      "parameter": [
        {
          "name": "start",
          "valueDateTime" : "2017-07-15T20:00:00Z"
        },
        {
          "name": "end",
            "valueDateTime" : "2017-07-17T20:00:00Z"
        }
    ]
    }

Response

HTTP/1.1 200 OK
[other headers]

Response body

    {
      "resourceType": "Bundle",
      "id": "prefetch-1",
      "type": "searchset",
      "total": 1000,
      "entry": [{
        "fullUrl": "http://server/path/Slot/1",
        "resource": {
          "resourceType": "Slot",
          "id": "1",
          .. snip ...
          "status":"free"
          .. snip ...
        },
        "fullUrl": "http://server/path/Slot/2",
        "resource": {
          "resourceType": "Slot",
          "id": "2",
          .. snip ...
          "status":"free"
          .. snip ...
        },
        "fullUrl": "http://server/path/Slot/3",
        "resource": {
          "resourceType": "Slot",
          "id": "3",
          .. snip ...
          "status":"free"
          .. snip ...
        },
        "fullUrl": "http://server/path/OperationOutcome/oo-for-prefetch",
        "resource": {
          "resourceType": "OperationOutcome",
          "id": "oo-for-prefetch",
          .. snip ...
        }
      ]
    }