896 lines
37 KiB
PHP
896 lines
37 KiB
PHP
<?php
|
|
class Spkservice extends MY_Controller
|
|
{
|
|
var $db;
|
|
var $hostname;
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->hostname = 'devcpone.aplikasi.web.id';
|
|
// $this->db = $this->load->database("cpone", true);
|
|
}
|
|
|
|
public function index()
|
|
{
|
|
// $cek = $this->db->query("select database() as current_db")->result();
|
|
// print_r($cek);
|
|
echo "SPK HOME SERVICE API";
|
|
}
|
|
|
|
function reply($resp)
|
|
{
|
|
echo json_encode($resp);
|
|
}
|
|
|
|
function reply_gz($resp, $debug = "")
|
|
{
|
|
if ($debug != "") {
|
|
echo json_encode($resp);
|
|
} else {
|
|
echo gzcompress(json_encode($resp));
|
|
}
|
|
}
|
|
|
|
function get_param()
|
|
{
|
|
|
|
$body = file_get_contents("php://input");
|
|
return json_decode($body, true);
|
|
}
|
|
|
|
function get_param_z($debug = 'N')
|
|
{
|
|
$body_z = file_get_contents("php://input");
|
|
$body = '';
|
|
if ($debug == 'Y') {
|
|
$body = $body_z;
|
|
} else {
|
|
$body = gzuncompress($body_z);
|
|
}
|
|
return json_decode($body, true);
|
|
}
|
|
public function post($url, $data)
|
|
{
|
|
$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_CONNECTTIMEOUT, 10);
|
|
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, [
|
|
"Content-Type: application/text",
|
|
"Content-Length: " . strlen($data),
|
|
]);
|
|
$result = curl_exec($ch);
|
|
if (curl_error($ch) != "") {
|
|
echo json_encode([
|
|
"status" => "ERR",
|
|
"message" => "Http Error : " . curl_error($ch),
|
|
]);
|
|
curl_close($ch);
|
|
exit();
|
|
}
|
|
curl_close($ch);
|
|
return $result;
|
|
}
|
|
|
|
function getstaff()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$rows = [];
|
|
if ($prm['spkHomeServiceId']) {
|
|
$sql = "SELECT M_StaffID as id,
|
|
M_StaffName as name
|
|
FROM m_staff
|
|
WHERE M_StaffIsActive = 'Y'
|
|
AND M_StaffID NOT IN (
|
|
SELECT
|
|
M_StaffID
|
|
FROM spk_home_service_staff
|
|
JOIN m_staff ON SpkHomeServiceStaffM_StaffID = M_StaffID
|
|
AND M_StaffIsActive = 'Y'
|
|
WHERE SpkHomeServiceStaffSpkHomeServiceID = {$prm['spkHomeServiceId']} AND SpkHomeServiceStaffIsActive = 'Y'
|
|
)
|
|
ORDER BY M_StaffName ASC";
|
|
$qry = $this->db->query($sql);
|
|
if ($qry) {
|
|
$rows = $qry->result_array();
|
|
} else {
|
|
$this->sys_error_db('select staff header error', $this->db);
|
|
exit;
|
|
}
|
|
} else {
|
|
$query = " SELECT M_StaffID as id,
|
|
M_StaffName as name
|
|
FROM m_staff
|
|
WHERE M_StaffIsActive = 'Y'
|
|
ORDER BY M_StaffName ASC
|
|
";
|
|
//echo $query;
|
|
$qry_hsl = $this->db->query($query);
|
|
if ($qry_hsl) {
|
|
$rows = $qry_hsl->result_array();
|
|
} else {
|
|
$this->sys_error_db('select staff error', $this->db);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
|
|
$result = array(
|
|
"total" => count($rows),
|
|
"records" => $rows,
|
|
"xdate" => date("Y-m-d H:i:s")
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function getorder()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$userid = $this->sys_user["M_UserID"];
|
|
|
|
$number_offset = 0;
|
|
$number_limit = 10;
|
|
if ($prm["current_page"] > 0) {
|
|
$number_offset = ($prm["current_page"] - 1) * $number_limit;
|
|
}
|
|
|
|
$sql_tot = "SELECT count(*) as total FROM (
|
|
SELECT
|
|
SpkHomeServiceOrderID,
|
|
M_PatientID,
|
|
M_PatientName,
|
|
M_BranchID,
|
|
M_BranchCode,
|
|
M_BranchCodeLab,
|
|
PreregisterOnlineID,
|
|
PreregisterOnlineQRCode,
|
|
PreregisterOnlineOrderNumber,
|
|
PreregisterOnlineBranchCode
|
|
FROM preregister_online
|
|
JOIN m_patient ON M_PatientID = PreregisterOnlineM_PatientID
|
|
AND M_PatientIsActive = 'Y'
|
|
JOIN m_branch ON PreregisterOnlineBranchCode = M_BranchCodeLab
|
|
AND M_BranchIsActive = 'Y'
|
|
LEFT JOIN spk_home_service_order ON SpkHomeServiceOrderPreregisterOnlineID = PreregisterOnlineID
|
|
AND SpkHomeServiceOrderIsActive = 'Y'
|
|
LEFT JOIN spk_home_service ON SpkHomeServiceOrderSpkHomeServiceID = SpkHomeServiceID
|
|
AND SpkHomeServiceIsActive = 'Y'
|
|
WHERE PreregisterOnlineIsActive = 'Y'
|
|
AND (
|
|
-- Ambil yang SPK-nya N (baru) dan sudah ada order
|
|
(SpkHomeServiceStatus = 'N' AND SpkHomeServiceOrderID IS NOT NULL)
|
|
OR
|
|
-- Atau SPK-nya sudah R (release) tapi belum diorder
|
|
(SpkHomeServiceOrderID IS NULL)
|
|
)
|
|
GROUP BY PreregisterOnlineID) x
|
|
";
|
|
$qry_tot = $this->db->query($sql_tot);
|
|
$tot_count = 0;
|
|
$tot_page = 0;
|
|
if ($qry_tot) {
|
|
$tot_count = $qry_tot->result_array()[0]["total"];
|
|
$tot_page = ceil($tot_count / $number_limit);
|
|
} else {
|
|
$this->sys_error_db("order count", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$sql = "SELECT
|
|
SpkHomeServiceOrderID,
|
|
M_PatientID,
|
|
M_PatientName,
|
|
M_BranchID,
|
|
M_BranchCode,
|
|
M_BranchCodeLab,
|
|
PreregisterOnlineID,
|
|
PreregisterOnlineQRCode,
|
|
PreregisterOnlineOrderNumber,
|
|
PreregisterOnlineBranchCode,
|
|
-- PreregisterOnlineJSON,
|
|
'' as test_name
|
|
FROM preregister_online
|
|
JOIN m_patient ON M_PatientID = PreregisterOnlineM_PatientID
|
|
AND M_PatientIsActive = 'Y'
|
|
JOIN m_branch ON PreregisterOnlineBranchCode = M_BranchCodeLab
|
|
AND M_BranchIsActive = 'Y'
|
|
LEFT JOIN spk_home_service_order ON SpkHomeServiceOrderPreregisterOnlineID = PreregisterOnlineID
|
|
AND SpkHomeServiceOrderIsActive = 'Y'
|
|
LEFT JOIN spk_home_service ON SpkHomeServiceOrderSpkHomeServiceID = SpkHomeServiceID
|
|
AND SpkHomeServiceIsActive = 'Y'
|
|
WHERE PreregisterOnlineIsActive = 'Y'
|
|
AND (
|
|
-- Ambil yang SPK-nya N (baru) dan sudah ada order
|
|
(SpkHomeServiceStatus = 'N' AND SpkHomeServiceOrderID IS NOT NULL)
|
|
OR
|
|
-- Atau SPK-nya sudah R (release) tapi belum diorder
|
|
(SpkHomeServiceOrderID IS NULL)
|
|
)
|
|
GROUP BY PreregisterOnlineID
|
|
LIMIT ? OFFSET ?";
|
|
|
|
$qry = $this->db->query($sql, [$number_limit, $number_offset]);
|
|
// echo $this->db->last_query();
|
|
// exit;
|
|
if ($qry) {
|
|
$rows = $qry->result_array();
|
|
|
|
foreach ($rows as $key => $value) {
|
|
$sql_ol = "SELECT PreregisterOnlineJSON FROM preregister_online WHERE PreregisterOnlineIsActive = 'Y' AND PreregisterOnlineID = ?";
|
|
$qry_ol = $this->db_onedev->query($sql_ol, [$value['PreregisterOnlineID']]);
|
|
if (!$qry_ol) {
|
|
$this->sys_error_db("Error json preregister", $this->db_onedev);
|
|
exit;
|
|
}
|
|
$dataJson = $qry_ol->result_array();
|
|
|
|
$tempTestName = [];
|
|
foreach ($dataJson as $k => $json) {
|
|
$parsed = json_decode($json["PreregisterOnlineJSON"], true);
|
|
|
|
if (json_last_error() === JSON_ERROR_NONE && is_array($parsed)) {
|
|
foreach ($parsed as $item) {
|
|
$nametest = $item['test_name'] ?? '';
|
|
|
|
$fullName = trim("$nametest");
|
|
$tempTestName[] = $fullName;
|
|
}
|
|
}
|
|
}
|
|
|
|
$rows[$key]["test_name"] = implode(', ', $tempTestName);
|
|
}
|
|
} else {
|
|
$this->sys_error_db("select order", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$result = array(
|
|
"total_page" => $tot_page,
|
|
"records" => $rows
|
|
);
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function saveOrder()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$this->db->trans_begin();
|
|
$prm = $this->sys_input;
|
|
$userid = $this->sys_user["M_UserID"];
|
|
|
|
$arrOrders = $prm["arrOrders"];
|
|
$arrStaff = $prm["arrStaff"];
|
|
$date = $prm["date"];
|
|
$spkHomeServiceId = $prm["spkHomeServiceId"];
|
|
$numbering = $this->db->query("SELECT fn_numbering('SPK') as numbering")->row()->numbering;
|
|
|
|
if ($prm["act"] == "new") {
|
|
$sql_sh = "INSERT INTO spk_home_service(
|
|
SpkHomeServiceNumber,
|
|
SpkHomeServiceDate,
|
|
SpkHomeServiceIsActive,
|
|
SpkHomeServiceCreated,
|
|
SpkHomeServiceCreatedUserID) VALUES(?,?,'Y',NOW(),?)";
|
|
$qry_sh = $this->db->query($sql_sh, [
|
|
$numbering,
|
|
$date,
|
|
$userid
|
|
]);
|
|
if (!$qry_sh) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("Error insert spk home service", $this->db);
|
|
exit;
|
|
}
|
|
$lastid_spk = $this->db->insert_id();
|
|
|
|
if (count($prm["arrOrders"]) > 0) {
|
|
foreach ($arrOrders as $key => $vsh) {
|
|
$sql_sho = "INSERT INTO spk_home_service_order(
|
|
SpkHomeServiceOrderSpkHomeServiceID,
|
|
SpkHomeServiceOrderBranchCode,
|
|
SpkHomeServiceOrderPreregisterOnlineID,
|
|
SpkHomeServiceOrderIsActive,
|
|
SpkHomeServiceOrderCreated,
|
|
SpkHomeServiceOrderCreatedUserID) VALUES(?,?,?,'Y',NOW(),?)";
|
|
$qry_sho = $this->db->query($sql_sho, [
|
|
$lastid_spk,
|
|
$vsh["PreregisterOnlineBranchCode"],
|
|
$vsh["PreregisterOnlineID"],
|
|
$userid
|
|
]);
|
|
if (!$qry_sho) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("Error insert spk home service order", $this->db);
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (count($prm["arrStaff"]) > 0) {
|
|
foreach ($arrStaff as $key => $value) {
|
|
$sql_staff = "INSERT INTO spk_home_service_staff(
|
|
SpkHomeServiceStaffM_StaffID,
|
|
SpkHomeServiceStaffSpkHomeServiceID,
|
|
SpkHomeServiceStaffIsActive,
|
|
SpkHomeServiceStaffCreated,
|
|
SpkHomeServiceStaffCreatedUserID) VALUES(?,?,'Y',NOW(),?)";
|
|
$qry_staff = $this->db->query($sql_staff, [
|
|
$value["staffid"],
|
|
$lastid_spk,
|
|
$userid
|
|
]);
|
|
if (!$qry_staff) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("Error insert spk home service staff", $this->db);
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
// Step 1: Ambil semua order aktif dari DB untuk SPK ini
|
|
$sql_db_orders = "SELECT SpkHomeServiceOrderID
|
|
FROM spk_home_service_order
|
|
WHERE SpkHomeServiceOrderSpkHomeServiceID = ?
|
|
AND SpkHomeServiceOrderIsActive = 'Y'";
|
|
$qry_db_orders = $this->db->query($sql_db_orders, [$spkHomeServiceId]);
|
|
$db_orders = $qry_db_orders->result_array();
|
|
|
|
// Siapkan array order aktif dari DB
|
|
$db_order_ids = array_column($db_orders, 'SpkHomeServiceOrderID');
|
|
|
|
// print_r($db_order_ids);
|
|
// exit;
|
|
|
|
// Step 2: Ambil semua ID dari data frontend
|
|
$order_ids = [];
|
|
foreach ($arrOrders as $order) {
|
|
if (!empty($order['SpkHomeServiceOrderID'])) {
|
|
$order_ids[] = $order['SpkHomeServiceOrderID'];
|
|
}
|
|
}
|
|
|
|
// Step 3: Cek data yang dihapus (ada di DB tapi tidak ada di frontend)
|
|
$deleted_ids = array_diff($db_order_ids, $order_ids);
|
|
|
|
// Step 4: Update ke IsActive = 'N'
|
|
foreach ($deleted_ids as $deleted_id) {
|
|
$sql_update = "UPDATE spk_home_service_order SET
|
|
SpkHomeServiceOrderIsActive = 'N',
|
|
SpkHomeServiceOrderLastUpdated = NOW(),
|
|
SpkHomeServiceOrderLastUpdatedUserID = ?
|
|
WHERE SpkHomeServiceOrderID = ?";
|
|
$qry_update = $this->db->query($sql_update, [$userid, $deleted_id]);
|
|
if (!$qry_update) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("Error update spk order", $this->db);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
|
|
// spk home service staff
|
|
|
|
// Ambil data staff lama dari database (yang aktif)
|
|
$sql_old = "SELECT SpkHomeServiceStaffID, SpkHomeServiceStaffM_StaffID
|
|
FROM spk_home_service_staff
|
|
WHERE SpkHomeServiceStaffSpkHomeServiceID = ? AND SpkHomeServiceStaffIsActive = 'Y'";
|
|
$qry_old = $this->db->query($sql_old, [$spkHomeServiceId]);
|
|
$oldStaffs = $qry_old->result_array();
|
|
|
|
// Buat array id lama dan baru
|
|
$oldStaffMap = [];
|
|
foreach ($oldStaffs as $old) {
|
|
$oldStaffMap[$old['SpkHomeServiceStaffM_StaffID']] = $old['SpkHomeServiceStaffID'];
|
|
}
|
|
|
|
// print_r($oldStaffMap);
|
|
// exit;
|
|
|
|
$newStaffIDs = []; // Simpan semua staff ID baru dari frontend
|
|
foreach ($arrStaff as $staff) {
|
|
$staffID = isset($staff['staffid']) ? $staff['staffid'] : $staff['SpkHomeServiceStaffM_StaffID'];
|
|
$newStaffIDs[] = $staffID;
|
|
|
|
if (!isset($oldStaffMap[$staffID])) {
|
|
// Insert jika staff baru
|
|
// print_r("insert baru");
|
|
$sql_insert = "INSERT INTO spk_home_service_staff(
|
|
SpkHomeServiceStaffM_StaffID,
|
|
SpkHomeServiceStaffSpkHomeServiceID,
|
|
SpkHomeServiceStaffIsActive,
|
|
SpkHomeServiceStaffCreated,
|
|
SpkHomeServiceStaffCreatedUserID
|
|
) VALUES (?, ?, 'Y', NOW(), ?)";
|
|
$qry_insert = $this->db->query($sql_insert, [$staffID, $spkHomeServiceId, $userid]);
|
|
if (!$qry_insert) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("Error insert spk home service staff", $this->db);
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Update yang dihapus (jika M_StaffID lama tidak ada di list baru)
|
|
foreach ($oldStaffMap as $m_staff_id => $spk_staff_id) {
|
|
if (!in_array($m_staff_id, $newStaffIDs)) {
|
|
// print_r("hapus");
|
|
$sql_update = "UPDATE spk_home_service_staff SET
|
|
SpkHomeServiceStaffIsActive = 'N',
|
|
SpkHomeServiceStaffLastUpdated = NOW(),
|
|
SpkHomeServiceStaffLastUpdatedUserID = ?
|
|
WHERE SpkHomeServiceStaffID = ?";
|
|
$qry_update = $this->db->query($sql_update, [$userid, $spk_staff_id]);
|
|
if (!$qry_update) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("Error update (nonaktifkan) spk staff", $this->db);
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$this->db->trans_commit();
|
|
|
|
$result = array(
|
|
"total" => 1,
|
|
"records" => array('status' => 'OK'),
|
|
"number" => $numbering,
|
|
"id" => $lastid_spk
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function search()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$search = "";
|
|
if (isset($prm['search'])) {
|
|
$search = trim($prm["search"]);
|
|
if ($search != "") {
|
|
$search = '%' . $prm['search'] . '%';
|
|
} else {
|
|
$search = '%%';
|
|
}
|
|
}
|
|
|
|
$number_offset = 0;
|
|
$number_limit = 20;
|
|
if ($prm["current_page"] > 0) {
|
|
$number_offset = ($prm["current_page"] - 1) * $number_limit;
|
|
}
|
|
|
|
$sql_tot = "SELECT count(*) as total
|
|
FROM spk_home_service
|
|
WHERE SpkHomeServiceIsActive = 'Y'
|
|
AND (SpkHomeServiceNumber LIKE ?)
|
|
";
|
|
$qry_tot = $this->db->query($sql_tot, [
|
|
$search
|
|
]);
|
|
$tot_count = 0;
|
|
$tot_page = 0;
|
|
if ($qry_tot) {
|
|
$tot_count = $qry_tot->result_array()[0]["total"];
|
|
$tot_page = ceil($tot_count / $number_limit);
|
|
} else {
|
|
$this->sys_error_db("error spk home service count", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$sql = "SELECT SpkHomeServiceID,
|
|
SpkHomeServiceNumber,
|
|
DATE_FORMAT(SpkHomeServiceDate, '%d-%m-%Y') as SpkHomeServiceDate,
|
|
SpkHomeServiceStatus,
|
|
SpkHomeServiceIsActive
|
|
FROM spk_home_service
|
|
WHERE SpkHomeServiceIsActive = 'Y'
|
|
AND (SpkHomeServiceNumber LIKE ?)
|
|
ORDER BY SpkHomeServiceID DESC
|
|
LIMIT ? OFFSET ?";
|
|
$qry = $this->db->query($sql, [
|
|
$search,
|
|
$number_limit,
|
|
$number_offset
|
|
]);
|
|
if ($qry) {
|
|
$rows = $qry->result_array();
|
|
} else {
|
|
$this->sys_error_db("Error lookup spk home service", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$result = array(
|
|
"total" => $tot_page,
|
|
"records" => $rows,
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function getorderbyid()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$userid = $this->sys_user["M_UserID"];
|
|
$spkHomeServiceId = $prm["spkHomeServiceId"];
|
|
|
|
$number_offset = 0;
|
|
$number_limit = 10;
|
|
if ($prm["current_page"] > 0) {
|
|
$number_offset = ($prm["current_page"] - 1) * $number_limit;
|
|
}
|
|
|
|
$sql_tot = "SELECT count(*) as total FROM (
|
|
SELECT SpkHomeServiceOrderID,
|
|
SpkHomeServiceOrderSpkHomeServiceID,
|
|
SpkHomeServiceOrderBranchCode,
|
|
M_PatientID,
|
|
M_PatientName,
|
|
M_BranchID,
|
|
M_BranchCode,
|
|
M_BranchCodeLab,
|
|
PreregisterOnlineID,
|
|
PreregisterOnlineQRCode,
|
|
PreregisterOnlineOrderNumber,
|
|
'' as test_name
|
|
FROM spk_home_service_order
|
|
JOIN preregister_online ON SpkHomeServiceOrderPreregisterOnlineID = PreregisterOnlineID
|
|
AND PreregisterOnlineIsActive = 'Y'
|
|
JOIN m_patient ON M_PatientID = PreregisterOnlineM_PatientID
|
|
AND M_PatientIsActive = 'Y'
|
|
JOIN m_branch ON PreregisterOnlineBranchCode = M_BranchCodeLab
|
|
AND M_BranchIsActive = 'Y'
|
|
WHERE SpkHomeServiceOrderIsActive = 'Y'
|
|
AND SpkHomeServiceOrderSpkHomeServiceID = ?) x
|
|
";
|
|
$qry_tot = $this->db->query($sql_tot, [$spkHomeServiceId]);
|
|
$tot_count = 0;
|
|
$tot_page = 0;
|
|
if ($qry_tot) {
|
|
$tot_count = $qry_tot->result_array()[0]["total"];
|
|
$tot_page = ceil($tot_count / $number_limit);
|
|
} else {
|
|
$this->sys_error_db("order count", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$sql = "SELECT SpkHomeServiceOrderID,
|
|
SpkHomeServiceOrderSpkHomeServiceID,
|
|
SpkHomeServiceOrderBranchCode,
|
|
M_PatientID,
|
|
M_PatientName,
|
|
M_BranchID,
|
|
M_BranchCode,
|
|
M_BranchCodeLab,
|
|
PreregisterOnlineID,
|
|
PreregisterOnlineQRCode,
|
|
PreregisterOnlineOrderNumber,
|
|
'' as test_name
|
|
FROM spk_home_service_order
|
|
JOIN preregister_online ON SpkHomeServiceOrderPreregisterOnlineID = PreregisterOnlineID
|
|
AND PreregisterOnlineIsActive = 'Y'
|
|
JOIN m_patient ON M_PatientID = PreregisterOnlineM_PatientID
|
|
AND M_PatientIsActive = 'Y'
|
|
JOIN m_branch ON PreregisterOnlineBranchCode = M_BranchCodeLab
|
|
AND M_BranchIsActive = 'Y'
|
|
WHERE SpkHomeServiceOrderIsActive = 'Y'
|
|
AND SpkHomeServiceOrderSpkHomeServiceID = ?
|
|
LIMIT ? OFFSET ?";
|
|
|
|
$qry = $this->db->query($sql, [$spkHomeServiceId, $number_limit, $number_offset]);
|
|
// echo $this->db->last_query();
|
|
// exit;
|
|
if ($qry) {
|
|
$rows = $qry->result_array();
|
|
|
|
foreach ($rows as $key => $value) {
|
|
$sql_ol = "SELECT PreregisterOnlineJSON FROM preregister_online WHERE PreregisterOnlineIsActive = 'Y' AND PreregisterOnlineID = ?";
|
|
$qry_ol = $this->db_onedev->query($sql_ol, [$value['PreregisterOnlineID']]);
|
|
if (!$qry_ol) {
|
|
$this->sys_error_db("Error json preregister", $this->db_onedev);
|
|
exit;
|
|
}
|
|
$dataJson = $qry_ol->result_array();
|
|
|
|
$tempTestName = [];
|
|
foreach ($dataJson as $k => $json) {
|
|
$parsed = json_decode($json["PreregisterOnlineJSON"], true);
|
|
|
|
if (json_last_error() === JSON_ERROR_NONE && is_array($parsed)) {
|
|
foreach ($parsed as $item) {
|
|
$nametest = $item['test_name'] ?? '';
|
|
|
|
$fullName = trim("$nametest");
|
|
$tempTestName[] = $fullName;
|
|
}
|
|
}
|
|
}
|
|
|
|
$rows[$key]["test_name"] = implode(', ', $tempTestName);
|
|
}
|
|
} else {
|
|
$this->sys_error_db("select order", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$result = array(
|
|
"total_page" => $tot_page,
|
|
"records" => $rows
|
|
);
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function getstaffbyid()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$userid = $this->sys_user["M_UserID"];
|
|
$spkHomeServiceId = $prm["spkHomeServiceId"];
|
|
|
|
$sql = "SELECT SpkHomeServiceStaffID,
|
|
SpkHomeServiceStaffM_StaffID,
|
|
SpkHomeServiceStaffSpkHomeServiceID,
|
|
M_StaffID as id,
|
|
M_StaffName as name
|
|
FROM spk_home_service_staff
|
|
JOIN m_staff ON SpkHomeServiceStaffM_StaffID = M_StaffID
|
|
AND M_StaffIsActive = 'Y'
|
|
WHERE SpkHomeServiceStaffIsActive = 'Y'
|
|
AND SpkHomeServiceStaffSpkHomeServiceID = ?";
|
|
$qry = $this->db->query($sql, [$spkHomeServiceId]);
|
|
|
|
if ($qry) {
|
|
$rows = $qry->result_array();
|
|
} else {
|
|
$this->sys_error_db("error get staff by id", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$result = array(
|
|
"total" => count($rows),
|
|
"records" => $rows,
|
|
"xdate" => date("Y-m-d H:i:s")
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function releaseOrder()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$this->db->trans_begin();
|
|
$prm = $this->sys_input;
|
|
$userid = $this->sys_user["M_UserID"];
|
|
$spkHomeServiceId = $prm["spkHomeServiceId"];
|
|
|
|
$sql = "UPDATE spk_home_service SET
|
|
SpkHomeServiceStatus = 'R',
|
|
SpkHomeServiceLastUpdated = NOW(),
|
|
SpkHomeServiceLastUpdatedUserID = ?
|
|
WHERE SpkHomeServiceID = ?";
|
|
$qry = $this->db->query($sql, [$userid, $spkHomeServiceId]);
|
|
if (!$qry) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("Error release spk home service", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$sql_order = "SELECT SpkHomeServiceOrderID,
|
|
SpkHomeServiceOrderSpkHomeServiceID,
|
|
SpkHomeServiceOrderBranchCode,
|
|
SpkHomeServiceOrderPreregisterOnlineID,
|
|
PreregisterOnlineID,
|
|
PreregisterOnlinePreregisterID,
|
|
PreregisterOnlineTrxDateTime,
|
|
PreregisterOnlineQRCode,
|
|
PreregisterOnlineOrderNumber,
|
|
PreregisterOnlineBranchCode,
|
|
PreregisterOnlineM_PatientID,
|
|
PreregisterOnlineMgm_McuID,
|
|
PreregisterOnlineCorporateID,
|
|
PreregisterOnlineDiagnose,
|
|
PreregisterOnlineFoNote,
|
|
PreregisterOnlineStatus,
|
|
PreregisterOnlineType,
|
|
M_PatientID,
|
|
M_PatientNoReg,
|
|
M_PatientName,
|
|
M_PatientGender,
|
|
M_PatientDOB,
|
|
'' as details
|
|
FROM spk_home_service_order
|
|
JOIN preregister_online ON SpkHomeServiceOrderPreregisterOnlineID = PreregisterOnlineID
|
|
AND PreregisterOnlineIsActive = 'Y'
|
|
JOIN m_patient ON PreregisterOnlineM_PatientID = M_PatientID
|
|
AND M_PatientIsActive = 'Y'
|
|
WHERE SpkHomeServiceOrderIsActive = 'Y'
|
|
AND SpkHomeServiceOrderSpkHomeServiceID = ?";
|
|
$qry_order = $this->db->query($sql_order, [$spkHomeServiceId]);
|
|
if ($qry_order) {
|
|
$rows = $qry_order->result_array();
|
|
|
|
foreach ($rows as $k => $v) {
|
|
$sql_ol = "SELECT PreregisterOnlineJSON FROM preregister_online WHERE PreregisterOnlineIsActive = 'Y' AND PreregisterOnlineID = ?";
|
|
$qry_ol = $this->db_onedev->query($sql_ol, [$v['PreregisterOnlineID']]);
|
|
if (!$qry_ol) {
|
|
$this->sys_error_db("Error json preregister", $this->db_onedev);
|
|
exit;
|
|
}
|
|
$dataJson = $qry_ol->row_array();
|
|
// print_r($dataJson);
|
|
// exit;
|
|
$data = json_decode($dataJson["PreregisterOnlineJSON"], true);
|
|
$rows[$k]["details"] = $data;
|
|
}
|
|
} else {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("Error get data order", $this->db);
|
|
exit;
|
|
}
|
|
|
|
foreach ($rows as $key => $value) {
|
|
$data = array(
|
|
"branch_code_lab" => $value["PreregisterOnlineBranchCode"],
|
|
"trx_datetime" => $value["PreregisterOnlineTrxDateTime"],
|
|
"diagnose" => $value["PreregisterOnlineDiagnose"],
|
|
"fo_note" => $value["PreregisterOnlineFoNote"],
|
|
"patient_id" => $value["PreregisterOnlineM_PatientID"],
|
|
"patient_corporate_id" => $value["PreregisterOnlineCorporateID"],
|
|
"mgm_mcuID" => $value["PreregisterOnlineMgm_McuID"],
|
|
"patient_birthdate" => $value["M_PatientDOB"],
|
|
"preregister_id" => $value["PreregisterOnlinePreregisterID"],
|
|
"details" => $value["details"]
|
|
);
|
|
|
|
$jsonEncode = json_encode($data);
|
|
// print_r($data);
|
|
// $param = gzcompress($jsonEncode);
|
|
$url = "https://" . $this->hostname . "/one-api/website/order/register/";
|
|
|
|
$post_rst = $this->post($url, $jsonEncode);
|
|
$rst = json_decode($post_rst, true);
|
|
// print_r($rst["branch_code_lab"]);
|
|
|
|
$sql_update_order = "UPDATE spk_home_service_order SET
|
|
SpkHomeServiceOrderT_OrderHeaderID = ?,
|
|
SpkHomeServiceOrderLastUpdated = NOW(),
|
|
SpkHomeServiceOrderLastUpdatedUserID = ?
|
|
WHERE SpkHomeServiceOrderID = ?";
|
|
$qry = $this->db->query($sql_update_order, [$rst["order_id"], $userid, $value["SpkHomeServiceOrderID"]]);
|
|
if (!$qry) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("Error update orerheaderid spk home service order", $this->db);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
$this->db->trans_commit();
|
|
$result = array("total" => 1, "id" => $spkHomeServiceId);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function deleteOrder()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$this->db->trans_begin();
|
|
$prm = $this->sys_input;
|
|
$userid = $this->sys_user["M_UserID"];
|
|
$spkHomeServiceId = $prm["spkHomeServiceId"];
|
|
|
|
$sql_sh = "UPDATE spk_home_service SET
|
|
SpkHomeServiceIsActive = 'N',
|
|
SpkHomeServiceDeleted = NOW(),
|
|
SpkHomeServiceDeletedUserID = ?
|
|
WHERE SpkHomeServiceID = ?";
|
|
$qry_sh = $this->db->query($sql_sh, [$userid, $spkHomeServiceId]);
|
|
if (!$qry_sh) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("Error delete spk home service", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$sql_sho = "UPDATE spk_home_service_order SET
|
|
SpkHomeServiceOrderIsActive = 'N',
|
|
SpkHomeServiceOrderDeleted = NOW(),
|
|
SpkHomeServiceOrderDeletedUserID = ?
|
|
WHERE SpkHomeServiceOrderSpkHomeServiceID = ?";
|
|
$qry_sho = $this->db->query($sql_sho, [$userid, $spkHomeServiceId]);
|
|
if (!$qry_sho) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("Error delete spk home service order", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$sql_staff = "UPDATE spk_home_service_staff SET
|
|
SpkHomeServiceStaffIsActive = 'N',
|
|
SpkHomeServiceStaffDeleted = NOW(),
|
|
SpkHomeServiceStaffDeletedUserID = ?
|
|
WHERE SpkHomeServiceStaffSpkHomeServiceID = ?";
|
|
$qry_staff = $this->db->query($sql_staff, [$userid, $spkHomeServiceId]);
|
|
if (!$qry_staff) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("Error delete spk home service staff", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$this->db->trans_commit();
|
|
$result = array("total" => 1, "id" => $spkHomeServiceId);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
}
|