Initial import
This commit is contained in:
319
one-api/application/controllers/one_mitra/Patient.php
Normal file
319
one-api/application/controllers/one_mitra/Patient.php
Normal file
@@ -0,0 +1,319 @@
|
||||
<?php
|
||||
|
||||
class Patient extends MY_Controller
|
||||
{
|
||||
var $db_regional;
|
||||
var $load;
|
||||
var $db;
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->db_regional = $this->load->database("regional", true);
|
||||
if (!$this->isLogin) {
|
||||
$this->sys_error("Invalid Token");
|
||||
exit;
|
||||
}
|
||||
|
||||
$userID = $this->sys_user['M_UserID'];
|
||||
|
||||
$sql_cek_token = "SELECT M_UserActiveToken
|
||||
from one_mitra.m_user
|
||||
WHERE M_UserID = ?
|
||||
AND M_UserActiveToken IS NOT NULL";
|
||||
|
||||
$qry_token = $this->db->query($sql_cek_token, [$userID]);
|
||||
if (!$qry_token) {
|
||||
$this->sys_error('Invalid token');
|
||||
exit;
|
||||
}
|
||||
|
||||
$rows_token = $qry_token->result_array();
|
||||
if (count($rows_token) == 0) {
|
||||
$this->sys_error('Invalid token');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
function search()
|
||||
{
|
||||
try {
|
||||
$prm = $this->sys_input;
|
||||
if (!$this->isLogin) {
|
||||
$this->sys_error("Invalid Token");
|
||||
exit;
|
||||
}
|
||||
|
||||
$keyword = '%%';
|
||||
if (isset($prm['keyword'])) {
|
||||
$keyword = '%' . $prm['keyword'] . '%';
|
||||
}
|
||||
$page = $prm['page'];
|
||||
$rowPerPage = $prm['rpp'];
|
||||
$companyID = $prm['company_id'];
|
||||
// hitung start_offset
|
||||
|
||||
$start_offset = 0;
|
||||
if (isset($prm['page'])) {
|
||||
if (is_numeric((int)$prm['page']) && $prm['page'] > 0) {
|
||||
$start_offset = ($page - 1) * intval($rowPerPage);
|
||||
}
|
||||
}
|
||||
|
||||
$sql_total = "SELECT
|
||||
COUNT(M_PatientID) AS total
|
||||
FROM one_mitra.m_patient
|
||||
WHERE M_PatientIsActive = 'Y'
|
||||
AND M_PatientM_CompanyID = ?
|
||||
AND (M_PatientName LIKE ? OR
|
||||
M_PatientNIK LIKE ? OR M_PatientHP LIKE ?)";
|
||||
$query_total = $this->db->query($sql_total, [$companyID, $keyword, $keyword, $keyword]);
|
||||
if (!$query_total) {
|
||||
$message = $this->db->error();
|
||||
$this->sys_error($message);
|
||||
exit;
|
||||
}
|
||||
$totals = $query_total->result_array()[0]['total'];
|
||||
|
||||
$sql = "SELECT
|
||||
M_PatientID AS id,
|
||||
M_PatientPrefix AS prefix,
|
||||
M_PatientName AS name,
|
||||
M_PatientSuffix AS suffix,
|
||||
M_PatientDOB AS dob,
|
||||
M_PatientNIK AS nik,
|
||||
M_PatientNIP AS nip,
|
||||
M_PatientTitleID AS title_id,
|
||||
M_PatientM_SexID AS sex_id,
|
||||
M_PatientHP AS hp,
|
||||
M_PatientAddress AS address,
|
||||
M_PatientNoRM AS noRM,
|
||||
M_PatientJabatan AS jabatan,
|
||||
M_PatientKedudukan AS kedudukan,
|
||||
M_PatientLocation AS lokasi,
|
||||
M_PatientJob AS pekerjaan,
|
||||
M_PatientM_CompanyID,
|
||||
one_mitra.fn_get_patient_status_del(M_PatientID) AS status_delete
|
||||
FROM one_mitra.m_patient
|
||||
WHERE M_PatientIsActive = 'Y'
|
||||
AND M_PatientM_CompanyID = ?
|
||||
AND (M_PatientName LIKE ? OR
|
||||
M_PatientNIK LIKE ? OR M_PatientHP LIKE ?)
|
||||
ORDER BY M_PatientName
|
||||
LIMIT ? OFFSET ?
|
||||
";
|
||||
$query = $this->db->query($sql, [$companyID, $keyword, $keyword, $keyword, intval($rowPerPage), intval($start_offset)]);
|
||||
if (!$query) {
|
||||
$message = $this->db->error();
|
||||
$this->sys_error($message);
|
||||
exit;
|
||||
}
|
||||
$search = $query->result_array();
|
||||
$result = [
|
||||
"data" => $search,
|
||||
"total" => $totals,
|
||||
"total_page" => ceil($totals / $rowPerPage)
|
||||
];
|
||||
$this->sys_ok($result);
|
||||
} catch (Exception $exc) {
|
||||
$message = $exc->getMessage();
|
||||
$this->sys_error($message);
|
||||
}
|
||||
}
|
||||
function editpatient()
|
||||
{
|
||||
try {
|
||||
$prm = $this->sys_input;
|
||||
$userid = $this->sys_user["M_UserID"];
|
||||
if (!$this->isLogin) {
|
||||
$this->sys_error("Invalid Token");
|
||||
exit;
|
||||
}
|
||||
$patient = $prm['patient_data'];
|
||||
$patientID = $prm['patient_id'];
|
||||
$companyID = $this->sys_user["M_UserM_CompanyID"];
|
||||
$patientDOB = date('Y-m-d', strtotime($patient['dob']));
|
||||
$withoutNIK = $patient['without_nik'];
|
||||
$nik = $patient['nik'];
|
||||
$isNIK = 'N';
|
||||
//JSON BEFORE
|
||||
$sql = "SELECT * FROM one_mitra.m_patient
|
||||
WHERE M_PatientID = ?";
|
||||
$query = $this->db->query($sql, [$patientID]);
|
||||
if (!$query) {
|
||||
$message = $this->db->error();
|
||||
$this->sys_error($message);
|
||||
exit;
|
||||
}
|
||||
$JSONBefore = json_encode($query->result_array()[0]);
|
||||
|
||||
|
||||
if ($withoutNIK == "N") {
|
||||
$isNIK = 'Y';
|
||||
}
|
||||
if ($isNIK == 'Y') {
|
||||
//sql cek kalau NIK sudah digunakan atau belum
|
||||
$sql = "SELECT * FROM one_mitra.m_patient
|
||||
WHERE M_PatientIsNIK = 'Y'
|
||||
AND M_PatientNIK = ?
|
||||
AND M_PatientM_CompanyID = ?
|
||||
AND M_PatientID <> ?";
|
||||
$query = $this->db->query($sql, [$nik, $companyID, $patientID]);
|
||||
if (!$query) {
|
||||
$message = $this->db->error();
|
||||
$this->sys_error($message);
|
||||
exit;
|
||||
}
|
||||
$cekNik = $query->result_array();
|
||||
if (count($cekNik) > 0) {
|
||||
$this->sys_error("NIK sudah digunakan oleh pasien lain");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
//edit
|
||||
$sql = "UPDATE one_mitra.m_patient
|
||||
SET M_PatientPrefix = ?,
|
||||
M_PatientName = ?,
|
||||
M_PatientSuffix = ?,
|
||||
M_PatientDOB = ?,
|
||||
M_PatientNIK = ?,
|
||||
M_PatientNIP = ? ,
|
||||
M_PatientIsNIK = ?,
|
||||
M_PatientTitleID = ?,
|
||||
M_PatientM_SexID = ?,
|
||||
M_PatientHP = ? ,
|
||||
M_PatientNoRM = ?,
|
||||
M_PatientJabatan = ?,
|
||||
M_PatientKedudukan = ?,
|
||||
M_PatientLocation = ?,
|
||||
M_PatientJob = ?,
|
||||
M_PatientAddress = ?
|
||||
WHERE M_PatientID = ?
|
||||
AND M_PatientIsActive = 'Y'";
|
||||
$query = $this->db->query($sql, [
|
||||
$patient['prefix'],
|
||||
$patient['name'],
|
||||
$patient['suffix'],
|
||||
$patientDOB,
|
||||
$nik,
|
||||
$patient['nip'],
|
||||
$isNIK,
|
||||
$patient['saluation'],
|
||||
$patient['gender'],
|
||||
$patient['hp'],
|
||||
$patient['noRM'],
|
||||
$patient['jabatan'],
|
||||
$patient['kedudukan'],
|
||||
$patient['lokasi'],
|
||||
$patient['pekerjaan'],
|
||||
$patient['address'],
|
||||
$patientID
|
||||
]);
|
||||
if (!$query) {
|
||||
$message = $this->db->error();
|
||||
$last_qry = $this->db->last_query();
|
||||
|
||||
$this->sys_error_db($message);
|
||||
exit;
|
||||
}
|
||||
|
||||
//JSON AFTER
|
||||
$sql = "SELECT * FROM one_mitra.m_patient
|
||||
WHERE M_PatientID = ?";
|
||||
$query = $this->db->query($sql, [$patientID]);
|
||||
if (!$query) {
|
||||
$message = $this->db->error();
|
||||
$this->sys_error($message);
|
||||
exit;
|
||||
}
|
||||
$JSONAfter = json_encode($query->result_array()[0]);
|
||||
//insert log
|
||||
$sql = "INSERT INTO mitra_log.m_patient_log(
|
||||
M_PatientLogM_PatientID,
|
||||
M_PatientLogStatus,
|
||||
M_PatientLogJSONBefore,
|
||||
M_PatientLogJSONAfter,
|
||||
M_patientLogUserID,
|
||||
M_PatientLogCreated)VALUES(?,'EDIT',?,?,?, NOW())";
|
||||
$query = $this->db->query($sql, [$patientID, $JSONBefore, $JSONAfter, $userid]);
|
||||
if (!$query) {
|
||||
$message = $this->db->error();
|
||||
$this->sys_error($message);
|
||||
exit;
|
||||
}
|
||||
$this->sys_ok("Berhasil Mengubah data");
|
||||
} catch (Exception $exc) {
|
||||
$message = $exc->getMessage();
|
||||
$this->sys_error($message);
|
||||
}
|
||||
}
|
||||
function deletePatient()
|
||||
{
|
||||
try {
|
||||
$prm = $this->sys_input;
|
||||
$userid = $this->sys_user["M_UserID"];
|
||||
if (!$this->isLogin) {
|
||||
$this->sys_error("Invalid Token");
|
||||
exit;
|
||||
}
|
||||
//cek bisa di delete atau tidak
|
||||
$sql = "SELECT one_mitra.fn_get_patient_status_del(?) AS status_delete;";
|
||||
$query = $this->db->query($sql, [$prm['patient_id']]);
|
||||
if (!$query) {
|
||||
$message = $this->db->error();
|
||||
$this->sys_error($message);
|
||||
exit;
|
||||
}
|
||||
$cek = $query->result_array()[0]['status_delete'];
|
||||
if ($cek == 'Y') {
|
||||
//delete
|
||||
$sql = "UPDATE one_mitra.m_patient
|
||||
SET M_PatientIsActive = 'N'
|
||||
WHERE M_PatientID = ?";
|
||||
$query = $this->db->query($sql, [$prm['patient_id']]);
|
||||
if (!$query) {
|
||||
$message = $this->db->error();
|
||||
$this->sys_error($message);
|
||||
exit;
|
||||
}
|
||||
//JSON AFTER
|
||||
$sql = "SELECT * FROM one_mitra.m_patient
|
||||
WHERE M_PatientID = ?";
|
||||
$query = $this->db->query(
|
||||
$sql,
|
||||
[$prm['patient_id']]
|
||||
);
|
||||
if (!$query) {
|
||||
$message = $this->db->error();
|
||||
$this->sys_error($message);
|
||||
exit;
|
||||
}
|
||||
$JSONAfter = json_encode($query->result_array()[0]);
|
||||
//insert log
|
||||
$sql = "INSERT INTO mitra_log.m_patient_log(
|
||||
M_PatientLogM_PatientID,
|
||||
M_PatientLogStatus,
|
||||
M_PatientLogJSONAfter,
|
||||
M_patientLogUserID,
|
||||
M_PatientLogCreated)VALUES(?,'DELETE',?,?, NOW())";
|
||||
$query = $this->db->query(
|
||||
$sql,
|
||||
[$prm['patient_id'], $JSONAfter, $userid]
|
||||
);
|
||||
if (!$query) {
|
||||
$message = $this->db->error();
|
||||
$this->sys_error($message);
|
||||
exit;
|
||||
}
|
||||
|
||||
$this->sys_ok("berhasil menghapus data");
|
||||
} else {
|
||||
//tidak bisa di delete
|
||||
$this->sys_error("Gagal Menghapus data, order pasien sudah masuk kedalam surat jalan");
|
||||
}
|
||||
} catch (Exception $exc) {
|
||||
$message = $exc->getMessage();
|
||||
$this->sys_error($message);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user