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
38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
const chokidar = require('chokidar');
|
|
const paths = require('path');
|
|
const mv = require('mv');
|
|
const fs = require('fs');
|
|
const moment = require('moment');
|
|
const nrc = require('node-run-cmd');
|
|
const htmlPdf = require('html-pdf-chrome');
|
|
const options = {
|
|
port: 42020,
|
|
printOptions:{
|
|
marginBottom: 0,
|
|
marginLeft: 0,
|
|
marginTop: 0,
|
|
marginRight: 0
|
|
}
|
|
};
|
|
var now = moment().format('YYYYMMDDHHmmss');
|
|
|
|
chokidar.watch('process_pdf/' , { ignoreInitial: false, awaitWriteFinish: true, depth:0 }).on('add', (path) => {
|
|
if(paths.extname(path)=='') {
|
|
console.log('raw file processed '+path);
|
|
nrc.run('php main2.php '+path).then( function(){
|
|
mv(path, "done_pdf/"+paths.basename(path) , function (err) {
|
|
if (err) throw err;
|
|
});
|
|
});
|
|
}
|
|
else if(paths.extname(path)=='.html') {
|
|
url = "file://C:/inetpub/wwwroot/spooler_db/process_pdf/"+paths.basename(path);
|
|
console.log('generating pdf '+url);
|
|
htmlPdf.create(url, options).then((pdf) => pdf.toFile("C:\\inetpub\\wwwroot\\spooler_db\\process_pdf\\"+paths.basename(path,'.html')+".pdf")).then( function(err) {
|
|
mv(path, "done_pdf/"+paths.basename(path) , function (err) {
|
|
if (err) throw err;
|
|
})
|
|
});
|
|
|
|
}
|
|
}); |