Skip to content

Commit e30d502

Browse files
committed
feat: Add sample patient monitoring poc (#1014)
1 parent 8dceb7d commit e30d502

37 files changed

Lines changed: 3467 additions & 0 deletions

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ edge-developer-kit-reference-scripts/
4444
│ ├──ai/ # AI related sample applications
4545
│ ├──camera/ # Camera hardware and configuration for MIPI and GMSL
4646
│ ├──realtime/ # TSN and TCC related applications for real time optimization
47+
| |──patient-monitoring-hub/ # Patient Monitoring Hub Reference Implementation
4748
├── docs/ # Documentation and guides
4849
├── main_installer.sh # Main platform setup installer
4950
├── gpu_installer.sh # GPU driver installer

docs/use-cases.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ Transform your Intel® hardware into powerful AI and edge computing solutions wi
2222
| [**📄 Visual & Textual Query-driven Document Reasoning Engine**](../usecases/ai/visual-textual-query-driven-document-reasoning-engine/README.md) | Document Search & Retrieval Engine | ⏱️ 30 min | Document embedding, VLM |
2323
| [**🎬 VLM Video Summarization and Interactive Chat**](../usecases/ai/vlm-video-summarization-and-interactive-chat/README.md) | AI video analysis with interactive chat | ⏱️ 30 min | VLM, vector embeddings, semantic search |
2424
| [**🤖 Manufacturing HMI with LLM & GenAI**](../usecases/ai/manufacturing-hmi-llm-genai/README.md) | Manufacturing Defect Detection Agent | ⏱️ 90 min | Robotics, Object Detection, LLM, RAG |
25+
| [**🏥 Patient Monitoring Hub POC**](../samples/patient-monitoring-hub/README.md) | Virtualized patient telemetry pipeline | ⏱️ 60 min | MQTT\*, InfluxDB\*, Proxmox\* networking |
2526

2627
### 🔴 **Advanced** _(Experienced Developers)_
2728

@@ -51,6 +52,7 @@ Transform your Intel® hardware into powerful AI and edge computing solutions wi
5152

5253
- **Knowledge Management:** [RAG Toolkit](../usecases/ai/rag-toolkit/README.md)
5354
- **Smart Infrastructure:** [Smart Parking](../usecases/ai/smart-parking/README.md)
55+
- **Healthcare Monitoring:** [Patient Monitoring Hub POC](../samples/patient-monitoring-hub/README.md)
5456
- **Real-Time Systems:** [TCC Tutorial](../usecases/real-time/tcc_tutorial/README.md)
5557

5658
### 🔧 **Platform & Framework**
@@ -74,6 +76,7 @@ Transform your Intel® hardware into powerful AI and edge computing solutions wi
7476
4. Implement [Smart Parking](../usecases/ai/smart-parking/README.md) - IoT + AI integration
7577
5. Master [Real-Time Computing](../usecases/real-time/tcc_tutorial/README.md) - Performance optimization
7678
6. Explore [Manufacturing HMI with LLM & GenAI](../usecases/ai/manufacturing-hmi-llm-genai/README.md) - Agentic AI
79+
7. Explore [Patient Monitoring Hub POC](../samples/patient-monitoring-hub/README.md) - Virtualized healthcare telemetry pipeline
7780

7881
### **🔬 For Researchers**
7982

@@ -131,3 +134,4 @@ Transform your Intel® hardware into powerful AI and edge computing solutions wi
131134
11. [Visual & Textual Query-driven Document Reasoning Engine](../usecases/ai/visual-textual-query-driven-document-reasoning-engine/README.md)
132135
12. [LLM Database Query using Intel AI Assistant Builder](../usecases/ai/llm_dbquery/README.md)
133136
13. [Manufacturing HMI with LLM & GenAI](../usecases/ai/manufacturing-hmi-llm-genai/README.md)
137+
14. [Patient Monitoring Hub POC](../samples/patient-monitoring-hub/README.md)

samples/SAMPLES_README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ Refer to below samples to kickstart you own demo or application.
3333
- [MIPI and GMSL Setup Tutorial](./camera/README.md)
3434
- **Real-Time**
3535
- [TCC Tutorial](./real-time/tcc_tutorial/README.md)
36+
- **Patient-Monitoring-Hub Reference Implementation**
37+
- [Patient-Monitoring-Hub Reference Implementation](./patient-monitoring-hub/README.md)
3638

3739
### Documentation
3840
- [Getting Started](../docs/getting-started.md)
Lines changed: 268 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,268 @@
1+
# Patient Monitoring Hub – Reference Implementation
2+
3+
## Table of Contents
4+
- [Overview](#overview)
5+
- [Demo](#demo)
6+
- [Architecture](#architecture)
7+
- [High-Level Components](#high-level-components)
8+
- [Proxmox Host](#proxmox-host)
9+
- [OpenWRT VM](#openwrt-vm)
10+
- [Monitoring Hub](#monitoring-hub)
11+
- [Patient Monitoring Devices](#patient-monitoring-devices)
12+
- [Wired Devices](#wired-devices)
13+
- [Wireless Devices](#wireless-devices)
14+
- [Central Monitoring System Server](#central-monitoring-system-server)
15+
- [Data Flow](#data-flow)
16+
- [Downstream (Patient Monitoring Devices → Monitoring Hub)](#downstream-patient-monitoring-devices--monitoring-hub)
17+
- [Upstream (Monitoring Hub → Central Monitoring System Server)](#upstream-monitoring-hub--central-monitoring-system-server)
18+
- [Validated Hardware and Benchmark Results](#validated-hardware-and-benchmark-results)
19+
- [Validated System Components](#validated-system-components)
20+
- [Network Components](#network-components)
21+
- [Latency Benchmark Summary](#latency-benchmark-summary)
22+
- [Get Started](#get-started)
23+
- [Known Limitations](#known-limitations)
24+
25+
---
26+
27+
## Overview
28+
29+
> **Ready to deploy?** Jump directly to [Get Started](#get-started)
30+
31+
The Patient Monitoring Hub is a **virtualized edge solution** designed to collect, process, and forward patient vital signs from monitoring devices to backend systems and nurses station dashboards.
32+
33+
This solution demonstrates:
34+
- Real-time patient data ingestion from connected devices
35+
- Edge-based processing and aggregation
36+
- Upstream data forwarding to central systems
37+
- Support for both wired and wireless device connectivity
38+
- Support for touchless sensor connectivity
39+
40+
The entire stack runs on a **Proxmox virtualized environment**, leveraging:
41+
- **OpenWRT Virtual Machine (VM)** for network routing and DHCP service
42+
- **Ubuntu LXC container** as the monitoring hub
43+
- **MQTT** messaging protocol for lightweight and fault-tolerant data streaming
44+
- **InfluxDB** database designed to handle huge volumes of continuous data stream
45+
46+
---
47+
48+
## Demo
49+
50+
![demo](./assets/demo.gif)
51+
52+
---
53+
54+
## Architecture
55+
56+
<p align="center"> <img src="./assets/Architecture_diagram.png" alt="Architecture diagram" /> <br /> <em>Architecture diagram</em> </p>
57+
58+
The system is deployed within a **single-node virtualized edge environment**.
59+
60+
### High-Level Components
61+
- **OpenWRT VM** – Network routing and DHCP services
62+
- **Monitoring Hub (Ubuntu LXC container)** – Data ingestion, processing, and forwarding
63+
- **Patient Monitoring Devices** – Wired and wireless endpoints publishing data
64+
- **Central Monitoring System Server** – Centralized database server
65+
66+
---
67+
68+
### Proxmox Host
69+
70+
The Proxmox host provides the virtualization layer and network isolation for the Patient Monitoring Hub.
71+
72+
**Network Configuration:**
73+
- `vmbr0` – WAN / NAT bridge
74+
- Subnet: `192.168.100.0/24`
75+
- Used as OpenWRT WAN interface
76+
77+
- `vmbr1` – LAN bridge
78+
- Virtual switch for local external devices (patient monitoring devices)
79+
- Subnet: `10.0.0.0/24`
80+
81+
- **USB Wireless Adapter**
82+
- Passed through to OpenWRT
83+
- Acts as a Wireless Access Point
84+
85+
- **Physical NIC (`nic0`)**
86+
- Attached to `vmbr1`
87+
- Enables external wired devices to join LAN
88+
89+
---
90+
91+
### OpenWRT VM
92+
93+
The OpenWRT virtual machine on Proxmox Host acts as the **network gateway** within the Patient Monitoring Hub.
94+
95+
**Interfaces:**
96+
- `eth0``vmbr0` (WAN)
97+
- Static IP: `192.168.100.50`
98+
- Provides upstream network access
99+
100+
- `eth1``vmbr1` (LAN)
101+
- IP: `10.0.0.1`
102+
- Default gateway for LAN devices
103+
104+
- `br-lan`
105+
- Includes USB Wi-Fi adapter
106+
- Provides Wireless Access Point functionality
107+
108+
**Key Functions:**
109+
- DHCP server for LAN (`10.0.0.0/24`)
110+
- NAT and routing to upstream network
111+
- Connectivity between isolated LAN and external network
112+
113+
---
114+
115+
### Monitoring Hub
116+
117+
The Monitoring Hub on Proxmox Host (Patient Monitoring Hub) is deployed as a **lightweight Ubuntu LXC container**.
118+
119+
**Core Services:**
120+
- MQTT broker (device message ingestion)
121+
- InfluxDB (time-series database)
122+
- Python processing service:
123+
- Consumes MQTT messages
124+
- Writes to local InfluxDB database
125+
- Forwards data to upstream server
126+
127+
**Network:**
128+
- IP assigned via DHCP (10.0.0.x)
129+
- Default gateway: OpenWRT (10.0.0.1)
130+
131+
---
132+
133+
### Patient Monitoring Devices
134+
135+
Patient Monitoring Devices are external Patient Monitors that publish vital-sign telemetry to the Monitoring Hub over MQTT. Devices connect to the local LAN either via wired Ethernet or wirelessly through the OpenWRT Access Point.
136+
137+
#### Wired Devices
138+
- Connected via physical NIC to Proxmox host
139+
- Join LAN (`10.0.0.0/24`) via `vmbr1`
140+
- Publish data directly to Monitoring Hub via MQTT
141+
142+
#### Wireless Devices
143+
- Connected via Wi-Fi AP (OpenWRT)
144+
- Join LAN (`10.0.0.0/24`)
145+
- Publish MQTT data to Monitoring Hub
146+
147+
---
148+
149+
### Central Monitoring System Server
150+
151+
The Central Monitoring System Server is a dedicated server that serves as the central data ingest and storage endpoint for patient telemetry forwarded from the Monitoring Hub.
152+
153+
**Core Services:**
154+
- InfluxDB (time-series database, running in Docker)
155+
- Receives upstream patient telemetry from the Monitoring Hub
156+
157+
**Network:**
158+
- Must be network-reachable from the Monitoring Hub
159+
- Should use the same subnet as the Proxmox host during initial setup
160+
161+
---
162+
163+
## Data Flow
164+
165+
### Downstream (Patient Monitoring Devices → Monitoring Hub)
166+
1. Devices publish data via MQTT
167+
2. Monitoring Hub receives messages
168+
3. Python service processes and stores data in InfluxDB
169+
4. Data available locally for analysis
170+
171+
### Upstream (Monitoring Hub → Central Monitoring System Server)
172+
1. Monitoring Hub sends processed data upstream
173+
2. Traffic routed via OpenWRT gateway
174+
3. OpenWRT forwards traffic to hospital network (e.g. Medical Device Network)
175+
4. Data reaches centralized database server
176+
177+
---
178+
179+
## Validated Hardware and Benchmark Results
180+
181+
### Validated System Components
182+
183+
| Component | Model | Processor | Memory | OS |
184+
|----------|------|----------|--------|----|
185+
| Patient Monitoring Hub | ASUS IoT PE2300U | Intel® Core™ Ultra 7 265U | 32GB | Debian 13 + Proxmox VE 9.1.0 |
186+
| Wired Device | ASRock iEP-7020E | Intel® Core™ i7-1370PRE | 32GB | Ubuntu 24.04 |
187+
| Wireless Device | Intel® NUC11PAHi7 | Intel® Core™ i7-1165G7 | 32GB | Ubuntu 24.04 |
188+
| Central Monitoring System Server | Intel® NUC11PAHi7 | Intel® Core™ i7-1165G7 | 64GB | Ubuntu 24.04 |
189+
| Nurses Station | Intel® NUC13RNGi9 | Intel® Core™ i9-13900K | 32GB | Ubuntu 24.04 |
190+
191+
> ASUS IoT PE2300U Ethernet driver setup: [Download Link](https://www.asus.com/networking-iot-servers/aiot-industrial-solutions/embedded-computers-edge-ai-systems/pe2300u/helpdesk_download?model2Name=PE2300U)
192+
193+
---
194+
195+
### Network Components
196+
197+
| Component | Model | Interface | Notes |
198+
|----------|------|-----------|------|
199+
| Router | Asus RT-AX86U | 1Gbps | Upstream gateway |
200+
| USB Wi-Fi Adapter | MediaTek MT7612U | USB 2.0 | AP mode supported |
201+
202+
---
203+
204+
### Latency Benchmark Summary
205+
206+
Benchmark configuration:
207+
- Duration: 120 seconds
208+
- Channel count: 1, 10, 20, 30
209+
- Default MQTT settings
210+
211+
212+
| Channel Count | Wired Patient Monitoring Device<br> to Server Latency (s) | Wireless Patient Monitoring Device<br> to Server Latency (s) |
213+
|---------------|-------------------------------|----------------------------------|
214+
| 1 | Average : 0.181 s<br> Typical (p50): 0.161 s<br> 95% of msgs ≤ : 0.354 s<br> 99% of msgs ≤ : 0.467 s | Average : 0.109 s<br> Typical (p50): 0.088 s<br> 95% of msgs ≤ : 0.184 s<br> 99% of msgs ≤ : 0.382 s |
215+
| 10 | Average : 0.128 s<br> Typical (p50): 0.123 s<br> 95% of msgs ≤ : 0.193 s<br> 99% of msgs ≤ : 0.220 s | Average : 0.113 s<br> Typical (p50): 0.079 s<br> 95% of msgs ≤ : 0.301 s<br>99% of msgs ≤ : 0.369 s |
216+
| 20 | Average : 0.215 s<br> Typical (p50): 0.205 s<br> 95% of msgs ≤ : 0.390 s<br> 99% of msgs ≤ : 0.479 s | Average : 0.211 s<br> Typical (p50): 0.107 s<br> 95% of msgs ≤ : 0.749 s<br> 99% of msgs ≤ : 1.186 s |
217+
| 30 | Average : 0.209 s<br> Typical (p50): 0.205 s<br> 95% of msgs ≤ : 0.334 s<br> 99% of msgs ≤ : 0.397 s | Average : 0.836 s<br> Typical (p50): 0.758 s<br> 95% of msgs ≤ : 1.929 s<br> 99% of msgs ≤ : 2.167 s |
218+
219+
**Key Observations:**
220+
- Stable latency under moderate load (≤20 channels)
221+
- Wireless latency increases significantly at high channel count (30)
222+
- Multi-channel testing simulates concurrent patient vital data streams
223+
224+
Latency metrics:
225+
- **Average:** Mean latency
226+
- **p50:** Median latency
227+
- **p95:** 95th percentile
228+
- **p99:** Worst-case latency
229+
230+
---
231+
232+
## Get Started
233+
234+
Follow the setup steps in sequence:
235+
236+
1) [Setup Proxmox Host](./docs/proxmox_setup.md)
237+
2) [Setup OpenWRT VM](./docs/openwrt_setup.md)
238+
3) [Setup Central Monitoring System Server](./docs/server_setup.md)
239+
4) [Setup Monitoring Hub (Ubuntu LXC)](./docs/monitoring_hub_setup.md)
240+
5) [Connect and Configure Patient Monitoring Device](./docs/patient_device.md)
241+
6) [Setup Nurses Station Dashboard](./docs/nurse_dashboard.md)
242+
7) [Run End-to-End Workflow](./docs/end_to_end_workflow.md)
243+
244+
---
245+
246+
## Known Limitations
247+
248+
This reference implementation is intended for demonstration, evaluation and benchmarking purposes. Current limitations include:
249+
250+
- **No disconnection alerts**
251+
Loss of connectivity from patient monitoring devices or hub is not detected or notified
252+
253+
- **No transport security (MQTT)**
254+
MQTT messages are transmitted in plaintext
255+
- No TLS encryption
256+
- No device authentication (mTLS)
257+
258+
- **No strict message guarantees**
259+
- Duplicate or out-of-order messages may occur
260+
- No correction or deduplication mechanisms
261+
262+
---
263+
264+
## Disclaimer
265+
266+
This solution is a **reference implementation** and is not intended for direct clinical deployment without appropriate validation, security hardening, and regulatory compliance.
267+
268+
---
825 KB
Loading
14.5 KB
Loading
22.6 KB
Loading
7.33 MB
Loading
9.63 KB
Loading
234 KB
Loading

0 commit comments

Comments
 (0)