HH/README.md
2025-12-24 12:42:31 +03:00

355 lines
10 KiB
Markdown

# PX360 - Patient Experience 360 Management System
**AlHammadi Group (Saudi Arabia)**
A comprehensive enterprise patient experience management system built with Django 5.0, designed to track, measure, and improve patient satisfaction across multiple touchpoints in the healthcare journey.
## 🎯 Project Overview
PX360 is a complex, event-driven system that:
- Tracks patient journeys through EMS, Inpatient, and OPD pathways
- Automatically sends stage-specific surveys based on integration events
- Manages complaints with SLA tracking and escalation
- Creates and tracks PX actions from negative feedback
- Provides real-time analytics and dashboards
- Supports multi-language (Arabic/English) operations
## 🏗️ Architecture
### Tech Stack
- **Backend**: Python 3.12+ / Django 5.0
- **API**: Django REST Framework with JWT authentication
- **Database**: PostgreSQL 15
- **Task Queue**: Celery + Redis
- **Scheduler**: Celery Beat
- **Documentation**: drf-spectacular (OpenAPI/Swagger)
- **Deployment**: Docker + Docker Compose
### Project Structure
```
px360/
├── config/ # Project configuration
│ ├── settings/ # Split settings (base/dev/prod)
│ ├── urls.py # Main URL configuration
│ ├── celery.py # Celery configuration
│ ├── wsgi.py # WSGI application
│ └── asgi.py # ASGI application
├── apps/ # Business applications
│ ├── core/ # Base models, utilities, health check
│ ├── accounts/ # User authentication & RBAC
│ ├── organizations/ # Hospitals, departments, staff, patients
│ ├── journeys/ # Patient journey templates & instances
│ ├── surveys/ # Survey templates & responses
│ ├── complaints/ # Complaint management
│ ├── feedback/ # General feedback
│ ├── callcenter/ # Call center interactions
│ ├── social/ # Social media monitoring
│ ├── px_action_center/ # Action tracking with SLA
│ ├── analytics/ # KPIs and dashboards
│ ├── physicians/ # Physician ratings
│ ├── projects/ # QI projects
│ ├── integrations/ # External system integrations
│ ├── notifications/ # SMS/WhatsApp/Email delivery
│ └── ai_engine/ # Sentiment analysis
├── templates/ # Django templates
├── static/ # Static files
├── docs/ # Documentation
├── docker/ # Docker configuration files
├── requirements/ # Python dependencies
├── manage.py # Django management script
├── Dockerfile # Docker image definition
└── docker-compose.yml # Multi-container setup
```
## 🚀 Quick Start
### Prerequisites
- Python 3.12+
- Docker & Docker Compose
- PostgreSQL 15 (if running locally)
- Redis 7 (if running locally)
### Installation
1. **Clone the repository**
```bash
git clone <repository-url>
cd PX360
```
2. **Create environment file**
```bash
cp .env.example .env
# Edit .env with your configuration
```
3. **Run with Docker (Recommended)**
```bash
docker-compose up --build
```
This will start:
- Web server (Django) on http://localhost:8000
- PostgreSQL database
- Redis
- Celery worker
- Celery beat scheduler
4. **Access the application**
- API: http://localhost:8000/api/
- Admin: http://localhost:8000/admin/
- API Docs: http://localhost:8000/api/docs/
- Health Check: http://localhost:8000/health/
### Local Development (Without Docker)
1. **Create virtual environment**
```bash
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
```
2. **Install dependencies**
```bash
pip install -e ".[dev]"
```
3. **Set up database**
```bash
# Make sure PostgreSQL is running
createdb px360
```
4. **Run migrations**
```bash
python manage.py migrate
```
5. **Create superuser**
```bash
python manage.py createsuperuser
```
6. **Run development server**
```bash
python manage.py runserver
```
7. **Run Celery worker (separate terminal)**
```bash
celery -A config worker -l info
```
8. **Run Celery beat (separate terminal)**
```bash
celery -A config beat -l info
```
## 📋 Implementation Status
### ✅ Phase 0: Bootstrap & Infrastructure (COMPLETED)
- [x] Project structure with config/ and apps/
- [x] Split settings (base/dev/prod)
- [x] Django 5.0 + DRF setup
- [x] Celery + Redis configuration
- [x] Docker setup (web, db, redis, celery, celery-beat)
- [x] Health check endpoint
- [x] Environment configuration
### 🔄 Phase 1: Core + Accounts + RBAC + Audit (IN PROGRESS)
- [x] Core base models (UUIDModel, TimeStampedModel, SoftDeleteModel)
- [x] AuditEvent model with generic foreign key
- [x] AuditService for centralized logging
- [x] Custom User model with UUID primary key
- [x] Role model linked to Django Groups
- [ ] JWT authentication endpoints
- [ ] DRF permission classes
- [ ] Management commands for default roles
- [ ] User registration and login audit logging
### 🔄 Phase 2: Organizations (IN PROGRESS)
- [x] Hospital model
- [x] Department model (hierarchical)
- [x] Physician model
- [x] Employee model
- [x] Patient model
- [ ] Admin interfaces
- [ ] DRF API endpoints
- [ ] RBAC enforcement
### ⏳ Phase 3: Journeys + Event Intake (PENDING)
- [ ] JourneyType enum (EMS/Inpatient/OPD)
- [ ] PatientJourneyTemplate & StageTemplate models
- [ ] PatientJourneyInstance & StageInstance models
- [ ] InboundEvent model for integration events
- [ ] Event processing Celery task
- [ ] API endpoint to receive events
- [ ] Stage completion logic
### ⏳ Phase 4: Surveys + Delivery (PENDING)
- [ ] SurveyTemplate & SurveyQuestion models
- [ ] SurveyInstance & SurveyResponse models
- [ ] Bilingual survey support (AR/EN)
- [ ] Signed token URL generation
- [ ] Survey submission endpoint
- [ ] Automatic survey creation on stage completion
- [ ] Notification delivery (SMS/WhatsApp/Email stubs)
### ⏳ Phase 5: Complaints + Resolution Satisfaction (PENDING)
- [ ] Complaint model with SLA tracking
- [ ] Complaint workflow (open → resolved → closed)
- [ ] ComplaintAttachment & ComplaintUpdate models
- [ ] Inquiry model
- [ ] Resolution satisfaction survey trigger
- [ ] API endpoints
### ⏳ Phase 6: PX Action Center (PENDING)
- [ ] PXAction model with SLA configuration
- [ ] Automatic action creation triggers
- [ ] SLA reminder Celery tasks
- [ ] Escalation logic
- [ ] Approval workflow
- [ ] Evidence attachment
### ⏳ Phase 7: Call Center + Social + AI Engine (PENDING)
- [ ] Call center interaction models
- [ ] Social media mention models
- [ ] AI sentiment analysis (stubbed)
- [ ] Sentiment-driven action creation
### ⏳ Phase 8: Analytics + Dashboards (PENDING)
- [ ] KPI models and aggregation
- [ ] Physician monthly ratings
- [ ] QI project models
- [ ] PX Command Center dashboard
- [ ] Department/physician leaderboards
### ⏳ Comprehensive UI (PENDING)
- [ ] Bootstrap 5 base templates
- [ ] PX Command Center dashboard
- [ ] Complaints console
- [ ] PX Action Center board
- [ ] Journey template builder
- [ ] Survey control center
- [ ] Public survey forms
## 🔑 Key Features
### Event-Driven Architecture
- Integration events from HIS/Lab/Radiology/Pharmacy trigger journey stage completions
- Stage completions automatically send stage-specific surveys
- Negative feedback automatically creates PX actions
### SLA Management
- Configurable SLA thresholds by priority/severity
- Automatic reminders before due date
- Automatic escalation when overdue
- Audit trail of all SLA events
### Multi-Language Support
- Arabic and English throughout the system
- Bilingual survey templates
- RTL-ready UI components
### RBAC (Role-Based Access Control)
- PX Admin: Full system access
- Hospital Admin: Hospital-level access
- Department Manager: Department-level access
- PX Coordinator: Action management
- Physician/Nurse/Staff: Limited access
- Viewer: Read-only access
## 📚 API Documentation
Once the server is running, access the interactive API documentation:
- **Swagger UI**: http://localhost:8000/api/docs/
- **ReDoc**: http://localhost:8000/api/redoc/
- **OpenAPI Schema**: http://localhost:8000/api/schema/
## 🧪 Testing
```bash
# Run all tests
pytest
# Run with coverage
pytest --cov=apps --cov-report=html
# Run specific app tests
pytest apps/core/tests/
```
## 🔧 Management Commands
```bash
# Create default roles and groups
python manage.py create_default_roles
# Create sample data for testing
python manage.py create_sample_data
# Process pending integration events
python manage.py process_events
# Calculate KPIs
python manage.py calculate_kpis
```
## 📊 Celery Tasks
### Periodic Tasks (Celery Beat)
- **process-integration-events**: Every 1 minute
- **check-overdue-complaints**: Every 15 minutes
- **check-overdue-actions**: Every 15 minutes
- **send-sla-reminders**: Every hour
- **calculate-daily-kpis**: Daily at 1 AM
- **calculate-physician-ratings**: Monthly on 1st at 2 AM
## 🔒 Security
- JWT authentication for API access
- RBAC enforced at view and API level
- Audit logging for all critical operations
- HTTPS enforced in production
- CSRF protection enabled
- SQL injection protection via ORM
- XSS protection via template escaping
## 🌍 Deployment
### Production Checklist
- [ ] Set `DEBUG=False` in .env
- [ ] Configure `SECRET_KEY` with strong random value
- [ ] Set `ALLOWED_HOSTS` to your domain
- [ ] Configure production database
- [ ] Set up Redis for production
- [ ] Configure email backend (SMTP)
- [ ] Set up SMS/WhatsApp providers
- [ ] Configure static file serving (WhiteNoise/CDN)
- [ ] Set up SSL certificates
- [ ] Configure backup strategy
- [ ] Set up monitoring and logging
- [ ] Configure firewall rules
### Environment Variables
See `.env.example` for all available configuration options.
## 📝 License
Proprietary - AlHammadi Group
## 👥 Team
- **Client**: AlHammadi Group, Saudi Arabia
- **Project**: PX360 Patient Experience Management System
## 📞 Support
For issues and questions, please contact the development team.
---
**Note**: This is a work in progress. The system is being built incrementally following the 8-phase implementation plan outlined in the requirements document.