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.
Last Updated: April 2026
Documentation Version: 1.0
For the most up-to-date documentation, build the Sphinx docs: cd docs && make html