Release Notes
9.0.0 November 21, 2023
Internal
- Updated Android Gradle Plugin to version 8.1.2.
- Updated
compileSdk
andtargetSdk
to 34. - Updated to JDK 17.
- Updated OpenTok/TokBox to version 2.26.2.
Breaking
- Removed support for previously deprecated PaymentMethods
InsuranceImageSelf
andInsuranceImageOther
. - Removed
uploadInsuranceCard()
function fromPaymentService
. InsuranceManualSelf
has been renamed toInsuranceSelf
andInsuranceManualOther
has been renamed toInsuranceOther
.- Removed deprecated field
providerId
fromInsuranceSelf
andInsuranceOther
. - Removed
documents
property fromDexCarePatient
. - Removed
EMAIL_REGEX
fromEmailValidator
. UseEMAIL_VALIDATION_REGEX
instead. - Removed
setGoogleApiKey
function fromDexCareSDK
. Youtube player doesn’t need Google API Key anymore. - Removed
createVirtualVisit
function fromVirtualService
. Use functioncreateVirtualVisitWithPatientActor
instead. payorId
andpayorName
are now required inInsuranceSelf
andInsuranceOther
. SeePaymentService.getInsurancePayers
to find the list of supported payers.-
getCatchmentArea
function fromPatientService
has been removed. There are other ways to find out “ehrSystemName” and “departmentId” for scheduling the visits.For virtual booking -
VirtualPracticeRegion
now providesPracticeRegionDepartment
associated with the given region that contains required information.For retail booking -
RetailDepartment
contains information about “ehrSystemName”.For provider direct booking -
ProviderDepartment
associated withProvider
contains information about “ehrSystemName”. - Removed
VirtualActor
model that was previously deprecated. It’s recommended to usePatient
instead. - Removed previously deprecated function
getProviderTimeslots
fromProviderService
. UsegetProviderTimeslotsWithShortName
passing in visitTypeShortName instead. - Removed
UnavailableAppointmentError
. It is replaced byNetworkError.ServiceUnavailableError
. - Removed
WaitingRoomYouTubePlayerError
andWaitingRoomYouTubeInitializationError
type fromVirtualVisitError
. These are replaced byWaitingRoomMediaError
.
Fixed
- Fixed validation error message for missing fields while scheduling appointments.
- Fixed issue with
RetailDepartment
model serialization in Android 14. Following exception would be thrown if theRetailDepartment
model was serialized usingObjectMapper
.
com.fasterxml.jackson.databind.JsonMappingException: The Mean Sea Level altitude accuracy of this location is not set.
- Fixed issue for Android 14 where extra
stability
serialization was causing issues with visits scheduling. - Fixed an issue on virtual visit where a Toast was showing up with provider video disabled message if the app was backgrounded.
- Fixed issue with reconnection alert dialog. If the network connection drops out during virtual visit, the reconnection alert dialog will now dismiss once the connection is reestablished.
See migration guide for SDK 9.0.0 for more details.
8.5.0 August 11, 2023
New
- Added
WaitingRoomMediaError
type inVirtualVisitError
to consolidate media errors in waiting room. - Playing the Youtube video in virtual visit waiting room requires the app to have two permissions;
android.permission.ACCESS_NETWORK_STATE
andandroid.permission.INTERNET
. So Make sure your app has these two permissions if you have the configuration to play youtube video in the waiting room.
Internal
-
Optimization and improvements for virtual visit flow.
-
Migrated Youtube Video Player for waiting room to IFrame API. Youtube has deprecated their native SDK in favor of IFrame API. Learn more: https://developers.google.com/youtube/android/player.
-
Updated OpenTok to version
2.25.3
.
Deprecated
- With Youtube player migration to IFrame API, there is no need for Google API Key to play the
Youtube video. So
DexCareSDK.setGoogleApiKey()
method has been deprecated. WaitingRoomYouTubePlayerError
andWaitingRoomYouTubeInitializationError
are no longer used in waiting room callback withVirtualVisitError
. They are deprecated in favor ofWaitingRoomMediaError
.
Fixed
-
The issue for network logs from the SDK not showing up has been fixed. The network logs are enabled if the provided environment is non-prod.
DexCare SDK uses logging interceptor from OKHTTP3 to print out any network logs. The SDK already includes the dependency in the library but sometimes you may get runtime errors if the HttpLoggingInterceptor dependency is not found in the classpath for any other reasons.
So if you run into error like below;
java.lang.NoClassDefFoundError: Failed resolution of: Lokhttp3/logging/HttpLoggingInterceptor$Logger
Please include the following dependency in your app build gradle file;
implementation "com.squareup.okhttp3:logging-interceptor:{OKHTTP3_VERSION}"
8.4.0 Jun 2, 2023
New
- Added
payorId
andpayorName
support inInsuranceManualSelf
. - Added
payorId
,payorName
, andsubscriberId
support inInsuranceManualOther
. - Added
getEMRPatient
toPatientService
to allow loading a patient information using identity providers other than DexCare.
Fixed
- Updated dependency on Chucker so that SDK doesn’t conflict with client apps.
You can now use Chucker dependency as recommended.
debugImplementation "com.github.chuckerteam.chucker:library:<VERSION>" releaseImplementation "com.github.chuckerteam.chucker:library-no-op:<VERSION>"
Deprecated
- Deprecated
providerId
in bothInsuranceManualOther
andInsuranceManualSelf
in favor ofpayorId
. - Deprecated
documents
property inDexCarePatient
. It wasn’t supported in previous versions but is now deprecated in this release to avoid breaking changes. Expect this to be removed in the next major release.
8.3.1 Mar 29, 2023
Internal
- Updated OpenTok to version
2.24.2
. - Fix issue for camera when provider joins the call with the app in background.
8.3.0 Dec 14, 2022
New
- Added Vimeo Support
- Added new property
vimeoURL
underVirtualConfig
to allow for a vimeo video to play during a virtual video visit waiting room. - Updated logic to support wither youtube or vimeo videos. Youtube video take precedence.
- Update
appTargetSdkVersion
andappCompileSdkVersion
to 33 - Updated OpenTok to version
2.24.0
. - Added new API
RetailService.getRetailDepartment
to fetch a single RetailDepartment by name
Internal
- Updated the SDK’s targetSdkVersion and compileSdkVersion to API 33 (Android 13 support).
- Added kotlinx coroutine testing libs
1.5.2-native-mt
- Added kotlinx coroutines android lib version
1.5.2-native-mt
- Added androidx core arch lib version
2.1.0
- Updated espresso from
3.4.0
to3.5.0
- Updated androidx test extJunit from
1.1.3
to1.1.4
- Updated androidx test rules from
1.4.1-alpha07
to1.5.0
- Updated androidx test runner from
1.4.1-alpha01
to1.5.1
- Updated Kotlin and kotlin-gradle-plugin version from
1.7.0
to1.7.20
- Update androidx coreKtx from
1.3.2
to1.9.0
- Update fragment testing from
1.5.2
to1.5.4
- Update androidx test junitKtx from
1.1.3
to2.2
- Update gradle version from
7.2.1
to7.3.1
- Update jacoco from
0.8.7
to0.8.8
- Update mockitoKotlin from
2.2.0
to4.1.0
- Update roboelectric from
4.5.1
to4.7.3
8.2.1 Nov 9, 2022
Internal
- Fix JSON parsing issue that was causing date parsing to fail
8.2.0 Oct 31, 2022
Internal
- Target and Compile SDK updated to 32
- Updated kotlin version from
1.6.10
to1.7.0
- Updated OpenTok to version
2.23.1
. - androidx activityKtx updated from
1.2.0
to1.5.1
- androidx annotation updated from
1.3.0
to1.4.0
- androidx appCompat updated from
1.2.0
to1.5.0
- androidx constraintLayout updated from
2.0.4
to2.1.4
- androidx fragmentTesting updated from
1.4.1
to1.5.2
- androidx navigation updated from
2.4.1
to2.5.1
- androidx test rules updated from
1.4.1-alpha06
to1.4.1-alpha07
New
- Added a new property
WaitTimeLocalizationInfo
toWaitTime
used inVirtualService.getEstimatedWaitTime
- Added new service
AvailabilityService
- Added 3 methods
AvailabilityService.getProviderAvailability
for access to care options provider. - These can be filtered by
departmentIds
latitude,longitude, and radius
, andzipcode
- Added 3 methods
AvailabilityService.getProviderAvailabilitySlots
to access availability slots - These can be filtered by
departmentIds
latitude,longitude, and radius
andzipcode
- Added new error responses for provider booking.
PatientNotOnPhysicalPanelError
andPatientDoubleBookedError
VisitService
now has a new optional propertyinsuranceGroupNumber
as part of theBillingInformation
in registration
Deprecated
- Deprecated
PaymentMethod.InsuranceImageSelf
,PaymentMethod.InsuranceImageOther
, andPaymentService.uploadInsuranceCard
8.1.3 Sept 26 2022
- Remove the requirement to provide relationship information as part of a patient data. This will not be self contained inside
VirtualVisitDetails
only
8.1.2 Sept 15 2022
Internal
- Fix the structure blocking a patient relationship detail from being displayed correctly on consumer portal.
8.1.1 Sep 2, 2022
New
- Added a new property to
VirtualVisitDetails
namedactorRelationshipToPatient
representing the patient’s relationship to the patient if scheduling for someone else. Possible values for this are found underRelationshipToPatient
enum. - If creating a visit for
PatientDeclaration.Other
, it is now a requirement to provide anactorRelationshipToPatient
or validation fails withRelationship must be defined
message.
8.1.0
New
DexCareVirtualPatient
will have throwMissing Phone Number
error if none of the three phone numbers exist in the order ofhome
,work
, andmobile
- Added Spanish language translations for most of the communicated information
- Added a new
VirtualService.createVirtualVisitWithPatient
method, to create a patient with the virtualActor that makes use of aPatient
model. - Added new property for
VirtualVisitDetails
model namedtraveling
. It is an optional field that can be passed a boolean value.
Internal
- Updated OpenTok to version
2.23.0
. - Updated proguard to reduce SDK size
Deprecated
- Deprecated the use of
VirtualActor
and it’s usage and replaced byPatient
information instead. - Deprecated the use of
VirtualService.createVirtualVisit
and replaced byVirtualService.createVirtualVisitWithPatient
8.0.1
New
VirtualVisitDetails
can now take in null as the assignmentQualifiers
. Null will assume default qualifiers and you will have to use VirtualService.getAssignmentQualifiers
to get access to available qualifiers.
Internal
- Removed DefaultVirtualVisitAssignmentQualifiers
8.0.0
New
- Added a new
VirtualService.createVirtualVisit
method, which uses a new backend endpoint with more functionality. The new API allows for scheduling for a patient using an Epic identifier instead of a DexCare patientGuid, scheduling phone-call virtual visits, and is more flexible in terms of required information to schedule a virtual visit. See the DexCare developers site for more information. - Added a new
VirtualService.getWaitTimeAvailability
method to fetch the newWaitTimeAvailability
list for all Virtual Provider queues. This includes information about all available regions for all practices. The results can optionally be filtered by several parameters. See the code documentation for available filters. - Added a new
VirtualService.getAssignmentQualifiers
method to fetch the all supportedVirtualVisitAssignmentQualifier
to use to filterVirtualService.getWaitTimeAvailability
and inVirtualService.createVirtualVisit
. - Added new mandatory parameters
userEmail
andcontactPhoneNumber
inVirtualVisitDetails
model, these parameters are used to contact the user. -VirtualVisitDetails
replaces the deprecatedVirtualVisitInformation
. Please see documentation for more information on the properties. - Added a new
VirtualService.getModalities
method to fetch the all supportedVirtualVisitModality
to use to filterVirtualService.getWaitTimeAvailability
and inVirtualService.createVirtualVisit
. - Scheduling a phone-call virtual visits using
VirtualService.createVirtualVisit
andVirtualVisitTypeName
asphone
will return emptyIntent
, avisitId
, and aVirtualVisitTypeName
object. VisitStatus
enum converted to a String- New method
VisitStatus.isVisitStatusActive
is added which returns a Boolean depending on theVisitStatus
passed as an argument. - New enum
DefaultVisitStatus
is available to give access to the list of default visit status names. - Added a new
VirtualPracticeRegion.pedatricsAgeRange
property to indicate the age of patients that pediatric providers can see.
Breaking
- A
MissingInformationError
is now returned in theVirtualService.createVirtualVisit
methods whenVirtualVisitInformation.visitReason
is empty string. This now matches the behavior in the Retail and Provider services. VirtualSerivce.startVirtualVisit
- use the newVirtualSerivce.createVirtualVisit
passing in the newVirtualVisitDetails
.VirtualVisitInformation
- useVirtualVisitDetails
with the newVirtualSerivce.createVirtualVisit
.PracticeService.getVirtualPracticeRegionAvailability
- use the newVirtualService.getWaitTimeAvailability
.PracticeService.getEstimatedWaitTime
- use the newVirtualService.getEstimatedWaitTime
.RegionAvailability
- use the newWaitTimeAvailability
returning fromVirtualService.getWaitTimeAvailability
.- Removed
PatientService.createPatientWithMyChart()
method. This is no longer supported by the SDK. - Clinic references have been updated to RetailDepartment.
ClinicTimeSlot
is replaced byRetailAppointmentTimeSlot
.RetailService.getClinics
is replaced byRetailService.getRetailDepartments
ScheduledVisit.clinic
is replaced byScheduledVisit.retailDepartment
Deprecated
UnavailableAppointmentError
is now deprecated. It will be replaced by the standardNetworkError.ServiceUnavailableError
in a future release.ProviderService.getProviderTimeslots
passing invisitTypeId
is deprecated in favour ofProviderService.getProviderTimeslotsWithShortName
and passing in aVisitTypeShortName
instead.
Internal
-
VisitStatus
is now just a typealias that is a String. - Updated TokBox SDK version from
2.22.0
to2.22.3
- Updated androidMaterial version from
1.0.0
to1.4.0
- Updated Jackson parser versions from
2.12.4
to2.13.3
- Updated androidx test junit ext from
1.1.2
to1.1.3
- Updated androidx test rules from
1.3.0
to1.4.1-alpha06
- Updated androidx constraint layout from
1.1.3
to2.0.4
- Updated androidx databindingCompiler from
4.1.2
to7.2.1
- Updated androidx fragmentTesting from
1.3.0
to1.4.1
-
Updated mockitoAndroid from
3.0.0
to3.3.0
- Update
getEstimatedWaitTime
underVirtualVisitContract
from v6 to v9 api endpoint - Update
cancelVirtualVisit
underVisitServiceContract
from v8 to v9 api endpoint - Update
getVirtualPractice
underPracticeService
from v8 to v9 api endpoint
7.2.2
Internal
- Update navigation initialization to
onPostCreate
Fixes
- Fix for intermittent crashes observed while waiting for a virtual visit
7.2.1
New
- It is safe to remove
BLUETOOTH
,ACCESS_NETWORK_STATE
, andWIFI_STATE
permissions from your manifest. If you have TytoCare integrations, do not removeWIFI_STATE
.
Internal
- Updated TokBox SDK version from 2.21.3 to 2.22.0
- Kotlin version updated from 1.5.21 to 1.6.10
- JVM target updated from 8 to 11
- Updated androidxNavigationVersion from 2.3.5 to 2.4.1
- Updated gradle build tools 7.0.1 to 7.1.2
- Remove javax.annotation-api:1.3.2 and replaced with androidx.annotation:annotation:1.3.0
- Updated gradle from gradle-7.1.1 to gradle-7.4.1
- Remove outdated test modules
7.2.0
New
- Added a new API
DexCareSDK.getDexCareStatus()
which returns information about any planned or unplanned incidents that may be affecting the DexCare platform and services. - Large improvements to KDocs on the DexCare developers site
- 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.
- Added optional runtime configuration for Google API key using
DexCareSDK.setGoogleApiKey(your_google_api_key)
to play youtube video while waiting for virtual visit start. PatientDemographics.birthDate
is now validated for future dates- Virtual visits on Android 12 now require the READ_PHONE_STATE runtime permission
- Changed
PatientDemographics.homePhone
to optional parameter. So nowhomePhone
is a optional parameter while creating patient. - Adds a
PatientService.deletePatientAccount
to start the process of deleting a DexCare Patient Account.
Breaking
- A
MissingInformationError
is now returned in theVirtualService.startVirtualVisit
methods whenVirtualVisitInformation.visitReason
is empty string. This now matches the behavior in the Retail and Provider services.
Deprecated
UnavailableAppointmentError
is now deprecated. It will be replaced by the standardNetworkError.ServiceUnavailableError
in a future release.
Internal
- Updated the SDK’s targetSdkVersion and compileSdkVersion to API 31 (Android 12 support).
- The DexCare SDK now uses permission
ACCESS_COARSE_LOCATION
. With Android 12, it is required to always requestACCESS_COARSE_LOCATION
when requestingACCESS_FINE_LOCATION
. These are still only requested when needed during the TytoCare Integration flow. - Removed Chuck as an SDK dependency. Added Chucker as a replacement. Chucker is a newer and maintained version of Chuck.
- Improved incoming call detection during a virtual visit. Audio and video publishing are automatically paused during a phone call and resumed after the call ends.
- Updated Android Gradle Plugin to
7.0.1
. - Updated Gradle to
7.1.1
. - The DexCare SDK now uses permission
READ_PHONE_STATE. With Android 12, it is required to always request
READ_PHONE_STATE` before starting virtual visit. - The DexCare SDK now uses permission
BLUETOOTH_CONNECT
. With Android 12, it is required to always requestBLUETOOTH_CONNECT
before starting virtual visit to connect audio stream. - Updated TokBox SDK version to 2.21.3
7.1.0
New
- Added a new
VirtualService.getVideoCallStatistics()
that returns statistics information about a video conference that occurred in the current DexCare SDK session. - Added a new method
VirtualService.getVirtualVisitStatus(visitId: String)
which returns the current status of a virtual visit. This can be used to determine if a visit can be reconnected to usingVirtualService.resumeVirtualVisit
. - The SDK now performs a device health check before entering the virtual visit waiting room. The check ensures that the device has a camera and microphone, both of which are required for virtual visits. In the event that the device does not have one or neither of them, a new
UnsupportedDeviceError
will be returned in theVirtualService.startVirtualVisit
andVirtualService.resumeVirtualVisit
methods. - Added a new
PatientQuestion
model. TheRetailVisitInformation
andProviderVisitInformation
objects now optionally take in a list ofPatientQuestion
. This can be used during retail and provider visits to pass additional information through to the Epic appointment record.
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.
Internal
- Extended the amount of time the SDK will attempt to reconnect to a virtual visit upon a disconnect. The reconnecting spinner dialog now has a Cancel button. Users can use this button to stop reconnection attempts, and upon confirmation will be removed from the virtual visit. The visit remains active and can be rejoined using
VirtualService.resumeVirtualVisit
. - Button order updated for some dialogs inside virtual visit, according to Material Design. The confirmation button is now always the right-most button, and cancel is always left-most.
- Updated endpoint for
ProviderService.getProviderTimeSlots
to a new version. - Kotlin updated from
1.5.0
to1.5.21
. - Android Gradle build tools updated from
4.2.1
to4.2.2
. - Jackson & Jackson-related dependencies updated from
2.12.2
to2.12.4
.
Breaking
- Renamed
SessionStatus
toVisitStatus
. This model was marked as public, but there wasn’t much use for it anywhere outside the SDK. Therefore, it will most likely be a seamless upgrade.
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 onVirtualService
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 toAllowedVisitType.shortName
.AllowedVisitType.visitType
type changed to a newVisitTypeShortName
type (which is a typealias of String).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 theVisitType
enum.ProviderService.getMaxLookaheadDays
method’svisitTypeShortName
type changed toVisitTypeShortName
from String (no functional change).ProviderVisitType.shortName
type changed toVisitTypeShortName
from String (no functional change).VisitType.type
renamed toVisitType.shortName
VisitType.type
type changed toVisitTypeShortName
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 aMissingInformationError
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 toEmailValidator.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 forPatientService.findOrCreatePatient
andPatientService.findOrCreateDependentPatient
APIs. - ServiceUnavailableError now correctly extends sealed class
NetworkError
instead ofThrowable
.
Internal
- Updated OpenTok to version
2.20.1
. - Core library desugaring is now enabled in the SDK.
- Kotlin updated from
1.4.21
to1.5.0
. - RxJava updated from
2.2.11
to3.0.12
. - RxAndroid updated from
2.1.1
to3.0.0
. - RxPermissions updated from
0.11
to0.12
. - Retrofit updated from
2.6.1
to2.9.0
. - Jackson & Jackson-related dependencies updated from
2.11.1
to2.12.2
. - The SDK now depends on
com.fasterxml.jackson.datatype:jackson-datatype-jsr310
version2.12.2
. - Koin updated from
2.2.0
to2.2.2
.- Note: Koin’s groupid changed when migrating to MavenCentral. It’s now
io.insert-koin
instead oforg.koin
.
- Note: Koin’s groupid changed when migrating to MavenCentral. It’s now
- The SDK no longer depends on
com.xwray:groupie
andcom.xwray:groupie-databinding
. - Androidx Navigation Component updated from
2.3.3
to2.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 inkotlin-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.
6.1.3
Changed
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 theZipCodeValidator.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.
6.1.2
New
- 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 totrue
.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 id2woiLsEG2zo
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.
Fixes
- Fixed TytoCare QR code generation. Devices should now be able to pair directly after a factory reset.
Other
- 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.
6.1.1
Fixes
- Fixed TytoCare QR code generation on API 24 and 25.
- Fixed TytoCare QR code getting cut off on smaller screen sizes.
6.1.0
New
- 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 https://www.tytocare.com/.
- The DexCare SDK now uses permissions
ACCESS_WIFI_STATE
andACCESS_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
andDexCareSDK.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.
Breaking
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
Deprecations
VirtualPracticeRegion.getVisitPriceInDollars()
is now deprecated. The existing propertyvisitPrice
now represents the visit cost in dollars.
Fixes
- 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.
Internal
- 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
6.0.1
Fixes
- Fixed an issue where network calls were logged to device logcat.
6.0.0
New
- Added a new PaymentService, which now contains the existing payment-related methods. No new methods were added.
Deprecations
RetailService.uploadInsuranceCard
is now deprecated. It has been moved toPaymentService.uploadInsuranceCard
.VirtualService.getInsurancePayers
is now deprecated. It has been moved toPaymentService.getInsurancePayers
.VirtualService.verifyCouponCode
is now deprecated. It has been moved toPaymentService.verifyCouponCode
.
Changed
- The SDK is now targeting Android API 30.
Fixes
- Fixed a rare crash related to the waiting room YouTube video.
Dependencies
- Updated OpenTok to version
2.19.0
5.0.1
- 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.
5.0.0
NOTE: SDK 5.0 requires at minimum version 7.0.0 of the DexCare backend services.
New
- 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.
Changed
- 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.
Deprecations
- Deprecated
VirtualService.getRegions()
andVirtualService.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
andAddress.address2
properties. New propertiesline1
andline2
are added as replacements. This is a rename to match iOS.
Breaking
- 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
Address.country
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
Fixes
- Fixed a rare crash when an error is encountered from the TokBox SDK.
Dependencies
- Updated OkHttp to version
4.9.1
4.0.3
- 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.
4.0.2
- Updated ProGuard rules to minimize conflicts between multiple obfuscated libraries (duplicate class error).
4.0.1
- Fixed an issue where
PatientService.findOrCreateDependentPatient
did not set the EHR system name in the PatientDemographics object before returning the full DexCarePatient object.
4.0.0
Internal
- 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.
Changes
New
- 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
orPatientService.createDependentPatient
method. New methodsPatientService.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 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 newCatchmentArea
property. You also must pass up the fullDexcarePatient
instead of the just the demographics.
Deprecated
AppointmentService.cancelRetailVisit
is now deprecated.AppointmentService.cancelRetailAppointment
has been added to replace it. The new methodAppointmentService.cancelRetailAppointment
takes in the visitId (ScheduledVisit.id
), not the appointment id as the old method did.Clinic.distanceString
property is now deprecated. Existing functionClinic.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
andPatientService.createDependentPatient
methods have been deprecated, as newPatientService.findOrCreatePatient
andPatientService.findOrCreateDependentPatient
methods have been introduced, with slightly different parameters/return values.
Breaking
- 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
modelvalue
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
anddescription
fromAllowedVisitType
model.
Fixes
- Added missing functionality where Virtual Visits were not continuously updating the estimated wait time in the virtual waiting room.
3.0.3
- Removed internal Splunk Mint SDK. No changes required on the app side.
3.0.2
- Fixed issue with SDK crashing during initialization (ProGuard rules tweaked). No changes required on the app side.
3.0.1
- Fixed issue with autocomplete on the SDK/services.
- Updated to Gradle 6.7, and Android build tools gradle plugin to 4.1.0.
3.0.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
2.2.0
Breaking
- 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 todisplayText
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.
Non-breaking
- 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.