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

517 lines
18 KiB
PHP

<?php
class Histerimahasil 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
}
// 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 get_result_patient($id)
{
// $rows_result = $this->get_result_by_t_orderheader_id($id);
// header
$sql_header = "select
concat(M_TitleName, ' ',
ifnull(M_PatientPrefix,' '),
M_PatientName,
ifnull(M_PatientSuffix,'')
)
as PatientFullName,
M_PatientM_SexID,
IFNULL(DATE_FORMAT(M_PatientDOB,'%Y%m%d'),'') as M_PatientDOB,
fn_get_doctor_fullname(M_DoctorID) as M_DoctorFullName,
M_DoctorCode,
IFNULL(T_OrderHeaderLabNumberExt,'') as T_OrderHeaderLabNumberExt,
IFNULL(T_OrderHeaderLabNumber,'') as T_OrderHeaderLabNumber,
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
join m_doctor
ON T_OrderHeaderSenderM_DoctorID = M_DoctorID
AND M_DoctorIsActive = 'Y'";
$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];
// pemeriksaan atau test
// query detail periksa
$sql_detail_periksa = "select
T_OrderHeaderID,
T_TestT_SampleTypeID,
IFNULL(T_TestSasCode,'') as test_cd,
IFNULL(T_TestName,'') as test_nm,
'' as data_type,
IFNULL(T_OrderDetailResult,'') as result_value,
IFNULL(T_OrderDetailNat_UnitName,'') as unit,
IFNULL(T_OrderDetailResultFlag,'') as flag,
IFNULL(T_OrderDetailNormalValueNote,'') as ref_range,
'' as status,
'' as test_comment,
'' as order_testid,
'' as order_testnm,
IFNULL(Nat_SubGroupName,'') as test_group,
'' as item_parent,
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_test
ON T_TestNat_TestID = Nat_TestID
join nat_group
ON Nat_TestNat_GroupID = Nat_GroupID
AND Nat_GroupIsActive = 'Y'
join nat_subgroup
ON Nat_TestNat_SubgroupID = Nat_SubGroupID
AND Nat_SubGroupIsActive = 'Y'
join nat_subsubgroup
ON Nat_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;
}
$rows = $query_detail_periksa->result_array();
// sample
// $sql_sample = "select
// T_OrderSampleT_OrderHeaderID,
// T_SampleTypeID,
// '' as code,
// IFNULL(Nat_BahanName,'') as name,
// T_OrderSampleSamplingUserID as user_id,
// M_UserUsername as user_name,
// IFNULL(DATE_FORMAT(T_OrderSampleSamplingDate,'%d-%m-%Y %H:%i:%s'),'') as date
// 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 m_user
// ON T_OrderSampleSamplingUserID = M_UserID
// AND M_UserIsActive = 'Y'
// 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;
// }
$rows_sample = $this->get_sample($id);
$data_detail = [];
foreach($rows as $key => $r)
{
$xid = $r['T_OrderHeaderID']."-".$r['T_TestT_SampleTypeID'];
// if(in_array())
$data_detail[] = [
'test_cd' => $r['T_TestSasCode'],
'test_nm' => $r['T_TestName'],
'data_type' => $r['data_type'],
'result_value' => $r['T_OrderDetailResult'],
'unit' => $r['T_OrderDetailNat_UnitName'],
'flag' => $r['T_OrderDetailResultFlag'],
'ref_range' => $r['T_OrderDetailNormalValueNote'],
'status' => $r['status'],
'test_comment' => $r['test_comment'],
"disp_seq"=> '',
"order_testid"=> "",
"order_testnm"=> "",
"test_group"=> $r['Nat_SubGroupName'],
"item_parent"=> null,
"spesimen" => []
];
if(in_array($xid,array_keys($rows_sample))){
$data_detail['spesimen'] = $rows_sample[$xid];
}
}
// $r_sample = $rows_sample[0];
if(count($rows_header) == 0)
{
echo json_encode(
array(
"order_patient_id" => 0,
"patient" => [],
"result" => [],
"sample" => []
));
}
else
{
echo json_encode (
array(
"reglab" => $r_header['T_OrderHeaderLabNumber'],
"medrec"=>"",
"name"=>$rows_header[0]['PatientFullName'],
"birt_dt"=>$rows_header[0]['M_PatientDOB'],
"sex"=>$rows_header[0]['M_PatientM_SexID'],
"source"=> [
"code"=> "",
"name"=> "",
"room_no"=> ""
],
"clinican" => [
"code"=> $rows_header[0]['M_DoctorCode'],
"name" => $rows_header[0]['M_DoctorFullName']
],
"comment"=>"",
// "patient" => $rows_header,
"detail" => $data_detail,
// "sample" => $rows_sample
)
);
}
}
function get_his_terima_hasil()
{
$prm = $this->sys_input;
$no_lab = isset($prm['no_lab'])&&$prm['no_lab'] != ''?$prm['no_lab']:'';
$sql_t_orderheader = "SELECT T_OrderHeaderID
FROM t_orderheader
WHERE T_OrderHeaderLabNumber = ?";
$qry_t_orderheader = $this->db->query($sql_t_orderheader,[
$no_lab
]);
if(!$qry_t_orderheader){
$this->db->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "select m_patient info | " .
$this->db->error()["message"], "debug" => $this->db->last_query()]);
exit;
}
$data_t_orderheader = $qry_t_orderheader->result_array();
if(count($data_t_orderheader) == 0){
$this->db->trans_rollback();
$this->sys_error('Header Tidak Ketemu');
exit;
}
$T_OrderHeaderID = $data_t_orderheader[0]['T_OrderHeaderID'];
$data_patient = $this->get_result_patient($T_OrderHeaderID);
}
function get_sample($T_OrderHeaderID)
{
// sample
$sql_sample = "select
T_OrderSampleT_OrderHeaderID,
T_SampleTypeID,
T_OrderSampleT_SampleTypeID,
IFNULL(T_SampleTypeCode,'') as T_SampleTypeCode,
IFNULL(T_SampleTypeName,'') as T_SampleTypeName,
IFNULL(DATE_FORMAT(T_OrderSampleSamplingDate,'%Y%m%d'),'') as T_OrderSampleSamplingDate,
T_OrderSampleSamplingTime,
T_OrderSampleSamplingUserID,
M_UserUsername
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 m_user
ON T_OrderSampleSamplingUserID = M_UserID
AND M_UserIsActive = 'Y'
where T_OrderSampleIsActive = 'Y'
AND T_OrderSampleT_OrderHeaderID = $T_OrderHeaderID
ORDER BY T_OrderSampleT_OrderHeaderID, T_SampleTypeID,
T_OrderSampleSamplingDate, T_OrderSampleSamplingTime desc";
$qry_sample = $this->db->query($sql_sample);
if(!$qry_sample){
$this->db->trans_rollback();
$message = $this->db->error();
$this->sys_error($message);
exit;
}
$rows = $qry_sample->result_array();
$arr_spesimen = [];
foreach ($rows as $r)
{
if(!empty($r['T_OrderSampleT_OrderHeaderID'])){
// $xid = $r['T_OrderSampleT_OrderHeaderID']."-".$r['T_OrderSampleT_SampleTypeID'];
// $xid = $r['T_SampleTypeCode'];
// $arr_spesimen[$xid][] =
// [
// "code" => $r['T_SampleTypeCode'],
// "name" => $r['T_SampleTypeName'],
// "user_id" => $r['T_OrderSampleSamplingUserID'],
// "user_name" => $r['M_UserUsername'],
// "date" => $r['T_OrderSampleSamplingDate']
// ];
// if (in_array($r['T_SampleTypeCode'], array_keys($arr_spesimen))){
// continue;
// }
$arr_spesimen[] = [
"code" => $r['T_SampleTypeCode'],
"name" => $r['T_SampleTypeName'],
"user_id" => $r['T_OrderSampleSamplingUserID'],
"user_name" => $r['M_UserUsername'],
"date" => $r['T_OrderSampleSamplingDate'].str_replace(":","",$r['T_OrderSampleSamplingTime'])
];
}
}
$output = [];
$keys = [];
foreach ($arr_spesimen as $item) {
$key = $item['code'] . $item['date'];
if (!in_array($key, $keys)) {
array_push($output, $item);
array_push($keys, $key);
}
}
echo json_encode($output);
// return $arr_spesimen;
}
function spesimen_data($T_OrderHeaderID)
{
// detail periksa
$sql_detail_periksa = "select
T_OrderHeaderID,
T_TestT_SampleTypeID,
IFNULL(T_TestSasCode,'') as test_cd,
IFNULL(T_TestName,'') as test_nm,
'' as data_type,
IFNULL(T_OrderDetailResult,'') as result_value,
IFNULL(T_OrderDetailNat_UnitName,'') as unit,
IFNULL(T_OrderDetailResultFlag,'') as flag,
IFNULL(T_OrderDetailNormalValueNote,'') as ref_range,
'' as status,
'' as test_comment,
'' as order_testid,
'' as order_testnm,
IFNULL(Nat_SubGroupName,'') as test_group,
'' as item_parent,
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_test
ON T_TestNat_TestID = Nat_TestID
join nat_group
ON Nat_TestNat_GroupID = Nat_GroupID
AND Nat_GroupIsActive = 'Y'
join nat_subgroup
ON Nat_TestNat_SubgroupID = Nat_SubGroupID
AND Nat_SubGroupIsActive = 'Y'
join nat_subsubgroup
ON Nat_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, [
$T_OrderHeaderID
]);
if(!$query_detail_periksa){
$this->db->trans_rollback();
$message = $this->db->error();
$this->sys_error($message);
exit;
}
$rowsx = $query_detail_periksa->result_array();
$rows_sample = $this->get_sample($T_OrderHeaderID);
$arr_spesimen = [];
foreach($rows as $r)
{
$xid = $r['T_OrderSampleT_OrderHeaderID']."-".$r['T_OrderSampleT_SampleTypeID'];
// $xid = $r['T_OrderSampleT_OrderHeaderID'];
if(in_array($xid,array_keys($rows_sample))){
$arr_spesimen[$xid]['details'][$idx_detail]['history'] = $rows_history[$testID];
}
$arr_spesimen[$xid] = [
"T_OrderSampleT_OrderHeaderID" => $r['T_OrderSampleT_OrderHeaderID'],
"T_SampleTypeID" => $r['T_SampleTypeID']
];
}
print_r("1");
// echo json_encode($arr_spesimen);
}
}