Difference between revisions of "Appointment Management"

From Hiasobi - FHIR
Jump to: navigation, search
(Request Appointment)
(Appointments Requiring Action)
 
(31 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
== Information ==
 
== Information ==
  
See: [http://hl7.org/fhir/DSTU2/appointment.html]
+
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]
  
 +
Todo: Oridashi Profiles for Appointment, Schedule and Slot
  
 
== Available Slots ==
 
== Available Slots ==
 +
* Schedules (Appointment Book) can be retrieved from FHIR interface (FHIR Schedule)
 +
* Each FHIR Schedule is for a provider (FHIR Practitioner); there may be multiple sessions per day
 +
* A FHIR extension defines the nominal slot period length for each Schedule
 +
* Free/Busy slots are available (FHIR Slot)
 +
* Configurable look ahead period (default 6 weeks)
 +
* Polling to detect schedule changes
  
Practitioner schedule sessions in this implementation these are complete sessions - there may be multiple sessions per day
+
For appointment book practice adapter calls Oridashi-Hiasobi FHIR API [http://hl7.org/fhir/http.html#search search] request:
  
  Schedule
+
  GET [base]/Schedule?date=<date>&actor=<practitioner id>&_include=Schedule:actor
  Extension - nominal period of slots
+
  
Free/busy slots that represent a period for an appointment; these may be already booked or currently free
+
Oridashi-Hiasobi FHIR API search response:
  
  Slot
+
* Return a FHIR [http://hl7.org/fhir/bundle.html Bundle]
 +
* Bundle.entry will contain [http://hl7.org/fhir/schedule.html Schedule] and included (actor) [http://hl7.org/fhir/appointment.html Practitioner] and [http://hl7.org/fhir/location.html Location] resources
 +
* Example response in xml + json format:
 +
[[schedule-xml]]  [[schedule-json]]
  
 +
For free/busy slots practice adapter calls Oridashi-Hiasobi FHIR API [http://hl7.org/fhir/http.html#search search] request:
  
==Request Appointment==
+
GET [base]/Slot?schedule=<schedule.id>
  
Search for requested appointments on the server
+
Oridashi-Hiasobi FHIR API search response:
 +
* Return a FHIR [http://hl7.org/fhir/bundle.html Bundle]
 +
* Bundle.entry will contain [http://hl7.org/fhir/slot.html Slot] entries
 +
* Example response in xml + json format:
 +
[[slot-xml]] [[slot-json]]
  
GET [base]/Appointment?status=pending&location.identifier=<siteid>
+
* Responses (Schedule, Slot + referred to Practitioner, Location) are combined into a FHIR Bundle and submitted to cloud endpoint
 +
* Example submission in xml + json format:
 +
[[submit-xml]] [[submit-json]]
  
e.g.
+
Cloud endpoint FHIR API transaction submission; body is FHIR Bundle assembled as above
  
http://fhir3.healthintersections.com.au/open/Appointment?status=pending&location.identifier=2E421477117F949B63F565953EE12E6E&_include=Appointment:actor&_format=json
+
POST [base]
  
 +
* Cloud system can update schedules, slots
  
Server provides a list of appointments that are requested
+
==Appointments Requiring Action==
 +
* Practice components search for requested/cancelled appointments from a cloud endpoint
 +
* Search by:
 +
** Appointment.status=pending - are requests that are not confirmed yet (indicates a request)
 +
** Appointement.location.identifier - identifies the practice associated with the appointment request
  
 +
Cloud endpoint FHIR API [http://hl7.org/fhir/http.html#search search] request:
 +
 +
GET [base]/Appointment?status=pending&location.identifier=<siteid>&_include=Appointment:actor
 +
 +
Cloud endpoint FHIR API search response:
 +
 +
* Return a FHIR [http://hl7.org/fhir/bundle.html Bundle]
 +
* Bundle.entry will contain [http://hl7.org/fhir/appointment.html Appointment] and included (actor) [http://hl7.org/fhir/appointment.html Practitioner],  [http://hl7.org/fhir/patient.html Patient] and  [http://hl7.org/fhir/location.html Location] resources
 +
* Example response in xml + json format:
 +
[[example-appointment-request-xml]] [[example-appointment-request-json]]
 +
 +
* Appointment indicating a request structured like:
 +
 
  Appointment
 
  Appointment
   status = pending
+
   status=pending - indicates appointment needs attention
   start
+
   description - optional comment text (will be shown in the PMS)
   end
+
  start - expected visit start date/time
   slot - optional reference  
+
   end - expected visit end date/time
   participant [0]
+
   slot - optional reference to a free/busy Slot resource
     type = PPRF  
+
  comment - optional comment text (will be shown in the PMS)
     actor is Practitioner  
+
   participant [0] - participant practitioner
     required = required
+
     type=PPRF|http://hl7.org/fhir/v3/ParticipationType - coded participation (primary performer is the attending clinician)
     status = needs-action
+
     actor is Practitioner - reference to Practitioner  (FHIR internal identifier)
 +
     required=required - coded indicates this participation in the appointment is needed
 +
     status=needs-action - coded indicates the participation is not confirmed
 
   participant [1]
 
   participant [1]
 
     type = null
 
     type = null
     actor is Patient
+
     actor is Patient - reference to Patient (FHIR internal identifier)
     required = required
+
     required=required - coded indicates this participation in the appointment is needed
     status = accepted
+
     status=accepted - coded indicates the patient intends to attend
 
   participant [2]  
 
   participant [2]  
 
     type = null
 
     type = null
     actor is HealthcareService
+
     actor is Location - reference to Location (FHIR internal identifier)  
      providedBy = (reference to organization)
+
    required=required- coded indicates this participation in the appointment is needed
      serviceCategory = (appointments calendar)
+
    status=needs-action - coded indicates the participation is not confirmed
      required = required
+
      status = needs-action
+
  
 
== Appointment Accept/Reject ==
 
== Appointment Accept/Reject ==
 +
* Appointment requests retrieved from the cloud are processed
 +
** Patient matching can occur based on Name, Date of Birth, Gender (or other identifying information)
 +
** Provider matching can occur based on Name, Provider Number (or other identifying information)
 +
* Submitted appointment will be as per appointment request obtained from cloud endpoint
  
 +
* Practice adapter will create/update appointments on matching
 +
** Appointments are attempted to be made in the PMS
 +
** Result will be accepted or declined appointment allocation
  
Clinic will update appointment to accept or reject it
+
FHIR add/update appointment using Oridashi-Hiasobi interface
  
 
  PUT [base]/Appointment/<id>
 
  PUT [base]/Appointment/<id>
  
 +
FHIR add/update response (accept)
  
Structure is like:
+
Appointment
 +
  status=booked - indicates appointment has been made in PMS
 +
  start - scheduled visit start date/time
 +
  end - scheduled visit end date/time
 +
  slot - optional reference to a free/busy Slot resource
 +
  comment - optional comment text (will be shown in the PMS)
 +
  participant [0] - participant practitioner
 +
    type=PPRF|http://hl7.org/fhir/v3/ParticipationType - coded participation (primary performer is the attending clinician)
 +
    actor is Practitioner - reference to Practitioner  (FHIR internal identifier)
 +
    required=required - coded indicates this participation in the appointment is needed
 +
    status=accepted - coded indicates the practitioner intends to attend
 +
  participant [1]
 +
    type = null
 +
    actor is Patient - reference to Patient (FHIR internal identifier)
 +
    required=required - coded indicates this participation in the appointment is needed
 +
    status=accepted - coded indicates the patient intends to attend
 +
  participant [2]
 +
    type = null
 +
    actor is Location - reference to Location (FHIR internal identifier)
 +
    required=required- coded indicates this participation in the appointment is needed
 +
    status=accepted - coded indicates the location is confirmed
 +
 
 +
FHIR add/update response (decline)
  
 
  Appointment
 
  Appointment
  participant[0]
+
  status=pending - indicates appointment is not confirmed
    status = accepted | declined
+
  start - scheduled visit start date/time
  participant[2]
+
  end - scheduled visit end date/time
    status = accepted | declined
+
  slot - optional reference to a free/busy Slot resource
 +
  comment - optional comment text (will be shown in the PMS)
 +
  participant [0] - participant practitioner
 +
    type=PPRF|http://hl7.org/fhir/v3/ParticipationType - coded participation (primary performer is the attending clinician)
 +
    actor is Practitioner - reference to Practitioner  (FHIR internal identifier)
 +
    required=required - coded indicates this participation in the appointment is needed
 +
    status=declined - coded indicates the practitioner system has declined to accept
 +
  participant [1]
 +
    type = null
 +
    actor is Patient - reference to Patient (FHIR internal identifier)
 +
    required=required - coded indicates this participation in the appointment is needed
 +
    status=needs-action - coded indicates the patient needs to handle this declined request
 +
  participant [2]  
 +
    type = null
 +
    actor is Location - reference to Location (FHIR internal identifier)
 +
    required=required- coded indicates this participation in the appointment is needed
 +
    status=declined - coded indicates the location system has declined to accept
 +
 
 +
* The practice adapter forwards to the cloud endpoint these responses from the Oridashi-Hiasobi interface

Latest revision as of 11:56, 18 October 2017

Information

See: Core FHIR Resources Appointment, Schedule, Slot

Todo: Oridashi Profiles for Appointment, Schedule and Slot

Available Slots

  • Schedules (Appointment Book) can be retrieved from FHIR interface (FHIR Schedule)
  • Each FHIR Schedule is for a provider (FHIR Practitioner); there may be multiple sessions per day
  • A FHIR extension defines the nominal slot period length for each Schedule
  • Free/Busy slots are available (FHIR Slot)
  • Configurable look ahead period (default 6 weeks)
  • Polling to detect schedule changes

For appointment book practice adapter calls Oridashi-Hiasobi FHIR API search request:

GET [base]/Schedule?date=<date>&actor=<practitioner id>&_include=Schedule:actor

Oridashi-Hiasobi FHIR API search response:

schedule-xml schedule-json

For free/busy slots practice adapter calls Oridashi-Hiasobi FHIR API search request:

GET [base]/Slot?schedule=<schedule.id>

Oridashi-Hiasobi FHIR API search response:

  • Return a FHIR Bundle
  • Bundle.entry will contain Slot entries
  • Example response in xml + json format:

slot-xml slot-json

  • Responses (Schedule, Slot + referred to Practitioner, Location) are combined into a FHIR Bundle and submitted to cloud endpoint
  • Example submission in xml + json format:

submit-xml submit-json

Cloud endpoint FHIR API transaction submission; body is FHIR Bundle assembled as above

POST [base]
  • Cloud system can update schedules, slots

Appointments Requiring Action

  • Practice components search for requested/cancelled appointments from a cloud endpoint
  • Search by:
    • Appointment.status=pending - are requests that are not confirmed yet (indicates a request)
    • Appointement.location.identifier - identifies the practice associated with the appointment request

Cloud endpoint FHIR API search request:

GET [base]/Appointment?status=pending&location.identifier=<siteid>&_include=Appointment:actor

Cloud endpoint FHIR API search response:

example-appointment-request-xml example-appointment-request-json

  • Appointment indicating a request structured like:
Appointment
 status=pending - indicates appointment needs attention
 description - optional comment text (will be shown in the PMS)
 start - expected visit start date/time
 end - expected visit end date/time
 slot - optional reference to a free/busy Slot resource
 comment - optional comment text (will be shown in the PMS)
 participant [0] - participant practitioner
   type=PPRF|http://hl7.org/fhir/v3/ParticipationType - coded participation (primary performer is the attending clinician) 
   actor is Practitioner - reference to Practitioner  (FHIR internal identifier) 
   required=required - coded indicates this participation in the appointment is needed
   status=needs-action - coded indicates the participation is not confirmed
 participant [1]
   type = null
   actor is Patient - reference to Patient (FHIR internal identifier) 
   required=required - coded indicates this participation in the appointment is needed
   status=accepted - coded indicates the patient intends to attend
 participant [2] 
   type = null
   actor is Location - reference to Location (FHIR internal identifier) 
   required=required- coded indicates this participation in the appointment is needed
   status=needs-action - coded indicates the participation is not confirmed

Appointment Accept/Reject

  • Appointment requests retrieved from the cloud are processed
    • Patient matching can occur based on Name, Date of Birth, Gender (or other identifying information)
    • Provider matching can occur based on Name, Provider Number (or other identifying information)
  • Submitted appointment will be as per appointment request obtained from cloud endpoint
  • Practice adapter will create/update appointments on matching
    • Appointments are attempted to be made in the PMS
    • Result will be accepted or declined appointment allocation

FHIR add/update appointment using Oridashi-Hiasobi interface

PUT [base]/Appointment/<id>

FHIR add/update response (accept)

Appointment
 status=booked - indicates appointment has been made in PMS
 start - scheduled visit start date/time
 end - scheduled visit end date/time
 slot - optional reference to a free/busy Slot resource
 comment - optional comment text (will be shown in the PMS)
 participant [0] - participant practitioner
   type=PPRF|http://hl7.org/fhir/v3/ParticipationType - coded participation (primary performer is the attending clinician) 
   actor is Practitioner - reference to Practitioner  (FHIR internal identifier) 
   required=required - coded indicates this participation in the appointment is needed
   status=accepted - coded indicates the practitioner intends to attend
 participant [1]
   type = null
   actor is Patient - reference to Patient (FHIR internal identifier) 
   required=required - coded indicates this participation in the appointment is needed
   status=accepted - coded indicates the patient intends to attend
 participant [2] 
   type = null
   actor is Location - reference to Location (FHIR internal identifier) 
   required=required- coded indicates this participation in the appointment is needed
   status=accepted - coded indicates the location is confirmed

FHIR add/update response (decline)

Appointment
 status=pending - indicates appointment is not confirmed
 start - scheduled visit start date/time
 end - scheduled visit end date/time
 slot - optional reference to a free/busy Slot resource
 comment - optional comment text (will be shown in the PMS)
 participant [0] - participant practitioner
   type=PPRF|http://hl7.org/fhir/v3/ParticipationType - coded participation (primary performer is the attending clinician) 
   actor is Practitioner - reference to Practitioner  (FHIR internal identifier) 
   required=required - coded indicates this participation in the appointment is needed
   status=declined - coded indicates the practitioner system has declined to accept
 participant [1]
   type = null
   actor is Patient - reference to Patient (FHIR internal identifier) 
   required=required - coded indicates this participation in the appointment is needed
   status=needs-action - coded indicates the patient needs to handle this declined request
 participant [2] 
   type = null
   actor is Location - reference to Location (FHIR internal identifier) 
   required=required- coded indicates this participation in the appointment is needed
   status=declined - coded indicates the location system has declined to accept
  • The practice adapter forwards to the cloud endpoint these responses from the Oridashi-Hiasobi interface