db_onedev = $this->load->database("onedev", true); $this->db_dashboard = $this->load->database("cpone_dashboard", true); } private function normalize_tanggal_mcu($rawDate) { $rawDate = trim((string)$rawDate); if ($rawDate === '') { return ''; } $ts = strtotime($rawDate); if ($ts === false) { return ''; } return date('Y-m-d', $ts); } private function extract_tanggal_mcu($prm, $selectedPatient = array()) { $candidates = array(); if (isset($prm['TANGGAL_MCU'])) $candidates[] = $prm['TANGGAL_MCU']; if (isset($prm['tanggal_mcu'])) $candidates[] = $prm['tanggal_mcu']; if (isset($selectedPatient['TANGGAL_MCU'])) $candidates[] = $selectedPatient['TANGGAL_MCU']; if (isset($selectedPatient['tanggal_mcu'])) $candidates[] = $selectedPatient['tanggal_mcu']; foreach ($candidates as $candidate) { $normalized = $this->normalize_tanggal_mcu($candidate); if ($normalized !== '') { return $normalized; } } return ''; } private function sync_schedule_and_daily($preregisterID, $mgmMcuID, $tanggalMcu) { $preregisterID = intval($preregisterID); $mgmMcuID = intval($mgmMcuID); $tanggalMcu = $this->normalize_tanggal_mcu($tanggalMcu); if ($preregisterID <= 0 || $mgmMcuID <= 0 || $tanggalMcu === '') { return; } $sql = "INSERT INTO mcu_patient_schedule ( Mcu_PatientSchedulePreregisterID, Mcu_PatientScheduleDate, Mcu_PatientScheduleIsActive, Mcu_PatientScheduleSyncedAt ) VALUES (?, ?, 'Y', NOW()) ON DUPLICATE KEY UPDATE Mcu_PatientScheduleIsActive = 'Y', Mcu_PatientScheduleSyncedAt = NOW()"; $query = $this->db_dashboard->query($sql, array($preregisterID, $tanggalMcu)); if (!$query) { return; } $sql = "SELECT s.Mcu_PatientScheduleDate AS schedule_date, COUNT(*) AS total_participant FROM mcu_patient_schedule s JOIN cpone.mcu_preregister_patients p ON p.Mcu_PreregisterPatientsID = s.Mcu_PatientSchedulePreregisterID WHERE s.Mcu_PatientScheduleIsActive = 'Y' AND p.Mcu_PreregisterPatientsIsActive = 'Y' AND p.Mcu_PreregisterPatientsMgm_McuID = ? GROUP BY s.Mcu_PatientScheduleDate"; $query = $this->db_dashboard->query($sql, array($mgmMcuID)); if (!$query) { return; } $rows = $query->result_array(); if (count($rows) === 0) { return; } foreach ($rows as $row) { $sql = "INSERT INTO mcu_participant_daily ( Mcu_ParticipantDailyMcuID, Mcu_ParticipantDailyDate, Mcu_ParticipantDailyTotal, Mcu_ParticipantDailyIsActive ) VALUES (?, ?, ?, 'Y') ON DUPLICATE KEY UPDATE Mcu_ParticipantDailyTotal = VALUES(Mcu_ParticipantDailyTotal), Mcu_ParticipantDailyIsActive = 'Y'"; $this->db_dashboard->query($sql, array( $mgmMcuID, $row['schedule_date'], intval($row['total_participant']) )); } } private function sync_patient_dashboard($preregisterID) { $preregisterID = intval($preregisterID); if ($preregisterID <= 0) { return; } $sql = "SELECT Mcu_PreregisterPatientsID, Mcu_PreregisterPatientsMgm_McuID, Mcu_PreregisterPatientsPatientName, Mcu_PreregisterPatientsNIP, Mcu_PreregisterPatientsGender, Mcu_PreregisterPatientsDOB, Mcu_PreregisterPatientsDepartment, Mcu_PreregisterPatientsDivisi, Mcu_PreregisterPatientsPosisi, Mcu_PreregisterPatientsIsRegistered, Mcu_PreregisterPatientsT_OrderHeaderID FROM mcu_preregister_patients WHERE Mcu_PreregisterPatientsID = ? AND Mcu_PreregisterPatientsIsActive = 'Y' LIMIT 1"; $query = $this->db_onedev->query($sql, array($preregisterID)); if (!$query || $query->num_rows() === 0) { return; } $row = $query->row_array(); $orderID = null; if ( isset($row['Mcu_PreregisterPatientsIsRegistered']) && $row['Mcu_PreregisterPatientsIsRegistered'] === 'Y' && intval($row['Mcu_PreregisterPatientsT_OrderHeaderID']) > 0 ) { $orderID = intval($row['Mcu_PreregisterPatientsT_OrderHeaderID']); } $sql = "INSERT INTO mcu_patient ( Mcu_PatientPreregisterID, Mcu_PatientMcuID, Mcu_PatientName, Mcu_PatientNIP, Mcu_PatientGender, Mcu_PatientDOB, Mcu_PatientDepartment, Mcu_PatientDivision, Mcu_PatientPosisi, Mcu_PatientIsRegistered, Mcu_PatientOrderID, Mcu_PatientIsActive, Mcu_PatientSyncedAt ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'Y', NOW()) ON DUPLICATE KEY UPDATE Mcu_PatientMcuID = VALUES(Mcu_PatientMcuID), Mcu_PatientName = VALUES(Mcu_PatientName), Mcu_PatientNIP = VALUES(Mcu_PatientNIP), Mcu_PatientGender = VALUES(Mcu_PatientGender), Mcu_PatientDOB = VALUES(Mcu_PatientDOB), Mcu_PatientDepartment = VALUES(Mcu_PatientDepartment), Mcu_PatientDivision = VALUES(Mcu_PatientDivision), Mcu_PatientPosisi = VALUES(Mcu_PatientPosisi), Mcu_PatientIsRegistered = VALUES(Mcu_PatientIsRegistered), Mcu_PatientOrderID = VALUES(Mcu_PatientOrderID), Mcu_PatientIsActive = 'Y', Mcu_PatientSyncedAt = NOW()"; $this->db_dashboard->query($sql, array( intval($row['Mcu_PreregisterPatientsID']), intval($row['Mcu_PreregisterPatientsMgm_McuID']), $row['Mcu_PreregisterPatientsPatientName'], $row['Mcu_PreregisterPatientsNIP'], $row['Mcu_PreregisterPatientsGender'], $row['Mcu_PreregisterPatientsDOB'], $row['Mcu_PreregisterPatientsDepartment'], $row['Mcu_PreregisterPatientsDivisi'], $row['Mcu_PreregisterPatientsPosisi'], $row['Mcu_PreregisterPatientsIsRegistered'], $orderID )); } 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 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 ($search != "") { // } $number_limit = 10; $number_offset = ($prm['current_page'] - 1) * $number_limit; $sql = " SELECT count(*) as total FROM mcu_preregister_patients LEFT JOIN m_title ON Mcu_PreregisterPatientsM_TitleID = M_TitleID LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_OrderHeaderID = T_OrderHeaderID 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 FROM mcu_preregister_patients LEFT JOIN m_title ON Mcu_PreregisterPatientsM_TitleID = M_TitleID LEFT JOIN t_orderheader ON Mcu_PreregisterPatientsT_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; }; $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 ('')"; if ($v['Mcu_PreregisterPatientsOrders'] != '') { $xjoin_tests = explode(',', $v['Mcu_PreregisterPatientsOrders']); //print_r($xjoin_tests); if ($xjoin_tests) { foreach ($xjoin_tests as $kjt => $vjt) { if ($join_test != '') $join_test .= ","; $join_test .= "'{$vjt}'"; } } //echo $join_test; $filter_paket = "AND T_PacketSasCode IN ({$join_test})"; $filter_test = "AND T_TestSasCode IN ({$join_test}) "; } $sql = "SELECT 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']); } } } $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()); $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' AND M_PatientRegisteredByCorporateID = {$setup['Mgm_McuCorporateID']} {$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 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'])); // $data = array( // "Mcu_PreregisterPatientsMgm_McuID" => $setup['Mgm_McuID'], // "Mcu_PreregisterPatientsPID" => $v['Mcu_PreregisterPatientsPID'], // "Mcu_PreregisterPatientsM_PatientID" => $v['M_PatientID'], // "Mcu_PreregisterPatientsKTP" => $v['Mcu_PreregisterPatientsKTP'], // "Mcu_PreregisterPatientsPatientPrefix" => $v['M_PatientPrefix'], // "Mcu_PreregisterPatientsPatientName" => $name, // "Mcu_PreregisterPatientsPatientSuffix" => $v['M_PatientSuffix'], // "Mcu_PreregisterPatientsGender" => $v['M_PatientGender'], // "Mcu_PreregisterPatientsDOB" => $pdob, // "Mcu_PreregisterPatientsReligion" => $v['M_PatientReligionCode'], // "Mcu_PreregisterPatientsJob" => $v['M_PatientJob'], // "Mcu_PreregisterPatientsEmail" => $v['M_PatientEmail'], // "Mcu_PreregisterPatientsHp" => $v['M_PatientHp'], // "Mcu_PreregisterPatientsPosisi" => $v['M_PatientPosisi'], // "Mcu_PreregisterPatientsDivisi" => $v['M_PatientDivisi'], // "Mcu_PreregisterPatientsLocation" => $v['M_PatientLocation'], // "Mcu_PreregisterPatientsCreated" => date('Y-m-d H:i:s'), // "Mcu_PreregisterPatientsUserID" => $userid, // "Mcu_PreregisterPatientsM_TitleID" => $v['Mcu_PreregisterPatientsM_TitleID'], // "Mcu_PreregisterPatientsCorporateCode" => $corporateCode, // "Mcu_PreregisterPatientsDepartment" => $v['M_PatientDepartement'], // "Mcu_PreregisterPatientsNIP" => $v['M_PatientNIP'] // ); // $rows = $this->db_onedev->insert( // "mcu_preregister_patients", // $data // ); // $setup['Mgm_McuID'], // $v['Mcu_PreregisterPatientsPID'], // $v['M_PatientID'], // $v['Mcu_PreregisterPatientsKTP'], // $v['M_PatientPrefix'], // $this->db_onedev->escape_str($name), // $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'] $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) { // { // "Mcu_PreregisterPatientsID": 0, // "Mcu_PreregisterPatientsNIK": "", // "Mcu_PreregisterPatientsKTP": "ktp", // "Mcu_PreregisterPatientsM_TitleID": "1", // "Mcu_PreregisterPatientsPatientPrefix": "", // "Mcu_PreregisterPatientsPatientName": "nama", // "Mcu_PreregisterPatientsPatientSuffix": "", // "Mcu_PreregisterPatientsM_SexCode": "MALE", // "Mcu_PreregisterPatientsDOB": "06-11-2000", // "Mcu_PreregisterPatientsPosisi": "jabatan", // "Mcu_PreregisterPatientsEmail": "", // "Mcu_PreregisterPatientsHp": "", // "Mcu_PreregisterPatientsDivisi": "divisi", // "Mcu_PreregisterPatientsLocation": "lokasi ", // "Mcu_PreregisterPatientsJob": "pekerjaan", // "Mcu_PreregisterPatientsDepartment": "departement", // "Mcu_PreregisterPatientsM_PatientID": 0, // "setup": { // "Mgm_McuID": "31", // "Mgm_McuT_PriceHeaderID": "1", // "Mgm_McuM_BranchID": "1", // "Mgm_McuLabel": "MCU WESTERINDO", // "Mgm_McuFlagRelasiBayarSendiri": "N", // "Mgm_McuBisaTambahPemeriksaan": "N", // "Mgm_McuCorporateID": "36", // "Mgm_McuNumber": "MGM240600028", // "Mgm_McuNumberNational": "", // "Mgm_McuNote": "", // "Mgm_McuStartDate": "2024-06-20", // "Mgm_McuEndDate": "2024-06-30", // "Mgm_McuPicEmail": "joko@gmail.com", // "Mgm_McuPicPassword": "b4f6ec9fb9956ce1b2a8b5144ea10519", // "Mgm_McuIsActive": "Y", // "Mgm_McuCreated": "2024-06-20 17:07:04", // "Mgm_McuCreatedUserID": "2", // "Mgm_McuLastUpdated": "0000-00-00 00:00:00", // "Mgm_McuLastUpdatedUserID": "0", // "Mgm_McuLastDeleted": "0000-00-00 00:00:00", // "Mgm_McuLastDeletedUserID": "0", // "Mgm_McuTotalParticipant": "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 ) 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']}' )"; //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; } // $sql = "SELECT * FROM m_patient WHERE M_PatientID = {$patient_id}"; // $ptn = $this->db_onedev->query($sql)->row_array(); // $ptn = json_encode($ptn); //$this->db_onedev->query("CALL one_log.log_me('PATIENT', 'PATIENT.ADDR_ADD', '{$ptn_addr}', $userid)"); } $this->sync_patient_dashboard($last_id_x); $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" ] ]; //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, 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 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 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}','%') ) 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 * FROM mgm_mcu // JOIN t_priceheader // ON Mgm_McuStartDate BETWEEN T_PriceHeaderStartDate AND T_PriceHeaderEndDate // AND T_PriceHeaderEndDate BETWEEN T_PriceHeaderStartDate AND T_PriceHeaderEndDate // WHERE Mgm_McuID = {$setup['Mgm_McuID']} // ORDER BY T_PriceHeaderID DESC LIMIT 1"; // $getpriceHeaderID = $this->db_onedev->query($sql, []); // if (!$getpriceHeaderID) { // $message = $this->db_onedev->error(); // $this->sys_error($message); // exit; // } // $priceheaderid = $getpriceHeaderID->result_array()[0]["T_PriceHeaderID"]; $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']} WHERE Ss_PriceMouMgm_McuID = {$setup['Mgm_McuID']} AND is_packet = 'N' AND price.T_PriceIsCito = 'N'"; // AND T_PriceT_PriceHeaderID IN (SELECT t_priceheader FROM t_price WHERE T_PriceHeaderStartDate ) $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']} 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 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']} 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']; $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) { array_push($packettests, $vt['code']); } } if (count($packettests) > 0) { $Mcu_PreregisterPatientsTests = join(',', $packettests); } // if (trim($v['Mcu_PreregisterPatientsKTP']) != "") { // // $this->checkpatientbynamedob($v['Mcu_PreregisterPatientsPatientName'], $pdob, $v['Mcu_PreregisterPatientsM_PatientID'], $setup['Mgm_McuCorporateID']); // // } else { // $this->checkpatientbynoid($v['Mcu_PreregisterPatientsKTP'], $v['Mcu_PreregisterPatientsM_PatientID'], $setup['Mgm_McuCorporateID']); // } // if (trim($v['Mcu_PreregisterPatientsNIP']) != "") { // $this->checkpatientbynip(trim($v['Mcu_PreregisterPatientsNIP']), $v['Mcu_PreregisterPatientsM_PatientID'], $setup['Mgm_McuCorporateID']); // } $query = " UPDATE mcu_preregister_patients SET Mcu_PreregisterPatientsM_PatientID = ?, Mcu_PreregisterPatientsKTP = ?, Mcu_PreregisterPatientsNIP = ?, Mcu_PreregisterPatientsPatientPrefix = ?, Mcu_PreregisterPatientsPatientName = ?, 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_PreregisterPatientsPatientName'], $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; } $this->sync_patient_dashboard($v['Mcu_PreregisterPatientsID']); $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_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, $userid, $v['Mcu_PreregisterPatientsM_PatientID'] ]); if (!$qry) { $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']; $sql = "SELECT T_PacketName, T_PacketSasCode, pd.T_PacketDetailID, pd.T_PacketDetailT_PacketID, pd.T_PacketDetailT_TestID, pd.T_PacketDetailOriginalPrice, pd.T_PacketDetailPrice, pd.T_PacketDetailIsActive, pd.T_PacketDetailCreated, pd.T_PacketDetailLastUpdated, pd.T_PacketDetailPriceAmount, pd.T_PacketDetailPriceDisc, pd.T_PacketDetailPriceDiscRp, pd.T_PacketDetailPriceSubTotal, t.T_TestID, t.T_TestNat_GroupID, t.T_TestNat_SubgroupID, t.T_TestParentT_TestID, t.T_TestCode, t.T_TestSasCode, t.T_TestName, t.T_TestShortName, t.T_TestShortNameBarcode, t.T_TestWorklistName, t.T_TestNat_TestID, t.T_TestRequirement, t.T_TestIsParent, t.T_TestFontSize, t.T_TestFontColor, t.T_TestIsBold, t.T_TestIsItalic, t.T_TestT_SampleTypeID, t.T_TestResultPosition, t.T_TestNormalValue, t.T_TestFlagGluc, t.T_TestIsQuantitative, t.T_TestIsPrintNota, t.T_TestIsResult, t.T_TestIsPrintResult, t.T_TestIsPrice, t.T_TestForceSell, t.T_TestIsWorklist, t.T_TestIsNonLab, t.T_TestIsDeltaCheck, t.T_TestIsTrendAnalysis, t.T_TestLeftMargin, t.T_TestCreated, t.T_TestLastUpdated, t.T_TestIsActive, t.T_TestMaxDiscount, t.T_TestFlagLow, t.T_TestFlagHigh, t.T_TestUserID, t.T_TestFlagMCU, t.T_TestNat_SubSubGroupID, t.T_TestCreatedUserID, t.T_TestLastUpdatedUserID, t.T_TestDeleted, t.T_TestDeletedUserID FROM t_packetdetail as pd 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 JOIN t_packet ON 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(); $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 "; //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; } }