Welcome to SATHI (Self Reported Assessment and Tracking for Health Insights). This is a comprehensive Django-based application for collecting, managing, and analyzing patient-reported outcomes with advanced features for patients, healthcare providers, and questionnaire designers.
For complete documentation including installation guides, user manuals, and API references, visit:
The documentation is organized into three main sections:
- 👤 Patient Documentation: Guides for patients using SATHI to complete questionnaires
- 🏥 Healthcare Worker Documentation: Instructions for healthcare providers managing patients and reviewing results
- 💻 Developer Documentation: Technical documentation for installation, configuration, and extending SATHI
See Patient Documentation for:
- Getting started guide
- Answering questionnaires
- Viewing your results
- Two-factor authentication setup
See Healthcare Worker Documentation for:
- Patient management
- Creating and assigning questionnaires
- Reviewing patient results
- Understanding clinical scores
See Developer Documentation for:
- Installation: Production deployment with Nginx, Gunicorn, Supervisor, and Let's Encrypt SSL
- Architecture: System design, data models, and design patterns
- Frontend Development: Tailwind CSS, language switching, vertical tabs
- UI Components: Complete Django Cotton component library reference
- API Reference: Complete API documentation with docstrings
- Configuration: Environment variables and settings
- Contributing: Development guidelines
- 📱 Mobile-responsive questionnaire interface
- 🌍 Multi-language support with dynamic font selection
- 🎯 Conditional logic to reduce response burden
- 📊 Personal health data portal with visualizations
- 🎤 Audio/video integration for enhanced accessibility
- 📈 Comprehensive patient response dashboard
- 🎯 Construct and composite score tracking
- 🚦 Clinical significance indicators with color coding
- 📊 Interactive plots with normative and threshold scores
- 👥 Result aggregation across patient populations
- 🔐 Role-based access control
- 📝 Item bank creation and reuse
- 🎨 Flexible response types (Text, Number, Likert, Range)
- 🧮 Complex scoring equations with variables and conditionals
- 🌐 Translation management for multi-language support
- � CSV import/export for bulk operations
- 🔒 Encrypted patient identifiers
- 🔐 Two-factor authentication (Email OTP and TOTP)
- 🏢 Institution-based row-level security
- 🛡️ Rate limiting and reCAPTCHA protection
- 📋 Comprehensive audit logging
- Backend: Django 6.0, Python 3.13, PostgreSQL
- Frontend: HTMX, TailwindCSS, django-cotton
- Security: django-two-factor-auth, django-ratelimit, django-recaptcha
- Deployment: Nginx, Gunicorn, Supervisor, Memcached
- Visualization: Plotly, Bokeh
- Internationalization: django-parler
# Clone repository
git clone https://github.com/CHAVI-India/chavi-prom.git
cd chavi-prom
# Create virtual environment
python3.13 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Setup database
sudo -u postgres psql -c "CREATE DATABASE chaviprom;"
sudo -u postgres psql -c "CREATE USER chaviprom_user WITH PASSWORD 'password';"
# Configure environment
cp sampleenv.txt .env
# Edit .env with your settings
# Run migrations
python manage.py migrate
python manage.py createsuperuser
python manage.py collectstatic --noinput
# Start development server
python manage.py runserverFor complete production deployment instructions including Nginx, Gunicorn, Supervisor, and SSL configuration, see:
- Check the 📖 SATHI Documentation
- Open an issue on GitHub
- Contact the development team
See Contributing Guide for:
- Development setup
- Code style guidelines
- Pull request process
- Testing requirements
Legacy technical documentation is available in the documentation/ directory for reference, but the primary documentation is now in Sphinx format.
This project is open source. See LICENSE file for details.