Skip to content

ePT Documentation

Welcome to the ePT (e-Proficiency Testing) documentation. This index provides an overview of the project and links to detailed documentation.


Project Overview

ePT is an open-source proficiency testing system for laboratory quality assurance. It enables organizations to:

  • Create and manage PT shipments across multiple test schemes
  • Enroll participants (laboratories) and track their responses
  • Evaluate results against reference data with configurable scoring
  • Generate reports (Excel, PDF) for analysis and certification

Supported Test Schemes

Scheme Description
DTS HIV Serology (Dried Tube Specimen) - Rapid HIV testing with multiple algorithms
VL HIV Viral Load - Quantitative viral load testing with Z-score analysis
EID Early Infant Diagnosis - PCR-based infant HIV testing
TB Tuberculosis - Molecular (GeneXpert) and microscopy testing
Recency HIV Recency - RTRI-based recent infection testing
COVID-19 COVID-19 testing - Multi-platform PCR testing
DBS Dried Blood Spot - EIA and Western Blot testing
Custom Tests User-configurable test types with dynamic fields

Technology Stack

  • Framework: Zend Framework 1 (PHP 8.4)
  • Database: MySQL 8+
  • Web Server: Apache 2 with mod_rewrite
  • Background Jobs: Crunz scheduler
  • Reports: PhpSpreadsheet (Excel), TCPDF (PDF)
  • Email: Symfony Mailer

Documentation Index

Training Curriculum

Document Audience Duration
Training Overview All
Part 1: System Setup & Participants Admin ~10 min
Part 2: PT Survey & Shipment Management Admin ~10 min
Part 3: Participant — Results & Reports Participant ~5–10 min
Part 4: Evaluation, Reports & Finalization Admin ~10 min
Exercise: DTS HIV Serology All ~20–30 min

Architecture & Guides

Document Description
Architecture Guide High-level system architecture, request lifecycle, security, modules, and infrastructure
Scheme Architecture Test scheme organization, data flow, evaluation logic, and report generation
Admin Module Guide Admin panel workflows, controllers, AJAX patterns, and form validation
Translation Guide Internationalization and adding new languages

For Developers

For Administrators

For Maintainers


Directory Structure (High-Level)

ept/
├── application/
│   ├── configs/          # Application configuration
│   ├── controllers/      # Default module controllers
│   ├── models/           # Database models and business logic
│   ├── modules/          # Admin, API, Reports modules
│   ├── services/         # Business logic layer
│   └── views/            # View templates
│
├── database/
│   ├── migrations/       # SQL migration files
│   └── schema/           # Database schema definitions
│
├── docs/                 # Documentation (you are here)
│
├── library/Pt/           # Custom library code
│
├── public/               # Web root
│   ├── index.php         # Entry point
│   └── assets/           # Static files (CSS, JS, images)
│
├── scheduled-jobs/       # Crunz background tasks
│
└── vendor/               # Composer dependencies

Getting Started

Prerequisites

  • Apache 2 with mod_rewrite
  • MySQL 8+
  • PHP 8.4
  • Composer

Installation

See the main README for installation instructions.

Configuration

Key configuration files:

File Purpose
application/configs/application.ini Database, sessions, modules
application/configs/config.ini Domain-specific settings, thresholds
constants.php Global paths and version

Contributing

When adding new features or modifying existing ones:

  1. Read the architecture docs - Understand existing patterns before making changes
  2. Follow the service layer pattern - Keep controllers thin, put logic in services
  3. Use existing utilities - Check library/Pt/Commons/ and application/services/
  4. Add migrations - Database changes go in database/migrations/
  5. Update documentation - Keep these docs current with your changes

Support

For questions or issues, contact: amit (at) deforay (dot) com

GitHub: deforay/ept