390 lines
16 KiB
PHP
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
|
|
}
|
|
}
|