Files
BE_CPONE/application/controllers/one-doctor/Uploader-old.php
2026-04-27 10:26:26 +07:00

1218 lines
45 KiB
PHP

<?php
class Uploader extends MY_Controller
{
var $db;
var $APP_DOCTOR_API = "http://devbandungraya.aplikasi.web.id/one-api/app_doctor/Receiveruploadlog/";
var $max_limit = 20;
public function index()
{
echo "DOKTER API";
}
public function __construct()
{
parent::__construct();
// db wilayah contoh surabaya
// $this->db = $this->load->database("regional", true);
// string database
$this->db_str_doctor = 'one_doctor';
}
// api
// get historical
function get_history($id)
{
// cek dulu T_OrderHeaderAddOnReadyPrint harus Y
$data = [];
// $sql_cek_validation_print = "select T_OrderHeaderAddOnValidationDone, T_OrderHeaderAddOnReadyPrint,
// T_OrderHeaderAddOnT_OrderHeaderID
// from t_orderheaderaddon
// where T_OrderHeaderAddOnT_OrderHeaderID = ?
// AND T_OrderHeaderAddOnReadyPrint = 'Y'";
$sql_cek_validation_print = "select T_OrderHeaderAddOnValidationDone, T_OrderHeaderAddOnReadyPrint,
T_OrderHeaderAddOnT_OrderHeaderID
from t_orderheaderaddon
where T_OrderHeaderAddOnT_OrderHeaderID = ?
AND
(
T_OrderHeaderAddOnValidationDone = 'Y'
OR T_OrderHeaderAddOnValidationDone = 'P'
)";
$query_validation_print = $this->db->query($sql_cek_validation_print, [
$id
]);
if(!$query_validation_print){
$this->db->trans_rollback();
$this->sys_error_db("get validation failed", $this->db);
exit;
}
$rows_validation = $query_validation_print->result_array();
if(count($rows_validation) == 0){
// $this->db->trans_rollback();
// $this->sys_error('Tidak ada data');
// exit;
return $data;
}
else
{
$sql_get_patient_doktor = "SELECT T_OrderHeaderM_PatientID,
T_OrderHeaderSenderM_DoctorID
FROM t_orderheader
WHERE T_OrderHeaderIsActive = 'Y'
AND T_OrderHeaderID = ?";
$query_patient_doktor = $this->db->query($sql_get_patient_doktor, [
$id
]);
if(!$query_patient_doktor){
$this->db->trans_rollback();
$this->sys_error_db("get t_order failed", $this->db);
exit;
}
$rows_patient_doktor = $query_patient_doktor->result_array();
if(count($rows_patient_doktor) == 0){
$this->db->trans_rollback();
$this->sys_error('Order Tidak Ketemu');
exit;
}
$sql_hist = "
select
IFNULL(T_OrderHeaderDate,'') as T_OrderHeaderDate,
IFNULL(T_OrderDetailT_TestID,'') as T_OrderDetailT_TestID,
IFNULL(T_OrderDetailResult,'') as T_OrderDetailResult
from t_orderheader
join t_orderdetail
ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
WHERE T_OrderHeaderIsActive = 'Y'
AND T_OrderHeaderM_PatientID = ?
AND T_OrderHeaderSenderM_DoctorID = ?
AND T_OrderHeaderID <= ?";
$query_hist = $this->db->query($sql_hist, [
$rows_patient_doktor[0]['T_OrderHeaderM_PatientID'],
$rows_patient_doktor[0]['T_OrderHeaderSenderM_DoctorID'],
$id
]);
if(!$query_hist){
$this->db->trans_rollback();
$this->sys_error_db("get t_order failed", $this->db);
exit;
}
$rows_chart = $query_hist->result_array();
if(count($rows_chart) == 0){
$this->db->trans_rollback();
$this->sys_error('History Tidak Ada');
exit;
}
foreach ($rows_chart as $elem)
{
if(!empty($elem['T_OrderDetailResult'])){
$data[$elem['T_OrderDetailT_TestID']][] =
[
"date" => $elem['T_OrderHeaderDate'] ,
"value" => $elem['T_OrderDetailResult']
];
}
}
// $data = array_values($data);
// print_r($data);
return $data;
// echo json_encode(
// array(
// "status"=>"OK",
// "data"=> $data,
// ),
// );
}
}
function get_historical_result_by_t_orderheader_id($id)
{
// if ( ! $this->isLogin ) {
// echo json_encode(
// array("status"=>"ERR", "message"=> "Invalid Token")
// );
// exit;
// }
// lama
// $sql_cek_validation_print = "select T_OrderHeaderAddOnValidationDone, T_OrderHeaderAddOnReadyPrint,
// T_OrderHeaderAddOnT_OrderHeaderID
// from t_orderheaderaddon
// where T_OrderHeaderAddOnT_OrderHeaderID = ?
// AND T_OrderHeaderAddOnReadyPrint = 'Y'";
$sql_cek_validation_print = "select T_OrderHeaderAddOnValidationDone, T_OrderHeaderAddOnReadyPrint,
T_OrderHeaderAddOnT_OrderHeaderID
from t_orderheaderaddon
where T_OrderHeaderAddOnT_OrderHeaderID = ?
AND
(
T_OrderHeaderAddOnValidationDone = 'Y'
OR T_OrderHeaderAddOnValidationDone = 'P'
)";
$query_validation_print = $this->db->query($sql_cek_validation_print, [
$id
]);
if(!$query_validation_print){
$this->db->trans_rollback();
$this->sys_error_db("get validation failed", $this->db);
exit;
}
$rows_validation = $query_validation_print->result_array();
if(count($rows_validation) == 0){
// $this->db->trans_rollback();
// $this->sys_error('Tidak ada data');
// exit;
// return $data;
echo json_encode(
array(
"status"=>"OK",
"message" => "Data belum bisa ditampilkan",
"data_header" => [],
"data"=> [],
));
}
else
{
$sql_get_t_order = "select
concat(M_TitleName, ' ',
ifnull(M_PatientPrefix,' '),
M_PatientName,
ifnull(M_PatientSuffix,'')
)
as PatientFullName,
IFNULL(T_OrderHeaderLabNumberExt,'') as T_OrderHeaderLabNumberExt,
IFNULL(DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i:%s'),'') as T_OrderHeaderDate,
IFNULL(T_OrderHeaderID,'') as T_OrderHeaderID,
IFNULL(T_OrderHeaderSenderM_DoctorID,'') as T_OrderHeaderSenderM_DoctorID,
'' as M_BranchID,
'' as M_BranchCode
from t_orderheader
join m_patient on T_OrderHeaderID = ?
and T_OrderHeaderM_PatientID = M_PatientID
join m_title on M_PatientM_TitleID = M_TitleID";
$query_t_order = $this->db->query($sql_get_t_order, [
$id
]);
if(!$query_t_order){
$this->db->trans_rollback();
$this->sys_error_db("get t_order failed", $this->db);
exit;
}
$rows = $query_t_order->result_array();
if(count($rows) == 0){
$this->db->trans_rollback();
$this->sys_error('Header Tidak Ketemu');
exit;
}
$r_header = $rows[0];
$sql_get_branch = "
select IFNULL(M_BranchID,'') as M_BranchID,
IFNULL(M_BranchCode,'') as M_BranchCode
from m_branch
WHERE M_BranchIsDefault='Y'
AND M_BranchIsActive ='Y'
";
$query_m_branch = $this->db->query($sql_get_branch, [
$id
]);
if(!$query_m_branch){
$this->db->trans_rollback();
$message = $this->db->error();
$this->sys_error($message);
exit;
}
$rows = $query_m_branch->result_array();
if(count($rows) == 0){
$this->db->trans_rollback();
$this->sys_error('Cabang Tidak Ketemu');
exit;
}
$branch_id = $rows[0]['M_BranchID'];
$branch_code = $rows[0]['M_BranchCode'];
$sql_detail_periksa = "select
IFNULL(T_TestSasCode,'') as T_TestSasCode,
IFNULL(Nat_SubGroupName,'') as Nat_SubGroupName,
IFNULL(Nat_SubSubGroupName,'') as Nat_SubSubGroupName,
IFNULL(T_TestName,'') as T_TestName,
IFNULL(T_OrderDetailT_TestName,'') as T_OrderDetailT_TestName,
IFNULL(T_OrderDetailResult,'') as T_OrderDetailResult,
IFNULL(T_OrderDetailNat_UnitName,'') as T_OrderDetailNat_UnitName,
IFNULL(T_OrderDetailNormalValueNote,'') as T_OrderDetailNormalValueNote,
IFNULL(T_OrderdetailNat_MethodeName,'') as T_OrderdetailNat_MethodeName,
T_OrderDetailT_TestID,
T_TestSasCode,
T_TestIsPrintResult,
T_TestIsResult,
T_OrderDetailValidation
from t_orderheader
join m_patient
on T_OrderHeaderID = ?
and T_OrderHeaderM_PatientID = M_PatientID
join m_title
on M_PatientM_TitleID = M_TitleID
join t_orderdetail
ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
AND T_OrderDetailIsActive = 'Y'
join t_test
ON T_OrderDetailT_TestID = T_TestID
AND T_TestIsActive = 'Y'
join nat_group
ON T_TestNat_GroupID = Nat_GroupID
AND Nat_GroupIsActive = 'Y'
join nat_subgroup
ON T_TestNat_SubgroupID = Nat_SubGroupID
AND Nat_SubGroupIsActive = 'Y'
join nat_subsubgroup
ON T_TestNat_SubSubGroupID = Nat_SubSubGroupID
AND Nat_SubSubGroupIsActive = 'Y'
where T_OrderHeaderIsActive = 'Y'
order by T_TestSasCode asc";
$query_detail_periksa = $this->db->query($sql_detail_periksa, [
$id
]);
if(!$query_detail_periksa){
$this->db->trans_rollback();
$message = $this->db->error();
$this->sys_error($message);
exit;
}
// $data_m_branch =
$rows = $query_detail_periksa->result_array();
// print_r($rows);
$prev_Nat_SubGroupName = "";
$prev_Nat_SubSubGroupName = "";
$data = [];
$rows_history = $this->get_history($id);
foreach($rows as $r){
$curr_Nat_SubSubGroupName = $r['Nat_SubSubGroupName'];
if($prev_Nat_SubSubGroupName !== $curr_Nat_SubSubGroupName){
$data[] = [
"Nat_SubGroupName" => $r['Nat_SubGroupName'],
"Nat_SubSubGroupName" => $r['Nat_SubSubGroupName'],
"details" => []
];
}
$testID = $r['T_OrderDetailT_TestID'];
$curr_idx = count($data) - 1;
$data[$curr_idx]['details'][] = [
'T_TestSasCode' => $r['T_TestSasCode'],
'T_TestIsPrintResult' => $r['T_TestIsPrintResult'],
'T_TestIsResult' => $r['T_TestIsResult'],
'T_TestName' => $r['T_TestName'],
'T_OrderDetailValidation' => $r['T_OrderDetailValidation'],
'T_OrderDetailResult' => $r['T_OrderDetailResult'],
'T_OrderDetailNat_UnitName' => $r['T_OrderDetailNat_UnitName'],
'T_OrderDetailNormalValueNote' => $r['T_OrderDetailNormalValueNote'],
'T_OrderdetailNat_MethodeName'=> $r['T_OrderdetailNat_MethodeName'],
'history' => []
];
if(in_array($testID,array_keys($rows_history))){
$idx_detail = count($data[$curr_idx]['details']) - 1;
$data[$curr_idx]['details'][$idx_detail]['history'] = $rows_history[$testID];
}
$prev_Nat_SubSubGroupName = $curr_Nat_SubSubGroupName;
}
echo json_encode(
array(
"status"=>"OK",
"data_header" => [
"PatientFullName" => $r_header['PatientFullName'],
"T_OrderHeaderLabNumberExt" => $r_header['T_OrderHeaderLabNumberExt'],
"T_OrderHeaderDate" => $r_header['T_OrderHeaderDate'],
"T_OrderHeaderID" => $r_header['T_OrderHeaderID'],
"T_OrderHeaderSenderM_DoctorID" => $r_header['T_OrderHeaderSenderM_DoctorID'],
"M_BranchID" => $branch_id,
"M_BranchCode" => $branch_code,
],
"data"=> $data,
));
}
}
function get_result_by_t_orderheader_id($id)
{
// if ( ! $this->isLogin ) {
// echo json_encode(
// array("status"=>"ERR", "message"=> "Invalid Token")
// );
// exit;
// }
// lama
// $sql_cek_validation_print = "select T_OrderHeaderAddOnValidationDone, T_OrderHeaderAddOnReadyPrint,
// T_OrderHeaderAddOnT_OrderHeaderID
// from t_orderheaderaddon
// where T_OrderHeaderAddOnT_OrderHeaderID = ?
// AND T_OrderHeaderAddOnReadyPrint = 'Y'";
$sql_cek_validation_print = "select T_OrderHeaderAddOnValidationDone, T_OrderHeaderAddOnReadyPrint,
T_OrderHeaderAddOnT_OrderHeaderID
from t_orderheaderaddon
JOIN $this->db_str_doctor.request_upload
ON T_OrderHeaderAddOnT_OrderHeaderID = RequestUploadT_OrderHeaderID
AND RequestUploadIsUploaded = 'N'
where T_OrderHeaderAddOnT_OrderHeaderID = ?
AND
(
T_OrderHeaderAddOnValidationDone = 'Y'
OR T_OrderHeaderAddOnValidationDone = 'P'
)";
$query_validation_print = $this->db->query($sql_cek_validation_print, [
$id
]);
if(!$query_validation_print){
$this->db->trans_rollback();
$this->sys_error_db("get validation failed", $this->db);
exit;
}
$rows_validation = $query_validation_print->result_array();
if(count($rows_validation) == 0){
// $this->db->trans_rollback();
// $this->sys_error('Tidak ada data');
// exit;
// return $data;
echo json_encode(
array(
"status"=>"OK",
"message" => "Data belum bisa ditampilkan",
"data_header" => [],
"data"=> [],
));
}
else
{
$sql_get_t_order = "select
concat(M_TitleName, ' ',
ifnull(M_PatientPrefix,' '),
M_PatientName,
ifnull(M_PatientSuffix,'')
)
as PatientFullName,
IFNULL(T_OrderHeaderLabNumberExt,'') as T_OrderHeaderLabNumberExt,
IFNULL(DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i:%s'),'') as T_OrderHeaderDate,
IFNULL(T_OrderHeaderID,'') as T_OrderHeaderID,
IFNULL(T_OrderHeaderSenderM_DoctorID,'') as T_OrderHeaderSenderM_DoctorID,
'' as M_BranchID,
'' as M_BranchCode
from t_orderheader
join m_patient on T_OrderHeaderID = ?
and T_OrderHeaderM_PatientID = M_PatientID
join m_title on M_PatientM_TitleID = M_TitleID";
$query_t_order = $this->db->query($sql_get_t_order, [
$id
]);
if(!$query_t_order){
$this->db->trans_rollback();
$this->sys_error_db("get t_order failed", $this->db);
exit;
}
$rows = $query_t_order->result_array();
if(count($rows) == 0){
$this->db->trans_rollback();
$this->sys_error('Header Tidak Ketemu');
exit;
}
$r_header = $rows[0];
$sql_get_branch = "
select IFNULL(M_BranchID,'') as M_BranchID,
IFNULL(M_BranchCode,'') as M_BranchCode
from m_branch
WHERE M_BranchIsDefault='Y'
AND M_BranchIsActive ='Y'
";
$query_m_branch = $this->db->query($sql_get_branch, [
$id
]);
if(!$query_m_branch){
$this->db->trans_rollback();
$message = $this->db->error();
$this->sys_error($message);
exit;
}
$rows = $query_m_branch->result_array();
if(count($rows) == 0){
$this->db->trans_rollback();
$this->sys_error('Cabang Tidak Ketemu');
exit;
}
$branch_id = $rows[0]['M_BranchID'];
$branch_code = $rows[0]['M_BranchCode'];
// if(fn_itf_isnumber(T_OrderDetailResult) = '0', T_OrderDetailResult , fn_rpt_format_number(T_OrderDetailResult) ) as T_OrderDetailResult,
// old
// $sql_detail_periksa = "select
// IFNULL(T_TestSasCode,'') as T_TestSasCode,
// IFNULL(Nat_SubGroupName,'') as Nat_SubGroupName,
// IFNULL(Nat_SubSubGroupName,'') as Nat_SubSubGroupName,
// IFNULL(T_TestName,'') as T_TestName,
// IFNULL(T_OrderDetailT_TestName,'') as T_OrderDetailT_TestName,
// IFNULL(T_OrderDetailResult,'') as T_OrderDetailResult,
// IFNULL(T_OrderDetailNat_UnitName,'') as T_OrderDetailNat_UnitName,
// IFNULL(T_OrderDetailNormalValueNote,'') as T_OrderDetailNormalValueNote,
// IFNULL(T_OrderdetailNat_MethodeName,'') as T_OrderdetailNat_MethodeName,
// T_OrderDetailT_TestID,
// IFNULL(T_TestIsPrintResult,'') as T_TestIsPrintResult,
// IFNULL(T_TestIsResult,'') as T_TestIsResult,
// IFNULL(T_OrderDetailValidation,'') as T_OrderDetailValidation,
// T_TestID
// from t_orderheader
// join m_patient
// on T_OrderHeaderID = ?
// and T_OrderHeaderM_PatientID = M_PatientID
// join m_title
// on M_PatientM_TitleID = M_TitleID
// join t_orderdetail
// ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
// AND T_OrderDetailIsActive = 'Y'
// join t_test
// ON T_OrderDetailT_TestID = T_TestID
// AND T_TestIsActive = 'Y'
// join nat_group
// ON T_TestNat_GroupID = Nat_GroupID
// AND Nat_GroupIsActive = 'Y'
// join nat_subgroup
// ON T_TestNat_SubgroupID = Nat_SubGroupID
// AND Nat_SubGroupIsActive = 'Y'
// join nat_subsubgroup
// ON T_TestNat_SubSubGroupID = Nat_SubSubGroupID
// AND Nat_SubSubGroupIsActive = 'Y'
// where T_OrderHeaderIsActive = 'Y'
// order by T_TestSasCode asc";
$sql_detail_periksa = "select
IFNULL(T_TestSasCode,'') as T_TestSasCode,
IFNULL(Nat_SubGroupName,'') as Nat_SubGroupName,
IFNULL(Nat_SubSubGroupName,'') as Nat_SubSubGroupName,
IFNULL(T_TestName,'') as T_TestName,
IFNULL(T_OrderDetailT_TestName,'') as T_OrderDetailT_TestName,
if(fn_itf_isnumber(T_OrderDetailResult) = '0', T_OrderDetailResult , fn_rpt_format_number(T_OrderDetailResult) ) as T_OrderDetailResult,
IFNULL(T_OrderDetailNat_UnitName,'') as T_OrderDetailNat_UnitName,
IFNULL(T_OrderDetailNormalValueNote,'') as T_OrderDetailNormalValueNote,
IFNULL(T_OrderdetailNat_MethodeName,'') as T_OrderdetailNat_MethodeName,
T_OrderDetailT_TestID,
IFNULL(T_TestIsPrintResult,'') as T_TestIsPrintResult,
IFNULL(T_TestIsResult,'') as T_TestIsResult,
IFNULL(T_OrderDetailValidation,'') as T_OrderDetailValidation,
T_TestID,
T_OrderDetailResultFlag
from t_orderheader
join m_patient
on T_OrderHeaderID = ?
and T_OrderHeaderM_PatientID = M_PatientID
join m_title
on M_PatientM_TitleID = M_TitleID
join t_orderdetail
ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
AND T_OrderDetailIsActive = 'Y'
join t_test
ON T_OrderDetailT_TestID = T_TestID
AND T_TestIsActive = 'Y'
join nat_group
ON T_TestNat_GroupID = Nat_GroupID
AND Nat_GroupIsActive = 'Y'
join nat_subgroup
ON T_TestNat_SubgroupID = Nat_SubGroupID
AND Nat_SubGroupIsActive = 'Y'
join nat_subsubgroup
ON T_TestNat_SubSubGroupID = Nat_SubSubGroupID
AND Nat_SubSubGroupIsActive = 'Y'
JOIN $this->db_str_doctor.request_upload
ON T_OrderHeaderID = RequestUploadT_OrderHeaderID
AND RequestUploadIsUploaded = 'N'
where T_OrderHeaderIsActive = 'Y'
order by T_TestSasCode asc";
$query_detail_periksa = $this->db->query($sql_detail_periksa, [
$id
]);
if(!$query_detail_periksa){
$this->db->trans_rollback();
$message = $this->db->error();
$this->sys_error($message);
exit;
}
// $data_m_branch =
$rows = $query_detail_periksa->result_array();
// print_r($rows);
$prev_Nat_SubGroupName = "";
$prev_Nat_SubSubGroupName = "";
$data = [];
$rows_history = $this->get_history($id);
foreach($rows as $r){
$curr_Nat_SubSubGroupName = $r['Nat_SubSubGroupName'];
if($prev_Nat_SubSubGroupName !== $curr_Nat_SubSubGroupName){
$data[] = [
"Nat_SubGroupName" => $r['Nat_SubGroupName'],
"Nat_SubSubGroupName" => $r['Nat_SubSubGroupName'],
"details" => []
];
}
$testID = $r['T_OrderDetailT_TestID'];
$curr_idx = count($data) - 1;
$data[$curr_idx]['details'][] = [
'T_TestSasCode' => $r['T_TestSasCode'],
'T_TestIsPrintResult' => $r['T_TestIsPrintResult'],
'T_TestIsResult' => $r['T_TestIsResult'],
'T_TestID' => $r['T_TestID'],
'T_TestName' => $r['T_TestName'],
// 'T_PriceAmount' => $r['T_PriceAmount'],
'T_OrderDetailValidation' => $r['T_OrderDetailValidation'],
'T_OrderDetailResult' => $r['T_OrderDetailResult'],
'T_OrderDetailNat_UnitName' => $r['T_OrderDetailNat_UnitName'],
'T_OrderDetailNormalValueNote' => $r['T_OrderDetailNormalValueNote'],
'T_OrderdetailNat_MethodeName'=> $r['T_OrderdetailNat_MethodeName'],
'T_OrderDetailResultFlag' => $r['T_OrderDetailResultFlag'],
'history' => []
];
if(in_array($testID,array_keys($rows_history))){
$idx_detail = count($data[$curr_idx]['details']) - 1;
$data[$curr_idx]['details'][$idx_detail]['history'] = $rows_history[$testID];
}
$prev_Nat_SubSubGroupName = $curr_Nat_SubSubGroupName;
}
// echo json_encode(
// array(
// "status"=>"OK",
// "data_header" => [
// "PatientFullName" => $r_header['PatientFullName'],
// "T_OrderHeaderLabNumberExt" => $r_header['T_OrderHeaderLabNumberExt'],
// "T_OrderHeaderDate" => $r_header['T_OrderHeaderDate'],
// "T_OrderHeaderID" => $r_header['T_OrderHeaderID'],
// "T_OrderHeaderSenderM_DoctorID" => $r_header['T_OrderHeaderSenderM_DoctorID'],
// "M_BranchID" => $branch_id,
// "M_BranchCode" => $branch_code,
// ],
// "data"=> $data,
// ));
return $data;
}
}
function get_result_patient($id)
{
// $sql_patient = "SELECT M_PatientID, M_PatientNoReg,
// M_PatientName, M_PatientPOB, M_PatientDOB,
// M_PatientHP, M_PatientIDNumber, OrderFoOrderPatientID,
// M_PatientAddressDescription,
// concat(M_TitleName, ' ',
// ifnull(M_PatientPrefix,' '),
// M_PatientName,
// ifnull(M_PatientSuffix,'')
// ) as PatientFullName
// FROM $this->db_str_doctor.order_fo
// JOIN m_patient
// ON OrderFoM_PatientID = M_PatientID
// AND M_PatientIsActive = 'Y'
// join m_title
// on M_PatientM_TitleID = M_TitleID
// AND M_TitleIsActive = 'Y'
// join m_patientaddress
// ON M_PatientID = M_PatientAddressM_PatientID
// AND M_PatientIsActive = 'Y'
// WHERE OrderFoT_OrderHeaderID = ?
// AND OrderFoIsActive = 'Y'";
$sql_patient = "SELECT M_PatientID, M_PatientNoReg,
M_PatientName, M_PatientPOB, M_PatientDOB,
M_PatientHP, M_PatientIDNumber, OrderFoOrderPatientID,
M_PatientAddressDescription,
concat(M_TitleName, ' ',
ifnull(M_PatientPrefix,' '),
M_PatientName,
ifnull(M_PatientSuffix,'')
) as PatientFullName,
T_OrderHeaderM_PatientAge
FROM $this->db_str_doctor.order_fo
JOIN m_patient
ON OrderFoM_PatientID = M_PatientID
AND M_PatientIsActive = 'Y'
join m_title
on M_PatientM_TitleID = M_TitleID
AND M_TitleIsActive = 'Y'
join m_patientaddress
ON M_PatientID = M_PatientAddressM_PatientID
AND M_PatientIsActive = 'Y'
join t_orderheader
ON OrderFoT_OrderHeaderID = T_OrderHeaderID
AND T_OrderHeaderIsActive = 'Y'
JOIN $this->db_str_doctor.request_upload
ON T_OrderHeaderID = RequestUploadT_OrderHeaderID
AND RequestUploadIsUploaded = 'N'
WHERE OrderFoT_OrderHeaderID = ?
AND OrderFoIsActive = 'Y'";
$query_patient = $this->db->query($sql_patient, [
$id
]);
if(!$query_patient){
$this->db->trans_rollback();
$this->sys_error_db("get patient failed", $this->db);
exit;
}
$rows_patient = $query_patient->result_array();
// print_r($rows_patient);
$rows_result = $this->get_result_by_t_orderheader_id($id);
$sql_get_branch = "
select IFNULL(M_BranchID,'') as M_BranchID,
IFNULL(M_BranchCode,'') as M_BranchCode
from m_branch
WHERE M_BranchIsDefault='Y'
AND M_BranchIsActive ='Y'
";
$query_m_branch = $this->db->query($sql_get_branch, [
$id
]);
if(!$query_m_branch){
$this->db->trans_rollback();
$message = $this->db->error();
$this->sys_error($message);
exit;
}
$rows = $query_m_branch->result_array();
if(count($rows) == 0){
$this->db->trans_rollback();
$this->sys_error('Cabang Tidak Ketemu');
exit;
}
$branch_id = $rows[0]['M_BranchID'];
$branch_code = $rows[0]['M_BranchCode'];
// header
$sql_header = "select
concat(M_TitleName, ' ',
ifnull(M_PatientPrefix,' '),
M_PatientName,
ifnull(M_PatientSuffix,'')
)
as PatientFullName,
IFNULL(T_OrderHeaderLabNumberExt,'') as T_OrderHeaderLabNumberExt,
IFNULL(DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i:%s'),'') as T_OrderHeaderDate,
IFNULL(T_OrderHeaderID,'') as T_OrderHeaderID,
IFNULL(T_OrderHeaderSenderM_DoctorID,'') as T_OrderHeaderSenderM_DoctorID,
'' as M_BranchID,
'' as M_BranchCode
from t_orderheader
join m_patient on T_OrderHeaderID = ?
and T_OrderHeaderM_PatientID = M_PatientID
join m_title on M_PatientM_TitleID = M_TitleID";
$query_header = $this->db->query($sql_header, [
$id
]);
if(!$query_header){
$this->db->trans_rollback();
$this->sys_error_db("get header failed", $this->db);
exit;
}
$rows_header = $query_header->result_array();
if(count($rows_header) == 0){
$this->db->trans_rollback();
$this->sys_error('Header Tidak Ketemu');
exit;
}
$r_header = $rows_header[0];
// sample
// select T_OrderSampleT_OrderHeaderID,
// IFNULL(Nat_BahanName,'') as Nat_BahanName,
// IFNULL(DATE_FORMAT(T_OrderSampleSamplingDate,'%d-%m-%Y %H:%i:%s'),'')
// as T_OrderSampleSamplingDate,
// T_OrderSampleSamplingTime
// from t_ordersample
// join t_sampletype
// ON T_OrderSampleT_SampleTypeID = T_SampleTypeID
// AND T_SampleTypeIsActive = 'Y'
// join nat_bahan
// ON T_SampleTypeT_BahanID = Nat_BahanID
// AND Nat_BahanIsActive = 'Y'
// where T_OrderSampleIsActive = 'Y'
// AND T_OrderSampleT_OrderHeaderID = 131484
$sql_sample = "select T_OrderSampleT_OrderHeaderID,
IFNULL(Nat_BahanName,'') as Nat_BahanName,
IFNULL(DATE_FORMAT(T_OrderSampleSamplingDate,'%d-%m-%Y %H:%i:%s'),'')
as T_OrderSampleSamplingDate,
T_OrderSampleSamplingTime
from t_ordersample
join t_sampletype
ON T_OrderSampleT_SampleTypeID = T_SampleTypeID
AND T_SampleTypeIsActive = 'Y'
join nat_bahan
ON T_SampleTypeT_BahanID = Nat_BahanID
AND Nat_BahanIsActive = 'Y'
JOIN $this->db_str_doctor.request_upload
ON T_OrderSampleT_OrderHeaderID = RequestUploadT_OrderHeaderID
AND RequestUploadIsUploaded = 'N'
where T_OrderSampleIsActive = 'Y'
AND T_OrderSampleT_OrderHeaderID = ?
group by T_OrderSampleT_OrderHeaderID, Nat_BahanName";
$query_sample = $this->db->query($sql_sample, [
$id
]);
if(!$query_sample){
$this->db->trans_rollback();
$this->sys_error_db("get sample failed", $this->db);
exit;
}
$rows_sample = $query_sample->result_array();
if(count($rows_sample) == 0){
$this->db->trans_rollback();
$this->sys_error('sample Tidak Ketemu');
exit;
}
// $r_sample = $rows_sample[0];
if(count($rows_patient) == 0)
{
return
array(
"order_patient_id" => 0,
"patient" => [],
"result" => [],
"sample" => []
);
}
else
{
return (
// array(
// "order_patient_id" => $rows_patient[0]['OrderFoOrderPatientID'],
// "M_BranchID" => $branch_id,
// "M_BranchCode" => $branch_code,
// "patient" => $rows_patient,
// "result" => $rows_result,
// )
// "T_OrderHeaderLabNumberExt" => $r_header['T_OrderHeaderLabNumberExt'],
// "T_OrderHeaderDate" => $r_header['T_OrderHeaderDate'],
// "T_OrderHeaderID" => $r_header['T_OrderHeaderID'],
// "T_OrderHeaderSenderM_DoctorID" => $r_header['T_OrderHeaderSenderM_DoctorID'],
array(
"order_patient_id" => $rows_patient[0]['OrderFoOrderPatientID'],
"M_BranchID" => $branch_id,
"M_BranchCode" => $branch_code,
"T_OrderHeaderLabNumberExt" => $r_header['T_OrderHeaderLabNumberExt'],
"T_OrderHeaderDate" => $r_header['T_OrderHeaderDate'],
"T_OrderHeaderID" => $r_header['T_OrderHeaderID'],
"T_OrderHeaderSenderM_DoctorID" => $r_header['T_OrderHeaderSenderM_DoctorID'],
"patient" => $rows_patient,
"result" => $rows_result,
"sample" => $rows_sample
)
);
}
}
function get_result()
{
$data = [];
// order_fo join t_orderheader yg print nya Y
$sql_ready_print_Y = "SELECT OrderFoT_OrderHeaderID
FROM $this->db_str_doctor.order_fo
JOIN t_orderheader
ON OrderFoT_OrderHeaderID = T_OrderHeaderID
AND OrderFoIsActive = 'Y'
AND T_OrderHeaderIsActive = 'Y'
JOIN t_orderheaderaddon
ON T_OrderHeaderID = T_OrderHeaderAddOnT_OrderHeaderID
AND
(
T_OrderHeaderAddOnValidationDone = 'Y'
OR T_OrderHeaderAddOnValidationDone = 'P'
)
JOIN $this->db_str_doctor.request_upload
ON T_OrderHeaderID = RequestUploadT_OrderHeaderID
AND RequestUploadIsUploaded = 'N'
limit 0,$this->max_limit";
$query_ready_print_Y = $this->db->query($sql_ready_print_Y);
if(!$query_ready_print_Y){
$this->db->trans_rollback();
$this->sys_error_db("get ready print Y or request upload N failed", $this->db);
exit;
}
$rows_result_ready_print_Y = $query_ready_print_Y->result_array();
if(count($rows_result_ready_print_Y) > 0)
{
foreach($rows_result_ready_print_Y as $key => $val)
{
$data[] = $this->get_result_patient($val['OrderFoT_OrderHeaderID']);
}
return json_encode(
array(
'status' => 'OK',
'data' => $data
)
);
}
else
{
return json_encode (
array(
'status' => 'OK',
'message' => 'Data Tidak Ada',
'data' => $data
)
);
}
}
// curl
public function post($url, $data)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/text",
"Content-Length: " . strlen($data),
]);
$result = curl_exec($ch);
if (curl_error($ch) != "") {
echo json_encode([
"status" => "ERR",
"message" => "Http Error : " . curl_error($ch),
]);
curl_close($ch);
exit();
}
curl_close($ch);
return $result;
}
function log($msg)
{
// $dt = Date("Y-m-d H:i:s");
// echo "$dt $msg \n";
echo $msg;
}
function get_param_z()
{
$body_z = file_get_contents("php://input");
$body = gzuncompress($body_z);
return json_decode($body, true);
}
function reply($resp)
{
echo json_encode($resp);
}
function reply_gz($resp)
{
//echo json_encode($resp);
echo gzcompress(json_encode($resp));
}
function upload_log_gzcompress()
{
$this->db->trans_begin();
$j_param = $this->get_result();
$result = json_decode($j_param,true);
// print_r($j_param);
if(count($result['data']) > 0)
{
// check max retry
$sql_cek_max_retry = "select
uploadLogOrderPatientID, uploadLogJson
from $this->db_str_doctor.upload_log
where uploadLogIsSent = 'N'
and uploadLogRetry >= 10
limit 0,$this->max_limit";
$query_max_retry = $this->db->query($sql_cek_max_retry);
if(!$query_max_retry){
$this->db->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "select upload_log | " .
$this->db->error()["message"], "debug" => $this->db->last_query()]);
}
$data_json = [];
$rows_retry = $query_max_retry->result_array();
$data_order_patient_id_retry = [];
foreach($rows_retry as $key => $val)
{
$data_order_patient_id_retry[] = $val['uploadLogOrderPatientID'];
}
$upload_param = [];
foreach($result['data'] as $key)
{
// print_r(json_encode($result['data']));
// buka proteksi upload lebih dari 1x
if(in_array($key['order_patient_id'], $data_order_patient_id_retry)){
continue;
}
$data_json =
[
"order_patient_id" => $key['order_patient_id'],
"T_OrderHeaderLabNumberExt" => $key['T_OrderHeaderLabNumberExt'],
"T_OrderHeaderDate" => $key['T_OrderHeaderDate'],
"T_OrderHeaderID" => $key['T_OrderHeaderID'],
"T_OrderHeaderSenderM_DoctorID" => $key['T_OrderHeaderSenderM_DoctorID'],
"M_BranchID" => $key['M_BranchID'],
"M_BranchCode" => $key['M_BranchCode'],
"patient" => $key['patient'],
"result" => $key['result'],
"sample" => $key['sample']
];
$upload_param[] = $data_json;
$this->insert_upload_log($key['order_patient_id'],
$data_json
);
}
// send regional for update data
if(count($upload_param) == 0){
$this->db->trans_commit();
// $this->db->trans_rollback();
$this->reply([
"status" => "ERR",
'message' => "Data Tidak ada"
]);
exit;
}
$j_param = json_encode(array(
'data' => $upload_param
));
$size = round(strlen($j_param) / 1024, 2);
$z_param = gzcompress($j_param, 9);
$size_z = round(strlen($z_param) / 1024, 2);
$url = $this->APP_DOCTOR_API . "r_upload_log";
// $this->log("Post to $url | size : $size k | comprezzed $size_z k");
$resp = $this->post($url, $z_param);
$j_resp = json_decode($resp,true);
// $j_resp_x = $this->get_param_z();
// print_r($j_resp);
// print_r($resp);
// print_r($j_resp_x);
if ($j_resp["status"] == "OK") {
// update
$order_patient_id_str = implode(",",$j_resp['order_patient_id']);
if($order_patient_id_str == ""){
$order_patient_id_str = "0";
}
$sql_update = "UPDATE $this->db_str_doctor.upload_log
set uploadLogIsSent = 'Y'
WHERE uploadLogIsSent = 'N'
AND uploadLogOrderPatientID IN ($order_patient_id_str)";
$query_update = $this->db->query($sql_update);
// echo $this->db->last_query();
if(!$query_update)
{
$this->db->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "update upload_log | " .
$this->db->error()["message"], "debug" => $this->db->last_query()]);
}
// update request_log from N to Y
$sql_update_request_upload = "UPDATE $this->db_str_doctor.request_upload
set RequestUploadIsUploaded = 'Y'
WHERE RequestUploadOrderPatientID IN ($order_patient_id_str)
";
$query_update_request_upload = $this->db->query($sql_update_request_upload);
if(!$query_update_request_upload)
{
$this->db->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "update request_log | " .
$this->db->error()["message"], "debug" => $this->db->last_query()]);
}
$this->db->trans_commit();
// $this->db->trans_rollback();
$this->reply(["status" => "OK",'message'=>'Proses upload sudah berhasil']);
}
else
{
$this->db->trans_rollback();
// print_r($j_resp['status']);
$this->reply([
"status" => "ERR",
'message' => "Gagal update",
'debug' => print_r($resp, true)
]);
}
}
else
{
$this->db->trans_rollback();
// print_r($j_resp['status']);
$this->reply([
"status" => "OK",
'message' => "Tidak Ada Data",
'debug' => print_r($resp, true)
]);
}
}
function insert_upload_log($order_patient_id, $json_result)
{
$sql_check = "select *
from $this->db_str_doctor.upload_log
where uploadLogOrderPatientID = ?
AND uploadLogIsSent = 'N'";
$qry_check = $this->db->query($sql_check,[
$order_patient_id
]);
if (!$qry_check) {
// print_r($this->db->last_query());
$this->db->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "insert upload log | " .
$this->db->error()["message"], "debug" => $this->db->last_query()]);
exit;
}
$rows_check = $qry_check->result_array();
if(count($rows_check) == 0){
// insert table upload_log
$sql_insert_upload_log = "INSERT INTO $this->db_str_doctor.upload_log(
uploadLogOrderPatientID,
uploadLogJson,
uploadLogRetry
) VALUES (?, ?, 0)";
$query_insert = $this->db->query($sql_insert_upload_log, [
intval($order_patient_id),
json_encode($json_result)
]);
// echo $this->db->last_query();
if (!$query_insert) {
// print_r($this->db->last_query());
$this->db->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "insert upload log | " .
$this->db->error()["message"], "debug" => $this->db->last_query()]);
exit;
}
}else{
// update tabel update_log
$sql_update_log = "UPDATE $this->db_str_doctor.upload_log
SET
uploadLogRetry = uploadLogRetry + 1
WHERE uploadLogID = ?";
$query_update = $this->db->query($sql_update_log, [
$rows_check[0]['uploadLogID']
]);
// echo $this->db->last_query();
if (!$query_update) {
// print_r($this->db->last_query());
$this->db->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "update upload log | " .
$this->db->error()["message"], "debug" => $this->db->last_query()]);
exit;
}
}
}
}