FHM09062601IBL - fix ibl load klinik tests

This commit is contained in:
sas.fajri
2026-06-12 14:26:39 +07:00
parent 17acf294ba
commit ebd2217921

View File

@@ -1067,7 +1067,14 @@ class Order extends MY_Controller
FROM `t_orderheader` FROM `t_orderheader`
JOIN `t_orderheaderaddon` ON T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderAddOnIsActive = 'Y' JOIN `t_orderheaderaddon` ON T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderAddOnIsActive = 'Y'
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
JOIN m_patientaddress ON M_PatientAddressM_PatientID = M_PatientID AND M_PatientAddressIsActive = 'Y' AND M_PatientAddressNote = 'Utama' LEFT JOIN m_patientaddress ON M_PatientAddressID = (
SELECT pa.M_PatientAddressID
FROM m_patientaddress pa
WHERE pa.M_PatientAddressM_PatientID = M_PatientID
AND pa.M_PatientAddressIsActive = 'Y'
ORDER BY (pa.M_PatientAddressNote = 'Utama') DESC, pa.M_PatientAddressID DESC
LIMIT 1
)
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID
JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID
JOIN m_doctor pj1 ON T_OrderHeaderPjM_DoctorID = pj1.M_DoctorID JOIN m_doctor pj1 ON T_OrderHeaderPjM_DoctorID = pj1.M_DoctorID
@@ -4660,17 +4667,18 @@ GROUP BY T_SampleStationID ";
if (!$klinik_number) { $this->sys_error("klinik_number required"); exit; } if (!$klinik_number) { $this->sys_error("klinik_number required"); exit; }
// Ambil header order klinik // Ambil header order klinik
$row_header = $this->db_onedev->query( $row_header = $this->db_onedev->query(
"SELECT o.*, od.orderDoctorDiagnosePrimer "SELECT o.*, s.*, od.orderDoctorDiagnosePrimer
FROM one_klinik.`order` o FROM one_klinik.`order` o
LEFT JOIN one_klinik.order_doctor od JOIN one_klinik.setting s ON s.settingIsActive = 'Y'
ON od.orderDoctorOrderID = o.orderID LEFT JOIN one_klinik.order_doctor od
AND od.orderDoctorIsActive = 'Y' ON od.orderDoctorOrderID = o.orderID
AND od.orderDoctorType = 'FORM' AND od.orderDoctorIsActive = 'Y'
WHERE o.OrderNumber = ? AND od.orderDoctorType = 'TEXT'
LIMIT 1", WHERE o.OrderNumber = ?
[$klinik_number] LIMIT 1",
)->row_array(); [$klinik_number]
)->row_array();
if (!$row_header) { $this->sys_error("Order tidak ditemukan"); exit; } if (!$row_header) { $this->sys_error("Order tidak ditemukan"); exit; }
@@ -4791,55 +4799,64 @@ GROUP BY T_SampleStationID ";
$rst['selected_company'] = $row_company ?: []; $rst['selected_company'] = $row_company ?: [];
$rst['companies'] = $row_company ? [$row_company] : []; $rst['companies'] = $row_company ? [$row_company] : [];
// Tests dari order_detail_order — format identik registration_v37 selectPx $rst['tests'] = [];
$qry_detail = $this->db_smartone->query( $sql = "SELECT ss_price_mou.*
"SELECT odo.*, FROM one_klinik.order_penunjang
spm.px_type, spm.T_PriceIsCito AS T_TestIsCito, JOIN t_test
spm.nat_test AS spm_nat_test, ON orderPenunjangT_TestID = t_test.T_TestID
spm.child_test AS spm_child_test AND t_test.T_TestIsActive = 'Y'
FROM one_klinik.order_detail_order odo JOIN ss_price_mou
LEFT JOIN one_lab.ss_price_mou spm ON spm.Ss_PriceMouID = odo.orderDetailOrderSsPriceMouID ON Ss_PriceMouM_MouID = ?
WHERE odo.orderDetailOrderOrderID = ? AND odo.orderDetailOrderIsActive = 'Y' AND t_test.T_TestID = ss_price_mou.T_TestID
ORDER BY odo.orderDetailOrderID ASC", AND is_packet = 'N'
[$row_header['orderID']] WHERE orderPenunjangOrderID = ?
); AND orderPenunjangIsActive = 'Y'
if (!$qry_detail) { GROUP BY ss_price_mou.T_TestID";
$this->sys_error_db("tests query: " . $this->db_smartone->error()['message'], $this->db_smartone); $qry_tests = $this->db_onedev->query($sql, [
exit; $row_header['settingM_MouID'],
} $row_header['orderID']
$detail_rows = $qry_detail->result_array(); ]);
if (!$qry_tests) {
$tests = []; $this->sys_error_db("tests query: " . $this->db_onedev->error()['message'], $this->db_onedev);
foreach ($detail_rows as $d) { exit;
$nat_test = json_decode($d['spm_nat_test'] ?? '[]') ?: []; }
$child_test = json_decode($d['spm_child_test'] ?? '[]') ?: []; $get_tests_from_detail = $qry_tests->result_array();
if ($get_tests_from_detail) {
$requirement = []; foreach ($get_tests_from_detail as $value) {
if (($d['px_type'] ?? '') === 'PX') { $data_ss_price = $value;
$x = $this->db_smartone->query( $data_ss_price['requirement'] = [];
"SELECT fn_fo_requirement_get(?) x", [$d['orderDetailOrderT_TestID']] if ($data_ss_price['px_type'] == "PX") {
)->row(); $x = $this->db_smartone->query(
if ($x && $x->x !== null) $requirement = json_decode($x->x); "SELECT fn_fo_requirement_get(?) x",
} [$data_ss_price['T_TestID']]
)->row();
$tests[] = [ if ($x && $x->x != null) {
'T_TestID' => $d['orderDetailOrderT_TestID'], $data_ss_price['requirement'] = json_decode($x->x);
'T_TestName' => $d['orderDetailOrderT_TestName'], }
'px_type' => $d['px_type'] ?? '', }
'T_PriceAmount' => $d['orderDetailOrderT_PriceAmount'],
'T_PriceDisc' => $d['orderDetailOrderT_PriceDisc'], if ($data_ss_price['is_packet'] == 'N') {
'T_PriceDiscRp' => $d['orderDetailOrderT_PriceDiscRp'], $tests = $data_ss_price['T_PriceT_TestID'];
'Ss_PriceMouID' => $d['orderDetailOrderSsPriceMouID'], $panels = '';
'is_packet' => $d['orderDetailOrderIsPacket'], } else {
'packet_id' => $d['orderDetailOrderT_PacketID'] ?? '', $tests = '';
'T_TestIsCito' => $d['T_TestIsCito'] ?? 'N', $panels = $data_ss_price['T_PriceT_TestID'];
'nat_test' => $nat_test, }
'requirement' => $requirement,
'child_test' => $child_test, $x = $this->db_smartone->query(
]; "SELECT fn_fo_find_promise_by_px(?, ?) as x",
} [$tests, $panels]
$rst['tests'] = $tests; )->row();
$rst['diagnose'] = $row_header['orderDoctorDiagnosePrimer'] ?? ''; if ($x && $x->x != null) {
$data_ss_price['promise'] = $x->x;
}
$data_ss_price['nat_test'] = json_decode($data_ss_price['nat_test']);
$data_ss_price['child_test'] = json_decode($data_ss_price['child_test']);
$rst['tests'][] = $data_ss_price;
}
}
$rst['diagnose'] = $row_header['orderDoctorDiagnosePrimer'] ?? '';
$this->sys_ok(['records' => $rst]); $this->sys_ok(['records' => $rst]);
exit; exit;