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

465 lines
19 KiB
PHP

<?php
class Inject_riwayat extends MY_Controller
{
function __construct()
{
parent::__construct();
}
function proses($regno)
{
list($orderHeaderID, $orderDetailID) = $this->getOrderDetailID($regno);
$arr_map = $this->getArrayMap();
$soResultEntryID = $this->getSoResultEntryID($orderDetailID);
$sql_u = "update so_resultentryfisikumum set So_ResultEntryFisikUmumDetails = ?
where So_ResultEntryFisikUmumID = ?";
$sql = "SELECT DISTINCT REG_NO, Keluhan,
`Riwayat Penyakit Dahulu`, Ayah , Ibu ,
Alergi, `Kebiasaan Merokok`,
`Kebiasaan Alkohol`,
`Kebiasaan Olahraga`
FROM x_adm_rekap_riwayat WHERE REG_NO = ?";
$qry = $this->db->query($sql, [$regno]);
if (!$qry) {
echo json_encode([
"status" => "ERR",
"message" => "Error get x_adm_rekap_riwayat | " . $this->db->error()["message"]
]);
exit;
}
$rows = $qry->result_array();
foreach ($rows as $r) {
foreach ($r as $key => $value) {
if ($key == "REG_NO") continue;
$templateID = $arr_map[$key][1];
if ($templateID == "") continue;
list($soResultEntryFisikUmumID, $strJsonAwal) = $this->getSoResultEntryFisikUmumID($soResultEntryID, $templateID);
echo $soResultEntryFisikUmumID;
echo "\n";
echo "$key,$value\n\n";
$jsonAwal = json_decode($strJsonAwal, true);
switch ($key) {
case "Keluhan":
$idx_id_code = $this->find_label_index($jsonAwal['details'], $value);
if ($idx_id_code == -1) {
if(strlen($value) > 3){
$jsonAwal['details'][27]['chx'] = true;
$jsonAwal['details'][27]['value'] = $value;
}
}else{
$jsonAwal['details'][$idx_id_code]['chx'] = true;
}
// update json detail utk riwayat keluhan
break;
case "Riwayat Penyakit Dahulu":
$explode = explode("\n", $value);
$etc_values = [];
foreach ($explode as $xpld){
for ($i=0; $i < count($jsonAwal['details']); $i++) {
print_r("\n----");
print_r($xpld);
print_r("---\n");
$idx_name_code = $this->find_label_index($jsonAwal['details'][$i]['details'], $xpld);
if ($idx_id_code == -1) {
$etc_value = $xpld;
$idx_id_code = 0;
break;
}else {
}
}
$etc_values[] = $etc_value;
// switch($xpld){
// case "Operasi":
// $etc_value = [$xpld];
// }
}
print_r("\n----");
print_r("---\n");
exit;
// $idx_id_code = $this->find_label_index($jsonAwal['details'], $value);
// if ($idx_id_code == -1) {
// if(strlen($value) > 3){
// $jsonAwal['details'][27]['chx'] = true;
// $jsonAwal['details'][27]['value'] = $value;
// }
// }else{
// $jsonAwal['details'][$idx_id_code]['chx'] = true;
// }
// update json detail utk riwayat keluhan
break;
// case "fisik_keluhan_2":
// $idx_id_code = $this->find_id_code_index($jsonAwal['details'], "fisik_keluhan_2");
// if ($idx_id_code == -1) continue;
// $jsonAwal['details'][$idx_id_code]['value'] = $value;
// //update jsonAwal utk gizi_1
// break;
// case "fisik_keluhan_3":
// $idx_id_code = $this->find_id_code_index($jsonAwal['details'], "fisik_keluhan_3");
// if ($idx_id_code == -1) continue;
// $jsonAwal['details'][$idx_id_code]['value'] = $value;
// //update jsonAwal utk gizi_1
// break;
default:
echo "tidak ada case dengan code {$key} \n";
}
// $sql_u = "UPDATE so_resultentry_fisik_umum
// SET So_ResultEntryFisikUmumDetails = ?
// WHERE So_ResultEntryFisikUmumID = ?";
// $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;
// }
// echo "ini qry : ";
// print_r($qry);
// exit;
}
}
}
function getOrderDetailID($reg_no)
{
if (isset($reg_no)) {
$sql = "SELECT T_OrderHeaderID
FROM t_orderheader
WHERE T_OrderHeaderOldLabNumber = ?";
$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_array();
if (count($rows) != 0) {
$t_orderheaderid = $rows[0]['T_OrderHeaderID'];
$t_testid = 2562;
echo "T_OrderHeaderID: " . $t_orderheaderid . "\n";
echo "t_testid: " . $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, [$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_array();
if (count($rows_detail) != 0) {
$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;
}
}
}
function getArrayMap()
{
$sql = "SELECT * FROM x_map_riwayat";
$qry = $this->db->query($sql);
if (!$qry) {
echo json_encode([
"status" => "ERR",
"message" => "Error get x_map_riwayat | " . $this->db->error()["message"]
]);
exit;
}
$arr_map = [];
$rows = $qry->result_array();
foreach ($rows as $r) {
$arr_map[$r["X_Map_RiwayatName"]] = [$r["X_Map_RiwayatCodeID"], $r["X_Map_RiwayatTemplateID"]];
}
return $arr_map;
}
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, [$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_array();
$so_resultentryid = 0;
if(count($rows) == 0) {
$insert_sql = "INSERT INTO so_resultentry (
So_ResultEntryT_OrderDetailID,
So_ResultEntryNonlab_TemplateID,
So_ResultEntryNonlab_TemplateName)
VALUES (?, ?, ?)";
$this->db->query($insert_sql, [$t_orderdetailid, $nonlab_templateid, $nonlab_templatename]);
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 getSoResultEntryFisikUmumID($soResultEntryID, $templateID)
{
$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 | " . $this->db->error()["message"]
]);
exit;
}
$rows = $qry->result_array();
$So_ResultEntryFisikUmumDetails = [];
$So_ResultEntryFisikUmumID = 0;
if(count($rows) == 0) {
echo ("JSON dengan ID :" . $soResultEntryID . " dan template id {$templateID} tidak ada. \n");
$search_sql = "SELECT *
FROM fisik_template
WHERE FisikTemplateID = ?
-- AND FisikTemplateIsActive = 'Y'
";
$qry_search = $this->db->query($search_sql, [$templateID]);
if (!$qry_search) {
echo json_encode([
"status" => "ERR",
"message" => "Error get so_resultentry | " . $this->db->error()["message"]
]);
exit;
}
$search_rows = $qry_search->result_array();
if(count($search_rows) != 0) {
$FisikTemplateID = $search_rows[0]['FisikTemplateID'];
$FisikTemplateJSON = $search_rows[0]['FisikTemplateJSON'];
echo "FisikTemplateID :" . $FisikTemplateID . "\n";
$insert_sql = "INSERT INTO so_resultentry_fisik_umum
(So_ResultEntryFisikUmumSo_ResultEntryID,
So_ResultEntryFisikUmumFisikTemplateID,
So_ResultEntryFisikUmumDetails)
VALUES ( ?, ?, ? )
";
$this->db->query($insert_sql, array($soResultEntryID, $FisikTemplateID, $FisikTemplateJSON ));
echo "so_resultentry_fisik_umum baru dibuat \n";
$So_ResultEntryFisikUmumID = $this->db->insert_id();
$So_ResultEntryFisikUmumDetails = $FisikTemplateJSON;
}else{
echo "Gagal INSERT ke so_resultentry_fisik_umum karena fisik_template tidak ditemukan";
exit;
}
$So_ResultEntryFisikUmumID = $rows[0]['So_ResultEntryFisikUmumID'];
$So_ResultEntryFisikUmumDetails = $rows[0]['So_ResultEntryFisikUmumDetails'];
} else {
$So_ResultEntryFisikUmumID = $rows[0]['So_ResultEntryFisikUmumID'];
$So_ResultEntryFisikUmumDetails = $rows[0]['So_ResultEntryFisikUmumDetails'];
}
echo "So_ResultEntryFisikUmumID: " . $So_ResultEntryFisikUmumID . "\n";
// echo "so_resultentrydetails: " . $So_ResultEntryFisikUmumDetails . "\n\n";
return [$So_ResultEntryFisikUmumID, $So_ResultEntryFisikUmumDetails];
// echo "So_ResultEntryFisikUmumDetails: " . $so_resultentrydetails . "\n";
// return $so_resultentryid;
//cari di so_resultentryfisikumum
// jika ketemu returnkan So_ResultEntryFisikUmumDetails
// jika tidak ketemu cari dari fisik template , FisikTemplateJSON
// insertkan ke so_resultentryfisikumum
//retun nya [So_ResultEntryFisikUmumID, JSON]
}
function find_label_index($details, $inp_value)
{
$result = -1;
foreach ($details as $idx => $value) {
echo("\nmmmm\n");
echo "ini search labelnya " . $value["label"];
echo "ini search valuenya " . $inp_value;
echo("\nmmmm\n");
if ($value["label"] == $inp_value) {
echo $idx;
echo "sama";
return $idx;
}
}
echo $inp_value;
return $result;
}
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 coba(){
$sql = "SELECT DISTINCT REG_NO, Keluhan,
`Riwayat Penyakit Dahulu`, Ayah , Ibu ,
Alergi, `Kebiasaan Merokok`,
`Kebiasaan Alkohol`,
`Kebiasaan Olahraga`
FROM x_adm_rekap_riwayat WHERE REG_NO = '23ADM20004Z'";
$qry = $this->db->query($sql);
if (!$qry) {
echo json_encode([
"status" => "ERR",
"message" => "Error get x_adm_rekap_riwayat | " . $this->db->error()["message"]
]);
exit;
}
$rows = $qry->result_array();
foreach ($rows as $r) {
foreach ($r as $key => $value) {
$var = explode("\n", $value);
echo "value: |$value|\n";
print_r ($var);
}
}
}
// function update($regno)
// {
// if (isset($reg_no)) {
// $sql = "SELECT T_OrderHeaderID
// FROM t_orderheader
// WHERE T_OrderHeaderOldLabNumber = ?";
// $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();
// if (count($rows) != 0) {
// $t_orderheaderid = $rows[0]->T_OrderHeaderID;
// $t_testid = 2562;
// 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();
// if (count($rows_detail) != 0) {
// $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;
// }
// }
// if (isset($regno)) {
// $sql = "SELECT DISTINCT T_OrderHeaderID, T_OrderHeaderMgm_McuID
// FROM t_orderheader
// WHERE T_OrderHeaderOldLabNumber = ?
// ";
// $qry = $this->db->query($sql, [$regno]);
// if (!$qry) {
// echo json_encode([
// "status" => "ERR",
// "message" => "Error get t_orderheader | " . $this->db->error()["message"]
// ]);
// exit;
// }
// $rows = $qry->result_array();
// if (count($rows) != 0) {
// $t_orderheaderid = $rows[0]['T_OrderHeaderID'];
// $mgm_mcu_id = $rows[0]['T_OrderHeaderMgm_McuID'];
// $sql = "SELECT FisikTemplateTitle, FisikTemplateJSON
// FROM mgm_mcutemplate
// JOIN fisik_template_mapping ON FisikTemplateMappingID = Mgm_McuTemplateFisikTemplateMappingID
// AND Mgm_McuTemplateMgm_McuID = $mgm_mcu_id
// AND Mgm_McuTemplateIsActive = 'Y'
// AND FisikTemplateMappingIsActive = 'Y'
// JOIN fisik_template_mapping_detail ON FisikTemplateMappingDetailFisikTemplateMappingID = FisikTemplateMappingID
// AND FisikTemplateMappingDetailIsActive = 'Y'
// JOIN fisik_template ON FisikTemplateID = FisikTemplateMappingDetailFisikTemplateID
// AND FisikTemplateType LIKE 'Riwayat'
// AND FisikTemplateIsActive = 'Y'
// ";
// } else {
// echo json_encode([
// "status" => "ERR",
// "message" => "Tidak Ada Id ticket"
// ]);
// exit;
// }
// }
// }
}