Files
BE_IBL/application/controllers/fisik/Riwayatform.php
2026-04-15 15:23:57 +07:00

325 lines
14 KiB
PHP

<?php
class Riwayatform extends MY_Controller
{
var $db_onedev;
public function index()
{
echo "Riwayat Form API";
}
public function __construct()
{
parent::__construct();
$this->db_onedev = $this->load->database("onedev", true);
}
public function get_patient()
{
try {
$prm = $this->sys_input;
$form_code = $prm['form_code'];
$uuid = $prm['id'];
$sql = " SELECT FormRiwayatPasienID as xid,
Mcu_PreregisterPatientsPatientName as patient_name,
M_SexName as gender,
DATE_FORMAT(Mcu_PreregisterPatientsDOB, '%d-%m-%Y') as dob,
Mcu_PreregisterPatientsPosisi as posisi,
Mcu_PreregisterPatientsDivisi as divisi,
Mcu_PreregisterPatientsLocation as location_mcu,
Mcu_PreregisterPatientsDepartment as department,
M_CompanyName as corporate_name,
M_CompanyAddress as corporate_address,
IFNULL(T_SamplingSoFlag, 'N') as is_sampling
FROM form_riwayat_pasien
JOIN mcu_preregister_patients ON Mcu_PreregisterPatientsID = FormRiwayatPasienPreregisterID AND Mcu_PreregisterPatientsIsActive = 'Y'
JOIN m_patient ON Mcu_PreregisterPatientsM_PatientID = M_PatientID
JOIN m_sex ON M_PatientM_SexID = M_SexID
JOIN mgm_mcu ON Mcu_PreregisterPatientsMgm_McuID = Mgm_McuID
JOIN m_company ON Mgm_McuM_CompanyID = M_CompanyID
LEFT JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = FormRiwayatPasienT_OrderHeaderID AND T_SamplingSoIsActive = 'Y'
LEFT JOIN t_test ON T_SamplingSoT_TestID = T_TestID AND T_TestIsActive = 'Y'
LEFT JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
LEFT JOIN fisik_map_test_template ON Fisik_MapTestTemplateNat_TestID = Nat_TestID AND Fisik_MapTestTemplateIsActive = 'Y'
WHERE FormRiwayatPasienCode = ? AND
FormRiwayatPasienUUID = ? AND
FormRiwayatPasienIsActive = 'Y'
";
$sql_param = array($form_code, $uuid);
$query = $this->db_onedev->query($sql, $sql_param);
if(!$query){
//echo $this->db_onedev->last_query();
$this->sys_error_db("form_riwayat_pasien error get exist");
exit;
}
$exist_riwayat = $query->result_array();
if(count($exist_riwayat) > 0){
$sql = "";
$result = array ("total" => 1, "total_filter"=>1,"records" => $exist_riwayat[0]);
$this->sys_ok($result);
}else{
$this->sys_error("Data tidak ditemukan");
}
} catch(Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
public function get_riwayat()
{
try {
$prm = $this->sys_input;
$xid = $prm['id'];
$results = array();
$return_data = array();
$sql = " SELECT FisikTemplateID as fisik_template_id,
FisikTemplateCode as template_code,
FisikTemplateTableName as template_table_name,
FisikTemplateTitle as template_title,
FormRiwayatPasienTemplateDetails as details,
FormRiwayatPasienTemplateID as xid
FROM form_riwayat_pasien
JOIN form_riwayat_pasien_template ON FormRiwayatPasienTemplateFormRiwayatPasienID = FormRiwayatPasienID AND FormRiwayatPasienTemplateIsActive = 'Y'
JOIN fisik_template ON FormRiwayatPasienTemplateFisikTemplateID = FisikTemplateID AND FisikTemplateIsActive = 'Y' AND FisikTemplateType = 'Riwayat'
WHERE FormRiwayatPasienID = ? AND
FormRiwayatPasienIsActive = 'Y'
GROUP BY FisikTemplateID ";
$sql_param = array($xid);
$query = $this->db_onedev->query($sql, $sql_param);
if(!$query){
$this->sys_error_db("form_riwayat_pasien error get exist");
exit;
}
$exist_riwayat = $query->result_array();
if(count($exist_riwayat) > 0){
foreach($exist_riwayat as $key => $item){
//$results[$key]['details'] = json_decode($item['details'], true);
//$results[$key]['xid'] = $item['xid'];
$return_data[] = json_decode($item['details'], true);
}
$result = array ("records" => $return_data);
$this->sys_ok($result);
exit;
}
$sql = " SELECT *
FROM form_riwayat_pasien
JOIN mcu_preregister_patients ON Mcu_PreregisterPatientsID = FormRiwayatPasienPreregisterID AND Mcu_PreregisterPatientsIsActive = 'Y'
JOIN mgm_mcu ON Mcu_PreregisterPatientsMgm_McuID = Mgm_McuID
WHERE FormRiwayatPasienID = ? AND
FormRiwayatPasienIsActive = 'Y'
LIMIT 1";
$query = $this->db_onedev->query($sql, array($xid));
if(!$query){
$this->sys_error_db("form_riwayat_pasien error get exist");
exit;
}
$dt_tests = $query->row_array();
$orders = explode(',', $dt_tests['Mcu_PreregisterPatientsOrders']);
$mou_id = $dt_tests['Mgm_McuM_MouID'];
$template_map_fisik = [];
foreach($orders as $order){
$sql = "SELECT ss_price_mou.T_TestID as id, is_packet
FROM ss_price_mou
JOIN t_packet ON packet_id = T_PacketID AND T_PacketIsActive = 'Y' AND T_PacketSasCode = ?
WHERE Ss_PriceMouM_MouID = ? AND is_packet = 'Y'
UNION
SELECT ss_price_mou.T_TestID as id, is_packet
FROM ss_price_mou
JOIN t_test test ON ss_price_mou.T_TestID = test.T_TestID AND test.T_TestIsActive = 'Y' AND test.T_TestSasCode = ?
WHERE Ss_PriceMouM_MouID = ? AND is_packet = 'N'
";
$query = $this->db_onedev->query($sql, array( $order, $mou_id, $order, $mou_id));
//echo $this->db_onedev->last_query().';';
//echo '<br>';
$dt_price = $query->result_array();
if(count($dt_price) > 0){
if($dt_price[0]['is_packet'] == 'Y'){
$sql = "SELECT fisik_map_test_template.*
FROM t_packetdetail
JOIN t_test ON T_PacketDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
JOIN fisik_map_test_template ON Fisik_MapTestTemplateNat_TestID = T_TestNat_TestID AND Fisik_MapTestTemplateIsActive = 'Y'
WHERE
T_PacketDetailT_PacketID = ? AND
T_PacketDetailIsActive = 'Y'";
$query = $this->db_onedev->query($sql, array($dt_price[0]['id']));
//echo $this->db_onedev->last_query().';';
//echo '<br>';
$dt_map_fisik = $query->result_array();
if(count($dt_map_fisik) > 0){
$template_map_fisik = $dt_map_fisik[0];
}
}else{
$sql = "SELECT fisik_map_test_template.*
FROM t_test
JOIN fisik_map_test_template ON Fisik_MapTestTemplateNat_TestID = T_TestNat_TestID AND Fisik_MapTestTemplateIsActive = 'Y'
WHERE T_TestIsActive = 'Y' AND T_TestID = ?";
$query = $this->db_onedev->query($sql, array($dt_price[0]['id']));
//echo $this->db_onedev->last_query().';';
//echo '<br>';
$dt_map_fisik = $query->result_array();
if(count($dt_map_fisik) > 0){
$template_map_fisik = $dt_map_fisik[0];
}
}
}
}
if($template_map_fisik == []){
$this->sys_error("Template tidak ditemukan");
exit;
}
$sql = " SELECT FisikTemplateID as fisik_template_id,
FisikTemplateCode as template_code,
FisikTemplateTableName as template_table_name,
FisikTemplateTitle as template_title,
FisikTemplateJSON as details
FROM form_riwayat_pasien
JOIN fisik_template_mapping ON FisikTemplateMappingID = ? AND FisikTemplateMappingIsActive = 'Y'
JOIN fisik_template_mapping_detail ON FisikTemplateMappingDetailFisikTemplateMappingID = FisikTemplateMappingID AND FisikTemplateMappingDetailIsActive = 'Y'
JOIN fisik_template ON FisikTemplateMappingDetailFisikTemplateID = FisikTemplateID AND FisikTemplateIsActive = 'Y' AND FisikTemplateType = 'Riwayat'
WHERE FormRiwayatPasienID = ? AND
FormRiwayatPasienIsActive = 'Y'
GROUP BY FisikTemplateID";
$sql_param = array($template_map_fisik['Fisik_MapTestTemplateFisikTemplateMappingID'],$xid);
$query = $this->db_onedev->query($sql, $sql_param);
echo $this->db_onedev->last_query();
//exit;
if(!$query){
//echo $this->db_onedev->last_query();
$this->sys_error_db("form_riwayat_pasien error get exist");
exit;
}
$riwayat_template = $query->result_array();
foreach($riwayat_template as $key => $item){
$sql = " SELECT *
FROM form_riwayat_pasien_template
WHERE
FormRiwayatPasienTemplateFisikTemplateID = ? AND
FormRiwayatPasienTemplateFormRiwayatPasienID = ? AND
FormRiwayatPasienTemplateIsActive = 'Y'";
$sql_param = array($item['fisik_template_id'], $xid);
$query = $this->db_onedev->query($sql, $sql_param);
if(!$query){
$this->sys_error_db("form_riwayat_pasien error get exist");
exit;
}
$exist_riwayat = $query->result_array();
if(count($exist_riwayat) > 0){
//$results[$key]['details'] = json_decode($exist_riwayat[0]['details'], true);
$return_data[] = json_decode($exist_riwayat[0]['details'], true);
}else{
$details = json_decode($item['details'], true);
$sql = "INSERT INTO form_riwayat_pasien_template (
FormRiwayatPasienTemplateFormRiwayatPasienID,
FormRiwayatPasienTemplateFisikTemplateID,
FormRiwayatPasienTemplateDetails,
FormRiwayatPasienTemplateIsActive,
FormRiwayatPasienTemplateCreated,
FormRiwayatPasienTemplateCreatedUserID)
VALUES (?, ?, ?, 'Y',NOW(),45312)";
$sql_param = array($xid, $item['fisik_template_id'], json_encode($details));
$query = $this->db_onedev->query($sql, $sql_param);
if(!$query){
$this->sys_error_db("form_riwayat_pasien error save");
exit;
}
//$last_id = $this->db_onedev->insert_id();
//$results[$key]['xid'] = $last_id;
$return_data[] = $details;
}
}
$result = array ("records" => $return_data);
$this->sys_ok($result);
exit;
} catch(Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function clean_json_encode($data) {
return str_replace(
['\r', '\n'],
'',
json_encode($data, JSON_UNESCAPED_SLASHES)
);
}
public function save_riwayat()
{
try {
$prm = $this->sys_input;
$xid = $prm['id'];
$form_code = $prm['form_code'];
$data_riwayat = $prm['data_riwayat'];
$sql = "SELECT * FROM form_riwayat_pasien WHERE FormRiwayatPasienCode = ? AND FormRiwayatPasienUUID = ? AND FormRiwayatPasienIsActive = 'Y'";
$query = $this->db_onedev->query($sql, array($form_code, $xid));
if(!$query){
$this->sys_error_db("form_riwayat_pasien error get exist");
exit;
}
$exist_form_riwayat = $query->result_array();
$parent_id = $exist_form_riwayat[0]['FormRiwayatPasienID'];
$this->db_onedev->trans_begin();
foreach($data_riwayat as $key => $item){
$riwayat = json_encode($item, JSON_UNESCAPED_SLASHES);
$sql = "UPDATE form_riwayat_pasien_template
JOIN fisik_template ON FormRiwayatPasienTemplateFisikTemplateID = FisikTemplateID AND
FisikTemplateIsActive = 'Y' AND
FisikTemplateType = 'Riwayat' AND
FisikTemplateTitle = ?
SET
FormRiwayatPasienTemplateDetails = ?,
FormRiwayatPasienTemplateLastUpdated = NOW(),
FormRiwayatPasienTemplateLastUpdatedUserID = 45312
WHERE
FormRiwayatPasienTemplateFormRiwayatPasienID = ? AND
FormRiwayatPasienTemplateIsActive = 'Y'
";
$rst = $this->db_onedev->query($sql, array(
$item['title'],
$riwayat,
$parent_id
));
if(!$rst){
echo $this->db_onedev->last_query();
$this->db_onedev->trans_rollback();
$this->sys_error_db("form_riwayat_pasien error save");
exit;
}
}
$this->db_onedev->trans_commit();
$this->sys_ok("Data berhasil disimpan");
} catch(Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
}