2083 lines
74 KiB
PHP
2083 lines
74 KiB
PHP
<?php
|
|
class Preregisterappcponev8 extends MY_Controller
|
|
{
|
|
var $db_onedev;
|
|
var $db_dashboard;
|
|
var $load;
|
|
public function index()
|
|
{
|
|
echo "Patient API";
|
|
}
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->db_onedev = $this->load->database("onedev", true);
|
|
$this->db_dashboard = $this->load->database("cpone_dashboard", true);
|
|
}
|
|
|
|
private function sync_schedule_and_daily($preregisterID)
|
|
{
|
|
$preregisterID = intval($preregisterID);
|
|
if ($preregisterID <= 0) {
|
|
return;
|
|
}
|
|
$this->db_onedev->query("CALL cpone.sp_refresh_mcu_participant_daily_by_preregister(?)", array($preregisterID));
|
|
}
|
|
public function getsetup()
|
|
{
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
$sql = "SELECT *
|
|
FROM mgm_mcu
|
|
WHERE Mgm_McuIsActive = 'Y' AND ( CURDATE() BETWEEN Mgm_McuStartDate AND Mgm_McuEndDate )
|
|
ORDER BY Mgm_McuStartDate ASC, Mgm_McuEndDate ASC";
|
|
$qry = $this->db_onedev->query($sql, []);
|
|
$last_qry = $this->db_onedev->last_query();
|
|
if (!$qry) {
|
|
$message = $this->db_onedev->error();
|
|
$message['last_qry'] = $last_qry;
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$data = $qry->result_array();
|
|
$result = [
|
|
"records" => $data,
|
|
];
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function generate_code_string()
|
|
{
|
|
$length = 5;
|
|
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
$code = '';
|
|
for ($i = 0; $i < $length; $i++) {
|
|
$code .= $characters[rand(0, strlen($characters) - 1)];
|
|
}
|
|
return $code;
|
|
}
|
|
|
|
function generate_uuid()
|
|
{
|
|
// Generate 16 bytes (128 bits) of random data
|
|
$data = random_bytes(16);
|
|
|
|
// Set version to 0100
|
|
$data[6] = chr(ord($data[6]) & 0x0f | 0x40);
|
|
// Set bits 6-7 to 10
|
|
$data[8] = chr(ord($data[8]) & 0x3f | 0x80);
|
|
|
|
// Output the 36 character UUID
|
|
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
|
|
}
|
|
|
|
function generate_code_form()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$mgm_mcu_id = $prm['id'];
|
|
$sql = "SELECT Mcu_PreregisterPatientsID
|
|
FROM mcu_preregister_patients
|
|
WHERE
|
|
Mcu_PreregisterPatientsMgm_McuID = ? AND
|
|
(
|
|
Mcu_PreregisterPatientsT_OrderHeaderID = 0 OR
|
|
Mcu_PreregisterPatientsIsRegistered = 'N'
|
|
) AND
|
|
Mcu_PreregisterPatientsIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, [$mgm_mcu_id]);
|
|
$last_qry = $this->db_onedev->last_query();
|
|
//echo $last_qry;
|
|
//exit;
|
|
if (!$qry) {
|
|
$message = $this->db_onedev->error();
|
|
$message['last_qry'] = $last_qry;
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$data = $qry->result_array();
|
|
if (count($data) > 0) {
|
|
foreach ($data as $k => $v) {
|
|
|
|
$sql = "SELECT COUNT(*) as total
|
|
FROM form_riwayat_pasien
|
|
WHERE FormRiwayatPasienPreregisterID = ? AND
|
|
FormRiwayatPasienIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, [$v['Mcu_PreregisterPatientsID']]);
|
|
//echo $this->db_onedev->last_query();
|
|
//exit;
|
|
if ($qry) {
|
|
$total = $qry->result_array()[0]['total'];
|
|
if ($total == 0) {
|
|
$code = $this->generate_code_string();
|
|
$uuid = $this->generate_uuid();
|
|
|
|
$sql = "INSERT INTO form_riwayat_pasien (
|
|
FormRiwayatPasienPreregisterID,
|
|
FormRiwayatPasienCode,
|
|
FormRiwayatPasienUUID,
|
|
FormRiwayatPasienCreated)
|
|
VALUES (?, ?, ?, NOW())";
|
|
$qry = $this->db_onedev->query($sql, [$v['Mcu_PreregisterPatientsID'], $code, $uuid]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$result = [
|
|
"records" => $data,
|
|
];
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function search_patient_listing()
|
|
{
|
|
$prm = $this->sys_input;
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$search = $prm["search"];
|
|
$setup = $prm["setup"];
|
|
$status = $prm["status"];
|
|
$sqlStatus = "";
|
|
if ($status == 'Y') {
|
|
$sqlStatus = "AND Mcu_PreregisterPatientsIsRegistered = 'Y'";
|
|
} else if ($status == 'N') {
|
|
$sqlStatus = "AND Mcu_PreregisterPatientsIsRegistered = 'N'";
|
|
}
|
|
$q = [
|
|
'name' => '',
|
|
'hp' => '',
|
|
'dob' => '',
|
|
'address' => ''
|
|
];
|
|
|
|
|
|
|
|
$sql_where = "";
|
|
if ($prm['search'] != '') {
|
|
$e = explode('+', $prm['search']);
|
|
if (count($e) == 1) {
|
|
$sql_where .= "AND Mcu_PreregisterPatientsPatientName like CONCAT('%','{$e[0]}','%')";
|
|
}
|
|
if (count($e) == 2) {
|
|
$sql_where .= "AND ( Mcu_PreregisterPatientsPatientName like CONCAT('%','{$e[0]}','%') AND Mcu_PreregisterPatientsNIP like CONCAT('%','{$e[1]}','%')) ";
|
|
}
|
|
}
|
|
|
|
if (!empty($prm['mcudate'])) {
|
|
$mcudate = $prm['mcudate'];
|
|
$sql_where .= " AND Mcu_PreregisterDateCheckinSchedule = '{$mcudate}'";
|
|
}
|
|
|
|
$number_limit = 10;
|
|
$number_offset = ($prm['current_page'] - 1) * $number_limit;
|
|
|
|
// if($setup['Mgm_McuM_BranchID']== '100'){
|
|
|
|
// }
|
|
|
|
$sql = " SELECT count(*) as total
|
|
FROM mcu_preregister_patients
|
|
JOIN m_patient ON Mcu_PreregisterPatientsM_PatientID = M_PatientID
|
|
LEFT join terminology on attribute_path = 'Address.country' AND code = M_PatientAddressCountry
|
|
LEFT JOIN m_title ON Mcu_PreregisterPatientsM_TitleID = M_TitleID
|
|
LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID
|
|
LEFT JOIN mcu_preregister_date ON Mcu_PreregisterDateMcu_PreregisterPatientsID = Mcu_PreregisterPatientsID
|
|
WHERE
|
|
Mcu_PreregisterPatientsIsActive = 'Y' AND Mcu_PreregisterPatientsMgm_McuID = {$setup['Mgm_McuID']}
|
|
$sql_where
|
|
$sqlStatus
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
$tot_count = 0;
|
|
$tot_page = 0;
|
|
if ($query) {
|
|
$tot_count = $query->result_array()[0]["total"];
|
|
$tot_page = ceil($tot_count / $number_limit);
|
|
} else {
|
|
$this->sys_error_db("m_doctor count", $this->db_onedev);
|
|
exit;
|
|
}
|
|
|
|
|
|
$sql = " SELECT *
|
|
, '' as agreement,
|
|
'' as packets,
|
|
'' as tests,
|
|
CONCAT(IF(ISNULL(M_TitleName),'',CONCAT(M_TitleName,'.')),
|
|
' ',
|
|
IFNULL(Mcu_PreregisterPatientsPatientPrefix,''),
|
|
' ',
|
|
Mcu_PreregisterPatientsPatientName,
|
|
' ',
|
|
IFNULL(Mcu_PreregisterPatientsPatientSuffix,'')) as patient_fullname,
|
|
DATE_FORMAT(Mcu_PreregisterPatientsDOB,'%d-%m-%Y') as dob,
|
|
DATE_FORMAT(Mcu_PreregisterPatientsDOB,'%d-%m-%Y') as Mcu_PreregisterPatientsDOB,
|
|
M_PatientAddress,
|
|
M_PatientAddressCity,
|
|
M_PatientAddressCountry,
|
|
IFNULL(display, 'Indonesia') as countryName,
|
|
M_PatientAddressRT,
|
|
M_PatientAddressRW,
|
|
M_PatientReligionCode,
|
|
CorporateEmail,
|
|
IFNULL(FormRiwayatPasienCode, 'Belum digenerate') as code_form,
|
|
IFNULL(FormRiwayatPasienUUID, '') as uuid_form,
|
|
Mcu_PreregisterDateCheckinSchedule,
|
|
pcc.PreregisterCheckInCheckOutID,
|
|
pcc.PreregisterCheckInCheckInDate,
|
|
pcc.PreregisterCheckInCheckOutInTime,
|
|
pcc.PreregisterCheckInCheckOutDate,
|
|
pcc.PreregisterCheckInCheckOutOutTime
|
|
FROM mcu_preregister_patients
|
|
JOIN m_patient ON Mcu_PreregisterPatientsM_PatientID = M_PatientID
|
|
JOIN mgm_mcu ON Mcu_PreregisterPatientsMgm_McuID = Mgm_McuID
|
|
JOIN corporate ON Mgm_McuCorporateID = CorporateID
|
|
LEFT join terminology on attribute_path = 'Address.country' AND code = M_PatientAddressCountry
|
|
LEFT JOIN m_title ON Mcu_PreregisterPatientsM_TitleID = M_TitleID
|
|
LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID
|
|
LEFT JOIN form_riwayat_pasien ON Mcu_PreregisterPatientsID = FormRiwayatPasienPreregisterID AND FormRiwayatPasienIsActive = 'Y'
|
|
LEFT JOIN mcu_preregister_date ON Mcu_PreregisterDateMcu_PreregisterPatientsID = Mcu_PreregisterPatientsID
|
|
LEFT JOIN (
|
|
SELECT c.*
|
|
FROM preregister_checkin_checkout c
|
|
JOIN (
|
|
SELECT
|
|
PreregisterCheckInCheckOutPreregisterID,
|
|
PreregisterCheckInCheckOutT_OrderHeaderID,
|
|
MAX(PreregisterCheckInCheckOutID) AS last_id
|
|
FROM preregister_checkin_checkout
|
|
GROUP BY
|
|
PreregisterCheckInCheckOutPreregisterID,
|
|
PreregisterCheckInCheckOutT_OrderHeaderID
|
|
) latest
|
|
ON latest.last_id = c.PreregisterCheckInCheckOutID
|
|
) pcc
|
|
ON pcc.PreregisterCheckInCheckOutPreregisterID = Mcu_PreregisterPatientsID
|
|
AND pcc.PreregisterCheckInCheckOutT_OrderHeaderID = T_OrderHeaderID
|
|
WHERE
|
|
Mcu_PreregisterPatientsIsActive = 'Y' AND Mcu_PreregisterPatientsMgm_McuID = {$setup['Mgm_McuID']}
|
|
$sql_where
|
|
$sqlStatus
|
|
ORDER BY T_OrderHeaderDate DESC, Mcu_PreregisterPatientsIsRegistered ASC, Mcu_PreregisterPatientsPatientName ASC
|
|
limit $number_limit offset $number_offset";
|
|
|
|
$query = $this->db_onedev->query($sql);
|
|
//echo $sql;
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['last_qry'] =
|
|
$this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
};
|
|
$lastQuerySearch =
|
|
$this->db_onedev->last_query();
|
|
$rows = $query->result_array();
|
|
if ($rows) {
|
|
foreach ($rows as $k => $v) {
|
|
$rows[$k]['packets'] = array();
|
|
$rows[$k]['tests'] = array();
|
|
$join_test = '';
|
|
$filter_paket = "AND T_PacketSasCode IN ('')";
|
|
$filter_test = "AND T_TestSasCode IN ('')";
|
|
|
|
$testFromOptional = array();
|
|
if ($v['Mcu_PreregisterPatientsOrders'] != '') {
|
|
$xjoin_tests = explode(',', $v['Mcu_PreregisterPatientsOrders']);
|
|
$unique_tests = array(); // array untuk menyimpan nilai unik
|
|
|
|
if ($xjoin_tests) {
|
|
foreach ($xjoin_tests as $kjt => $vjt) {
|
|
$vjt = trim($vjt);
|
|
|
|
$opt = "";
|
|
if (substr($vjt, -4) === '-opt') {
|
|
$opt = trim(explode("_", $vjt)[1]);
|
|
$vjt = trim(explode("_", $vjt)[0]);
|
|
// "10610200_163-opt"
|
|
}
|
|
|
|
if (!in_array($vjt, $unique_tests)) {
|
|
$packet = trim(explode("-", $opt)[0]);
|
|
$testFromOptional[$vjt] = $packet;
|
|
|
|
$unique_tests[] = $vjt;
|
|
if ($join_test != '')
|
|
$join_test .= ",";
|
|
$join_test .= "'{$vjt}'";
|
|
}
|
|
}
|
|
}
|
|
//print_r($unique_tests)."<br>";
|
|
//echo $join_test;
|
|
$filter_paket = "AND T_PacketSasCode IN ({$join_test})";
|
|
$filter_test = "AND T_TestSasCode IN ({$join_test}) ";
|
|
}
|
|
$sql = "SELECT DISTINCT T_PacketID as id, T_PacketName as name, T_PacketSasCode as code, nat_test
|
|
FROM ss_price_mou
|
|
JOIN t_packet ON T_TestID = T_PacketID AND T_PacketIsActive = 'Y'
|
|
JOIN mgm_mcupacket ON T_PacketID = Mgm_McuPacketT_PacketID
|
|
AND Mgm_McuPacketIsActive = 'Y' AND Mgm_McuPacketMgm_McuID = {$setup['Mgm_McuID']}
|
|
WHERE
|
|
T_PriceT_PriceHeaderID = {$setup['Mgm_McuT_PriceHeaderID']} AND is_packet = 'Y' $filter_paket";
|
|
//echo $sql;
|
|
$rows[$k]['packets'] = $this->db_onedev->query($sql)->result_array();
|
|
if ($rows[$k]['packets']) {
|
|
foreach ($rows[$k]['packets'] as $kp => $vp) {
|
|
$rows[$k]['packets'][$kp]['nat_test'] = json_decode($vp['nat_test']);
|
|
}
|
|
}
|
|
|
|
$sql = "SELECT test.T_TestID as id, test.T_TestName as name, test.T_TestSasCode as code, nat_test
|
|
FROM ss_price_mou
|
|
JOIN t_test test ON test.T_TestID = ss_price_mou.T_TestID AND T_TestIsActive = 'Y'
|
|
WHERE
|
|
T_PriceT_PriceHeaderID = {$setup['Mgm_McuT_PriceHeaderID']} AND is_packet = 'N' AND
|
|
T_PriceIsCito = 'N' $filter_test";
|
|
//echo $sql;
|
|
$rows[$k]['tests'] = $this->db_onedev->query($sql)->result_array();
|
|
if ($rows[$k]['tests']) {
|
|
foreach ($rows[$k]['tests'] as $kp => $vp) {
|
|
$rows[$k]['tests'][$kp]['nat_test'] = json_decode($vp['nat_test']);
|
|
// if test from optional packet
|
|
if (isset($testFromOptional[$vp['code']])) {
|
|
$rows[$k]['tests'][$kp]['T_PacketDetailT_PacketID'] = $testFromOptional[$vp['code']];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$pids = array();
|
|
$sql = "SELECT Mcu_PreregisterPatientsM_PatientID as id
|
|
FROM mcu_preregister_patients
|
|
WHERE
|
|
Mcu_PreregisterPatientsIsActive = 'Y' AND Mcu_PreregisterPatientsMgm_McuID = '{$setup['Mgm_McuID']}'";
|
|
|
|
$rows_all = $this->db_onedev->query($sql)->result_array();
|
|
//echo $sql;
|
|
if ($rows_all) {
|
|
foreach ($rows_all as $ka => $va) {
|
|
array_push($pids, $va['id']);
|
|
}
|
|
}
|
|
}
|
|
//$this->_add_address($rows);
|
|
$result = array(
|
|
"total" => $tot_page,
|
|
"total_data" => $tot_count,
|
|
"records" => $rows,
|
|
"pids" => $pids,
|
|
"sql" => $this->db_onedev->last_query(),
|
|
"sqlsrc" => $lastQuerySearch
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
|
|
function search_patient_table()
|
|
{
|
|
$prm = $this->sys_input;
|
|
$setup = $prm['setup'];
|
|
|
|
$max_rst = 100;
|
|
$tot_count = 0;
|
|
$number_limit = 10;
|
|
$number_offset = (!isset($prm['current_page']) ? 1 : $prm['current_page'] - 1) * $number_limit;
|
|
if (isset($prm['reload'])) {
|
|
$number_limit = intval($prm['current_page']) * 10;
|
|
$number_offset = 0;
|
|
}
|
|
|
|
$q = [
|
|
'name' => '',
|
|
'hp' => '',
|
|
'dob' => '',
|
|
'address' => ''
|
|
];
|
|
|
|
|
|
|
|
if ($prm['search'] != '') {
|
|
$e = explode('+', $prm['search']);
|
|
if (isset($e[0]))
|
|
$q['name'] = "AND M_PatientName LIKE '%{$e[0]}%'";
|
|
if (isset($e[1]))
|
|
$q['dob'] = "AND ((DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') LIKE '%{$e[1]}%' and M_PatientDOB IS NOT NULL) OR (M_PatientDOB IS NULL AND '{$e[1]}' = ''))";
|
|
if (isset($e[2]))
|
|
$q['nik'] = "AND M_PatientNIP LIKE '%{$e[2]}%'";
|
|
}
|
|
|
|
|
|
$sql = "SELECT m_patient.*,
|
|
'N' divider,
|
|
concat(IFNULL(M_TitleName,''),' ',IFNULL(M_PatientPrefix,''),' ',M_PatientName,' ',IFNULL(M_PatientSuffix,'')) M_PatientName,
|
|
M_PatientName M_PatientRealName, M_TitleID, M_TitleName, M_PatientGender,
|
|
DATE_FORMAT(M_PatientDOB,'%d-%m-%Y') as dob_ina,
|
|
IFNULL(M_PatientReligionCode, '-') M_PatientReligionCode,
|
|
M_PatientNoReg as Mcu_PreregisterPatientsPID,
|
|
M_PatientIdentifierValue as Mcu_PreregisterPatientsKTP,
|
|
M_PatientID as Mcu_PreregisterPatientsM_PatientID,
|
|
M_TitleID as Mcu_PreregisterPatientsM_TitleID,
|
|
M_PatientName as Mcu_PreregisterDetailsPatientName,
|
|
M_PatientGender as Mcu_PreregisterPatientsPatientName,
|
|
M_PatientDOB as Mcu_PreregisterPatientsDOB,
|
|
IFNULL(M_PatientReligionCode,0) as Mcu_PreregisterPatientsReligion,
|
|
M_PatientEmail as Mcu_PreregisterPatientsEmail,
|
|
M_PatientHP as Mcu_PreregisterPatientsHp,
|
|
M_PatientPosisi as Mcu_PreregisterPatientsPosisi,
|
|
M_PatientDivisi as Mcu_PreregisterPatientsDivisi,
|
|
M_PatientJob as Mcu_PreregisterPatientsJob,
|
|
M_PatientDepartement as Mcu_PreregisterPatientsDepartment
|
|
from
|
|
m_patient
|
|
LEFT join m_title on M_PatientM_TitleID = M_TitleID
|
|
where M_PatientIsActive = 'Y'
|
|
{$q['name']}
|
|
{$q['dob']}
|
|
{$q['nik']}
|
|
group by M_PatientID
|
|
limit $number_limit offset $number_offset";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
$qryListing = $this->db_onedev->last_query();
|
|
|
|
if ($query) {
|
|
$rows = $query->result_array();
|
|
if ($rows) {
|
|
$per_divider = 1;
|
|
foreach ($rows as $k => $v) {
|
|
if ($per_divider == 10) {
|
|
$rows[$k]['divider'] = 'Y';
|
|
}
|
|
$per_divider = $per_divider + 1;
|
|
if ($per_divider > 10)
|
|
$per_divider = 1;
|
|
}
|
|
}
|
|
$pids = array();
|
|
$sql = "SELECT Mcu_PreregisterPatientsM_PatientID as id
|
|
FROM mcu_preregister_patients
|
|
WHERE
|
|
Mcu_PreregisterPatientsIsActive = 'Y' AND Mcu_PreregisterPatientsMgm_McuID = '{$setup['Mgm_McuID']}'";
|
|
|
|
$rows_all = $this->db_onedev->query($sql)->result_array();
|
|
//echo $sql;
|
|
if ($rows_all) {
|
|
foreach ($rows_all as $ka => $va) {
|
|
array_push($pids, $va['id']);
|
|
}
|
|
}
|
|
|
|
$result = array("total" => "", "records" => $rows, "pids" => $pids, "sql" => $this->db_onedev->last_query(), "qrylisting" => $qryListing);
|
|
$this->sys_ok($result);
|
|
} else {
|
|
$this->sys_error_db("m_patient rows", $this->db_onedev);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
function doReCheckin()
|
|
{
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
$userid = $this->sys_user["M_UserID"];
|
|
$preregister_id = isset($prm['preregister_id']) ? $prm['preregister_id'] : 0;
|
|
$orderheader_id = isset($prm['orderheader_id']) ? $prm['orderheader_id'] : 0;
|
|
$mcu_id = isset($prm['mcu_id']) ? $prm['mcu_id'] : 0;
|
|
|
|
if (intval($preregister_id) <= 0 || intval($orderheader_id) <= 0 || intval($mcu_id) <= 0) {
|
|
$this->sys_error("Parameter preregister_id, orderheader_id, dan mcu_id wajib diisi.");
|
|
exit;
|
|
}
|
|
|
|
$this->db_onedev->trans_begin();
|
|
|
|
$sql_checkin_checkout = "INSERT INTO preregister_checkin_checkout (
|
|
PreregisterCheckInCheckOutPreregisterID,
|
|
PreregisterCheckInCheckOutT_OrderHeaderID,
|
|
PreregisterCheckInCheckInDate,
|
|
PreregisterCheckInCheckOutInTime,
|
|
PreregisterCheckInCheckOutInUserID,
|
|
PreregisterCheckInCheckOutIsActive,
|
|
PreregisterCheckInCheckOutLastUpdated,
|
|
PreregisterCheckInCheckOutCreated
|
|
) VALUES (?, ?, CURDATE(), CURTIME(), ?, 'Y', NOW(), NOW())";
|
|
$query_checkin_checkout = $this->db_onedev->query($sql_checkin_checkout, array($preregister_id, $orderheader_id, $userid));
|
|
if (!$query_checkin_checkout) {
|
|
$this->db_onedev->trans_rollback();
|
|
$this->sys_error_db("insert preregister_checkin_checkout", $this->db_onedev);
|
|
exit;
|
|
}
|
|
|
|
$sql_mcu_checkinout = "INSERT INTO cpone_dashboard.mcu_checkinout (
|
|
Mcu_CheckinoutMcuID,
|
|
Mcu_CheckinoutPreregisterID,
|
|
Mcu_CheckinoutOrderID,
|
|
Mcu_CheckinoutDate,
|
|
Mcu_CheckinoutInTime,
|
|
Mcu_CheckinoutIsActive,
|
|
Mcu_CheckinoutSyncedAt
|
|
) VALUES (?, ?, ?, CURDATE(), CURTIME(), 'Y', NOW())";
|
|
$query_mcu_checkinout = $this->db_onedev->query($sql_mcu_checkinout, array($mcu_id, $preregister_id, $orderheader_id));
|
|
if (!$query_mcu_checkinout) {
|
|
$this->db_onedev->trans_rollback();
|
|
$this->sys_error_db("insert cpone_dashboard.mcu_checkinout", $this->db_onedev);
|
|
exit;
|
|
}
|
|
|
|
/*
|
|
|
|
$sql_mcu_preregister_date = "INSERT INTO mcu_preregister_date (
|
|
Mcu_PreregisterDateMcu_PreregisterPatientsID,
|
|
Mcu_PreregisterDateCheckinSchedule,
|
|
Mcu_PreregisterDateIsActive,
|
|
Mcu_PreregisterDateCreated,
|
|
Mcu_PreregisterDateCreatedUserID,
|
|
Mcu_PreregisterDateLastUpdated,
|
|
Mcu_PreregisterDateLastUpdatedID
|
|
) VALUES (?, CURDATE(), 'Y', NOW(), ?, NOW(), ?)
|
|
ON DUPLICATE KEY UPDATE
|
|
Mcu_PreregisterDateCheckinSchedule = CURDATE(),
|
|
Mcu_PreregisterDateIsActive = 'Y',
|
|
Mcu_PreregisterDateLastUpdated = NOW(),
|
|
Mcu_PreregisterDateLastUpdatedID = VALUES(Mcu_PreregisterDateLastUpdatedID)";
|
|
$query_mcu_preregister_date = $this->db_smartone->query($sql_mcu_preregister_date, array($preregister_id, $userid, $userid));
|
|
if (!$query_mcu_preregister_date) {
|
|
$this->db_smartone->trans_rollback();
|
|
$this->sys_error_db(["status" => "ERR", "message" => "insert/update mcu_preregister_date | " .
|
|
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
|
|
exit;
|
|
}
|
|
|
|
$sql_mcu_participant_daily = "INSERT INTO cpone_dashboard.mcu_participant_daily (
|
|
Mcu_ParticipantDailyMcuID,
|
|
Mcu_ParticipantDailyDate,
|
|
Mcu_ParticipantDailyTotal,
|
|
Mcu_ParticipantDailyIsActive
|
|
)
|
|
SELECT
|
|
p.Mcu_PreregisterPatientsMgm_McuID,
|
|
d.Mcu_PreregisterDateCheckinSchedule,
|
|
COUNT(*) AS total_participant,
|
|
'Y'
|
|
FROM mcu_preregister_date d
|
|
JOIN mcu_preregister_patients p
|
|
ON p.Mcu_PreregisterPatientsID = d.Mcu_PreregisterDateMcu_PreregisterPatientsID
|
|
WHERE d.Mcu_PreregisterDateCheckinSchedule = CURDATE()
|
|
AND p.Mcu_PreregisterPatientsMgm_McuID = ?
|
|
AND d.Mcu_PreregisterDateIsActive = 'Y'
|
|
AND p.Mcu_PreregisterPatientsIsActive = 'Y'
|
|
GROUP BY d.Mcu_PreregisterDateCheckinSchedule, p.Mcu_PreregisterPatientsMgm_McuID
|
|
ON DUPLICATE KEY UPDATE
|
|
Mcu_ParticipantDailyTotal = VALUES(Mcu_ParticipantDailyTotal),
|
|
Mcu_ParticipantDailyIsActive = 'Y',
|
|
Mcu_ParticipantDailyLastUpdated = CURRENT_TIMESTAMP";
|
|
$query_mcu_participant_daily = $this->db_smartone->query($sql_mcu_participant_daily, array($mcu_id));
|
|
if (!$query_mcu_participant_daily) {
|
|
$this->db_smartone->trans_rollback();
|
|
$this->sys_error_db(["status" => "ERR", "message" => "insert/update mcu_participant_daily | " .
|
|
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
|
|
exit;
|
|
}
|
|
|
|
*/
|
|
|
|
$this->db_onedev->trans_commit();
|
|
|
|
$this->sys_ok(array(
|
|
"records" => array(
|
|
"preregister_id" => $preregister_id,
|
|
"orderheader_id" => $orderheader_id,
|
|
"mcu_id" => $mcu_id
|
|
)
|
|
));
|
|
exit;
|
|
}
|
|
|
|
function saveCheckinScheduleDate()
|
|
{
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
$userid = $this->sys_user["M_UserID"];
|
|
$id = isset($prm['id']) ? intval($prm['id']) : 0;
|
|
$next_date = isset($prm['next_date']) ? $prm['next_date'] : '';
|
|
|
|
if ($id <= 0 || $next_date == '') {
|
|
$this->sys_error("Parameter id dan next_date wajib diisi.");
|
|
exit;
|
|
}
|
|
|
|
$sql = "UPDATE mcu_preregister_date SET
|
|
Mcu_PreregisterDateCheckinSchedule = ?,
|
|
Mcu_PreregisterDateLastUpdated = NOW(),
|
|
Mcu_PreregisterDateLastUpdatedID = ?
|
|
WHERE Mcu_PreregisterDateMcu_PreregisterPatientsID = ?";
|
|
$qry = $this->db_onedev->query($sql, array($next_date, $userid, $id));
|
|
if (!$qry) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
|
|
$this->sys_ok(array(
|
|
"records" => array(
|
|
"id" => $id,
|
|
"next_date" => $next_date
|
|
)
|
|
));
|
|
exit;
|
|
}
|
|
|
|
function syncSchedule()
|
|
{
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
$preregister_id = isset($prm['preregister_id']) ? intval($prm['preregister_id']) : 0;
|
|
|
|
if ($preregister_id <= 0) {
|
|
$this->sys_error("Parameter preregister_id wajib diisi.");
|
|
exit;
|
|
}
|
|
|
|
$this->sync_schedule_and_daily($preregister_id);
|
|
|
|
$this->sys_ok(array(
|
|
"records" => array(
|
|
"preregister_id" => $preregister_id
|
|
)
|
|
));
|
|
exit;
|
|
}
|
|
|
|
function savenewform()
|
|
{
|
|
// $this->db_onedev->trans_begin();
|
|
$this->db_onedev->trans_begin();
|
|
// $this->db_onedev->trans_rollback();
|
|
// $this->db_onedev->trans_commit();
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$userid = $this->sys_user["M_UserID"];
|
|
$prm = $this->sys_input;
|
|
//print_r($prm);
|
|
$setup = $prm['setup'];
|
|
$sql = "SELECT CorporateCode FROM corporate WHERE CorporateID = '{$setup['Mgm_McuCorporateID']}'";
|
|
$qry = $this->db_onedev->query($sql);
|
|
if (!$qry) {
|
|
$message = $this->db_onedev->error();
|
|
$this->db_onedev->trans_rollback();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$corporateCode = $qry->row_array()['CorporateCode'];
|
|
$v = $prm;
|
|
|
|
$name = str_replace("'", "\\'", $v['M_PatientRealName']);
|
|
$nameEscape = $this->db_onedev->escape($v['M_PatientRealName']);
|
|
// print_r($name);
|
|
$pdob = date('Y-m-d', strtotime($v['M_PatientDOB']));
|
|
|
|
|
|
$query = "INSERT INTO mcu_preregister_patients (
|
|
Mcu_PreregisterPatientsMgm_McuID,
|
|
Mcu_PreregisterPatientsPID,
|
|
Mcu_PreregisterPatientsM_PatientID,
|
|
Mcu_PreregisterPatientsKTP,
|
|
Mcu_PreregisterPatientsPatientPrefix,
|
|
Mcu_PreregisterPatientsPatientName,
|
|
Mcu_PreregisterPatientsPatientSuffix,
|
|
Mcu_PreregisterPatientsGender,
|
|
Mcu_PreregisterPatientsDOB,
|
|
Mcu_PreregisterPatientsReligion,
|
|
Mcu_PreregisterPatientsJob,
|
|
Mcu_PreregisterPatientsEmail,
|
|
Mcu_PreregisterPatientsHp,
|
|
Mcu_PreregisterPatientsPosisi,
|
|
Mcu_PreregisterPatientsDivisi,
|
|
Mcu_PreregisterPatientsLocation,
|
|
Mcu_PreregisterPatientsCreated,
|
|
Mcu_PreregisterPatientsUserID,
|
|
Mcu_PreregisterPatientsM_TitleID,
|
|
Mcu_PreregisterPatientsCorporateCode,
|
|
Mcu_PreregisterPatientsDepartment,
|
|
Mcu_PreregisterPatientsNIP
|
|
)
|
|
VALUES(
|
|
?,?,?,?,?,?,?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
NOW(),
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?
|
|
)";
|
|
//echo $query;
|
|
$rows = $this->db_onedev->query($query, [
|
|
$setup['Mgm_McuID'],
|
|
$v['Mcu_PreregisterPatientsPID'],
|
|
$v['M_PatientID'],
|
|
$v['Mcu_PreregisterPatientsKTP'],
|
|
$v['M_PatientPrefix'],
|
|
$v['M_PatientRealName'],
|
|
$v['M_PatientSuffix'],
|
|
$v['M_PatientGender'],
|
|
$pdob,
|
|
$v['M_PatientReligionCode'],
|
|
$v['M_PatientJob'],
|
|
$v['M_PatientEmail'],
|
|
$v['M_PatientHp'],
|
|
$v['M_PatientPosisi'],
|
|
$v['M_PatientDivisi'],
|
|
$v['M_PatientLocation'],
|
|
$userid,
|
|
$v['Mcu_PreregisterPatientsM_TitleID'],
|
|
$corporateCode,
|
|
$v['M_PatientDepartement'],
|
|
$v['M_PatientNIP']
|
|
]);
|
|
if (!$rows) {
|
|
$message = $this->db_onedev->error();
|
|
$this->db_onedev->trans_rollback();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$last_id_x = $this->db_onedev->insert_id();
|
|
if (intval($v['Mcu_PreregisterPatientsM_PatientID']) == 0) {
|
|
|
|
$sql = "SELECT fn_numbering_cpone('P') as number";
|
|
$rows = $this->db_onedev->query($sql);
|
|
if (!$rows) {
|
|
$message = $this->db_onedev->error();
|
|
$this->db_onedev->trans_rollback();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$number = $rows->result_array()[0]['number'];
|
|
|
|
$title_id = $v['Mcu_PreregisterPatientsM_TitleID'];
|
|
// $religion_id = $v['Mcu_PreregisterDetailsM_ReligionID'];
|
|
$religion_id = '';
|
|
$nameNewP = $this->db_onedev->escape($v["Mcu_PreregisterPatientsPatientName"]);
|
|
$nameNewPn = str_replace("'", "\\'", $v['Mcu_PreregisterPatientsPatientName']);
|
|
|
|
|
|
|
|
$sql = "INSERT INTO m_patient (
|
|
M_PatientPrefix,
|
|
M_PatientName,
|
|
M_PatientSuffix,
|
|
M_PatientM_TitleID,
|
|
M_PatientGender,
|
|
M_PatientDOB,
|
|
M_PatientIdentifierCode,
|
|
M_PatientIdentifierSystem,
|
|
M_PatientIdentifierValue,
|
|
M_PatientPosisi,
|
|
M_PatientDivisi,
|
|
M_PatientLocation,
|
|
M_PatientJob,
|
|
M_PatientEmail,
|
|
M_PatientHP,
|
|
M_PatientCreatedUserID,
|
|
M_PatientNIP,
|
|
M_PatientDepartement,
|
|
M_PatientNoReg,
|
|
M_PatientCreated,
|
|
M_PatientRegisteredByCorporateID,
|
|
M_PatientAddressRegionalCd,
|
|
M_PatientAddressCity,
|
|
M_PatientAddressRT,
|
|
M_PatientAddressRW,
|
|
M_PatientAddressVillage,
|
|
M_PatientAddressDistrict,
|
|
M_PatientAddressState,
|
|
M_PatientAddressCountry
|
|
)
|
|
VALUES(
|
|
'{$v["Mcu_PreregisterPatientsPatientPrefix"]}',
|
|
'{$nameNewPn}',
|
|
'{$v["Mcu_PreregisterPatientsPatientSuffix"]}',
|
|
'{$title_id}',
|
|
'{$v["Mcu_PreregisterPatientsM_SexCode"]}',
|
|
'{$pdob}',
|
|
'NNIDN',
|
|
'http://terminology.hl7.org/CodeSystem/v2-0203',
|
|
'{$v["Mcu_PreregisterPatientsKTP"]}',
|
|
'{$v['Mcu_PreregisterPatientsPosisi']}',
|
|
'{$v['Mcu_PreregisterPatientsDivisi']}',
|
|
'{$v['Mcu_PreregisterPatientsLocation']}',
|
|
'{$v['Mcu_PreregisterPatientsJob']}',
|
|
'{$v['Mcu_PreregisterPatientsEmail']}',
|
|
'{$v['Mcu_PreregisterPatientsHp']}',
|
|
'{$userid}',
|
|
'{$v['Mcu_PreregisterPatientsNIK']}',
|
|
'{$v['Mcu_PreregisterPatientsDepartment']}',
|
|
'{$number}',
|
|
NOW(),
|
|
'{$setup['Mgm_McuCorporateID']}',
|
|
'{$v['inp_RegionalCode']}',
|
|
'{$v['inp_CorporateAddressCity']}',
|
|
'{$v['inp_CorporateAddressRT']}',
|
|
'{$v['inp_CorporateAddressRW']}',
|
|
'{$v['inp_CorporateAddressVillage']}',
|
|
'{$v['inp_CorporateAddressDistrict']}',
|
|
'{$v['inp_CorporateAddressState']}',
|
|
'{$v['country']}'
|
|
)";
|
|
//echo $sql;
|
|
$rows = $this->db_onedev->query($sql);
|
|
if (!$rows) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->db_onedev->trans_rollback();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$patient_id = $this->db_onedev->insert_id();
|
|
$sql = "UPDATE mcu_preregister_patients SET Mcu_PreregisterPatientsM_PatientID = {$patient_id}, Mcu_PreregisterPatientsPID ='{$number}' WHERE Mcu_PreregisterPatientsID = {$last_id_x}";
|
|
$rows = $this->db_onedev->query($sql);
|
|
if (!$rows) {
|
|
$message = $this->db_onedev->error();
|
|
$this->db_onedev->trans_rollback();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
|
|
$result = array(
|
|
"total" => 1,
|
|
"records" => array('status' => 'OK')
|
|
);
|
|
$this->db_onedev->trans_commit();
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
function getsexreg()
|
|
{
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$rows = [];
|
|
$query = " SELECT *
|
|
FROM m_title
|
|
WHERE
|
|
M_TitleIsActive = 'Y'
|
|
";
|
|
$gender = [
|
|
[
|
|
"M_SexID" => "MALE",
|
|
"M_SexCode" => "MALE",
|
|
"m_sexname" => "Laki Laki"
|
|
],
|
|
[
|
|
"M_SexID" => "FEMALE",
|
|
"M_SexCode" => "FEMALE",
|
|
"m_sexname" => "Perempuan"
|
|
],
|
|
[
|
|
"M_SexID" => "OTHER",
|
|
"M_SexCode" => "OTHER",
|
|
"m_sexname" => "Lainnya"
|
|
]
|
|
];
|
|
//echo $query;
|
|
$rows['titles'] = $this->db_onedev->query($query)->result_array();
|
|
|
|
|
|
$rows['sexes'] = $gender;
|
|
$query = " SELECT * FROM terminology
|
|
WHERE attribute_path = 'Person.religion.code'
|
|
AND code_system = 'xcpone.code.religion'
|
|
AND status_cd = 'normal'
|
|
ORDER BY order_no
|
|
";
|
|
//echo $query;
|
|
$rows['religions'] = $this->db_onedev->query($query)->result_array();
|
|
|
|
$query = " SELECT * FROM terminology
|
|
WHERE attribute_path = 'Person.identifier.type'
|
|
AND code_system = 'http://terminology.hl7.org/CodeSystem/v2-0203'
|
|
AND status_cd = 'normal'
|
|
ORDER BY order_no
|
|
";
|
|
//echo $query;
|
|
$rows['kartuidentitass'] = $this->db_onedev->query($query)->result_array();
|
|
|
|
|
|
$result = array(
|
|
"total" => count($rows),
|
|
"records" => $rows,
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
function removepatient()
|
|
{
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$userid = $this->sys_user["M_UserID"];
|
|
$prm = $this->sys_input;
|
|
|
|
$query = " UPDATE mcu_preregister_patients SET
|
|
Mcu_PreregisterPatientsIsActive = 'N',
|
|
Mcu_PreregisterPatientsUserID = {$userid}
|
|
WHERE
|
|
Mcu_PreregisterPatientsID = {$prm['Mcu_PreregisterPatientsID']}";
|
|
$this->db_onedev->query($query);
|
|
$result = array(
|
|
"total" => 1,
|
|
"records" => array('status' => 'OK')
|
|
);
|
|
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
function getdatapackets()
|
|
{
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$search = $prm["search"];
|
|
$setup = $prm["setup"];
|
|
|
|
$number_limit = 10;
|
|
$number_offset = ($prm['current_page'] - 1) * $number_limit;
|
|
|
|
$sql = "SELECT DISTINCT
|
|
T_PacketID as id,
|
|
T_PacketName as name,
|
|
T_PacketSasCode as code,
|
|
T_PacketIsOptional,
|
|
nat_test,
|
|
ss_price_mou.T_PriceTotal as price
|
|
FROM ss_price_mou
|
|
JOIN t_packet ON T_TestID = T_PacketID AND T_PacketIsActive = 'Y'
|
|
JOIN mgm_mcupacket ON T_PacketID = Mgm_McuPacketT_PacketID
|
|
AND Mgm_McuPacketIsActive = 'Y' AND Mgm_McuPacketMgm_McuID = {$setup['Mgm_McuID']}
|
|
WHERE
|
|
Ss_PriceMouMgm_McuID = {$setup['Mgm_McuID']} AND is_packet = 'Y' AND
|
|
( T_TestName LIKE CONCAT('%','{$search}','%') )";
|
|
|
|
$sql = "SELECT count(*) as total
|
|
FROM (
|
|
SELECT distinct T_PacketID as id, T_PacketName as name, T_PacketSasCode as code, nat_test
|
|
FROM ss_price_mou
|
|
JOIN t_packet ON T_TestID = T_PacketID AND T_PacketIsActive = 'Y'
|
|
JOIN mgm_mcupacket ON T_PacketID = Mgm_McuPacketT_PacketID
|
|
AND Mgm_McuPacketIsActive = 'Y' AND Mgm_McuPacketMgm_McuID = {$setup['Mgm_McuID']}
|
|
WHERE
|
|
T_PriceT_PriceHeaderID = {$setup['Mgm_McuT_PriceHeaderID']} AND is_packet = 'Y' AND
|
|
( T_TestName LIKE CONCAT('%','{$search}','%') )
|
|
) x
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql, []);
|
|
$tot_count = 0;
|
|
$tot_page = 0;
|
|
if ($query) {
|
|
$tot_count = $query->result_array()[0]["total"];
|
|
$tot_page = ceil($tot_count / $number_limit);
|
|
} else {
|
|
$this->sys_error_db("m_doctor count", $this->db_onedev);
|
|
exit;
|
|
}
|
|
|
|
$query = "SELECT DISTINCT
|
|
T_PacketID as id,
|
|
T_PacketName as name,
|
|
T_PacketSasCode as code,
|
|
nat_test,
|
|
T_PacketIsOptional,
|
|
ss_price_mou.T_PriceTotal as price
|
|
FROM ss_price_mou
|
|
JOIN t_packet ON T_TestID = T_PacketID AND T_PacketIsActive = 'Y' AND T_PacketIsGenerated = 'Y'
|
|
JOIN mgm_mcupacket ON T_PacketID = Mgm_McuPacketT_PacketID
|
|
AND Mgm_McuPacketIsActive = 'Y' AND Mgm_McuPacketMgm_McuID = {$setup['Mgm_McuID']}
|
|
WHERE
|
|
T_PriceT_PriceHeaderID = {$setup['Mgm_McuT_PriceHeaderID']} AND is_packet = 'Y' AND
|
|
( T_TestName LIKE CONCAT('%','{$search}','%') )
|
|
ORDER BY T_PacketSasCode ASC
|
|
limit $number_limit offset $number_offset";
|
|
//echo $query;
|
|
$rows = $this->db_onedev->query($query)->result_array();
|
|
if ($rows) {
|
|
foreach ($rows as $kp => $vp) {
|
|
$rows[$kp]['nat_test'] = json_decode($vp['nat_test']);
|
|
}
|
|
}
|
|
|
|
$result = array(
|
|
"total" => $tot_page,
|
|
"records" => $rows,
|
|
'qry' => $this->db_onedev->last_query(),
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
|
|
function getdatatests()
|
|
{
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$search = $prm["search"];
|
|
$setup = $prm["setup"];
|
|
$number_limit = 10;
|
|
$number_offset = ($prm['current_page'] - 1) * $number_limit;
|
|
|
|
$sql = "SELECT test.T_TestID as id, test.T_TestName as name, test.T_TestSasCode as code, nat_test
|
|
FROM ss_price_mou
|
|
JOIN t_test test ON test.T_TestID = ss_price_mou.T_TestID AND T_TestIsActive = 'Y'
|
|
JOIN t_price price ON test.T_TestID = price.T_PriceT_TestID AND T_PriceIsActive = 'Y'
|
|
AND T_PriceT_PriceHeaderID = {$setup['Mgm_McuT_PriceHeaderID']}
|
|
AND (test.T_TestName LIKE CONCAT('%','{$search}','%') OR test.T_TestSasCode LIKE CONCAT('%','{$search}','%'))
|
|
WHERE
|
|
Ss_PriceMouMgm_McuID = {$setup['Mgm_McuID']} AND is_packet = 'N' AND
|
|
price.T_PriceIsCito = 'N'";
|
|
|
|
$sql = "SELECT count(*) as total
|
|
FROM (
|
|
SELECT test.T_TestID as id, test.T_TestName as name, test.T_TestSasCode as code, nat_test
|
|
FROM ss_price_mou
|
|
JOIN t_test test ON test.T_TestID = ss_price_mou.T_TestID AND T_TestIsActive = 'Y'
|
|
JOIN t_price price ON test.T_TestID = price.T_PriceT_TestID AND T_PriceIsActive = 'Y'
|
|
AND price.T_PriceT_PriceHeaderID = {$setup['Mgm_McuT_PriceHeaderID']}
|
|
AND (test.T_TestName LIKE CONCAT('%','{$search}','%') OR test.T_TestSasCode LIKE CONCAT('%','{$search}','%'))
|
|
WHERE
|
|
ss_price_mou.T_PriceT_PriceHeaderID = {$setup['Mgm_McuT_PriceHeaderID']}
|
|
AND is_packet = 'N'
|
|
AND price.T_PriceIsCito = 'N'
|
|
) x
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql, []);
|
|
$tot_count = 0;
|
|
$tot_page = 0;
|
|
if ($query) {
|
|
$tot_count = $query->result_array()[0]["total"];
|
|
$tot_page = ceil($tot_count / $number_limit);
|
|
} else {
|
|
$this->sys_error_db("m_doctor count", $this->db_onedev);
|
|
exit;
|
|
}
|
|
$query = "SELECT test.T_TestID as id, test.T_TestName as name, test.T_TestSasCode as code, nat_test,ss_price_mou.T_PriceTotal as price
|
|
FROM ss_price_mou
|
|
JOIN t_test test ON test.T_TestID = ss_price_mou.T_TestID AND T_TestIsActive = 'Y'
|
|
JOIN t_price price ON test.T_TestID = price.T_PriceT_TestID AND T_PriceIsActive = 'Y'
|
|
AND price.T_PriceT_PriceHeaderID = {$setup['Mgm_McuT_PriceHeaderID']}
|
|
AND (test.T_TestName LIKE CONCAT('%','{$search}','%') OR test.T_TestSasCode LIKE CONCAT('%','{$search}','%'))
|
|
WHERE
|
|
ss_price_mou.T_PriceT_PriceHeaderID = {$setup['Mgm_McuT_PriceHeaderID']}
|
|
AND is_packet = 'N'
|
|
AND price.T_PriceIsCito = 'N'
|
|
ORDER BY T_TestSasCode ASC
|
|
limit $number_limit offset $number_offset
|
|
";
|
|
//echo $query;
|
|
$rows = $this->db_onedev->query($query)->result_array();
|
|
if ($rows) {
|
|
foreach ($rows as $kp => $vp) {
|
|
$rows[$kp]['nat_test'] = json_decode($vp['nat_test']);
|
|
}
|
|
}
|
|
$result = array(
|
|
"total" => $tot_page,
|
|
"records" => $rows,
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
|
|
function savepreregisterpatient()
|
|
{
|
|
$prm = $this->sys_input;
|
|
$userid = $this->sys_user["M_UserID"];
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$v = $prm['selected_patient'];
|
|
$religion = $v['selected_religion'];
|
|
|
|
$religionCode = $religion['code'];
|
|
$religionSystem = $religion['code_system'];
|
|
$setup = $prm['setup'];
|
|
$antrian = $prm['antrian'] ? $prm['antrian'] : '';
|
|
|
|
$pdob = date('Y-m-d', strtotime($v['Mcu_PreregisterPatientsDOB']));
|
|
|
|
$Mcu_PreregisterPatientsTests = '';
|
|
$packettests = array();
|
|
if (count($prm['selected_packets']) > 0) {
|
|
foreach ($prm['selected_packets'] as $kp => $vp) {
|
|
array_push($packettests, $vp['code']);
|
|
}
|
|
}
|
|
if (count($prm['selected_tests']) > 0) {
|
|
foreach ($prm['selected_tests'] as $kt => $vt) {
|
|
|
|
// jika test diambil dari dalam paket opsional
|
|
if (!empty($vt['T_PacketDetailT_PacketID'])) {
|
|
$code = $vt['code'] . "_" . $vt['T_PacketDetailT_PacketID'] . "-opt";
|
|
array_push($packettests, $code);
|
|
} else {
|
|
array_push($packettests, $vt['code']);
|
|
}
|
|
}
|
|
}
|
|
if (count($packettests) > 0) {
|
|
$Mcu_PreregisterPatientsTests = join(',', $packettests);
|
|
}
|
|
|
|
$sql = "SELECT * FROM m_patient WHERE M_PatientID = ?";
|
|
$rows = $this->db_onedev->query($sql, [$v['Mcu_PreregisterPatientsM_PatientID']]);
|
|
if (!$rows) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$dataPatientBefore = $rows->row_array();
|
|
|
|
/*ada permintaan tdk bisa update nama pasien dari menu preregister 210525 (diki)*/
|
|
$query = " UPDATE mcu_preregister_patients SET
|
|
Mcu_PreregisterPatientsM_PatientID = ?,
|
|
Mcu_PreregisterPatientsKTP = ?,
|
|
Mcu_PreregisterPatientsNIP = ?,
|
|
Mcu_PreregisterPatientsPatientPrefix = ?,
|
|
Mcu_PreregisterPatientsPatientSuffix = ?,
|
|
Mcu_PreregisterPatientsEmail = ?,
|
|
Mcu_PreregisterPatientsHp = ?,
|
|
Mcu_PreregisterPatientsDOB = ?,
|
|
Mcu_PreregisterPatientsPosisi = ?,
|
|
Mcu_PreregisterPatientsDivisi = ?,
|
|
Mcu_PreregisterPatientsJob = ?,
|
|
Mcu_PreregisterPatientsLocation = ?,
|
|
Mcu_PreregisterPatientsGender = ?,
|
|
Mcu_PreregisterPatientsM_TitleID = ?,
|
|
Mcu_PreregisterPatientsCorporateCode = ?,
|
|
Mcu_PreregisterPatientsDepartment = ?,
|
|
Mcu_PreregisterPatientsReligion = ?,
|
|
Mcu_PreregisterPatientsOrders = ?,
|
|
Mcu_PreregisterPatientsUserID = ?,
|
|
Mcu_PreregisterPatientsLastUpdated = NOW()
|
|
WHERE
|
|
Mcu_PreregisterPatientsID = ?";
|
|
//echo $query;
|
|
$rows = $this->db_onedev->query($query, [
|
|
$v['Mcu_PreregisterPatientsM_PatientID'],
|
|
$v['Mcu_PreregisterPatientsKTP'],
|
|
$v['Mcu_PreregisterPatientsNIP'],
|
|
$v['Mcu_PreregisterPatientsPatientPrefix'],
|
|
$v['Mcu_PreregisterPatientsPatientSuffix'],
|
|
$v['Mcu_PreregisterPatientsEmail'],
|
|
$v['Mcu_PreregisterPatientsHp'],
|
|
$pdob,
|
|
$v['Mcu_PreregisterPatientsPosisi'],
|
|
$v['Mcu_PreregisterPatientsDivisi'],
|
|
$v['Mcu_PreregisterPatientsJob'],
|
|
$v['Mcu_PreregisterPatientsLocation'],
|
|
$v['Mcu_PreregisterPatientsGender'],
|
|
$v['Mcu_PreregisterPatientsM_TitleID'],
|
|
$v['Mcu_PreregisterPatientsCorporateCode'],
|
|
$v['Mcu_PreregisterPatientsDepartment'],
|
|
$religionCode,
|
|
$Mcu_PreregisterPatientsTests,
|
|
$userid,
|
|
$v['Mcu_PreregisterPatientsID']
|
|
]);
|
|
if (!$rows) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
|
|
$sql_ktp = '';
|
|
if (isset($v['Mcu_PreregisterPatientsKTP']) && $v['Mcu_PreregisterPatientsKTP'] != '') {
|
|
$sql_ktp = "M_PatientIdentifierCode = 'NNIDN', M_PatientIdentifierSystem='http://terminology.hl7.org/CodeSystem/v2-0203', M_PatientIdentifierValue = '{$v['Mcu_PreregisterPatientsKTP']}',";
|
|
//echo $sql_ktp;
|
|
} else {
|
|
$sql_ktp = "M_PatientIdentifierCode = '', M_PatientIdentifierSystem='', M_PatientIdentifierValue = '',";
|
|
}
|
|
$sql = "UPDATE m_patient SET
|
|
$sql_ktp
|
|
M_PatientDOB = ?,
|
|
M_PatientM_TitleID = ?,
|
|
M_PatientNIP = ?,
|
|
M_PatientGender = ?,
|
|
M_PatientPrefix = ?,
|
|
M_PatientName = ?,
|
|
M_PatientSuffix = ?,
|
|
M_PatientEmail = ?,
|
|
M_PatientHP = ?,
|
|
M_PatientDivisi = ?,
|
|
M_PatientPosisi = ?,
|
|
M_PatientLocation = ?,
|
|
M_PatientJob = ?,
|
|
M_PatientDepartement = ?,
|
|
M_PatientReligionCode = ?,
|
|
M_PatientReligionSystem = ?,
|
|
M_PatientAddressRegionalCd = ?,
|
|
M_PatientAddressState = ?,
|
|
M_PatientAddressCity = ?,
|
|
M_PatientAddressDistrict = ?,
|
|
M_PatientAddressVillage = ?,
|
|
M_PatientAddress = ?,
|
|
M_PatientLastUpdatedUserID = ?,
|
|
M_PatientLastUpdated = NOW()
|
|
WHERE
|
|
M_PatientID = ?
|
|
";
|
|
//echo $sql;
|
|
$qry = $this->db_onedev->query($sql, [
|
|
$pdob,
|
|
$v['Mcu_PreregisterPatientsM_TitleID'],
|
|
$v['Mcu_PreregisterPatientsNIP'],
|
|
$v['Mcu_PreregisterPatientsGender'],
|
|
$v['Mcu_PreregisterPatientsPatientPrefix'],
|
|
$v['Mcu_PreregisterPatientsPatientName'],
|
|
$v['Mcu_PreregisterPatientsPatientSuffix'],
|
|
$v['Mcu_PreregisterPatientsEmail'],
|
|
$v['Mcu_PreregisterPatientsHp'],
|
|
$v['Mcu_PreregisterPatientsDivisi'],
|
|
$v['Mcu_PreregisterPatientsPosisi'],
|
|
$v['Mcu_PreregisterPatientsLocation'],
|
|
$v['Mcu_PreregisterPatientsJob'],
|
|
$v['Mcu_PreregisterPatientsDepartment'],
|
|
$religionCode,
|
|
$religionSystem,
|
|
$prm['M_PatientAddressRegionalCd'],
|
|
$prm['M_PatientAddressState'],
|
|
$prm['M_PatientAddressCity'],
|
|
$prm['M_PatientAddressDistrict'],
|
|
$prm['M_PatientAddressVillage'],
|
|
$prm['M_PatientAddress'],
|
|
$userid,
|
|
$v['Mcu_PreregisterPatientsM_PatientID']
|
|
]);
|
|
if (!$qry) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
//echo $this->db_onedev->last_query();
|
|
|
|
if ($antrian != '' && $antrian != null) {
|
|
$sql = "INSERT INTO preregister_antrian(
|
|
PreregisterAntrianMcu_PreregisterPatientsID,
|
|
PreregisterAntrianMgm_McuID,
|
|
PreregisterAntrianM_PatientID,
|
|
PreregisterAntrianNumber,
|
|
PreregisterAntrianUserID,
|
|
PreregisterAntrianCreated
|
|
) VALUES(?,?,?,?,?,NOW())";
|
|
$qry = $this->db_onedev->query($sql, [
|
|
$v['Mcu_PreregisterPatientsID'],
|
|
$v['Mcu_PreregisterPatientsMgm_McuID'],
|
|
$v['Mcu_PreregisterPatientsM_PatientID'],
|
|
$antrian,
|
|
$userid
|
|
]);
|
|
if (!$qry) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
}
|
|
$sql = "SELECT * FROM m_patient WHERE M_PatientID = ?";
|
|
$rows = $this->db_onedev->query($sql, [$v['Mcu_PreregisterPatientsM_PatientID']]);
|
|
if (!$rows) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$dataPatientAfter = $rows->row_array();
|
|
$sql = "INSERT INTO cpone_log.log_patient(
|
|
Log_PatientM_PatientID,
|
|
Log_PatientDate,
|
|
Log_PatientCode,
|
|
Log_PatientJsonBefore,
|
|
Log_PatientJsonAfter,
|
|
Log_PatientUserID)
|
|
VALUES (?, NOW(), 'EDIT', ?, ?, ?)";
|
|
$rows = $this->db_onedev->query($sql, [
|
|
$v['Mcu_PreregisterPatientsM_PatientID'],
|
|
json_encode($dataPatientBefore),
|
|
json_encode($dataPatientAfter),
|
|
$userid
|
|
]);
|
|
if (!$rows) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
|
|
$result = array(
|
|
"msg" => "ok",
|
|
"total" => 1,
|
|
"records" => $prm
|
|
);
|
|
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
|
|
function checkpatientbynoid($noKtp, $pid, $corporateid)
|
|
{
|
|
// $prm = $this->sys_input;
|
|
// $userid = $this->sys_user["M_UserID"];
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
// $noKtp = $prm['nik'];
|
|
// $pid = $prm['pid'];
|
|
// $corporateid = $prm['corporateid'];
|
|
$sql = "SELECT * FROM m_patient
|
|
WHERE M_PatientIdentifierCode = 'NNIDN'
|
|
AND M_PatientIdentifierValue = $noKtp
|
|
AND M_PatientIsActive = 'Y'
|
|
AND M_PatientID <> $pid
|
|
AND M_PatientRegisteredByCorporateID = $corporateid";
|
|
$qry = $this->db_onedev->query($sql);
|
|
if (!$qry) {
|
|
$message = $this->db_onedev->error();
|
|
$this->sys_error($message);
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
exit;
|
|
}
|
|
$data = $qry->result_array();
|
|
if (count($data) > 0) {
|
|
$rst = [
|
|
|
|
"msg" => "errpatient",
|
|
"msg_dialog" => "Pasien memiliki NIK sama dengan pasien berikut",
|
|
"data" => $data,
|
|
"total" => count($data)
|
|
];
|
|
$this->sys_ok($rst);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
function checkpatientbynamedob($name, $dob, $pid, $corporateid)
|
|
{
|
|
// $prm = $this->sys_input;
|
|
// $userid = $this->sys_user["M_UserID"];
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
// $name = $prm['name'];
|
|
// $dob = $prm['dob'];
|
|
// $pid = $prm['pid'];
|
|
// $corporateid = $prm['corporateid'];
|
|
$sql = "SELECT * FROM m_patient
|
|
WHERE LOWER(M_PatientName)=LOWER(?)
|
|
AND M_PatientDOB= '{$dob}'
|
|
AND M_PatientIsActive = 'Y'
|
|
AND M_PatientID <> $pid
|
|
AND M_PatientRegisteredByCorporateID = $corporateid";
|
|
$qry = $this->db_onedev->query($sql, [$name]);
|
|
if (!$qry) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
// echo $sql;
|
|
$data = $qry->result_array();
|
|
if (count($data) > 0) {
|
|
$rst = [
|
|
"msg" => "errpatient",
|
|
"msg_dialog" => "Pasien memiliki Nama dan Tanggal Lahir sama dengan pasien berikut",
|
|
|
|
"data" => $data,
|
|
"total" => count($data)
|
|
];
|
|
$this->sys_ok($rst);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
function checkpatientbynip($nip, $pid, $corporateid)
|
|
{
|
|
// $prm = $this->sys_input;
|
|
// $userid = $this->sys_user["M_UserID"];
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
// $name = $prm['name'];
|
|
// $dob = $prm['dob'];
|
|
// $pid = $prm['pid'];
|
|
// $corporateid = $prm['corporateid'];
|
|
$sql = "SELECT * FROM m_patient
|
|
WHERE M_PatientNIP= '{$nip}'
|
|
AND M_PatientIsActive = 'Y'
|
|
AND M_PatientID <> $pid
|
|
AND M_PatientRegisteredByCorporateID = $corporateid";
|
|
$qry = $this->db_onedev->query($sql, []);
|
|
if (!$qry) {
|
|
$message = $this->db_onedev->error();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
// echo $sql;
|
|
$data = $qry->result_array();
|
|
if (count($data) > 0) {
|
|
$rst = [
|
|
"msg" => "errpatient",
|
|
"msg_dialog" => "Pasien memiliki NIP sama dengan pasien berikut",
|
|
|
|
"data" => $data,
|
|
"total" => count($data)
|
|
];
|
|
$this->sys_ok($rst);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
function getDetailPacketByID()
|
|
{
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$userid = $this->sys_user["M_UserID"];
|
|
$prm = $this->sys_input;
|
|
|
|
$T_PacketID = $prm['T_PacketID'];
|
|
|
|
// SELECT test.T_TestID as id, test.T_TestName as name, test.T_TestSasCode as code, nat_test,ss_price_mou.T_PriceTotal as price
|
|
$sql = "SELECT
|
|
T_PacketName,
|
|
T_PacketSasCode,
|
|
pd.T_PacketDetailID,
|
|
pd.T_PacketDetailT_PacketID,
|
|
pd.T_PacketDetailOriginalPrice,
|
|
pd.T_PacketDetailPrice as price,
|
|
T_PacketDetailPrice,
|
|
t.T_TestID as id,
|
|
t.T_TestParentT_TestID,
|
|
t.T_TestSasCode as code,
|
|
t.T_TestName as name,
|
|
t.T_TestNat_TestID,
|
|
T_PacketPrice,
|
|
T_PacketOriginalPrice
|
|
FROM t_packetdetail as pd
|
|
JOIN t_packet ON pd.T_PacketDetailT_PacketID = T_PacketID
|
|
JOIN t_test as t ON pd.T_PacketDetailT_TestID = t.T_TestID
|
|
AND t.T_TestIsActive = 'Y'
|
|
AND pd.T_PacketDetailIsActive = 'Y'
|
|
AND pd.T_PacketDetailT_PacketID = $T_PacketID";
|
|
|
|
$qry = $this->db_onedev->query($sql);
|
|
if (!$qry) {
|
|
$this->sys_error_db("list packet", $this->db_onedev);
|
|
exit;
|
|
}
|
|
|
|
$rows = $qry->result_array();
|
|
|
|
foreach ($rows as $key => $obj) {
|
|
$sql_nattest = "WITH RECURSIVE TestNatTest AS (
|
|
SELECT
|
|
T_TestID,
|
|
T_TestCode,
|
|
T_TestSasCode,
|
|
T_TestName,
|
|
T_TestNat_TestID
|
|
FROM t_test
|
|
WHERE T_TestIsActive = 'Y' AND T_TestParentT_TestID = ?
|
|
UNION ALL
|
|
SELECT
|
|
t.T_TestID,
|
|
t.T_TestCode,
|
|
t.T_TestSasCode,
|
|
t.T_TestName,
|
|
t.T_TestNat_TestID
|
|
FROM t_test t
|
|
INNER JOIN TestNatTest tnt ON t.T_TestParentT_TestID = tnt.T_TestID
|
|
WHERE T_TestIsActive = 'Y'
|
|
)
|
|
|
|
SELECT
|
|
T_TestID,
|
|
T_TestNat_TestID
|
|
FROM TestNatTest
|
|
ORDER BY T_TestNat_TestID";
|
|
$que_nattest = $this->db_onedev->query($sql_nattest, [$obj['T_TestID']]);
|
|
if (!$que_nattest) {
|
|
$this->sys_error_db("[Error] get nat_test per pemeriksaan");
|
|
exit;
|
|
}
|
|
$data = $que_nattest->result_array();
|
|
$nattest = array_column($data, 'T_TestNat_TestID');
|
|
array_unshift($nattest, $obj['T_TestNat_TestID']);
|
|
|
|
$rows[$key]['nat_test'] = $nattest;
|
|
}
|
|
|
|
$result = array(
|
|
// "total" => $tot_page,
|
|
"records" => $rows,
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
function getpreregistermenu()
|
|
{
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$sql = "SELECT S_MenuUrl as url FROM s_menu
|
|
WHERE S_MenuName = 'Registration (Preregister)' LIMIT 1";
|
|
$qry = $this->db_onedev->query($sql);
|
|
if (!$qry) {
|
|
$message = $this->db_onedev->error();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$data = $qry->row();
|
|
|
|
$this->sys_ok($data);
|
|
exit;
|
|
}
|
|
function lookup_barcodes()
|
|
{
|
|
try {
|
|
$prm = $this->sys_input;
|
|
//# cek token valid
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
/*$sql = "SELECT T_BarcodeLabID as id,
|
|
'barcode' as type,
|
|
T_SampleTypeID,
|
|
T_BarcodeLabID,
|
|
T_BarcodeLabBarcode,
|
|
T_BarcodeLabT_OrderHeaderID as orderid,
|
|
T_BarcodeLabCounter,
|
|
T_SampleTypeName,
|
|
'N' as chex
|
|
FROM t_barcodelab
|
|
JOIN t_sampletype ON T_BarcodeLabT_SampleTypeID = T_SampleTypeID
|
|
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID
|
|
JOIN t_samplestation ON T_BahanT_SampleStationID = T_SampleStationID AND T_SampleStationIsNonLab = ''
|
|
WHERE
|
|
T_BarcodeLabT_OrderHeaderID = {$prm['T_OrderHeaderID']} AND T_BarcodeLabIsActive = 'Y'
|
|
UNION
|
|
SELECT T_TestID as id,
|
|
'nonlab' as type,
|
|
T_OrderDetailID as T_SampleTypeID,
|
|
'' as T_BarcodeLabID,
|
|
'-' as T_BarcodeLabBarcode,
|
|
T_OrderHeaderID as order_id,
|
|
0 as T_BarcodeLabCounter,
|
|
T_TestName as T_SampleTypeName,
|
|
'N' as chex
|
|
FROM t_orderheader
|
|
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailIsActive = 'Y'
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultName <> 'lab'
|
|
WHERE
|
|
T_OrderHeaderID = {$prm['T_OrderHeaderID']}
|
|
GROUP BY T_TestID
|
|
|
|
";*/
|
|
$sql = "SELECT T_BarcodeLabID as id,
|
|
'barcode' as type,
|
|
T_SampleTypeID,
|
|
T_BarcodeLabID,
|
|
T_BarcodeLabBarcode,
|
|
T_BarcodeLabT_OrderHeaderID as orderid,
|
|
T_BarcodeLabCounter,
|
|
T_SampleTypeName,
|
|
'N' as chex
|
|
FROM t_barcodelab
|
|
JOIN t_sampletype ON T_BarcodeLabT_SampleTypeID = T_SampleTypeID
|
|
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID
|
|
JOIN t_samplestation ON T_BahanT_SampleStationID = T_SampleStationID AND T_SampleStationIsNonLab = ''
|
|
WHERE
|
|
T_BarcodeLabT_OrderHeaderID = {$prm['T_OrderHeaderID']} AND T_BarcodeLabIsActive = 'Y'
|
|
UNION
|
|
SELECT T_TestID as id,
|
|
'nonlab' as type,
|
|
T_OrderDetailID as T_SampleTypeID,
|
|
'' as T_BarcodeLabID,
|
|
'-' as T_BarcodeLabBarcode,
|
|
T_OrderHeaderID as order_id,
|
|
0 as T_BarcodeLabCounter,
|
|
T_TestName as T_SampleTypeName,
|
|
'N' as chex
|
|
FROM t_orderheader
|
|
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailIsActive = 'Y'
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
( Group_ResultName <> 'lab' AND Group_ResultName <> 'Papsmear') AND
|
|
Group_ResultFlagNonLab = 'Y'
|
|
WHERE
|
|
T_OrderHeaderID = {$prm['T_OrderHeaderID']}
|
|
GROUP BY T_TestID
|
|
UNION
|
|
SELECT T_TestID as id,
|
|
'nonlab' as type,
|
|
T_OrderDetailID as T_SampleTypeID,
|
|
'' as T_BarcodeLabID,
|
|
'-' as T_BarcodeLabBarcode,
|
|
T_OrderHeaderID as order_id,
|
|
0 as T_BarcodeLabCounter,
|
|
T_TestName as T_SampleTypeName,
|
|
'N' as chex
|
|
FROM t_orderheader
|
|
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailIsActive = 'Y'
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND ( Group_ResultName = 'Papsmear')
|
|
WHERE
|
|
T_OrderHeaderID = {$prm['T_OrderHeaderID']}
|
|
GROUP BY Group_ResultID
|
|
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$rows = $query->result_array();
|
|
$rst = [];
|
|
if ($rows) {
|
|
foreach ($rows as $k => $v) {
|
|
$v['chex'] = false;
|
|
// if ($v['chex'] == 'N')
|
|
// $rows[$k]['chex'] = false;
|
|
// else
|
|
// $rows[$k]['chex'] = true;
|
|
$v['count'] = 1;
|
|
$rst[] = $v;
|
|
// if ($v['type'] == 'barcode' && $v['T_SampleTypeID'] == 48) {
|
|
// $rst[] = $v;
|
|
// }
|
|
}
|
|
}
|
|
$result = array("total" => 0, "records" => $rst);
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
function getcorporate()
|
|
{
|
|
try {
|
|
$prm = $this->sys_input;
|
|
//# cek token valid
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$code = $prm['code'];
|
|
|
|
|
|
$sql = "SELECT
|
|
CorporateID,
|
|
CorporateCode,
|
|
CorporateName,
|
|
'Y' AS CorporateDefault
|
|
FROM corporate
|
|
WHERE (CorporateID = ?);";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql, [$code]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$corporate = $query->row_array();
|
|
$sql = "SELECT
|
|
CorporateID,
|
|
CorporateCode,
|
|
CorporateName,
|
|
'N' AS CorporateDefault
|
|
FROM corporate_relation
|
|
JOIN corporate ON CorporateRelationCorporateRelationID = CorporateID
|
|
AND CorporateRelationIsActive = 'Y'
|
|
AND CorporateRelationCorporateID = ?";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql, [$corporate['CorporateID']]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$relation = $query->result_array();
|
|
// $rows = [$corporate,...$relation]
|
|
$rows = [$corporate];
|
|
for ($i = 0; $i < count($relation); $i++) {
|
|
array_push($rows, $relation[$i]);
|
|
}
|
|
$result = array("records" => $rows);
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
function search_patient_form()
|
|
{
|
|
$prm = $this->sys_input;
|
|
$name = $prm['name'];
|
|
$dob = $prm['dob'];
|
|
$nik = $prm['nik'];
|
|
$ktp = $prm['ktp'];
|
|
$add_where = '';
|
|
// M_PatientIdentifierCode varchar(50) [NNIDN]
|
|
// M_PatientIdentifierSystem varchar(100) [http://terminology.hl7.org/CodeSystem/v2-0203]
|
|
// M_PatientIdentifierCode varchar(50) [NNIDN]
|
|
if ($nik != '') {
|
|
$add_where .= " AND M_PatientNIP = '{$nik}'";
|
|
}
|
|
if ($ktp != '') {
|
|
$add_where .= " AND M_PatientIdentifierValue = '{$nik}' AND M_PatientIdentifierCode = 'NNIDN'";
|
|
}
|
|
$setup = $prm['setup'];
|
|
$join_company = "";
|
|
if (isset($prm['company']) && intval($prm['company']) > 0) {
|
|
$join_company = "JOIN t_orderheader ON T_OrderHeaderM_PatientID = M_PatientID AND
|
|
T_OrderHeaderIsActive = 'Y' AND
|
|
T_OrderHeaderM_CompanyID = {$prm['company']}";
|
|
}
|
|
|
|
$sql = "SELECT COUNT(*) as total
|
|
FROM (
|
|
SELECT *
|
|
FROM m_patient
|
|
$join_company
|
|
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
|
|
WHERE
|
|
M_PatientIsActive = 'Y'
|
|
AND M_PatientRegisteredByCorporateID = {$setup['Mgm_McuCorporateID']}
|
|
AND M_PatientName LIKE CONCAT('%',?,'%') AND
|
|
(DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') LIKE '%{$dob}%' and M_PatientDOB IS NOT NULL)
|
|
{$add_where}
|
|
GROUP BY M_PatientID
|
|
) x
|
|
";
|
|
//echo $sql;
|
|
$qry = $this->db_onedev->query($sql, [$name]);
|
|
if (!$qry) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$countx = $qry->row()->total;
|
|
$sql = "SELECT *, DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') as dob_ina,
|
|
M_PatientNoReg as Mcu_PreregisterPatientsPID,
|
|
M_PatientIdentifierValue as Mcu_PreregisterPatientsKTP,
|
|
M_PatientID as Mcu_PreregisterPatientsM_PatientID,
|
|
M_TitleID as Mcu_PreregisterPatientsM_TitleID,
|
|
M_PatientName as Mcu_PreregisterPatientsPatientName,
|
|
M_PatientGender as Mcu_PreregisterPatientsGender,
|
|
M_PatientDOB as Mcu_PreregisterPatientsDOB,
|
|
IFNULL(M_PatientReligionCode,0) as Mcu_PreregisterPatientsReligion,
|
|
M_PatientEmail as Mcu_PreregisterDetailsEmail,
|
|
M_PatientHP as Mcu_PreregisterDetailsHp,
|
|
M_PatientEmail as Mcu_PreregisterPatientsEmail,
|
|
M_PatientHP as Mcu_PreregisterPatientsHp,
|
|
M_PatientPosisi as Mcu_PreregisterPatientsPosisi,
|
|
M_PatientDivisi as Mcu_PreregisterPatientsDivisi,
|
|
M_PatientJob as Mcu_PreregisterPatientsJob,
|
|
M_PatientDepartement as Mcu_PreregisterPatientsDepartment
|
|
FROM m_patient
|
|
$join_company
|
|
LEFT join m_title on M_PatientM_TitleID = M_TitleID
|
|
WHERE
|
|
M_PatientRegisteredByCorporateID = {$setup['Mgm_McuCorporateID']}
|
|
AND M_PatientIsActive = 'Y' AND
|
|
M_PatientName LIKE CONCAT('%',?,'%') AND
|
|
(DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') LIKE '%{$dob}%' and M_PatientDOB IS NOT NULL)
|
|
{$add_where}
|
|
GROUP BY M_PatientID
|
|
LIMIT 10 OFFSET 0
|
|
";
|
|
|
|
//echo $sql;
|
|
$qry = $this->db_onedev->query($sql, [$name]);
|
|
if (!$qry) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$rows = $qry->result_array();
|
|
$result = array(
|
|
"total" => $countx,
|
|
"records" => $rows
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
|
|
function getdetailcorporate()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
|
|
$sql = "SELECT corporate.*, IFNULL(display, '') as countryName
|
|
FROM corporate
|
|
LEFT JOIN terminology ON attribute_path = 'Address.country' AND code = CorporateAddressCountry
|
|
WHERE
|
|
CorporateID = ?";
|
|
$qry = $this->db_onedev->query($sql, array($prm['Mgm_McuCorporateID']));
|
|
|
|
if (!$qry) {
|
|
$this->sys_error_db("search corporate select error", $this->db_onedev);
|
|
exit;
|
|
}
|
|
|
|
$row = $qry->row_array();
|
|
if (!$row) {
|
|
# code...
|
|
}
|
|
$result = array(
|
|
"records" => $row
|
|
);
|
|
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function searchwilayah()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
$search = $prm['search'];
|
|
|
|
$sql = "SELECT
|
|
r.regional_cd,
|
|
r.regional_cd AS id,
|
|
r.regional_nm,
|
|
r.full_name AS text_nm,
|
|
r.pro_cd, IFNULL(pro.regional_nm,'') AS pro_nm,
|
|
r.kab_cd, IFNULL(kab.regional_nm,'') AS kab_nm,
|
|
r.kec_cd, IFNULL(kec.regional_nm,'') AS kec_nm,
|
|
r.kel_cd, IFNULL(kel.regional_nm,'') AS kel_nm,
|
|
r.status_cd, r.old_nm
|
|
FROM regional r
|
|
LEFT JOIN regional pro ON CONCAT(r.pro_cd, REPEAT('0', 8)) = pro.regional_cd
|
|
LEFT JOIN regional kab ON CONCAT(r.pro_cd, r.kab_cd, REPEAT('0', 6)) = kab.regional_cd
|
|
LEFT JOIN regional kec ON CONCAT(r.pro_cd, r.kab_cd, r.kec_cd, REPEAT('0', 3)) = kec.regional_cd
|
|
LEFT JOIN regional kel ON CONCAT(r.pro_cd, r.kab_cd, r.kec_cd, r.kel_cd) = kel.regional_cd
|
|
WHERE
|
|
r.full_name LIKE CONCAT('%','{$search}','%')
|
|
LIMIT 100
|
|
";
|
|
|
|
$qry = $this->db_onedev->query($sql);
|
|
|
|
if (!$qry) {
|
|
$this->sys_error_db("search wilayah select error", $this->db_onedev);
|
|
exit;
|
|
}
|
|
|
|
$rows = $qry->result_array();
|
|
|
|
$result = array(
|
|
"records" => $rows,
|
|
"sql" => $this->db_onedev->last_query()
|
|
);
|
|
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function getCountryTerminology()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
|
|
$sql = "SELECT
|
|
code,
|
|
display
|
|
FROM
|
|
terminology
|
|
WHERE status_cd = 'normal'
|
|
AND attribute_path = 'Address.country'
|
|
AND resource_type = 'Address'
|
|
AND `code` = 'ID'
|
|
AND code_system = 'urn:iso:std:iso:3166'
|
|
";
|
|
|
|
$qry = $this->db_onedev->query($sql);
|
|
|
|
if (!$qry) {
|
|
$this->sys_error_db("terminology select error", $this->db_onedev);
|
|
exit;
|
|
}
|
|
|
|
$rows = $qry->result_array();
|
|
|
|
$result = array(
|
|
"records" => $rows,
|
|
"sql" => $this->db_onedev->last_query()
|
|
);
|
|
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function getCountryTerminologySelected()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
|
|
$sql = "SELECT
|
|
resource_type,
|
|
attribute_path,
|
|
code,
|
|
parent_code,
|
|
display,
|
|
display_en,
|
|
code_system,
|
|
order_no,
|
|
ft_index,
|
|
use_ind,
|
|
description,
|
|
status_cd,
|
|
created_dttm,
|
|
created_user_id,
|
|
updated_dttm,
|
|
updated_user_id,
|
|
nullified_dttm,
|
|
nullified_user_id
|
|
FROM
|
|
terminology
|
|
WHERE status_cd = 'normal'
|
|
AND attribute_path = 'Address.country'
|
|
AND resource_type = 'Address'
|
|
AND code_system = 'urn:iso:std:iso:3166'
|
|
AND
|
|
";
|
|
|
|
$qry = $this->db_onedev->query($sql);
|
|
|
|
if (!$qry) {
|
|
$this->sys_error_db("terminology select error", $this->db_onedev);
|
|
exit;
|
|
}
|
|
|
|
$rows = $qry->result_array();
|
|
|
|
$result = array(
|
|
"records" => $rows,
|
|
"sql" => $this->db_onedev->last_query()
|
|
);
|
|
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
}
|