- This version introduces the ability to convert a virtual visit to a phone visit. This functionality can be triggered by the care giver when the virtual visit is experiencing any technical issues.
- When the patient closes the "Convert to Phone" CTA, the start or resume methods will return a
.phoneVisit
completion reason. - The
onVirtualVisitModalityChanged
method was added to theVirtualEventDelegate
. This method is called when a virtual visit is converted to a phone visit. - New localizable strings:
localizable.strings key | Usage |
---|---|
dialog_convertToPhone_success_title | CTA Title when the virtual visit was successfully converted to a phone visit. |
dialog_convertToPhone_success_message | CTA Message when the virtual visit was successfully converted to a phone visit. |
- Cancelling a virtual visit will now require a reason to cancel the visit. Please work with your DexCare implementation team to learn how you can enable this feature for your organization.
- VirtualService has a new function
cancelVideoVisit(visitId: String, reasonCode: String)
to cancel the video visit. The SDK will also use this function internally if patients decide the cancel the visit from the waiting room. ThereasonCode
should come from the list ofCancelReason
returned in thegetVisitCancellationReasons()
function. Similarly, usecancelPhoneVisit(visitId: String, reasonCode: String, patientEmail: String)
to cancel phone visit. - A new function
getVisitCancellationReasons()
is available in VirtualService. This function will return a list ofCancelReason
that can be presented to users to make a selection. ACancelReason
will have a display text that's user friendly and a code that needs to be sent back to the VirtualService to cancel the visit.CancelReason
is localized as per device locale. Currently supported languages are English and Spanish.
- This version introduces a post visit survey that is seamlessly configurable. The SDK itself will present the UI to the patient once the visit is completed. The UI for the survey is configurable from the backend. The survey is not enabled by default when you update to this version. So please reach out to your DexCare implementation contact person for more details. However, please be aware of the breaking changes mentioned below for this version.
-
getVirtualVisitStatus
in VirtualService is now deprecated in favor of new functiongetVirtualVisit
. They both share the same implementation but the new function provides more detail about the visit. -
cancelVirtualVisit
function in VirtualService has been deprecated in favor of the newcancelVideoVisit
andcancelPhoneVisit
functions.
- With the introduction of new web based post visit survey, this version removes the support for
postFeedback
fromVirtualService
. This function is no longer needed and your app doesn't have to implement the UI for survey. DexCare SDK will display the survey after the visit is concluded. Please reach out to your DexCare contact to understand more on configuring the web based survey.
- Fixes issue where sdkVersion was returning nil when integrated via SPM
- Fixes issue where chat message
creationDate
epoch timestamp contained decimal places - Display number instead of words for wait time period in virtual visit waiting room
- Fixed issue where app would crash when receiving chat messages while backgrounded
- This version of the SDK adds support for wait offline. This gives the patient the option to close the app, remain in the wait queue, and be notified when their provider is ready for them. To accomplish this, we've added a number of things:
- New localizable strings:
localizable.strings key Usage waitingRoom_link_waitOffline CTA to enter the wait offline state waitingRoom_message_waitOfflinePrompt Prompt to explain the wait offline CTA waitingRoom_waitOffline_title Title shown when the patient successfully enters the wait offline state waitingRoom_waitOffline_message Message shown when the patient successfully enters the wait offline state dialog_waitOffline_title Title for the wait offline confirmation dialog dialog_waitOffline_message Message for the wait offline confirmation dialog dialog_waitOffline_stay Dialog action to not enter wait offline and remain in the waiting room dialog_waitOffline_stay Dialog action to enter the wait offline state and come back later dialog_waitingRoom_button_confirm Replaces dialog_waitingRoomCancelConfirm_button_confirm
as the generic confirm action in dialogs - New
VisitStatus.waitOffline
case: Indicates that the patient is waiting offline and waiting for a notification to rejoin the visit. - New
VisitCompletionReason.waitOffline
case: Used in the visit completion block to indicate the user chose to wait offline and close the visit for now.
- New
VisitStatus.caregiverAssigned
case: Indicates that a caregiver was assigned to the visit and that the visit is ready to start. - Gave the alerts shown by the SDK a facelift to provide better extensibility options in the future.
- Updated the
dialog_waitingRoomCancelConfirm_button_confirm
localizable strings key toCancel visit and leave
- Added a Privacy manifest file
PrivacyInfo.xcprivacy
to the SDK. The SDK privacy manifest file does not include Nutrition Labels as these entries will depend on which API you are using. Refer to the README.md file for more information.
- Fixed issue where the Chat View back button was not visible when the Navigation Bar global tint color was white.
WaitTimeFailedReason.regionUnavailable
enum case was replaced by:WaitTimeFailedReason.regionBusy
: Returned when region is experiencing high demand.WaitTimeFailedReason.offHours
: Returned when the region is off hours / closed.
- New
WaitTimeFailedReason.visitNotFound
case: Returned when the givenvisitId
is not found.
- Fixed virtual visit crash when integrating the SDK using Service Package Manager (SPM).
- Fixed issue where canceling a virtual visit was taking multiple seconds before dismissing the waiting room screen.
- Fixed issue where localization strings were not available when integrating the SDK using CocoaPods.
- Added server logs to track the "Index out of range" error in ChatViewController.messageForItem(IndexPath, MessagesCollectionView).
This version of the SDK adds support for virtual visit transfers between providers. To accomplish this we've added a number of things:
-
New Localizable strings:
localizable.strings key Usage waitingRoom_link_leaveVisit. CTA to leave a visit after being transferred back to the waiting room waitingRoom_message_patientTransfer Message shown only after being transferred back to the waiting room waitingRoom_message_dismiss CTA to dismiss the above message dialog_waitingRoomCancelConfirm_title_leaveCall Dialog title to confirm the user wants to leave the call dialog_waitingRoomCancelConfirm_message_leaveCallConfirmation Dialog message to confirm the user wants to leave the call -
VirtualEventDelegate.onWaitingRoomTransferred
Called when the user is transferred back to the waiting room after already being in a call -
VisitCompletionReason.left
Used in the visit completion block to indicate the user chose to leave the visit
- Support for Swift Package Manager
- Library is now released as source code instead of a binary package
- Added
PracticeRegionDepartment
which is now returned as part ofgetVirtualPractice(practiceId:)
getCatchmentArea(visitState:, residenceState:, residenceZipCode:, brand:)
andCatchmentArea
have been removed, see v9 migration guide for more informationPaymentMethod
enum cases have been simplified, see v9 migration guide for more information.- Creating a
PaymentMethod
via insurance card has been removed along sideInsuranceCardFailedReason
- Virtual visit customization via
CustomStrings
has been removed, see v9 migration guide for more information - All other previously deprecated symbols have been removed. They are:
AllowedVisitType.init
EmailValidator.EMAIL_REGEX_FROM_CONFIG
EmailValidator.EMAIL_VALIDATION_REGEX
OpenDay.init
OpenHours.init
PatientDemographics.init
PhoneValidator.PHONE_VALIDATION_REGEX
PracticeRegionAvailability.init
Provider.init
ProviderDepartment.init
ProviderService.getProviderTimeslots
ProviderTimeSlot.init
ProviderVisitType.init
RetailDepartment.init
RetailService.scheduleRetailAppointment
ScheduleDay.init
ScheduledProviderVisit.init
ScheduledProviderVisit.VirtualMeetingInfo.init
ScheduledVisit.init
ScheduledVisit.AppointmentDetails.init
ScheduledVisit.Timestamps.init
VirtualPractice.init
VirtualPractice.PracticePaymentAvailability.init
VirtualPracticeRegion.init
VirtualPracticeRegion.pedatricsAgeRange
WaitTime.init
WaitTimeLocalizationInfo.init
ZipCodeValidator.ZIP_CODE_VALIDATION_REGEX
- Fixed
VirtualPracticeRegion.pedatricsAgeRange
not being decoded from the network response ScheduleRetailAppointmentRequest.init
is no longer optional. All errors are now thrown
- Update TokBox to
OTXCFramework
version 2.25.1
We've fixed a number of misspelled symbols in this release and marked many the incorrectly spelled symbols as deprecated. We've also renamed a few symbols to better align with standard Swift naming conventions. All these symbols provide 1 click fixes via Xcode and will be removed completely in the next release. There are also a few cases of misspellings that are impossible to deprecate while leaving the original intact, these will be removed with fixit's available in the next release as well. Further, we've deprecated a number of initializers for objects that should only be constructed via Codable
. If you feel any of these should remain, please reach out to us.
For reference the deprecated symbols are:
AllowedVisitType.init
EmailValidator.EMAIL_REGEX_FROM_CONFIG
EmailValidator.EMAIL_VALIDATION_REGEX
OpenDay.init
OpenHours.init
PatientDemographics.init
PhoneValidator.PHONE_VALIDATION_REGEX
PracticeRegionAvailability.init
Provider.init
ProviderDepartment.init
ProviderService.getProviderTimeslots
ProviderTimeSlot.init
ProviderVisitType.init
RetailDepartment.init
RetailService.scheduleRetailAppointment
ScheduleDay.init
ScheduledProviderVisit.init
ScheduledProviderVisit.VirtualMeetingInfo.init
ScheduledVisit.init
ScheduledVisit.AppointmentDetails.init
ScheduledVisit.Timestamps.init
VirtualPractice.init
VirtualPractice.PracticePaymentAvailability.init
VirtualPracticeRegion.init
VirtualPracticeRegion.pedatricsAgeRange
WaitTime.init
WaitTimeLocalizationInfo.init
ZipCodeValidator.ZIP_CODE_VALIDATION_REGEX
PaymentMethod.insuranceManualSelfWithPayor
now takes in more insurance information.payorId
(replacesproviderId
), andpayorName
PaymentMethod.insuranceManualOtherWithPayor
now takes in more insurance information.payorId
(replacesproviderId
),payorName
andsubscriberId
- Added
getEMRPatient
toPatientService
to allow loading a patient information using a MyChartSSO authentication token
PaymentMethod.insuranceManualSelf
has been deprecated in favor of usingPaymentMethod.insuranceManualSelfWithPayor
.payorId
is the new property to to pass in the insurance payor id.PaymentMethod.insuranceManualOther
has been deprecated in favor of usingPaymentMethod.insuranceManualOtherWithPayor
.payorId
is the new property to to pass in the insurance payor id.
- Added
RetailService.getRetailDepartment
to load information on a single retail department. - Default Waiting Room video has been updated to load from Vimeo, supporting Spanish localization. Waiting Room video can still be overridden through the
VirtualConfig
property on initialization.
- Fixed a scenario where the SDK version posted inside the userAgent header on api calls was incorrect
- Updated OpenTok to 2.24.0
- SDK is built with Xcode 14.1, supporting iOS 13+
PaymentMethod.insuranceManualSelf
andPaymentMethod.insuranceManualOther
now take in an optionalinsuranceGroupNumber
property.- Added new
ScheduleProviderAppointmentFailedReason.patientNotOnPhysicalPanel
. Will return if onProviderService.scheduleProviderVisit
provider requires that the patient be on their panel. - Added
VirtualVisitDetails.additionalDetails
property to allow saving of meta/extra information on a visit.
- Included is a new
AvailabilityService
which allows you to search for an available provider, by location, or department. Options include sorting by most available, giving the ability to give time slots to lesser booked providers - Time slots can also be searched with similar functionality.
- Update internal endpoint for provider bookings with insurance to save the appointment notes properly (ENG-1040)
- Updated OpenTok to 2.23.1
PaymentService.uploadInsuranceCard
has been deprecated as it's no longer supportedPaymentMethod.insuranceImageSelf
andPaymentMethod.insuranceImageOther
has been deprecrated as it's no longer supported.
- Support for localization. To override the SDK keys, simply create a
Localizable.strings
file, match the keys used by the SDK, and the SDK will look there first for any overrides. - Added
VirtualVisitDetails.traveling
boolean property.
- On Visit creation, when using DexCarePatient, check mobile and work phone, not just homePhone (DC-9929)
- On a reconnection scenario, the SDK may crash when the provider leaves and returns. (DC-10218)
CustomStrings
has been deprecated. Any previous use of customStrings will be used first overLocalizable.strings
file, but will be removed in a future version.
- Updated OpenTok to 2.23.0.
- New
VirtualVisitFailedReason.invalidRequest(message:)
added to better show the error returned by the server if 400 returned. See message returned for specific error.
- Fixes MessageKit dependency version misalignment
- Removes hardcoded
VirtualVisitAssignmentQualifier.adult
andVirtualVisitAssignmentQualifier.pediatric
options. Regular virtual visits without special qualifications, should set theVirtualVisitDetails.assignmentQualifiers
tonil
- Removes missed async version of
RetailService.getClinics
this was renamed toRetailService.getRetailDepartments
-
2 new
VirtualService.createVirtualVisit
methods have been added.- Both take in the new
VirtualVisitDetails
- One will use the existing
DexcarePatient
- One will use the new
EhrPatient
- Both take in the new
-
VirtualVisitDetails
replaces the deprecatedVirtualVisitInformation
. Please see documentation for more information on the properties. -
Added
VirtualService.getWaitTimeAvailability
to fetch the newWaitTimeAvailability
array. See documentation for more ways to filter the results. -
Added
VirtualService.getAssignmentQualifiers
to fetch the array ofVirtualVisitAssignmentQualifier
to use ingetWaitTimeAvailability
or create Visit -
Added
VirtualService.getModalities
to fetch the array ofVirtualVisitModality
to use ingetWaitTimeAvailability
or create Visit -
Added
VirtualVisitFailedReason.visitTypeNotSupported
- returned when you try and callVirtualService.resumeVirtualVisit
with a non-virtual visit type. -
Added
VirtualPracticeRegion.pedatricsAgeRange
to indicate the age of patients that pediatric providers can see. -
Upon signing in to the SDK, some validation configs are pulled down from the server. This allows for the validation to be consistent across DexCare platforms, and also allows for the validation requirements to be configurable per-environment. This currently only affects the EmailValidator, but may be expanded to other areas in a future SDK version.
-
A new
EmailValidator.EMAIL_REGEX_FROM_CONFIG
is available to get the latest email regex the SDK will use. This will default toEmailValidator.EMAIL_VALIDATION_REGEX
. -
A new
DexcareSDK.getStatusPage
is available to asynchronously grab the current status of the DexCare Platform. You can use this method to check for any incidents or scheduled maintenances on our infrastructure. -
VisitStatus
has been switched from an enum to a struct that inherits fromRawRepresentable
. -
An optional
VirtualVisitDetails.initialStatus
property has been added to support setting an initial Visit Status on a virtual visit.
- 8.0 supports the ability to schedule a phone visit. Similar to virtual visits, except the provider will end up phoning instead of using the virtual video platform
- On
VirtualService.createVirtualVisit
simply set theVirtualVisitDetails.visitTypeName = "phone"
- IMPORTANT The SDK will return in the completion event with
VisitCompletionReason.phoneVisit
after a successful creation or a resume It is up to you to check for that result and handle appropriately.
Included in 8.0 is support for Swift Concurrency on all public functions. Both concurrency and closure-based functions will be supported. Internally, the SDK has moved to Concurrency for all internal calls and therefore we have removed PromiseKit as a required Dependency.
For more examples of how you can call the new functions, please look at the v8 migration guide.
VisitStatus.isActive
function is now a proper public function (DC-6006)PatientDemographics.birthDate
is now validated for future dates (DC-5904)- NavigationBar on Waiting Room sometimes would not show and be transparent on iOS15 (DC-8901)
ProviderService.getProviderTimeslots
passing invisitTypeId
is deprecated in favour ofProviderService.getProviderTimeslots
and passing in aVisitTypeShortName
instead
VirtualService.startVirtualVisit
- use the newVirtualService.createVirtualVisit
passing in the newVirtualVisitDetails
VirtualVisitInformation
- useVirtualVisitDetails
with the newVirtualService.createVirtualVisit
PracticeService.getVirtualPracticeRegionAvailability
- use the newVirtualService.getWaitTimeAvailability
PracticeService.getEstimatedWaitTime
- use the newVirtualService.getWaitTimeAvailability
RegionAvailability
- use the newWaitTimeAvailability
returning fromVirtualService.getWaitTimeAvailability
PatientService.createPatientWithMyChart
has been removed and can no longer be called.- Removed
VirtualVisitFailedReason.deprecated
RetailService.getClinics
has been renamed toRetailService.getRetailDepartments
which in turn returnRetailDepartments
from the previousClinics
ClinicTimeslots
have been renamed toRetailAppointmentTimeSlots
ScheduleVisit.clinic
has been renamed toScheduleVisit.retailDepartment
- Updated internal endpoint for
VirtualService.getEstimatedWaitTime
- Updated internal endpoint for
VirtualService.getVirtualVisitStatus
- Updated internal endpoint for
VirtualService.cancelVirtualVisit
- Updated internal endpoint for
PracticeService.getVirtualPractice
- Updated OpenTok dependency to 2.22.3
- Updated MessageKit dependency to 3.8.0
- Adds a
PatientService.deletePatientAccount
to start the process of deleting a DexCare Patient Account. - Upon signing in to the SDK, some validation configs are pulled down from the server. This allows for the validation to be consistent across DexCare platforms, and also allows for the validation requirements to be configurable per-environment. This currently only affects the EmailValidator, but may be expanded to other areas in a future SDK version.
- A new
EmailValidator.EMAIL_REGEX_FROM_CONFIG
is available to get the latest email regex the SDK will use. This will default toEmailValidator.EMAIL_VALIDATION_REGEX
.
- Adjusts the QR Code that is displayed for TytoCare setup when it sometimes gets cut off - DC-6766
- Updated OpenTok dependency to 2.21.2
- Fixes a crash that happens on iOS version < 14.0. Minimum iOS version is now iOS 13+
- Introduced a new
VideoCallStatistics
structure that can return network statistics about a video visit. Statistics are automatically gathered during a visit by the SDK, and can be queried by you after a visit is complete. VideoCallStatistics
includes information about packet loss, bandwidth speeds, and bytes send/received. This should be used for your debugging or logging purposes.- These statistics can be retrieve by calling
VirtualService.getVideoCallStatistics()
after a video visit has started. - Added a new
VirtualService.getVirtualVisitStatus(visitId:)
that will return aVisitStatus
enum. A helper functionisActive
is also added toVisitStatus
to indicate whether or not you can resume with that visitId or not. - Added a
[PatientQuestion]
array to theRetailVisitInformation
andProviderVisitInformation
object. This can be used during retail and provider visits to pass up information to be saved.
Important
- When booking for retail, virtual, or provider, the visitDetails.
contactPhoneNumber
will be the only valid phone number needed. In previous versions, on someone else visits, the demographic.homePhone was required to be valid. Going forward, the SDK will only usecontactPhoneNumber
. If the phone number is different between the demographic.homePhone and the contactPhoneNumber then in Virtual Visits, the PRR will see the difference and can adjust the EPIC record if needed.
It is recommended that on intake, you provide a Phone Number field that can be prepopulated with whichever phone you wish. That phone number should be saved to the visitDetails.contactPhoneNumber on booking.
- When a network issue occurs during a video visit or in the waiting room, the SDK now extends it's retry time to 2 minutes. During this time a reconnecting spinner is shown to the user, which includes a cancel option. Tapping cancel can allow the user to leave the video visit, but does not mark the visit as cancelled and is still active. Users can rejoin the video visit.
- Updated internal endpoint for
ProviderService.getProviderTimeslots
- When starting a virtual visit, internally the SDK will send a notification to the server to indicate that the device has enabled their video and microphone.
- Fixes a crash that happens on iOS version < 14.0. Minimum iOS version is now iOS 13+
- Introduced a new
VirtualEventDelegate
protocol that can optionally be set onVirtualService.setVirtualEventDelegate(delegate?)
to listen for various events while the patient is inside the waiting room/video conference. Note that the delegate should primarily be used for logging purposes. - Added
PracticeService.getEstimatedWaitTime(practiceRegionId)
function to retrieve the estimated wait time of a practice region. - Added
VirtualService.getEstimatedWaitTime
function to retrieve the estimated wait time when you're in a visit waiting room. This was previously internal and was called and displayed on the waiting room view - Added
CustomizationOptions.validateEmails
that if set to false will skip any email validation the SDK uses. You can set the customization through theDexcareSDK.customizationOption
property after initialization. Defaults to TRUE for backwards compatibility. Epic is still the final validation for emails and you should use this property in sync in how your Epic server validates email. This will skip ALL email validation (not including empty fields) - so it is up to you to validate any emails if this property is set to false. The email validation SDK uses can be found atEmailValidator.EMAIL_VALIDATION_REGEX
. ZipCodeValidator
(and the SDK as a result) now accepts 9-digit zip codes in addition to 5-digit zip codes. A hyphen is required for 9-digit zips.ZipCodeValidator.ZIP_CODE_VALIDATION_REGEX
has been added. This is the Regex string used in theZipCodeValidator.isValid
class function.- When booking for retail, virtual, or provider, the SDK now checks for valid zip codes and returns error if it does not pass validation
-
VisitType
VisitType
has been renamed toVisitTypeShortName
and switched from an enum to a struct that inherits fromRawRepresentable
.- This is to allow future
VisitType
s to be created, without the need of new SDK's. - Old enum values have been switched to static variables: ex:
public static let illness = VisitTypeShortName(rawValue: "Illness")
ProviderService.getMaxLookaheadDays
now accepts aVisitTypeShortName
instead of anAllowedVisitType
, (no functional change)RetailService.getTimeSlots
method'sallowedVisitType
parameter changed tovisitTypeShortName: VisitTypeShortName
. This means that you can retrieve time slots for any visit type you want to support, and the SDK no longer restricts to the few that were defined in the oldVisitType
enum.ProviderVisitType.shortName
type changed toVisitTypeShortName
from String (no functional change).
-
Removed the following deprecated models/methods/properties:
- Region
- Region.Prices
- Region.Availability
- VirtualService.getRegions
- RetailService.getRetailClinics
- RetailService.uploadInsurance
- VirtualService.getRegionAvailability
- VirtualService.getInsurancePayers
- VirtualService.verifyCouponCode
- VirtualService.startVirtualVisit methods without practiceId argument
- VirtualVisitInformation.currentState
- DexcareConfiguration.customStrings
- ScheduledVisitFailedReason
- When posting feedback, VirtualFeedback.rating case now validates the rating option to be between 0-10.
- Updated internal endpoint for wait time.
- Updated OpenTok dependency to 2.20.0 - this update should clean up the hundreds of project warnings
- All non-network-related errors returned by the SDK are now logged for debugging purposes.
- Adjusts TytoCare setup views for smaller devices
- When opening Chat, the keyboard no longer automatically opens.
- New functionality was not available publicly.
- Fixed a crash on launch
- Added a new optional parameter to the
CustomizationOptions
model,VirtualConfig
. This new model contains various customization options related the the virtual visit experience.VirtualConfig
currently has two optional parameters:showWaitingRoomVideo
- Whether or not to display the video on the waiting room. Defaults totrue
.waitingRoomVideoURL
- A bundle url that can be optionally specified to change the video that displays inside the virtual waiting room. When not specified, the default video is used (the same video that has always played in the waiting room, no changes). See documentation for more detail and example. When these properties orVirtualConfig
are not explicitly overridden, the default values are used.
- Deprecated
DexcareConfiguration.init
where you pass in the deprecatedCustomStrings
. A new init is available to use withoutCustomStrings
. Any custom strings should now be passed throughDexcareSDK.customizationOption
- Removed some public classes and functions that should be internal only
- Updated MessageKit to 3.6.0
- Fixes crash when going into waiting room
- Added support for TytoCare devices in the Virtual Visit experience. When enabled on the server, a new button will appear in the waiting room and conference screens. Clicking the button will open a new that instructs the user on how to pair/connect their TytoCare device. For more information about TytoCare, visit https://www.tytocare.com/.
- New permissions are also required in order for the TytoCare integration to work:
- The Wifi entitlement will need to be enabled on your build.
- Location with precise accuracy.
- If any of the new permissions are not available, the integration will still work, but the SDK will not be able to get the current Wifi network information
DexCareSDK.customizationOptions
now has atytoCareConfig
option for any TytoCare configuration that is allowed in the SDK. Please update these before starting a virtual visit.- More information and details are available on https://developers.dexcarehealth.com/virtualvisit/tytocare
- Deprecated
DexcareConfiguration.customStrings
in favour ofDexcareSDK.customizationOptions
, which can be set after initialization of the SDK and anytime before a start of a Virtual Visit.
- When starting a virtual visit, the
VirtualVisitInformation.userEmail
will ALWAYS be used in the request irregardless of what is in the DexcarePatient object. This now matches retail appointments is doing. DC-4213
- Dropped support for iOS 11. Minimum iOS version is now iOS 12
- Update MessageKit to 3.5.1. InputBarAccessoryView to 5.3.0
- Updated OpenTok to 2.19.1
- Updated an internal endpoint for cancelling a virtual visit.
- Updated some public enums with the
@frozen
attribute.DexcareSDKLogLevel
Gender
PatientDeclaration
VirtualFeedback
PaymentHolderDeclaration
- iOS SDK is now using an
.xcframework
to distribute the SDK. Xcode 11 is no longer supported. You must upgrade to Xcode 12.0+ in order to use v6.0
- The framework has been renamed to
DexcareiOSSDK
fromDexcareSDK
. Anywhere in your app where youimport DexcareSDK
will need be changed toimport DexcareiOSSDK
VirtualService.getInsurancePayers
has been deprecated and moved toPaymentService.getInsurancePayers
VirtualService.verifyCouponCode
has been deprecated and moved toPaymentService.verifyCouponCode
,RetailService.uploadInsuranceCard
has been deprecated and moved toPaymentService.uploadInsuranceCard
- Added a property on
DexcareSDK
instance calledpaymentService
- Dependency OpenTok updated to v2.19
- Note: You may get a LOT of warnings with v2.19. They are aware of the issue, but the warnings does not stop Virtual Visits from working.
- Added a new
PracticeService
to the SDK to loadVirtualPractice
Information PracticeService.getVirtualPractice(practiceId)
to load information about a practicePracticeService.getVirtualPracticeRegionAvailability(practiceRegionId)
to load- Added a new
VirtualService.startVirtualVisit
which takes in thepracticeId
from the above call. VirtualVisitInformation.practiceRegionId
is now required when calling the above function- New models
VirtualPractice
,PracticeCareMode
,PracticePaymentAvailability
,VirtualPracticeRegion
have been made public
- Added a new
ProviderService
to the SDK to loadProvider
Information. - Added
ProviderService.getProvider(providerNationalId)
to retrieve information about a provider. - Added
ProviderService.getProviderTimeslots(providerNationalId, visitTypeId, startDate, endDate)
to load time slots for a given provider - Added
ProviderService.getMaxLookaheadDays(visitTypeShortName, ehrSystemName)
to get the max days the server will look ahead for time slots - Added
ProviderService.scheduleProviderVisit(paymentMethod, providerVisitInformation, timeSlot, ehrSystemName, patientDexcarePatient, actorDexcarePatient?)
to book through a provider. - New models
Provider
,ProviderDepartment
,ProviderVisitType
,ScheduledProviderVisit
- New
PatientService.getSuffixes
has been added to load the list of approved suffixes that can be optional used to fill in the suffix field of aPatientDemographic.HumanName
property ScheduleDay.date
is now formatted in the timezone of the Clinic/Provider. You can effectively ignore the timezone, as the property should be used for grouping of time slots.- Changed internally the endpoint for
RetailService.getTimeSlots
- A Virtual Visit must succeed in order to submit any feedback through
VirtualService.postFeedback
VirtualService.getRegions
has been deprecated in favour of the newerPracticeService.getPractice
VirtualService.getRegionAvailability
has been deprecated in favour of the newerPracticeService.getPracticeRegionAvailability
VirtualService.startVirtualVisit(with catchmentArea)
has been deprecated. Going forward use thestartVirtualVisit
method that has the practiceId.VirtualVisitInformation.currentState
has been marked as deprecated and now optional. This can be set to nil when booking through Practices.
-
Removed
PatientDemographics.actorRelationshipToPatient
property. Going forward, this property should be set fromRetailVisitInformation
orVirtualVisitInformation
instead -
Removed deprecated
VirtualService.updatePushNotificationDeviceToken(String)
- switch toupdatePushNotificationDeviceToken(Data)
instead -
Removed deprecated
VirtualService.startVirtualVisit
that does not use catchmentArea or practiceId -
Removed deprecated
VirtualService.resumeVirtualVisit
that does not use a dexcarePatient -
Removed deprecated
PatientService.createPatient(usingVisitState)
- switch tofindOrCreatePatient(inEhrSystem)
method instead -
Removed deprecated
PatientService.createDependentPatient(usingVisitState)
- switch tofindOrCreateDependentPatient(inEhrSystem)
method instead -
Removed deprecated
PatientService.createPatient(inEhrSystem)
- switch tofindOrCreatePatient(inEhrSystem)
method instead -
Removed deprecated
PatientService.createDependentPatient(inEhrSystem)
- switch tofindOrCreateDependentPatient(inEhrSystem)
method instead -
Removed
AppointmentService.cancelRetailAppointment(appointmentId)
- switch to.cancelRetailAppointment(visitId)
method instead -
Removed
AppointmentService.scheduleRetailAppointment()
- switch toRetailService.scheduleRetailAppointment()
method instead -
Environment.pcpURL
has been removed from the DexcareSDK initializer -
Removed
AppointmentService.getPCPAppointments
-
Removed
PCPAppointment
andPrimaryCareAppointmentFailedReason
-
Made
ScheduledVisitFailedReason
enum unavailable and updatedAppointmentService.getRetailVisits
to return aFailedReason
instead -
Removed an unused
RetailScheduledFailedReason
enum. -
Removed some unused cases in
VirtualVisitFailedReason
,ScheduleProviderAppointmentFailedReason
,ScheduleRetailAppointmentFailedReason
-
DexcarePatient.demographicLinks
has been renamed toDexcarePatient.demographicsLinks
-
PatientDemographics.ssn
has been renamed toPatientDemographics.last4SSN
-
AllowedVisitType.shortName
is now aVisitType
enum
- When passing in a nil
VirtualVisitInformation.preTriageTags
the function would return an error. This adds internally a default empty array if nil is passed in. Workaround for client in the interim is to pass in an empty array. (DC-3502) - If a user disallows push notifications, the SDK now allows them to start a Virtual Visit. Only Microphone and Camera are required. (DC-3885)
- Updated
MessageKit
to 3.3
- Chats inside virtual waiting room and virtual visits, were not persisting if the virtual visit was resumed (DC-3773)
AppointmentService.getPCPAppointments
is marked as deprecated and will be removed in the next minor versionPCPAppointment
and associated objects are marked as deprecated and will be removed in the next minor version.Environment.pcpURL
is marked as deprecated and the property will be removed in the next minor version
- Using the
RefreshTokenDelegate
now gets called properly (DC-3446)
CatchmentArea.ehrSystem
andCatchmentArea.departmentId
properties are now public
- A new
AppointmentService.cancelRetailAppointment(visitId:)
method is now the method used to cancel retail visits. The oldAppointmentService.cancelRetailAppointment(appointmentId:)
is now deprecated.VisitId
will be the id passed back in theAppointmentService.getRetailVisits
call. - A new
DexcareSDK.refreshTokenDelegate
delegate is now available to better handle 401 UnAuthenticated errors. When a client adopts this protocol, they have the ability to try and send a valid token (say for example if it's expired) and the network call will retry.
- Creating patients and booking have been overhauled to be simpler.
- Removed the requirement to call
PatientService.createPatient(visit state or ehrSystem)
orPatientService.createDependentPatient(visit state or ehrSystem)
and instead created newPatientService.findOrCreatePatient
orPatientService.findOrCreateDependentPatient
. These depend on a newCatchmentArea
property that internally is what the SDK uses to figure out the visit state. PatientService.getCatchmentArea
is now available to figure out the EHRSystem based on a visit state. If you know the EHRSystem, there is no need to call this methodVirtualService.startVirtualVisit
have new methods to use the newCatchmentArea
property. You also must pass up the fullDexcarePatient
instead of the just the demographics.RetailService.scheduleRetailAppointment
is new to expect aDexcarePatient
and an optional patient for dependent if you're booking an appointment for a dependent.This replaces the oldAppointmentService.scheduleRetailAppointment
- Any old deprecated functions, methods, protocols, classes from
3.0
have now been removed. It is recommended if you are coming from2.x
to first update to3.X
then to4.0
RetailService.getRetailClinics
is nowRetailService.getClinics
(DC-2769)- Added some extra validation for empty strings on some methods. (DC-2885)
- Updated an internal endpoint used by the SDK to resume virtual visits (DC-2836)
- Adds the SDK Version to the
userAgent
header for all network calls (DC-3206) PatientDemographic.actorRelationshipToPatient
is deprecated. AllactorRelationshipToPatient
should now be passed in via theRetailVisitInformation
or theVirtualVisitInformation
- Removed
AllowedVisitType.reasonLabel
andAllowedVisitType.description
as they are unused
- Makes all public models inherit from
Codable
. Previously some public models were just set asDecodable
. This should help in using the DexcareSDK with ReactNative.
- Chats inside a virtual visit (not in waiting room) did not successfully decode when a provider sent a message (DC-2947)
- Updated podspec to included updated 2.18 OpenTok pod
- When in Virtual Chat the message from device should be on the right side and different color. (DC-2794)
-
Virtual Visits with Someone else now require
PatientDemographics.relationshipToPatient
to be set. This now matches what retail visits are requiring. -
VirtualVisitInformation
now has a requireduserEmail
property. -
VirtualVisitInformation
now has a requiredcontactPhoneNumber
property. -
VirtualVisitInformation.declaration
is nowVirtualVisitInformation.patientDeclaration
-
RetailVisitInformation
now has a requireduserEmail
property. -
RetailVisitInformation
now has a requiredcontactPhoneNumber
property. -
RetailService.uploadInsuranceCard
has been changed to return a string instead of a URL -
PaymentMethod.insuranceImageSelf
andPaymentMethod.insuranceImageOther
have been changed to require a new cardId instead of a URL
- A new
Environment
struct has been created to simplify initialization of DexCareSDK VirtualConfiguration
replacesVirtualSDKConfiguration
DexcareConfiguration
replacesDexcareSDKConfiguration
that takes in the newEnvironment
propertyDexcareSDK.signIn(accessToken:String)
replacesDexcareSDK.authentication.signIn
DexcareSDK.signOut()
replacesDexcareSDK.authentication.signOut
VirtualService.startVirtualVisit
without email replaces the same call with email. Email property is now passed throughVirtualVisitInformation.userEmail
VirtualService.resumeVirtualVisit
without email replaces the same call with email, displayName. DisplayName is now gathered automatically by SDK.PatientService.createPatient
andPatientService.createDependentPatient
now have extra validation checks forAddress.postalCode
,homePhone
,mobilePhone
,workPhone
,- New
VirtualFeedback
enum that is used in new postFeedback call VirtualService.postFeedback([VirtualFeedback])
replacesVirtualService.postFeedback(patientId...)
to simplify the postFeedback call. AstartVirtualVisit
or aresumeVirtualVisit
must have been called before you can call this function.RetailService.uploadInsuranceCard
has been changed to use a new insurance card capture (ICC) endpoint.PaymentMethod.insuranceImageSelf
andPaymentMethod.insuranceNewImageOther
have been added
- OpenTok is now v 2.18.0
Dexcare.retail
has been renamed toDexcare.retailService
Dexcare.virtual
has been renamed toDexcare.virtualService
Dexcare.appointment
has been renamed toDexcare.appointmentService
Dexcare.patient
has been renamed toDexcare.patientService
VirtualSDKConfiguration
has been deprecated in favor ofVirtualConfiguration
DexcareSDKBaseURL
has been deprecated in favor ofEnvironment
DexcareSDKConfiguration
has been deprecated in favor ofDexcareConfiguration
DexcareSDK.authentication
has been deprecatedRegion.Price
struct is nowRegion.Prices
. Property onRegion
is stillprices
- Old deprecated
func startVirtualVisit(request: VirtualVisitRequest, presentingViewController: UIViewController, displayName: String, givenName: String, familyName: String, onCompletion: @escaping VisitCompletion, success: @escaping (String) -> Void, failure: @escaping (VirtualVisitFailedReason) -> Void)
is now removed - Removed deprecated
VirtualVisitRequest
- Removed unused public
VirtualFeedbackRequest
struct
- When in the waiting room, and the provider declines the visit, the virtual visit now closes as it should. DC-2019
- DexcareSDK now is built with Xcode 11.3
- Removed header API key from calls to DIG fhirorch
- Fixes crash in ChatViewController: DC-1813
- Added VirtualService.cancelVirtualVisit
- Added
getRetailVisits
toAppointmentService
- Added new
ScheduledVisit
model which is returned ingetRetailVisits
- Added new
Clinic
model as a replacement forRetailClinic
- Note:
Clinic.departmentName
is the new property name forRetailClinic.urlName
- Moved
scheduleRetailAppointment
fromRetailService
toAppointmentService
- Deprecated
AppointmentService.scheduleRetailAppointment
with the oldRetailTimeslot
parameter in favor of using the newTimeSlot
parameter - Deprecated
RetailService.appointments
which is nowAppointmentService.getRetailVisits
- Deprecated
RetailClinic
in favor ofClinic
- Deprecated
RetailClinicAddress
in favor ofAddress
- Deprecated
RetailService.clinics(brandName)
in favor ofRetailService.getRetailClinics(brand)
- Deprecated
RetailService.timeslots(clinicURLName)
in favor ofRetailService.getTimeSlots(departmentName: allowedVisitType)
- Deprecated
RetailBookingInfo
in favor ofClinicTimeSlot
- Deprecated
RetailSchedulingDays
in favor ofScheduleDay
- Deprecated
RetailTimeslot
in favor ofTimeSlot
- Deprecated
CancellationReason
in favor ofCancelReason
- Moved
cancellationReasons
fromRetailService
toAppointmentService
and renamed it togetCancelReasons
- Deprecated
RetailService.cancelRetailAppointment
in favor ofAppointmentService.cancelRetailAppointment
with the newCancelReason
parameter
ScheduleDay.date
is now aDate
type instead of a string
- Updated header key for fhirorch calls to
X-api-key
fromx-api-keys
- Added new AppointmentService.
- Added AppointmentService.getPCPAppointments
- Added PCP base url to dexcare configuration as optional.
- In future versions RetailService will be deprecated with functions moved over to the new AppointmentService