# PX360 Command Center - Implementation Guide ## Overview The PX360 Command Center is a comprehensive, unified dashboard that consolidates all analytics, KPIs, and metrics from across the PX360 system into a single, powerful command center interface. This document provides detailed information about the implementation, features, and usage of the Command Center. ## Features ### 1. Unified KPI Display - **Complaints KPIs**: Total complaints, open complaints, overdue complaints, resolved complaints - **Actions KPIs**: Total actions, overdue actions - **Surveys KPIs**: Average survey score, negative surveys - **Trend Indicators**: Visual indicators showing percentage changes vs. previous period ### 2. Interactive Charts (ApexCharts) All charts use ApexCharts library for modern, responsive, and interactive visualizations: - **Complaints Trend**: Line/Area chart showing complaint volume over time - **Complaints by Category**: Donut chart showing distribution across categories - **Survey Satisfaction Trend**: Line chart showing satisfaction scores over time - **Survey Distribution**: Donut chart showing positive/neutral/negative split - **Department Performance**: Bar chart ranking departments by performance - **Physician Leaderboard**: Bar chart showing top-performing physicians ### 3. Advanced Filtering System Users can filter data by: - **Date Range**: Preset options (7 days, 30 days, 90 days, this month, last month, quarter, year) or custom range - **Hospital**: Filter by specific hospital (role-based access control) - **Department**: Filter by specific department - **KPI Category**: Filter by category (complaints, surveys, actions, physicians) ### 4. Data Tables - **Overdue Complaints Table**: Shows all overdue complaints with quick action links - **Physician Leaderboard Table**: Detailed ranking with ratings, survey counts, and sentiment breakdown ### 5. Export Functionality - **Excel Export**: Download dashboard data in Excel (.xlsx) format - **PDF Export**: Generate professional PDF reports with all KPIs and data - Both exports respect current filter settings ## Architecture ### Backend Components #### 1. UnifiedAnalyticsService (`apps/analytics/services/analytics_service.py`) A comprehensive service class that handles all data aggregation and KPI calculations. **Key Methods:** ```python class UnifiedAnalyticsService: @staticmethod def get_all_kpis(user, date_range, hospital_id, department_id, ...) """Returns all KPIs based on filters""" @staticmethod def get_chart_data(user, chart_type, date_range, ...) """Returns chart data for specific chart type""" @staticmethod def get_date_range_filter(date_range, custom_start, custom_end) """Returns (start_date, end_date) tuple""" @staticmethod def get_complaints_trend(user, start_date, end_date, ...) """Returns complaints trend chart data""" @staticmethod def get_complaints_by_category(user, start_date, end_date, ...) """Returns complaints by category chart data""" # ... additional chart data methods ``` #### 2. ExportService (`apps/analytics/services/export_service.py`) Handles Excel and PDF export generation. **Key Methods:** ```python class ExportService: @staticmethod def prepare_dashboard_data(user, kpis, charts, tables) """Prepares data structure for export""" @staticmethod def export_to_excel(data) """Generates Excel file and returns HttpResponse""" @staticmethod def export_to_pdf(data) """Generates PDF file and returns HttpResponse""" ``` #### 3. UI Views (`apps/analytics/ui_views.py`) Django views for rendering the dashboard and handling API requests. **Key Views:** ```python @login_required def command_center(request) """Main dashboard view - renders the HTML template""" @login_required def command_center_api(request) """API endpoint - returns JSON data for dynamic updates""" @login_required def export_command_center(request, export_format) """Handles Excel and PDF export requests""" ``` ### Frontend Components #### 1. Command Center Template (`templates/analytics/command_center.html`) The main dashboard template includes: - Filter panel with collapsible form - KPI cards with trend indicators - Chart containers for ApexCharts - Data tables with sorting and actions - Loading overlay - JavaScript for dynamic updates #### 2. JavaScript Functionality **Key JavaScript Functions:** ```javascript // Global state let charts = {}; let currentFilters = { ... }; // Core functions loadDashboardData() // Loads all dashboard data via AJAX updateKPIs(kpis) // Updates KPI cards updateCharts(chartData) // Renders/updates ApexCharts renderChart(elementId, chartData, chartType) // Renders individual chart updateTables(tableData) // Updates data tables // Filter functions handleDateRangeChange() // Shows/hides custom date range updateFilters() // Updates currentFilters object resetFilters() // Resets all filters to defaults // Export functions exportDashboard(format) // Initiates Excel/PDF export ``` ## URL Structure ``` /analytics/command-center/ # Main dashboard /analytics/api/command-center/ # API endpoint for data /analytics/api/command-center/export/excel/ # Excel export /analytics/api/command-center/export/pdf/ # PDF export ``` ## Data Flow ### 1. Initial Page Load ``` User Request → command_center view ↓ Render template with initial filters and KPIs ↓ Return HTML to browser ↓ JavaScript loads data via AJAX ↓ command_center_api returns JSON ↓ Dashboard updates with data ``` ### 2. Filter Change ``` User applies filter ↓ JavaScript updates currentFilters ↓ loadDashboardData() called ↓ AJAX request to command_center_api with filters ↓ Backend aggregates data based on filters ↓ JSON response with kpis, charts, tables ↓ JavaScript updates UI components ``` ### 3. Export Request ``` User clicks Export → Excel/PDF ↓ exportDashboard(format) called ↓ AJAX request to export_command_center ↓ ExportService generates file ↓ Browser downloads file ``` ## Role-Based Access Control The Command Center respects user roles: ### PX Admin - Can view data across all hospitals - Can filter by any hospital or department - Full access to all KPIs and charts ### Hospital Manager - Can only view data for their hospital - Hospital filter pre-selected to their hospital - Can filter by departments within their hospital ### Department Manager - Can only view data for their department - Hospital and department filters pre-selected - Limited to department-specific KPIs ## Chart Configurations ### 1. Line Charts (Trend Data) ```javascript { chart: { type: 'line', height: 350, toolbar: { show: true } }, stroke: { curve: 'smooth', width: 3 }, fill: { type: 'gradient', gradient: { ... } }, xaxis: { categories: [...] }, yaxis: { min: 0, forceNiceScale: true } } ``` ### 2. Donut Charts (Distribution Data) ```javascript { chart: { type: 'donut', height: 350 }, labels: [...], dataLabels: { enabled: true }, legend: { position: 'bottom' } } ``` ### 3. Bar Charts (Ranking Data) ```javascript { chart: { type: 'bar', height: 350 }, plotOptions: { bar: { horizontal: true } }, xaxis: { categories: [...] } } ``` ## Export Formats ### Excel Export (.xlsx) - Contains separate sheets for: - Executive Summary (KPIs) - Detailed Charts Data - Overdue Complaints List - Physician Leaderboard - Formatted with proper headers and styling - Includes timestamp and filter information ### PDF Export (.pdf) - Professional report format - Executive summary with key KPIs - **Charts rendered as high-quality images using Matplotlib**: - Line charts with markers and trend lines - Bar charts with value labels - Donut/Pie charts with percentage labels - Professional styling and colors - 150 DPI resolution for print quality - Data tables with proper formatting - Includes report metadata (date, filters applied) ## Performance Optimizations 1. **Database Query Optimization** - Uses select_related() and prefetch_related() for efficient queries - Aggregates data at database level where possible - Limits result sets for tables (20-100 rows) 2. **Caching** - Consider adding Redis caching for frequently accessed data - Cache chart data for common filter combinations 3. **AJAX Loading** - Initial page load shows skeleton with filters - Data loads asynchronously via AJAX - Prevents page timeout on large datasets 4. **Pagination** - Table results are paginated - Chart data limits to top N items (e.g., top 10 departments) ## Dependencies ### Required Python Packages ```txt openpyxl>=3.1.0 # Excel export reportlab>=4.0.0 # PDF export Pillow>=10.0.0 # Image processing for PDF matplotlib>=3.8.0 # Chart image generation for PDF export ``` ### Required JavaScript Libraries ```html ``` ## Customization Guide ### Adding a New KPI 1. **Add KPI calculation in UnifiedAnalyticsService:** ```python @staticmethod def get_all_kpis(user, date_range, ...): kpis = { # existing KPIs 'new_kpi': self._calculate_new_kpi(user, date_range, ...), } return kpis ``` 2. **Add KPI card to template:** ```html