b.well SDK version 1.1.0 includes new features, a breaking change, and operational improvements that enhance the SDK's functionality in non-Production environments.
New Additions
Notification Handling
A new endpoint, handleNotification, has been introduced. This allows SDK clients to inform us when a silent push notification is opened. This feature aims to improve user engagement tracking and the effectiveness of push notification campaigns.
suspend fun handleNotification(data: String) : OperationOutcome
Delete Connection
A new endpoint, deleteConnection, has been introduced. This endpoint will allow a user to delete a connection, deleting the associated token and the user's data specific to the connection. This endpoint is not fully functional with this release. Currently it will set the connection status to DELETED, but will not delete the data. Full end to end functionality will be introduced in a following release.
suspend fun deleteConnection(connectionId: String): OperationOutcome
A new enum, DELETED has been added to ConnectionStatus
Configuration parameters passed during the initialization (initialize) of the SDK will now only be respected in non-Production environments. This allows for more flexible development and testing configurations without affecting live production setups.
In Production environments, configurations are now dynamically pulled at runtime, ensuring that the most current settings are always in use.
Updates
A paging issue with getTasks was corrected, which will allow the full list of a user's tasks to be retrieved using paging. Here is an example builder function:
private fun getTasks() {
val taskRequest = TasksRequest.Builder()
.enrichContent(true)
.status(TaskStatus.READY)
.smartSort(true)
.page(0)
.pageSize(50)
.build()
Breaking Changes
Enhanced Retry Policy Configuration
The BwellConfig.Builder() includes an update to the retry policy configuration.
This change requires updates to the initialization code where the SDK configuration is set. Please adjust your implementations accordingly.
New implementation example
.retryPolicy(
RetryPolicy.Builder()
.maxRetries(5)
.retryInterval(500) // in milliseconds
.build()
)
The following changes are included in this release.
New Additions
Added support for logging and performance metrics
Bug Fixes
Fixed timeout issue that was causing createConnection requests for Basic connections to appear to fail (they would succeed in the background, but the SDK would return an error after 10 seconds)
The following changes are included in this release.
New Additions
Base resources (non-groups) can now be filtered by lastUpdated date.
This will enable SDK users to retrieve only new and updated data.
Detailed documentation on use of lastUpdated can be found here.
getMemberConnections now returns a connection status of EXPIRED
This allows the SDK user to differentiate a connection that has been disconnected through the use of disconnectConnection and one that has been disconnected due to an expired token.
CarePlan data now includes additional fields for Activity details.
activity.detail.status
activity.detail.scheduled[x]
scheduledTiming
scheduledPeriod
scheduledString
Bug Fixes
getEncounters properly filters by groupCode.
Important Changes
Import Statement Changes
import com.bwell.common.models.domain.healthdata.observation.Observation
is now import com.bwell.common.models.domain.healthdata.common.observation.Observation
import com.bwell.healthdata.lab.requests.LabGroupsRequest
is now import com.bwell.healthdata.healthsummary.requests.procedure.LabGroupsRequest
Schema Changes
Schema changes have been made that have resulted in type name changes. These were included in a previous post for review prior to release.
Description
Field 'AllergyIntoleranceResource.reaction' changed type from '[AllergyIntoleranceReaction]' to '[Reaction]'
Field 'CarePlanResource.activity' changed type from '[CarePlanActivity]' to '[Activity]'
Field 'ConditionResource.recorder' changed type from 'ConditionRecorder' to 'Recorder'
Field 'EncounterResource.participant' changed type from '[EncounterParticipant]' to '[Participant]'
Field 'ImmunizationResource.encounter' changed type from 'ImmunizationEncounter' to 'EncounterResource'
Field 'ImmunizationResource.reaction' changed type from '[ImmunizationReaction]' to '[Reaction]'
Field 'ImmunizationResource.protocolApplied' changed type from '[ImmunizationProtocolApplied]' to '[ProtocolApplied]'
Field 'ImmunizationResource.performer' changed type from '[ImmunizationPerformer]' to '[Performer]'
Field 'MedicationStatementResource.requester' changed type from 'PerformerActor' to 'Actor'
Field 'ObservationResource.value' changed type from 'ObservationValue' to 'Value'
Field 'ObservationResource.referenceRange' changed type from '[ObservationReferenceRange]' to '[ReferenceRange]'
Field 'ObservationResource.component' changed type from '[ObservationComponent]' to '[Component]'
Field 'ObservationResource.encounter' changed type from 'Encounter' to 'EncounterResource'
Field 'ObservationResource.performer' changed type from '[ObservationPerformer]' to '[Performer]'
Field 'ProcedureResource.performer' changed type from '[ProcedurePerformer]' to '[Performer]'
Field 'ProcedureResource.encounter' changed type from 'ProcedureEncounter' to 'EncounterResource'
Field 'LabGroup.value' changed type from 'ObservationValue' to 'Value'
Field 'LabGroup.referenceRange' changed type from '[ObservationReferenceRange]' to '[ReferenceRange]'
Field 'LabGroup.component' changed type from '[ObservationComponent]' to '[Component]'
Field 'VitalSignGroup.value' changed type from 'ObservationValue' to 'Value'
Field 'VitalSignGroup.referenceRange' changed type from '[ObservationReferenceRange]' to '[ReferenceRange]'
Field 'VitalSignGroup.component' changed type from '[ObservationComponent]' to '[Component]'
The following items and changes are included in this release.
Resolved Service Desk Tickets
SD-627: meta.lastUpdated no longer returns as null
SD-620: recordedDate is now returned by getAllergyIntoleranceGroups to support the client applications "Sort by Date View".
Other Changes
lastSynced and statusUpdated are now nullable fields on getMemberConnections
Please note: until v0.19.0 is integrated, the client application could experience errors in a scenario where lastSynced or statusUpdated returns as null
The following items and changes are included in this release.
Resolved Service Desk Tickets
SD-601: meta.tag (activityClass) no longer returns null on getTasks.
SD-589: Authentication token refresh is now handled properly.
Currently, tokens are valid for up to 30 days.
Important Changes
We're continually improving the SDK to align with FHIR standards. Here's a summary of the recent changes:
Removed Non-Compliant Fields: Fields not adhering to FHIR standards have been removed. This includes id on Identifier.
system should now be used to identify Activities/Tasks.
Updated Sample App: Reflects changes, particularly the shift from id to system.
Please update and reference the sample app for implementation examples.
Model Adjustments:
Location Model: Removed distanceInMiles and parking.
Task and Consent Models: Removed resourceType.
Annotation Model: Removed id.
Identifier Model: Removed id.
CodeableConcept Model: Removed id and extension.
Subject Model: Added resourceType.
General: Removed __typename from models.
New Additions: Introduced the PatientConditionRecorder class.
Renaming:
Fields like organizationName, practitionerName, and patientName have been renamed to name.
Renamed Photo to Attachment.
Note The fields above were removed to adhere to FHIR standards. However, if the removal of any fields listed above cause issues with SDK integration, please let us know.
b.well Sample App Updates
👍
The b.well Sample App has been updated to include implementation for push notifications!
For implementation example code, please update your project to pull the latest Sample App changes and reference the following:
HomeFragment.kt: Implementation of registerDevice
BWellFirebaseMessagingService.kt: Implementation of token management and notification handling.
The following items and changes are included in this release.
Modifications to createConnection
Change increateConnection Method: The createConnection method now returns BWellResult<Connection> instead of OperationOutcome, enhancing the method's output with more detailed information.
The following items and changes are included in this release.
New Documentation
The connection state diagram regarding data connection status with getMemberConnections can be found under the Diagrams section in Guides.
Updates to Procedure Groups
Change: performer: string has been updated to performer: [String].
Reason for Change: This modification allows for the representation of multiple performers for a procedure, acknowledging scenarios where more than one performer may be involved.
Modifications in Encounter Groups
Change: period: Period has been revised to date: Datetime.
Reason for Change: Simplifying the data model, this change reflects the current requirement to capture only a single datetime for an encounter. The need for a start and end time is currently not essential for our use case.
Change: participant: [EncounterParticipant] is now participant: String.
Reason for Change: This update replaces the reference to Practitioner resources with a simple string detailing the Practitioner's name and credentials.
Additions to Medication Statements
New Additions:
dispenseRequest
dispenseRequest is comprised of data class MedicationDispenseRequest and includes:
id
dispenseInterval
expectedSupplyDuration
initialFill
numberOfRepeatsAllowed
performer
validityPeriod
quantity
reasonCode
source
These elements have been reintroduced to Medication Statements in the SDK.
Changes in Client-Sandbox Environment
Phone number validation when calling updateProfile has been relaxed. The phone number is no longer required to be a valid US phone number. The phone number is only required to be 10 digits in length. Example: 5138965698
updateProfile will now successfully update the user's profile information if empty string values are passed for a given attribute.
searchProviders and searchConnections paging parameters are now 0-based.
These update does not require the new version of the SDK and is currently deployed to the client-sandbox environment.