updated with new file names
This commit is contained in:
parent
f5421a1f21
commit
0ea742df99
68
README.md
68
README.md
@ -9,6 +9,7 @@
|
|||||||
VitalLink is an intelligent ER patient monitoring system that uses smart wristbands to continuously track patient vital signs and automatically prioritize care based on real-time health data. The system supports both physical BLE wristbands and simulated devices for testing and demonstration.
|
VitalLink is an intelligent ER patient monitoring system that uses smart wristbands to continuously track patient vital signs and automatically prioritize care based on real-time health data. The system supports both physical BLE wristbands and simulated devices for testing and demonstration.
|
||||||
|
|
||||||
### Key Features
|
### Key Features
|
||||||
|
|
||||||
- ✅ **Real-time vital sign monitoring** (Heart Rate, SpO₂, Temperature, Activity)
|
- ✅ **Real-time vital sign monitoring** (Heart Rate, SpO₂, Temperature, Activity)
|
||||||
- ✅ **Automatic patient prioritization** based on condition severity
|
- ✅ **Automatic patient prioritization** based on condition severity
|
||||||
- ✅ **Three-tier alert system** (Normal, Alert, Emergency)
|
- ✅ **Three-tier alert system** (Normal, Alert, Emergency)
|
||||||
@ -21,6 +22,7 @@ VitalLink is an intelligent ER patient monitoring system that uses smart wristba
|
|||||||
---
|
---
|
||||||
|
|
||||||
## 📁 Project Structure
|
## 📁 Project Structure
|
||||||
|
|
||||||
```
|
```
|
||||||
vitallink/
|
vitallink/
|
||||||
├── backend/ # Backend API Server
|
├── backend/ # Backend API Server
|
||||||
@ -59,7 +61,7 @@ vitallink/
|
|||||||
│
|
│
|
||||||
├── .venv/ # Python virtual environment (UV)
|
├── .venv/ # Python virtual environment (UV)
|
||||||
├── requirements.txt # Python dependencies
|
├── requirements.txt # Python dependencies
|
||||||
├── start_everything.sh # Master startup script
|
├── link-start.sh # Master startup script
|
||||||
├── stop_everything.sh # Master shutdown script
|
├── stop_everything.sh # Master shutdown script
|
||||||
└── README.md # This file
|
└── README.md # This file
|
||||||
```
|
```
|
||||||
@ -67,6 +69,7 @@ vitallink/
|
|||||||
---
|
---
|
||||||
|
|
||||||
## 🔄 System Architecture & Data Flow
|
## 🔄 System Architecture & Data Flow
|
||||||
|
|
||||||
```
|
```
|
||||||
┌─────────────────────────────────────────────────────────────────┐
|
┌─────────────────────────────────────────────────────────────────┐
|
||||||
│ PATIENT CHECK-IN FLOW │
|
│ PATIENT CHECK-IN FLOW │
|
||||||
@ -119,9 +122,11 @@ vitallink/
|
|||||||
### Backend (`backend/`)
|
### Backend (`backend/`)
|
||||||
|
|
||||||
#### `server.py`
|
#### `server.py`
|
||||||
|
|
||||||
**Purpose:** Core backend API server
|
**Purpose:** Core backend API server
|
||||||
**Technology:** FastAPI + Uvicorn
|
**Technology:** FastAPI + Uvicorn
|
||||||
**Key Functions:**
|
**Key Functions:**
|
||||||
|
|
||||||
- Patient registration and management
|
- Patient registration and management
|
||||||
- Vital signs data ingestion and storage
|
- Vital signs data ingestion and storage
|
||||||
- Priority queue calculation algorithm
|
- Priority queue calculation algorithm
|
||||||
@ -129,6 +134,7 @@ vitallink/
|
|||||||
- RESTful API endpoints for all operations
|
- RESTful API endpoints for all operations
|
||||||
|
|
||||||
**Main Endpoints:**
|
**Main Endpoints:**
|
||||||
|
|
||||||
- `POST /api/checkin` - Register new patient
|
- `POST /api/checkin` - Register new patient
|
||||||
- `POST /api/vitals` - Receive vital signs data
|
- `POST /api/vitals` - Receive vital signs data
|
||||||
- `GET /api/queue` - Get prioritized patient queue
|
- `GET /api/queue` - Get prioritized patient queue
|
||||||
@ -142,9 +148,11 @@ vitallink/
|
|||||||
### Wristband System (`simulator/`)
|
### Wristband System (`simulator/`)
|
||||||
|
|
||||||
#### `wristband_simulator.py`
|
#### `wristband_simulator.py`
|
||||||
|
|
||||||
**Purpose:** Original standalone wristband simulator
|
**Purpose:** Original standalone wristband simulator
|
||||||
**Technology:** Python asyncio
|
**Technology:** Python asyncio
|
||||||
**Key Functions:**
|
**Key Functions:**
|
||||||
|
|
||||||
- Generates realistic vital sign data
|
- Generates realistic vital sign data
|
||||||
- Simulates 5 patient condition profiles (stable, deteriorating, critical, etc.)
|
- Simulates 5 patient condition profiles (stable, deteriorating, critical, etc.)
|
||||||
- Creates proper 16-byte BLE packets with checksums
|
- Creates proper 16-byte BLE packets with checksums
|
||||||
@ -155,9 +163,11 @@ vitallink/
|
|||||||
---
|
---
|
||||||
|
|
||||||
#### `wristband_manager.py`
|
#### `wristband_manager.py`
|
||||||
|
|
||||||
**Purpose:** Unified wristband management system
|
**Purpose:** Unified wristband management system
|
||||||
**Technology:** Python asyncio + Bleak (for BLE)
|
**Technology:** Python asyncio + Bleak (for BLE)
|
||||||
**Key Functions:**
|
**Key Functions:**
|
||||||
|
|
||||||
- **Manages both real and simulated wristbands** with identical interface
|
- **Manages both real and simulated wristbands** with identical interface
|
||||||
- Scans for real BLE devices
|
- Scans for real BLE devices
|
||||||
- Decodes 16-byte packets according to spec
|
- Decodes 16-byte packets according to spec
|
||||||
@ -165,6 +175,7 @@ vitallink/
|
|||||||
- Auto-assigns wristbands to new patients
|
- Auto-assigns wristbands to new patients
|
||||||
|
|
||||||
**Key Classes:**
|
**Key Classes:**
|
||||||
|
|
||||||
- `BaseWristband` - Abstract interface for all wristbands
|
- `BaseWristband` - Abstract interface for all wristbands
|
||||||
- `RealWristband` - Connects to physical BLE devices
|
- `RealWristband` - Connects to physical BLE devices
|
||||||
- `SimulatedWristband` - Software simulation for testing
|
- `SimulatedWristband` - Software simulation for testing
|
||||||
@ -174,15 +185,18 @@ vitallink/
|
|||||||
---
|
---
|
||||||
|
|
||||||
#### `config_system.py`
|
#### `config_system.py`
|
||||||
|
|
||||||
**Purpose:** Configuration management and CLI tools
|
**Purpose:** Configuration management and CLI tools
|
||||||
**Technology:** Python + PyYAML
|
**Technology:** Python + PyYAML
|
||||||
**Key Functions:**
|
**Key Functions:**
|
||||||
|
|
||||||
- Loads wristband inventory from YAML config
|
- Loads wristband inventory from YAML config
|
||||||
- Command-line tools for managing wristbands
|
- Command-line tools for managing wristbands
|
||||||
- BLE device scanning and discovery
|
- BLE device scanning and discovery
|
||||||
- Add/remove wristbands without code changes
|
- Add/remove wristbands without code changes
|
||||||
|
|
||||||
**CLI Commands:**
|
**CLI Commands:**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python config_system.py --inventory # Show configured wristbands
|
python config_system.py --inventory # Show configured wristbands
|
||||||
python config_system.py --scan # Scan for real BLE devices
|
python config_system.py --scan # Scan for real BLE devices
|
||||||
@ -192,9 +206,11 @@ python config_system.py --add-simulated # Add a simulated wristband
|
|||||||
---
|
---
|
||||||
|
|
||||||
#### `main_runner.py`
|
#### `main_runner.py`
|
||||||
|
|
||||||
**Purpose:** Main system orchestrator
|
**Purpose:** Main system orchestrator
|
||||||
**Technology:** Python asyncio
|
**Technology:** Python asyncio
|
||||||
**Key Functions:**
|
**Key Functions:**
|
||||||
|
|
||||||
- **Auto-detects new patient check-ins** from backend
|
- **Auto-detects new patient check-ins** from backend
|
||||||
- **Auto-assigns wristbands** (prefers real, falls back to simulated)
|
- **Auto-assigns wristbands** (prefers real, falls back to simulated)
|
||||||
- Creates emergency simulated bands if inventory depleted
|
- Creates emergency simulated bands if inventory depleted
|
||||||
@ -206,9 +222,11 @@ python config_system.py --add-simulated # Add a simulated wristband
|
|||||||
---
|
---
|
||||||
|
|
||||||
#### `wristband_config.yaml`
|
#### `wristband_config.yaml`
|
||||||
|
|
||||||
**Purpose:** Wristband inventory configuration
|
**Purpose:** Wristband inventory configuration
|
||||||
**Technology:** YAML configuration file
|
**Technology:** YAML configuration file
|
||||||
**Structure:**
|
**Structure:**
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
backend_url: "http://localhost:8000"
|
backend_url: "http://localhost:8000"
|
||||||
auto_scan_ble: true # Scan for real bands on startup
|
auto_scan_ble: true # Scan for real bands on startup
|
||||||
@ -230,9 +248,11 @@ real_bands: # Physical BLE devices
|
|||||||
### Frontend (`frontend/`)
|
### Frontend (`frontend/`)
|
||||||
|
|
||||||
#### `dashboard/src/App.jsx`
|
#### `dashboard/src/App.jsx`
|
||||||
|
|
||||||
**Purpose:** Staff monitoring dashboard
|
**Purpose:** Staff monitoring dashboard
|
||||||
**Technology:** React + Vite + Tailwind CSS
|
**Technology:** React + Vite + Tailwind CSS
|
||||||
**Key Features:**
|
**Key Features:**
|
||||||
|
|
||||||
- **Patients Tab:**
|
- **Patients Tab:**
|
||||||
- Real-time vital signs display
|
- Real-time vital signs display
|
||||||
- Color-coded alert tiers (🟢 Normal, 🟡 Alert, 🔴 Emergency)
|
- Color-coded alert tiers (🟢 Normal, 🟡 Alert, 🔴 Emergency)
|
||||||
@ -246,30 +266,34 @@ real_bands: # Physical BLE devices
|
|||||||
- Decoded packet fields
|
- Decoded packet fields
|
||||||
- Flag visualization (emergency, alert, battery, etc.)
|
- Flag visualization (emergency, alert, battery, etc.)
|
||||||
|
|
||||||
**Port:** http://localhost:5173
|
**Port:** <http://localhost:5173>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
#### `kiosk/src/App.jsx`
|
#### `kiosk/src/App.jsx`
|
||||||
|
|
||||||
**Purpose:** Patient self-service check-in
|
**Purpose:** Patient self-service check-in
|
||||||
**Technology:** React + Vite + Tailwind CSS
|
**Technology:** React + Vite + Tailwind CSS
|
||||||
**Key Features:**
|
**Key Features:**
|
||||||
|
|
||||||
- User-friendly check-in wizard
|
- User-friendly check-in wizard
|
||||||
- Symptom selection
|
- Symptom selection
|
||||||
- Severity rating
|
- Severity rating
|
||||||
- Wristband assignment confirmation
|
- Wristband assignment confirmation
|
||||||
- Next steps guidance
|
- Next steps guidance
|
||||||
|
|
||||||
**Port:** http://localhost:5174
|
**Port:** <http://localhost:5174>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Tests (`tests/`)
|
### Tests (`tests/`)
|
||||||
|
|
||||||
#### `test_suite.py`
|
#### `test_suite.py`
|
||||||
|
|
||||||
**Purpose:** Comprehensive system testing
|
**Purpose:** Comprehensive system testing
|
||||||
**Technology:** Python asyncio
|
**Technology:** Python asyncio
|
||||||
**Test Coverage:**
|
**Test Coverage:**
|
||||||
|
|
||||||
- Patient data validation
|
- Patient data validation
|
||||||
- Packet generation and checksums
|
- Packet generation and checksums
|
||||||
- Tier classification logic
|
- Tier classification logic
|
||||||
@ -284,9 +308,11 @@ real_bands: # Physical BLE devices
|
|||||||
|
|
||||||
### Scripts
|
### Scripts
|
||||||
|
|
||||||
#### `start_everything.sh`
|
#### `link-start.sh`
|
||||||
|
|
||||||
**Purpose:** Master startup script - **ONE COMMAND TO START ENTIRE SYSTEM**
|
**Purpose:** Master startup script - **ONE COMMAND TO START ENTIRE SYSTEM**
|
||||||
**What it does:**
|
**What it does:**
|
||||||
|
|
||||||
1. ✅ Activates Python virtual environment
|
1. ✅ Activates Python virtual environment
|
||||||
2. ✅ Starts backend API server (port 8000)
|
2. ✅ Starts backend API server (port 8000)
|
||||||
3. ✅ Starts wristband management system
|
3. ✅ Starts wristband management system
|
||||||
@ -299,8 +325,10 @@ real_bands: # Physical BLE devices
|
|||||||
---
|
---
|
||||||
|
|
||||||
#### `stop_everything.sh`
|
#### `stop_everything.sh`
|
||||||
|
|
||||||
**Purpose:** Clean shutdown of all services
|
**Purpose:** Clean shutdown of all services
|
||||||
**What it does:**
|
**What it does:**
|
||||||
|
|
||||||
1. Stops backend server
|
1. Stops backend server
|
||||||
2. Stops wristband system
|
2. Stops wristband system
|
||||||
3. Stops frontend dev servers
|
3. Stops frontend dev servers
|
||||||
@ -313,6 +341,7 @@ real_bands: # Physical BLE devices
|
|||||||
## 🔗 How Components Connect
|
## 🔗 How Components Connect
|
||||||
|
|
||||||
### 1. Patient Check-In Flow
|
### 1. Patient Check-In Flow
|
||||||
|
|
||||||
```
|
```
|
||||||
Kiosk (React)
|
Kiosk (React)
|
||||||
→ POST /api/checkin
|
→ POST /api/checkin
|
||||||
@ -323,6 +352,7 @@ Kiosk (React)
|
|||||||
```
|
```
|
||||||
|
|
||||||
### 2. Vital Signs Data Flow
|
### 2. Vital Signs Data Flow
|
||||||
|
|
||||||
```
|
```
|
||||||
Wristband (Real or Simulated)
|
Wristband (Real or Simulated)
|
||||||
→ Generates 16-byte BLE packet
|
→ Generates 16-byte BLE packet
|
||||||
@ -334,6 +364,7 @@ Wristband (Real or Simulated)
|
|||||||
```
|
```
|
||||||
|
|
||||||
### 3. Priority Queue Flow
|
### 3. Priority Queue Flow
|
||||||
|
|
||||||
```
|
```
|
||||||
Backend calculates priority scores every 3 seconds based on:
|
Backend calculates priority scores every 3 seconds based on:
|
||||||
- Tier (Emergency=100, Alert=50, Normal=0)
|
- Tier (Emergency=100, Alert=50, Normal=0)
|
||||||
@ -346,6 +377,7 @@ Backend calculates priority scores every 3 seconds based on:
|
|||||||
```
|
```
|
||||||
|
|
||||||
### 4. Wristband Inventory Flow
|
### 4. Wristband Inventory Flow
|
||||||
|
|
||||||
```
|
```
|
||||||
Main Runner reports inventory every 10 seconds:
|
Main Runner reports inventory every 10 seconds:
|
||||||
→ POST /api/wristband-details (full inventory + packet data)
|
→ POST /api/wristband-details (full inventory + packet data)
|
||||||
@ -376,22 +408,26 @@ Main Runner reports inventory every 10 seconds:
|
|||||||
## 🚀 Quick Start
|
## 🚀 Quick Start
|
||||||
|
|
||||||
### 1. Start Everything
|
### 1. Start Everything
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./start_everything.sh
|
./start_everything.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Access Interfaces
|
### 2. Access Interfaces
|
||||||
- **Staff Dashboard:** http://localhost:5173
|
|
||||||
- **Check-in Kiosk:** http://localhost:5174
|
- **Staff Dashboard:** <http://localhost:5173>
|
||||||
- **API Documentation:** http://localhost:8000/docs
|
- **Check-in Kiosk:** <http://localhost:5174>
|
||||||
|
- **API Documentation:** <http://localhost:8000/docs>
|
||||||
|
|
||||||
### 3. Test the System
|
### 3. Test the System
|
||||||
|
|
||||||
1. Open kiosk, check in a patient
|
1. Open kiosk, check in a patient
|
||||||
2. Watch dashboard - patient appears with assigned wristband
|
2. Watch dashboard - patient appears with assigned wristband
|
||||||
3. Click "Wristbands" tab to see inventory
|
3. Click "Wristbands" tab to see inventory
|
||||||
4. Click any wristband to view raw packet data
|
4. Click any wristband to view raw packet data
|
||||||
|
|
||||||
### 4. Stop Everything
|
### 4. Stop Everything
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./stop_everything.sh
|
./stop_everything.sh
|
||||||
```
|
```
|
||||||
@ -401,7 +437,9 @@ Main Runner reports inventory every 10 seconds:
|
|||||||
## 🔧 Configuration
|
## 🔧 Configuration
|
||||||
|
|
||||||
### Adding Simulated Wristbands
|
### Adding Simulated Wristbands
|
||||||
|
|
||||||
Edit `simulator/wristband_config.yaml`:
|
Edit `simulator/wristband_config.yaml`:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
simulated_bands:
|
simulated_bands:
|
||||||
- band_id: "MOCK-SIM4"
|
- band_id: "MOCK-SIM4"
|
||||||
@ -409,11 +447,15 @@ simulated_bands:
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Adding Real Wristbands
|
### Adding Real Wristbands
|
||||||
|
|
||||||
1. Scan for devices:
|
1. Scan for devices:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python simulator/config_system.py --scan
|
python simulator/config_system.py --scan
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Add to config when prompted, or manually:
|
2. Add to config when prompted, or manually:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
real_bands:
|
real_bands:
|
||||||
- band_id: "VitalLink-A3B2"
|
- band_id: "VitalLink-A3B2"
|
||||||
@ -421,6 +463,7 @@ simulated_bands:
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Changing Priority Preferences
|
### Changing Priority Preferences
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
prefer_real_bands: true # Use real bands first
|
prefer_real_bands: true # Use real bands first
|
||||||
auto_scan_ble: true # Scan on startup
|
auto_scan_ble: true # Scan on startup
|
||||||
@ -446,6 +489,7 @@ VitalLink wristbands transmit 16-byte packets over BLE:
|
|||||||
| 15 | Reserved | uint8 | Future use |
|
| 15 | Reserved | uint8 | Future use |
|
||||||
|
|
||||||
**Example Packet:**
|
**Example Packet:**
|
||||||
|
|
||||||
```
|
```
|
||||||
01 2A 00 87 D6 12 00 02 4E 61 3D 0E B4 00 BA 00
|
01 2A 00 87 D6 12 00 02 4E 61 3D 0E B4 00 BA 00
|
||||||
```
|
```
|
||||||
@ -457,7 +501,9 @@ VitalLink wristbands transmit 16-byte packets over BLE:
|
|||||||
## 📝 Development Notes
|
## 📝 Development Notes
|
||||||
|
|
||||||
### For Hardware Integration
|
### For Hardware Integration
|
||||||
|
|
||||||
When you get physical wristbands:
|
When you get physical wristbands:
|
||||||
|
|
||||||
1. Power on wristbands (remove from charger)
|
1. Power on wristbands (remove from charger)
|
||||||
2. Run: `python simulator/config_system.py --scan`
|
2. Run: `python simulator/config_system.py --scan`
|
||||||
3. Add discovered bands to config
|
3. Add discovered bands to config
|
||||||
@ -465,12 +511,16 @@ When you get physical wristbands:
|
|||||||
5. Restart system - real bands will be used automatically!
|
5. Restart system - real bands will be used automatically!
|
||||||
|
|
||||||
### Mixed Mode Testing
|
### Mixed Mode Testing
|
||||||
|
|
||||||
You can run **1 real + 5 simulated** simultaneously:
|
You can run **1 real + 5 simulated** simultaneously:
|
||||||
|
|
||||||
- Real wristband: For actual patient (you wearing it)
|
- Real wristband: For actual patient (you wearing it)
|
||||||
- Simulated: For demo patients with various conditions
|
- Simulated: For demo patients with various conditions
|
||||||
|
|
||||||
### Packet Debugging
|
### Packet Debugging
|
||||||
|
|
||||||
View raw packets in real-time:
|
View raw packets in real-time:
|
||||||
|
|
||||||
1. Dashboard → Wristbands tab
|
1. Dashboard → Wristbands tab
|
||||||
2. Click any active wristband
|
2. Click any active wristband
|
||||||
3. See hex dump + decoded fields
|
3. See hex dump + decoded fields
|
||||||
@ -481,6 +531,7 @@ View raw packets in real-time:
|
|||||||
## 🎓 For Capstone Presentation
|
## 🎓 For Capstone Presentation
|
||||||
|
|
||||||
### Demo Flow
|
### Demo Flow
|
||||||
|
|
||||||
1. **Start system:** `./start_everything.sh`
|
1. **Start system:** `./start_everything.sh`
|
||||||
2. **Show kiosk:** Check in yourself as a patient
|
2. **Show kiosk:** Check in yourself as a patient
|
||||||
3. **Show dashboard:** You appear in queue with assigned wristband
|
3. **Show dashboard:** You appear in queue with assigned wristband
|
||||||
@ -491,6 +542,7 @@ View raw packets in real-time:
|
|||||||
8. **Show priority queue:** Emergency patients automatically moved to top
|
8. **Show priority queue:** Emergency patients automatically moved to top
|
||||||
|
|
||||||
### Key Talking Points
|
### Key Talking Points
|
||||||
|
|
||||||
- ✅ Real-time vital sign monitoring
|
- ✅ Real-time vital sign monitoring
|
||||||
- ✅ Automatic triage prioritization
|
- ✅ Automatic triage prioritization
|
||||||
- ✅ Seamless real/simulated wristband mixing
|
- ✅ Seamless real/simulated wristband mixing
|
||||||
@ -503,7 +555,7 @@ View raw packets in real-time:
|
|||||||
## 📚 Additional Resources
|
## 📚 Additional Resources
|
||||||
|
|
||||||
- **BLE Protocol Details:** See uploaded specification document
|
- **BLE Protocol Details:** See uploaded specification document
|
||||||
- **API Documentation:** http://localhost:8000/docs (when running)
|
- **API Documentation:** <http://localhost:8000/docs> (when running)
|
||||||
- **Wristband Inventory:** `python simulator/config_system.py --inventory`
|
- **Wristband Inventory:** `python simulator/config_system.py --inventory`
|
||||||
- **System Logs:** `tail -f logs/*.log`
|
- **System Logs:** `tail -f logs/*.log`
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,133 @@
|
|||||||
|
⚠️ Bleak not installed. Real wristbands disabled. Install with: pip install bleak
|
||||||
|
✓ Loaded configuration from wristband_config.yaml
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
VitalLink System Initialization
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
✓ Backend is running at http://localhost:8000
|
||||||
|
➕ Added simulated band MOCK-SIM1 (stable)
|
||||||
|
➕ Added simulated band MOCK-SIM2 (mild_anxiety)
|
||||||
|
➕ Added simulated band MOCK-SIM3 (deteriorating)
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
WRISTBAND INVENTORY
|
||||||
|
================================================================================
|
||||||
|
🟢 MOCK-SIM1 | AVAILABLE
|
||||||
|
🟢 MOCK-SIM2 | AVAILABLE
|
||||||
|
🟢 MOCK-SIM3 | AVAILABLE
|
||||||
|
================================================================================
|
||||||
|
Total: 3 | Real: 0 | Simulated: 3 | Active: 0
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
VitalLink System Running
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
✓ Monitoring for new patients from kiosk check-ins
|
||||||
|
✓ Auto-assigning wristbands (prefer real: False)
|
||||||
|
|
||||||
|
Press Ctrl+C to stop
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
|
||||||
|
🔍 Monitoring for new patient check-ins...
|
||||||
|
[Status] Active: 0 monitoring | Available: 3 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 0 monitoring | Available: 3 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 0 monitoring | Available: 3 bands | Real: 0 | Sim: 3
|
||||||
|
|
||||||
|
🆕 New patient detected: P100001 (test bbb)
|
||||||
|
✓ MOCK-SIM1 assigned to patient P100001
|
||||||
|
✓ Assigned MOCK-SIM1 (simulated)
|
||||||
|
🟢 Starting simulated wristband MOCK-SIM1 (stable)
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
|
[Status] Active: 1 monitoring | Available: 2 bands | Real: 0 | Sim: 3
|
||||||
Loading…
x
Reference in New Issue
Block a user