363 lines
8.7 KiB
Markdown
363 lines
8.7 KiB
Markdown
# PX360 Development Environment Setup Guide
|
||
|
||
## Overview
|
||
|
||
This guide explains how to set up a complete development environment for PX360 using the `setup_dev_environment` management command.
|
||
|
||
## What Gets Created
|
||
|
||
### 1. Organization Structure
|
||
- **Organization**: Al Hammadi Healthcare Group (DEV)
|
||
- **3 Hospitals**: NUZHA-DEV, OLAYA-DEV, SUWAIDI-DEV
|
||
- **Departments**: Emergency, OPD, Inpatient, ICU, Pharmacy, Laboratory, Radiology, Administration
|
||
|
||
### 2. User Roles & Permissions
|
||
- PX Admin (Full system access)
|
||
- Hospital Admin (Hospital-level access)
|
||
- Department Manager (Department-level access)
|
||
- PX Coordinator (PX actions & complaints)
|
||
- Physician (View feedback)
|
||
- Nurse (View department feedback)
|
||
- Staff (Basic access)
|
||
- Viewer (Read-only)
|
||
- PX Source User (External source users)
|
||
|
||
### 3. Survey Templates (4 types)
|
||
1. **Inpatient Post-Discharge Survey**
|
||
- Nursing care
|
||
- Doctor's care
|
||
- Room cleanliness
|
||
- Food quality
|
||
- Treatment information
|
||
- NPS question
|
||
- Comments
|
||
|
||
2. **OPD Patient Experience Survey**
|
||
- Registration process
|
||
- Waiting time
|
||
- Doctor consultation
|
||
- Pharmacy service
|
||
- NPS question
|
||
- Comments
|
||
|
||
3. **EMS Emergency Services Survey**
|
||
- Ambulance response time
|
||
- Paramedic care
|
||
- Emergency department care
|
||
- Communication
|
||
- NPS question
|
||
- Comments
|
||
|
||
4. **Day Case Patient Survey**
|
||
- Pre-procedure preparation
|
||
- Procedure quality
|
||
- Post-procedure care
|
||
- Discharge process
|
||
- NPS question
|
||
- Comments
|
||
|
||
### 4. Complaint System Configuration
|
||
- **Complaint Categories**: Clinical Care, Management, Relationships, Facility, Communication, Access, Billing, Other
|
||
- **PX Sources**: Patient, Family Member, Staff, Survey, MOH, CCHI
|
||
- **SLA Configurations** (per hospital):
|
||
- MOH: 24 hours (reminders at 12h/18h)
|
||
- CCHI: 48 hours (reminders at 24h/36h)
|
||
- Internal: 72 hours (reminders at 24h/48h)
|
||
- **Escalation Rules** (per hospital):
|
||
- Default: Department Manager (immediate)
|
||
- Critical: Hospital Admin (4h overdue)
|
||
- Final: PX Admin (24h overdue)
|
||
- **Thresholds**: Resolution survey < 50% → Create PX Action
|
||
- **Explanation SLA**: 48 hours response time
|
||
|
||
### 5. Journey Templates
|
||
**OPD Journey Stages**:
|
||
1. Registration (trigger: REGISTRATION)
|
||
2. Waiting (trigger: WAITING)
|
||
3. MD Consultation (trigger: Consultation)
|
||
4. MD Visit (trigger: Doctor Visited)
|
||
5. Clinical Assessment (trigger: Clinical Condition)
|
||
6. Patient Assessment (trigger: ChiefComplaint)
|
||
7. Pharmacy (trigger: Prescribed Drugs)
|
||
8. Discharge (trigger: DISCHARGED)
|
||
|
||
**Other Journey Types**:
|
||
- Inpatient Journey
|
||
- EMS Journey
|
||
- Day Case Journey
|
||
|
||
### 6. Survey Mappings
|
||
- Patient Type 1 (Inpatient) → Inpatient Survey
|
||
- Patient Type 2 (Outpatient) → OPD Survey
|
||
- Patient Type 3 (Emergency) → EMS Survey
|
||
- Patient Type 4 (Day Case) → Day Case Survey
|
||
|
||
### 7. Observation Categories (15)
|
||
1. Patient Safety
|
||
2. Clinical Quality
|
||
3. Infection Control
|
||
4. Medication Safety
|
||
5. Equipment & Devices
|
||
6. Facility & Environment
|
||
7. Staff Behavior
|
||
8. Communication
|
||
9. Documentation
|
||
10. Process & Workflow
|
||
11. Security
|
||
12. IT & Systems
|
||
13. Housekeeping
|
||
14. Food Services
|
||
15. Other
|
||
|
||
### 8. Notification Templates
|
||
- Onboarding Invitation
|
||
- Onboarding Reminder
|
||
- Onboarding Completion
|
||
- Survey Invitation
|
||
- Survey Reminder
|
||
- Complaint Acknowledgment
|
||
- Complaint Update
|
||
- Action Assignment
|
||
- SLA Reminder
|
||
- SLA Breach
|
||
|
||
### 9. Standards Setup
|
||
**Standard Sources**:
|
||
- CBAHI (Saudi Central Board for Accreditation)
|
||
- JCI (Joint Commission International)
|
||
- ISO (International Organization for Standardization)
|
||
|
||
**Standard Categories**:
|
||
- Patient Safety
|
||
- Quality Management
|
||
- Infection Control
|
||
- Medication Safety
|
||
- Environment of Care
|
||
- Leadership
|
||
- Information Management
|
||
|
||
### 10. HIS Integration
|
||
- API URL: From `.env` (HIS_API_URL)
|
||
- Username: From `.env` (HIS_API_USERNAME)
|
||
- Password: From `.env` (HIS_API_PASSWORD)
|
||
- Event Mappings configured for OPD workflow
|
||
|
||
## Usage
|
||
|
||
### Basic Setup (All Components)
|
||
```bash
|
||
python manage.py setup_dev_environment
|
||
```
|
||
|
||
### Dry Run (Preview Only)
|
||
```bash
|
||
python manage.py setup_dev_environment --dry-run
|
||
```
|
||
|
||
### Setup Specific Hospital
|
||
```bash
|
||
python manage.py setup_dev_environment --hospital-code NUZHA-DEV
|
||
```
|
||
|
||
### Skip Specific Components
|
||
```bash
|
||
# Skip surveys
|
||
python manage.py setup_dev_environment --skip-surveys
|
||
|
||
# Skip complaints
|
||
python manage.py setup_dev_environment --skip-complaints
|
||
|
||
# Skip journeys
|
||
python manage.py setup_dev_environment --skip-journeys
|
||
|
||
# Skip HIS integration
|
||
python manage.py setup_dev_environment --skip-integration
|
||
|
||
# Combine multiple skips
|
||
python manage.py setup_dev_environment --skip-surveys --skip-integration
|
||
```
|
||
|
||
## Environment Variables Required
|
||
|
||
Add these to your `.env` file:
|
||
|
||
```env
|
||
# HIS Integration
|
||
HIS_API_URL=https://his.alhammadi.med.sa:54380/SSRCE/API/FetchPatientVisitTimeStamps
|
||
HIS_API_USERNAME=AlhhSUNZHippo
|
||
HIS_API_PASSWORD=*#$@PAlhh^2106
|
||
|
||
# Database
|
||
DATABASE_URL=sqlite:///db.sqlite3
|
||
|
||
# Redis/Celery
|
||
CELERY_BROKER_URL=redis://localhost:6379/0
|
||
CELERY_RESULT_BACKEND=redis://localhost:6379/0
|
||
|
||
# SMS Gateway
|
||
SMS_API_URL=http://localhost:8000/api/simulator/send-sms/
|
||
SMS_API_KEY=simulator-test-key
|
||
SMS_ENABLED=True
|
||
SMS_PROVIDER=console
|
||
|
||
# Email Gateway
|
||
EMAIL_API_URL=http://localhost:8000/api/simulator/send-email/
|
||
EMAIL_API_KEY=simulator-test-key
|
||
EMAIL_ENABLED=True
|
||
EMAIL_PROVIDER=console
|
||
|
||
# AI Configuration
|
||
OPENROUTER_API_KEY=your-api-key-here
|
||
AI_MODEL=stepfun/step-3.5-flash:free
|
||
AI_TEMPERATURE=0.3
|
||
AI_MAX_TOKENS=500
|
||
```
|
||
|
||
## Post-Setup Steps
|
||
|
||
### 1. Create Admin Users
|
||
After running the setup, create admin users for each hospital:
|
||
|
||
```bash
|
||
python manage.py createsuperuser
|
||
```
|
||
|
||
Then assign them to hospitals via the admin interface or:
|
||
```python
|
||
from apps.accounts.models import HospitalUser
|
||
from apps.organizations.models import Hospital
|
||
from django.contrib.auth import get_user
|
||
|
||
User = get_user_model()
|
||
hospital = Hospital.objects.get(code='NUZHA-DEV')
|
||
user = User.objects.get(email='admin@example.com')
|
||
|
||
HospitalUser.objects.create(
|
||
user=user,
|
||
hospital=hospital,
|
||
role='hospital_admin'
|
||
)
|
||
```
|
||
|
||
### 2. Start Celery Workers
|
||
```bash
|
||
# Start Celery worker
|
||
celery -A config worker -l info
|
||
|
||
# Start Celery beat (for scheduled tasks)
|
||
celery -A config beat -l info
|
||
```
|
||
|
||
### 3. Verify Setup
|
||
```bash
|
||
# Check organization
|
||
python manage.py shell
|
||
>>> from apps.organizations.models import Organization
|
||
>>> Organization.objects.count()
|
||
1
|
||
|
||
# Check hospitals
|
||
>>> from apps.organizations.models import Hospital
|
||
>>> Hospital.objects.count()
|
||
3
|
||
|
||
# Check survey templates
|
||
>>> from apps.surveys.models import SurveyTemplate
|
||
>>> SurveyTemplate.objects.count()
|
||
12 # 4 templates × 3 hospitals
|
||
```
|
||
|
||
### 4. Test HIS Integration
|
||
```bash
|
||
python manage.py test_his_connection
|
||
```
|
||
|
||
### 5. Run Initial HIS Sync
|
||
```bash
|
||
python manage.py fetch_his_surveys
|
||
```
|
||
|
||
## Idempotent Operation
|
||
|
||
The command is **idempotent** - it can be run multiple times safely:
|
||
- Uses `get_or_create()` for all models
|
||
- Won't create duplicates
|
||
- Updates existing records if needed
|
||
- Safe to re-run after errors
|
||
|
||
## Troubleshooting
|
||
|
||
### Issue: "No module named 'django'"
|
||
**Solution**: Activate virtual environment
|
||
```bash
|
||
source .venv/bin/activate
|
||
```
|
||
|
||
### Issue: "Command not found"
|
||
**Solution**: Run from project root
|
||
```bash
|
||
cd /path/to/HH
|
||
python manage.py setup_dev_environment
|
||
```
|
||
|
||
### Issue: Database locked
|
||
**Solution**: Stop all running processes and try again
|
||
```bash
|
||
pkill -f celery
|
||
pkill -f python
|
||
python manage.py setup_dev_environment
|
||
```
|
||
|
||
### Issue: Permission denied
|
||
**Solution**: Check file permissions
|
||
```bash
|
||
chmod +x manage.py
|
||
```
|
||
|
||
## Next Steps After Setup
|
||
|
||
1. **Configure SMS Gateway** (for production)
|
||
2. **Configure Email Gateway** (for production)
|
||
3. **Load SHCT Taxonomy** (detailed complaint categories)
|
||
4. **Import Staff Data** (via CSV import commands)
|
||
5. **Set Up Department Managers** (via admin interface)
|
||
6. **Configure HIS Integration** (fine-tune event mappings)
|
||
7. **Create Additional Survey Templates** (as needed)
|
||
8. **Set Up Standards** (add CBAHI/JCI standards)
|
||
9. **Configure Notification Templates** (add SMS/email content)
|
||
10. **Test Complete Workflow** (create test complaint → resolve → survey)
|
||
|
||
## Related Management Commands
|
||
|
||
```bash
|
||
# Load SHCT complaint taxonomy
|
||
python manage.py load_shct_taxonomy
|
||
|
||
# Seed departments
|
||
python manage.py seed_departments
|
||
|
||
# Import staff from CSV
|
||
python manage.py import_staff_csv path/to/staff.csv
|
||
|
||
# Create notification templates
|
||
python manage.py init_notification_templates
|
||
|
||
# Create appreciation category
|
||
python manage.py create_patient_feedback_category
|
||
|
||
# Seed observation categories
|
||
python manage.py seed_observation_categories
|
||
|
||
# Seed acknowledgement categories
|
||
python manage.py seed_acknowledgements
|
||
```
|
||
|
||
## Support
|
||
|
||
For issues or questions:
|
||
1. Check logs: `tail -f logs/debug.log`
|
||
2. Check Celery logs
|
||
3. Review environment variables
|
||
4. Check database integrity
|
||
5. Contact: support@px360.sa
|