7 Commits

7 changed files with 3283 additions and 37 deletions

View File

@@ -3,6 +3,7 @@ class Transactionv4 extends MY_Controller
{
var $db_onedev;
private $force_debug_ais_payload = false;
public function index()
{
echo "Transaction API";
@@ -63,6 +64,26 @@ class Transactionv4 extends MY_Controller
return implode(' ', $parts);
}
private function should_debug_ais_payload()
{
return $this->force_debug_ais_payload === true;
}
private function debug_ais_payload_response($sourceEndpoint, $method, $url, $headers, $payload)
{
$this->sys_ok(array(
'status' => 'debug',
'message' => 'Debug payload only, request not sent to AIS',
'source_endpoint' => $sourceEndpoint,
'target_method' => $method,
'target_url' => $url,
'target_headers' => array_merge(array('Content-Type: application/json'), $headers),
'target_payload' => $payload,
'curl_command' => $this->build_curl_command($url, $payload, $headers, $method)
));
exit;
}
/**
* Generic POST request function
* @param string $url API endpoint URL
@@ -313,6 +334,16 @@ class Transactionv4 extends MY_Controller
public function post_auth()
{
$dt_config = $this->get_config();
if ($this->should_debug_ais_payload()) {
return array(
'success' => true,
'debug' => true,
'message' => 'Debug payload only, auth request not sent to AIS',
'data' => array(
'token' => $dt_config['AisConfigAuthToken'] ?? null
)
);
}
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . '/api/auth/auth.php';
$headers = array(
@@ -378,8 +409,9 @@ class Transactionv4 extends MY_Controller
function post_transaction_daily_by_date($min_date = null, $max_date = null)
{
//echo "post_transaction_daily_by_date";
$debugPayload = $this->should_debug_ais_payload();
// Auth Login
$login = $this->post_auth();
$login = $debugPayload ? array('success' => true) : $this->post_auth();
//echo json_encode($login);
//exit;
@@ -542,7 +574,7 @@ class Transactionv4 extends MY_Controller
}
$raw_data = $qry->result_array();
if (count($raw_data) == 0) {
$errors = array('status' => 'error', 'message' => 'Data tidak ditemukan', 'query' => $this->db_onedev->last_query());
$errors = array('status' => 'error', 'message' => 'Data reguler tidak ditemukan', 'query' => $this->db_onedev->last_query());
echo json_encode($errors);
exit;
}
@@ -821,6 +853,28 @@ class Transactionv4 extends MY_Controller
$get_transaction = $this->get_transaction_by_labnumber($row['RegID']);
// echo json_encode($get_transaction);
if ($debugPayload) {
$method = ($get_transaction && count($get_transaction) > 0) ? 'PUT' : 'POST';
$step = $method === 'PUT' ? 'put_transaction' : 'post_transaction';
echo json_encode(array(
'status' => 'debug',
'message' => 'Debug outbound AIS requests only, nothing sent',
'source_endpoint' => 'transactionv4/post_transaction_daily_by_date',
'transactions' => array(
array(
'RegID' => $row['RegID'],
'step' => $step,
'target_method' => $method,
'target_url' => $url,
'target_headers' => array_merge(array('Content-Type: application/json'), $headers),
'target_payload' => $raw_data[$key],
'curl_command' => $this->build_curl_command($url, $raw_data[$key], $headers, $method)
)
)
));
exit;
}
if ($get_transaction && count($get_transaction) > 0) {
$result = $this->put_request($url, $raw_data[$key], $headers);
} else {
@@ -1085,7 +1139,7 @@ class Transactionv4 extends MY_Controller
}
$raw_data = $qry->result_array();
if (count($raw_data) == 0) {
$errors = array('status' => 'error', 'message' => 'Data tidak ditemukan');
$errors = array('status' => 'error', 'message' => 'Data reguler tidak ditemukan');
echo json_encode($errors);
exit;
}
@@ -1736,9 +1790,20 @@ class Transactionv4 extends MY_Controller
{
$prm = $this->sys_input;
$labnum = $prm['labnumber'];
$debugPayload = $this->should_debug_ais_payload();
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrl'];
$authUrl = $baseUrl . '/api/auth/auth.php';
$authHeaders = array(
'Header-Token: ' . $dt_config['AisConfigHeaderToken']
);
$authPayload = array(
'username' => $dt_config['AisConfigUsername'],
'password' => $dt_config['AisConfigPassword']
);
// Auth Login
$login = $this->post_auth();
$login = $debugPayload ? array('success' => true) : $this->post_auth();
if (!$login['success']) {
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'failed auth', 'query' => '', 'json' => json_encode($login)), 555);
@@ -1746,9 +1811,6 @@ class Transactionv4 extends MY_Controller
echo json_encode($errors);
exit;
}
// Get config
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . '/api/transaction_full/transaksi.php';
$headers = array(
@@ -1881,7 +1943,7 @@ class Transactionv4 extends MY_Controller
$raw_data = $qry->result_array();
if (count($raw_data) == 0) {
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderheader select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
$errors = array('status' => 'error', 'message' => 'Data tidak ditemukan');
$errors = array('status' => 'error', 'message' => 'Data reguler tidak ditemukan');
echo json_encode($errors);
exit;
}
@@ -2149,6 +2211,24 @@ class Transactionv4 extends MY_Controller
$raw_data[$key]['PaketDispenser'] = null;
$errors = [];
//exit;
if ($debugPayload) {
echo json_encode(array(
'status' => 'debug',
'message' => 'Debug outbound AIS requests only, nothing sent',
'source_endpoint' => 'transactionv4/post_transaction_by_labnumber',
'debug_steps' => array(
array(
'step' => 'post_transaction',
'target_method' => 'POST',
'target_url' => $url,
'target_headers' => array_merge(array('Content-Type: application/json'), $headers),
'target_payload' => $raw_data[$key],
'curl_command' => $this->build_curl_command($url, $raw_data[$key], $headers, 'POST')
)
)
));
exit;
}
$result = $this->post_request($url, $raw_data[$key], $headers);
@@ -2238,17 +2318,25 @@ class Transactionv4 extends MY_Controller
{
$prm = $this->sys_input;
$labnum = $prm['labnumber'];
$debugPayload = $this->should_debug_ais_payload();
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrl'];
$authUrl = $baseUrl . '/api/auth/auth.php';
$authHeaders = array(
'Header-Token: ' . $dt_config['AisConfigHeaderToken']
);
$authPayload = array(
'username' => $dt_config['AisConfigUsername'],
'password' => $dt_config['AisConfigPassword']
);
// Auth Login
$login = $this->post_auth();
$login = $debugPayload ? array('success' => true) : $this->post_auth();
if (!$login['success']) {
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'failed auth', 'query' => '', 'json' => json_encode($login)), 555);
$errors = array('status' => 'error', 'message' => 'Gagal Login');
echo json_encode($errors);
exit;
}
// Get config
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . '/api/transaction_full/transaksi.php';
$headers = array(
@@ -2378,7 +2466,7 @@ class Transactionv4 extends MY_Controller
$raw_data = $qry->result_array();
if (count($raw_data) == 0) {
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderheader select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
$errors = array('status' => 'error', 'message' => 'Data tidak ditemukan');
$errors = array('status' => 'error', 'message' => 'Data reguler tidak ditemukan');
echo json_encode($errors);
exit;
}
@@ -3138,7 +3226,25 @@ class Transactionv4 extends MY_Controller
//echo json_encode($raw_data[$key]);
//exit;
$result = $this->post_request($url, $raw_data[$key], $headers);
if ($debugPayload) {
echo json_encode(array(
'status' => 'debug',
'message' => 'Debug outbound AIS requests only, nothing sent',
'source_endpoint' => 'transactionv4/re_post_transaction_by_labnumber',
'debug_steps' => array(
array(
'step' => 'put_transaction',
'target_method' => 'PUT',
'target_url' => $url,
'target_headers' => array_merge(array('Content-Type: application/json'), $headers),
'target_payload' => $raw_data[$key],
'curl_command' => $this->build_curl_command($url, $raw_data[$key], $headers, 'PUT')
)
)
));
exit;
}
$result = $this->put_request($url, $raw_data[$key], $headers);
if ($result['error'] != null) {
@@ -3603,6 +3709,32 @@ class Transactionv4 extends MY_Controller
'Authorization: Bearer ' . $dt_config['AisConfigAuthToken']
);
$authUrl = $baseUrl . '/api/auth/auth.php';
$authHeaders = array(
'Header-Token: ' . $dt_config['AisConfigHeaderToken']
);
$authPayload = array(
'username' => $dt_config['AisConfigUsername'],
'password' => $dt_config['AisConfigPassword']
);
if ($this->should_debug_ais_payload()) {
echo json_encode(array(
'status' => 'debug',
'message' => 'Debug outbound AIS requests only, nothing sent',
'source_endpoint' => 'transactionv4/delete_transaction_by_labnumber',
'debug_steps' => array(
array(
'step' => 'delete_transaction',
'target_method' => 'DELETE',
'target_url' => $baseUrl . '/api/transaction_full/transaksi.php',
'target_headers' => array_merge(array('Content-Type: application/json'), $headers),
'target_payload' => array('RegID' => $labnumber),
'curl_command' => $this->build_curl_command($baseUrl . '/api/transaction_full/transaksi.php', array('RegID' => $labnumber), $headers, 'DELETE')
)
)
));
exit;
}
$login = $this->post_auth();
if (!$login['success']) {
$this->error_log(array('fn_name' => 'get_transaction_auth', 'message' => 'failed auth', 'query' => '', 'json' => json_encode($login)), 999);
@@ -3612,8 +3744,6 @@ class Transactionv4 extends MY_Controller
}
$url = $baseUrl . '/api/transaction_full/transaksi.php';
$result = $this->delete_request($url, ['RegID' => $labnumber], $headers);
//response {"success":true}
@@ -3671,6 +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,
oh.T_OrderHeaderTotal AS total,
at.Ais_TransactionStatus AS Ais_TransactionStatus,
c.CorporateID AS corporate_id,
@@ -3697,6 +3828,7 @@ class Transactionv4 extends MY_Controller
$corporate_id = $this->input->get('corporate_id');
$lab_number = $this->input->get('lab_number');
$patient_name = $this->input->get('patient_name');
$is_stemcell = $this->input->get('is_stemcell');
// Pagination
$page = $this->input->get('page') ? intval($this->input->get('page')) : 1;
@@ -3733,6 +3865,11 @@ class Transactionv4 extends MY_Controller
$params[] = "%$patient_name%";
}
if ($is_stemcell !== null && $is_stemcell !== '' && $is_stemcell !== 'A') {
$where_clauses[] = "b.M_BranchIsSteemCell = ?";
$params[] = $is_stemcell;
}
// Build WHERE
$where_sql = "";
if (!empty($where_clauses)) {
@@ -3743,6 +3880,7 @@ class Transactionv4 extends MY_Controller
$count_sql = "SELECT COUNT(DISTINCT oh.T_OrderHeaderID) as total
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 " . $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

@@ -3,6 +3,7 @@ class Transactionv5 extends MY_Controller
{
var $db_onedev;
private $force_debug_ais_payload = false;
public function index()
{
echo "Transaction API";
@@ -63,6 +64,26 @@ class Transactionv5 extends MY_Controller
return implode(' ', $parts);
}
private function should_debug_ais_payload()
{
return $this->force_debug_ais_payload === true;
}
private function debug_ais_payload_response($sourceEndpoint, $method, $url, $headers, $payload)
{
$this->sys_ok(array(
'status' => 'debug',
'message' => 'Debug payload only, request not sent to AIS',
'source_endpoint' => $sourceEndpoint,
'target_method' => $method,
'target_url' => $url,
'target_headers' => array_merge(array('Content-Type: application/json'), $headers),
'target_payload' => $payload,
'curl_command' => $this->build_curl_command($url, $payload, $headers, $method)
));
exit;
}
/**
* Generic POST request function
* @param string $url API endpoint URL
@@ -313,6 +334,16 @@ class Transactionv5 extends MY_Controller
public function post_auth()
{
$dt_config = $this->get_config();
if ($this->should_debug_ais_payload()) {
return array(
'success' => true,
'debug' => true,
'message' => 'Debug payload only, auth request not sent to AIS',
'data' => array(
'token' => $dt_config['AisConfigAuthToken'] ?? null
)
);
}
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . '/api/auth/auth.php';
$headers = array(
@@ -378,8 +409,9 @@ class Transactionv5 extends MY_Controller
function post_transaction_daily_by_date($min_date = null, $max_date = null)
{
//echo "post_transaction_daily_by_date";
$debugPayload = $this->should_debug_ais_payload();
// Auth Login
$login = $this->post_auth();
$login = $debugPayload ? array('success' => true) : $this->post_auth();
//echo json_encode($login);
//exit;
@@ -542,7 +574,7 @@ class Transactionv5 extends MY_Controller
}
$raw_data = $qry->result_array();
if (count($raw_data) == 0) {
$errors = array('status' => 'error', 'message' => 'Data tidak ditemukan', 'query' => $this->db_onedev->last_query());
$errors = array('status' => 'error', 'message' => 'Data stem cell tidak ditemukan', 'query' => $this->db_onedev->last_query());
echo json_encode($errors);
exit;
}
@@ -821,6 +853,28 @@ class Transactionv5 extends MY_Controller
$get_transaction = $this->get_transaction_by_labnumber($row['RegID']);
// echo json_encode($get_transaction);
if ($debugPayload) {
$method = ($get_transaction && count($get_transaction) > 0) ? 'PUT' : 'POST';
$step = $method === 'PUT' ? 'put_transaction' : 'post_transaction';
echo json_encode(array(
'status' => 'debug',
'message' => 'Debug outbound AIS requests only, nothing sent',
'source_endpoint' => 'transactionv5/post_transaction_daily_by_date',
'transactions' => array(
array(
'RegID' => $row['RegID'],
'step' => $step,
'target_method' => $method,
'target_url' => $url,
'target_headers' => array_merge(array('Content-Type: application/json'), $headers),
'target_payload' => $raw_data[$key],
'curl_command' => $this->build_curl_command($url, $raw_data[$key], $headers, $method)
)
)
));
exit;
}
if ($get_transaction && count($get_transaction) > 0) {
$result = $this->put_request($url, $raw_data[$key], $headers);
} else {
@@ -1085,7 +1139,7 @@ class Transactionv5 extends MY_Controller
}
$raw_data = $qry->result_array();
if (count($raw_data) == 0) {
$errors = array('status' => 'error', 'message' => 'Data tidak ditemukan');
$errors = array('status' => 'error', 'message' => 'Data stem cell tidak ditemukan');
echo json_encode($errors);
exit;
}
@@ -1736,9 +1790,20 @@ class Transactionv5 extends MY_Controller
{
$prm = $this->sys_input;
$labnum = $prm['labnumber'];
$debugPayload = $this->should_debug_ais_payload();
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrl'];
$authUrl = $baseUrl . '/api/auth/auth.php';
$authHeaders = array(
'Header-Token: ' . $dt_config['AisConfigHeaderToken']
);
$authPayload = array(
'username' => $dt_config['AisConfigUsername'],
'password' => $dt_config['AisConfigPassword']
);
// Auth Login
$login = $this->post_auth();
$login = $debugPayload ? array('success' => true) : $this->post_auth();
if (!$login['success']) {
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'failed auth', 'query' => '', 'json' => json_encode($login)), 555);
@@ -1746,9 +1811,6 @@ class Transactionv5 extends MY_Controller
echo json_encode($errors);
exit;
}
// Get config
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrl'];
$url = $baseUrl . '/api/transaction_full/transaksi.php';
$headers = array(
@@ -1881,7 +1943,7 @@ class Transactionv5 extends MY_Controller
$raw_data = $qry->result_array();
if (count($raw_data) == 0) {
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderheader select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
$errors = array('status' => 'error', 'message' => 'Data tidak ditemukan');
$errors = array('status' => 'error', 'message' => 'Data stem cell tidak ditemukan');
echo json_encode($errors);
exit;
}
@@ -2149,6 +2211,24 @@ class Transactionv5 extends MY_Controller
$raw_data[$key]['PaketDispenser'] = null;
$errors = [];
//exit;
if ($debugPayload) {
echo json_encode(array(
'status' => 'debug',
'message' => 'Debug outbound AIS requests only, nothing sent',
'source_endpoint' => 'transactionv5/post_transaction_by_labnumber',
'debug_steps' => array(
array(
'step' => 'post_transaction',
'target_method' => 'POST',
'target_url' => $url,
'target_headers' => array_merge(array('Content-Type: application/json'), $headers),
'target_payload' => $raw_data[$key],
'curl_command' => $this->build_curl_command($url, $raw_data[$key], $headers, 'POST')
)
)
));
exit;
}
$result = $this->post_request($url, $raw_data[$key], $headers);
@@ -2238,17 +2318,28 @@ class Transactionv5 extends MY_Controller
{
$prm = $this->sys_input;
$labnum = $prm['labnumber'];
// Auth Login
$login = $this->post_auth();
if (!$login['success']) {
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'failed auth', 'query' => '', 'json' => json_encode($login)), 555);
$errors = array('status' => 'error', 'message' => 'Gagal Login');
echo json_encode($errors);
exit;
}
// Get config
$debugPayload = true;
$dt_config = $this->get_config();
$baseUrl = $dt_config['AisConfigBaseUrl'];
$authUrl = $baseUrl . '/api/auth/auth.php';
$authHeaders = array(
'Header-Token: ' . $dt_config['AisConfigHeaderToken']
);
$authPayload = array(
'username' => $dt_config['AisConfigUsername'],
'password' => $dt_config['AisConfigPassword']
);
// Auth Login
if (!$debugPayload) {
$login = $this->post_auth();
if (!$login['success']) {
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'failed auth', 'query' => '', 'json' => json_encode($login)), 555);
$errors = array('status' => 'error', 'message' => 'Gagal Login');
echo json_encode($errors);
exit;
}
}
$url = $baseUrl . '/api/transaction_full/transaksi.php';
$headers = array(
@@ -2378,7 +2469,7 @@ class Transactionv5 extends MY_Controller
$raw_data = $qry->result_array();
if (count($raw_data) == 0) {
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderheader select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
$errors = array('status' => 'error', 'message' => 'Data tidak ditemukan');
$errors = array('status' => 'error', 'message' => 'Data stem cell tidak ditemukan');
echo json_encode($errors);
exit;
}
@@ -2647,7 +2738,25 @@ class Transactionv5 extends MY_Controller
$errors = [];
//echo json_encode($raw_data[$key]);
//exit;
//exit;
if ($debugPayload) {
echo json_encode(array(
'status' => 'debug',
'message' => 'Debug outbound AIS requests only, nothing sent',
'source_endpoint' => 'transactionv5/re_post_transaction_by_labnumber',
'debug_steps' => array(
array(
'step' => 'put_transaction',
'target_method' => 'PUT',
'target_url' => $url,
'target_headers' => array_merge(array('Content-Type: application/json'), $headers),
'target_payload' => $raw_data[$key],
'curl_command' => $this->build_curl_command($url, $raw_data[$key], $headers, 'PUT')
)
)
));
exit;
}
$result = $this->put_request($url, $raw_data[$key], $headers);
@@ -3138,6 +3247,32 @@ class Transactionv5 extends MY_Controller
//echo json_encode($raw_data[$key]);
//exit;
if ($debugPayload) {
echo json_encode(array(
'status' => 'debug',
'message' => 'Debug outbound AIS requests only, nothing sent',
'source_endpoint' => 'transactionv5/re_post_transaction_by_labnumber',
'debug_steps' => array(
array(
'step' => 'auth_login',
'target_method' => 'POST',
'target_url' => $authUrl,
'target_headers' => array_merge(array('Content-Type: application/json'), $authHeaders),
'target_payload' => $authPayload,
'curl_command' => $this->build_curl_command($authUrl, $authPayload, $authHeaders, 'POST')
),
array(
'step' => 'post_transaction',
'target_method' => 'POST',
'target_url' => $url,
'target_headers' => array_merge(array('Content-Type: application/json'), $headers),
'target_payload' => $raw_data[$key],
'curl_command' => $this->build_curl_command($url, $raw_data[$key], $headers, 'POST')
)
)
));
exit;
}
$result = $this->post_request($url, $raw_data[$key], $headers);
@@ -3603,6 +3738,32 @@ class Transactionv5 extends MY_Controller
'Authorization: Bearer ' . $dt_config['AisConfigAuthToken']
);
$authUrl = $baseUrl . '/api/auth/auth.php';
$authHeaders = array(
'Header-Token: ' . $dt_config['AisConfigHeaderToken']
);
$authPayload = array(
'username' => $dt_config['AisConfigUsername'],
'password' => $dt_config['AisConfigPassword']
);
if ($this->should_debug_ais_payload()) {
echo json_encode(array(
'status' => 'debug',
'message' => 'Debug outbound AIS requests only, nothing sent',
'source_endpoint' => 'transactionv5/delete_transaction_by_labnumber',
'debug_steps' => array(
array(
'step' => 'delete_transaction',
'target_method' => 'DELETE',
'target_url' => $baseUrl . '/api/transaction_full/transaksi.php',
'target_headers' => array_merge(array('Content-Type: application/json'), $headers),
'target_payload' => array('RegID' => $labnumber),
'curl_command' => $this->build_curl_command($baseUrl . '/api/transaction_full/transaksi.php', array('RegID' => $labnumber), $headers, 'DELETE')
)
)
));
exit;
}
$login = $this->post_auth();
if (!$login['success']) {
$this->error_log(array('fn_name' => 'get_transaction_auth', 'message' => 'failed auth', 'query' => '', 'json' => json_encode($login)), 999);
@@ -3612,8 +3773,6 @@ class Transactionv5 extends MY_Controller
}
$url = $baseUrl . '/api/transaction_full/transaksi.php';
$result = $this->delete_request($url, ['RegID' => $labnumber], $headers);
//response {"success":true}

File diff suppressed because it is too large Load Diff

View File

@@ -81,6 +81,7 @@ curl -X POST "https://devcpone.aplikasi.web.id/one-api/mockup/fo/walk_in_registr
**Catatan:**
- Pencarian mendukung kode ICD10 (contoh: `E11`), nama diagnosis, maupun kombinasi keduanya.
- Autocomplete ICD10 pada tab Demografi modul FE `one-fo-registration-walk-in-stemcell` menggunakan endpoint ini.
- Gunakan field `code` dan `display` dari hasil pencarian untuk mengisi `selected_icd10` pada payload `save`.
---

View File

@@ -0,0 +1,154 @@
DROP PROCEDURE IF EXISTS cpone.sp_sync_kelainan_details_by_orderheader;
DELIMITER $$
CREATE DEFINER=`admin`@`localhost` PROCEDURE `cpone`.`sp_sync_kelainan_details_by_orderheader`(IN `p_order_header_id` int)
BEGIN
DECLARE v_mcu_id INT DEFAULT 0;
DECLARE v_numbering VARCHAR(150) DEFAULT '';
DECLARE v_project_id INT DEFAULT 0;
SELECT oh.T_OrderHeaderMgm_McuID
INTO v_mcu_id
FROM cpone.t_orderheader oh
WHERE oh.T_OrderHeaderID = p_order_header_id
AND oh.T_OrderHeaderIsActive = 'Y'
LIMIT 1;
IF v_mcu_id IS NULL OR v_mcu_id = 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'T_OrderHeaderID tidak ditemukan atau tidak aktif';
END IF;
SELECT COALESCE(NULLIF(mn.Mcu_NumberTableName, ''), NULLIF(mm.Mgm_McuNumber, ''), '')
INTO v_numbering
FROM cpone.mgm_mcu mm
LEFT JOIN cpone_corporate.mcu_number mn
ON mn.Mcu_NumberMgm_McuID = mm.Mgm_McuID
AND mn.Mcu_NumberIsActive = 'Y'
WHERE mm.Mgm_McuID = v_mcu_id
ORDER BY mn.Mcu_NumberID DESC
LIMIT 1;
SELECT Mcu_ProjectID
INTO v_project_id
FROM cpone_dashboard.mcu_project
WHERE Mcu_ProjectMcuID = v_mcu_id
LIMIT 1;
DELETE FROM cpone_dashboard.kelainan_details
WHERE T_OrderHeaderID = p_order_header_id;
-- NONLAB
INSERT INTO cpone_dashboard.kelainan_details (
Numbering, Tx_KelainanID, Tx_Type, T_OrderHeaderID, T_OrderHeaderDate, T_OrderHeaderLabNumber,
AgePatient, M_PatientID, M_PatientNoReg, M_PatientDOB, M_PatientGender, M_PatientIdentifierValue,
M_PatientNIP, M_PatientJob, M_PatientPosisi, M_PatientDivisi, M_PatientLocation, M_PatientDepartement,
PatientName, M_PatientName, GroupResult, Nat_TestID, Nat_TestCode, Nat_TestName, T_TestName, Result,
Mcu_KelainanID, Mcu_KelainanName, Mcu_KelainanGroupSummaryID, Mcu_KelainanGroupSummaryName,
Mcu_FitnessCategoryID, Mcu_FitnessCategoryName, Mcu_FitnessCategoryEng, Mcu_FitnessCategoryLevel,
Mgm_McuID, Mcu_ProjectID
)
SELECT
v_numbering,
T_KelainanNonLabID,'NONLAB',T_OrderHeaderID,T_OrderHeaderDate,T_OrderHeaderLabNumber,
T_OrderHeaderM_PatientAge,M_PatientID,M_PatientNoReg,M_PatientDOB,M_PatientGender,M_PatientIdentifierValue,
M_PatientNIP,M_PatientJob,M_PatientPosisi,M_PatientDivisi,M_PatientLocation,M_PatientDepartement,
CONCAT(IF(M_TitleName IS NULL,'',CONCAT(M_TitleName,'. ')), IF(M_PatientPrefix IS NULL,'',CONCAT(M_PatientPrefix,' ')), M_PatientName, IF(M_PatientSuffix IS NULL,'',CONCAT(M_PatientSuffix,' '))),
M_PatientName,
IF(Group_ResultName = 'LAB', 'LAB', Nat_TestName),
Nat_TestID,Nat_TestCode,Nat_TestName,T_TestName,'',Mcu_KelainanID,Mcu_KelainanName,
Mcu_KelainanGroupSummaryID,Mcu_KelainanGroupSummaryName,Mcu_FitnessCategoryID,Mcu_FitnessCategoryName,
Mcu_FitnessCategoryEng,Mcu_FitnessCategoryLevel,
v_mcu_id, v_project_id
FROM cpone.t_kelainan_nonlab
JOIN cpone.t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderIsActive='Y'
JOIN cpone.m_patient ON T_OrderHeaderM_PatientID=M_PatientID AND M_PatientIsActive='Y'
JOIN cpone.mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID=Mcu_SummaryNonlabID AND Mcu_SummaryNonlabIsActive='Y'
JOIN cpone.nat_test ON Mcu_SummaryNonlabNat_TestID=Nat_TestID AND Nat_TestIsActive='Y'
JOIN cpone.t_test ON T_TestNat_TestID=Nat_TestID AND T_TestIsActive='Y'
JOIN cpone.group_resultdetail ON Group_ResultDetailT_TestID=T_TestID AND Group_ResultDetailIsActive='Y'
JOIN cpone.group_result ON Group_ResultDetailGroup_ResultID=Group_ResultID AND Group_ResultIsActive='Y'
JOIN cpone.mcu_kelainan ON Mcu_SummaryNonlabMcu_KelainanID=Mcu_KelainanID AND Mcu_KelainanIsActive='Y'
JOIN cpone.mcu_kelainangroupsummarydetail ON Mcu_KelainanGroupSummaryDetailMcu_KelainanID=Mcu_KelainanID AND Mcu_KelainanGroupSummaryDetailIsActive='Y'
JOIN cpone.mcu_kelainangroupsummary ON Mcu_KelainanGroupSummaryDetailMcu_KelainanGroupSummaryID=Mcu_KelainanGroupSummaryID AND Mcu_KelainanGroupSummaryIsActive='Y'
JOIN cpone.mcu_fitness_category ON Mcu_SummaryNonlabMcu_FitnessCategoryID=Mcu_FitnessCategoryID AND Mcu_FitnessCategoryIsActive='Y'
LEFT JOIN cpone.m_title ON M_PatientM_TitleID=M_TitleID AND M_TitleIsActive='Y'
WHERE T_KelainanNonLabIsActive='Y' AND T_OrderHeaderID=p_order_header_id;
-- LAB
INSERT INTO cpone_dashboard.kelainan_details (
Numbering, Tx_KelainanID, Tx_Type, T_OrderHeaderID, T_OrderHeaderDate, T_OrderHeaderLabNumber,
AgePatient, M_PatientID, M_PatientNoReg, M_PatientDOB, M_PatientGender, M_PatientIdentifierValue,
M_PatientNIP, M_PatientJob, M_PatientPosisi, M_PatientDivisi, M_PatientLocation, M_PatientDepartement,
PatientName, M_PatientName, GroupResult, Nat_TestID, Nat_TestCode, Nat_TestName, T_TestName, Result,
Mcu_KelainanID, Mcu_KelainanName, Mcu_KelainanGroupSummaryID, Mcu_KelainanGroupSummaryName,
Mcu_FitnessCategoryID, Mcu_FitnessCategoryName, Mcu_FitnessCategoryEng, Mcu_FitnessCategoryLevel,
Mgm_McuID, Mcu_ProjectID
)
SELECT v_numbering,T_KelainanLabID,'LAB',T_OrderHeaderID,T_OrderHeaderDate,T_OrderHeaderLabNumber,
T_OrderHeaderM_PatientAge,M_PatientID,M_PatientNoReg,M_PatientDOB,M_PatientGender,M_PatientIdentifierValue,
M_PatientNIP,M_PatientJob,M_PatientPosisi,M_PatientDivisi,M_PatientLocation,M_PatientDepartement,
CONCAT(IF(M_TitleName IS NULL,'',CONCAT(M_TitleName,'. ')), IF(M_PatientPrefix IS NULL,'',CONCAT(M_PatientPrefix,' ')), M_PatientName, IF(M_PatientSuffix IS NULL,'',CONCAT(M_PatientSuffix,' '))),
M_PatientName,IF(Group_ResultName='LAB','LAB',Nat_TestName),Nat_TestID,Nat_TestCode,Nat_TestName,T_TestName,
IFNULL(T_OrderDetailResult,''),Mcu_KelainanID,Mcu_KelainanName,Mcu_KelainanGroupSummaryID,
Mcu_KelainanGroupSummaryName,Mcu_FitnessCategoryID,Mcu_FitnessCategoryName,Mcu_FitnessCategoryEng,
Mcu_FitnessCategoryLevel,
v_mcu_id, v_project_id
FROM cpone.t_kelainan_lab
JOIN cpone.t_orderdetail ON T_KelainanLabT_OrderDetailID=T_OrderDetailID AND T_OrderDetailIsActive='Y'
JOIN cpone.t_orderheader ON T_KelainanLabT_OrderHeaderID=T_OrderHeaderID AND T_OrderHeaderIsActive='Y'
JOIN cpone.m_patient ON T_OrderHeaderM_PatientID=M_PatientID AND M_PatientIsActive='Y'
JOIN cpone.mcu_summarylab ON T_KelainanLabMcu_SummaryLabID=Mcu_SummaryLabID AND Mcu_SummaryLabIsActive='Y'
JOIN cpone.nat_test ON Mcu_SummaryLabNat_TestID=Nat_TestID AND Nat_TestIsActive='Y'
JOIN cpone.t_test ON T_TestNat_TestID=Nat_TestID AND T_TestIsActive='Y'
JOIN cpone.group_resultdetail ON Group_ResultDetailT_TestID=T_TestID AND Group_ResultDetailIsActive='Y'
JOIN cpone.group_result ON Group_ResultDetailGroup_ResultID=Group_ResultID AND Group_ResultIsActive='Y'
JOIN cpone.mcu_kelainan ON Mcu_SummaryLabMcu_KelainanID=Mcu_KelainanID AND Mcu_KelainanIsActive='Y'
JOIN cpone.mcu_kelainangroupsummarydetail ON Mcu_KelainanGroupSummaryDetailMcu_KelainanID=Mcu_KelainanID AND Mcu_KelainanGroupSummaryDetailIsActive='Y'
JOIN cpone.mcu_kelainangroupsummary ON Mcu_KelainanGroupSummaryDetailMcu_KelainanGroupSummaryID=Mcu_KelainanGroupSummaryID AND Mcu_KelainanGroupSummaryIsActive='Y'
JOIN cpone.mcu_fitness_category ON Mcu_SummaryLabMcu_FitnessCategoryID=Mcu_FitnessCategoryID AND Mcu_FitnessCategoryIsActive='Y'
LEFT JOIN cpone.m_title ON M_PatientM_TitleID=M_TitleID AND M_TitleIsActive='Y'
WHERE T_KelainanLabIsActive='Y' AND T_OrderHeaderID=p_order_header_id
GROUP BY T_KelainanLabID;
-- FISIK
INSERT INTO cpone_dashboard.kelainan_details (
Numbering, Tx_KelainanID, Tx_Type, T_OrderHeaderID, T_OrderHeaderDate, T_OrderHeaderLabNumber,
AgePatient, M_PatientID, M_PatientNoReg, M_PatientDOB, M_PatientGender, M_PatientIdentifierValue,
M_PatientNIP, M_PatientJob, M_PatientPosisi, M_PatientDivisi, M_PatientLocation, M_PatientDepartement,
PatientName, M_PatientName, GroupResult, Nat_TestID, Nat_TestCode, Nat_TestName, T_TestName, Result,
Mcu_KelainanID, Mcu_KelainanName, Mcu_KelainanGroupSummaryID, Mcu_KelainanGroupSummaryName,
Mcu_FitnessCategoryID, Mcu_FitnessCategoryName, Mcu_FitnessCategoryEng, Mcu_FitnessCategoryLevel,
Mgm_McuID, Mcu_ProjectID
)
SELECT v_numbering,T_KelainanFiskID,'FISIK',T_OrderHeaderID,T_OrderHeaderDate,T_OrderHeaderLabNumber,
T_OrderHeaderM_PatientAge,M_PatientID,M_PatientNoReg,M_PatientDOB,M_PatientGender,M_PatientIdentifierValue,
M_PatientNIP,M_PatientJob,M_PatientPosisi,M_PatientDivisi,M_PatientLocation,M_PatientDepartement,
CONCAT(IF(M_TitleName IS NULL,'',CONCAT(M_TitleName,'. ')), IF(M_PatientPrefix IS NULL,'',CONCAT(M_PatientPrefix,' ')), M_PatientName, IF(M_PatientSuffix IS NULL,'',CONCAT(M_PatientSuffix,' '))),
M_PatientName,IF(Group_ResultName='LAB','LAB',Nat_TestName),Nat_TestID,Nat_TestCode,Nat_TestName,
CONCAT(IF(label IS NULL, Mcu_KelainanGroupName, CONCAT(label, ' - ',IF(level = 1, parent_level_1,IF(level = 2, parent_level_2, IF(level = 3,parent_level_3,parent_level_4)))))),
IF(Mcu_FisikValueNote = '',Mcu_FisikValueLabel,Mcu_FisikValueNote),Mcu_KelainanID,Mcu_KelainanName,
Mcu_KelainanGroupSummaryID,Mcu_KelainanGroupSummaryName,Mcu_FitnessCategoryID,Mcu_FitnessCategoryName,
Mcu_FitnessCategoryEng,Mcu_FitnessCategoryLevel,
v_mcu_id, v_project_id
FROM cpone.t_kelainan_fisik
JOIN cpone.t_orderheader ON T_KelainanFiskT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderIsActive='Y'
JOIN cpone.so_resultentry ON T_KelainanFiskSo_ResultEntryID = So_ResultEntryID AND So_ResultEntryIsActive='Y'
JOIN cpone.t_orderdetail ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND T_OrderDetailIsActive='Y'
JOIN cpone.nat_test ON Nat_TestCode = T_OrderDetailT_TestCode AND Nat_TestIsActive='Y'
JOIN cpone.t_test ON T_TestNat_TestID = Nat_TestID AND T_TestIsActive='Y'
JOIN cpone.group_resultdetail ON Group_ResultDetailT_TestID = T_TestID AND Group_ResultDetailIsActive='Y'
JOIN cpone.group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultIsActive='Y'
JOIN cpone.m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive='Y'
JOIN cpone.mcu_fisiksummary ON T_KelainanFiskMcu_FisikSummaryID = Mcu_FisikSummaryID AND Mcu_FisikSummaryIsActive='Y'
JOIN cpone.mcu_fisiksummarydetail ON Mcu_FisikSummaryDetailMcu_FisikSummaryID = Mcu_FisikSummaryID AND Mcu_FisikSummaryDetailIsActive='Y'
JOIN cpone.mcu_kelainan ON Mcu_FisikSummaryMcu_KelainanID = Mcu_KelainanID AND Mcu_KelainanIsActive='Y'
JOIN cpone.mcu_kelainangroup ON Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID AND Mcu_KelainanGroupIsActive='Y'
JOIN cpone.mcu_kelainangroupsummarydetail ON Mcu_KelainanGroupSummaryDetailMcu_KelainanID = Mcu_KelainanID AND Mcu_KelainanGroupSummaryDetailIsActive='Y'
JOIN cpone.mcu_kelainangroupsummary ON Mcu_KelainanGroupSummaryDetailMcu_KelainanGroupSummaryID = Mcu_KelainanGroupSummaryID AND Mcu_KelainanGroupSummaryIsActive='Y'
JOIN cpone.mcu_fitness_category ON Mcu_FisikSummaryMcu_FitnessCategoryID = Mcu_FitnessCategoryID AND Mcu_FitnessCategoryIsActive='Y'
JOIN cpone.mcu_fisikvalue ON Mcu_FisikValueT_OrderHeaderID = T_OrderHeaderID AND Mcu_FisikValueIsActive='Y' AND Mcu_FisikValueCode = Mcu_FisikSummaryDetailCode
LEFT JOIN cpone.fisik_template_map ON id_code = Mcu_FisikSummaryDetailCode
LEFT JOIN cpone.m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive='Y'
WHERE T_KelainanFiskIsActive='Y' AND T_OrderHeaderID=p_order_header_id;
END$$
DELIMITER ;

View File

@@ -0,0 +1,150 @@
DROP PROCEDURE `sp_sync_kelainan_details_by_orderheader`;
DELIMITER ;;
CREATE PROCEDURE `sp_sync_kelainan_details_by_orderheader` (IN `p_order_header_id` int)
BEGIN
DECLARE v_mcu_id INT DEFAULT 0;
DECLARE v_numbering VARCHAR(150) DEFAULT '';
DECLARE v_project_id INT DEFAULT 0;
SELECT oh.T_OrderHeaderMgm_McuID
INTO v_mcu_id
FROM cpone.t_orderheader oh
WHERE oh.T_OrderHeaderID = p_order_header_id
AND oh.T_OrderHeaderIsActive = 'Y'
LIMIT 1;
IF v_mcu_id IS NULL OR v_mcu_id = 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'T_OrderHeaderID tidak ditemukan atau tidak aktif';
END IF;
SELECT COALESCE(NULLIF(mn.Mcu_NumberTableName, ''), NULLIF(mm.Mgm_McuNumber, ''), '')
INTO v_numbering
FROM cpone.mgm_mcu mm
LEFT JOIN cpone_corporate.mcu_number mn
ON mn.Mcu_NumberMgm_McuID = mm.Mgm_McuID
AND mn.Mcu_NumberIsActive = 'Y'
WHERE mm.Mgm_McuID = v_mcu_id
ORDER BY mn.Mcu_NumberID DESC
LIMIT 1;
SELECT Mcu_ProjectID
INTO v_project_id
FROM cpone_dashboard.mcu_project
WHERE Mcu_ProjectMcuID = v_mcu_id
LIMIT 1;
DELETE FROM cpone_dashboard.kelainan_details
WHERE T_OrderHeaderID = p_order_header_id;
INSERT INTO cpone_dashboard.kelainan_details (
Numbering, Tx_KelainanID, Tx_Type, T_OrderHeaderID, T_OrderHeaderDate, T_OrderHeaderLabNumber,
AgePatient, M_PatientID, M_PatientNoReg, M_PatientDOB, M_PatientGender, M_PatientIdentifierValue,
M_PatientNIP, M_PatientJob, M_PatientPosisi, M_PatientDivisi, M_PatientLocation, M_PatientDepartement,
PatientName, M_PatientName, GroupResult, Nat_TestID, Nat_TestCode, Nat_TestName, T_TestName, Result,
Mcu_KelainanID, Mcu_KelainanName, Mcu_KelainanGroupSummaryID, Mcu_KelainanGroupSummaryName,
Mcu_FitnessCategoryID, Mcu_FitnessCategoryName, Mcu_FitnessCategoryEng, Mcu_FitnessCategoryLevel,
Mgm_McuID, Mcu_ProjectID
)
SELECT
v_numbering,
T_KelainanNonLabID,'NONLAB',T_OrderHeaderID,T_OrderHeaderDate,T_OrderHeaderLabNumber,
T_OrderHeaderM_PatientAge,M_PatientID,M_PatientNoReg,M_PatientDOB,M_PatientGender,M_PatientIdentifierValue,
M_PatientNIP,M_PatientJob,M_PatientPosisi,M_PatientDivisi,M_PatientLocation,M_PatientDepartement,
CONCAT(IF(M_TitleName IS NULL,'',CONCAT(M_TitleName,'. ')), IF(M_PatientPrefix IS NULL,'',CONCAT(M_PatientPrefix,' ')), M_PatientName, IF(M_PatientSuffix IS NULL,'',CONCAT(M_PatientSuffix,' '))),
M_PatientName,
IF(Group_ResultName = 'LAB', 'LAB', Nat_TestName),
Nat_TestID,Nat_TestCode,Nat_TestName,T_TestName,'',Mcu_KelainanID,Mcu_KelainanName,
Mcu_KelainanGroupSummaryID,Mcu_KelainanGroupSummaryName,Mcu_FitnessCategoryID,Mcu_FitnessCategoryName,
Mcu_FitnessCategoryEng,Mcu_FitnessCategoryLevel,
v_mcu_id, v_project_id
FROM cpone.t_kelainan_nonlab
JOIN cpone.t_orderheader ON T_KelainanNonLabT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderIsActive='Y'
JOIN cpone.m_patient ON T_OrderHeaderM_PatientID=M_PatientID AND M_PatientIsActive='Y'
JOIN cpone.mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID=Mcu_SummaryNonlabID AND Mcu_SummaryNonlabIsActive='Y'
JOIN cpone.nat_test ON Mcu_SummaryNonlabNat_TestID=Nat_TestID AND Nat_TestIsActive='Y'
JOIN cpone.t_test ON T_TestNat_TestID=Nat_TestID AND T_TestIsActive='Y'
JOIN cpone.group_resultdetail ON Group_ResultDetailT_TestID=T_TestID AND Group_ResultDetailIsActive='Y'
JOIN cpone.group_result ON Group_ResultDetailGroup_ResultID=Group_ResultID AND Group_ResultIsActive='Y'
JOIN cpone.mcu_kelainan ON Mcu_SummaryNonlabMcu_KelainanID=Mcu_KelainanID AND Mcu_KelainanIsActive='Y'
JOIN cpone.mcu_kelainangroupsummarydetail ON Mcu_KelainanGroupSummaryDetailMcu_KelainanID=Mcu_KelainanID AND Mcu_KelainanGroupSummaryDetailIsActive='Y'
JOIN cpone.mcu_kelainangroupsummary ON Mcu_KelainanGroupSummaryDetailMcu_KelainanGroupSummaryID=Mcu_KelainanGroupSummaryID AND Mcu_KelainanGroupSummaryIsActive='Y'
JOIN cpone.mcu_fitness_category ON Mcu_SummaryNonlabMcu_FitnessCategoryID=Mcu_FitnessCategoryID AND Mcu_FitnessCategoryIsActive='Y'
LEFT JOIN cpone.m_title ON M_PatientM_TitleID=M_TitleID AND M_TitleIsActive='Y'
WHERE T_KelainanNonLabIsActive='Y' AND T_OrderHeaderID=p_order_header_id;
INSERT INTO cpone_dashboard.kelainan_details (
Numbering, Tx_KelainanID, Tx_Type, T_OrderHeaderID, T_OrderHeaderDate, T_OrderHeaderLabNumber,
AgePatient, M_PatientID, M_PatientNoReg, M_PatientDOB, M_PatientGender, M_PatientIdentifierValue,
M_PatientNIP, M_PatientJob, M_PatientPosisi, M_PatientDivisi, M_PatientLocation, M_PatientDepartement,
PatientName, M_PatientName, GroupResult, Nat_TestID, Nat_TestCode, Nat_TestName, T_TestName, Result,
Mcu_KelainanID, Mcu_KelainanName, Mcu_KelainanGroupSummaryID, Mcu_KelainanGroupSummaryName,
Mcu_FitnessCategoryID, Mcu_FitnessCategoryName, Mcu_FitnessCategoryEng, Mcu_FitnessCategoryLevel,
Mgm_McuID, Mcu_ProjectID
)
SELECT v_numbering,T_KelainanLabID,'LAB',T_OrderHeaderID,T_OrderHeaderDate,T_OrderHeaderLabNumber,
T_OrderHeaderM_PatientAge,M_PatientID,M_PatientNoReg,M_PatientDOB,M_PatientGender,M_PatientIdentifierValue,
M_PatientNIP,M_PatientJob,M_PatientPosisi,M_PatientDivisi,M_PatientLocation,M_PatientDepartement,
CONCAT(IF(M_TitleName IS NULL,'',CONCAT(M_TitleName,'. ')), IF(M_PatientPrefix IS NULL,'',CONCAT(M_PatientPrefix,' ')), M_PatientName, IF(M_PatientSuffix IS NULL,'',CONCAT(M_PatientSuffix,' '))),
M_PatientName,IF(Group_ResultName='LAB','LAB',Nat_TestName),Nat_TestID,Nat_TestCode,Nat_TestName,T_TestName,
IFNULL(T_OrderDetailResult,''),Mcu_KelainanID,Mcu_KelainanName,Mcu_KelainanGroupSummaryID,
Mcu_KelainanGroupSummaryName,Mcu_FitnessCategoryID,Mcu_FitnessCategoryName,Mcu_FitnessCategoryEng,
Mcu_FitnessCategoryLevel,
v_mcu_id, v_project_id
FROM cpone.t_kelainan_lab
JOIN cpone.t_orderdetail ON T_KelainanLabT_OrderDetailID=T_OrderDetailID AND T_OrderDetailIsActive='Y'
JOIN cpone.t_orderheader ON T_KelainanLabT_OrderHeaderID=T_OrderHeaderID AND T_OrderHeaderIsActive='Y'
JOIN cpone.m_patient ON T_OrderHeaderM_PatientID=M_PatientID AND M_PatientIsActive='Y'
JOIN cpone.mcu_summarylab ON T_KelainanLabMcu_SummaryLabID=Mcu_SummaryLabID AND Mcu_SummaryLabIsActive='Y'
JOIN cpone.nat_test ON Mcu_SummaryLabNat_TestID=Nat_TestID AND Nat_TestIsActive='Y'
JOIN cpone.t_test ON T_TestNat_TestID=Nat_TestID AND T_TestIsActive='Y'
JOIN cpone.group_resultdetail ON Group_ResultDetailT_TestID=T_TestID AND Group_ResultDetailIsActive='Y'
JOIN cpone.group_result ON Group_ResultDetailGroup_ResultID=Group_ResultID AND Group_ResultIsActive='Y'
JOIN cpone.mcu_kelainan ON Mcu_SummaryLabMcu_KelainanID=Mcu_KelainanID AND Mcu_KelainanIsActive='Y'
JOIN cpone.mcu_kelainangroupsummarydetail ON Mcu_KelainanGroupSummaryDetailMcu_KelainanID=Mcu_KelainanID AND Mcu_KelainanGroupSummaryDetailIsActive='Y'
JOIN cpone.mcu_kelainangroupsummary ON Mcu_KelainanGroupSummaryDetailMcu_KelainanGroupSummaryID=Mcu_KelainanGroupSummaryID AND Mcu_KelainanGroupSummaryIsActive='Y'
JOIN cpone.mcu_fitness_category ON Mcu_SummaryLabMcu_FitnessCategoryID=Mcu_FitnessCategoryID AND Mcu_FitnessCategoryIsActive='Y'
LEFT JOIN cpone.m_title ON M_PatientM_TitleID=M_TitleID AND M_TitleIsActive='Y'
WHERE T_KelainanLabIsActive='Y' AND T_OrderHeaderID=p_order_header_id
GROUP BY T_KelainanLabID;
INSERT INTO cpone_dashboard.kelainan_details (
Numbering, Tx_KelainanID, Tx_Type, T_OrderHeaderID, T_OrderHeaderDate, T_OrderHeaderLabNumber,
AgePatient, M_PatientID, M_PatientNoReg, M_PatientDOB, M_PatientGender, M_PatientIdentifierValue,
M_PatientNIP, M_PatientJob, M_PatientPosisi, M_PatientDivisi, M_PatientLocation, M_PatientDepartement,
PatientName, M_PatientName, GroupResult, Nat_TestID, Nat_TestCode, Nat_TestName, T_TestName, Result,
Mcu_KelainanID, Mcu_KelainanName, Mcu_KelainanGroupSummaryID, Mcu_KelainanGroupSummaryName,
Mcu_FitnessCategoryID, Mcu_FitnessCategoryName, Mcu_FitnessCategoryEng, Mcu_FitnessCategoryLevel,
Mgm_McuID, Mcu_ProjectID
)
SELECT v_numbering,T_KelainanFiskID,'FISIK',T_OrderHeaderID,T_OrderHeaderDate,T_OrderHeaderLabNumber,
T_OrderHeaderM_PatientAge,M_PatientID,M_PatientNoReg,M_PatientDOB,M_PatientGender,M_PatientIdentifierValue,
M_PatientNIP,M_PatientJob,M_PatientPosisi,M_PatientDivisi,M_PatientLocation,M_PatientDepartement,
CONCAT(IF(M_TitleName IS NULL,'',CONCAT(M_TitleName,'. ')), IF(M_PatientPrefix IS NULL,'',CONCAT(M_PatientPrefix,' ')), M_PatientName, IF(M_PatientSuffix IS NULL,'',CONCAT(M_PatientSuffix,' '))),
M_PatientName,IF(Group_ResultName='LAB','LAB',Nat_TestName),Nat_TestID,Nat_TestCode,Nat_TestName,
CONCAT(IF(label IS NULL, Mcu_KelainanGroupName, CONCAT(label, ' - ',IF(level = 1, parent_level_1,IF(level = 2, parent_level_2, IF(level = 3,parent_level_3,parent_level_4)))))),
IF(Mcu_FisikValueNote = '',Mcu_FisikValueLabel,Mcu_FisikValueNote),Mcu_KelainanID,Mcu_KelainanName,
Mcu_KelainanGroupSummaryID,Mcu_KelainanGroupSummaryName,Mcu_FitnessCategoryID,Mcu_FitnessCategoryName,
Mcu_FitnessCategoryEng,Mcu_FitnessCategoryLevel,
v_mcu_id, v_project_id
FROM cpone.t_kelainan_fisik
JOIN cpone.t_orderheader ON T_KelainanFiskT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderIsActive='Y'
JOIN cpone.so_resultentry ON T_KelainanFiskSo_ResultEntryID = So_ResultEntryID AND So_ResultEntryIsActive='Y'
JOIN cpone.t_orderdetail ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND T_OrderDetailIsActive='Y'
JOIN cpone.nat_test ON Nat_TestCode = T_OrderDetailT_TestCode AND Nat_TestIsActive='Y'
JOIN cpone.t_test ON T_TestNat_TestID = Nat_TestID AND T_TestIsActive='Y'
JOIN cpone.group_resultdetail ON Group_ResultDetailT_TestID = T_TestID AND Group_ResultDetailIsActive='Y'
JOIN cpone.group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultIsActive='Y'
JOIN cpone.m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive='Y'
JOIN cpone.mcu_fisiksummary ON T_KelainanFiskMcu_FisikSummaryID = Mcu_FisikSummaryID AND Mcu_FisikSummaryIsActive='Y'
JOIN cpone.mcu_fisiksummarydetail ON Mcu_FisikSummaryDetailMcu_FisikSummaryID = Mcu_FisikSummaryID AND Mcu_FisikSummaryDetailIsActive='Y'
JOIN cpone.mcu_kelainan ON Mcu_FisikSummaryMcu_KelainanID = Mcu_KelainanID AND Mcu_KelainanIsActive='Y'
JOIN cpone.mcu_kelainangroup ON Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID AND Mcu_KelainanGroupIsActive='Y'
JOIN cpone.mcu_kelainangroupsummarydetail ON Mcu_KelainanGroupSummaryDetailMcu_KelainanID = Mcu_KelainanID AND Mcu_KelainanGroupSummaryDetailIsActive='Y'
JOIN cpone.mcu_kelainangroupsummary ON Mcu_KelainanGroupSummaryDetailMcu_KelainanGroupSummaryID = Mcu_KelainanGroupSummaryID AND Mcu_KelainanGroupSummaryIsActive='Y'
JOIN cpone.mcu_fitness_category ON Mcu_FisikSummaryMcu_FitnessCategoryID = Mcu_FitnessCategoryID AND Mcu_FitnessCategoryIsActive='Y'
JOIN cpone.mcu_fisikvalue ON Mcu_FisikValueT_OrderHeaderID = T_OrderHeaderID AND Mcu_FisikValueIsActive='Y' AND Mcu_FisikValueCode = Mcu_FisikSummaryDetailCode
LEFT JOIN cpone.fisik_template_map ON id_code = Mcu_FisikSummaryDetailCode
LEFT JOIN cpone.m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive='Y'
WHERE T_KelainanFiskIsActive='Y' AND T_OrderHeaderID=p_order_header_id;
END;;
DELIMITER ;

View File

@@ -0,0 +1,64 @@
# Staging → Master: Perubahan yang Belum Masuk Master
Dokumen ini berisi ringkasan perubahan di branch `staging` yang belum ada di `master`.
Dibuat: 2026-06-25
---
## Commit yang Belum Ada di Master
| Commit | Task Code | Deskripsi |
|--------|-----------|-----------|
| `edc331f` | FHM17062601CPONE | Tambah Resumeindividucponev8 dengan call sp_sync_kelainan_details_by_orderheader di generateFitnessCategory, dan simpan SQL update SP |
| `23992e5` | C1J0ET | Update dokumentasi ICD10 tambah catatan autocomplete FE |
| `a413465` | C1J0ET | Tambah fungsi search_icd10 dan save_icd10 di walk_in_registration_stemcell order, buat tabel t_orderheader_icd10, dan dokumentasi API untuk FE |
| `9d524de` | — | Merge branch 'revisi_transactionv5' into staging |
| `360c4b0` | 3Z4LPN | Fix AisConfigBaseUrlSC ke AisConfigBaseUrl di Transactionv5 |
| `c3b82d8` | 3Z4LPN | Fix filter stemcell gagal karena CI driver state setelah SP |
| `af27cbe` | 3Z4LPN | Fix syntax error arrow function php < 7.4 |
---
## File yang Berubah (8 file, +3123 / -18 baris)
| File | Perubahan |
|------|-----------|
| `application/controllers/ais/Transactionv4.php` | 28 baris (±) |
| `application/controllers/ais/Transactionv5.php` | 28 baris (±) |
| `application/controllers/mockup/fo/walk_in_registration_stemcell/Order.php` | +76 baris |
| `application/controllers/mockup/fo/walk_in_registration_stemcell/Px.php` | 9 baris (±) |
| `application/controllers/mockup/mcuoffline/Resumeindividucponev8.php` | +2580 baris (file baru) |
| `docs_icd10_walk_in_registration_stemcell.md` | +128 baris (file baru) |
| `scripts/sql/2026-06-25_create_t_orderheader_icd10.sql` | +16 baris (file baru) |
| `scripts/sql/2026-06-25_update_sp_sync_kelainan_details_by_orderheader.sql` | +154 baris (file baru) |
| `scripts/sql/2026-06-25_update_sp_sync_kelainan_details_by_orderheader_adminer.sql` | +150 baris (file baru) |
---
## Ringkasan Perubahan per Task
### 3Z4LPN — Fix Transactionv5 & Stemcell
- `Transactionv5.php` — fix `AisConfigBaseUrlSC``AisConfigBaseUrl`, fix syntax error arrow function PHP < 7.4, fix filter stemcell gagal karena CI driver state setelah SP
- `Px.php` — perubahan terkait fix stemcell
### C1J0ET — ICD10 Walk-in Registration Stemcell
- `Order.php` — tambah fungsi `search_icd10` dan `save_icd10`, ICD10 otomatis disimpan ke tabel `t_orderheader_icd10` saat save order
- `docs_icd10_walk_in_registration_stemcell.md` — dokumentasi API untuk FE
- `scripts/sql/2026-06-25_create_t_orderheader_icd10.sql` — DDL tabel `t_orderheader_icd10`
### FHM17062601CPONE — CPone Dashboard Live Sync
- `Resumeindividucponev8.php` — clone dari v7, tambah call `sp_sync_kelainan_details_by_orderheader` di akhir `generateFitnessCategory`
- `scripts/sql/2026-06-25_update_sp_sync_kelainan_details_by_orderheader.sql` — update SP target insert ke `cpone_dashboard` (untuk MySQL CLI)
- `scripts/sql/2026-06-25_update_sp_sync_kelainan_details_by_orderheader_adminer.sql` — update SP target insert ke `cpone_dashboard` (untuk Adminer)
---
## Catatan DB (Perlu Dijalankan Saat Merge ke Master/Production)
1. **Buat tabel baru** di `cpone`:
- Jalankan: `scripts/sql/2026-06-25_create_t_orderheader_icd10.sql`
2. **Update stored procedure** `sp_sync_kelainan_details_by_orderheader` di `cpone`:
- Via MySQL CLI: `scripts/sql/2026-06-25_update_sp_sync_kelainan_details_by_orderheader.sql`
- Via Adminer: `scripts/sql/2026-06-25_update_sp_sync_kelainan_details_by_orderheader_adminer.sql`