Difference between revisions of "Scheduling Support"

From Hiasobi - FHIR
Jump to: navigation, search
(RESPONSE)
(REQUEST)
 
(16 intermediate revisions by the same user not shown)
Line 6: Line 6:
 
See: Core FHIR Resources [http://hl7.org/fhir/STU3/appointment.html Appointment], [http://hl7.org/fhir/STU3/schedule.html Schedule], [http://hl7.org/fhir/STU3/schedule.html Slot]
 
See: Core FHIR Resources [http://hl7.org/fhir/STU3/appointment.html Appointment], [http://hl7.org/fhir/STU3/schedule.html Schedule], [http://hl7.org/fhir/STU3/schedule.html Slot]
  
 +
 +
Sample Web App Using this API
 +
http://oridashi.com.au/site/scheduling.html
  
 
===REQUEST===
 
===REQUEST===
  
Appointment books may be broken in to periods during a single day.
+
* Appointment books may be broken in to periods during a single day.
 +
* NOTE: Authorization is generally required in production
  
 
Get 'all' is 6 weeks of all practitioners as Schedule resource:
 
Get 'all' is 6 weeks of all practitioners as Schedule resource:
Line 34: Line 38:
 
* Return a FHIR [http://hl7.org/fhir/bundle.html Bundle]  
 
* Return a FHIR [http://hl7.org/fhir/bundle.html Bundle]  
 
* Bundle.entry will contain [http://hl7.org/fhir/schedule.html Schedule] entries
 
* Bundle.entry will contain [http://hl7.org/fhir/schedule.html Schedule] entries
* Example response in xml and json format:
+
* Example response in xml and json format [[example-schedule-bundle]]
 
+
 
+
<pre>
+
{
+
  "resourceType":"Bundle",
+
  "id":"e877b7c9-f68b-4f20-9211-194fca2e5f67",
+
  "meta":{
+
      "versionId":"20180619112404",
+
      "lastUpdated":"2018-06-19T01:24:04.171+00:00"
+
  },
+
  "type":"searchset",
+
  "total":7,
+
  "link":[
+
      {
+
        "relation":"self",
+
        "url":"http://demo.oridashi.com.au:8297/Schedule?date=2018-06-21&_include=Schedule:actor"
+
      },
+
      {
+
        "relation":"last",
+
        "url":"http://demo.oridashi.com.au:8297/Schedule?date=2018-06-21&_include=Schedule:actor&_page=1&_snapshot=636650042440156250"
+
      }
+
  ],
+
  "entry":[
+
      {
+
        "fullUrl":"http://demo.oridashi.com.au:8297/Schedule/6FA2AA1CA439ABFB38D48297E0ACC3FF.1-20180621-30600-18000-900-1",
+
        "resource":{
+
            "resourceType":"Schedule",
+
            "id":"6FA2AA1CA439ABFB38D48297E0ACC3FF.1-20180621-30600-18000-900-1",
+
            "meta":{
+
              "versionId":"20180619012404",
+
              "lastUpdated":"2018-06-19T01:24:04.078+00:00"
+
            },
+
            "extension":[
+
              {
+
                  "url":"http://oridashi.com.au/fhir/StructureDefinition/schedule-default-duration",
+
                  "valueQuantity":{
+
                    "value":900,
+
                    "unit":"s"
+
                  }
+
              }
+
            ],
+
            "actor":[
+
              {
+
                  "reference":"Practitioner/6FA2AA1CA439ABFB38D48297E0ACC3FF.1"
+
              },
+
              {
+
                  "reference":"Location/6FA2AA1CA439ABFB38D48297E0ACC3FF.1"
+
              }
+
            ],
+
            "planningHorizon":{
+
              "start":"2018-06-21T08:30:00+10:00",
+
              "end":"2018-06-21T13:30:00+10:00"
+
            }
+
        }
+
      },
+
      {
+
        "fullUrl":"http://demo.oridashi.com.au:8297/Practitioner/6FA2AA1CA439ABFB38D48297E0ACC3FF.1",
+
        "resource":{
+
            "resourceType":"Practitioner",
+
            "id":"6FA2AA1CA439ABFB38D48297E0ACC3FF.1",
+
            "meta":{
+
              "versionId":"20180124042613",
+
              "lastUpdated":"2018-01-24T04:26:13+00:00"
+
            },
+
            "text":{
+
              "status":"generated",
+
              "div":"<div xmlns=\"http://www.w3.org/1999/xhtml\"><p>D&apos;Sousa, Frederick Tao</p></div>"
+
            },
+
            "identifier":[
+
              {
+
                  "use":"usual",
+
                  "type":{
+
                    "coding":[
+
                        {
+
                          "system":"http://hl7.org.au/v2/0203",
+
                          "code":"PRESC",
+
                          "display":"Prescriber Number"
+
                        }
+
                    ],
+
                    "text":"Prescriber Number"
+
                  },
+
                  "system":"http://ns.electronichealth.net.au/id/medicare-prescriber-number",
+
                  "value":"453221"
+
              }
+
            ],
+
            "active":true,
+
            "name":[
+
              {
+
                  "use":"official",
+
                  "family":"D'Sousa",
+
                  "given":[
+
                    "Frederick Tao"
+
                  ],
+
                  "prefix":[
+
                    "Dr"
+
                  ]
+
              }
+
            ],
+
            "telecom":[
+
              {
+
                  "system":"phone",
+
                  "value":"456131345",
+
                  "use":"home"
+
              },
+
              {
+
                  "system":"phone",
+
                  "value":"05645613121",
+
                  "use":"mobile"
+
              },
+
              {
+
                  "system":"email",
+
                  "value":"findacure7@bpsoftware.com.au",
+
                  "use":"work"
+
              }
+
            ]
+
        }
+
      },
+
      {
+
        "fullUrl":"http://demo.oridashi.com.au:8297/Location/6FA2AA1CA439ABFB38D48297E0ACC3FF.1",
+
        "resource":{
+
            "resourceType":"Location",
+
            "id":"6FA2AA1CA439ABFB38D48297E0ACC3FF.1",
+
            "meta":{
+
              "versionId":"20170919041016",
+
              "lastUpdated":"2017-09-19T04:10:16+00:00"
+
            },
+
            "text":{
+
              "status":"generated",
+
              "div":"<div xmlns=\"http://www.w3.org/1999/xhtml\"><p>Oridashi BP Test Practice</p></div>"
+
            },
+
            "identifier":[
+
              {
+
                  "use":"usual",
+
                  "type":{
+
                    "text":"Facility Id"
+
                  },
+
                  "system":"http://oridashi.com.au/id/facilityid",
+
                  "value":"6FA2AA1CA439ABFB38D48297E0ACC3FF"
+
              }
+
            ],
+
            "status":"active",
+
            "name":"Oridashi BP Test Practice",
+
            "mode":"instance",
+
            "telecom":[
+
              {
+
                  "system":"phone",
+
                  "value":"0423083847",
+
                  "use":"work"
+
              },
+
              {
+
                  "system":"fax",
+
                  "value":"0394951418",
+
                  "use":"work"
+
              },
+
              {
+
                  "system":"email",
+
                  "value":"frontdesk2@oridashi.com.au",
+
                  "use":"work"
+
              }
+
            ],
+
            "address":{
+
              "use":"work",
+
              "line":[
+
                  "3 Main Street",
+
                  "Plaza Del Pinto"
+
              ],
+
              "city":"Thornbury",
+
              "state":"VIC",
+
              "postalCode":"3071"
+
            },
+
            "managingOrganization":{
+
              "reference":"Organization/6FA2AA1CA439ABFB38D48297E0ACC3FF.0"
+
            }
+
        }
+
      },
+
      {
+
        "fullUrl":"http://demo.oridashi.com.au:8297/Schedule/6FA2AA1CA439ABFB38D48297E0ACC3FF.5-20180621-30600-14400-900-1",
+
        "resource":{
+
            "resourceType":"Schedule",
+
            "id":"6FA2AA1CA439ABFB38D48297E0ACC3FF.5-20180621-30600-14400-900-1",
+
            "meta":{
+
              "versionId":"20180619012404",
+
              "lastUpdated":"2018-06-19T01:24:04.093+00:00"
+
            },
+
            "extension":[
+
              {
+
                  "url":"http://oridashi.com.au/fhir/StructureDefinition/schedule-default-duration",
+
                  "valueQuantity":{
+
                    "value":900,
+
                    "unit":"s"
+
                  }
+
              }
+
            ],
+
            "actor":[
+
              {
+
                  "reference":"Practitioner/6FA2AA1CA439ABFB38D48297E0ACC3FF.5"
+
              },
+
              {
+
                  "reference":"Location/6FA2AA1CA439ABFB38D48297E0ACC3FF.1"
+
              }
+
            ],
+
            "planningHorizon":{
+
              "start":"2018-06-21T08:30:00+10:00",
+
              "end":"2018-06-21T12:30:00+10:00"
+
            }
+
        }
+
      },
+
      {
+
        "fullUrl":"http://demo.oridashi.com.au:8297/Practitioner/6FA2AA1CA439ABFB38D48297E0ACC3FF.5",
+
        "resource":{
+
            "resourceType":"Practitioner",
+
            "id":"6FA2AA1CA439ABFB38D48297E0ACC3FF.5",
+
            "meta":{
+
              "versionId":"20161229112606",
+
              "lastUpdated":"2016-12-29T11:26:06+00:00"
+
            },
+
            "text":{
+
              "status":"generated",
+
              "div":"<div xmlns=\"http://www.w3.org/1999/xhtml\"><p>D&apos;Nurse, Nadine</p></div>"
+
            },
+
            "active":true,
+
            "name":[
+
              {
+
                  "use":"official",
+
                  "family":"D'Nurse",
+
                  "given":[
+
                    "Nadine"
+
                  ]
+
              }
+
            ],
+
            "telecom":[
+
              {
+
                  "system":"phone",
+
                  "value":"784313465",
+
                  "use":"home"
+
              },
+
              {
+
                  "system":"phone",
+
                  "value":"097513132",
+
                  "use":"mobile"
+
              },
+
              {
+
                  "system":"email",
+
                  "value":"nadine.nurse@bpsoftware.com.au",
+
                  "use":"work"
+
              }
+
            ]
+
        }
+
      },
+
      {
+
        "fullUrl":"http://demo.oridashi.com.au:8297/Schedule/6FA2AA1CA439ABFB38D48297E0ACC3FF.5-20180621-50400-13500-900-1",
+
        "resource":{
+
            "resourceType":"Schedule",
+
            "id":"6FA2AA1CA439ABFB38D48297E0ACC3FF.5-20180621-50400-13500-900-1",
+
            "meta":{
+
              "versionId":"20180619012404",
+
              "lastUpdated":"2018-06-19T01:24:04.109+00:00"
+
            },
+
            "extension":[
+
              {
+
                  "url":"http://oridashi.com.au/fhir/StructureDefinition/schedule-default-duration",
+
                  "valueQuantity":{
+
                    "value":900,
+
                    "unit":"s"
+
                  }
+
              }
+
            ],
+
            "actor":[
+
              {
+
                  "reference":"Practitioner/6FA2AA1CA439ABFB38D48297E0ACC3FF.5"
+
              },
+
              {
+
                  "reference":"Location/6FA2AA1CA439ABFB38D48297E0ACC3FF.1"
+
              }
+
            ],
+
            "planningHorizon":{
+
              "start":"2018-06-21T14:00:00+10:00",
+
              "end":"2018-06-21T17:45:00+10:00"
+
            }
+
        }
+
      }
+
  ]
+
}
+
</pre>
+
  
 
==Search available slots as Slot resource==
 
==Search available slots as Slot resource==
Line 326: Line 46:
 
* LIMITED SUPPORT Get all slots in a given schedule (appointment book)
 
* LIMITED SUPPORT Get all slots in a given schedule (appointment book)
 
* add $_count=10000 if you don't want response bundle paging
 
* add $_count=10000 if you don't want response bundle paging
 +
* NOTE: Authorization is generally required in production
  
 
  GET [base]/Slot?schedule=<schedule.id> HTTP/1.1
 
  GET [base]/Slot?schedule=<schedule.id> HTTP/1.1
Line 333: Line 54:
 
* Return a FHIR [http://hl7.org/fhir/bundle.html Bundle]  
 
* Return a FHIR [http://hl7.org/fhir/bundle.html Bundle]  
 
* Bundle.entry will contain [http://hl7.org/fhir/slot.html Slot] entries
 
* Bundle.entry will contain [http://hl7.org/fhir/slot.html Slot] entries
* Example response in xml + json format:
+
* Example response in xml + json format:[[example-slot-bundle]]
[[slot-response-json]]
+
  
 
==Appointment Details==
 
==Appointment Details==
Line 348: Line 68:
 
* comment : further notes to include in the appointment
 
* comment : further notes to include in the appointment
  
 +
===REQUEST===
 +
* Make an appointment via API
 +
* NOTE: Authorization is generally required in production
  
<pre>POST https://localhost.oridashi.com.au:8102/Appointment HTTP/1.1
+
<pre>POST [base]/Appointment HTTP/1.1
 
Content-Length: 424
 
Content-Length: 424
 
Accept: application/fhir+json
 
Accept: application/fhir+json
Line 376: Line 99:
 
   ],
 
   ],
 
   "comment":"test notes"
 
   "comment":"test notes"
 +
}
 +
</pre>
 +
 +
===RESPONSE===
 +
* content is returned + the allocated Appointment.id
 +
* can keep this id to remove appointments later
 +
* for example
 +
 +
<pre>
 +
{"resourceType":"Appointment",
 +
    "id":"6FA2AA1CA439ABFB38D48297E0ACC3FF.653",
 +
    ...
 
}
 
}
 
</pre>
 
</pre>
Line 384: Line 119:
  
 
<pre>GET https://localhost.oridashi.com.au:8102/Schedule?date=2018-06-19&_include=Schedule:actor HTTP/1.1
 
<pre>GET https://localhost.oridashi.com.au:8102/Schedule?date=2018-06-19&_include=Schedule:actor HTTP/1.1
 +
Authorization: Basic c2FtcGxlczo2Nzc2M0YxQTZBNjE0NkQ5QjVBREE4NTg=
 
Accept: application/fhir+json
 
Accept: application/fhir+json
 
</pre>
 
</pre>
Line 391: Line 127:
  
 
<pre>GET https://localhost.oridashi.com.au:8102/Slot?schedule=6FA2AA1CA439ABFB38D48297E0ACC3FF.1-20180619-32400-3600-900-1 HTTP/1.1
 
<pre>GET https://localhost.oridashi.com.au:8102/Slot?schedule=6FA2AA1CA439ABFB38D48297E0ACC3FF.1-20180619-32400-3600-900-1 HTTP/1.1
 +
Authorization: Basic c2FtcGxlczo2Nzc2M0YxQTZBNjE0NkQ5QjVBREE4NTg=
 
Accept: application/fhir+json
 
Accept: application/fhir+json
 
</pre>
 
</pre>
  
 +
Use the details of a free slot to make an appointment by posting
 +
 +
<pre>POST https://localhost.oridashi.com.au:8102/Appointment HTTP/1.1
 +
Authorization: Basic c2FtcGxlczo2Nzc2M0YxQTZBNjE0NkQ5QjVBREE4NTg=
 +
Content-Length: 424
 +
Accept: application/fhir+json
 +
Content-Type: application/fhir+json
 +
...body...
 +
</pre>
  
  
 
Archive Material: [[Appointment Management]]
 
Archive Material: [[Appointment Management]]

Latest revision as of 14:21, 19 June 2018

Search appointment books as Schedule resource

See: Core FHIR Resources Appointment, Schedule, Slot


Sample Web App Using this API http://oridashi.com.au/site/scheduling.html

REQUEST

  • Appointment books may be broken in to periods during a single day.
  • NOTE: Authorization is generally required in production

Get 'all' is 6 weeks of all practitioners as Schedule resource:

GET [base]/Schedule HTTP/1.1
Accept: application/fhir+json

Get all schedules for a practitioner:

GET [base]/Schedule?actor=Practitioner/<practitioner id> HTTP/1.1
Accept: application/fhir+json

Get all schedules for a location:

GET [base]/Schedule?actor=Location/<location id> HTTP/1.1
Accept: application/fhir+json

Get all schedules for a practitioner at a location on a date:

GET [base]/Schedule?date=<date>&actor=Practitioner/<practitioner id>&actor=Location/<location id> HTTP/1.1
Accept: application/fhir+json

Can include Practitioner and Locations details also

&_include=Schedule:actor

RESPONSE

Search available slots as Slot resource

REQUEST

  • LIMITED SUPPORT Get all slots in a given schedule (appointment book)
  • add $_count=10000 if you don't want response bundle paging
  • NOTE: Authorization is generally required in production
GET [base]/Slot?schedule=<schedule.id> HTTP/1.1
Accept: application/fhir+json

RESPONSE

Appointment Details

  • Create a FHIR Appointment resource instance to submit based on the slot start/end and practitioner info
  • 1..1 status : pending (appointment is proposed)
  • 1..1 start/ 1..1 end : date-time period for the appointment
  • 0..1 description : top line summary text for the appointment
  • 0..* participant : entities involved with the appointment
    • actor.reference : reference the FHIR id of the entity
    • 1..1 Practitioner participant must be provided (by reference); required = required (must attend); status = needs-action (system yet to accept)
    • 0..1 Patient reference a patient if you can to link automatically in the PMS ; required = required (must attend); status = accepted (already confirmed)
  • comment : further notes to include in the appointment

REQUEST

  • Make an appointment via API
  • NOTE: Authorization is generally required in production
POST [base]/Appointment HTTP/1.1
Content-Length: 424
Accept: application/fhir+json
Content-Type: application/fhir+json
{
   "resourceType":"Appointment",
   "status":"pending",
   "start":"2018-06-21T09:30:00+10:00",
   "end":"2018-06-21T09:45:00+10:00",
   "description":"Online Appointment",
   "participant":[
      {
         "actor":{
            "reference":"Practitioner/6FA2AA1CA439ABFB38D48297E0ACC3FF.1"
         },
         "required":"required",
         "status":"needs-action"
      },
      {
         "actor":{
            "reference":"Patient/6FA2AA1CA439ABFB38D48297E0ACC3FF.2"
         },
         "required":"required",
         "status":"accepted"
      }
   ],
   "comment":"test notes"
}

RESPONSE

  • content is returned + the allocated Appointment.id
  • can keep this id to remove appointments later
  • for example
{"resourceType":"Appointment",
    "id":"6FA2AA1CA439ABFB38D48297E0ACC3FF.653",
    ...
}

Typical Usage

Get calendars and include practitioners and locations; then get slots

GET https://localhost.oridashi.com.au:8102/Schedule?date=2018-06-19&_include=Schedule:actor HTTP/1.1
Authorization: Basic c2FtcGxlczo2Nzc2M0YxQTZBNjE0NkQ5QjVBREE4NTg=
Accept: application/fhir+json


Get slots from all schedules e.g. slots for each schedule by id like:

GET https://localhost.oridashi.com.au:8102/Slot?schedule=6FA2AA1CA439ABFB38D48297E0ACC3FF.1-20180619-32400-3600-900-1 HTTP/1.1
Authorization: Basic c2FtcGxlczo2Nzc2M0YxQTZBNjE0NkQ5QjVBREE4NTg=
Accept: application/fhir+json

Use the details of a free slot to make an appointment by posting

POST https://localhost.oridashi.com.au:8102/Appointment HTTP/1.1
Authorization: Basic c2FtcGxlczo2Nzc2M0YxQTZBNjE0NkQ5QjVBREE4NTg=
Content-Length: 424
Accept: application/fhir+json
Content-Type: application/fhir+json
...body...


Archive Material: Appointment Management