39 lines
1.8 KiB
Markdown
39 lines
1.8 KiB
Markdown
# GDC CMOD - Laboratory Management System
|
|
|
|
## Purpose
|
|
CodeIgniter 4 PHP application for laboratory management (GDC CMOD - Laboratory Request Management System). Handles specimen collection tracking, request validation, and result management with role-based access control.
|
|
|
|
## Tech Stack
|
|
- **Framework**: CodeIgniter 4 (PHP 8.1+)
|
|
- **Database**: SQL Server (primary) + Firebird/InterBase (legacy patient data via ODBC)
|
|
- **Frontend**: TailwindCSS + DaisyUI 5 + Alpine.js + Font Awesome 7
|
|
- **Testing**: PHPUnit 10.x
|
|
- **Server**: Windows (XAMPP/IIS)
|
|
|
|
## Database Architecture
|
|
- **Primary DB**: SQL Server (`GDC_CMOD.dbo`) via Microsoft ODBC Driver (MSOLEDBSQL)
|
|
- **Legacy DB**: Firebird/InterBase (`GLENEAGLES` via ODBC)
|
|
- **Connection**: `\Config\Database::connect()` returns MySQLi connection (configured as SQLSRV)
|
|
- **No CI4 Models**: Uses raw SQL queries via `Database::connect()->query()`
|
|
|
|
## Key Database Tables
|
|
- `GDC_CMOD.dbo.USERS` - Users with `USERID`, `USERROLEID`, `PASSWORD`
|
|
- `GDC_CMOD.dbo.CM_REQUESTS` - Validation tracking (`ISVAL1`, `ISVAL2`, validation users/dates)
|
|
- `GDC_CMOD.dbo.TUBES` - Sample collection status
|
|
- `GDC_CMOD.dbo.V_DASHBOARD_DEV` - Dashboard data view
|
|
- `glendb.dbo.*` - Legacy Firebird patient data
|
|
|
|
## Architecture Overview
|
|
- **Session-based authentication** with role-based access control (RBAC)
|
|
- **Dual-level validation** system requiring 2 different users to validate the same request
|
|
- **Role groups** filter middleware for routing control
|
|
- **API endpoints** for JSON responses
|
|
- **Page controllers** for HTML views
|
|
|
|
## Current Pending Features (CHECKLIST.md)
|
|
- Restrict Print/Save-to-PDF to CS Role only
|
|
- Add Dedicated Print Button
|
|
- Update PDF Report Metadata (Replace 'Printed By' with validating user's name)
|
|
- Reprint Label functionality
|
|
- Print Result Audit (Track when result reports are printed/exported)
|