Resolve {{H_Name}} and other placeholders in document print custom header/footer HTML
This commit is contained in:
parent
441ae0668f
commit
5299a9d7c2
|
|
@ -134,6 +134,59 @@ class DoctorDocument extends BaseController
|
||||||
return round($number, 2);
|
return round($number, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replace {{PLACEHOLDER}} tokens in a custom header/footer HTML string
|
||||||
|
* with live hospital constants and patient data before passing to mPDF.
|
||||||
|
*
|
||||||
|
* @param array<string, mixed> $doc Row from patient_doc join query
|
||||||
|
*/
|
||||||
|
private function resolveDocPrintTemplatePlaceholders(string $html, array $doc): string
|
||||||
|
{
|
||||||
|
if ($html === '') {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$logoFile = defined('H_logo') ? (string) constant('H_logo') : 'logo.png';
|
||||||
|
$logoAbsPath = FCPATH . 'assets/images/' . $logoFile;
|
||||||
|
$logoHtml = '<img style="width:100px;vertical-align:top;" src="'
|
||||||
|
. base_url('assets/images/' . $logoFile) . '" />';
|
||||||
|
|
||||||
|
$age = (string) ($doc['age'] ?? '');
|
||||||
|
$gender = (string) ($doc['gender'] ?? '');
|
||||||
|
$ageSex = trim($age . ($gender !== '' ? '/' . $gender : ''));
|
||||||
|
|
||||||
|
$drSignImg = '';
|
||||||
|
$drSignFile = (string) ($doc['dr_sign'] ?? $doc['sign_image'] ?? $doc['doctor_sign'] ?? '');
|
||||||
|
if ($drSignFile !== '') {
|
||||||
|
$drSignImg = '<img style="height:40px;" src="' . base_url('assets/images/' . $drSignFile) . '" />';
|
||||||
|
}
|
||||||
|
|
||||||
|
$map = [
|
||||||
|
'{{H_Name}}' => defined('H_Name') ? (string) constant('H_Name') : '',
|
||||||
|
'{{H_address_1}}' => defined('H_address_1') ? (string) constant('H_address_1') : '',
|
||||||
|
'{{H_address_2}}' => defined('H_address_2') ? (string) constant('H_address_2') : '',
|
||||||
|
'{{H_phone_No}}' => defined('H_phone_No') ? (string) constant('H_phone_No') : '',
|
||||||
|
'{{H_Email}}' => defined('H_Email') ? (string) constant('H_Email') : '',
|
||||||
|
'{{H_logo}}' => $logoFile,
|
||||||
|
'{{H_logo_abs}}' => $logoAbsPath,
|
||||||
|
'{{hospital_logo_html}}' => $logoHtml,
|
||||||
|
'{{PATIENT_NAME}}' => (string) ($doc['p_fname'] ?? ''),
|
||||||
|
'{{pName}}' => (string) ($doc['p_fname'] ?? ''),
|
||||||
|
'{{UHID}}' => (string) ($doc['p_code'] ?? ''),
|
||||||
|
'{{AGE_GENDER}}' => $ageSex,
|
||||||
|
'{{age_sex}}' => $ageSex,
|
||||||
|
'{{phoneno}}' => (string) ($doc['phoneno'] ?? $doc['phone_no'] ?? $doc['contact_no'] ?? ''),
|
||||||
|
'{{doctor_name}}' => (string) ($doc['dr_name'] ?? ''),
|
||||||
|
'{{doctor_sign_html}}' => $drSignImg,
|
||||||
|
'{{CURRENT_DATE}}' => date('d-m-Y'),
|
||||||
|
'{{CURRENT_DATETIME}}' => date('d-m-Y H:i'),
|
||||||
|
'{{print_time}}' => date('d-m-Y H:i:s'),
|
||||||
|
'{{qr_content}}' => (string) ($doc['id'] ?? ''),
|
||||||
|
];
|
||||||
|
|
||||||
|
return str_replace(array_keys($map), array_values($map), $html);
|
||||||
|
}
|
||||||
|
|
||||||
private function hasColumn(string $table, string $column): bool
|
private function hasColumn(string $table, string $column): bool
|
||||||
{
|
{
|
||||||
if (! $this->db->tableExists($table)) {
|
if (! $this->db->tableExists($table)) {
|
||||||
|
|
@ -975,6 +1028,15 @@ class DoctorDocument extends BaseController
|
||||||
. $headerRef . '</td><td style="text-align:right">Date : ' . $issueDate . '</td></tr></tbody></table>';
|
. $headerRef . '</td><td style="text-align:right">Date : ' . $issueDate . '</td></tr></tbody></table>';
|
||||||
$content .= (string) ($patientDoc['raw_data'] ?? '');
|
$content .= (string) ($patientDoc['raw_data'] ?? '');
|
||||||
|
|
||||||
|
$customHeaderHtml = $this->resolveDocPrintTemplatePlaceholders(
|
||||||
|
(string) ($selectedPrintTemplate['header_html'] ?? ''),
|
||||||
|
$patientDoc
|
||||||
|
);
|
||||||
|
$customFooterHtml = $this->resolveDocPrintTemplatePlaceholders(
|
||||||
|
(string) ($selectedPrintTemplate['footer_html'] ?? ''),
|
||||||
|
$patientDoc
|
||||||
|
);
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'content' => $content,
|
'content' => $content,
|
||||||
'print_on_type' => $resolvedPrintType,
|
'print_on_type' => $resolvedPrintType,
|
||||||
|
|
@ -987,8 +1049,8 @@ class DoctorDocument extends BaseController
|
||||||
'print_right_margin' => $printRightMargin,
|
'print_right_margin' => $printRightMargin,
|
||||||
'print_header_margin' => $printHeaderMargin,
|
'print_header_margin' => $printHeaderMargin,
|
||||||
'print_footer_margin' => $printFooterMargin,
|
'print_footer_margin' => $printFooterMargin,
|
||||||
'custom_header_html' => (string) ($selectedPrintTemplate['header_html'] ?? ''),
|
'custom_header_html' => $customHeaderHtml,
|
||||||
'custom_footer_html' => (string) ($selectedPrintTemplate['footer_html'] ?? ''),
|
'custom_footer_html' => $customFooterHtml,
|
||||||
];
|
];
|
||||||
|
|
||||||
$mpdfTempDir = WRITEPATH . 'cache' . DIRECTORY_SEPARATOR . 'mpdf';
|
$mpdfTempDir = WRITEPATH . 'cache' . DIRECTORY_SEPARATOR . 'mpdf';
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user