HH/docs/ONBOARDING_QUICK_START.md
2026-01-06 13:36:43 +03:00

401 lines
12 KiB
Markdown

# PX360 Onboarding System - Quick Start Guide
## Summary
The Onboarding & Acknowledgement System ensures all new users receive proper training on PX360 before gaining access. Users must complete a guided wizard with learning content, acknowledgement checklist, digital signature, and account activation.
## What Has Been Implemented
### ✅ Completed Components
#### 1. Database Models
- User model extensions (is_provisional, acknowledgement tracking)
- AcknowledgementContent (educational content)
- AcknowledgementChecklistItem (checklist items)
- UserAcknowledgement (acknowledgement records)
- UserProvisionalLog (audit trail)
#### 2. Backend Services
- OnboardingService (create provisional users, validation, progress tracking)
- EmailService (invitations, reminders, notifications)
#### 3. API Endpoints
- Create provisional user
- Resend invitation
- Get onboarding progress
- Get wizard content
- Get checklist items
- Acknowledge items
- Complete wizard and activate account
#### 4. UI Views & Templates
- Welcome page
- Content steps with progress tracking
- Checklist with digital signature canvas
- Account activation with password strength
- Completion page
#### 5. Serializers & Permissions
- All required serializers
- Role-based permissions
- Access control
#### 6. URL Routes
- All wizard routes configured
- Management routes configured
- API routes configured
#### 7. Signals
- Automatic logging of events
- Progress tracking
#### 8. Documentation
- Complete implementation guide
- This quick start guide
## Quick Start Steps
### Step 1: Run Migrations
```bash
python manage.py makemigrations accounts
python manage.py migrate accounts
```
### Step 2: Create Initial Content (Required)
You need to create educational content and checklist items before users can start onboarding. Use the provided management command:
**Via Management Command (Recommended):**
```bash
python manage.py init_onboarding_data
```
This command will create:
- **Generic Content** (for all users):
- Welcome to PX360 (system overview)
- Data Privacy & Security policies
- System Usage Guidelines
- **Role-Specific Content** (if roles exist):
- PX Admin Responsibilities
- Hospital Admin Responsibilities
- Department Manager Responsibilities
- Physician Responsibilities
- Staff Responsibilities
- **Checklist Items**: Required acknowledgements for each content section
**Via Django Admin (Custom Content):**
1. Log in as PX Admin
2. Go to `/admin/`
3. Navigate to `Accounts > Acknowledgement Contents`
4. Create custom content as needed
5. Navigate to `Accounts > Acknowledgement Checklist Items`
6. Create checklist items linked to your content
**Via Python Shell (Advanced):**
```bash
python manage.py shell
```
```python
from apps.accounts.models import AcknowledgementContent, AcknowledgementChecklistItem
# Create educational content
content = AcknowledgementContent.objects.create(
code='system_overview',
role='all',
title_en='PX360 System Overview',
title_ar='نظرة عامة على نظام PX360',
description_en='Understanding the PX360 system',
description_ar='فهم نظام PX360',
content_en='<h1>Welcome to PX360</h1><p>This guide will help you understand the system...</p>',
content_ar='<h1>مرحباً بك في PX360</h1><p>سيساعدك هذا الدليل على فهم النظام...</p>',
icon='book',
color='#007bff',
order=1,
is_active=True
)
# Create checklist items
checklist = AcknowledgementChecklistItem.objects.create(
code='data_privacy',
role='all',
text_en='I acknowledge that I have read and understood the Data Privacy Policy',
text_ar='أقر بأنني قرأت وفهمت سياسة خصوصية البيانات',
description_en='Commitment to protecting patient data',
description_ar='الالتزام بحماية بيانات المرضى',
content=content,
is_required=True,
order=1,
is_active=True
)
```
### Step 3: Create a Provisional User
**Via API:**
```bash
curl -X POST http://localhost:8000/api/accounts/users/onboarding/create-provisional/ \
-H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "new.user@example.com",
"first_name": "John",
"last_name": "Doe",
"roles": ["staff"]
}'
```
**Via Django Admin:**
1. Log in as PX Admin
2. Go to `/admin/`
3. Create a User with `is_provisional=True`
4. Assign appropriate role group
### Step 4: User Completes Onboarding
1. User receives invitation email
2. Clicks the link in the email
3. Goes through wizard steps:
- **Welcome Page**: Overview of the process
- **Content Steps**: Read educational content (varies by role)
- **Checklist**: Review and acknowledge required items
- **Digital Signature**: Sign acknowledgements
- **Account Activation**: Create username and password
4. Account is activated and user can log in
### Step 5: Monitor Progress
**Via API:**
```bash
curl -X GET http://localhost:8000/api/accounts/users/onboarding/progress/ \
-H "Authorization: Bearer USER_TOKEN"
```
**Via UI:**
- PX Admin can access `/accounts/onboarding/provisional/` to see all provisional users
- Click "View Progress" to see detailed progress for each user
## Key Features
### Role-Based Content
Content and checklist items are filtered by user role:
- `px_admin`: PX Administrators
- `hospital_admin`: Hospital Administrators
- `department_manager`: Department Managers
- `staff`: Staff members
- `physician`: Physicians
- `all`: All users
### Digital Signature
- HTML5 Canvas signature capture
- Base64 encoding for storage
- IP address and user agent logging
- Compliance-ready audit trail
### Progress Tracking
- Real-time progress percentage
- Step-by-step completion tracking
- Audit log of all activities
- Detailed progress reports
### Security
- Secure invitation tokens (7-day expiration)
- Role-based access control
- Password strength requirements
- Complete audit trail
## Testing the Flow
### Test as PX Admin
1. Log in as PX Admin
2. Create a provisional user
3. Send invitation
4. Monitor progress
### Test as New User
1. Create a test provisional user
2. Access the onboarding wizard via invitation link
3. Complete all steps
4. Verify account is activated
5. Log in with new credentials
## Important Notes
### Email Configuration
Email functionality requires proper SMTP configuration in `settings.py`:
```python
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'your-smtp-server.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your-email@example.com'
EMAIL_HOST_PASSWORD = 'your-password'
DEFAULT_FROM_EMAIL = 'noreply@px360.com'
```
### Required Setup
Before using the system:
1. **Create content**: At least one AcknowledgementContent record
2. **Create checklist items**: At least one required AcknowledgementChecklistItem
3. **Configure email**: Set up email sending
4. **Create PX Admin role**: Ensure PX Admin role exists
### User Roles
Ensure these groups exist in your database:
- PX Admin
- Hospital Admin
- Department Manager
- Staff
- Physician
## API Endpoints Reference
### Onboarding Endpoints
- `POST /api/accounts/users/onboarding/create-provisional/` - Create provisional user
- `POST /api/accounts/users/{id}/onboarding/resend-invitation/` - Resend invitation
- `GET /api/accounts/users/onboarding/progress/` - Get user progress
- `GET /api/accounts/users/onboarding/content/` - Get wizard content
- `GET /api/accounts/users/onboarding/checklist/` - Get checklist items
- `POST /api/accounts/users/onboarding/acknowledge/` - Acknowledge item
- `POST /api/accounts/users/onboarding/complete/` - Complete wizard
- `GET /api/accounts/users/{id}/onboarding/status/` - Get user status
### UI Endpoints
- `/accounts/onboarding/welcome/` - Welcome page
- `/accounts/onboarding/wizard/step/{step}/` - Content steps
- `/accounts/onboarding/wizard/checklist/` - Checklist
- `/accounts/onboarding/wizard/activation/` - Activation
- `/accounts/onboarding/complete/` - Completion
- `/accounts/onboarding/provisional/` - Provisional user management
- `/accounts/onboarding/provisional/{id}/progress/` - User progress detail
## Troubleshooting
### User Cannot Access Wizard
- Check `user.is_provisional` is True
- Verify invitation hasn't expired
- Ensure user has at least one role assigned
### Email Not Sending
- Check SMTP configuration in settings.py
- Verify email templates exist
- Check mail server logs
### Progress Not Saving
- Check browser console for API errors
- Verify JWT token is valid
- Check UserAcknowledgement records in database
## Additional Features (Already Implemented)
### ✅ Completed Components
1. **Management Templates**
-`templates/accounts/onboarding/provisional_list.html`
-`templates/accounts/onboarding/progress_detail.html`
-`templates/accounts/onboarding/provisional_create.html`
2. **Wizard Templates**
-`templates/accounts/onboarding/welcome.html`
-`templates/accounts/onboarding/step_content.html`
-`templates/accounts/onboarding/step_checklist.html`
-`templates/accounts/onboarding/step_activation.html`
-`templates/accounts/onboarding/complete.html`
3. **Email Templates**
-`templates/accounts/emails/invitation_email.html` & `.txt`
-`templates/accounts/emails/reminder_email.html` & `.txt`
-`templates/accounts/emails/completion_notification.html` & `.txt`
4. **OnboardingMiddleware**
-`apps/accounts/middleware.py` - Redirects provisional users to wizard
- ✅ Prevents access until onboarding is complete
5. **Sidebar Integration**
- ✅ "Onboarding" menu item added for PX Admin
- ✅ Automatic redirect for provisional users
6. **Data Management**
- ✅ Management command: `python manage.py init_onboarding_data`
- ✅ Default content for all roles (generic + role-specific)
- ✅ Default checklist items for each content section
- ✅ Bilingual content (English and Arabic)
7. **Documentation**
- ✅ Complete implementation guide
- ✅ Quick start guide (this document)
- ✅ Feature summary
- ✅ Complete implementation documentation
## Support
For detailed information, see:
- **Implementation Guide**: `docs/ONBOARDING_IMPLEMENTATION_GUIDE.md`
- **Django Admin**: `/admin/` to manage content and users
- **API Documentation**: Available at `/api/docs/` (if configured)
## Summary
The onboarding system is **production-ready** and fully implemented. All features are complete:
✅ Database models with extensions
✅ Backend services and API endpoints
✅ Complete wizard UI and templates
✅ Management UI for PX Admins
✅ Email system (invitation, reminders, notifications)
✅ Permissions and security
✅ URL routing and middleware
✅ Bilingual support (English/Arabic)
✅ Digital signature capture
✅ Progress tracking and audit trail
✅ Management command for initial data
✅ Complete documentation
### To Go Live:
1. **Run migrations** (if not already done):
```bash
python manage.py makemigrations accounts
python manage.py migrate accounts
```
2. **Create initial content** (if not already done):
```bash
python manage.py init_onboarding_data
```
3. **Configure email settings** in `settings.py`:
```python
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'your-smtp-server.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your-email@example.com'
EMAIL_HOST_PASSWORD = 'your-password'
DEFAULT_FROM_EMAIL = 'noreply@px360.com'
```
4. **Add middleware to settings.py** (if not already added):
```python
MIDDLEWARE = [
# ... other middleware ...
'apps.accounts.middleware.OnboardingMiddleware',
# ... other middleware ...
]
```
5. **Start using the system**:
- Create provisional users via UI or API
- Users receive invitation emails
- Users complete onboarding wizard
- Monitor progress via management interface
---
**Version**: 1.0.0
**Last Updated**: January 2026
**Status**: ✅ Production Ready