FHM09062601IBL - fix ibl load klinik tests
This commit is contained in:
@@ -1067,7 +1067,14 @@ class Order extends MY_Controller
|
||||
FROM `t_orderheader`
|
||||
JOIN `t_orderheaderaddon` ON T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderAddOnIsActive = 'Y'
|
||||
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_mou ON T_OrderHeaderM_MouID = M_MouID
|
||||
JOIN m_doctor pj1 ON T_OrderHeaderPjM_DoctorID = pj1.M_DoctorID
|
||||
@@ -4661,12 +4668,13 @@ GROUP BY T_SampleStationID ";
|
||||
|
||||
// Ambil header order klinik
|
||||
$row_header = $this->db_onedev->query(
|
||||
"SELECT o.*, od.orderDoctorDiagnosePrimer
|
||||
"SELECT o.*, s.*, od.orderDoctorDiagnosePrimer
|
||||
FROM one_klinik.`order` o
|
||||
JOIN one_klinik.setting s ON s.settingIsActive = 'Y'
|
||||
LEFT JOIN one_klinik.order_doctor od
|
||||
ON od.orderDoctorOrderID = o.orderID
|
||||
AND od.orderDoctorIsActive = 'Y'
|
||||
AND od.orderDoctorType = 'FORM'
|
||||
AND od.orderDoctorType = 'TEXT'
|
||||
WHERE o.OrderNumber = ?
|
||||
LIMIT 1",
|
||||
[$klinik_number]
|
||||
@@ -4791,54 +4799,63 @@ GROUP BY T_SampleStationID ";
|
||||
$rst['selected_company'] = $row_company ?: [];
|
||||
$rst['companies'] = $row_company ? [$row_company] : [];
|
||||
|
||||
// Tests dari order_detail_order — format identik registration_v37 selectPx
|
||||
$qry_detail = $this->db_smartone->query(
|
||||
"SELECT odo.*,
|
||||
spm.px_type, spm.T_PriceIsCito AS T_TestIsCito,
|
||||
spm.nat_test AS spm_nat_test,
|
||||
spm.child_test AS spm_child_test
|
||||
FROM one_klinik.order_detail_order odo
|
||||
LEFT JOIN one_lab.ss_price_mou spm ON spm.Ss_PriceMouID = odo.orderDetailOrderSsPriceMouID
|
||||
WHERE odo.orderDetailOrderOrderID = ? AND odo.orderDetailOrderIsActive = 'Y'
|
||||
ORDER BY odo.orderDetailOrderID ASC",
|
||||
[$row_header['orderID']]
|
||||
);
|
||||
if (!$qry_detail) {
|
||||
$this->sys_error_db("tests query: " . $this->db_smartone->error()['message'], $this->db_smartone);
|
||||
$rst['tests'] = [];
|
||||
$sql = "SELECT ss_price_mou.*
|
||||
FROM one_klinik.order_penunjang
|
||||
JOIN t_test
|
||||
ON orderPenunjangT_TestID = t_test.T_TestID
|
||||
AND t_test.T_TestIsActive = 'Y'
|
||||
JOIN ss_price_mou
|
||||
ON Ss_PriceMouM_MouID = ?
|
||||
AND t_test.T_TestID = ss_price_mou.T_TestID
|
||||
AND is_packet = 'N'
|
||||
WHERE orderPenunjangOrderID = ?
|
||||
AND orderPenunjangIsActive = 'Y'
|
||||
GROUP BY ss_price_mou.T_TestID";
|
||||
$qry_tests = $this->db_onedev->query($sql, [
|
||||
$row_header['settingM_MouID'],
|
||||
$row_header['orderID']
|
||||
]);
|
||||
if (!$qry_tests) {
|
||||
$this->sys_error_db("tests query: " . $this->db_onedev->error()['message'], $this->db_onedev);
|
||||
exit;
|
||||
}
|
||||
$detail_rows = $qry_detail->result_array();
|
||||
$get_tests_from_detail = $qry_tests->result_array();
|
||||
if ($get_tests_from_detail) {
|
||||
foreach ($get_tests_from_detail as $value) {
|
||||
$data_ss_price = $value;
|
||||
$data_ss_price['requirement'] = [];
|
||||
if ($data_ss_price['px_type'] == "PX") {
|
||||
$x = $this->db_smartone->query(
|
||||
"SELECT fn_fo_requirement_get(?) x",
|
||||
[$data_ss_price['T_TestID']]
|
||||
)->row();
|
||||
if ($x && $x->x != null) {
|
||||
$data_ss_price['requirement'] = json_decode($x->x);
|
||||
}
|
||||
}
|
||||
|
||||
$tests = [];
|
||||
foreach ($detail_rows as $d) {
|
||||
$nat_test = json_decode($d['spm_nat_test'] ?? '[]') ?: [];
|
||||
$child_test = json_decode($d['spm_child_test'] ?? '[]') ?: [];
|
||||
if ($data_ss_price['is_packet'] == 'N') {
|
||||
$tests = $data_ss_price['T_PriceT_TestID'];
|
||||
$panels = '';
|
||||
} else {
|
||||
$tests = '';
|
||||
$panels = $data_ss_price['T_PriceT_TestID'];
|
||||
}
|
||||
|
||||
$requirement = [];
|
||||
if (($d['px_type'] ?? '') === 'PX') {
|
||||
$x = $this->db_smartone->query(
|
||||
"SELECT fn_fo_requirement_get(?) x", [$d['orderDetailOrderT_TestID']]
|
||||
"SELECT fn_fo_find_promise_by_px(?, ?) as x",
|
||||
[$tests, $panels]
|
||||
)->row();
|
||||
if ($x && $x->x !== null) $requirement = json_decode($x->x);
|
||||
}
|
||||
if ($x && $x->x != null) {
|
||||
$data_ss_price['promise'] = $x->x;
|
||||
}
|
||||
|
||||
$tests[] = [
|
||||
'T_TestID' => $d['orderDetailOrderT_TestID'],
|
||||
'T_TestName' => $d['orderDetailOrderT_TestName'],
|
||||
'px_type' => $d['px_type'] ?? '',
|
||||
'T_PriceAmount' => $d['orderDetailOrderT_PriceAmount'],
|
||||
'T_PriceDisc' => $d['orderDetailOrderT_PriceDisc'],
|
||||
'T_PriceDiscRp' => $d['orderDetailOrderT_PriceDiscRp'],
|
||||
'Ss_PriceMouID' => $d['orderDetailOrderSsPriceMouID'],
|
||||
'is_packet' => $d['orderDetailOrderIsPacket'],
|
||||
'packet_id' => $d['orderDetailOrderT_PacketID'] ?? '',
|
||||
'T_TestIsCito' => $d['T_TestIsCito'] ?? 'N',
|
||||
'nat_test' => $nat_test,
|
||||
'requirement' => $requirement,
|
||||
'child_test' => $child_test,
|
||||
];
|
||||
$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['tests'] = $tests;
|
||||
$rst['diagnose'] = $row_header['orderDoctorDiagnosePrimer'] ?? '';
|
||||
|
||||
$this->sys_ok(['records' => $rst]);
|
||||
|
||||
Reference in New Issue
Block a user