Supported Platforms & Provider Integrations
4 of 7Connect leading wearable and IoT platforms using their native frameworks, provider APIs and standard protocols, then normalize incoming data through Mediloop and MSIS for consistent downstream use.
Native iOS health-data framework
Android health-data framework
Fitness and outdoor activity data
Health, fitness and wellness data
Sleep, readiness and recovery
Connected home health devices
Continuous glucose monitoring
Glucose monitoring
Activity, sleep and wellness
Custom / additional providers
| Platform | Integration model | Authorization | Historical data | Events / sync | Production notes |
|---|---|---|---|---|---|
| Apple HealthKit | On-device framework | User-granted app permissions | Subject to device/app data available locally | App/background synchronization | No generic OAuth/REST cloud contract; use Apple platform APIs |
| Android Health Connect | On-device framework | Android runtime/user permissions | Subject to platform data availability | App/background synchronization | Use Health Connect APIs and permission model |
| Garmin Connect | Provider cloud | Provider program + OAuth flow | Provider-dependent | API/webhook/provider sync | Access and limits depend on Garmin program |
| Fitbit | Provider cloud | OAuth 2.x | Provider-dependent | API/subscriptions where available | Respect scopes, quota and provider terms |
| Oura | Provider cloud | OAuth 2.x | Provider-dependent | API/webhook capabilities vary by program/version | Verify current provider contract |
| Withings | Provider cloud | OAuth 2.x | Provider-dependent | API/notifications where available | Verify medical-device and regional context |
| Data domain | Examples | FHIR target |
|---|---|---|
| Activity | Steps, distance, active energy, workouts | Observation |
| Vitals | Heart rate, SpO₂, BP, temperature, respiratory rate | Observation |
| Sleep | Duration, stages, sleep score | Observation / component model |
| Metabolic | Glucose, time-in-range and trends | Observation |
| Body metrics | Weight, BMI, body composition | Observation |
| Device metadata | Model, manufacturer, connection/source | Device / DeviceMetric / Provenance |
Track provider cursors/timestamps and ingest only new/changed records.
Use provider events/webhooks where supported, then retrieve authoritative data if required.
Import historical windows deliberately with rate-limit and deduplication controls.
Queue local data and upload safely when connectivity returns.
| Surface | Operation / resource | Use | Status |
|---|---|---|---|
| HealthKit | HKHealthStore queries / samples / permissions | iOS health-data integration | External platform API |
| Health Connect | Android records / permissions / changes | Android health-data integration | External platform API |
| Provider cloud APIs | Provider-specific OAuth + REST/webhooks | Garmin, Fitbit, Oura, Withings, CGM and similar | External provider API |
| FHIR | Observation / Device / DeviceMetric / Provenance | Normalized Mediloop/EHR data exchange | FHIR surface |
| Mediloop provider adapter SDK | OAuth handlers, sync cursors, mapping, webhook handlers | Reusable provider connectors | SDK contract evolving |
| Mediloop Wearables API | Provider connections / observations façade | Simplified app integration | Planned contract |
// Illustrative adapter example — provider contract must be verified
const connection = await wearables.providers.authorize({
provider: 'oura',
redirectUri: 'https://app.example.com/callback',
scopes: ['sleep:read', 'activity:read'],
});
const batch = await wearables.providers.sync({
connectionId: connection.id,
since: lastCursor,
});
await wearables.ingest.normalize(batch, {
patientId,
preserveSource: true,
});| Symptom | Likely cause | Action |
|---|---|---|
| No new data | Permissions revoked, sync cursor stale or provider delay | Check connection status, scopes, cursors and provider health |
| Duplicates | Overlapping mobile/cloud sources or replayed webhook | Deduplicate on provider/source identifiers and provenance |
| Wrong units | Provider-native unit not normalized | Preserve source unit and apply validated UCUM mapping |
| Token failures | Expired/revoked provider authorization | Refresh or re-authorize according to provider flow |
| Gaps in time series | Device offline, app background limits or provider latency | Expose gaps; do not fabricate missing measurements |