Files
BE_CPONE/application/controllers/tools/a/Inject_fisik_vital.php
2026-04-27 10:26:26 +07:00

390 lines
16 KiB
PHP

<?php
class Inject_fisik_vital extends MY_Controller
{
public function __construct()
{
parent::__construct();
// db wilayah contoh surabaya
// $this->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_OrderHeaderTestID: " . $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 order ID :{$orderHeaderID} belum 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);
// ON PROGRESS
// 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;
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
}
}