3001 lines
112 KiB
PHP
3001 lines
112 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';
|
|
$this->startVt = chr(0x0b);
|
|
$this->stopFs = chr(0x1c);
|
|
$this->cr = chr(0x0d);
|
|
}
|
|
|
|
public function getRegionalIPAddress()
|
|
{
|
|
$sql_get = "SELECT S_SystemIPAddressRegional
|
|
FROM one.conf_systems
|
|
WHERE S_SystemsIsActive = 'Y'";
|
|
|
|
$qry = $this->db->query($sql_get);
|
|
if(!$qry){
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("get ip regional failed", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$data = $qry->result_array();
|
|
return $data[0]['S_SystemIPAddressRegional'];
|
|
}
|
|
|
|
// 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_historyv2($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,
|
|
T_TestNat_TestID
|
|
from t_orderheader
|
|
join t_orderdetail
|
|
ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
|
join t_test
|
|
ON T_OrderDetailT_TestID = T_TestID
|
|
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_TestNat_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_historical_result_by_t_orderheader_idv2($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,
|
|
T_TestNat_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";
|
|
|
|
$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_historyv2($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'];
|
|
$natTestID = $r['T_TestNat_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($natTestID,array_keys($rows_history))){
|
|
$idx_detail = count($data[$curr_idx]['details']) - 1;
|
|
$data[$curr_idx]['details'][$idx_detail]['history'] = $rows_history[$natTestID];
|
|
}
|
|
$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,
|
|
));
|
|
}
|
|
}
|
|
|
|
// berdasarkan t_test
|
|
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_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'
|
|
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;
|
|
}
|
|
}
|
|
|
|
// berdasarkan nat_test
|
|
function get_result_by_t_orderheader_idv2($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,
|
|
T_TestNat_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_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'
|
|
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_historyv2($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'];
|
|
$natTestID = $r['T_TestNat_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($natTestID,array_keys($rows_history))){
|
|
$idx_detail = count($data[$curr_idx]['details']) - 1;
|
|
$data[$curr_idx]['details'][$idx_detail]['history'] = $rows_history[$natTestID];
|
|
}
|
|
$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);
|
|
|
|
// berdasarkan nat_test
|
|
$rows_result = $this->get_result_by_t_orderheader_idv2($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;
|
|
}
|
|
|
|
$result_nonlab = $this->nonlab_by_nolab($key['T_OrderHeaderID']);
|
|
// print_r($result_nonlab);
|
|
// exit;
|
|
$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'],
|
|
"result_nonlab" => $result_nonlab,
|
|
"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);
|
|
|
|
$getIPRegionalAddress = $this->getRegionalIPAddress();
|
|
$url = "http://$getIPRegionalAddress/one-api/app_doctor/Receiveruploadlog/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;
|
|
}
|
|
}
|
|
}
|
|
|
|
// fungsi dibawah ini adalah fungsi hasil non lab
|
|
function nonlab_by_nolab($T_OrderHeaderID, $debug = "")
|
|
{
|
|
|
|
$sql = "select T_OrderHeaderID,T_OrderHeaderM_PatientID,
|
|
T_OrderHeaderPjM_DoctorID, T_OrderHeaderSenderM_DoctorID,
|
|
T_OrderHeaderDate, T_OrderHeaderLabNumberExt,
|
|
min(concat(T_OrderSampleHandlingDate,' ', T_OrderSampleHandlingTime)) xtime ,
|
|
T_OrderHeaderAddOnReadyPrintDate,
|
|
max(T_OrderDetailValDate) valDate,
|
|
group_concat(distinct T_TestNat_GroupID) Nat_GroupID
|
|
, '' M_CompanyNatCode
|
|
from t_orderheader
|
|
join t_orderheaderaddon on T_OrderHeaderID = T_OrderHeaderAddOnT_OrderHeaderID
|
|
and T_OrderHeaderID = ?
|
|
join m_company on T_OrderHeaderM_CompanyID = M_CompanyID
|
|
join t_ordersample on T_OrderHeaderID = T_OrderSampleT_OrderheaderID and T_OrderSampleIsActive = 'Y'
|
|
join t_orderdetail on T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
|
|
and T_OrderDetailIsActive = 'Y'
|
|
join t_test on T_OrderDetailT_TestID = T_TestID
|
|
and T_TestNat_GroupID > 1
|
|
and T_OrderSampleHandlingDate is not null
|
|
group by T_OrderHeaderID";
|
|
if ($debug != "") {
|
|
$sql = "select T_OrderHeaderID,T_OrderHeaderM_PatientID,
|
|
T_OrderHeaderPjM_DoctorID, T_OrderHeaderSenderM_DoctorID,
|
|
T_OrderHeaderDate, T_OrderHeaderLabNumberExt,
|
|
min(concat(T_OrderSampleHandlingDate,' ', T_OrderSampleHandlingTime)) xtime ,
|
|
T_OrderHeaderAddOnReadyPrintDate,
|
|
max(T_OrderDetailValDate) valDate,
|
|
group_concat(distinct T_TestNat_GroupID) Nat_GroupID
|
|
, '' M_CompanyNatCode
|
|
from t_orderheader
|
|
join t_orderheaderaddon on T_OrderHeaderID = T_OrderHeaderAddOnT_OrderHeaderID
|
|
and T_OrderHeaderID = ?
|
|
join m_company on T_OrderHeaderM_CompanyID = M_CompanyID
|
|
join t_ordersample on T_OrderHeaderID = T_OrderSampleT_OrderheaderID and T_OrderSampleIsActive = 'Y'
|
|
join t_orderdetail on T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
|
|
and T_OrderDetailIsActive = 'Y'
|
|
join t_test on T_OrderDetailT_TestID = T_TestID
|
|
and T_TestNat_GroupID > 1
|
|
group by T_OrderHeaderID";
|
|
}
|
|
$qry = $this->db->query($sql, [$T_OrderHeaderID]);
|
|
if (!$qry) {
|
|
$this->reply_err(
|
|
$this->db->error()["message"] . "|" . $this->db->last_query()
|
|
);
|
|
}
|
|
$rows = $qry->result_array();
|
|
if (count($rows) == 0) {
|
|
// $this->reply_err("Nolab $T_OrderHeaderID not found.");
|
|
$newResult = [];
|
|
return $newResult;
|
|
}
|
|
$headerID = $rows[0]["T_OrderHeaderID"];
|
|
$labNoExt = $rows[0]["T_OrderHeaderLabNumberExt"];
|
|
$patientID = $rows[0]["T_OrderHeaderM_PatientID"];
|
|
//$companyNatCode = "--"; //$rows[0]["M_CompanyNatCode"];
|
|
$companyNatCode = $rows[0]["M_CompanyNatCode"];
|
|
$senderID = $rows[0]["T_OrderHeaderSenderM_DoctorID"];
|
|
$pjID = $rows[0]["T_OrderHeaderPjM_DoctorID"];
|
|
$readyPrintDate = $rows[0]["T_OrderHeaderAddOnReadyPrintDate"];
|
|
if ($readyPrintDate == "") {
|
|
$readyPrintDate = $rows[0]["valDate"];
|
|
}
|
|
//$this->is_uploaded("NON-LAB", $headerID);
|
|
list($xstat, $nik) = $this->get_nik($patientID);
|
|
if (!$xstat) {
|
|
$this->reply_err("Nolab $T_OrderHeaderID | " . $nik);
|
|
}
|
|
$arrGroup = explode(",", $rows[0]["Nat_GroupID"]);
|
|
$param = [
|
|
"headerID" => $headerID,
|
|
"T_OrderHeaderID" => $T_OrderHeaderID,
|
|
"companyNatCode" => $companyNatCode,
|
|
"labNoExt" => $labNoExt,
|
|
"patientID" => $patientID,
|
|
"senderID" => $senderID,
|
|
"nik" => $nik,
|
|
"pjID" => $pjID,
|
|
"observationDate" => date("YmdHis", strtotime($rows[0]["xtime"])),
|
|
"readyPrintDate" => date("YmdHis", strtotime($readyPrintDate)),
|
|
"orderDate" => date(
|
|
"YmdHis",
|
|
strtotime($rows[0]["T_OrderHeaderDate"])
|
|
),
|
|
];
|
|
$result = [];
|
|
foreach ($arrGroup as $groupID) {
|
|
// echo $groupID;
|
|
// echo "\n";
|
|
$result[] = [
|
|
"data" => $this->get_nonlab_result($param, $groupID, $debug),
|
|
"groupid" => $groupID
|
|
];
|
|
|
|
// print_r($result);
|
|
|
|
}
|
|
|
|
$newResult = [];
|
|
$prev_judul = "";
|
|
// print_r($result);
|
|
foreach($result as $r)
|
|
{
|
|
// print_r($r);
|
|
$grupid = $r['groupid'];
|
|
|
|
foreach($r['data'] as $rr){
|
|
$curr_judul = $rr['T_TestName'];
|
|
if($prev_judul !== $curr_judul){
|
|
$newResult[] = [
|
|
"judul" => $rr['judul'],
|
|
"T_TestName" => $rr['T_TestName'],
|
|
"detailsNonLab" => []
|
|
];
|
|
}
|
|
|
|
$curr_idx = count($newResult) - 1;
|
|
$newResult[$curr_idx]['detailsNonLab'][] = [
|
|
"grupid" => $grupid,
|
|
"judul" => $rr['judul'],
|
|
"T_TestName" => $rr['T_TestName'],
|
|
"So_TemplateDetailName" => $rr['So_TemplateDetailName'],
|
|
"So_ResultEntryDetailResult" => $rr['So_ResultEntryDetailResult']
|
|
];
|
|
|
|
$prev_judul = $curr_judul;
|
|
}
|
|
}
|
|
// print_r($newResult);
|
|
|
|
return $newResult;
|
|
}
|
|
|
|
function get_nik($patientID)
|
|
{
|
|
$sql = "select M_PatientIDNumber
|
|
from m_patient
|
|
where M_PatientM_IdTypeID = 1 and M_PatientID = ? ";
|
|
$qry = $this->db->query($sql, [$patientID]);
|
|
if (!$qry) {
|
|
return [false, "Error :" . $this->db->error()["message"]];
|
|
}
|
|
$rows = $qry->result_array();
|
|
if (count($rows) == 0) {
|
|
return [false, "Error : No NIK | " . $this->db->last_query()];
|
|
}
|
|
if (strlen(trim($rows[0]["M_PatientIDNumber"])) != 16) {
|
|
return [
|
|
false,
|
|
"Error: Invalid NIK " . $rows[0]["M_PatientIDNumber"],
|
|
];
|
|
}
|
|
return [true, $rows[0]["M_PatientIDNumber"]];
|
|
}
|
|
|
|
function get_nonlab_result($param, $groupID, $debug = "")
|
|
{
|
|
$sql = "select Nat_TestCode,Nat_TestName, So_ResultEntrySo_TemplateName,
|
|
So_ResultEntryID
|
|
from t_orderdetail
|
|
join t_test on T_OrderDetailT_OrderHeaderID=?
|
|
and T_OrderDetailT_TestID = T_TestID
|
|
and T_OrderDetailIsActive = 'Y'
|
|
join so_resultentry on T_OrderDetailID = So_ResultEntryT_OrderDetailID
|
|
and So_ResultEntryIsActive = 'Y'
|
|
join nat_test on Nat_TestID = T_TestNat_TestID
|
|
and Nat_TestIsResult = 'Y'
|
|
and Nat_TestNat_GroupID=?";
|
|
$qry = $this->db->query($sql, [$param["headerID"], $groupID]);
|
|
if (!$qry) {
|
|
$this->reply_err(
|
|
$this->db->error()["message"] . "|" . $this->db->last_query()
|
|
);
|
|
}
|
|
$rows = $qry->result_array();
|
|
if (count($rows) == 0) {
|
|
return [];
|
|
}
|
|
$result = [];
|
|
// if ($debug != "") {
|
|
// echo "groupID : $groupID\n";
|
|
// //print_r($rows);
|
|
// }
|
|
foreach ($rows as $r) {
|
|
// if ($groupID != 4) {
|
|
// $result[] = [
|
|
// "code" => $r["Nat_TestCode"],
|
|
// "name" => $r["Nat_TestName"],
|
|
// "groupID" => $groupID,
|
|
// "result" => "",
|
|
// "unit" => "",
|
|
// "range" => "",
|
|
// "flag" => "",
|
|
// ];
|
|
// $idx = count($result) - 1;
|
|
// }
|
|
if ($groupID == 2) {
|
|
if ($debug != "") {
|
|
echo $r["Nat_TestCode"] . "\n";
|
|
}
|
|
if (
|
|
substr($r["Nat_TestCode"], 0, 4) == "2012" || substr($r["Nat_TestCode"], 0, 4) == "2013" ||
|
|
(substr($r["Nat_TestCode"], 0, 4) == "2014")
|
|
|| (substr($r["Nat_TestCode"], 0, 4) == "2011")
|
|
) {
|
|
$sql = "call sp_rpt_t_hasil_so_elmd(?,1,'admin')";
|
|
$resp = $this->get_sp($sql, [$r["So_ResultEntryID"]]);
|
|
if ($resp["status"] == -1) {
|
|
$this->reply_err($resp["message"]);
|
|
}
|
|
if ($debug != "") {
|
|
echo "GRUP ID $groupID ResultEntryID : " . $r["So_ResultEntryID"] . "\n";
|
|
// print_r($resp['data']);
|
|
}
|
|
|
|
$result = array_merge($result, $resp['data']);
|
|
// print_r($result);
|
|
// $result[] = $resp['data'];
|
|
// print_r($result);
|
|
|
|
// if (
|
|
// count($resp["data"]) > 0
|
|
// ) {
|
|
// $result_as = "";
|
|
// $result_ad = "";
|
|
// // foreach ($resp["data"] as $ecg_d) {
|
|
// // if (trim($ecg_d["So_TemplateDetailName"]) == "Kesan" || trim($ecg_d["So_TemplateDetailName"]) == "Interpretasi") {
|
|
// // $result[$idx]["result"] = $ecg_d["So_ResultEntryDetailResult"];
|
|
// // $result[$idx]["templateName"] = $ecg_d["So_TemplateDetailName"];
|
|
// // }
|
|
// // if (trim($ecg_d["So_TemplateDetailName"]) == "AS") {
|
|
// // $result_as = $ecg_d["So_ResultEntryDetailResult"];
|
|
// // }
|
|
// // if (trim($ecg_d["So_TemplateDetailName"]) == "AD") {
|
|
// // $result_ad = $ecg_d["So_ResultEntryDetailResult"];
|
|
// // }
|
|
// // }
|
|
// // if ($debug != "") {
|
|
// // echo "AS : $result_as | AD : $result_ad \n";
|
|
// // }
|
|
// // if ($result_as != "") {
|
|
// // $result[] = [
|
|
// // "code" => $r["Nat_TestCode"] . "-AS",
|
|
// // "name" => $r["Nat_TestName"],
|
|
// // "templateName" => $ecg_d["So_TemplateDetailName"],
|
|
// // "groupID" => $groupID,
|
|
// // "result" => $result_as,
|
|
// // "unit" => "",
|
|
// // "range" => "",
|
|
// // "flag" => "",
|
|
// // ];
|
|
// // $idx = count($result) - 1;
|
|
// // }
|
|
// // if ($result_ad != "") {
|
|
// // $result[] = [
|
|
// // "code" => $r["Nat_TestCode"] . "-AD",
|
|
// // "name" => $r["Nat_TestName"],
|
|
// // "templateName" => $ecg_d["So_TemplateDetailName"],
|
|
// // "groupID" => $groupID,
|
|
// // "result" => $result_ad,
|
|
// // "unit" => "",
|
|
// // "range" => "",
|
|
// // "flag" => "",
|
|
// // ];
|
|
// // $idx = count($result) - 1;
|
|
// // }
|
|
// }
|
|
}
|
|
}
|
|
|
|
if ($groupID == 3) {
|
|
//thorax
|
|
// echo $r["Nat_TestCode"];
|
|
if (
|
|
substr($r["Nat_TestCode"], 0, 4) == "3015" ||
|
|
substr($r["Nat_TestCode"], 0, 4) == "3021" ||
|
|
substr($r["Nat_TestCode"], 0, 4) == "3012"
|
|
) {
|
|
// $sql = "call sp_rpt_t_hasil_so_xray(?,1,'admin')";
|
|
$sql = "call sp_rpt_t_hasil_so_xray_meshbio(?,?,1,'admin')";
|
|
$resp = $this->get_sp($sql, [$param["headerID"], $r["So_ResultEntryID"]]);
|
|
if ($resp["status"] == -1) {
|
|
$this->reply_err($resp["message"]);
|
|
}
|
|
// $xray_result = "";
|
|
// foreach ($resp["data"] as $d) {
|
|
// if ($d["So_TemplateDetailName"] != "Kesan") continue;
|
|
// $xray_result .=
|
|
// $d["So_TemplateDetailName"] .
|
|
// " : " .
|
|
// str_ireplace(
|
|
// "\n",
|
|
// "~",
|
|
// trim($d["So_ResultEntryDetailResult"])
|
|
// ) .
|
|
// " ";
|
|
// }
|
|
// $result[$idx]["result"] = $xray_result;
|
|
|
|
// $result = $resp['data'];
|
|
$result = array_merge($result, $resp['data']);
|
|
} elseif (substr($r["Nat_TestCode"], 0, 4) == "3061") {
|
|
$sql = "call sp_rpt_t_hasil_so_usg(?,1,'admin')";
|
|
$resp = $this->get_sp($sql, [$r["So_ResultEntryID"]]);
|
|
if ($resp["status"] == -1) {
|
|
$this->reply_err($resp["message"]);
|
|
}
|
|
$xray_result = "";
|
|
// foreach ($resp["data"] as $d) {
|
|
// if ($d["So_TemplateDetailName"] != "Kesan") continue;
|
|
// $xray_result .=
|
|
// $d["So_TemplateDetailName"] .
|
|
// " : " .
|
|
// str_ireplace(
|
|
// "\n",
|
|
// "~",
|
|
// trim($d["So_ResultEntryDetailResult"])
|
|
// ) .
|
|
// " ";
|
|
// }
|
|
// $result[$idx]["result"] = $xray_result;
|
|
// $result = $resp['data'];
|
|
$result = array_merge($result, $resp['data']);
|
|
} else {
|
|
}
|
|
}
|
|
|
|
|
|
if ($groupID == 4 && $r["Nat_TestCode"] == "40210100") {
|
|
//Harvard
|
|
if (true || tdebug != "") {
|
|
$sql = "call sp_rpt_t_hasil_so_layanan(?, '1', 'admin')";
|
|
$resp = $this->get_sp($sql, [$r["So_ResultEntryID"]]);
|
|
if ($resp["status"] == -1) {
|
|
$this->reply_err($resp["message"]);
|
|
}
|
|
$hardvard_result = "";
|
|
// foreach ($resp["data"] as $d) {
|
|
// if (trim($d["So_TemplateDetailName"]) == "VO2 Max") {
|
|
// $hardvard_code = "-0A";
|
|
// } else {
|
|
// $hardvard_code = "-0B";
|
|
// }
|
|
// $hardvard_result =
|
|
// $d["So_TemplateDetailName"] .
|
|
// " : " .
|
|
// str_ireplace(
|
|
// "\n",
|
|
// "~",
|
|
// trim($d["So_ResultEntryDetailResult"])
|
|
// );
|
|
// $result[] = [
|
|
// "code" => $r["Nat_TestCode"] . $hardvard_code,
|
|
// "name" => $r["Nat_TestName"],
|
|
// "groupID" => $groupID,
|
|
// "templateName" => $d["So_TemplateDetailName"],
|
|
// "result" => $hardvard_result,
|
|
// "unit" => "",
|
|
// "range" => "",
|
|
// "flag" => "",
|
|
// ];
|
|
// }
|
|
// $result = $resp['data'];
|
|
$result = array_merge($result, $resp['data']);
|
|
} else {
|
|
// $result[] = [
|
|
// "code" => $r["Nat_TestCode"],
|
|
// "name" => $r["Nat_TestName"],
|
|
// "groupID" => $groupID,
|
|
// "templateName" => $d["So_TemplateDetailName"],
|
|
// "result" => "",
|
|
// "unit" => "",
|
|
// "range" => "",
|
|
// "flag" => "",
|
|
// ];
|
|
// $idx = count($result) - 1;
|
|
|
|
// $sql = "call sp_rpt_t_hasil_so_layanan(?, '1', 'admin')";
|
|
// $resp = $this->get_sp($sql, [$r["So_ResultEntryID"]]);
|
|
// if ($resp["status"] == -1) {
|
|
// $this->reply_err($resp["message"]);
|
|
// }
|
|
// $hardvard_result = "";
|
|
// foreach ($resp["data"] as $d) {
|
|
// $hardvard_result .=
|
|
// $d["So_TemplateDetailName"] .
|
|
// " : " .
|
|
// str_ireplace(
|
|
// "\n",
|
|
// "~",
|
|
// trim($d["So_ResultEntryDetailResult"])
|
|
// ) .
|
|
// " ";
|
|
// }
|
|
// $result[$idx]["result"] = $hardvard_result;
|
|
// $result = $resp['data'];
|
|
$result = array_merge($result, $resp['data']);
|
|
}
|
|
} else if ($groupID == 4) {
|
|
$arr_fisik_result = $this->get_fisik_result(
|
|
$rows[0]["So_ResultEntryID"],
|
|
$debug
|
|
);
|
|
if ($debug != "") {
|
|
print_r($arr_fisik_result);
|
|
}
|
|
// foreach ($arr_fisik_result as $fr) {
|
|
// $fr_code = $fr["code"];
|
|
|
|
// if (in_array($fr_code, ["0601", "0600"])) {
|
|
// if (strpos($fr["result"], "-OD") !== false) {
|
|
// $fr_code = $fr_code . "-OD";
|
|
// }
|
|
// if (strpos($fr["result"], "-OS") !== false) {
|
|
// $fr_code = $fr_code . "-OS";
|
|
// }
|
|
// }
|
|
// $fr_parent = $fr["parent"];
|
|
// if ($fr_parent == "visus" && strtolower($fr["name"]) == "tidak diperiksa") {
|
|
// $fr_code = "0602";
|
|
// $result[] = [
|
|
// "code" => $r["Nat_TestCode"] . "-" . $fr_code . "-OD",
|
|
// "name" => $r["Nat_TestName"],
|
|
// "sub_name" => "Visus",
|
|
// "groupID" => $groupID,
|
|
// "templateName" => $fr["So_TemplateDetailName"],
|
|
// "result" => "Tidak diperiksa",
|
|
// "unit" => "",
|
|
// "range" => "",
|
|
// "flag" => "",
|
|
// ];
|
|
// $result[] = [
|
|
// "code" => $r["Nat_TestCode"] . "-" . $fr_code . "-OS",
|
|
// "name" => $r["Nat_TestName"],
|
|
// "sub_name" => "Visus",
|
|
// "groupID" => $groupID,
|
|
// "templateName" => $fr["So_TemplateDetailName"],
|
|
// "result" => "Tidak diperiksa",
|
|
// "unit" => "",
|
|
// "range" => "",
|
|
// "flag" => "",
|
|
// ];
|
|
// } else if ($fr_code == "0203") { // BMI
|
|
// $result[] = [
|
|
// "code" => $r["Nat_TestCode"] . "-" . $fr_code,
|
|
// "name" => $r["Nat_TestName"],
|
|
// "sub_name" => $fr["name"],
|
|
// "groupID" => $groupID,
|
|
// "templateName" => $fr["So_TemplateDetailName"],
|
|
// "result" => trim($fr["result"]),
|
|
// "unit" => "kg/m2",
|
|
// "range" => "",
|
|
// "flag" => "",
|
|
// ];
|
|
// } else {
|
|
// $result[] = [
|
|
// "code" => $r["Nat_TestCode"] . "-" . $fr_code,
|
|
// "name" => $r["Nat_TestName"],
|
|
// "sub_name" => $fr["name"],
|
|
// "groupID" => $groupID,
|
|
// "templateName" => $fr["So_TemplateDetailName"],
|
|
// "result" => $fr["result"],
|
|
// "unit" => "",
|
|
// "range" => "",
|
|
// "flag" => "",
|
|
// ];
|
|
// }
|
|
// }
|
|
// $result = $arr_fisik_result;
|
|
$result = array_merge($result, $arr_fisik_result);
|
|
}
|
|
$sql = "call sp_rpt_result_category_value(?,'admin')";
|
|
$resp = $this->get_sp($sql, [$r["So_ResultEntryID"]]);
|
|
if ($resp["status"] == -1) {
|
|
$this->reply_err($resp["message"]);
|
|
}
|
|
// if (count($resp["data"]) > 0) {
|
|
// $xcat = "";
|
|
// if ($debug != "") {
|
|
// // print_r($resp);
|
|
// }
|
|
// foreach ($resp["data"] as $xc) {
|
|
// if ($xcat != "") $xcat .= ",";
|
|
// $xcat .= $xc["Mcu_StatusResultValueName"];
|
|
// }
|
|
// $r_kes = [
|
|
// "code" => $r["Nat_TestCode"] . "-cat",
|
|
// "name" => $r["Nat_TestName"],
|
|
// "groupID" => $groupID,
|
|
// "result" => $xcat,
|
|
// "unit" => "",
|
|
// "range" => "",
|
|
// "flag" => "",
|
|
// ];
|
|
// $result[] = $r_kes;
|
|
// }
|
|
// $result = $resp['data'];
|
|
}
|
|
|
|
|
|
// // $split_result_code = [
|
|
// // "0100", "0101", "0102", "0103", "0104", "0105",
|
|
// // "0200", "0201", "0202", "0203", "0204", "0205"
|
|
// // ];
|
|
// foreach ($result as $xidx => $xr) {
|
|
// $tmp_code = trim($xr["code"]);
|
|
// $arr_tmp = explode("-", $tmp_code);
|
|
// $fr_code = "x123x123";
|
|
// if (count($arr_tmp) > 1) {
|
|
// $fr_code = $arr_tmp[1];
|
|
// }
|
|
// if (in_array($fr_code, $split_result_code)) {
|
|
// $tmp_result = trim($xr["result"]);
|
|
// $tmp_arr = preg_split('/\s+/', $tmp_result);
|
|
// if ($debug != "") {
|
|
// echo "$fr_code : $tmp_result => $tmp_arr[0] | $tmp_arr[1] \n\n";
|
|
// }
|
|
// if (count($tmp_arr) > 1) {
|
|
// $result[$xidx]["result"] = trim($tmp_arr[0]);
|
|
// $result[$xidx]["unit"] = trim($tmp_arr[1]);
|
|
// }
|
|
// }
|
|
// $result_org = $result[$xidx]["result"];
|
|
// if (strpos($result_org, "\n") > 0) {
|
|
// $result[$xidx]["result"] = str_ireplace("\n", "~", $result_org);
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
return $result;
|
|
// print_r($result);
|
|
}
|
|
|
|
function nonlab($param, $lang = "id")
|
|
{
|
|
list($branchID, $branchCode) = $this->get_branch();
|
|
$msh = $this->msh($branchCode, $param["orderHeaderID"]);
|
|
list($senderCode, $senderName) = $this->get_doctor_name(
|
|
$param["senderID"]
|
|
);
|
|
list($pjCode, $pjName) = $this->get_doctor_name($param["pjID"]);
|
|
list($noreg, $name, $dob, $sex) = $this->get_patient(
|
|
$param["patientID"]
|
|
);
|
|
//patientID patientName dob sex
|
|
$pid = $this->pid(
|
|
$param["nik"],
|
|
$name,
|
|
$dob,
|
|
$sex,
|
|
$param["companyNatCode"]
|
|
);
|
|
//assignPatientLocation = "LAB" drPj drSender
|
|
$drPj = substr("$pjCode^$pjName", 0, 60);
|
|
$drSender = substr("$senderCode^$senderName", 0, 60);
|
|
$pv1 = $this->pv1($branchID, $drPj, $drSender, $param["labNoExt"]);
|
|
|
|
$orderDateTime = $param["orderDate"];
|
|
$resultDatetime = $param["readyPrintDate"];
|
|
$observationDateTime = $param["observationDate"];
|
|
//noLab orderdatetime resultDatetime drSender
|
|
$orc = $this->orc(
|
|
$param["labNoExt"],
|
|
$orderDateTime,
|
|
$resultDatetime,
|
|
$drSender
|
|
);
|
|
//nolab observationDateTime resultDateTime
|
|
$obr = $this->obr(
|
|
$param["labNoExt"],
|
|
$observationDateTime,
|
|
$resultDatetime
|
|
);
|
|
// arry of code name isQuantitative result unit range flag
|
|
$obx = "";
|
|
$obx_start_counter = 1;
|
|
foreach ($param["result"] as $r) {
|
|
if ($obx != "") {
|
|
$obx .= $this->cr;
|
|
}
|
|
foreach ($r as $idx => $rr) {
|
|
$r[$idx]["result"] = $lang . "^" . $rr["result"];
|
|
}
|
|
$obx .= $this->obx($r, $obx_start_counter);
|
|
}
|
|
$message =
|
|
$this->startVt .
|
|
$msh .
|
|
$this->cr .
|
|
$pid .
|
|
$this->cr .
|
|
$pv1 .
|
|
$this->cr .
|
|
$orc .
|
|
$this->cr .
|
|
$obr .
|
|
$this->cr .
|
|
$obx .
|
|
$this->cr .
|
|
$this->stopFs;
|
|
|
|
return $message;
|
|
}
|
|
|
|
function get_sp($sql, $param = false)
|
|
{
|
|
$resp = $this->get_rows($sql, $param);
|
|
// echo $this->db->last_query();
|
|
$this->clean_mysqli_connection($this->db->conn_id);
|
|
return $resp;
|
|
}
|
|
|
|
function get_rows($sql, $param = false)
|
|
{
|
|
if ($param) {
|
|
$qry = $this->db->query($sql, $param);
|
|
} else {
|
|
$qry = $this->db->query($sql);
|
|
}
|
|
if (!$qry) {
|
|
return [
|
|
"status" => -1,
|
|
"message" =>
|
|
$this->db->last_query() .
|
|
"|" .
|
|
$this->db->error()["message"],
|
|
];
|
|
}
|
|
return ["status" => 0, "data" => $qry->result_array()];
|
|
}
|
|
|
|
function get_fisik_result($resultEntryID, $debug = "")
|
|
{
|
|
//Ambil kesimpulan saja
|
|
$arr_sub_url = [
|
|
// "pribadi",
|
|
// "keluhan_saat_ini_new",
|
|
// "riwayat_phobia",
|
|
// "riwayat_obat",
|
|
// "riwayat_penyakit",
|
|
// "riwayat_hidup",
|
|
// "riwayat_keluarga",
|
|
"tanda_vital",
|
|
"status_gizi",
|
|
"keadaan_umum",
|
|
"mulut",
|
|
"gigi",
|
|
"visus",
|
|
"kepala_wajah",
|
|
"mata",
|
|
"telinga",
|
|
"thorax",
|
|
"paru",
|
|
"jantung",
|
|
"integumen",
|
|
"sistem",
|
|
"anggota",
|
|
"genitourinaria",
|
|
"perut",
|
|
"leher",
|
|
"hidung",
|
|
"persepsi_warna",
|
|
];
|
|
$code_result = [];
|
|
foreach ($arr_sub_url as $sub_url) {
|
|
$result = $this->get_fisik($sub_url, $resultEntryID, "fisik");
|
|
switch ($sub_url) {
|
|
case "tanda_vital":
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
$rr["aa1"]
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => $rr["aa1"],
|
|
"result" => $rr["aa2"] . " " . $rr["aa3"],
|
|
];
|
|
}
|
|
break;
|
|
case "status_gizi":
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
$rr["qq1"]
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => $rr["qq1"],
|
|
"result" => $rr["qq2"] . " " . $rr["qq3"],
|
|
];
|
|
}
|
|
break;
|
|
case "keadaan_umum":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
$rr["rr1"]
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => $rr["rr1"],
|
|
"result" => $rr["rr2"] . " " . $rr["rr3"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
break;
|
|
case "mulut":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
$rr["hh1"]
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => $rr["hh1"],
|
|
"result" => $rr["hh2"] . " " . $rr["hh3"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
|
|
break;
|
|
case "gigi": // tidak ada
|
|
if ($debug != "") {
|
|
echo "GIGI: $sub_url | $resultEntryID \n";
|
|
print_r($result);
|
|
}
|
|
if (true || $debug != "") {
|
|
$is_normal = false;
|
|
foreach ($result as $rr) {
|
|
if (isset($rr["header"]) && $rr["header"] == "N") {
|
|
$is_normal = true;
|
|
}
|
|
if (isset($rr["gg3"]) && $rr["gg3"] != "") {
|
|
$is_normal = false;
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
$this->gigi_code($rr["gg3"])
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => "Gigi",
|
|
"result" => $this->gigi_code($rr["gg3"]) . ": " . $rr["gg1"],
|
|
];
|
|
}
|
|
// print_r($rr);
|
|
// echo "$nonlab_code \n";
|
|
// print_r($code_result);
|
|
}
|
|
if ($is_normal) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
"Normal"
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => "Gigi",
|
|
"result" => "Normal",
|
|
];
|
|
}
|
|
//print_r($result);
|
|
}
|
|
break;
|
|
case "visus":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
$rr["xx1"]
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => $rr["xx1"],
|
|
"result" => $rr["xx2"] . " " . $rr["xx3"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
break;
|
|
case "kepala_wajah":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
"kepala_wajah"
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => "kepala_wajah",
|
|
"result" => $rr["bb1"] . " " . $rr["bb2"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
break;
|
|
case "mata":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
"mata"
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => "mata",
|
|
"result" => $rr["cc1"] . " " . $rr["cc2"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
break;
|
|
case "telinga":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
"telinga"
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => "telinga",
|
|
"result" => $rr["ee1"] . " " . $rr["ee2"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
break;
|
|
case "thorax":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
"thorax"
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => "thorax",
|
|
"result" => $rr["jj1"] . " " . $rr["jj2"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
break;
|
|
case "paru":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
"paru"
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => "paru",
|
|
"result" => $rr["kk1"] . " " . $rr["kk2"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
break;
|
|
case "jantung":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
$rr["ll1"]
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => $rr["ll1"],
|
|
"result" => $rr["ll2"] . " " . $rr["ll3"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
break;
|
|
case "integumen":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
$rr["pp1"]
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => $rr["pp1"],
|
|
"result" => $rr["pp2"] . " " . $rr["pp3"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
break;
|
|
case "sistem":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
$rr["pp1"]
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => $rr["pp1"],
|
|
"result" => $rr["pp2"] . " " . $rr["pp3"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
break;
|
|
case "anggota":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
$rr["oo1"]
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => $rr["oo1"],
|
|
"result" => $rr["oo2"] . " " . $rr["oo3"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
break;
|
|
case "genitourinaria":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
"genitourinaria"
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => "genitourinaria",
|
|
"result" => $rr["nn1"] . " " . $rr["nn2"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
break;
|
|
case "perut":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
$rr["mm1"]
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => $rr["mm1"],
|
|
"result" => $rr["mm2"] . " " . $rr["mm3"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
break;
|
|
case "leher":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
"leher"
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => "leher",
|
|
"result" => $rr["ii1"] . " " . $rr["ii2"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
break;
|
|
case "hidung":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
"hidung"
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => "hidung",
|
|
"result" => $rr["ff1"] . " " . $rr["ff2"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
break;
|
|
case "persepsi_warna":
|
|
$sub_code = 0;
|
|
foreach ($result as $rr) {
|
|
$nonlab_code = $this->meshbio_nonlab_code(
|
|
$sub_url,
|
|
"persepsi_warna"
|
|
);
|
|
$code_result[] = [
|
|
"parent" => $sub_url,
|
|
"code" => $nonlab_code,
|
|
"name" => "persepsi_warna",
|
|
"result" => $rr["dd1"] . " " . $rr["dd2"],
|
|
];
|
|
$sub_code++;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
return $code_result;
|
|
}
|
|
|
|
function meshbio_nonlab_code($parent, $name)
|
|
{
|
|
$map = [
|
|
"TANDA_VITAL^DENYUT NADI" => "0100",
|
|
"TANDA_VITAL^RITME DENYUT NADI" => "0101",
|
|
"TANDA_VITAL^LAJU PERNAFASAN" => "0102",
|
|
"TANDA_VITAL^POLA NAFAS" => "0103",
|
|
"TANDA_VITAL^TEKANAN DARAH" => "0104",
|
|
"TANDA_VITAL^SUHU" => "0105",
|
|
"STATUS_GIZI^BERAT BADAN" => "0200",
|
|
"STATUS_GIZI^TINGGI BADAN" => "0201",
|
|
"STATUS_GIZI^LINGKAR PERUT" => "0202",
|
|
"STATUS_GIZI^BMI" => "0203",
|
|
"STATUS_GIZI^LINGKAR PINGGANG / PANGGUL" => "0204",
|
|
"STATUS_GIZI^KLASIFIKASI" => "0205",
|
|
"KEADAAN_UMUM^KESADARAN" => "0300",
|
|
"KEADAAN_UMUM^SIKAP & TINGKAH LAKU" => "0301",
|
|
"KEADAAN_UMUM^KONTAK PSIKIS / PERHATIAN" => "0302",
|
|
"MULUT^MUKOSA RONGGA MULUT" => "0400",
|
|
"MULUT^TENGGOROKAN" => "0401",
|
|
"VISUS^TANPA KACAMATA" => "0600",
|
|
"VISUS^DENGAN KACAMATA" => "0601",
|
|
"KEPALA_WAJAH^KEPALA_WAJAH" => "0700",
|
|
"MATA^MATA" => "0800",
|
|
"TELINGA^TELINGA" => "0900",
|
|
"THORAX^THORAX" => "1000",
|
|
"PARU^PARU" => "1100",
|
|
"JANTUNG^JVP" => "1200",
|
|
"JANTUNG^APEX" => "1201",
|
|
"JANTUNG^SUARA JANTUNG" => "1202",
|
|
"JANTUNG^BISING JANTUNG / MURMUR" => "1203",
|
|
"INTEGUMEN^KULIT" => "1300",
|
|
"INTEGUMEN^KUKU" => "1301",
|
|
"INTEGUMEN^RAMBUT" => "1302",
|
|
"SISTEM^REFLEKS FISIOLOGIS" => "1400",
|
|
"SISTEM^REFLEKS PATHOLOGIS" => "1401",
|
|
"SISTEM^KESEIMBANGAN & KOORDINASI" => "1402",
|
|
"SISTEM^REFLEKS NEUROLOGIS LAINNYA" => "1403",
|
|
"ANGGOTA^EKSTRIMITAS ATAS" => "1500",
|
|
"ANGGOTA^EKSTRIMITAS BAWAH" => "1501",
|
|
"ANGGOTA^TONUS / OTOT" => "1502",
|
|
"GENITOURINARIA^GENITOURINARIA" => "1600",
|
|
"PERUT^ABDOMEN" => "1700",
|
|
"PERUT^BISING USUS" => "1701",
|
|
"PERUT^HATI" => "1702",
|
|
"PERUT^LIMPA" => "1703",
|
|
"PERUT^HERNIA" => "1704",
|
|
"PERUT^HEMORROID" => "1705",
|
|
"LEHER^LEHER" => "1800",
|
|
"HIDUNG^HIDUNG" => "1900",
|
|
"PERSEPSI_WARNA^PERSEPSI_WARNA" => "2000",
|
|
"GIGI^TAMBALAN" => "3000",
|
|
"GIGI^BERLUBANG" => "3001",
|
|
"GIGI^TANGGAL" => "3002",
|
|
"GIGI^SISA AKAR" => "3003",
|
|
"GIGI^GIGI PALSU" => "3004",
|
|
"GIGI^KARANG GIGI" => "3005",
|
|
"GIGI^BERLUBANG" => "3006",
|
|
"GIGI^NORMAL" => "3007",
|
|
];
|
|
|
|
$idx = strtoupper($parent . "^" . $name);
|
|
if (in_array($idx, array_keys($map))) {
|
|
return $map[$idx];
|
|
}
|
|
return "XXXX";
|
|
}
|
|
|
|
function get($url, $timeout = 60, $c_timeout = 5)
|
|
{
|
|
$ch = curl_init($url);
|
|
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $c_timeout);
|
|
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
$result = curl_exec($ch);
|
|
$err_msg = curl_error($ch);
|
|
if ($err_msg != "") {
|
|
return json_encode(["status" => "ERR", "message" => $err_msg]);
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
function reply_err($message)
|
|
{
|
|
echo json_encode(["status" => "ERR", "data" => $message]);
|
|
exit();
|
|
}
|
|
}
|