FHM08062601IBL - kembalikan lab result ke birt

This commit is contained in:
sas.fajri
2026-06-09 11:52:46 +07:00
parent e37512624c
commit 48c61fcfd7

View File

@@ -185,40 +185,24 @@ class Birt_proxy extends MY_Controller
$prm = $this->sys_input;
$report_code = $prm['report_code'] ?? '';
$order_id = intval($prm['PT_OrderHeaderID'] ?? 0);
$username = $prm['PUsername'] ?? ($this->sys_user['userName'] ?? 'system');
$tm = round(microtime(true) * 1000);
$internal_url = $this->_build_internal_report_url_by_code($report_code, $order_id);
if ($internal_url !== false) {
if ($order_id > 0) {
$this->_populate_cache($order_id);
$patient_name = '';
if ($order_id > 0) {
$cache_id = $this->_populate_cache($order_id);
$patient_name = $this->_resolve_patient_name_by_cache($cache_id);
if ($patient_name === '') {
$patient_name = $this->_resolve_patient_name_by_order($order_id);
}
if ($patient_name === '') {
$patient_name = $this->_resolve_patient_name_from_enc_by_order($order_id);
}
$this->sys_ok(['url' => $internal_url]);
return;
}
$row = $this->db_onedev->query(
"SELECT Print_TransactionUrl FROM print_transaction WHERE Print_TransactionCode = ? LIMIT 1",
[$report_code]
)->row_array();
if (!$row) {
$url = $this->_build_birt_url_by_code($report_code, $order_id, 0, $patient_name);
if ($url === false) {
$this->sys_error("Report code tidak ditemukan: {$report_code}");
return;
}
$url = $row['Print_TransactionUrl'];
$url = str_replace('PT_OrderHeaderID', $order_id, $url);
$url = str_replace('PUsername', urlencode($username), $url);
$url = str_replace('TS', $tm, $url);
// Pre-populate cache — frontend buka URL langsung ke BIRT
// Cache hidup 5 menit, cukup untuk BIRT generate PDF
if ($order_id > 0) {
$this->_populate_cache($order_id);
}
$this->sys_ok(['url' => $url]);
}
@@ -410,11 +394,6 @@ class Birt_proxy extends MY_Controller
private function _build_birt_url_by_code($report_code, $order_id, $payment_id, $patient_name)
{
$internal_url = $this->_build_internal_report_url_by_code($report_code, $order_id);
if ($internal_url !== false) {
return $internal_url;
}
$row = $this->db_onedev->query(
"SELECT Print_TransactionUrl
FROM print_transaction
@@ -453,28 +432,6 @@ class Birt_proxy extends MY_Controller
return $url;
}
private function _build_internal_report_url_by_code($report_code, $order_id)
{
$report_routes = [
'LAB-RESULT-P-01' => '/tools/rpt_lab_result/pdf',
];
if (!isset($report_routes[$report_code]) || $order_id <= 0) {
return false;
}
$params = [
'PT_OrderHeaderID' => $order_id,
'username' => $this->_resolve_report_username(),
];
if (!empty($this->sys_input['token'])) {
$params['token'] = $this->sys_input['token'];
}
return $report_routes[$report_code] . '?' . http_build_query($params);
}
private function _apply_report_template_hotfix($report_code, $url_template)
{
$print_report_hotfix = [
@@ -494,7 +451,13 @@ class Birt_proxy extends MY_Controller
$hotfix = $print_report_hotfix[$report_code];
return str_replace($hotfix['from'], $hotfix['to'], $url_template);
$resolved_url = str_replace($hotfix['from'], $hotfix['to'], $url_template);
if (strpos($resolved_url, 'username=') === false) {
$resolved_url .= (strpos($resolved_url, '?') === false ? '?' : '&') . 'username=PUsername';
}
return $resolved_url;
}
// GET /tools/birt_proxy/header_json?PID=<order_id>