Release Notes



  • 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 is added. This is the regex used in the ZipCodeValidator.isValid method.
  • InvalidPatientDemographicsObjectError no longer returns the address in the error message when the zip code is invalid, and instead returns the index of the address in the addresses list.



  • 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 YouTube video on the waiting room. Defaults to true.
    • waitingRoomYouTubeVideoId - A YouTube video id that can be optionally specified to change the video that displays inside the virtual waiting room. When not specified, the YouTube video id 2woiLsEG2zo is used (the same video that has always played in the waiting room, no changes).

When these properties or VirtualConfig are not explicitly overridden, the default values are used.


  • Fixed TytoCare QR code generation. Devices should now be able to pair directly after a factory reset.


  • Changed the 5GHz error message to be more about connecting to a 2.4GHz Wi-Fi. The 5GHz error dialog would also display when the user is connected to mobile data, so the error message was reworded to make more sense in this case as well.



  • Fixed TytoCare QR code generation on API 24 and 25.
  • Fixed TytoCare QR code getting cut off on smaller screen sizes.



  • 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 window that instructs the user on how to pair/connect their Tyto device. For more information about TytoCare, visit
  • The DexCare SDK now uses permissions ACCESS_WIFI_STATE and ACCESS_FINE_LOCATION. These are used to get the user’s current Wifi SSID in the TytoCare flow. The user is only prompted to allow location permission when the SSID is needed, and they have the option to decline and enter the SSID manually.
  • Added new methods DexCareSDK.setApiKey and DexCareSDK.setDomain. These methods can optionally be used to change the API key and domain at runtime. These methods are generally not needed if the configs are already set in string resources.
  • Added a new method DexCareSDK.setCustomizationOptions which will be used to set various minor customizations within the SDK.


  • VirtualPracticeRegion.visitPrice is now already divided by 100. The visitCost represents the price of a visit in dollars, rather than cents as previously. The type has changed from Int to Double. If this division was done on your app, it should be removed to get the proper visit price in dollars.
    OLD SDK 6.0: visitPrice = 4900
    NEW SDK 6.1: visitPrice = 49.0


  • VirtualPracticeRegion.getVisitPriceInDollars() is now deprecated. The existing property visitPrice now represents the visit cost in dollars.


  • Fixed an issue inside the video conference where the patient would not be able to see or hear the provider after the provider refreshed their window and reconnected.


  • Improved UI for the error dialog that appears when the Virtual session gets disconnected.
  • Updated to Kotlin version 1.4.21.
  • Updated Kotlin jvmTarget to Java 9.
  • Updated to a new version of the virtual visit cancellation endpoint.
  • Updated OpenTok to version 2.19.1



  • Fixed an issue where network calls were logged to device logcat.



  • Added a new PaymentService, which now contains the existing payment-related methods. No new methods were added.


  • RetailService.uploadInsuranceCard is now deprecated. It has been moved to PaymentService.uploadInsuranceCard.
  • VirtualService.getInsurancePayers is now deprecated. It has been moved to PaymentService.getInsurancePayers.
  • VirtualService.verifyCouponCode is now deprecated. It has been moved to PaymentService.verifyCouponCode.


  • The SDK is now targeting Android API 30.


  • Fixed a rare crash related to the waiting room YouTube video.


  • Updated OpenTok to version 2.19.0


  • Fixed a crash when inflating the Virtual Visit screens on certain AndroidX Navigation Component versions.
  • Updated androidx.core:core-ktx dependency to version 1.3.2.
  • Updated AndroidX Navigation Component dependency to version 2.3.3.


NOTE: SDK 5.0 requires at minimum version 7.0.0 of the DexCare backend services.


  • Added a new PracticeService, which contains new APIs to get info about a particular Practice and PracticeRegion. Practices will replace the existing Regions concept in the Virtual booking flow. See the documentation for more details: PracticeService
  • Added a new ProviderService, which contains new APIs to get info about a particular care Provider, retrieve the Provider’s time slots, and schedule a visit directly with the Provider. See the documentation for more details: ProviderService
  • Added a new PatientService.getSuffixes() API, which returns a list of acceptable name suffixes.


  • Push Notifications are now optional. It is still highly recommended to register for push notifications.
  • Loosened validation on SDK methods that schedule visits. Now only properties used in the API are validated, instead of anything that gets passed in.


  • Deprecated VirtualService.getRegions() and VirtualService.getRegionAvailability() methods. The “Regions” are being deprecated in favor of Practices and VirtualPracticeRegions. See the new PracticeService for details.
  • Deprecated most models related to Regions. Any regions-related models not deprecated are shared and used by Practices.
  • Deprecated VirtualVisitInformation.currentState and made it optional. With Practices, this parameter is no longer needed.
  • Deprecated VirtualService.startVirtualVisit methods. New startVirtualVisit methods were added with slightly different parameters to support Practices.
  • Deprecated Address.address1 and Address.address2 properties. New properties line1 and line2 are added as replacements. This is a rename to match iOS.


  • The value returned by VirtualService.verifyCouponCode is now already divided by 100. 4900.0 -> 49.0. This now matches iOS.
  • Removed AppointmentService.getPcpAppointments() method. PCP is not supported by DexCare and is no longer accessible through the SDK.
  • Removed Environment.pcpUrl config property.
  • Removed all models related to PCP.
  • Removed property. Changing the country is not currently supported.
  • Removed all methods/models that were marked as deprecated in SDK 4.0.
  • Removed unused properties from VirtualSession model:
    • waitingRoomID
    • conferenceRoomID


  • Fixed a rare crash when an error is encountered from the TokBox SDK.


  • Updated OkHttp to version 4.9.1


  • Resolved a potential SDK crash related to consumer app ProGuard conflicts with the SDK. Internally to the SDK, the issue has been avoided entirely. No changes required on the app side.


  • Updated ProGuard rules to minimize conflicts between multiple obfuscated libraries (duplicate class error).


  • Fixed an issue where PatientService.findOrCreateDependentPatient did not set the EHR system name in the PatientDemographics object before returning the full DexCarePatient object.



  • Updated several API endpoints to newer versions. These changes were internal to the SDK, no changes are required on the app.
  • Updated Kotlin to version 1.4.20.
  • Updated Koin to version 2.2.0.



  • Added new Virtual Visit return codes to enable the apps to distinguish and handle different virtual visit results. See VirtualService’s Companion object for details.
  • Made all public models implement Parcelable, in case implementing apps want to transfer models between fragments/activities.
  • RetailService.scheduleRetailAppointment now returns a visitId upon success, instead of nothing. The visitId can be used to cancel the visit. This is the only place the visitId is returned for “dependent” visits (AppointmentService.getRetailVisits only returns visits for the signed in user).
  • Added new method to DexCareSDK object: setRefreshTokenContract(refreshTokenContract: RefreshTokenContract?). This allows for changing the RefreshTokenContract after initialization.
  • Creating patients and booking have been overhauled to be simpler:
  • Removed the requirement to call PatientService.createPatient or PatientService.createDependentPatient method. New methods PatientService.findOrCreatePatient or PatientService.findOrCreateDependentPatient. These depend on a new CatchmentArea 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 already know the EHR system and department Id (retail clinics have this info), there is no need to call this method.
  • VirtualService.startVirtualVisit have new methods to use the new CatchmentArea property. You also must pass up the full DexcarePatient instead of the just the demographics.


  • AppointmentService.cancelRetailVisit is now deprecated. AppointmentService.cancelRetailAppointment has been added to replace it. The new method AppointmentService.cancelRetailAppointment takes in the visitId (, not the appointment id as the old method did.
  • Clinic.distanceString property is now deprecated. Existing function Clinic.getDistanceString(userLocation: Location): String should be used instead.
  • Existing VirtualService.startVirtualVisit methods were deprecated, as new startVirtualVisit methods have been introduced, with slightly different parameters.
  • Existing PatientService.createPatient and PatientService.createDependentPatient methods have been deprecated, as new PatientService.findOrCreatePatient and PatientService.findOrCreateDependentPatient methods have been introduced, with slightly different parameters/return values.


  • Made the SDK’s Koin instance internal to the SDK. DexCareSDK.initWithKoinSupport method is removed, now there is only one init method. If your app relied on any of the SDK’s modules, you will need to set up your own modules and providers in your app to replace them.
  • Answer model value property type changed from Any to String.
  • Added input validation for various required arguments throughout the SDK. A MissingInformationError will be returned when empty string is passed in to a required input parameter.
  • Removed dispose() method from RefreshTokenContract.
  • Removed properties reasonLabel and description from AllowedVisitType model.


  • Added missing functionality where Virtual Visits were not continuously updating the estimated wait time in the virtual waiting room.


  • Removed internal Splunk Mint SDK. No changes required on the app side.


  • Fixed issue with SDK crashing during initialization (ProGuard rules tweaked). No changes required on the app side.


  • Fixed issue with autocomplete on the SDK/services.
  • Updated to Gradle 6.7, and Android build tools gradle plugin to 4.1.0.


See the 3.0.0 Migration Guide.

DexCare SDK 3.0.0 High-Level Overview

  • Aligned the iOS and Android SDKs. This means that the services and models are now much more similar between the platforms.
  • Updated the Insurance Card Capture endpoints. The APIs available in version 2.x of the SDK are not available on certain environments. This SDK release contains updated APIs that are available on all environments.
  • Simplified SDK usage, particularly around posting virtual feedback. The number of parameters required to post feedback has been reduced to 1 - the minimum amount of information required from the implementing app (the user’s feedback). Everything else is temporarily stored in memory from the most recent Virtual Visit, and handled by the SDK. It’s no longer necessary for the implementing app to keep track of visitIds, conferenceIds, etc.
  • New data validation requirements around phone numbers, emails, and zip codes. The requirements are detailed in each platform’s migration guide.
  • Various bug fixes and stabilization.
  • Updated TokBox SDK to version 2.18.0 - iOS/Android



  • Made VirtualVisitService.getEstimatedWaitTime(visitID: String): DataObserver<EstimatedWaitTime> internal to the SDK. This API is handled in the virtual visit waiting room, which is managed by the SDK.
  • Made EstimatedWaitTime internal to the SDK.
  • CancelReason’s text property was renamed to displayText to match iOS.
  • Multiple changes to Retail-related models and methods. This was done to align Android and iOS SDKs. Changes include property renaming, new properties, and minor SDK contract changes.


  • Updated AppointmentService.getCancelReasons(brandName: String): DataObserver<List<CancelReason>> to use an updated API internally. Aside from the property rename above, this should be a seamless transition.