Real-Time Monitoring Dashboard
The Vantrexia dashboard is the central command center for your remote patient monitoring operation. It provides a unified view of system health, patient vital signs, clinical KPIs, and operational metrics — all updating in real time without requiring a page refresh.
The dashboard automatically adapts its layout and visible data based on the logged-in user's role. Administrators see the full system view, while clinicians, staff, and billing users see role-appropriate sections. See Role-Based Views below for details.
System Health Cards
The top of the dashboard displays four system health indicator cards that provide instant visibility into the operational status of core platform services. Each card shows a status badge, response latency, and last-check timestamp.
| Service | What It Monitors | Healthy Threshold | Check Frequency |
|---|---|---|---|
| Database | PostgreSQL connection pool, query latency, replication lag | Response < 100ms | Every 10 seconds |
| eClinicalWorks | FHIR API connectivity, JWT token validity, sync status | Response < 2000ms | Every 10 seconds |
| Celery | Worker availability, queue depth, task success rate | Workers > 0, Queue < 100 | Every 10 seconds |
| FHIR Engine | FHIR R4 resource validation, serialization performance | Response < 500ms | Every 10 seconds |
Each card uses a three-state color system:
- Healthy — Service responding within acceptable thresholds
- Degraded — Service responding but with elevated latency or partial errors
- Down — Service unreachable or returning persistent errors
System health data is also available programmatically at GET /health/. This endpoint does not require authentication and can be used by external monitoring tools like Datadog or PagerDuty.
Real-Time KPIs
Below the health cards, the dashboard displays key performance indicators that summarize the current state of your RPM program. These metrics update every 30 seconds via WebSocket or polling fallback.
| KPI | Description | Calculation |
|---|---|---|
| Patients Monitored | Active patients with at least one connected device | Count of patients with active=True and device_count > 0 |
| Vital Alerts | Unacknowledged alerts from threshold breaches | Count of alerts where acknowledged=False |
| Transmission Rate | Percentage of expected daily device transmissions received | (received_today / expected_today) × 100 |
| Compliance Rate | Patients meeting the 16-day/month transmission requirement for CPT 99454 | (compliant_patients / total_active) × 100 |
| Avg Processing Time | Mean time from device reading receipt to database storage | Rolling 1-hour average of observation processing latency |
| Monthly Revenue | Total billable amount for the current calendar month | Sum of all billing records with service_date in current month |
GET /api/v1/dashboard/stats/
{
"patients_monitored": 847,
"vital_alerts": 12,
"transmission_rate": 94.2,
"compliance_rate": 87.5,
"avg_processing_time_ms": 145,
"monthly_revenue": 38420.50,
"last_updated": "2026-02-06T14:30:00Z"
}
Quick Actions Panel
The quick actions panel provides one-click access to the most frequently used operations. Actions adapt based on the user's role and current system state.
| Action | Description | Available To |
|---|---|---|
| Add Patient | Opens the patient creation form with FHIR-compliant fields | Admin, Clinician, Staff |
| Import from eCW | Triggers a sync with eClinicalWorks to import or update patient records | Admin, Staff |
| View Triage Queue | Navigates to the triage dashboard filtered to critical and warning patients | Admin, Clinician |
| Run Billing | Manually triggers the smart billing engine (normally automatic every 4 hours) | Admin, Billing |
| Export Reports | Opens the report generation interface for CSV/PDF export | Admin, Billing |
| System Settings | Quick link to platform configuration (thresholds, integrations, users) | Admin |
Activity Feed
The activity feed displays a chronological stream of platform events, giving clinical and administrative staff visibility into what is happening across the system. Events are filtered by relevance to the user's role.
The feed includes the following event types:
- Patient Events: New patient enrolled, patient imported from eCW, patient archived
- Clinical Events: Vital alert triggered, alert acknowledged, escalation created, threshold changed
- Billing Events: Claim generated, claim submitted, claim paid, claim denied
- System Events: eCW sync completed, billing engine run completed, system health change
- User Events: User login, role change, password reset
GET /api/v1/dashboard/stats/?limit=5
{
"results": [
{
"id": "evt_20260206_001",
"type": "vital_alert",
"message": "Blood pressure alert for patient #1042 — systolic 182 mmHg",
"severity": "critical",
"timestamp": "2026-02-06T14:28:12Z",
"user": null
},
{
"id": "evt_20260206_002",
"type": "billing",
"message": "CPT 99454 claim generated for 234 patients",
"severity": "info",
"timestamp": "2026-02-06T02:00:45Z",
"user": "system"
},
{
"id": "evt_20260206_003",
"type": "ecw_sync",
"message": "Delta sync completed — 12 patients updated, 3 new",
"severity": "info",
"timestamp": "2026-02-06T01:00:00Z",
"user": "system"
}
]
}
Performance Charts
The dashboard includes three interactive charts that visualize operational trends. Charts are rendered using Chart.js and update automatically at the configured refresh interval.
Transmission Rate Chart
Displays the daily device transmission success rate over the past 30 days. The chart overlays the actual rate against the target threshold (typically 85%) and highlights days where the rate dropped below target in red.
CPT code 99454 requires at least 16 days of device data transmission per 30-day billing period. The transmission rate chart helps you identify patients or devices that are falling behind before it impacts billing eligibility.
Processing Time Chart
Shows the average observation processing latency over the past 24 hours, broken into 15-minute intervals. This chart helps identify performance bottlenecks — a sustained increase in processing time may indicate database load, Celery worker starvation, or network issues with the eCW integration.
Volume Trends Chart
Tracks the total number of observations processed per day over the past 90 days. The chart includes a trend line and highlights weekday vs. weekend patterns. A sudden drop may indicate device connectivity issues or patient non-compliance.
Auto-Refresh Configuration
The dashboard uses a tiered auto-refresh strategy to balance data freshness with server load. Each section refreshes independently at its own interval:
| Section | Refresh Interval | Method |
|---|---|---|
| System Health Cards | Every 10 seconds | Polling via GET /health/ |
| KPI Statistics | Every 30 seconds | Polling via GET /api/v1/dashboard/stats/ |
| Activity Feed | Every 30 seconds | Polling with cursor-based pagination |
| Performance Charts | Every 60 seconds | Polling with incremental data fetch |
Auto-refresh is paused when the dashboard tab is not visible (using the Page Visibility API). This prevents unnecessary API calls and server load when the user switches to another tab. Refreshing resumes immediately when the tab regains focus.
You can configure the refresh intervals in the frontend environment file:
# Dashboard refresh intervals (in milliseconds)
VITE_DASHBOARD_HEALTH_INTERVAL=10000
VITE_DASHBOARD_STATS_INTERVAL=30000
VITE_DASHBOARD_CHARTS_INTERVAL=60000
VITE_DASHBOARD_ACTIVITY_INTERVAL=30000
Alert System Integration
The dashboard integrates directly with the Triage System and Notification System to surface alerts in real time. When a patient's vital reading breaches a configured threshold, the following happens simultaneously:
Alert Created
The observation pipeline detects the threshold breach and creates an alert record linked to the patient and the triggering observation.
KPI Updated
The dashboard's "Vital Alerts" KPI counter increments immediately on the next 30-second refresh cycle. The activity feed also shows the new alert event.
Notification Dispatched
A push notification is sent to the assigned clinician via Firebase Cloud Messaging. The notification contains a sanitized message (no PHI) with a deep link to the patient's triage detail view.
Triage Queue Updated
The patient's risk score is recalculated, and they are repositioned in the triage priority queue. If the alert reaches STAT severity, an escalation event is also created.
Role-Based Views
The dashboard layout adapts based on the authenticated user's role. Each role sees a tailored view that surfaces the most relevant information for their responsibilities:
Admin View
Full access to all dashboard sections including system health cards, all KPIs, activity feed, performance charts, quick actions (including system settings), and user management shortcuts. Admins also see aggregate statistics across all providers.
Clinician View
Focused on clinical operations. Displays KPIs for patients under the clinician's care, the triage queue filtered to their assigned patients, vital alerts, and clinical activity feed. System health cards are shown in a compact form. The billing section is hidden.
Staff View
Operational view centered on patient management and data quality. Shows patient import status, transmission compliance rates, device connectivity metrics, and the patient onboarding pipeline. Staff users can access quick actions for patient creation and eCW import.
Billing View
Revenue-focused layout. Displays monthly revenue KPIs, billing pipeline status (pending → submitted → paid/denied), claim generation activity, unbilled patient alerts, and quick access to all 13 billing report endpoints. Clinical alert details are excluded.
Users can customize their dashboard layout by dragging and rearranging cards. Preferences are saved per-user in localStorage and persist across sessions. To reset to the default role-based layout, use the "Reset Layout" option in the dashboard settings menu.
Dashboard API Endpoints
The dashboard is powered by the following backend API endpoints. All endpoints require JWT authentication and return JSON responses.
| Method | Endpoint | Description |
|---|---|---|
GET |
/health/ |
System health status (no auth required) |
GET |
/api/v1/dashboard/stats/ |
Aggregated KPI statistics |
GET |
/api/v1/dashboard/stats/ |
Activity feed with cursor pagination |
GET |
/api/v1/dashboard/stats/transmissions/ |
Transmission rate time-series data |
GET |
/api/v1/dashboard/stats/processing/ |
Processing time time-series data |
GET |
/api/v1/dashboard/stats/volume/ |
Observation volume time-series data |