A six-parameter patient monitor demonstration for portfolio and interview purposes.
NOT for clinical use.
Dual-process architecture simulating a real patient monitor system:
| Process | Role | Phase 1 | Phase 2 |
|---|---|---|---|
| Device | Parameter-module simulator (TCP Server) | x86 Windows + Linux | STM32 + FreeRTOS |
| Host | Monitor main application (TCP Client) | x86 Windows + Linux | AM3358 + ArmLinux + Qt6 |
| Module | Waveforms | Numerics |
|---|---|---|
| ECG | 12 leads (I, II, III, aVR, aVL, aVF, V1–V6); UI default II + V1 | HR |
| SpO2 | Pleth waveform | SpO2, PR |
| Resp | Respiratory waveform | Resp rate |
| Temp | Temperature waveform | Temp (0.1°C integer, displayed as °C) |
| NIBP | — | Sys / Mean / Dia (Host NibpRequest; manual + STAT on Host) |
- TCP + Protobuf communication (
Envelopewith mandatoryHeartbeat+ moduleoneof payload) - Cross-platform OS Abstraction Layer (Windows / Linux / FreeRTOS / ArmLinux)
- Physiological alarming (1 Hz limit check) + technical alarms from Device (M3)
- Binary file storage (no database) — simulates EEPROM/FLASH (M4)
- Qt6 Host UI at 1024×768 (M2)
- LVGL Device configuration UI — all numeric params adjustable (M2)
- Bidirectional TCP: Host sends
NibpRequestfor NIBP measure (M2) - IEC 62304-style documentation in
docs/
| Milestone | Status |
|---|---|
| M1 — CMake + OSAL + Protobuf + TCP (Device Server) | Done |
| M2 — Five module sims + Host 5-waveform UI | Planned |
| M3 — Alarms + TopBar | Planned |
M1 delivers console mini_device / mini_host with heartbeat (NullPacket) over TCP. See docs/DevSetup.md for full setup.
┌─────────────┐ TCP/Protobuf ┌─────────────┐
│ Device │ ◄────────────────── │ Host │
│ TCP Server │ (Host connects) │ TCP Client │
│ 5 Module │ │ Qt Monitor │
│ Simulators │ │ Alarms/Data │
│ LVGL Config │ │ │
└──────┬──────┘ └──────┬──────┘
│ │
└──────────► OSAL + Protobuf ◄────────┘
See docs/Architecture.md for full design.
MiniPatientMonitor/
├── build.sh # One-click configure + build
├── tools_install.sh # Linux M1 dependency installer
├── common/osal/ # OS abstraction (Windows + Linux)
├── common/proto/ # monitor.proto + frame encoder
├── device/ # TCP server (parameter simulator)
├── host/ # TCP client (monitor app)
├── docs/ # SRS, architecture, DevSetup, tests
└── .github/workflows/ # CI (planned M5)
Full prerequisites and platform-specific steps: docs/DevSetup.md
git clone https://github.com/BoydWPaine/MiniPatientMonitor.git
cd MiniPatientMonitor
./tools_install.sh # cmake, g++, git, zlib, protobuf dev
./build.sh debug # builds mini_device + mini_host./build/device/mini_device # TCP server on 127.0.0.1:5000
./build/host/mini_host # connects, receives heartbeat framesVisual Studio 2022 + Git + CMake. See DevSetup.md §4.
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Debug| Tool | M1 | M2+ | Install guide |
|---|---|---|---|
| CMake ≥ 3.20 | ✓ | DevSetup.md | |
| C++17 compiler | ✓ | ||
| Git | ✓ | ||
| Protobuf ≥ 3.21 | ✓* | *Built via CMake FetchContent | |
| Qt6 ≥ 6.5 | ✓ | DevSetup §3.2 / §4.2 | |
| LVGL + SDL2 | ✓ | DevSetup §3.3 / §4.3 | |
| Google Test ≥ 1.14 | M5 — DevSetup §3.4 |
tools_install.sh covers M1 only. Qt6, LVGL, and GTest require manual steps documented in DevSetup.
| Document | Description |
|---|---|
| DevSetup.md | Developer environment setup (Linux / Windows) |
| SRS.md | Software Requirements Specification |
| Architecture.md | System & module design |
| RiskAnalysis.md | ISO 14971-style risk table |
| TestPlan.md | Verification test cases |
| TestReport.md | Test execution report (template) |
| TraceabilityMatrix.md | Requirements ↔ tests |
Chinese planning docs:
/home/walker/Desktop/GrokBuild/Job/Embedded/Project_MiniPatientMonitor/
| Milestone | Goal | Status |
|---|---|---|
| M1 | CMake + OSAL(Win/Linux) + Protobuf + TCP (Device Server) | Done |
| M2 | Five independent module sims + Host 5-waveform UI | |
| M3 | Physiological + technical alarms | |
| M4 | Patient / data / config persistence | |
| M5 | Unit tests + CI | |
| M6 | Demo video + doc finalization |
| Milestone | Goal |
|---|---|
| M7 | FreeRTOS + STM32F407 (Device) |
| M8 | ArmLinux + AM3358 + Qt6 (Host) |
| M9 | Board-level integration + watchdog logging |
MVP target: 2026-06-30 (M1–M4 demonstrable)
This project is a software engineering portfolio demonstration. It does not provide clinically validated measurements and must not be used for patient monitoring, diagnosis, or treatment.
See LICENSE.
Jianjun (Boyd) Peng — former Mindray embedded software engineer, 17 years in medical devices.