Files
BE_IBL/application/controllers/v1/su/Portserver_mikro.php
2026-04-15 15:23:57 +07:00

226 lines
7.1 KiB
PHP

<?php
class Portserver_mikro extends MY_Controller
{
public function __construct()
{
parent::__construct();
$this->db_one = $this->load->database("onedev", true);
}
function raw()
{
$param = $this->sys_input;
try {
$instrumentID = $param["instrumentID"];
$data = $param["data"];
$sql = "insert into itf_raw(itf_RawNat_InstrumentID,itf_RawData)
values(?,?)";
$this->db_one->query($sql, array($instrumentID, base64_decode($data)));
echo json_encode(
array("status" => "OK", "id" => $this->db_one->insert_id(), "message" => "")
);
} catch (exception $e) {
echo json_encode(
array("status" => "ERR", "id" => 0, "message" => $e . message())
);
}
}
function do_result($rawID, $debug = "")
{
$sql = "select * from itf_result where itf_ResultItf_RawID = ? and itf_ResultIsSent ='N'";
$qry = $this->db->query($sql, [$rawID]);
if (!$qry) {
echo json_encode(["status" => "ERR", "message" => "Error do_result | " .
$this->db->error()["message"]]);
exit;
}
$rows = $qry->result_array();
$otherHeaderID = 0;
$bacteriID = 0;
foreach ($rows as $r) {
$id = $r["Itf_ResultID"];
$kode = $r["Itf_ResultKode"];
$nolab = $r["Itf_ResultNoreg"];
$instrumentID = $r["Itf_ResultNat_InstrumentID"];
$bacteri = $r["Itf_ResultBacteri"];
$anti = $r["Itf_ResultAnti"];
$result = $r["Itf_ResultResult"];
if ($debug != "") {
echo "$nolab | $kode , $id, $instrumentID\n";
}
$orderDetailID = $this->get_order_detail_id($instrumentID, $kode, $nolab);
if ($orderDetailID != 0) {
if ($debug != "") {
echo " Order Found $orderDetailID\n";
}
}
//header
if ($otherHeaderID == 0) {
$bacteriID = $this->get_bacteri_id($bacteri);
if ($bacteriID == 0) {
if ($debug != "") {
echo "bacteri $bacteri not found\n";
continue;
}
}
$otherHeaderID = $this->get_mikro_header($orderDetailID, $bacteri, $bacteriID);
}
if ($otherHeaderID == 0) {
if ($debug != "") {
echo "Other Mikro ID error\n";
continue;
}
}
//detail
$antibioticID = $this->get_anti($anti, $bacteriID);
if ($antibioticID == 0) {
if ($debug != "") {
echo "$anti not found";
}
continue;
}
$prefix = "";
$note = "";
if(stripos($result,">=") !== false) {
$prefix = ">=";
$result = str_replace(">=","",$result);
list($result,$note)= explode("^",$result);
} else if(stripos($result,">") !== false){
$result = str_replace(">","",$result);
$prefix = ">";
list($result,$note)= explode("^",$result);
} else if(stripos($result,"<=") !== false){
$result = str_replace("<=","",$result);
$prefix = "<=";
list($result,$note)= explode("^",$result);
} else if(stripos($result,"<") !== false) {
$result = str_replace("<","",$result);
$prefix = "<";
list($result,$note)= explode("^",$result);
}
echo "prefix : $prefix, result : $result, note : $note \n";
}
}
function get_anti($anti, $bacteriID)
{
$sql = "select * from t_antibiotic
where T_AntibioticName = ? and T_AntibioticT_BacteriaID = ?";
$qry = $this->db->query($sql, [$anti, $bacteriID]);
if (!$qry) {
echo json_encode(["status" => "ERR", "message" => "Error get anti | " .
$this->db->error()["message"]]);
exit;
}
$rows = $qry->result_array();
if (count($rows) == 0) {
return 0;
}
return $rows[0]["T_AntibioticID"];
}
function get_mikro_header($orderDetailID, $bacteri, $bacteriID)
{
$sql = "select * from other_mikro
where Other_MikroT_OrderDetailID =?
and Other_MikroIsActive = 'Y'";
$qry = $this->db->query($sql, [$orderDetailID]);
if (!$qry) {
echo json_encode(["status" => "ERR", "message" => "Error mikro header| " .
$this->db->error()["message"]]);
exit;
}
$rows = $qry->result_array();
if (count($rows) == 0) {
if ($bacteriID == 0) {
$sql = "insert into other_mikro(Other_MikroT_OrderDetailID,
Other_MikroT_BacteriaID) values(?,?)";
$qry = $this->db->query($sql, [$orderDetailID, $bacteriID]);
} else {
$sql = "insert into other_mikro(Other_MikroT_OrderDetailID,
Other_MikroT_BacteriaID,Other_MikroResult) values(?,?,?)";
$qry = $this->db->query($sql, [$orderDetailID, $bacteriID, "Bacteria $bacteri not settup"]);
}
if (!$qry) {
echo json_encode(["status" => "ERR", "message" => "Error mikro header| " .
$this->db->error()["message"]]);
exit;
}
return $this->db->insert_id();
} else {
return $rows[0]["Other_MikroID"];
}
}
function get_bacteri_id($bacteri)
{
$sql = "select * from t_bacteria
where T_BacteriaName = ?";
$qry = $this->db->query($sql, [$bacteri]);
if (!$qry) {
echo json_encode(["status" => "ERR", "message" => "Error get bacteri | " .
$this->db->error()["message"]]);
}
$rows = $qry->result_array();
if (count($rows) == 0) {
return 0;
}
return $rows[0]["T_BacteriaID"];
}
function get_order_detail_id($instrumentID, $kode, $nolab)
{
$sql = "select t_orderdetail.*
from t_orderdetail
join t_orderheader on T_OrderHeaderLabNumber = ?
and T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
join t_test on T_OrderDetailT_TestID = T_TestID
join m_instrumentassay on T_TestNat_TestID = M_InstrumentAssayNat_TestID
and M_InstrumentAssayCode = ?
and M_InstrumentAssayNat_InstrumentID = ?";
$qry = $this->db->query($sql, [$nolab, $kode, $instrumentID]);
if (!$qry) {
echo json_encode(["status" => "ERR", "message" => "Error do_result | " .
$this->db->error()["message"]]);
}
$rows = $qry->result_array();
if (count($rows) == 0) {
return 0;
}
return $rows[0]["T_OrderDetailID"];
}
function result()
{
$param = $this->sys_input;
try {
$instrumentID = $param["instrumentID"];
$rawID = $param["rawID"];
$result = $param["result"];
$noreg = $result["nolab"];
$sql = "insert into itf_result(itf_ResultNat_InstrumentID,
itf_ResultItf_RawID,
Itf_ResultNoreg, Itf_ResultInstrumentDate, itf_ResultKode,
itf_ResultResult, itf_ResultFlag,
itf_ResultBacteri, itf_ResultAnti)
values(?,?,?,?,?,?,?, ?,?)";
foreach ($result["result"] as $r) {
$tgl = $r["date"];
$px = $r["px"];
$bacteri = $r["bacteri"];
$anti = $r["anti"];
$result = $r["result"];
$this->db_one->query(
$sql,
array(
$instrumentID, $rawID, $noreg, $tgl, $px,
$result, $r["flag"], $bacteri, $anti
)
);
}
// change
echo json_encode(
array("status" => "OK", "message" => "")
);
} catch (exception $e) {
echo json_encode(
array("status" => "ERR", "message" => $e->message())
);
}
}
}