Remote Patient Monitoring (RPM): BLE Hub to EHR
How RPM BLE hub design, cloud transport, and FHIR normalization connect to deliver safe, HIPAA-compliant remote patient monitoring.

Contents & prerequisites
RPM System Architecture & Data Flow
A remote patient monitoring (RPM) pipeline moves a single heart-rate sample through three distinct systems — wearable sensor, BLE (Bluetooth Low Energy) hub, and EHR (electronic health record) backend — and transforms it at each hop: raw ADC counts become a calibrated physiological value, that value becomes a timestamped BLE GATT characteristic, and the characteristic becomes a FHIR (Fast Healthcare Interoperability Resources) Observation resource with coded units and provenance metadata. Losing track of any one transformation is how a correct sensor reading turns into a wrong number in a clinician's dashboard.
Three-layer model: wearable sensors, BLE hub aggregation, EHR backend
The wearable is a constrained device: a pulse oximeter, continuous glucose monitor, or ECG patch running on a coin cell or small LiPo, sampling at anywhere from 1 Hz to 250 Hz depending on modality. It cannot hold a cellular or WiFi stack — the radio and protocol overhead would exceed its power and memory budget — so it talks BLE to a hub. The hub is a gateway-class device: a dedicated plug-in unit, a repurposed tablet, or a smartphone app, with mains or large-battery power, enough RAM to buffer hours of data, and a WAN (wide-area network) radio. The EHR backend is the application-layer system: an ingestion API, a FHIR server, and the hospital's EHR instance (Epic, Cerner, or similar) that clinicians actually view. This maps directly onto the generic IoT architecture layers of perception, network, and application, and the wearable-hub-cloud split is a textbook instance of constrained, gateway, and cloud device classification — the classification isn't academic here, because each class has a hard power, compute, and connectivity ceiling that determines what processing can happen where.
Real-time vs. batch synchronization trade-offs
Real-time streaming (sub-second hub-to-cloud latency) is justified only for data that triggers an acute clinical response — arrhythmia detection, SpO2 desaturation alarms, fall detection. Everything else — daily weight, twice-daily blood pressure, periodic glucose trends — is better served by batch upload every 5–15 minutes. Streaming everything continuously burns uplink bandwidth and hub battery for no clinical benefit and increases the attack surface for data in transit. A practical design keeps two queues on the hub: a priority queue flushed immediately on threshold breach, and a bulk queue flushed on a timer or buffer-full condition.
Latency and reliability requirements for clinical data
Alarm-class vitals need hub-to-clinician latency under 60 seconds with delivery confirmation; trend-class vitals tolerate latency up to 30 minutes with eventual delivery. The reliability requirement, not the latency requirement, usually drives protocol choice: an alarm that arrives fast but silently fails to deliver is worse than one that arrives a few seconds late with a guaranteed acknowledgment, which is why alarm paths need application-layer acking, not just transport-layer delivery.
BLE Wearable-to-Hub Communication
BLE advertising, connection management, and power constraints on wearables
BLE wearables spend most of their life advertising at low duty cycle and briefly connect to transfer buffered data, because maintaining an open connection interval burns far more current than periodic advertising. A typical pattern: advertise every 1–2 seconds, connect for a 2–5 second burst every few minutes, then disconnect. Connection interval, slave latency, and supervision timeout are all negotiated parameters — check the radio's datasheet and the BLE stack's connection parameter update API for the achievable ranges on your specific chipset, since these directly set the floor on current draw and the ceiling on data freshness.
Hub selection criteria: range, throughput, number of concurrent connections
Hub BLE radio and antenna choice is a direct multiplier on how many patients one hub can serve and how forgiving the deployment is of home layout. A hub with a -95 dBm receive sensitivity and an external antenna might sustain a reliable link through two interior walls; an integrated chip antenna on a USB-stick hub often needs line-of-sight within the same room. Concurrent connection count matters for multi-sensor patients (weight scale, blood pressure cuff, pulse oximeter all pairing to one hub) and matters even more in clinic or pharmacy deployments where one hub may serve several patients' devices in sequence.
| Factor | Compact USB hub | Dedicated plug-in gateway | Smartphone-as-hub |
|---|---|---|---|
| Typical BLE range (open air) | 5–10 m | 15–30 m with external antenna | 5–10 m |
| Concurrent BLE connections | 1–3 | 4–8 | 3–5 (OS-dependent) |
| Power source | Host USB | Mains | Battery (shared with user) |
| Local buffering during outage | Minutes–hours (limited flash) | Hours–days | Hours (app storage) |
| Field serviceability | Swap unit | Swap unit | User-dependent OS updates |
Range and connection-count choices are themselves an instance of the general range/bandwidth/power/cost trade-off space that applies to any IoT gateway, and under-provisioning either one caps patient cohort size per hub and forces more expensive one-hub-per-device deployments.
Handling device dropout and re-pairing in chronic care scenarios
Chronic care patients disconnect sensors for showers, charging, and travel, so the hub firmware needs a bonded-device whitelist with automatic reconnection on advertisement match, not a manual re-pair flow. On reconnect, the hub must reconcile the sensor's internal clock drift and any locally buffered samples taken while out of range, tagging each with its original device-side timestamp rather than the hub's receipt time — conflating the two silently corrupts trend data for intermittent-wear patients.
Hub-to-Cloud Connectivity & Protocol Choice
WiFi, LTE-M, NB-IoT, and LoRaWAN trade-offs for hub uplink
WiFi minimizes latency and cost per byte but requires the patient's home network credentials and fails silently during router reboots or ISP outages; cellular IoT options remove that dependency at the cost of a recurring SIM fee.
| Option | Typical latency | Power draw (hub radio active) | Monthly cost driver | Best fit |
|---|---|---|---|---|
| WiFi | <200 ms | Moderate | None (uses patient's internet) | Home hub with reliable broadband |
| LTE-M | 300 ms–2 s | Moderate-low | Per-SIM data plan | Mobile/portable hub, no WiFi dependency |
| NB-IoT | 1.5–10 s | Low | Per-SIM, often cheaper than LTE-M | Infrequent batch vitals, deep indoor coverage |
| LoRaWAN | Seconds–minutes | Very low | Gateway infrastructure, no per-device SIM | Large campuses, not typical single-home RPM |
For alarm-class vitals, WiFi or LTE-M is the realistic choice; NB-IoT's multi-second latency and half-duplex scheduling make it unsuitable for anything time-critical, but it's a reasonable fit for twice-daily batch weight or glucose trends where cost per connected hub matters more than speed.
MQTT/CoAP vs. REST APIs for patient data transmission
MQTT (Message Queuing Telemetry Transport) over TLS with QoS 1 is the default for hub uplink because it keeps a persistent connection, supports last-will messages that flag a hub going offline, and handles intermittent connectivity better than a stateless REST call. CoAP (Constrained Application Protocol) suits NB-IoT/LoRaWAN hubs where even TCP's handshake overhead is costly. Plain REST/HTTPS is adequate for low-frequency batch uploads from a WiFi hub but requires the hub to implement its own retry-and-backoff logic since there's no broker holding undelivered messages.
Security and encryption at hub level before cloud upload
Patient vitals must be encrypted before they leave the hub's RAM, not just in transit, because the hub itself may be physically accessible in a home. TLS 1.2 or higher for the uplink is table stakes; the data payload should also carry application-layer encryption (AES-256-GCM) keyed per-device, so that a compromised TLS terminator at any intermediate proxy doesn't expose raw vitals. Device identity should use mutual TLS or a hardware-backed key (secure element or TrustZone) rather than a static API key baked into firmware.
EHR Integration & Data Normalization
FHIR standards mapping for vital signs, observations, and device data
Every discrete vital sign becomes a FHIR Observation resource, with the sensor itself represented as a Device resource referenced via Observation.device:
{
"resourceType": "Observation",
"status": "final",
"code": {
"coding": [{
"system": "http://loinc.org",
"code": "59408-5",
"display": "Oxygen saturation in Arterial blood by Pulse oximetry"
}]
},
"subject": { "reference": "Patient/example-123" },
"device": { "reference": "Device/pulse-ox-hub-07" },
"effectiveDateTime": "2024-03-14T18:22:05Z",
"valueQuantity": {
"value": 96,
"unit": "%",
"system": "http://unitsofmeasure.org",
"code": "%"
}
}
LOINC (Logical Observation Identifiers Names and Codes) supplies the code, UCUM (Unified Code for Units of Measure) supplies the unit, and effectiveDateTime must carry the device-side capture time, not the cloud ingestion time. This mapping work is exactly where the industry's interoperability standards gap and fragmentation shows up in practice: two pulse oximeter vendors can both claim "FHIR support" while using different LOINC codes or unit conventions for the same measurement, and the integration engine has to reconcile that before the EHR will accept it.
HL7 v2 and v3 compatibility layers in legacy EHR systems
Many hospital EHR instances still ingest HL7 v2 ORU (Observation Result) messages over an interface engine rather than accepting FHIR directly, so the RPM backend commonly runs a FHIR-to-HL7v2 translation layer: the cloud platform generates native FHIR for modern APIs and consuming analytics, then converts to pipe-delimited ORU^R01 segments for the legacy interface engine. HL7 v3's XML-based CDA (Clinical Document Architecture) shows up mainly for discharge-summary-style documents, not discrete streaming vitals, so it rarely needs direct support in the hub-to-cloud path.
Timestamp synchronization and data provenance auditing
Every Observation needs three timestamps preserved end to end: device capture time, hub receipt time, and cloud ingestion time, because clock drift on an unsynchronized wearable can be hours off after months of use. The hub should synchronize its own clock via NTP (Network Time Protocol) on every uplink and stamp each BLE-received sample with both its own corrected time and the sensor's uncorrected internal counter, so downstream auditing can reconstruct what actually happened if a clinical question arises about when a reading was taken versus when it arrived.
Edge Processing & Regulatory Compliance
Local anomaly detection on hub to reduce false alarms
Running a simple threshold-and-debounce filter on the hub — for example, requiring three consecutive SpO2 readings below 90% within 30 seconds before raising an alarm — cuts single-sample artifact alarms (motion, poor sensor contact) without adding cloud round-trip latency to the decision. This local filtering reduces alert fatigue for the clinical team but must be designed conservatively: the hub should err toward forwarding ambiguous events for cloud/clinician review rather than suppressing them outright, since false negatives carry far higher clinical risk than false positives.
HIPAA encryption, access control, and audit logging requirements
HIPAA (Health Insurance Portability and Accountability Act) requires encryption of protected health information at rest and in transit, role-based access control on who can view which patient's data, and an immutable audit log of every access and modification. On the hub, this means local storage encryption (not just cloud-side), a unique device identity per patient rather than a shared provisioning key, and log retention of connection and data-access events even before the cloud link is established, since an auditor may need to reconstruct offline-period activity.
510(k) and CE mark considerations for clinical-grade systems
If the hub or its software performs any diagnostic or alarm-triggering function — not just passive data relay — it likely qualifies as a medical device requiring FDA 510(k) clearance in the US or a CE mark under the EU MDR (Medical Device Regulation), and that classification determines how much the firmware can change after clearance: an anomaly-detection threshold or alarm algorithm bundled into a cleared device typically can't be silently updated over the air without a regulatory change-control process. A hub that only forwards raw vitals for cloud-side analysis has a lighter regulatory path than one making local clinical decisions, which is a real architectural trade-off, not just a compliance checkbox — pushing more intelligence to the edge improves latency and reduces cloud dependency but increases regulatory burden on every firmware update.
Deployment Patterns & Case Study
Hub placement: patient home, clinic, or pharmacy model
Home placement maximizes monitoring frequency and catches daily variability but depends on the patient's WiFi and willingness to keep the hub powered and in range; clinic placement guarantees connectivity and technical support but reduces sampling to visit frequency; a pharmacy kiosk model sits between the two, offering supervised setup and periodic check-ins without requiring in-home infrastructure. A congestive heart failure program, for instance, typically needs home placement because daily weight trend is the clinically meaningful signal, while a post-op wound-check program can tolerate clinic-based BLE scale readings taken weekly.
Handling multi-tenant environments and device roaming
A single hub in a clinic or pharmacy may serve multiple patients' devices across a day, which requires the hub to maintain a time-boxed pairing window per patient session and purge the BLE bond list after each session to prevent cross-patient data bleed — a failure mode unique to shared-hub deployments that home-hub architectures never encounter.
Network resilience: offline buffering and eventual consistency
Hubs must buffer locally during WAN outages and reconcile on reconnect using idempotent writes keyed by device ID and sample timestamp, so a retried upload after a dropped connection doesn't create duplicate Observations in the EHR. Sizing the local buffer — typically enough flash for 24–72 hours of the highest-frequency sensor on the hub — is a capacity-planning exercise worth doing explicitly for each supported sensor type rather than assuming one buffer size fits a pulse oximeter streaming at 1 Hz and a weight scale reporting twice daily.
Learning
Sign in to track your progress.
Evidence
Public projects engineers linked to Remote Patient Monitoring (RPM): BLE Hub to EHR.
No engineer has linked a project to this topic yet. Built something that proves it? Add the project and tag it with iot-connectivity-remote-patient-monitoring-rpm-ble-hub-to-ehr — it then shows here and on your public profile.
