Appointment Service
The AppointmentService provides the ability to retrieve upcoming scheduled appointments, as well as cancel them.
Currently, only Retail visits are able to be scheduled, whereas Virtual visits are on-demand. AppointmentService is only capable of fetching and cancelling Retail visits for this reason. Virtual visits are cancellable through a separate method in VirtualService.
Fetching the user’s scheduled visits
The AppointmentService.getRetailVisits()
method returns a list of ScheduledVisit
objects, each representing
an upcoming appointment scheduled by the user.
The ScheduledVisit
object contains various information about the upcoming visit:
appointmentDetails
- An object containing additional details about the appointment, such as start/end times, timezone, and appointmentId.retailDepartment
- An object containing information about the department (clinic) where the visit was scheduled. Present only for Retail visit type, null otherwise.type
- An enum representing the type of visit: Retail, Virtual (not applicable at this time) or At Home (not applicable at this time).status
- An enum representing the current status of a ScheduledVisit, e.g. Requested, InVisit, Done, Cancelled, etc.
Full object documentation can be found in the Android and iOS SDK documentation.
-
let dexcareSDK = DexcareSDK(configuration: ...) dexcareSDK.appointmentService.getRetailVisits( success: { retailVisits in // display the upcoming visits to the user. // you can also give the option to cancel a visit, which will be explained below. }, failure: { error in // handle the error, show an error dialog, log the error, etc. } ) // Swift Concurrency do { let retailVisits = dexcareSDK.appointmentService.getRetailVisits() // display the upcoming visits to the user. // you can also give the option to cancel a visit, which will be explained below. } catch { // handle the error, show an error dialog, log the error, etc. }
-
DexCareSDK.appointmentService.getRetailVisits() .subscribe({ scheduledVisitsList -> // display the upcoming visits to the user. // you can also give the option to cancel a visit, which will be explained below. }, { error -> // handle the error, show an error dialog, log the error, etc. })
Cancelling a visit
AppointmentService also provides the ability to cancel a scheduled visit.
Two SDK calls are necessary to cancel a scheduled visit, as detailed below.
Getting the list of cancel reasons
The first step to cancelling a Scheduled Visit is to retrieve the list of accepted cancellation reasons. These cancellation reasons can be customized for your health system by the DexCare team.
The AppointmentService.getCancelReasons
method returns a list of CancelReason
objects.
The list should be displayed to the user, allowing them to select one.
The selected CancelReason
should then be passed back in to the SDK during the final cancellation call.
-
let dexcareSDK = DexcareSDK(configuration: ...) // get cancel reasons. brandName will be given to you by your Dexcare Contact dexcareSDK.appointmentService.getCancelReasons( brandName: brandName, success: { cancelReasons in // save cancelReasons array locally so user can pick which reason when cancelling a scheduledVisit }, failure: { error in // Should never happen. If continues contact your Dexcare Contact } ) // Swift Concurrency do { let cancelReasons = try dexcareSDK.appointmentService.getCancelReasons(brandName: brandName) } catch { // Should never happen. If continues contact your Dexcare Contact }
-
DexCareSDK.appointmentService.getCancelReasons() .subscribe({ cancellationReasons -> // display the cancellation reasons to the user and allow them to select one }, { error -> // handle the error, show an error dialog, log the error, etc. })
Cancelling the visit
After obtaining the user’s CancelReason
, the scheduled visit is able to be cancelled using the
AppointmentService.cancelRetailVisit()
method.
-
dexcareSDK.appointmentService.cancelRetailAppointment( appointmentId: scheduledVisit.appointmentDetails.appointmentId, cancelReason: cancelReason, success: { // the visit was successfully cancelled }, failure: { error in // handle the error, show an error dialog, log the error, etc. } ) // Swift Concurrency do { try dexcareSDK.appointmentService.cancelRetailAppointment(appointmentId: scheduledVisit.appointmentDetails.appointmentId, cancelReason: cancelReason) } catch { // handle the error, show an error dialog, log the error, etc. }
-
DexCareSDK.appointmentService.cancelRetailVisit( scheduledVisit.appointmentDetails.appointmentId, cancelReason ).subscribe({ // the visit was successfully cancelled }, { error -> // handle the error, show an error dialog, log the error, etc. })