mahdahar 31acb6bf33 feat: Implement comprehensive report generation system with role-based access control
Add native CodeIgniter 4 report generation functionality replacing legacy spooler_db system.
Provides centralized report generation with audit logging and multi-language support.

New Features:
- Report generation with Indonesian and English language support
- Role-based access control (Lab, Admin, Superuser: generate; CS: print only)
- Preview mode for validation workflow
- Print audit logging to AUDIT_REQUESTS table
- Multi-page report support with proper pagination
- Dual unit system (Conventional and International units)

Controllers:
- ReportController: Main controller for report generation, preview, and print
  - generate(): Full report with audit logging
  - preview(): Preview mode without audit logging
  - print(): Print-only access for CS role
- Home::printReport(): Route handler redirecting based on user role

Libraries:
- ReportHelper: Comprehensive report data retrieval
  - Patient information (name, MR number, demographics, referral)
  - Test results with reference ranges and unit conversions
  - Collection and reception data with timestamps
  - Validation status and validator information
  - Special handling for pending samples and Chinese translations

Routes:
- /report/(:num) - Generate report (Lab, Admin, Superuser)
- /report/(:num)/preview - Preview without audit logging
- /report/(:num)/eng - English language report
- /report/print/(:num) - Print-only access (CS role)
- /print/(:num) - Redirect based on role (all roles)

Views:
- report/template.php: Professional lab report template with Gleneagles branding
  - Header and footer images
  - Patient information table
  - Test results with dual unit columns
  - Collection and reception timestamps
  - Authorization signature area
  - Preview watermark

Role Index Views:
- Removed dialog_preview.php inclusion from all role dashboards
- Consolidated print button directly linking to new report routes

Assets:
- Report-specific CSS files (normalize.min.css, style.css, pdf.css, style_qr.css)
- Gleneagles header and footer images
- Legacy spooler_db files preserved in public/spooler_db/ for reference

Tests:
- ReportTest.php: Unit tests for report generation functionality

Database:
- Uses existing tables: REQUESTS, TESTS, DICT_TESTS, SP_REQUESTS, PATIENTS
- Inserts print audit records into AUDIT_REQUESTS table

Security:
- Parameterized queries throughout (SQL injection prevention)
- Role-based access control enforced at route level
- Proper output escaping with esc() in views
2026-02-02 16:54:22 +07:00
2025-11-11 09:14:25 +07:00
2025-11-11 09:14:25 +07:00
2025-11-11 09:14:25 +07:00
2025-11-11 09:14:25 +07:00
env
2026-01-19 11:01:46 +07:00
2025-11-11 09:14:25 +07:00
2025-11-11 09:14:25 +07:00
2025-11-11 09:14:25 +07:00
2025-11-11 09:14:25 +07:00

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:

  • json (enabled by default - don't turn it off)
  • mysqlnd if you plan to use MySQL
  • libcurl if you plan to use the HTTP\CURLRequest library
Description
No description provided
Readme MIT 1.9 MiB
Languages
PHP 92.1%
Hack 2.9%
JavaScript 2.6%
CSS 1.8%
PowerShell 0.4%
Other 0.2%