db = $this->load->database("regional", true); } public function index() { echo "API Inject fisik vital"; } public function getOrderDetailID($reg_no) { if (isset($reg_no)) { $sql = "SELECT T_OrderHeaderID FROM t_orderheader WHERE T_OrderHeaderOldLabNumber = ? AND T_OrderHeaderIsActive = 'Y'"; $qry = $this->db->query($sql, $reg_no); if (!$qry) { echo json_encode([ "status" => "ERR", "message" => "Error get t_orderheader | " . $this->db->error()["message"] ]); exit; } $rows = $qry->result(); // print_r(json_encode($getOrderHeaderID)); // exit; if (count($rows) != 0) { // echo ("getOrderHeaderID tidak 0\n"); $t_orderheaderid = $rows[0]->T_OrderHeaderID; $t_testid = 2562; echo "Regno : {$reg_no}\n"; echo "T_OrderHeaderID: " . $t_orderheaderid . "\n"; echo "T_OrderHeaderID: " . $t_testid . "\n"; $sql = "SELECT T_OrderDetailID FROM t_orderdetail WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailT_TestID = ? AND T_OrderDetailIsActive = 'Y'"; $qry = $this->db->query($sql, array($t_orderheaderid, $t_testid)); if (!$qry) { echo json_encode([ "status" => "ERR", "message" => "Error get t_orderdetail | " . $this->db->error()["message"] ]); exit; } $rows_detail = $qry->result(); // print_r(json_encode($getOrderDetailID)); // exit; if (count($rows_detail) != 0) { // echo ("getOrderDetailID tidak 0\n"); $t_orderdetailid = $rows_detail[0]->T_OrderDetailID; echo "T_OrderDetailID: " . $t_orderdetailid . "\n"; } return [$t_orderheaderid, $t_orderdetailid]; } else { echo json_encode([ "status" => "ERR", "message" => "Tidak ditemukan Registrasi dengan nomor registrasi : " . $reg_no ]); exit; } } } public function getSoResultEntryID($t_orderdetailid_v) { $t_orderdetailid = $t_orderdetailid_v; $nonlab_templateid = 27; $nonlab_templatename = 'Fisik Umum'; $sql = "SELECT So_ResultEntryID FROM so_resultentry WHERE So_ResultEntryT_OrderDetailID = ? AND So_ResultEntryNonlab_TemplateID = ? AND So_ResultEntryNonlab_TemplateName = ? AND So_ResultEntryIsActive= 'Y'"; $qry = $this->db->query($sql, array($t_orderdetailid, $nonlab_templateid, $nonlab_templatename)); if (!$qry) { echo json_encode([ "status" => "ERR", "message" => "Error get so_resultentry | " . $this->db->error()["message"] ]); exit; } $rows = $qry->result(); $so_resultentryid = 0; if (count($rows) == 0) { $insert_sql = "INSERT INTO so_resultentry ( So_ResultEntryT_OrderDetailID, So_ResultEntryNonlab_TemplateID, So_ResultEntryNonlab_TemplateName) VALUES (?, ?, ?)"; // tanyakan $update_qry = $this->db->query($insert_sql, array($t_orderdetailid, $nonlab_templateid, $nonlab_templatename)); if (!$update_qry) { echo json_encode([ "status" => "ERR", "message" => "Error insert so_resultentry | " . $this->db->error()["message"] ]); exit; } // tanyakan echo "so_resultentry baru dibuat \n"; $so_resultentryid = $this->db->insert_id(); } else { $so_resultentryid = $rows[0]->So_ResultEntryID; } echo "So_ResultEntryID: " . $so_resultentryid . "\n"; return $so_resultentryid; } function getArrayMap() { $sql = "select * from x_map_fisik_vital"; $qry = $this->db->query($sql); if (!$qry) { echo json_encode([ "status" => "ERR", "message" => "Error get x_map_fisik_vital | " . $this->db->error()["message"] ]); exit; } $arr_map = []; $rows = $qry->result_array(); foreach ($rows as $r) { $arr_map[$r["name"]] = [$r["id_code"], $r["templateID"]]; } return $arr_map; } function getSoResultEntryFisikUmumID($soResultEntryID, $templateID) { // jika tidak ketemu cari dari fisik template , FisikTemplateJSON $sql = "SELECT * FROM so_resultentry_fisik_umum WHERE So_ResultEntryFisikUmumSo_ResultEntryID = ? AND So_ResultEntryFisikUmumFisikTemplateID = ? AND So_ResultEntryFisikUmumIsActive = 'Y'"; $qry = $this->db->query($sql, array($soResultEntryID, $templateID)); if (!$qry) { echo json_encode([ "status" => "ERR", "message" => "Error get so_resultentry_fisik_umum | " . $this->db->error()["message"] ]); exit; } $rows = $qry->result_array(); if (empty($rows)) { echo ("JSON dengan ID :" . $soResultEntryID . " dan template id {$templateID} tidak ada. \n"); $sql = "SELECT * FROM fisik_template WHERE FisikTemplateID = ? -- AND FisikTemplateIsActive = 'Y' "; $qryIsEmpty = $this->db->query($sql, array($templateID)); if (!$qryIsEmpty) { echo json_encode([ "status" => "ERR", "message" => "Error get fisik_template | " . $this->db->error()["message"] ]); exit; } $rowsIsNew = $qryIsEmpty->result_array(); foreach ($rowsIsNew as $r) { $arr_map[$r["FisikTemplateID"]] = [$r["FisikTemplateID"], $r["FisikTemplateJSON"]]; } // print_r("ini JSON baru :" . json_encode($arr_map, JSON_PRETTY_PRINT) . "\n"); // exit; // insertkan ke so_resultentryfisikumum $so_resultentryfisikumumid = 0; $insert_sql = "INSERT INTO so_resultentry_fisik_umum( So_ResultEntryFisikUmumSo_ResultEntryID, So_ResultEntryFisikUmumFisikTemplateID, So_ResultEntryFisikUmumDetails) VALUES (?,?,?)"; foreach ($arr_map as $key => $value) { $insert_qry = $this->db->query($insert_sql, array($soResultEntryID, $value[0], $value[1])); if (!$insert_qry) { echo json_encode([ "status" => "ERR", "message" => "Error get fisik_template | " . $this->db->error()["message"] ]); exit; } $so_resultentryfisikumumid = $this->db->insert_id(); echo "so_resultentry_fisik_umum baru dibuat dengan ID: {$so_resultentryfisikumumid} dan template ID : {$value[0]}\n"; $arr_map[$key] = [ 'id' => $so_resultentryfisikumumid, 'FisikTemplateID' => $value[0], 'So_ResultEntryFisikUmumDetails' => $value[1] ]; } return $arr_map; } else { //retun nya [So_ResultEntryFisikUmumID, JSON] return array( $rows[0]["So_ResultEntryFisikUmumID"], $rows[0]["So_ResultEntryFisikUmumDetails"] ); } } function getTSamplingSoID($orderHeaderID) { // search $sql = "SELECT * FROM t_samplingso WHERE T_SamplingSoT_OrderHeaderID = ?"; $qry = $this->db->query($sql, array($orderHeaderID)); if (!$qry) { echo json_encode([ "status" => "ERR", "message" => "Error get t_samplingso | " . $this->db->error()["message"] ]); exit; } $rows = $qry->result_array(); if (empty($rows)) { echo ("t_samplingso dengan ID :{} dan template id {$templateID} tidak ada. \n"); } else { echo json_encode($rows); } // kalau belum ada di buat // kalau ada di return () // insert ke t_samplingso // required field T_SamplingSoT_SampleStationID == 7, T_SamplingSoT_OrderHeaderID== parameter, T_SamplingSoT_TestID== 2562, T_SamplingSoFlag == D } function proses($reg_no) { list($orderHeaderID, $orderDetailID) = $this->getOrderDetailID($reg_no); // jgn lupa uncomment $arr_map = $this->getArrayMap(); $soResultEntryID = $this->getSoResultEntryID($orderDetailID); // echo "ini arr_map : " . json_encode($arr_map); // buat fungsi get t_samplingso // kalau belum ada di buat // kalau ada di return () $sql = "select * from x_adm_rekap_fisik_vital where REG_NO = ?"; $qry = $this->db->query($sql, [$reg_no]); if (!$qry) { echo json_encode([ "status" => "ERR", "message" => "Error get x_adm_rekap_fisik_vital | " . $this->db->error()["message"] ]); exit; } $rows = $qry->result_array(); // echo ("ini rows : " . json_encode($rows) . "\n"); // exit; foreach ($rows as $r) { foreach ($r as $key => $value) { // echo "arr_map : " . json_encode($arr_map[$key]) . "\n"; if ($key == "REG_NO") continue; $id_code = $arr_map[$key][0]; $templateID = $arr_map[$key][1]; if ($templateID == "") continue; // set value_x dan value_y // if (isset($key['value_x']) && isset($key['value_y'])) { // $value_x = $key['value_x']; // $value_y = $key['value_y']; // echo "Value X: $value_x, Value Y: $value_y\n"; // } else { // echo "Value X or Value Y not found in current row.\n"; // } // set value_x dan value_y list($soResultEntryFisikUmumID, $strJsonAwal) = $this->getSoResultEntryFisikUmumID($soResultEntryID, $templateID); // echo "\n ini soResultEntryFisikUmumID {$soResultEntryFisikUmumID} dan TemplateID {$templateID}\n\n"; echo " ini key {$key} , value {$value}, dan id_code {$id_code}\n\n"; $jsonAwal = json_decode($strJsonAwal, true); // print_r($jsonAwal); // echo "\n"; // update jsonAwal sesuai dengan id_code dan value nya // kalau sudah update ke so_resultentryfisikumum switch ($id_code) { case "status_gizi_1": $idx_id_code = $this->find_id_code_index($jsonAwal['details'], "status_gizi_1"); if ($idx_id_code == -1) continue; $jsonAwal['details'][$idx_id_code]['value'] = $value; //update jsonAwal utk gizi_1 break; case "status_gizi_2": // echo "ini json awal details : "; // print_r($jsonAwal['details']); $idx_id_code = $this->find_id_code_index($jsonAwal['details'], "status_gizi_2"); if ($idx_id_code == -1) continue; $jsonAwal['details'][$idx_id_code]['value'] = $value; // echo "ini json awal setelah diubah : "; // print_r($jsonAwal['details']); //update jsonAwal utk gizi_1 break; case "status_gizi_4": $idx_id_code = $this->find_id_code_index($jsonAwal['details'], "status_gizi_4"); if ($idx_id_code == -1) continue; $jsonAwal['details'][$idx_id_code]['value'] = $value; //update jsonAwal utk gizi_1 break; case "tanda_vital_1": $idx_id_code = $this->find_id_code_index($jsonAwal['details'], "tanda_vital_1"); if ($idx_id_code == -1) continue; $jsonAwal['details'][$idx_id_code]['value'] = $value; //update jsonAwal utk gizi_1 break; case "tanda_vital_2": $idx_id_code = $this->find_id_code_index($jsonAwal['details'], "tanda_vital_2"); if ($idx_id_code == -1) continue; $jsonAwal['details'][$idx_id_code]['value'] = $value; //update jsonAwal utk gizi_1 break; case "tanda_vital_5": $idx_id_code = $this->find_id_code_index($jsonAwal['details'], "tanda_vital_5"); if ($idx_id_code == -1) continue; if ($key == 'Sistolik') { $jsonAwal['details'][$idx_id_code]['value_x'] = $value; } if ($key == 'Diastolik') { $jsonAwal['details'][$idx_id_code]['value_y'] = $value; } //update jsonAwal utk gizi_1 break; default: echo "tidak ada case dengan code {$id_code} \n"; } if ($key == 'Kenal_Warna') { if ($value == 'Normal') { $jsonAwal['details'][0]['chx'] = true; } elseif ($value == '') { $jsonAwal['details'][0]['chx'] = true; } else { $jsonAwal['details'][1]['chx'] = true; $jsonAwal['details'][0]['value'] = $value; } } $sql_u = "UPDATE so_resultentry_fisik_umum SET So_ResultEntryFisikUmumDetails = ? WHERE So_ResultEntryFisikUmumID = ?"; // // echo "ini json yang di update :" . json_encode($jsonAwal) . "\n"; // echo "ini fisik id :" . $soResultEntryFisikUmumID . "\n"; // $qry = $this->db->query($sql_u, [json_encode($jsonAwal), $soResultEntryFisikUmumID]); if (!$qry) { echo json_encode([ "status" => "ERR", "message" => "Error update so_resultentry_fisik_umum | " . $this->db->error()["message"] ]); exit; } } } } function find_id_code_index($details, $id_code) { $result = -1; foreach ($details as $idx => $value) { if ($value["id_code"] == $id_code) { return $idx; } } return $result; } function insert_or_update_TB($torderheaderid, $value) { //qry search table t_samplingso_additional_fisik_bbtb menggunakan torderheaderid // kalau ketemu di update // kalai tudak di insert } function insert_or_update_BB($torderheaderid, $value) { //qry search table t_samplingso_additional_fisik_bbtb menggunakan torderheaderid // kalau ketemu di update // kalai tudak di insert } }