364 lines
14 KiB
PHP
364 lines
14 KiB
PHP
<?php
|
|
class Dashboard extends MY_Controller
|
|
{
|
|
var $db;
|
|
function __construct()
|
|
{
|
|
parent::__construct();
|
|
}
|
|
|
|
function index()
|
|
{
|
|
$cek = $this->db->query("select database() as current_db")->result();
|
|
echo "API DASHBOARD";
|
|
// print_r($cek);
|
|
}
|
|
|
|
function kunjungan_per_jam()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
$date = date("Y-m-d");
|
|
if (isset($prm['date'])) {
|
|
$date = $prm["date"];
|
|
}
|
|
|
|
$sql = "SELECT HOUR(T_OrderHeaderDate) as jam,
|
|
COUNT(T_OrderHeaderID) as jumlah_pasien FROM t_orderheader
|
|
WHERE T_OrderHeaderIsActive = 'Y'
|
|
AND (DATE(T_OrderHeaderDate) = ?)
|
|
GROUP BY jam";
|
|
$qry = $this->db->query($sql, array($date));
|
|
// $last_qry = $this->db->last_query();
|
|
// print_r($last_qry);
|
|
|
|
if ($qry) {
|
|
$rows = $qry->result_array();
|
|
} else {
|
|
$this->sys_error_db("select pemeriksaan per jam error", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$result = array(
|
|
"records" => $rows
|
|
);
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function jumlah_order()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$date = date("Y-m-d");
|
|
if (isset($prm['date'])) {
|
|
$date = $prm["date"];
|
|
}
|
|
|
|
$sql = "SELECT DATE(T_OrderHeaderDate) as tanggal,
|
|
COUNT(T_OrderHeaderID) as jumlah_pasien,
|
|
COUNT(a.T_OrderHeaderAddOnID) as sudah_selesai,
|
|
COUNT(b.T_OrderHeaderAddOnID) as selesai_sebagian,
|
|
COUNT(c.T_OrderHeaderAddOnID) as belum_selesai
|
|
FROM t_orderheader
|
|
LEFT JOIN t_orderheaderaddon as a ON T_OrderHeaderID = a.T_OrderHeaderAddOnT_OrderHeaderID
|
|
AND a.T_OrderHeaderAddOnIsActive = 'Y'
|
|
AND a.T_OrderHeaderAddOnValidationDone = 'Y'
|
|
LEFT JOIN t_orderheaderaddon as b ON T_OrderHeaderID = b.T_OrderHeaderAddOnT_OrderHeaderID
|
|
AND b.T_OrderHeaderAddOnIsActive = 'Y'
|
|
AND b.T_OrderHeaderAddOnValidationDone = 'P'
|
|
LEFT JOIN t_orderheaderaddon as c ON T_OrderHeaderID = c.T_OrderHeaderAddOnT_OrderHeaderID
|
|
AND c.T_OrderHeaderAddOnIsActive = 'Y'
|
|
AND c.T_OrderHeaderAddOnValidationDone = 'N'
|
|
WHERE T_OrderHeaderIsActive = 'Y'
|
|
AND (DATE(T_OrderHeaderDate) = ?)
|
|
GROUP BY tanggal";
|
|
$qry = $this->db->query($sql, array($date));
|
|
// $last_qry = $this->db->last_query();
|
|
// print_r($last_qry);
|
|
if ($qry) {
|
|
$rows = $qry->result_array();
|
|
} else {
|
|
$this->sys_error_db("select jumlah pasien error", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$result = array(
|
|
"records" => $rows
|
|
);
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function jumlah_pemeriksaan()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$date = date("Y-m-d");
|
|
if (isset($prm['date'])) {
|
|
$date = $prm["date"];
|
|
}
|
|
|
|
$sql_sudah_selesai = "SELECT DATE(T_OrderHeaderDate) as tanggal,
|
|
COUNT(T_OrderDetailID) as pemeriksaan_sudah_selesai
|
|
FROM t_orderheader
|
|
JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
|
AND T_OrderDetailIsActive = 'Y'
|
|
AND T_OrderDetailValidation = 'Y'
|
|
AND T_OrderDetailT_TestIsResult = 'Y'
|
|
AND T_OrderHeaderIsActive = 'Y'
|
|
AND (DATE(T_OrderHeaderDate) = ?)
|
|
GROUP BY tanggal";
|
|
$qry_sudah_selesai = $this->db->query($sql_sudah_selesai, array($date));
|
|
// $last_qry_sudah_selesai = $this->db->last_query();
|
|
// print_r($last_qry_sudah_selesai);
|
|
if ($qry_sudah_selesai) {
|
|
$rows_sudah_selesai = $qry_sudah_selesai->result_array();
|
|
} else {
|
|
$this->sys_error_db("select pemeriksaan sudah selesai error", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$sql_belum_selesai = "SELECT DATE(T_OrderHeaderDate) as tanggal,
|
|
COUNT(T_OrderDetailID) as pemeriksaan_belum_selesai
|
|
FROM t_orderheader
|
|
JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
|
AND T_OrderDetailIsActive = 'Y'
|
|
AND T_OrderDetailValidation = 'N'
|
|
AND T_OrderDetailT_TestIsResult = 'Y'
|
|
AND T_OrderHeaderIsActive = 'Y'
|
|
AND (DATE(T_OrderHeaderDate) = ?)
|
|
GROUP BY tanggal";
|
|
$qry_belum_selesai = $this->db->query($sql_belum_selesai, array($date));
|
|
if ($qry_belum_selesai) {
|
|
$rows_belum_selesai = $qry_belum_selesai->result_array();
|
|
} else {
|
|
$this->sys_error_db("select pemeriksaan belum selesai error", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$jml_sdh_selesai = $rows_sudah_selesai[0]['pemeriksaan_sudah_selesai'];
|
|
// echo $jml_sdh_selesai;
|
|
$jml_blm_selesai = $rows_belum_selesai[0]['pemeriksaan_belum_selesai'];
|
|
// echo $jml_blm_selesai;
|
|
$total = $jml_sdh_selesai + $jml_blm_selesai;
|
|
// print_r($total);
|
|
|
|
$result = array(
|
|
"Pemeriksaan_sudah_selesai" => $rows_sudah_selesai,
|
|
"Pemeriksaan_belum_selesai" => $rows_belum_selesai,
|
|
"total_pemeriksaan" => $total
|
|
);
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function tat()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$date = date("Y-m-d");
|
|
if (isset($prm['date'])) {
|
|
$date = $prm["date"];
|
|
}
|
|
|
|
$sql = "SELECT IF(T_OrderDetailIsCito = 'N', 'Normal', 'Reguler') as cito,
|
|
AVG(TIME_TO_SEC(T_OrderDetailValDate) - TIME_TO_SEC(CONCAT(T_OrderSampleSamplingDate,' ', T_OrderSampleSamplingTime)))/60 AS TAT
|
|
FROM t_orderheader
|
|
JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
|
AND T_OrderDetailIsActive = 'Y'
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
|
|
AND T_TestIsActive = 'Y'
|
|
JOIN t_ordersample ON T_OrderHeaderID = T_OrderSampleT_OrderHeaderID
|
|
AND T_OrderSampleIsActive = 'Y'
|
|
AND T_TestT_SampleTypeID = T_OrderSampleT_SampleTypeID
|
|
AND T_OrderSampleSamplingDate IS NOT NULL
|
|
AND T_OrderSampleSamplingTime IS NOT NULL
|
|
WHERE T_OrderHeaderIsActive = 'Y' AND
|
|
(DATE(T_OrderHeaderDate) = ?)
|
|
GROUP BY T_OrderDetailIsCito";
|
|
$qry = $this->db->query($sql, array($date));
|
|
if ($qry) {
|
|
$rows = $qry->result_array();
|
|
} else {
|
|
$this->sys_error_db("select tat error", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$result = array(
|
|
"records" => $rows
|
|
);
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function pemeriksaan()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$date = date("Y-m-d");
|
|
if (isset($prm['date'])) {
|
|
$date = $prm["date"];
|
|
}
|
|
|
|
$sql = "SELECT Nat_TestID,
|
|
Nat_TestName,
|
|
Nat_TestShortName,
|
|
Nat_TestShortNameBarcode,
|
|
COUNT(T_OrderDetailID) as pemeriksaan_belum_selesai
|
|
FROM t_orderheader
|
|
JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
|
AND T_OrderDetailIsActive = 'Y'
|
|
AND T_OrderDetailT_TestIsResult = 'Y'
|
|
AND T_OrderHeaderIsActive = 'Y'
|
|
AND T_OrderDetailValidation <> 'Y'
|
|
AND (DATE(T_OrderHeaderDate) = ?)
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
|
|
AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID
|
|
AND Nat_TestIsActive = 'Y'
|
|
GROUP BY Nat_TestID
|
|
ORDER BY COUNT(T_OrderDetailID) DESC";
|
|
$qry = $this->db->query($sql, array($date));
|
|
if ($qry) {
|
|
$rows = $qry->result_array();
|
|
} else {
|
|
$this->sys_error_db("select pemeriksaan belum selesai error", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$result = array(
|
|
"records" => $rows
|
|
);
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function instrument()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$date = date("Y-m-d");
|
|
if (isset($prm['date'])) {
|
|
$date = $prm["date"];
|
|
}
|
|
|
|
$sql = "SELECT Nat_InstrumentName,
|
|
COUNT(T_OrderDetailID) as pemakaian_alat_pertest
|
|
FROM t_orderheader
|
|
JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
|
AND T_OrderDetailIsActive = 'Y'
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
|
|
AND T_TestIsActive = 'Y'
|
|
JOIN t_resultinstrument ON T_OrderDetailID = T_ResultInstrumentT_OrderDetailID
|
|
AND T_ResultInstrumentIsActive = 'Y'
|
|
JOIN nat_instrument ON T_ResultInstrumentNat_InstrumentID = Nat_InstrumentID
|
|
AND Nat_InstrumentIsActive = 'Y'
|
|
WHERE T_OrderHeaderIsActive= 'Y'
|
|
AND (DATE(T_OrderHeaderDate) = ?)
|
|
GROUP BY Nat_InstrumentID";
|
|
$qry = $this->db->query($sql, array($date));
|
|
if ($qry) {
|
|
$rows = $qry->result_array();
|
|
} else {
|
|
$this->sys_error_db("select pemakaian alat pertest error", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$result = array(
|
|
"records" => $rows
|
|
);
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function kunjungan_per_test()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$date = date("Y-m-d");
|
|
if (isset($prm['date'])) {
|
|
$date = $prm["date"];
|
|
}
|
|
|
|
$sql = "SELECT Nat_SubGroupName,
|
|
COUNT(T_OrderDetailID) as total_pergroup
|
|
FROM t_orderheader
|
|
JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
|
AND T_OrderDetailIsActive = 'Y'
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
|
|
AND T_TestIsActive = 'Y'
|
|
AND T_TestIsResult = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID
|
|
AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_subgroup ON Nat_TestNat_SubGroupID = Nat_SubGroupID
|
|
AND Nat_SubGroupIsActive = 'Y'
|
|
WHERE T_OrderHeaderIsActive= 'Y'
|
|
AND (DATE(T_OrderHeaderDate) = ?)
|
|
GROUP BY Nat_SubGroupID";
|
|
$qry = $this->db->query($sql, array($date));
|
|
if ($qry) {
|
|
$rows = $qry->result_array();
|
|
} else {
|
|
$this->sys_error_db("select kunjungan per tempat pemeriksaan error", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$result = array(
|
|
"records" => $rows
|
|
);
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
}
|