Files
BE_CPONE/application/controllers/klinik/Order.php
2026-04-27 10:26:26 +07:00

435 lines
16 KiB
PHP

<?php
class Order extends MY_Controller
{
function __construct()
{
parent::__construct();
$this->db_klinik = $this->load->database("onedev", true);
$one_db = "one_aditya";
}
function calculateAge($tanggal_lahir) {
// Ambil tanggal sekarang
$tanggal_sekarang = new DateTime();
// Ubah tanggal lahir ke objek DateTime
$tanggal_lahir = new DateTime($tanggal_lahir);
// Hitung selisih antara tanggal sekarang dan tanggal lahir
$perbedaan = $tanggal_sekarang->diff($tanggal_lahir);
// Dapatkan tahun, bulan, dan hari dari selisih
$umur_tahun = $perbedaan->y;
$umur_bulan = $perbedaan->m;
$umur_hari = $perbedaan->d;
return array($umur_tahun, $umur_bulan, $umur_hari);
}
function createOrder(){
try{
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userID = $this->sys_user['M_UserID'];
$sql = "SELECT *
FROM m_patient
WHERE
M_PatientID = ?";
$query = $this->db_klinik->query($sql,array(
$prm['patient_id'],
));
if (!$query) {
$this->sys_error_db("error select patient",$this->db_klinik);
exit;
}
$data_patient = $query->row_array();
list($umur_tahun, $umur_bulan, $umur_hari) = $this->calculateAge($data_patient['M_PatientDOB']);
$sql = "INSERT INTO one_klinik.order (
orderNumber,
orderM_PatientID,
orderAge,
orderM_DoctorID,
orderDiagnosisAwal,
orderDiagnosisAkhir,
orderSubtotal,
orderDiscountAmount,
orderDiscountPercent,
orderDiscountTotal,
orderTotal,
orderCreated,
orderUserID
)
VALUES (
fn_numbering('K'),
?,?,?,?,?,?,?,?,?,?,NOW(),?
)";
$query = $this->db_klinik->query($sql,array(
$prm['patient_id'],
$umur_tahun.' Tahun '.$umur_bulan.' Bulan '. $umur_hari.' Hari',
$prm['doctor_id'],
$prm['diagnosis_awal'],
$prm['diagnosis_akhir'],
$prm['subtotal'],
$prm['discount_amount'],
$prm['diagnosis_percent'],
$prm['diagnosis_total'],
$prm['total'],
$userID
));
if (!$query) {
$this->sys_error_db("error create order",$this->db_klinik);
exit;
}
$last_id = $this->db_klinik->insert_id();
$sql = "INSERT INTO one_klinik.`order_status`(
orderStatusOrderID,
orderStatusOrderID,
orderStatusValue,
orderStatusUserID
)
VALUES(
'R',?,'D',?
)";
$query = $this->db_klinik->query($sql,array($last_id,$userID));
if (!$query) {
$this->sys_error_db("error insert order status",$this->db_klinik);
exit;
}
$sql = "INSERT INTO one_klinik.`order_status`(
orderStatusOrderID,
orderStatusOrderID,
orderStatusValue,
orderStatusUserID
)
VALUES(
'SA',?,'D',?
)";
$query = $this->db_klinik->query($sql,array($last_id,$userID));
if (!$query) {
$this->sys_error_db("error insert order status",$this->db_klinik);
exit;
}
$sql = "SELECT * FROM one_klinik.order WHERE orderID = ?";
$query = $this->db_klinik->query($sql,array($last_id));
if (!$query) {
$this->sys_error_db("error select order",$this->db_klinik);
exit;
}
$result = $query->row_array();
$this->sys_ok($result);
exit;
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function getOrder($orderID){
try{
$sql = "SELECT orderID,
orderNumber,
orderM_PatientID,
orderM_DoctorID,
orderDiagnosisAwal,
orderDiagnosisAkhir,
orderSubtotal,
orderDiscountAmount,
orderDiscountPercent,
orderDiscountTotal,
orderTotal,
CONCAT(IF(M_TitleName IS NULL,'',CONCAT(M_TitleName,'. ')),IF(M_PatientPrefix IS NULL,'',CONCAT(M_PatientPrefix,'. ')),M_PatientName,IF(M_PatientSuffix IS NULL,'',CONCAT(M_PatientSuffix,'. '))) as patient_fullname,
M_PatientName as patient_name,
M_DoctorName as doctor_name,
CONCAT(IF(M_DoctorPrefix IS NULL,'',CONCAT(M_DoctorPrefix,'. ')),IF(M_DoctorPrefix2 IS NULL,'',CONCAT(M_DoctorPrefix2,'. ')),M_DoctorName,IF(M_DoctorSufix IS NULL,'',CONCAT(M_DoctorSufix,'. ')),IF(M_DoctorSufix2 IS NULL,'',CONCAT(M_DoctorSufix2,'. ')),IF(M_DoctorSufix3 IS NULL,'',CONCAT(M_DoctorSufix3,'. '))) as doctor_fullname
FROM one_klinik.order
JOIN m_patient ON orderM_PatientID = M_PatientID
JOIN m_doctor ON orderM_DoctorID = M_DoctorID
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
WHERE
orderID = ?";
$query = $this->db_klinik->query($sql,array(
$orderID
));
if (!$query) {
$this->sys_error_db("error get order",$this->db_klinik);
exit;
}
$result = $query->row_array();
$this->sys_ok($result);
exit;
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function saveAnamnesis(){
try{
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userID = $this->sys_user['M_UserID'];
$sql = "INSERT INTO one_klinik.order_anamnesis (
orderAnamnesisOrderID,
orderAnamnesisKeluhanUtama,
orderAnamnesisRiwayatPenyakitDahulu,
orderAnamnesisRiwayatPenyakitSekarang,
orderAnamnesisRiwayatPenyakitKeluarga,
orderAnamnesisRiwayatPengobatan,
orderAnamnesisRiwayatSosial,
orderAnamnesisRiwayatOperasi,
orderAnamnesisRiwayatAlergi,
orderAnamnesisCreated,
orderAnamnesisUserID
)
VALUES (
?,?,?,?,?,?,?,?,?,NOW(),?
)";
$query = $this->db_klinik->query($sql,array(
$prm['order_id'],
$prm['keluhan_utama'],
$prm['penyakit_dahulu'],
$prm['penyakit_sekarang'],
$prm['penyakit_keluarga'],
$prm['pengobatan'],
$prm['sosial'],
$prm['operasi'],
$prm['alergi'],
$userID
));
if (!$query) {
$this->sys_error_db("error create order_anamnesis",$this->db_klinik);
exit;
}
$result = array('status' => true);
$this->sys_ok($result);
exit;
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function updateAnamnesis(){
try{
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userID = $this->sys_user['M_UserID'];
$sql = "UPDATE one_klinik.order_anamnesis SET
orderAnamnesisOrderID = ?,
orderAnamnesisKeluhanUtama = ?,
orderAnamnesisRiwayatPenyakitDahulu = ?,
orderAnamnesisRiwayatPenyakitSekarang = ?,
orderAnamnesisRiwayatPenyakitKeluarga = ?,
orderAnamnesisRiwayatPengobatan = ?,
orderAnamnesisRiwayatSosial = ?,
orderAnamnesisRiwayatOperasi = ?,
orderAnamnesisRiwayatAlergi = ? ,
orderAnamnesisLastUpdated = NOW(),
orderAnamnesisUserID = ?
WHERE
orderAnamnesisID = ?";
$query = $this->db_klinik->query($sql,array(
$prm['orderID'],
$prm['orderAnamnesisKeluhanUtama'],
$prm['orderAnamnesisRiwayatPenyakitDahulu'],
$prm['orderAnamnesisRiwayatPenyakitSekarang'],
$prm['orderAnamnesisRiwayatPenyakitKeluarga'],
$prm['orderAnamnesisRiwayatPengobatan'],
$prm['orderAnamnesisRiwayatSosial'],
$prm['orderAnamnesisRiwayatOperasi'],
$prm['orderAnamnesisRiwayatAlergi'],
$userID
));
if (!$query) {
$this->sys_error_db("error update order_anamnesis",$this->db_klinik);
exit;
}
$result = array('status' => true);
$this->sys_ok($result);
exit;
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function saveDoctorPage(){
try{
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userID = $this->sys_user['M_UserID'];
$sql = "UPDATE one_klinik.order SET
orderDiagnosisAwal = ?,
orderDiagnosisAkhir = ?,
orderLastUpdated = NOW(),
orderUserID = ?
WHERE
orderID = ?";
$query = $this->db_klinik->query($sql,array(
$prm['orderDiagnosisAwal'],
$prm['orderDiagnosisAkhir'],
$userID,
$prm['orderID']
));
if (!$query) {
$this->sys_error_db("error update order diagnosis",$this->db_klinik);
exit;
}
if($prm['orderReceiptText'] && $prm['orderReceiptText'] != ''){
$sql = "INSERT INTO one_klinik.order_receipt (
orderReceiptOrderID,
orderReceiptText,
orderReceiptCreated,
orderReceiptUserID
)
VALUES(
?,?,NOW(),?
) ON DUPLICATE KEY UPDATE orderReceiptText = ?, orderReceiptUserID = ?";
$query = $this->db_klinik->query($sql,array(
$prm['orderID'],
$prm['orderReceiptText'],
$userID,
$prm['orderReceiptText'],
$userID
));
if (!$query) {
$this->sys_error_db("error insert/update order_receipt",$this->db_klinik);
exit;
}
}
if(count($prm['order_penunjang']) > 0){
$sql = "UPDATE one_klinik.order_penunjang SET
orderPenunjangIsActive = 'N',
orderPenunjangUserID= ?,
orderPenunjangLastUpdated = NOW()
WHERE
orderPenunjangOrderID = ?";
$query = $this->db_klinik->query($sql,array(
$prm['orderID'],
$userID
));
if (!$query) {
$this->sys_error_db("error nonactive order_penunjang",$this->db_klinik);
exit;
}
foreach ($prm['order_penunjang'] as $key => $value) {
$sql = "INSERT INTO one_klinik.order_penunjang (
orderPenunjangOrderID,
orderPenunjangT_TestID,
orderPenunjangCreated,
orderPenunjangUserID
)
VALUES(
?,?,NOW(),?
) ";
$query = $this->db_klinik->query($sql,array(
$prm['orderID'],
$prm['orderPenunjangT_TestID'],
$userID
));
if (!$query) {
$this->sys_error_db("error insert/update order_penunjang",$this->db_klinik);
exit;
}
}
}
$result = array('status' => true);
$this->sys_ok($result);
exit;
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
public function searchTest()
{
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$max_rst = 12;
$tot_count = 0;
$q = [
'search' => '%'
];
if ($prm['search'] == '') {
$rows = array();
$result = array("total" => 1, "records" => $rows, "total_display" => sizeof($rows));
$this->sys_ok($result);
} else {
$q['search'] = "%{$prm['search']}%";
$sql = "SELECT T_TestID as id, T_TestName as name, T_TestSasCode as code
FROM t_test
WHERE
T_TestName like ? AND
T_TestIsPrice = 'Y' AND
T_TestIsActive = 'Y'
ORDER BY T_TestName ASC, T_TestSasCode ASC
";
$query = $this->db_onedev->query($sql, array($q['search']));
if ($query) {
$rows = $query->result_array();
//echo $this->db_onedev->last_query();
$result = array("total" => $tot_count, "records" => $rows, "total_display" => sizeof($rows));
$this->sys_ok($result);
} else {
$this->sys_error_db("t_test rows", $this->db_onedev);
exit;
}
}
}
}