Image

Welcome Developers!

Explore our guides and examples to integrate DexCare.

Native Mobile SDK

The Native Mobile SDK’s are available to make your apps easier to implement through the DexCare platform.

Latest Release

NOTE: DexCare SDK 7.0 requires at minimum version 8.47.3 of the DexCare backend to fully function.

  • Full release note history can be found in Release Notes

    7.0.0

    New

    • Introduced a new VirtualEventDelegate protocol that can optionally be set on VirtualService.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 the DexcareSDK.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 at EmailValidator.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 the ZipCodeValidator.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

    Breaking

    • VisitType changes
      • VisitType has been renamed to VisitTypeShortName and switched from an enum to a struct that inherits from RawRepresentable.
      • This is to allow future VisitTypes 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 a VisitTypeShortName instead of an AllowedVisitType, (no functional change)
      • RetailService.getTimeSlots method’s allowedVisitType parameter changed to visitTypeShortName: 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 old VisitType enum.
      • ProviderVisitType.shortName type changed to VisitTypeShortName from String (no functional change).
    • Removed the following deprecated models/methods/properties:
      • Region
      • Region.Prices
      • Region.Availability
      • VirtualService.getRegions
      • RetailService.getRetailClinics
      • RetailService.uploadInsurance
      • VirtualSerivce.getRegionAvailability
      • VirtualService.getInsurancePayers
      • VirtualService.verifyCouponCode
      • VirtualService.startVirtualVisit methods without practiceId argument
      • VirtualVisitInformation.currentState
      • DexcareConfiguration.customStrings
      • ScheduledVisitFailedReason

    Fixed

    • When posting feedback, VirtualFeedback.rating case now validates the rating option to be between 0-10. DC-5026

    Other

    • 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.
  • Full release notes history can be found in Release Notes

    7.0.1

    Fixed

    • Reverted changes in 7.0.0 related to Chuck. The Environment.isProd flag now controls whether or not Chuck will appear, as it did before 7.0.0.

    7.0.0

    New

    • Introduced a new VirtualEventListener interface that can optionally be set on VirtualService to listen for various events while the patient is inside the waiting room/video conference. Note that the listener should primarily be used for logging purposes.
    • Reintroduced VirtualService.getEstimatedWaitTime(visitId) as a public method. This can be used to get the estimated wait time for a particular visit. This is the same info that is displayed to the user in the waiting room.
    • Added a new PracticeService.getEstimatedWaitTime(practiceRegionId) method, which will retrieve the estimated wait time for a specific Virtual Practice region. Note that the estimate is cached and updated every 5 minutes.
    • Added a new CustomizationOptions.validateEmails boolean which allows the ability to disable email validation within the SDK.

    Breaking

    • Several Date types in SDK models have been replaced by more appropriate Java 8 Date Time types. See the SDK 7.0 migration guide for details.
    • Removed deprecated models/methods/properties:
      • Address.address
      • Address.address2
      • Region
      • RetailService.uploadInsuranceCard
      • VirtualPracticeRegion.getVisitPriceInDollars
      • VirtualService.startVirtualVisit methods without practiceId argument
      • VirtualService.getRegions
      • VirtualService.getRegionAvailability
      • VirtualService.getInsurancePayers
      • VirtualService.verifyCouponCode
      • VirtualVisitInformation.currentState
    • Removed all of the DexCare SDK’s Date extension functions. They are no longer needed with the Java 8 Date Time types.
    • Changes around visit types:
      • AllowedVisitType.visitType renamed to AllowedVisitType.shortName.
      • AllowedVisitType.visitType type changed to a new VisitTypeShortName type (which is a typealias of String).
      • RetailService.getTimeSlots method’s allowedVisitType parameter changed to visitTypeShortName: 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 VisitType enum.
      • ProviderService.getMaxLookaheadDays method’s visitTypeShortName type changed to VisitTypeShortName from String (no functional change).
      • ProviderVisitType.shortName type changed to VisitTypeShortName from String (no functional change).
      • VisitType.type renamed to VisitType.shortName
      • VisitType.type type changed to VisitTypeShortName from String (no functional change).
    • Removed MissingPropertyError as it was no longer returned in any SDK method.
    • Removed UnexpectedMethodOrderError as it was no longer returned in any SDK method.
    • Removed VirtualService.VISIT_NOT_TOKBOX_RESULT_CODE result code as it is no longer returned. All visits are now assumed to be TokBox.
    • All methods in PracticeService can now return a MissingInformationError when a required parameter is empty.
    • The no-op version of Chuck is now used for release builds. This means that even when Environment.isProd is false for release builds, Chuck will not appear.

    Deprecated

    • EmailValidator.EMAIL_REGEX is now deprecated. It is renamed to EmailValidator.EMAIL_VALIDATION_REGEX to match iOS.

    Fixed

    • Fixed proguard rules to keep VirtualService’s companion object, allowing access to the SDK’s result codes for the virtual visit activity.
    • Fixed YouTube player initialization error on API 30 devices.
    • Only the first address in the PatientDemographics.addresses list is now validated for the Retail, Virtual, and Provider scheduling APIs. All addresses are still validated for PatientService.findOrCreatePatient and PatientService.findOrCreateDependentPatient APIs.
    • ServiceUnavailableError now correctly extends sealed class NetworkError instead of Throwable.

    Internal

    • Updated OpenTok to version 2.20.1.
    • Core library desugaring is now enabled in the SDK.
    • Kotlin updated from 1.4.21 to 1.5.0.
    • RxJava updated from 2.2.11 to 3.0.12.
    • RxAndroid updated from 2.1.1 to 3.0.0.
    • RxPermissions updated from 0.11 to 0.12.
    • Retrofit updated from 2.6.1 to 2.9.0.
    • Jackson & Jackson-related dependencies updated from 2.11.1 to 2.12.2.
    • The SDK now depends on com.fasterxml.jackson.datatype:jackson-datatype-jsr310 version 2.12.2.
    • Koin updated from 2.2.0 to 2.2.2.
      • Note: Koin’s groupid changed when migrating to MavenCentral. It’s now io.insert-koin instead of org.koin.
    • The SDK no longer depends on com.xwray:groupie and com.xwray:groupie-databinding.
    • Androidx Navigation Component updated from 2.3.3 to 2.3.5.
    • Removed usage kotlin-android-extensions plugin which is now deprecated.
    • Migrated to kotlin-parcelize plugin as a replacement for functionality that was available in kotlin-android-extensions.
    • Updated to a new version of the Virtual Visit wait time endpoint.
    • JCenter is no longer used as a dependency repository. MavenCentral should be used instead.
    • All non-network-related errors returned by the SDK are now logged for debugging purposes.

SDK Documentation

Full detail documentation has been created for each platform. You’ll find more details on methods, protocols, models, properties etc.

Android

iOS

SDK Downloads

The github repos below are public.

REST API

Reporting API

More documentation coming soon!

Support or Contact

Please contact your DexCare Customer Success Manager or Primary DexCare contact via Email/Slack or login to your Customer Service Desk ticketing system to submit a request.