Vai al contenuto principale

vitalera SDK v2 — Kotlin Multiplatform for 30+ Medical Devices

The Vitalera SDK v2 is a Kotlin Multiplatform (KMP) library that provides a unified API for integrating medical devices on Android and iOS. It replaces the v1 monolithic SDK with a modular, provider-based architecture.

Key Features

  • Modular Provider System: Include only the device integrations your app needs. Each device vendor (Omron, Polar, Lifevit, Beurer, etc.) is a separate provider module.
  • Kotlin Multiplatform: Shared codebase across Android and iOS with platform-specific BLE and crypto implementations.
  • Typed Observations: 30+ typed observation classes (e.g., BloodPressureObservation, HeartRateObservation) replace the generic Observation model from v1.
  • Flow-Based Discovery: Device scanning uses Kotlin Flow (Android) and AsyncSequence (iOS) with built-in timeouts and filtering.
  • DPoP Authentication: Organization license keys with DPoP-bound OAuth2 tokens. 7-day offline grace period with cached entitlements.
  • Connected Mode: Optionally resolve patients and post observations directly to the Vitalera backend.
  • Standard BLE Fallback: Devices using standard Bluetooth SIG health profiles (Blood Pressure, Heart Rate, etc.) work automatically without a vendor-specific provider.

Architecture

Platform Support

PlatformMin VersionDistribution
AndroidAPI 24 (Android 7.0)Maven (GitHub Packages)
iOS14.0Swift Package Manager

Modules

ModuleAndroid ArtifactiOS SPM ProductDescription
Corecom.vitalera:sdk-coreVitaleraSdkCoreBuilder, auth, registry, observation types
BLEcom.vitalera:sdk-bleVitaleraSdkBleBLE abstraction, standard profiles
Omroncom.vitalera:provider-omronVitaleraSdkProviderOmronBlood pressure, thermometer
Polarcom.vitalera:provider-polarVitaleraSdkProviderPolarHeart rate (H10, Verity Sense)
Lifevitcom.vitalera:provider-lifevitVitaleraSdkProviderLifevitBPM, oximeter, scale
Beurercom.vitalera:provider-beurerVitaleraSdkProviderBeurerBPM, oximeter
Smart Peak Flowcom.vitalera:provider-smart-peak-flowVitaleraSdkProviderSmartPeakFlowAudio-based peak flow
HealthKitN/AVitaleraSdkProviderHealthKitApple HealthKit (iOS only)
Health Connectcom.vitalera:provider-health-connectN/AAndroid Health Connect
Umbrellacom.vitalera:sdk-androidVitaleraSdkAll providers included

Quick Start

// 1. Initialize SDK with DPoP auth
val sdk = VitaleraSdk.builder()
.clientId("your-org-license-key")
.addProvider("omron")
.addProvider("polar")
.connectedMode(true)
.build()

// 2. Discover devices
val filter = DiscoveryFilter(
capabilities = setOf(DeviceCapability.BLOOD_PRESSURE)
)
sdk.devices.discover(filter, timeoutMs = 15_000L).collect { descriptor ->
println("Found: ${descriptor.name} (${descriptor.provider})")
}

// 3. Connect and collect typed observations
val device = sdk.devices.createDevice(descriptor)
device.connect()
device.collect().collect { observation ->
when (observation) {
is BloodPressureObservation ->
println("BP: ${observation.systolic}/${observation.diastolic}")
is HeartRateObservation ->
println("HR: ${observation.heartRate} bpm")
}
}
device.disconnect()

// 4. Cleanup
sdk.close()

Getting Started

Support

Contact sdk@vitalera.com for license keys or technical support.