Major Updates:
1. Extended Audit Trail System
- Added tube received events tracking from SP_TUBES table (TUBESTATUS=4)
- New audit tab "Receive" in dialog_audit.php to display tube reception history
- ApiRequestsAuditController now fetches and returns tube received events with:
* Sample type, tube status, collection date, and user information
- Audit events sorted chronologically combining validation, sampling, and receiving events
2. Enhanced PDF Generation Workflow
- Created new PdfHelper library with methods for PDF generation and posting to spooler
- Reports can now be generated via GET /report/{accessnumber}/pdf endpoint
- Updated PDF spooler API endpoint from port 3030 to 3000
- Added retry PDF button with spinner animation for failed generations
- Fixed PDF status check to use correct spooler endpoint
3. Validation UI Improvements
- Added toast notification showing PDF queued after second validation (val2)
- Retry PDF button appears when val1 and val2 are complete
- Toast notifications success/error states with auto-dismiss after 2 seconds
- Loading state with spinning icon during PDF retry operation
4. Report Template Fixes
- Fixed typo in Val2 By display (added missing ":")
- Consistent formatting with Val1 By : and Val2 By :
5. Documentation Updates
- TODO.md updated with:
* Auto generate PDF (in progress)
* Print Eng Result (pending)
* Add Receive to Audit (completed)
6. Cleanup
- Removed legacy Node.js spooler implementation (node_spooler directory)
- Deleted P0_log.txt (SQL setup scripts no longer needed in repo)
- Cleaned up .gitignore to remove stale node_spooler entries
Files Changed:
- app/Controllers/ApiRequestsAuditController.php (tube received audit)
- app/Controllers/ReportController.php (port update: 3030 → 3000)
- app/Libraries/PdfHelper.php (new library)
- app/Views/report/template.php (typo fix)
- app/Views/shared/content_requests.php (retry PDF button)
- app/Views/shared/dialog_audit.php (receive tab)
- app/Views/shared/script_requests.php (retry handler, tube events)
- app/Views/shared/script_validation.php (enhanced toast)
- TODO.md (pending/completed tasks)
- .gitignore (cleanup)
- Deleted: node_spooler/* (legacy implementation)
- Deleted: P0_log.txt (no longer needed)
CodeIgniter 4 Application Starter
What is CodeIgniter?
CodeIgniter is a PHP full-stack web framework that is light, fast, flexible and secure. More information can be found at the official site.
This repository holds a composer-installable app starter. It has been built from the development repository.
More information about the plans for version 4 can be found in CodeIgniter 4 on the forums.
You can read the user guide corresponding to the latest version of the framework.
Installation & updates
composer create-project codeigniter4/appstarter then composer update whenever
there is a new release of the framework.
When updating, check the release notes to see if there are any changes you might need to apply
to your app folder. The affected files can be copied or merged from
vendor/codeigniter4/framework/app.
Setup
Copy env to .env and tailor for your app, specifically the baseURL
and any database settings.
Role-Based Access Control
This application uses role-based access control with four user roles.
User Roles
| Role | Level | Access |
|---|---|---|
| Admin | 1 | All functions |
| Lab | 2 | All functions |
| Phlebo | 3 | Specimen collection, Dashboard |
| CS | 4 | Dashboard |
Feature Categories by Role
Admin
- Dashboard - View all requests with status filters (Pend, Coll, Recv, Inc, Fin, Val)
- User Management - Create, edit, delete users; assign roles
- Request Management - View, validate, unvalidate all requests
- Sample Management - Collect, receive, unreceive samples
- Result Management - Preview and print results
Lab
- Dashboard - View requests with status filters
- Request Validation - Validate/unvalidate requests (2-level validation)
- Sample Management - Collect samples, mark received
- Result Preview - Preview and print results
Phlebo
- Dashboard - View pending collections
- Specimen Collection - Log collected specimens
CS (Customer Service)
- Dashboard - View-only request tracking
- Status Monitoring - Filter by request status
- Patient Inquiry - View request details
Route Prefixes
- Admin:
/admin - Lab:
/lab
Important Change with index.php
index.php is no longer in the root of the project! It has been moved inside the public folder,
for better security and separation of components.
This means that you should configure your web server to "point" to your project's public folder, and not to the project root. A better practice would be to configure a virtual host to point there. A poor practice would be to point your web server to the project root and expect to enter public/..., as the rest of your logic and the framework are exposed.
Please read the user guide for a better explanation of how CI4 works!
Repository Management
We use GitHub issues, in our main repository, to track BUGS and to track approved DEVELOPMENT work packages. We use our forum to provide SUPPORT and to discuss FEATURE REQUESTS.
This repository is a "distribution" one, built by our release preparation script. Problems with it can be raised on our forum, or as issues in the main repository.
Server Requirements
PHP version 8.1 or higher is required, with the following extensions installed:
Warning
- The end of life date for PHP 7.4 was November 28, 2022.
- The end of life date for PHP 8.0 was November 26, 2023.
- If you are still using PHP 7.4 or 8.0, you should upgrade immediately.
- The end of life date for PHP 8.1 will be December 31, 2025.
Additionally, make sure that the following extensions are enabled in your PHP: