3Z4LPN - ganti flag stemcell ke table baru

This commit is contained in:
sas.fajri
2026-06-30 10:42:23 +07:00
4 changed files with 84 additions and 22 deletions

View File

@@ -490,7 +490,7 @@ class Transactionv4 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'N'
AND NOT EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID AND `M_PatientName` NOT LIKE '%coba%'
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -547,7 +547,7 @@ class Transactionv4 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'N'
AND NOT EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID AND `M_PatientName` NOT LIKE '%coba%'
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -1055,7 +1055,7 @@ class Transactionv4 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'N'
AND NOT EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID AND `M_PatientName` NOT LIKE '%coba%'
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -1111,7 +1111,7 @@ class Transactionv4 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'N'
AND NOT EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID AND `M_PatientName` NOT LIKE '%coba%'
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -1863,7 +1863,7 @@ class Transactionv4 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'N'
AND NOT EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -1919,7 +1919,7 @@ class Transactionv4 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'N'
AND NOT EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -2388,7 +2388,7 @@ class Transactionv4 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'N'
AND NOT EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -2443,7 +2443,7 @@ class Transactionv4 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'N'
AND NOT EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -2888,7 +2888,7 @@ class Transactionv4 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'N'
AND NOT EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -3801,7 +3801,7 @@ class Transactionv4 extends MY_Controller
b.M_BranchCode AS branch_code,
b.M_BranchName AS branch_name,
b.M_BranchCodeLab AS branch_code_lab,
b.M_BranchIsSteemCell AS is_stemcell,
IF(os.T_OrderStemcellID IS NOT NULL, 'Y', 'N') AS is_stemcell,
oh.T_OrderHeaderTotal AS total,
at.Ais_TransactionStatus AS Ais_TransactionStatus,
c.CorporateID AS corporate_id,
@@ -3814,6 +3814,7 @@ class Transactionv4 extends MY_Controller
FROM t_orderheader oh
JOIN m_patient p ON p.M_PatientID = oh.T_OrderHeaderM_PatientID
JOIN m_branch b ON b.M_BranchID = oh.T_OrderHeaderM_BranchID
LEFT JOIN t_orderstemcell os ON os.T_OrderStemcellT_OrderHeaderID = oh.T_OrderHeaderID
LEFT JOIN corporate c ON c.CorporateID = oh.T_OrderHeaderCorporateID
LEFT JOIN mgm_mcu ON mgm_mcu.Mgm_McuID = oh.T_OrderHeaderMgm_McuID
LEFT JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -3866,8 +3867,11 @@ class Transactionv4 extends MY_Controller
}
if ($is_stemcell !== null && $is_stemcell !== '' && $is_stemcell !== 'A') {
$where_clauses[] = "b.M_BranchIsSteemCell = ?";
$params[] = $is_stemcell;
if ($is_stemcell === 'Y') {
$where_clauses[] = "os.T_OrderStemcellID IS NOT NULL";
} else {
$where_clauses[] = "os.T_OrderStemcellID IS NULL";
}
}
// Build WHERE
@@ -3881,6 +3885,7 @@ class Transactionv4 extends MY_Controller
FROM t_orderheader oh
JOIN m_patient p ON p.M_PatientID = oh.T_OrderHeaderM_PatientID
JOIN m_branch b ON b.M_BranchID = oh.T_OrderHeaderM_BranchID
LEFT JOIN t_orderstemcell os ON os.T_OrderStemcellT_OrderHeaderID = oh.T_OrderHeaderID
LEFT JOIN " . $this->db_log->database . ".ais_transaction at
ON at.Ais_TransactionOrderHeaderLabNumber = oh.T_OrderHeaderLabNumber
LEFT JOIN corporate c ON c.CorporateID = oh.T_OrderHeaderCorporateID

View File

@@ -490,7 +490,7 @@ class Transactionv5 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'Y'
AND EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID AND `M_PatientName` NOT LIKE '%coba%'
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -547,7 +547,7 @@ class Transactionv5 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'Y'
AND EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID AND `M_PatientName` NOT LIKE '%coba%'
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -1055,7 +1055,7 @@ class Transactionv5 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'Y'
AND EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID AND `M_PatientName` NOT LIKE '%coba%'
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -1111,7 +1111,7 @@ class Transactionv5 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'Y'
AND EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID AND `M_PatientName` NOT LIKE '%coba%'
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -1863,7 +1863,7 @@ class Transactionv5 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'Y'
AND EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -1919,7 +1919,7 @@ class Transactionv5 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'Y'
AND EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -2391,7 +2391,7 @@ class Transactionv5 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'Y'
AND EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -2446,7 +2446,7 @@ class Transactionv5 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'Y'
AND EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
@@ -2909,7 +2909,7 @@ class Transactionv5 extends MY_Controller
'' as PaketDispenser
FROM t_orderheader
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
AND M_BranchIsSteemCell = 'Y'
AND EXISTS (SELECT 1 FROM t_orderstemcell WHERE T_OrderStemcellT_OrderHeaderID = T_OrderHeaderID)
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID

View File

@@ -250,7 +250,7 @@ class Order extends MY_Controller
}
$userid = $this->sys_user["M_UserID"];
$sql = "SELECT M_UserLoginM_BranchID as branch_id, M_BranchCodeLab as branch_code_lab, M_BranchCodeBridging as branch_code_bridging
$sql = "SELECT M_UserLoginM_BranchID as branch_id, M_BranchCodeLab as branch_code_lab, M_BranchCodeBridging as branch_code_bridging, M_BranchIsSteemCell as is_stemcell
FROM m_user
JOIN m_branch ON M_UserLoginM_BranchID = M_BranchID AND M_BranchIsActive = 'Y'
WHERE M_UserID = $userid";
@@ -263,6 +263,7 @@ class Order extends MY_Controller
$branch_id = $dt_branch['branch_id'];
$branch_code_lab = $dt_branch['branch_code_lab'];
$branch_code_bridging = $dt_branch['branch_code_bridging'];
$branch_is_stemcell = isset($dt_branch['is_stemcell']) ? $dt_branch['is_stemcell'] : 'N';
$pre_registerid = isset($prm['preid']) ? $prm['preid'] : 0;
$header = $prm['header'];
$header['pre_register_id'] = $pre_registerid;
@@ -311,6 +312,32 @@ class Order extends MY_Controller
}
}
if ($branch_is_stemcell == 'Y') {
$test_ids_to_check = array_values(array_unique(array_map('intval', array_column($details, 't_id'))));
$test_ids_to_check = array_filter($test_ids_to_check, function($id) { return $id > 0; });
if (!empty($test_ids_to_check)) {
$ids_str = implode(',', $test_ids_to_check);
$sql_check = "SELECT T_TestID, T_TestName, T_TestNat_GroupID FROM t_test WHERE T_TestID IN ($ids_str)";
$query_check = $this->db_smartone->query($sql_check);
if (!$query_check) {
$this->sys_error_db(["status" => "ERR", "message" => "check nat_group stemcell | " . $this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
$rows_check = $query_check->result_array();
$invalid_tests = [];
foreach ($rows_check as $row_check) {
if ((int)$row_check['T_TestNat_GroupID'] !== 7) {
$invalid_tests[] = $row_check['T_TestName'];
}
}
if (!empty($invalid_tests)) {
$this->sys_error("Cabang dan pemeriksaan tidak sesuai. Cek pemeriksaan, harus group stemcell. Pemeriksaan tidak valid: " . implode(', ', $invalid_tests));
exit;
}
}
}
$this->db_smartone->trans_begin();
$sql = "SELECT M_DoctorID, M_DoctorName, M_DoctorPjIsDefaultPJ
@@ -384,6 +411,24 @@ class Order extends MY_Controller
exit;
}
if ($branch_is_stemcell == 'Y') {
$sql_stemcell = "INSERT INTO t_orderstemcell (
T_OrderStemcellT_OrderHeaderID,
T_OrderStemcellCreated,
T_OrderStemcellCreatedUserID
) VALUES (?, NOW(), ?)";
$query_stemcell = $this->db_smartone->query($sql_stemcell, [$header_id, $userid]);
if (!$query_stemcell) {
$this->db_smartone->trans_rollback();
$this->insert_log_error($this->db_smartone->last_query(), ['INSERT_T_ORDERSTEMCELL', 'order/save'], [
'header_id' => $header_id,
'error' => $this->db_smartone->error()
]);
$this->sys_error_db(["status" => "ERR", "message" => "error insert t_orderstemcell | " . $this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
}
$references = [];
if (isset($prm['reference'])) {
$references = $prm['reference'];

12
sql/t_orderstemcell.sql Normal file
View File

@@ -0,0 +1,12 @@
-- Tabel untuk menyimpan flag bahwa order ini adalah order stemcell.
-- Disimpan saat order dibuat agar tidak terpengaruh perubahan flag M_BranchIsSteCell di masa mendatang.
-- Tanggal: 2026-06-30
CREATE TABLE IF NOT EXISTS t_orderstemcell (
T_OrderStemcellID INT NOT NULL AUTO_INCREMENT,
T_OrderStemcellT_OrderHeaderID INT NOT NULL,
T_OrderStemcellCreated DATETIME NOT NULL,
T_OrderStemcellCreatedUserID INT NOT NULL,
PRIMARY KEY (T_OrderStemcellID),
UNIQUE KEY uq_orderstemcell_header (T_OrderStemcellT_OrderHeaderID)
);