517 lines
18 KiB
PHP
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);
|
|
}
|
|
} |