WEARABLES & IOT CONNECTORS
Data Types, Mapping & Time-Series
5 of 7Transform raw device measurements into standardized, interoperable longitudinal health data with FHIR mapping, terminology and unit normalization, provenance, quality controls and scalable time-series handling.
Supported Data TypesMapping to FHIRTerminologies & UnitsTime-Series HandlingData Quality & ProvenanceExamples
Data Normalization Flow
1
Device Measurement
Raw value, unit, source timestamp and device/provider identifier
2
Source & Context
Capture source, patient/device link, original code/unit and connection method
3
MSIS Normalization
Validated terminology/unit mapping, deduplication and quality flags
4
FHIR Resource
Observation / Device / Provenance with normalized and original source context
5
Mediloop Platform
Longitudinal record, analytics, alerts and care workflows
Supported Data Types
| Category | Examples | FHIR resource | Typical units |
|---|---|---|---|
| Vital signs | Heart rate, BP, SpO₂, respiratory rate, temperature | Observation | /min, mmHg, %, °C |
| Activity & fitness | Steps, distance, calories, active minutes | Observation | count, km, kcal, min |
| Sleep | Stages, duration, sleep score | Observation | h/min, score |
| Glucose | CGM readings, trends, alerts | Observation | mg/dL, mmol/L |
| ECG / waveform | Single/multi-lead ECG, rhythm | Observation + attachment/derived representation | mV, Hz |
| Respiratory | Respiration rate, FEV1, FVC, peak flow | Observation | /min, L, L/s |
| Body composition | Weight, BMI, body fat, muscle mass | Observation | kg, kg/m², % |
| Device / environment | Device events, air quality, ambient sensors | Observation / DeviceMetric | domain-specific |
Mapping to FHIR
Example mapping
| Field | Source | FHIR mapping |
|---|---|---|
| Measurement | 72 bpm | Observation.valueQuantity |
| Code | Heart rate | Observation.code — e.g. validated LOINC mapping |
| Unit | bpm | UCUM code /min |
| Timestamp | Device/provider UTC timestamp | Observation.effectiveDateTime |
| Device | Provider device id | Observation.device → Device |
| Source | HealthKit / provider API / BLE | Provenance / connector metadata |
| Quality | Provider/device quality | Observation interpretation/extension or provenance metadata as designed |
FHIR Observation example
jsonCopy
{
"resourceType": "Observation",
"status": "final",
"code": {
"coding": [{
"system": "http://loinc.org",
"code": "8867-4",
"display": "Heart rate"
}]
},
"subject": { "reference": "Patient/pat_123" },
"device": { "reference": "Device/dev_456" },
"effectiveDateTime": "2026-08-31T08:00:00Z",
"valueQuantity": {
"value": 72,
"system": "http://unitsofmeasure.org",
"code": "/min"
}
}Terminologies & Units
LOINC for validated observation mappings where an appropriate code exists.
SNOMED CT for clinical concepts/device contexts where applicable.
UCUM for units of measure.
Preserve original manufacturer/provider codes and units alongside normalized mappings.
Version mappings and record provenance; do not silently replace uncertain mappings.
Support multi-mapping or unresolved-code states when no safe canonical mapping exists.
Time-Series Handling
Support high-frequency and periodic measurements with explicit sampling metadata.
Store raw/source time and normalized UTC time; keep time-zone context when relevant.
Detect missing samples, out-of-order arrivals and clock drift.
Support real-time streaming and batch ingestion with idempotent deduplication.
Separate raw data from calculated/aggregated views.
Apply configurable retention/downsampling policies appropriate to use case and governance.
Use scalable time-series storage without changing the external FHIR/API contract.
Data Quality & Provenance
Validate expected ranges, units and data types.
Detect duplicate, anomalous and implausible measurements.
Record device, provider, connection path and ingestion timestamp.
Keep original values alongside normalized values.
Maintain mapping version, transformation lineage and confidence/quality indicators.
Respect patient consent and retention policy.
Do not promote consumer-wellness data to clinical-grade status without appropriate evidence/validation.
Developer Integration Surface
| Surface | Operation / resource | Use | Status |
|---|---|---|---|
| FHIR | Observation / Device / DeviceMetric / Provenance | Normalized longitudinal data exchange | FHIR surface |
| Bulk / streaming ingestion | Batch samples, MQTT/webhook events, local gateway upload | High-volume time-series ingestion | Mediloop contract planned |
| Query API | Patient/device/date/code filters and pagination | Application access to normalized measurements | Mediloop contract planned |
| Events | measurement.created, device.status.changed, data.gap.detected | Real-time workflows and monitoring | Planned event contract |
| SDK | ingest(), observations.list(), devices.get() | Type-safe developer convenience surface | SDK contract evolving |
Examples
Illustrative time-series query
httpCopy
GET /v1/observations?patient_id=pat_123&code=8867-4&from=2026-08-01T00:00:00Z&to=2026-08-31T23:59:59Z
Authorization: Bearer <token>
X-Tenant-Id: <tenant-id>
# Planned Mediloop REST façade; FHIR search remains the standards surface.Illustrative ingestion
typescriptCopy
await client.wearables.ingest({
patientId: 'pat_123',
deviceId: 'dev_456',
measurements: [{
sourceCode: 'heart_rate',
value: 72,
unit: 'bpm',
observedAt: '2026-08-31T08:00:00Z'
}],
preserveSource: true,
});Next Steps
1
Implement mappings
Target devices/providers, FHIR resources and terminology
2
Configure time series
Sampling, retention, aggregation and query patterns
3
Set quality rules
Ranges, gaps, duplicates, provenance and data classification
4
Test real data
Device clocks, missing data, provider delays and edge cases
5
Connect workflows
Patient dashboards, RPM, alerts and EHR interoperability