FHM09062601IBL - refactor get_vaccines: autocomplete jenis vaksin by order MOU, pisahkan list_order_vaccines

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
sas.fajri
2026-06-11 14:37:39 +07:00
parent 6858814948
commit 77a595eba4

View File

@@ -3119,25 +3119,11 @@ function get_data_order_anamnesis($orderID){
// ─── Vaksin ──────────────────────────────────────────────────────────────── // ─── Vaksin ────────────────────────────────────────────────────────────────
// Master statis: injection_sites, routes, petugas (dipanggil sekali saat form dibuka)
function get_vaccine_masters() function get_vaccine_masters()
{ {
if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; }
$prm = $this->sys_input;
$search = trim($prm['search'] ?? '');
// Jenis vaksin dari one_lab.t_test
$search_esc = $this->db_onedev->escape_str($search);
$sql = "SELECT T_TestID as id, T_TestSasCode as code, T_TestName as name
FROM one_lab.t_test
WHERE T_TestIsActive = 'Y'
AND T_TestName LIKE CONCAT('%', '{$search_esc}', '%')
ORDER BY T_TestName
LIMIT 100";
$q = $this->db_onedev->query($sql);
if (!$q) { $this->sys_error_db("get t_test vaccine", $this->db_onedev); exit; }
$result['jenis_vaksin'] = $q->result_array();
// Lokasi suntik // Lokasi suntik
$q = $this->db_oneklinik->query( $q = $this->db_oneklinik->query(
"SELECT M_InjectionSiteCode as code, M_InjectionSiteName as name "SELECT M_InjectionSiteCode as code, M_InjectionSiteName as name
@@ -3176,10 +3162,54 @@ function get_data_order_anamnesis($orderID){
exit; exit;
} }
// Autocomplete jenis vaksin: filter by MOU order, param: orderid + search
function get_vaccines() function get_vaccines()
{ {
if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; }
$prm = $this->sys_input;
$orderid = intval($prm['orderid'] ?? 0);
$search = trim($prm['search'] ?? '');
if (!$orderid) { $this->sys_error("orderid required"); exit; }
// Ambil MOU dari order
$order_row = $this->db_oneklinik->query(
"SELECT orderM_MouID FROM one_klinik.`order` WHERE orderID = ? LIMIT 1",
[$orderid]
)->row_array();
if (!$order_row || !$order_row['orderM_MouID']) {
$this->sys_ok(['records' => []]);
exit;
}
$mou_id = intval($order_row['orderM_MouID']);
$search_esc = $this->db_onedev->escape_str($search);
$sql = "SELECT DISTINCT
spm.T_TestID as id,
t.T_TestSasCode as code,
t.T_TestName as name
FROM one_lab.ss_price_mou spm
JOIN one_lab.t_test t ON spm.T_TestID = t.T_TestID AND t.T_TestIsActive = 'Y'
WHERE spm.Ss_PriceMouM_MouID = {$mou_id}
AND t.T_TestName LIKE CONCAT('%', '{$search_esc}', '%')
ORDER BY t.T_TestName
LIMIT 50";
$q = $this->db_onedev->query($sql);
if (!$q) { $this->sys_error_db("get jenis vaksin", $this->db_onedev); exit; }
$this->sys_ok(['records' => $q->result_array()]);
exit;
}
// List vaksin yang sudah tersimpan untuk satu order
function list_order_vaccines()
{
if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; }
$prm = $this->sys_input; $prm = $this->sys_input;
$orderid = intval($prm['orderid'] ?? 0); $orderid = intval($prm['orderid'] ?? 0);
if (!$orderid) { $this->sys_error("orderid required"); exit; } if (!$orderid) { $this->sys_error("orderid required"); exit; }
@@ -3205,7 +3235,7 @@ function get_data_order_anamnesis($orderID){
ORDER BY ov.orderVaccineCreated ASC"; ORDER BY ov.orderVaccineCreated ASC";
$q = $this->db_oneklinik->query($sql, [$orderid]); $q = $this->db_oneklinik->query($sql, [$orderid]);
if (!$q) { $this->sys_error_db("get order_vaccine", $this->db_oneklinik); exit; } if (!$q) { $this->sys_error_db("list order_vaccine", $this->db_oneklinik); exit; }
$this->sys_ok(['records' => $q->result_array()]); $this->sys_ok(['records' => $q->result_array()]);
exit; exit;