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

301 lines
11 KiB
PHP

<?php
class Rujukan_v2 extends MY_Controller
{
function __construct() {
parent::__construct();
}
function index() {
$this->log("Start Monitoring Rujukan");
$this->cek(true);
$this->cek_order(true);
$this->cek_validasi(true);
}
function test() {
$msg = "Testing Telegram group baru 2021-02-22 10:00:02 Pending Rujukan [* Pramita Martadinata ] : 1 *";
$msg = $this->clean_up_message($msg);
echo "$msg \n";
$this->sasone($msg);
}
function log($msg) {
$sdate = Date("Y-m-d H:i:s");
echo "$sdate $msg\n";
}
function clean_up_message($msg) {
return $msg;
$msg = str_replace("-","\-",$msg);
$msg = str_replace("(","\(",$msg);
$msg = str_replace(")","\)",$msg);
$msg = str_replace(".","\.",$msg);
$msg = str_replace("[","\[",$msg);
$msg = str_replace("]","\]",$msg);
$msg = str_replace("|","\|",$msg);
return $msg;
}
function cek_validasi($do_send=false,$date = "") {
if ($date == "" ) {
$xdate = new DateTime();
$xdate->sub(new DateInterval('P1D'));
$date = $xdate->format('Y-m-d');
}
$sql = "select tx_branch_status.*
from tx_branch_status
where date(TxBranchStatusCreated) >= '$date'
and TxBranchStatusRetry > 10 ";
$qry = $this->db->query($sql);
if ($qry) {
$rows = $qry->result_array();
$ids = "0";
$child_ids ="0";
foreach($rows as $r) {
if($r["TxBranchStatusStage"] == "VALIDATION" ) {
//print_r($r);
if ($r["TxBranchStatusIsSent"] == "Y") continue;
$json = json_decode($r["TxBranchStatusJson"],true);
foreach($json as $j) {
if ($j["incomingRefDetailID"] == "") {
continue;
}
$ids .= "," . $j["incomingRefDetailID"];
}
foreach($json as $j) {
if ($j["incomingRefChildID"] == "") {
continue;
}
$child_ids .= "," . $j["incomingRefChildID"];
}
}
}
if($ids != "0" || $child_ids != "0" ) {
$sql = "select T_OrderHeaderLabNumber, T_OrderHeaderAddOnLabNumberOrigin,
group_concat(incomingRefDetailT_TestName) TestName
from
incoming_ref_detail
join t_orderheader on incomingRefDetailID in ( $ids ) and incomingRefDetailNewT_OrderHeaderID = T_OrderHeaderID
join t_orderheaderaddon on T_OrderHeaderID = T_OrderHeaderAddOnT_OrderHeaderID
union
select T_OrderHeaderLabNumber, T_OrderHeaderAddOnLabNumberOrigin,
group_concat(incomingRefChildT_TestName) TestName
from
incoming_ref_child
join t_orderheader on incomingRefChildID in ( $child_ids ) and incomingRefChildNewT_OrderHeaderID = T_OrderHeaderID
join t_orderheaderaddon on T_OrderHeaderID = T_OrderHeaderAddOnT_OrderHeaderID
group by T_OrderHeaderID
";
$qry = $this->db->query($sql);
if($qry) {
$rows = $qry->result_array();
$msg = "";
foreach($rows as $r) {
$msg .= $r["T_OrderHeaderLabNumber"] . "|*" . $r["T_OrderHeaderAddOnLabNumberOrigin"] . "*";
$msg .= "\n\t " . $r["TestName"] . "\n";
}
if ($msg != "" ) {
$msg = "Pending Hasil ke perujuk :\n$msg";
if ($do_send ) {
$this->sasone($msg);
} else {
echo $msg . "\n";
}
$this->log($msg);
} else {
$this->log("Error Hasil Ke Perujuk : " . $this->db->error()["message"]);
}
} else {
$this->log("Error Hasil ke Perujuk : " . $this->db->error()["message"]);
}
}
}
}
function order() {
$this->cek_order(true);
}
function cek_barcode($do_send = false, $date = "") {
$w_date = "AND date(incomingRefDetailLastUpdated) = date(now())";
if ($date != "" ) {
$w_date = "AND date(incomingRefDetailLastUpdated) = '$date' ";
}
$sql = "select
incomingRefDetailLastUpdated,incomingRefOriginM_BranchCode, incomingRefT_RefDeliveryOrderNumber, incomingRefDetailT_OrderHeaderLabNumber, incomingRefDetailT_TestID, incomingRefDetailT_TestName
from incoming_ref_detail
JOIN incoming_ref ON incomingRefDetailIncomingRefID = incomingRefID
JOIN t_orderheader ON incomingRefDetailNewT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderIsActive = 'Y'
$w_date
left join t_barcodelab on T_OrderHeaderID = T_BarcodeLabT_OrderHeaderID
where T_BarcodeLabID IS NULL AND
((TIME_TO_SEC(time(now())) - TIME_TO_SEC(time(incomingRefDetailLastUpdated)))/60) > 5;
";
$qry = $this->db->query($sql);
if ($qry) {
$rows = $qry->result_array();
$tot_pending_barcode = 0;
$no_msg = "";
foreach($rows as $r ) {
if ($no_msg != "" ) $no_msg .= "\n ";
$no_msg .= $r["incomingRefOriginM_BranchCode"] . " \| " . $r["incomingRefT_RefDeliveryOrderNumber"]
. " \| " . $r["incomingRefDetailT_OrderHeaderLabNumber"] . " \| " . $r["incomingRefDetailT_TestName"];
$tot_pending_barcode++;
}
$msg = "Pending Create Barcode : * $tot_pending_barcode *,\n" . $no_msg ;
if ($tot_pending_barcode> 0 ) {
if ($do_send) {
$this->sasone($msg);
} else {
echo $msg . "\n";
}
$this->log($msg);
}
} else {
$this->log("Error Create Barcode : " . $this->db->error()["message"]);
}
}
function cek_order($do_send = false ) {
$sql = "select * from m_branch where M_BranchIsActive = 'Y' and M_BranchIsDefault = 'Y'";
$branchName = "No Branch";
$qry = $this->db->query($sql);
if ($qry) {
$rows = $qry->result_array();
$branchName = $rows[0]["M_BranchName"];
} else {
$this->log("Error Branch : " . $this->db->error()["message"]);
}
$sql ="
SELECT
incomingRefID,
incomingRefT_RefDeliveryOrderDate,
incomingRefT_RefDeliveryOrderNumber,
incomingRefOriginM_BranchCode,
M_BranchName,
incomingRefDetailID,
incomingRefDetailT_OrderHeaderID,
incomingRefDetailT_OrderHeaderLabNumber,
incomingRefDetailM_PatientName,
incomingRefDetailFoNote,
incomingRefDetailVefificationNote,
incomingRefDetailSamplingNote,
incomingRefDetailT_TestID,
incomingRefDetailT_TestName,
incomingRefDetailT_OrderPromiseDateTime,
incomingRefDetailT_OrderDetailID,
incomingRefDetailT_BarcodeLabBarcode,
incomingRefDetailPatient
FROM incoming_ref_detail
JOIN incoming_ref ON incomingRefDetailIncomingRefID = incomingRefID
JOIN m_branch ON incomingRefOriginM_BranchCode = M_BranchCode
WHERE incomingRefDetailStatus = 'Y'
AND incomingRefDetailNewT_OrderHeaderID IS NULL
AND date(incomingRefDetailLastUpdated) = date(now())
AND ((TIME_TO_SEC(time(now())) - TIME_TO_SEC(time(incomingRefDetailLastUpdated)))/60) > 5;
";
$qry = $this->db->query($sql);
if ($qry) {
$rows = $qry->result_array();
$tot_pending_kirim = 0;
$no_msg = "";
foreach($rows as $r ) {
if ($no_msg != "" ) $no_msg .= "\n ";
$no_msg .= $r["incomingRefDetailT_OrderHeaderLabNumber"] . " \| " . $r["incomingRefDetailT_TestName"];
$tot_pending_kirim++;
}
$msg = "Pending Create Order \[* $branchName \] : $tot_pending_kirim *,\n" . $no_msg ;
if ($tot_pending_kirim > 0 ) {
if ($do_send) {
$this->sasone($msg);
} else {
echo $msg . "\n";
}
$this->log($msg);
}
} else {
$this->log("Error Create Order : " . $this->db->error()["message"]);
}
}
function cek($do_send = false) {
$sql = "select * from m_branch where M_BranchIsActive = 'Y' and M_BranchIsDefault = 'Y'";
$branchName = "No Branch";
$qry = $this->db->query($sql);
if ($qry) {
$rows = $qry->result_array();
$branchName = $rows[0]["M_BranchName"];
} else {
$this->log("Error Pending Merujuk : " . $this->db->error()["message"]);
}
$sql = "SELECT distinct * FROM
(SELECT T_RefDeliveryOrderID,
T_RefDeliveryOrderNumber,
T_RefDeliveryOrderDate,
b.M_BranchID as cabang_asal_id,
b.M_BranchName as cabang_asal,
d.M_BranchID as cabang_tujuan_id,
d.M_BranchName as cabang_tujuan
FROM t_ref_deliveryorder
LEFT JOIN m_branch b ON T_RefDeliveryOrderM_BranchID = b.M_BranchID
LEFT JOIN m_branch d ON T_RefDeliveryOrderM_DestinationID = d.M_BranchID
WHERE
T_RefDeliveryOrderIsActive = 'Y' AND
T_RefDeliveryOrderIsConfirm = 'Y' AND
T_RefDeliveryOrderIsExternal = 'N' AND
date(T_RefDeliveryOrderLastUpdated) = date(now()) AND
((TIME_TO_SEC(time(now())) - TIME_TO_SEC(time(T_RefDeliveryOrderLastUpdated)))/60) > 5
UNION
SELECT T_RefDeliveryOrderID,
T_RefDeliveryOrderNumber,
T_RefDeliveryOrderDate,
M_BranchID as cabang_asal_id,
M_BranchName as cabang_asal,
M_LabReferenceID as cabang_tujuan_id,
M_LabReferenceName as cabang_tujuan
FROM t_ref_deliveryorder
LEFT JOIN m_branch ON T_RefDeliveryOrderM_BranchID = M_BranchID
LEFT JOIN m_labreference d ON T_RefDeliveryOrderM_DestinationID = M_LabReferenceID
WHERE
T_RefDeliveryOrderIsActive = 'Y' AND
T_RefDeliveryOrderIsConfirm = 'Y' AND
T_RefDeliveryOrderIsExternal = 'Y' AND
date(T_RefDeliveryOrderLastUpdated) = date(now()) AND
((TIME_TO_SEC(time(now())) - TIME_TO_SEC(time(T_RefDeliveryOrderLastUpdated)))/60) > 5
) x
";
$qry = $this->db->query($sql);
if ($qry) {
$rows = $qry->result_array();
$tot_pending_kirim = 0;
$no_msg = "";
foreach($rows as $r ) {
if ($no_msg != "" ) $no_msg .= ", ";
$no_msg .= $r["T_RefDeliveryOrderNumber"];
$tot_pending_kirim++;
}
$msg = "Pending Rujukan \[* $branchName \] : $tot_pending_kirim *,\n" . $no_msg ;
if ($tot_pending_kirim > 0 ) {
if ($do_send) {
$this->sasone($msg);
} else {
echo $msg . "\n";
}
$this->log($msg);
}
} else {
$this->log("Error Pending Merujuk : " . $this->db->error()["message"]);
}
}
function sasone($msg) {
$url = "http://bandungraya.aplikasi.web.id/one-api/tgram/xone_bot/chat_id";
$data = json_encode( array("text" => $msg, "id" => "-1001299107569" ));
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data))
);
$result = curl_exec($ch);
echo $result;
}
}