301 lines
11 KiB
PHP
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;
|
|
}
|
|
} |