1757 lines
83 KiB
PHP
1757 lines
83 KiB
PHP
<?php
|
|
class Additional extends MY_Controller
|
|
{
|
|
var $db_onedev;
|
|
var $load;
|
|
var $kesimpulanfisik;
|
|
|
|
public function index()
|
|
{
|
|
echo "CPONE ADDITIONAL API";
|
|
}
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->db_onedev = $this->load->database("onedev", true);
|
|
// $this->load->library("SsPriceMou");
|
|
}
|
|
public function getsetup()
|
|
{
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
$sql = "SELECT * FROM mgm_mcu WHERE Mgm_McuIsActive = 'Y'";
|
|
$qry = $this->db_onedev->query($sql, []);
|
|
$last_qry = $this->db_onedev->last_query();
|
|
if (!$qry) {
|
|
$message = $this->db_onedev->error();
|
|
$message['last_qry'] = $last_qry;
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$data = $qry->result_array();
|
|
$result = [
|
|
"records" => $data,
|
|
];
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function search()
|
|
{
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
$search = '%' . $prm['search'] . '%';
|
|
$page = $prm["page"];
|
|
$startDate = $prm["startDate"];
|
|
$endDate = $prm["endDate"];
|
|
$setupID = $prm["setupID"];
|
|
$ROW_PER_PAGE = 20;
|
|
$start_offset = 0;
|
|
// print_r($prm);
|
|
|
|
if (isset($prm["page"])) {
|
|
if (
|
|
is_numeric($prm["page"]) && $prm["page"] > 0
|
|
) {
|
|
$start_offset = ($page - 1) * $ROW_PER_PAGE;
|
|
}
|
|
}
|
|
$sql = "SELECT
|
|
COUNT(T_OrderHeaderID) AS total
|
|
FROM t_orderheader
|
|
JOIN m_patient
|
|
ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN corporate
|
|
ON T_OrderHeaderCorporateID = CorporateID
|
|
JOIN m_branch ON T_OrderHeaderM_BranchID = M_BranchID
|
|
LEFT JOIN m_title
|
|
ON M_PatientM_TitleID = M_TitleID
|
|
WHERE (DATE_FORMAT(T_OrderHeaderDate, '%Y-%m-%d') BETWEEN ? AND ?)
|
|
AND (M_PatientName LIKE ? OR T_OrderHeaderLabNumber LIKE ?)
|
|
AND T_OrderHeaderMgm_McuID = ?
|
|
ORDER BY T_OrderHeaderLabNumber
|
|
";
|
|
$query = $this->db_onedev->query($sql, [$startDate, $endDate, $search, $search, $setupID]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$totalPage = $query->row_array()['total'];
|
|
$sql = "SELECT
|
|
T_OrderHeaderID AS orderID,
|
|
IFNULL(Mcu_ResumeStatus, 'NEW') as status,
|
|
T_OrderHeaderM_BranchID AS branchID,
|
|
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS orderDate,
|
|
T_OrderHeaderLabNumber AS labNumber,
|
|
T_OrderHeaderM_PatientID AS patientID,
|
|
T_OrderHeaderCorporateID AS corporateID,
|
|
T_OrderHeaderMgm_McuID AS setupID,
|
|
UPPER(T_OrderHeaderM_PatientAge) AS patientAge,
|
|
M_PatientNoReg AS patientReg,
|
|
M_PatientName AS patientName,
|
|
UPPER(CONCAT(IF(ISNULL(M_TitleName),'',CONCAT(M_TitleName,'.')),
|
|
' ',
|
|
IFNULL(M_PatientPrefix,''),
|
|
' ',
|
|
M_PatientName,
|
|
' ',
|
|
IFNULL(M_PatientSuffix,''))) AS patientFullname,
|
|
CASE
|
|
WHEN LOWER(M_PatientGender) = 'male' THEN 'LAKI-LAKI'
|
|
WHEN LOWER(M_PatientGender) = 'female' THEN 'PEREMPUAN'
|
|
END patientGender,
|
|
M_PatientPhoto AS patientFoto,
|
|
M_PatientPhotoThumb AS patientFotoThumb,
|
|
CorporateCode AS corporateCode,
|
|
UPPER(CorporateName) AS corporateName,
|
|
M_BranchCode AS branchID,
|
|
M_BranchName AS branchName,
|
|
IFNULL(T_SamplingAdditionalFisikBBTBID,0) T_SamplingAdditionalFisikBBTBID,
|
|
T_SamplingAdditionalFisikBBTBValueBB,
|
|
T_SamplingAdditionalFisikBBTBValueTB,
|
|
T_SamplingAdditionalFisikBBTBValueClassification,
|
|
IFNULL(T_SamplingAdditionalFisikBBTBStandart,'asia_pacific') T_SamplingAdditionalFisikBBTBStandart,
|
|
T_SamplingAdditionalFisikBBTBBodyFat,
|
|
IFNULL(T_SamplingAdditionalFisikBWID,0) T_SamplingAdditionalFisikBWID,
|
|
T_SamplingAdditionalFisikBWPWValue,
|
|
T_SamplingAdditionalFisikBWPWVAngka,
|
|
T_SamplingAdditionalFisikBWPWKeterangan,
|
|
IFNULL(T_SamplingAdditionalFisikVisusID,0) T_SamplingAdditionalFisikVisusID,
|
|
T_SamplingAdditionalFisikVisusTKODV,
|
|
T_SamplingAdditionalFisikVisusTKOSV,
|
|
T_SamplingAdditionalFisikVisusDKODV,
|
|
T_SamplingAdditionalFisikVisusDKOSV,
|
|
T_SamplingAdditionalFisikVisusODSPH,
|
|
T_SamplingAdditionalFisikVisusODCYL,
|
|
T_SamplingAdditionalFisikVisusODX,
|
|
T_SamplingAdditionalFisikVisusOSSPH,
|
|
T_SamplingAdditionalFisikVisusOSCYL,
|
|
T_SamplingAdditionalFisikVisusOSX,
|
|
T_SamplingAdditionalFisikVisusADD,
|
|
T_SamplingAdditionalFisikVisusKananKesimpulan,
|
|
T_SamplingAdditionalFisikVisusKiriKesimpulan,
|
|
T_OrderHeaderIsActive as isactive,
|
|
'' as glucoses
|
|
FROM t_orderheader
|
|
JOIN m_patient
|
|
ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN corporate
|
|
ON T_OrderHeaderCorporateID = CorporateID
|
|
JOIN m_branch ON T_OrderHeaderM_BranchID = M_BranchID
|
|
LEFT JOIN m_title
|
|
ON M_PatientM_TitleID = M_TitleID
|
|
LEFT JOIN mcu_resume
|
|
ON T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
|
|
AND Mcu_ResumeIsActive = 'Y'
|
|
LEFT JOIN t_samplingso_additional_fisik_bbtb ON T_SamplingAdditionalFisikBBTBT_OrderHeaderID = T_OrderHeaderID AND T_SamplingAdditionalFisikBBTBIsActive = 'Y'
|
|
LEFT JOIN t_samplingso_additional_fisik_bw ON T_SamplingAdditionalFisikBWT_OrderHeaderID = T_OrderHeaderID AND T_SamplingAdditionalFisikBWIsActive = 'Y'
|
|
LEFT JOIN t_samplingso_additional_fisik_visus ON T_SamplingAdditionalFisikVisusT_OrderHeaderID = T_OrderHeaderID AND
|
|
T_SamplingAdditionalFisikVisusIsActive = 'Y'
|
|
|
|
WHERE (DATE_FORMAT(T_OrderHeaderDate, '%Y-%m-%d') BETWEEN ? AND ?)
|
|
AND (M_PatientName LIKE ? OR T_OrderHeaderLabNumber LIKE ?)
|
|
AND T_OrderHeaderMgm_McuID = ?
|
|
GROUP BY T_OrderHeaderID
|
|
ORDER BY T_OrderHeaderLabNumber
|
|
LIMIT ? OFFSET ? ";
|
|
$query = $this->db_onedev->query($sql, [$startDate, $endDate, $search, $search, $setupID, $ROW_PER_PAGE, $start_offset]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
// echo $this->db_onedev->last_query();
|
|
$rows = $query->result_array();
|
|
if(count($rows) > 0){
|
|
foreach($rows as $key => $row){
|
|
$row['glucoses'] = null;
|
|
$sql = "SELECT GROUP_CONCAT( DISTINCT CONCAT(IFNULL(OrderGlucoseID,0),'^',Nat_TestID,'^',Nat_TestName,'^',IFNULL(OrderGlucoseResult,'')) SEPARATOR '*') as glucoses
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID
|
|
JOIN nat_testglucose ON Nat_TestGlucoseNat_TestID = T_TestNat_TestID
|
|
LEFT JOIN order_glucose ON OrderGlucoseT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND OrderGlucoseNat_TestID = Nat_TestID AND OrderGlucoseIsActive = 'Y'
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
GROUP BY T_OrderDetailT_OrderHeaderID";
|
|
$query = $this->db_onedev->query($sql, [$row['orderID']]);
|
|
//echo $this->db_onedev->last_query();
|
|
if($query){
|
|
$rst_glucose = $query->row_array();
|
|
$row['glucoses'] = $rst_glucose['glucoses'];
|
|
}
|
|
$rows[$key] = $row;
|
|
|
|
}
|
|
}
|
|
$result = [
|
|
"total" => ceil($totalPage / $ROW_PER_PAGE),
|
|
"records" => $rows
|
|
];
|
|
$this->sys_ok($result);
|
|
|
|
}
|
|
|
|
function searchxxx()
|
|
{
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
$search = '%' . $prm['search'] . '%';
|
|
$page = $prm["page"];
|
|
$startDate = $prm["startDate"];
|
|
$endDate = $prm["endDate"];
|
|
$setupID = $prm["setupID"];
|
|
$ROW_PER_PAGE = 20;
|
|
$start_offset = 0;
|
|
// print_r($prm);
|
|
|
|
if (isset($prm["page"])) {
|
|
if (
|
|
is_numeric($prm["page"]) && $prm["page"] > 0
|
|
) {
|
|
$start_offset = ($page - 1) * $ROW_PER_PAGE;
|
|
}
|
|
}
|
|
$sql = "SELECT
|
|
COUNT(T_OrderHeaderID) AS total
|
|
FROM t_orderheader
|
|
JOIN m_patient
|
|
ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN corporate
|
|
ON T_OrderHeaderCorporateID = CorporateID
|
|
JOIN m_branch ON T_OrderHeaderM_BranchID = M_BranchID
|
|
LEFT JOIN m_title
|
|
ON M_PatientM_TitleID = M_TitleID
|
|
WHERE (DATE_FORMAT(T_OrderHeaderDate, '%Y-%m-%d') BETWEEN ? AND ?)
|
|
AND (M_PatientName LIKE ? OR T_OrderHeaderLabNumber LIKE ?)
|
|
AND T_OrderHeaderMgm_McuID = ?
|
|
ORDER BY T_OrderHeaderLabNumber
|
|
";
|
|
$query = $this->db_onedev->query($sql, [$startDate, $endDate, $search, $search, $setupID]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$totalPage = $query->row_array()['total'];
|
|
$sql = "SELECT
|
|
T_OrderHeaderID AS orderID,
|
|
IFNULL(Mcu_ResumeStatus, 'NEW') as status,
|
|
T_OrderHeaderM_BranchID AS branchID,
|
|
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS orderDate,
|
|
T_OrderHeaderLabNumber AS labNumber,
|
|
T_OrderHeaderM_PatientID AS patientID,
|
|
T_OrderHeaderCorporateID AS corporateID,
|
|
T_OrderHeaderMgm_McuID AS setupID,
|
|
UPPER(T_OrderHeaderM_PatientAge) AS patientAge,
|
|
M_PatientNoReg AS patientReg,
|
|
M_PatientName AS patientName,
|
|
UPPER(CONCAT(IF(ISNULL(M_TitleName),'',CONCAT(M_TitleName,'.')),
|
|
' ',
|
|
IFNULL(M_PatientPrefix,''),
|
|
' ',
|
|
M_PatientName,
|
|
' ',
|
|
IFNULL(M_PatientSuffix,''))) AS patientFullname,
|
|
CASE
|
|
WHEN LOWER(M_PatientGender) = 'male' THEN 'LAKI-LAKI'
|
|
WHEN LOWER(M_PatientGender) = 'female' THEN 'PEREMPUAN'
|
|
END patientGender,
|
|
M_PatientPhoto AS patientFoto,
|
|
M_PatientPhotoThumb AS patientFotoThumb,
|
|
CorporateCode AS corporateCode,
|
|
UPPER(CorporateName) AS corporateName,
|
|
M_BranchCode AS branchID,
|
|
M_BranchName AS branchName,
|
|
IFNULL(T_SamplingAdditionalFisikBBTBID,0) T_SamplingAdditionalFisikBBTBID,
|
|
T_SamplingAdditionalFisikBBTBValueBB,
|
|
T_SamplingAdditionalFisikBBTBValueTB,
|
|
T_SamplingAdditionalFisikBBTBValueClassification,
|
|
IFNULL(T_SamplingAdditionalFisikBBTBStandart,'asia_pacific') T_SamplingAdditionalFisikBBTBStandart,
|
|
T_SamplingAdditionalFisikBBTBBodyFat,
|
|
IFNULL(T_SamplingAdditionalFisikBWID,0) T_SamplingAdditionalFisikBWID,
|
|
T_SamplingAdditionalFisikBWPWValue,
|
|
T_SamplingAdditionalFisikBWPWVAngka,
|
|
T_SamplingAdditionalFisikBWPWKeterangan,
|
|
IFNULL(T_SamplingAdditionalFisikVisusID,0) T_SamplingAdditionalFisikVisusID,
|
|
T_SamplingAdditionalFisikVisusTKODV,
|
|
T_SamplingAdditionalFisikVisusTKOSV,
|
|
T_SamplingAdditionalFisikVisusDKODV,
|
|
T_SamplingAdditionalFisikVisusDKOSV,
|
|
T_SamplingAdditionalFisikVisusODSPH,
|
|
T_SamplingAdditionalFisikVisusODCYL,
|
|
T_SamplingAdditionalFisikVisusODX,
|
|
T_SamplingAdditionalFisikVisusOSSPH,
|
|
T_SamplingAdditionalFisikVisusOSCYL,
|
|
T_SamplingAdditionalFisikVisusOSX,
|
|
T_SamplingAdditionalFisikVisusADD,
|
|
T_SamplingAdditionalFisikVisusKananKesimpulan,
|
|
T_SamplingAdditionalFisikVisusKiriKesimpulan,
|
|
T_OrderHeaderIsActive as isactive,
|
|
GROUP_CONCAT(CONCAT(OrderGlucoseID,'^',Nat_TestID,'^',Nat_TestName,'^',OrderGlucoseResult) SEPARATOR '*') as glucoses
|
|
FROM t_orderheader
|
|
JOIN m_patient
|
|
ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN corporate
|
|
ON T_OrderHeaderCorporateID = CorporateID
|
|
JOIN m_branch ON T_OrderHeaderM_BranchID = M_BranchID
|
|
LEFT JOIN m_title
|
|
ON M_PatientM_TitleID = M_TitleID
|
|
LEFT JOIN mcu_resume
|
|
ON T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
|
|
AND Mcu_ResumeIsActive = 'Y'
|
|
LEFT JOIN t_samplingso_additional_fisik_bbtb ON T_SamplingAdditionalFisikBBTBT_OrderHeaderID = T_OrderHeaderID AND T_SamplingAdditionalFisikBBTBIsActive = 'Y'
|
|
LEFT JOIN t_samplingso_additional_fisik_bw ON T_SamplingAdditionalFisikBWT_OrderHeaderID = T_OrderHeaderID AND T_SamplingAdditionalFisikBWIsActive = 'Y'
|
|
LEFT JOIN t_samplingso_additional_fisik_visus ON T_SamplingAdditionalFisikVisusT_OrderHeaderID = T_OrderHeaderID AND
|
|
T_SamplingAdditionalFisikVisusIsActive = 'Y'
|
|
LEFT JOIN order_glucose ON OrderGlucoseT_OrderHeaderID = T_OrderHeaderID AND OrderGlucoseIsActive = 'Y'
|
|
LEFT JOIN nat_test ON OrderGlucoseNat_TestID = Nat_TestID
|
|
WHERE (DATE_FORMAT(T_OrderHeaderDate, '%Y-%m-%d') BETWEEN ? AND ?)
|
|
AND (M_PatientName LIKE ? OR T_OrderHeaderLabNumber LIKE ?)
|
|
AND T_OrderHeaderMgm_McuID = ?
|
|
GROUP BY T_OrderHeaderID
|
|
ORDER BY T_OrderHeaderLabNumber
|
|
LIMIT ? OFFSET ? ";
|
|
$query = $this->db_onedev->query($sql, [$startDate, $endDate, $search, $search, $setupID, $ROW_PER_PAGE, $start_offset]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
// echo $this->db_onedev->last_query();
|
|
$result = [
|
|
"total" => ceil($totalPage / $ROW_PER_PAGE),
|
|
"records" => $query->result_array()
|
|
];
|
|
$this->sys_ok($result);
|
|
|
|
}
|
|
function getdetail()
|
|
{
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
$orderid = $prm['orderid'];
|
|
$sql = "SELECT T_SamplingAdditionalFisikBBTBID,
|
|
T_SamplingAdditionalFisikBBTBValueBB,
|
|
T_SamplingAdditionalFisikBBTBValueTB,
|
|
T_SamplingAdditionalFisikBBTBValueClassification,
|
|
T_SamplingAdditionalFisikBBTBStandart,
|
|
T_SamplingAdditionalFisikBBTBBodyFat,
|
|
T_SamplingAdditionalFisikBWID,
|
|
T_SamplingAdditionalFisikBWPWValue,
|
|
T_SamplingAdditionalFisikBWPWVAngka,
|
|
T_SamplingAdditionalFisikBWPWKeterangan,
|
|
T_SamplingAdditionalFisikVisusID,
|
|
T_SamplingAdditionalFisikVisusTKODV,
|
|
T_SamplingAdditionalFisikVisusTKOSV,
|
|
T_SamplingAdditionalFisikVisusDKODV,
|
|
T_SamplingAdditionalFisikVisusDKOSV,
|
|
T_SamplingAdditionalFisikVisusODSPH,
|
|
T_SamplingAdditionalFisikVisusODCYL,
|
|
T_SamplingAdditionalFisikVisusODX,
|
|
T_SamplingAdditionalFisikVisusOSSPH,
|
|
T_SamplingAdditionalFisikVisusOSCYL,
|
|
T_SamplingAdditionalFisikVisusOSX,
|
|
T_SamplingAdditionalFisikVisusADD,
|
|
T_SamplingAdditionalFisikVisusKananKesimpulan,
|
|
T_SamplingAdditionalFisikVisusKiriKesimpulan,
|
|
GROUP_CONCAT(CONCAT(OrderGlucoseID,'^',Nat_TestID,'^',Nat_TestName,'^',OrderGlucoseResult) SEPARATOR '*') as glucoses
|
|
FROM
|
|
t_orderheader
|
|
LEFT JOIN t_samplingso_additional_fisik_bbtb ON T_SamplingAdditionalFisikBBTBT_OrderHeaderID = T_OrderHeaderID AND T_SamplingAdditionalFisikBBTBIsActive = 'Y'
|
|
LEFT JOIN t_samplingso_additional_fisik_bw ON T_SamplingAdditionalFisikBWT_OrderHeaderID = T_OrderHeaderID AND T_SamplingAdditionalFisikBWIsActive = 'Y'
|
|
LEFT JOIN t_samplingso_additional_fisik_visus ON T_SamplingAdditionalFisikVisusT_OrderHeaderID = T_OrderHeaderID AND
|
|
T_SamplingAdditionalFisikVisusIsActive = 'Y'
|
|
LEFT JOIN order_glucose ON OrderGlucoseT_OrderHeaderID = T_OrderHeaderID AND OrderGlucoseIsActive = 'Y'
|
|
LEFT JOIN nat_test ON OrderGlucoseNat_TestID = Nat_TestID
|
|
WHERE T_OrderHeaderID = {$orderid}
|
|
GROUP BY T_OrderHeaderID
|
|
";
|
|
$query = $this->db_onedev->query($sql, [$orderid]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
// echo $this->db_onedev->last_query();
|
|
$getHeader = $query->result_array();
|
|
$dataHeader = array();
|
|
if (count($getHeader) == 0) {
|
|
$dataHeader = array(
|
|
"resumeID" => 0,
|
|
"resumeDoctorID" => 0,
|
|
"orderID" => $orderid,
|
|
"status" => 'NEW',
|
|
"verivication" => 'N',
|
|
"validation" => 'N',
|
|
"kesimpulan" => '',
|
|
"rekomendasi" => '',
|
|
"saran" => '',
|
|
"doctorName" => ""
|
|
);
|
|
} else {
|
|
$dataHeader = $getHeader[0];
|
|
}
|
|
$sql = "SELECT
|
|
T_OrderDetailID AS detailOrderID,
|
|
Group_ResultName AS groupResultName,
|
|
So_ResultEntryID AS resultID,
|
|
So_ResultEntryValidation1 AS resultValidation,
|
|
So_ResultEntryStatus AS resultStatus,
|
|
T_OrderDetailT_TestID AS testID,
|
|
T_TestName AS testName,
|
|
IFNULL(Mcu_ResumeDetailsID, 0) AS resumeDetailsID,
|
|
IFNULL(Mcu_ResumeID, 0) AS resumeID,
|
|
Mcu_ResumeKesimpulan AS resumeKesimpulan,
|
|
Mcu_ResumeRekomendasi AS resumeRekomendasi,
|
|
Mcu_ResumeSaran AS resumeSaran,
|
|
Mcu_ResumeDetailsResult resumeDetailResult,
|
|
So_ResultEntryDetailResult AS resumeEntryResult,
|
|
Group_ResultResumeMcu AS category,
|
|
CASE
|
|
WHEN Group_ResultResumeMcu = 'NONLAB' THEN
|
|
CASE
|
|
WHEN Mcu_ResumeSaran IS NOT NULL AND TRIM(Mcu_ResumeSaran) <> '' THEN Mcu_ResumeSaran
|
|
WHEN Mcu_ResumeSaran IS NULL OR TRIM(Mcu_ResumeSaran) <> '' THEN fn_getadvicenonlab(So_ResultEntryID)
|
|
ELSE Mcu_ResumeSaran
|
|
END
|
|
WHEN Group_ResultResumeMcu = 'FISIK' THEN
|
|
CASE
|
|
WHEN Mcu_ResumeSaran IS NOT NULL AND TRIM(Mcu_ResumeSaran) <> '' THEN Mcu_ResumeSaran
|
|
WHEN Mcu_ResumeSaran IS NULL OR TRIM(Mcu_ResumeSaran) <> '' THEN fn_getadvicefisik(So_ResultEntryID)
|
|
ELSE Mcu_ResumeSaran
|
|
END
|
|
ELSE Mcu_ResumeSaran
|
|
END AS saranso,
|
|
fn_countabnormal(So_ResultEntryID) AS isNormal,
|
|
TRIM(CONCAT(M_DoctorPrefix,' ',M_DoctorPrefix2, ' ', M_DoctorName, ' ',M_DoctorSuffix,' ', M_DoctorSuffix2, ' ')) doctorName,
|
|
Mcu_ResumeM_DoctorID AS doctorID,
|
|
IFNULL(Mcu_ResumeStatus,'NEW') AS status,
|
|
CASE
|
|
WHEN Mcu_ResumeDetailsResult IS NULL OR TRIM(Mcu_ResumeDetailsResult) = '' THEN So_ResultEntryDetailResult
|
|
WHEN Mcu_ResumeDetailsResult IS NOT NULL OR TRIM(Mcu_ResumeDetailsResult) <> '' THEN Mcu_ResumeDetailsResult
|
|
END AS result
|
|
FROM t_orderdetail
|
|
JOIN so_resultentry
|
|
ON T_OrderDetailT_OrderHeaderID = So_ResultEntryT_OrderHeaderID
|
|
AND T_OrderDetailID = So_ResultEntryT_OrderDetailID
|
|
AND So_ResultEntryIsActive = 'Y'
|
|
AND So_ResultEntryValidation1 = 'Y'
|
|
JOIN group_resultdetail
|
|
ON T_OrderDetailT_TestID = Group_ResultDetailT_TestID
|
|
AND Group_ResultDetailIsActive ='Y'
|
|
JOIN group_result
|
|
ON Group_ResultID = Group_ResultDetailGroup_ResultID
|
|
AND Group_ResultResumeMcu IN ('NONLAB', 'FISIK')
|
|
AND Group_ResultIsActive ='Y'
|
|
JOIN t_test
|
|
ON T_OrderDetailT_TestID= T_TestID
|
|
AND T_TestIsActive = 'Y'
|
|
LEFT JOIN nonlab_template_mcu
|
|
ON T_TestNat_TestID = NonlabTemplateMcuT_TestID
|
|
AND NonlabTemplateMcuIsActive = 'Y'
|
|
LEFT JOIN so_resultentrydetail
|
|
ON So_ResultEntryID = So_ResultEntryDetailSo_ResultEntryID
|
|
AND NonlabTemplateMcuNonlabTemplateDetailID = So_ResultEntryDetailNonlab_TemplateDetailID
|
|
AND So_ResultEntryDetailIsActive = 'Y'
|
|
AND T_OrderDetailIsActive = 'Y'
|
|
LEFT JOIN mcu_resume
|
|
ON T_OrderDetailT_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
|
|
LEFT JOIN mcu_resumedetails
|
|
ON T_OrderDetailID = Mcu_ResumeDetailsT_OrderDetailID
|
|
AND Mcu_ResumeDetailsIsActive = 'Y'
|
|
AND Mcu_ResumeID = Mcu_ResumeDetailsMcu_ResumeID
|
|
LEFT JOIN m_doctor
|
|
ON Mcu_ResumeM_DoctorID = M_DoctorID
|
|
AND M_DoctorIsActive = 'Y'
|
|
LEFT JOIN so_resultentry_category_result
|
|
ON So_ResultEntryCategoryResultSo_ResultEntryID = So_ResultEntryID
|
|
AND So_ResultEntryCategoryResultIsActive = 'Y'
|
|
WHERE T_OrderDetailT_OrderHeaderID = ?
|
|
GROUP BY T_OrderDetailT_TestID
|
|
ORDER BY category;";
|
|
$query = $this->db_onedev->query($sql, [$orderid]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
// echo $this->db_onedev->last_query();
|
|
$data = $query->result_array();
|
|
$this->load->library("Kesimpulanfisik");
|
|
//getlab
|
|
// {
|
|
// "detailOrderID": "1632088",
|
|
// "groupResultName": "Pemeriksaan Fisik",
|
|
// "resultID": "97",
|
|
// "resultValidation": "Y",
|
|
// "resultStatus": "NEW",
|
|
// "testID": "2562",
|
|
// "testName": "Pemeriksaan Fisik",
|
|
// "resumeDetailsID": "3",
|
|
// "resumeID": "2",
|
|
// "resumeKesimpulan": "Pada saat ini didapatkan kelainan berupa :<br/>Takhikardi ( 120 x/menit ), Laju pernafasan ( 15 x/menit ), Tekanan Darah 120/80 mmHg ( Prehipertensi ), Suhu Febri, Overweight ( BMI : 24.09 )<br/>Hernia : Umbilikus (D), Inguinal (D, S) edit",
|
|
// "resumeRekomendasi": null,
|
|
// "resumeSaran": null,
|
|
// "resumeDetailResult": "Pada saat ini didapatkan kelainan berupa :<br/>Takhikardi ( 120 x/menit ), Laju pernafasan ( 15 x/menit ), Tekanan Darah 120/80 mmHg ( Prehipertensi ), Suhu Febri, Overweight ( BMI : 24.09 )<br/>Hernia : Umbilikus (D), Inguinal (D, S)",
|
|
// "resumeEntryResult": null,
|
|
// "category": "FISIK",
|
|
// "isNormal": 1,
|
|
// "doctorName": null,
|
|
// "doctorID": "0",
|
|
// "status": "NEW",
|
|
// "result": "Pada saat ini didapatkan kelainan berupa :<br/>Takhikardi ( 120 x/menit ), Laju pernafasan ( 15 x/menit ), Tekanan Darah 120/80 mmHg ( Prehipertensi ), Suhu Febri, Overweight ( BMI : 24.09 )<br/>Hernia : Umbilikus (D), Inguinal (D, S)"
|
|
// }
|
|
$lab = $this->getlab($orderid, 'N');
|
|
$labArr = [];
|
|
for ($i = 0; $i < count($lab); $i++) {
|
|
$isNormal = 0;
|
|
|
|
if ($lab[$i]['resultIsNormal'] == "N") {
|
|
$isNormal = 1;
|
|
}
|
|
$data[] = [
|
|
"detailOrderID" => $lab[$i]['orderDetailID'],
|
|
"groupResultName" => $lab[$i]['groupName'],
|
|
"resultID" => $lab[$i]['resultID'],
|
|
"resultValidation" => $lab[$i]['resultValidation'],
|
|
"resultStatus" => $lab[$i]['resultStatus'],
|
|
"testID" => $lab[$i]['testID'],
|
|
"subGroupID" => $lab[$i]['subGroupID'],
|
|
"testName" => $lab[$i]['groupName'],
|
|
"resumeDetailsID" => $lab[$i]['resumeDetailsID'],
|
|
"resumeID" => $lab[$i]['resumeID'],
|
|
"resumeKesimpulan" => $lab[$i]['resumeKesimpulan'],
|
|
"resumeRekomendasi" => $lab[$i]['resumeRekomendasi'],
|
|
"resumeSaran" => $lab[$i]['saran'],
|
|
"saranso" => $lab[$i]['saran'],
|
|
"resumeDetailResult" => $lab[$i]['resumeDetailResult'],
|
|
"resumeEntryResult" => $lab[$i]['kelainan'],
|
|
"category" => "LAB",
|
|
"isNormal" => $isNormal,
|
|
"doctorName" => '',
|
|
"doctorID" => '',
|
|
"status" => $lab[$i]['resultStatus'],
|
|
"result" => $lab[$i]['kelainan']
|
|
];
|
|
}
|
|
|
|
// $kesimpulanFisik =
|
|
// $kesimpulanFisik = $this->kesimpulanfisik->kesimpulan('97');
|
|
for ($i = 0; $i < count($data); $i++) {
|
|
if ($data[$i]['category'] == 'FISIK') {
|
|
$kesimpulanFisik = $this->kesimpulanfisik->kesimpulan($data[$i]['resultID']);
|
|
$data[$i]['result'] = $kesimpulanFisik;
|
|
if ($kesimpulanFisik != 'Tidak ditemukan kelainan.') {
|
|
$data[$i]['isNormal'] = 1;
|
|
} else {
|
|
$data[$i]['isNormal'] = 0;
|
|
}
|
|
}
|
|
}
|
|
$kesimpulanarr = [];
|
|
$saranArr = [];
|
|
for ($i = 0; $i < count($data); $i++) {
|
|
if (trim($data[0]['resumeKesimpulan']) == '' || $data[0]['resumeKesimpulan'] == null) {
|
|
if (intval($data[$i]['isNormal']) > 0) {
|
|
if (trim($data[$i]['result']) != '') {
|
|
# code...
|
|
$kesimpulanarr[] = $data[$i]['result'];
|
|
}
|
|
}
|
|
}
|
|
if (trim($data[0]['resumeSaran']) == '' || $data[0]['resumeSaran'] == null) {
|
|
if (intval($data[$i]['isNormal']) > 0) {
|
|
if (trim($data[$i]['saranso']) != '') {
|
|
$explodeSaran = explode("@", $data[$i]['saranso']);
|
|
if (count($explodeSaran) > 0) {
|
|
array_push($saranArr, ...$explodeSaran);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (count($kesimpulanarr) > 0) {
|
|
$kesimpulan = implode(", ", $kesimpulanarr);
|
|
$saran = (implode(", ", array_unique($saranArr)));
|
|
$dataHeader['kesimpulan'] = $kesimpulan;
|
|
$dataHeader['saran'] = $saran;
|
|
for ($i = 0; $i < count($data); $i++) {
|
|
$data[$i]['resumeKesimpulan'] = $kesimpulan;
|
|
$data[$i]['resumeSaran'] = $saran;
|
|
}
|
|
}
|
|
// if (trim($kesimpulan) != '') {
|
|
// if ($kesimpulanFisik != 'Tidak ditemukan kelainan.') {
|
|
// $kesimpulan = $kesimpulan . ", \n" . $kesimpulanFisik;
|
|
// }
|
|
// } else {
|
|
// if ($kesimpulanFisik != 'Tidak ditemukan kelainan.') {
|
|
// $kesimpulan = $kesimpulanFisik;
|
|
// }
|
|
// }
|
|
$dataHeader['detail'] = $data;
|
|
|
|
$result = [
|
|
"header" => $dataHeader,
|
|
"records" => $data,
|
|
// 'kesimpulan' => $kesimpulanFisik
|
|
];
|
|
$this->sys_ok($result);
|
|
}
|
|
function getdoctor()
|
|
{
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$search = $prm['search'];
|
|
$query = " SELECT M_DoctorID,
|
|
M_DoctorID doctorID,
|
|
M_DoctorPrefix,
|
|
M_DoctorPrefix2,
|
|
M_DoctorName,
|
|
M_DoctorSuffix,
|
|
M_DoctorSuffix2,
|
|
M_DoctorCode ,
|
|
CONCAT(M_DoctorPrefix,' ',M_DoctorPrefix2, ' ', M_DoctorName, ' ',M_DoctorSuffix,' ', M_DoctorSuffix2, ' ') doctorName
|
|
FROM m_doctor
|
|
WHERE M_DoctorIsActive = 'Y'
|
|
AND CONCAT(M_DoctorPrefix,' ',M_DoctorPrefix2, ' ', M_DoctorName, ' ',M_DoctorSuffix,' ', M_DoctorSuffix2, ' ') LIKE '%$search%'
|
|
";
|
|
//echo $query;
|
|
$rows = $this->db_onedev->query($query)->result_array();
|
|
|
|
$result = array(
|
|
"total" => count($rows),
|
|
"records" => $rows,
|
|
"query" => $this->db_onedev->last_query()
|
|
);
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
function save()
|
|
{
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$userid = $this->sys_user["M_UserID"];
|
|
$messages_log = [];
|
|
|
|
if($prm['glucoses'] && count($prm['glucoses'])){
|
|
foreach ($prm['glucoses'] as $k_gluc => $v_gluc) {
|
|
$sampletypeid = $this->db_onedev->query("SELECT Nat_TestNat_SampleTypeID
|
|
FROM nat_test WHERE Nat_TestID = '{$v_gluc[1]}'")->row();
|
|
|
|
$sql_gluc = "SELECT
|
|
COUNT(T_OrderSampleID) AS total
|
|
FROM t_ordersample
|
|
WHERE T_OrderSampleT_OrderHeaderID = ?
|
|
AND T_OrderSampleT_SampleTypeID = ?
|
|
AND T_OrderSampleReceive = 'Y'
|
|
AND T_OrderSampleReceiveDate IS NOT NULL";
|
|
$query_gluc = $this->db_onedev->query($sql_gluc, [$prm['orderID'],$sampletypeid->Nat_TestNat_SampleTypeID]);
|
|
if (!$query_gluc) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$sample_gluc = $query_gluc->row_array()['total'];
|
|
|
|
$sql_order_gluc = "SELECT
|
|
COUNT(T_OrderDetailID) AS total
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_OrderHeaderID = {$prm['orderID']} AND
|
|
T_OrderDetailT_TestID = T_TestID AND
|
|
T_OrderDetailIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = {$v_gluc[1]}";
|
|
$query_order_gluc = $this->db_onedev->query($sql_order_gluc);
|
|
if (!$query_order_gluc) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$order_gluc = $query_order_gluc->row_array()['total'];
|
|
|
|
if($sample_gluc > 0 && $order_gluc > 0){
|
|
|
|
$sql = $this->db_onedev->query("SELECT * FROM order_glucose WHERE OrderGlucoseID = {$v_gluc[0]}");
|
|
$x_data_before = $sql->result_array();
|
|
$x_data_before = json_encode($x_data_before);
|
|
|
|
$sql = "UPDATE order_glucose SET OrderGlucoseIsActive = 'N', OrderGlucoseDeleted = NOW(), OrderGlucoseDeletedUserID = '{$userid}'
|
|
WHERE
|
|
OrderGlucoseID = {$v_gluc[0]}";
|
|
$this->db_onedev->query($sql);
|
|
$sql = "INSERT INTO order_glucose (
|
|
OrderGlucoseT_OrderHeaderID,
|
|
OrderGlucoseNat_TestID,
|
|
OrderGlucoseResult,
|
|
OrderGlucoseCreated,
|
|
OrderGlucoseCreatedUserID
|
|
)
|
|
VALUES(
|
|
{$prm['orderID']},
|
|
{$v_gluc[1]},
|
|
'{$v_gluc[3]}',
|
|
NOW(),
|
|
{$userid}
|
|
)";
|
|
$this->db_onedev->query($sql);
|
|
$last_id_glucose = $this->db_onedev->insert_id();
|
|
$sql = "UPDATE t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_OrderHeaderID = {$prm['orderID']} AND
|
|
T_OrderDetailT_TestID = T_TestID AND
|
|
T_OrderDetailIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = {$v_gluc[1]}
|
|
SET T_OrderDetailResult = '{$v_gluc[3]}',
|
|
T_OrderDetailNormalValueNote = '< 100',
|
|
T_OrderDetailNormalValueDescription = '< 100',
|
|
T_OrderDetailLastUpdatedUserID = {$userid},
|
|
T_OrderDetailLastUpdated = NOW()
|
|
";
|
|
|
|
$this->db_onedev->query($sql);
|
|
|
|
// INSERT LOG
|
|
$sql = $this->db_onedev->query("SELECT * FROM order_glucose WHERE OrderGlucoseID = {$last_id_glucose}");
|
|
$x_data_after = $sql->result_array();
|
|
$x_data_after = json_encode($x_data_after);
|
|
|
|
$sqllog = "INSERT INTO additionalfisik_log(
|
|
AdditionalFisikLogType,
|
|
AdditionalFisikLogT_OrderHeaderID,
|
|
AdditionalFisikLogJSONBefore,
|
|
AdditionalFisikLogJSONAfter,
|
|
AdditionalFisikLogCreated,
|
|
AdditionalFisikLogUserID)
|
|
VALUES ('GLUCOSE','{$prm['orderID']}','{$x_data_before}','{$x_data_after}',now(),'{$userid}')";
|
|
$querylog = $this->db_onedev->query($sqllog);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
$sql_bbtb = "SELECT
|
|
COUNT(T_SamplingSoID) AS total
|
|
FROM t_samplingso
|
|
WHERE T_SamplingSoT_OrderHeaderID = ?
|
|
AND T_SamplingSoT_TestID = '3450'
|
|
AND T_SamplingSoFlag = 'D'
|
|
AND T_SamplingSoDoneDate IS NOT NULL";
|
|
$query_bbtb = $this->db_onedev->query($sql_bbtb, [$prm['orderID']]);
|
|
if (!$query_bbtb) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$sample_bbtb = $query_bbtb->row_array()['total'];
|
|
|
|
$sql_order_bbtb = "SELECT
|
|
COUNT(T_OrderDetailID) AS total
|
|
FROM t_orderdetail
|
|
WHERE T_OrderDetailT_OrderHeaderID = ?
|
|
AND T_OrderDetailT_TestID = '3450'
|
|
AND T_OrderDetailIsActive = 'Y'";
|
|
$query_order_bbtb = $this->db_onedev->query($sql_order_bbtb, [$prm['orderID']]);
|
|
if (!$query_order_bbtb) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$order_bbtb = $query_order_bbtb->row_array()['total'];
|
|
|
|
if ($sample_bbtb > 0 && $order_bbtb > 0){
|
|
if ($prm['T_SamplingAdditionalFisikBBTBID'] == 0) {
|
|
|
|
|
|
|
|
$sql = "INSERT INTO t_samplingso_additional_fisik_bbtb
|
|
(T_SamplingAdditionalFisikBBTBT_OrderHeaderID,
|
|
T_SamplingAdditionalFisikBBTBValueBB,
|
|
T_SamplingAdditionalFisikBBTBValueTB,
|
|
T_SamplingAdditionalFisikBBTBValueClassification,
|
|
T_SamplingAdditionalFisikBBTBStandart,
|
|
T_SamplingAdditionalFisikBBTBBodyFat,
|
|
T_SamplingAdditionalFisikBBTBCreated,
|
|
T_SamplingAdditionalFisikBBTBCreatedUserID)
|
|
VALUES('{$prm['orderID']}',
|
|
'{$prm['T_SamplingAdditionalFisikBBTBValueBB']}',
|
|
'{$prm['T_SamplingAdditionalFisikBBTBValueTB']}',
|
|
'{$prm['T_SamplingAdditionalFisikBBTBValueClassification']}',
|
|
'{$prm['T_SamplingAdditionalFisikBBTBStandart']}',
|
|
'{$prm['T_SamplingAdditionalFisikBBTBBodyFat']}',
|
|
now(),
|
|
'{$userid}')";
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$T_SamplingAdditionalFisikBBTBID = $this->db_onedev->insert_id();
|
|
|
|
// INSERT LOG
|
|
$sql = $this->db_onedev->query("SELECT * FROM t_samplingso_additional_fisik_bbtb WHERE T_SamplingAdditionalFisikBBTBID = {$T_SamplingAdditionalFisikBBTBID} AND T_SamplingAdditionalFisikBBTBIsActive = 'Y'");
|
|
$x_data_after = $sql->result_array();
|
|
$x_data_after = json_encode($x_data_after);
|
|
|
|
$sqllog = "INSERT INTO additionalfisik_log(
|
|
AdditionalFisikLogType,
|
|
AdditionalFisikLogT_OrderHeaderID,
|
|
AdditionalFisikLogJSONBefore,
|
|
AdditionalFisikLogJSONAfter,
|
|
AdditionalFisikLogCreated,
|
|
AdditionalFisikLogUserID)
|
|
VALUES ('BBTB','{$prm['orderID']}','','{$x_data_after}',now(),'{$userid}')";
|
|
$querylog = $this->db_onedev->query($sqllog);
|
|
|
|
} else{
|
|
$sql = $this->db_onedev->query("SELECT * FROM t_samplingso_additional_fisik_bbtb WHERE T_SamplingAdditionalFisikBBTBID = {$prm['T_SamplingAdditionalFisikBBTBID']} AND T_SamplingAdditionalFisikBBTBIsActive = 'Y'");
|
|
$x_data_before = $sql->result_array();
|
|
$x_data_before = json_encode($x_data_before);
|
|
$sql = "UPDATE t_samplingso_additional_fisik_bbtb
|
|
SET T_SamplingAdditionalFisikBBTBValueBB = '{$prm['T_SamplingAdditionalFisikBBTBValueBB']}',
|
|
T_SamplingAdditionalFisikBBTBValueTB = '{$prm['T_SamplingAdditionalFisikBBTBValueTB']}',
|
|
T_SamplingAdditionalFisikBBTBValueClassification = '{$prm['T_SamplingAdditionalFisikBBTBValueClassification']}',
|
|
T_SamplingAdditionalFisikBBTBStandart = '{$prm['T_SamplingAdditionalFisikBBTBStandart']}',
|
|
T_SamplingAdditionalFisikBBTBBodyFat = '{$prm['T_SamplingAdditionalFisikBBTBBodyFat']}',
|
|
T_SamplingAdditionalFisikBBTBLastUpdated = now(),
|
|
T_SamplingAdditionalFisikBBTBLastUpdatedUserID = '{$userid}'
|
|
WHERE T_SamplingAdditionalFisikBBTBID = '{$prm['T_SamplingAdditionalFisikBBTBID']}'";
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
// INSERT LOG
|
|
$sql = $this->db_onedev->query("SELECT * FROM t_samplingso_additional_fisik_bbtb WHERE T_SamplingAdditionalFisikBBTBID = {$prm['T_SamplingAdditionalFisikBBTBID']} AND T_SamplingAdditionalFisikBBTBIsActive = 'Y'");
|
|
$x_data_after = $sql->result_array();
|
|
$x_data_after = json_encode($x_data_after);
|
|
|
|
$sqllog = "INSERT INTO additionalfisik_log(
|
|
AdditionalFisikLogType,
|
|
AdditionalFisikLogT_OrderHeaderID,
|
|
AdditionalFisikLogJSONBefore,
|
|
AdditionalFisikLogJSONAfter,
|
|
AdditionalFisikLogCreated,
|
|
AdditionalFisikLogUserID)
|
|
VALUES ('BBTB','{$prm['orderID']}','{$x_data_before}','{$x_data_after}',now(),'{$userid}')";
|
|
$querylog = $this->db_onedev->query($sqllog);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$sql_bw = "SELECT
|
|
COUNT(T_SamplingSoID) AS total
|
|
FROM t_samplingso
|
|
WHERE T_SamplingSoT_OrderHeaderID = ?
|
|
AND T_SamplingSoT_TestID = '2573'
|
|
AND T_SamplingSoFlag = 'D'
|
|
AND T_SamplingSoDoneDate IS NOT NULL";
|
|
$query_bw = $this->db_onedev->query($sql_bw, [$prm['orderID']]);
|
|
if (!$query_bw) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$sample_bw = $query_bw->row_array()['total'];
|
|
|
|
$sql_order_bw = "SELECT
|
|
COUNT(T_OrderDetailID) AS total
|
|
FROM t_orderdetail
|
|
WHERE T_OrderDetailT_OrderHeaderID = ?
|
|
AND T_OrderDetailT_TestID = '2573'
|
|
AND T_OrderDetailIsActive = 'Y'";
|
|
$query_order_bw = $this->db_onedev->query($sql_order_bw, [$prm['orderID']]);
|
|
if (!$query_order_bw) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$order_bw = $query_order_bw->row_array()['total'];
|
|
|
|
if ($sample_bw > 0 && $order_bw > 0){
|
|
if ($prm['T_SamplingAdditionalFisikBWID'] == 0) {
|
|
|
|
$sql = "INSERT INTO t_samplingso_additional_fisik_bw
|
|
(T_SamplingAdditionalFisikBWT_OrderHeaderID,
|
|
T_SamplingAdditionalFisikBWPWValue,
|
|
T_SamplingAdditionalFisikBWPWVAngka,
|
|
T_SamplingAdditionalFisikBWPWKeterangan,
|
|
T_SamplingAdditionalFisikBWCreated,
|
|
T_SamplingAdditionalFisikBWCreatedUserID)
|
|
VALUES('{$prm['orderID']}',
|
|
'{$prm['T_SamplingAdditionalFisikBWPWValue']}',
|
|
'{$prm['T_SamplingAdditionalFisikBWPWVAngka']}',
|
|
'{$prm['T_SamplingAdditionalFisikBWPWKeterangan']}',
|
|
now(),
|
|
'{$userid}')";
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$T_SamplingAdditionalFisikBWID = $this->db_onedev->insert_id();
|
|
|
|
// INSERT LOG
|
|
$sql = $this->db_onedev->query("SELECT * FROM t_samplingso_additional_fisik_bw WHERE T_SamplingAdditionalFisikBWID = {$T_SamplingAdditionalFisikBWID}");
|
|
$x_data_after = $sql->result_array();
|
|
$x_data_after = json_encode($x_data_after);
|
|
|
|
$sqllog = "INSERT INTO additionalfisik_log(
|
|
AdditionalFisikLogType,
|
|
AdditionalFisikLogT_OrderHeaderID,
|
|
AdditionalFisikLogJSONBefore,
|
|
AdditionalFisikLogJSONAfter,
|
|
AdditionalFisikLogCreated,
|
|
AdditionalFisikLogUserID)
|
|
VALUES ('BW','{$prm['orderID']}','','{$x_data_after}',now(),'{$userid}')";
|
|
$querylog = $this->db_onedev->query($sqllog);
|
|
|
|
} else{
|
|
$sql = $this->db_onedev->query("SELECT * FROM t_samplingso_additional_fisik_bw WHERE T_SamplingAdditionalFisikBWID = {$prm['T_SamplingAdditionalFisikBWID']}");
|
|
$x_data_before = $sql->result_array();
|
|
$x_data_before = json_encode($x_data_before);
|
|
|
|
$sql = "UPDATE t_samplingso_additional_fisik_bw
|
|
SET T_SamplingAdditionalFisikBWPWValue = '{$prm['T_SamplingAdditionalFisikBWPWValue']}',
|
|
T_SamplingAdditionalFisikBWPWVAngka = '{$prm['T_SamplingAdditionalFisikBWPWVAngka']}',
|
|
T_SamplingAdditionalFisikBWPWKeterangan = '{$prm['T_SamplingAdditionalFisikBWPWKeterangan']}',
|
|
T_SamplingAdditionalFisikBWLastUpdated = now(),
|
|
T_SamplingAdditionalFisikBWLastUpdatedUserID = '{$userid}'
|
|
WHERE T_SamplingAdditionalFisikBWID = '{$prm['T_SamplingAdditionalFisikBWID']}'";
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
// INSERT LOG
|
|
$sql = $this->db_onedev->query("SELECT * FROM t_samplingso_additional_fisik_bw WHERE T_SamplingAdditionalFisikBWID = {$prm['T_SamplingAdditionalFisikBWID']}");
|
|
$x_data_after = $sql->result_array();
|
|
$x_data_after = json_encode($x_data_after);
|
|
|
|
$sqllog = "INSERT INTO additionalfisik_log(
|
|
AdditionalFisikLogType,
|
|
AdditionalFisikLogT_OrderHeaderID,
|
|
AdditionalFisikLogJSONBefore,
|
|
AdditionalFisikLogJSONAfter,
|
|
AdditionalFisikLogCreated,
|
|
AdditionalFisikLogUserID)
|
|
VALUES ('BW','{$prm['orderID']}','{$x_data_before}','{$x_data_after}',now(),'{$userid}')";
|
|
$querylog = $this->db_onedev->query($sqllog);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$sql_visus = "SELECT
|
|
COUNT(T_SamplingSoID) AS total
|
|
FROM t_samplingso
|
|
WHERE T_SamplingSoT_OrderHeaderID = ?
|
|
AND T_SamplingSoT_TestID = '2571'
|
|
AND T_SamplingSoFlag = 'D'
|
|
AND T_SamplingSoDoneDate IS NOT NULL";
|
|
$query_visus = $this->db_onedev->query($sql_visus, [$prm['orderID']]);
|
|
if (!$query_visus) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$sample_visus = $query_visus->row_array()['total'];
|
|
|
|
$sql_order_visus = "SELECT
|
|
COUNT(T_OrderDetailID) AS total
|
|
FROM t_orderdetail
|
|
WHERE T_OrderDetailT_OrderHeaderID = ?
|
|
AND T_OrderDetailT_TestID = '2571'
|
|
AND T_OrderDetailIsActive = 'Y'";
|
|
$query_order_visus = $this->db_onedev->query($sql_order_visus, [$prm['orderID']]);
|
|
if (!$query_order_visus) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$order_visus = $query_order_visus->row_array()['total'];
|
|
|
|
if ($sample_visus > 0 && $order_visus > 0){
|
|
if ($prm['T_SamplingAdditionalFisikVisusID'] == 0) {
|
|
$sql = "INSERT INTO t_samplingso_additional_fisik_visus
|
|
(T_SamplingAdditionalFisikVisusT_OrderHeaderID,
|
|
T_SamplingAdditionalFisikVisusTKODV,
|
|
T_SamplingAdditionalFisikVisusTKOSV,
|
|
T_SamplingAdditionalFisikVisusDKODV,
|
|
T_SamplingAdditionalFisikVisusDKOSV,
|
|
T_SamplingAdditionalFisikVisusODSPH,
|
|
T_SamplingAdditionalFisikVisusODCYL,
|
|
T_SamplingAdditionalFisikVisusODX,
|
|
T_SamplingAdditionalFisikVisusOSSPH,
|
|
T_SamplingAdditionalFisikVisusOSCYL,
|
|
T_SamplingAdditionalFisikVisusOSX,
|
|
T_SamplingAdditionalFisikVisusADD,
|
|
T_SamplingAdditionalFisikVisusKananKesimpulan,
|
|
T_SamplingAdditionalFisikVisusKiriKesimpulan,
|
|
T_SamplingAdditionalFisikVisusCreated,
|
|
T_SamplingAdditionalFisikVisusCreatedUserID)
|
|
VALUES('{$prm['orderID']}',
|
|
'{$prm['T_SamplingAdditionalFisikVisusTKODV']}',
|
|
'{$prm['T_SamplingAdditionalFisikVisusTKOSV']}',
|
|
'{$prm['T_SamplingAdditionalFisikVisusDKODV']}',
|
|
'{$prm['T_SamplingAdditionalFisikVisusDKOSV']}',
|
|
'{$prm['T_SamplingAdditionalFisikVisusODSPH']}',
|
|
'{$prm['T_SamplingAdditionalFisikVisusODCYL']}',
|
|
'{$prm['T_SamplingAdditionalFisikVisusODX']}',
|
|
'{$prm['T_SamplingAdditionalFisikVisusOSSPH']}',
|
|
'{$prm['T_SamplingAdditionalFisikVisusOSCYL']}',
|
|
'{$prm['T_SamplingAdditionalFisikVisusOSX']}',
|
|
'{$prm['T_SamplingAdditionalFisikVisusADD']}',
|
|
'{$prm['T_SamplingAdditionalFisikVisusKananKesimpulan']}',
|
|
'{$prm['T_SamplingAdditionalFisikVisusKiriKesimpulan']}',
|
|
now(),
|
|
'{$userid}')";
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$T_SamplingAdditionalFisikVisusID = $this->db_onedev->insert_id();
|
|
// INSERT LOG
|
|
$sql = $this->db_onedev->query("SELECT * FROM t_samplingso_additional_fisik_visus WHERE T_SamplingAdditionalFisikVisusID = {$T_SamplingAdditionalFisikVisusID} AND T_SamplingAdditionalFisikVisusIsActive = 'Y'");
|
|
$x_data_after = $sql->result_array();
|
|
$x_data_after = json_encode($x_data_after);
|
|
|
|
$sqllog = "INSERT INTO additionalfisik_log(
|
|
AdditionalFisikLogType,
|
|
AdditionalFisikLogT_OrderHeaderID,
|
|
AdditionalFisikLogJSONBefore,
|
|
AdditionalFisikLogJSONAfter,
|
|
AdditionalFisikLogCreated,
|
|
AdditionalFisikLogUserID)
|
|
VALUES ('VISUS','{$prm['orderID']}','','{$x_data_after}',now(),'{$userid}')";
|
|
$querylog = $this->db_onedev->query($sqllog);
|
|
} else{
|
|
$sql = $this->db_onedev->query("SELECT * FROM t_samplingso_additional_fisik_visus WHERE T_SamplingAdditionalFisikVisusID = {$prm['T_SamplingAdditionalFisikVisusID']} AND T_SamplingAdditionalFisikVisusIsActive = 'Y'");
|
|
$x_data_before = $sql->result_array();
|
|
$x_data_before = json_encode($x_data_before);
|
|
$sql = "UPDATE t_samplingso_additional_fisik_visus
|
|
SET T_SamplingAdditionalFisikVisusTKODV = '{$prm['T_SamplingAdditionalFisikVisusTKODV']}',
|
|
T_SamplingAdditionalFisikVisusTKOSV = '{$prm['T_SamplingAdditionalFisikVisusTKOSV']}',
|
|
T_SamplingAdditionalFisikVisusDKODV = '{$prm['T_SamplingAdditionalFisikVisusDKODV']}',
|
|
T_SamplingAdditionalFisikVisusDKOSV = '{$prm['T_SamplingAdditionalFisikVisusDKOSV']}',
|
|
T_SamplingAdditionalFisikVisusODSPH = '{$prm['T_SamplingAdditionalFisikVisusODSPH']}',
|
|
T_SamplingAdditionalFisikVisusODCYL = '{$prm['T_SamplingAdditionalFisikVisusODCYL']}',
|
|
T_SamplingAdditionalFisikVisusOSCYL = '{$prm['T_SamplingAdditionalFisikVisusOSCYL']}',
|
|
T_SamplingAdditionalFisikVisusODX = '{$prm['T_SamplingAdditionalFisikVisusODX']}',
|
|
T_SamplingAdditionalFisikVisusOSX = '{$prm['T_SamplingAdditionalFisikVisusOSX']}',
|
|
T_SamplingAdditionalFisikVisusOSSPH = '{$prm['T_SamplingAdditionalFisikVisusOSSPH']}',
|
|
T_SamplingAdditionalFisikVisusADD = '{$prm['T_SamplingAdditionalFisikVisusADD']}',
|
|
T_SamplingAdditionalFisikVisusKananKesimpulan = '{$prm['T_SamplingAdditionalFisikVisusKananKesimpulan']}',
|
|
T_SamplingAdditionalFisikVisusKiriKesimpulan = '{$prm['T_SamplingAdditionalFisikVisusKiriKesimpulan']}',
|
|
T_SamplingAdditionalFisikVisusLastUpdated = now(),
|
|
T_SamplingAdditionalFisikVisusLastUpdatedUserID = '{$userid}'
|
|
WHERE T_SamplingAdditionalFisikVisusID = '{$prm['T_SamplingAdditionalFisikVisusID']}'";
|
|
// echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
// INSERT LOG
|
|
$sql = $this->db_onedev->query("SELECT * FROM t_samplingso_additional_fisik_visus WHERE T_SamplingAdditionalFisikVisusID = {$prm['T_SamplingAdditionalFisikVisusID']} AND T_SamplingAdditionalFisikVisusIsActive = 'Y'");
|
|
$x_data_after = $sql->result_array();
|
|
$x_data_after = json_encode($x_data_after);
|
|
|
|
$sqllog = "INSERT INTO additionalfisik_log(
|
|
AdditionalFisikLogType,
|
|
AdditionalFisikLogT_OrderHeaderID,
|
|
AdditionalFisikLogJSONBefore,
|
|
AdditionalFisikLogJSONAfter,
|
|
AdditionalFisikLogCreated,
|
|
AdditionalFisikLogUserID)
|
|
VALUES ('VISUS','{$prm['orderID']}','{$x_data_before}','{$x_data_after}',now(),'{$userid}')";
|
|
$querylog = $this->db_onedev->query($sqllog);
|
|
}
|
|
}
|
|
|
|
if($sample_bbtb == 0 && $order_bbtb > 0) {
|
|
$messages_log[] = "BB TB";
|
|
}
|
|
if($sample_bw == 0 && $order_bw > 0) {
|
|
$messages_log[] = "Buta Warna ";
|
|
}
|
|
if($sample_gluc == 0 && $order_gluc > 0) {
|
|
$messages_log[] = "Gula darah";
|
|
}
|
|
if($sample_visus == 0 && $order_visus > 0) {
|
|
$messages_log[] = "Visus";
|
|
}
|
|
|
|
if(count($messages_log) > 0) {
|
|
$message .= implode(" , ", $messages_log);
|
|
$result = array("message" => "Belum sampling " . $message);
|
|
}else{
|
|
$result = array("message" => "Data berhasil disimpan");
|
|
}
|
|
|
|
$this->sys_ok($result);
|
|
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
function getlab($id, $isApi)
|
|
{
|
|
$prm = $this->sys_input;
|
|
|
|
$this->generate_kelainan_lab($id);
|
|
// Mcu_KelainanName AS kelainanName,
|
|
// Mcu_KelainanGroupName AS kelainanGroupName,
|
|
// LEFT JOIN t_kelainan_lab
|
|
// ON T_OrderDetailT_OrderHeaderID = T_KelainanLabT_OrderHeaderID
|
|
// AND T_OrderDetailID = T_KelainanLabT_OrderDetailID
|
|
// AND T_TestNat_TestID = T_KelainanLabNat_TestID
|
|
// AND T_KelainanLabIsActive = 'Y'
|
|
// LEFT JOIN mcu_summarylab
|
|
// ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID
|
|
// AND T_TestNat_TestID = Mcu_SummaryLabNat_TestID
|
|
// AND Mcu_SummaryLabIsActive = 'Y'
|
|
// LEFT join mcu_kelainan on Mcu_SummaryLabMcu_KelainanID = Mcu_KelainanID
|
|
// AND Mcu_KelainanIsActive = 'Y'
|
|
// LEFT join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
|
|
// AND Mcu_KelainanGroupIsActive = 'Y'
|
|
$sql = "SELECT
|
|
T_OrderDetailID,
|
|
'' AS smLabID,
|
|
'' AS natTestID,
|
|
'' AS value,
|
|
'' AS kelainanID,
|
|
'' AS smLabType,
|
|
'' AS isNormal,
|
|
'' AS methode,
|
|
'' AS methodeID,
|
|
'' AS kelainanSaran,
|
|
T_OrderDetailT_OrderHeaderID AS orderID,
|
|
T_OrderDetailID AS orderDetailID,
|
|
T_OrderDetailT_TestID AS testID,
|
|
T_OrderDetailT_TestCode AS testCode,
|
|
T_OrderDetailT_TestSasCode AS testSasCode,
|
|
T_OrderDetailT_TestName AS testName,
|
|
T_OrderDetailResult AS result,
|
|
Nat_SubSubGroupID AS subGroupID,
|
|
T_OrderDetailMinValue AS minValues,
|
|
T_OrderDetailMaxValue AS maxValues,
|
|
Nat_SubSubGroupName AS groupName,
|
|
T_TestNat_TestID AS natTestID,
|
|
T_TestIsQuantitative as isKuantitatif,
|
|
CASE
|
|
WHEN T_OrderDetailResultFlag IS NULL THEN 'Y'
|
|
WHEN T_OrderDetailResultFlag = '' THEN 'Y'
|
|
ELSE 'N'
|
|
END testNormal,
|
|
T_OrderDetailResultFlag,
|
|
null AS resultID,
|
|
'N' AS resultValidation,
|
|
'NEW' AS resultStatus,
|
|
Mcu_ResumeDetailsID AS resumeDetailsID,
|
|
CASE
|
|
WHEN Mcu_ResumeDetailsMcu_ResumeID IS NULL THEN 'N'
|
|
WHEN Mcu_ResumeDetailsMcu_ResumeID IS NOT NULL THEN 'Y'
|
|
END as hasResult,
|
|
Mcu_ResumeID AS resumeID ,
|
|
Mcu_ResumeKesimpulan AS resumeKesimpulan ,
|
|
Mcu_ResumeRekomendasi AS resumeRekomendasi ,
|
|
Mcu_ResumeSaran AS resumeSaran ,
|
|
Mcu_ResumeDetailsResult AS resumeDetailResult ,
|
|
Mcu_ResumeDetailsResult AS resumeEntryResult
|
|
FROM t_orderdetail
|
|
JOIN group_resultdetail
|
|
ON T_OrderDetailT_TestID = Group_ResultDetailT_TestID
|
|
AND Group_ResultDetailIsActive ='Y'
|
|
JOIN group_result
|
|
ON Group_ResultID = Group_ResultDetailGroup_ResultID
|
|
AND Group_ResultResumeMcu IN ('LAB')
|
|
JOIN t_test
|
|
ON T_OrderDetailT_TestID = T_TestID
|
|
JOIN nat_subsubgroup
|
|
ON T_TestNat_SubSubGroupID=Nat_SubSubGroupID
|
|
LEFT JOIN mcu_resume
|
|
ON T_OrderDetailT_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
|
|
AND Mcu_ResumeIsActive = 'Y'
|
|
LEFT JOIN mcu_resumedetails
|
|
-- ON T_OrderDetailID = Mcu_ResumeDetailsT_OrderDetailID
|
|
ON Mcu_ResumeDetailsMcu_ResumeID = Mcu_ResumeID
|
|
AND T_TestNat_SubSubGroupID = Mcu_ResumeDetailsNat_SubSubGroupID
|
|
AND Mcu_ResumeDetailsIsActive = 'Y'
|
|
WHERE T_OrderDetailT_OrderHeaderID = {$id}
|
|
AND T_OrderDetailIsActive = 'Y'
|
|
AND T_OrderDetailT_TestIsResult = 'Y'";
|
|
|
|
// echo $sql;
|
|
$query = $this->db_onedev->query($sql, []);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$test = $query->result_array();
|
|
for ($i = 0; $i < count($test); $i++) {
|
|
$e = $test[$i];
|
|
$kelainan = '';
|
|
$saran = '';
|
|
$rstNormal = 'Y';
|
|
if ($e['hasResult'] == 'Y') {
|
|
$kelainan = $e['resumeDetailResult'];
|
|
if (trim($e['resumeDetailResult']) !== 'Dalam batas normal') {
|
|
$rstNormal = 'N';
|
|
}
|
|
} else {
|
|
if ($e['result'] !== null) {
|
|
# code...
|
|
if ($e['testNormal'] == 'N' && is_numeric($e['result'])) {
|
|
if (floatval($e['result']) >= floatval($e['maxValues'])) {
|
|
$kelainan = $e['testName'] . " meningkat ({$e['result']})";
|
|
}
|
|
if (floatval($e['result']) < floatval($e['minValues'])) {
|
|
$kelainan = $e['testName'] . " menurun ({$e['result']})";
|
|
}
|
|
$rstNormal = 'N';
|
|
}
|
|
if ($e['testNormal'] == 'N' && !is_numeric($e['result'])) {
|
|
$kelainan = $e['testName'] . " ({$e['result']})";
|
|
$rstNormal = 'N';
|
|
}
|
|
if ($e['testNormal'] == 'Y') {
|
|
$kelainan = "Dalam batas normal";
|
|
$rstNormal = 'Y';
|
|
}
|
|
}
|
|
// if ($e['smLabID'] != null) {
|
|
// // print_r("masuk else");
|
|
// if ($e['testNormal'] == 'Y') {
|
|
// if ($e['smLabType'] == '<' || $e['smLabType'] == '<=') {
|
|
// $ket = 'menurun';
|
|
// $value_comparison = $e['minValues'];
|
|
// }
|
|
// if ($e['smLabType'] == '>' || $e['smLabType'] == '>=') {
|
|
// $ket = 'meningkat';
|
|
// $value_comparison = $e['maxValues'];
|
|
// }
|
|
// //echo "Y";
|
|
// // if ($e['methode'] == 'N' && $this->dynamic_comparison($e['value'], $e['smLabType'], $value_comparison)) {
|
|
// if ($e['smLabType'] == '<' || $e['smLabType'] == '<=') {
|
|
// $ket = 'menurun';
|
|
// }
|
|
// if ($e['smLabType'] == '>' || $e['smLabType'] == '>=') {
|
|
// $ket = 'meningkat';
|
|
// }
|
|
// $kelainan = "";
|
|
// // $kelainan = $e['testName'] . " " . $ket . "({$e['result']})";
|
|
// if ($e['kelainanSaran'] != null) {
|
|
// # code...
|
|
// $saran = $e['kelainanSaran'];
|
|
// }
|
|
// $rstNormal = 'Y';
|
|
// // }
|
|
// } else {
|
|
// $value_comparison = $e['value'];
|
|
// if ($e['smLabType'] == '!=' || $e['smLabType'] == '==') {
|
|
// // if ($this->dynamic_comparison($e['value'], $e['smLabType'], $value_comparison)) {
|
|
// //echo $r['T_TestName']." : ".$r['Mcu_KelainanName'].", ";
|
|
// //langsung hasil
|
|
// // $kelainan = $e;
|
|
// $kelainan = $e['testName'] . " " . "{$e['result']}";
|
|
// if ($e['kelainanSaran'] != null) {
|
|
// # code...
|
|
// $saran = $e['kelainanSaran'];
|
|
// }
|
|
// $rstNormal = 'N';
|
|
// // }
|
|
// } else {
|
|
// // if (is_numeric($e['value']) && $this->dynamic_comparison($e['value'], $e['smLabType'], $value_comparison)) {
|
|
// if ($e['smLabType'] == '<' || $e['smLabType'] == '<=') {
|
|
// $ket = 'menurun';
|
|
// }
|
|
// if ($e['smLabType'] == '>' || $e['smLabType'] == '>=') {
|
|
// $ket = 'meningkat';
|
|
// }
|
|
// // $kelainan = $e;
|
|
// $kelainan = $e['testName'] . " " . $ket . "({$e['result']})";
|
|
// if ($e['kelainanSaran'] != null) {
|
|
// # code...
|
|
// $saran = $e['kelainanSaran'];
|
|
// }
|
|
// $rstNormal = 'N';
|
|
// // }
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
|
|
// $sql = "SELECT
|
|
// Mcu_SummaryLabID AS smLabID,
|
|
// Mcu_SummaryLabNat_TestID AS natTestID,
|
|
// Mcu_SummaryLabValue AS value,
|
|
// Mcu_summaryLabMcu_KelainanID AS kelainanID,
|
|
// Mcu_SummaryLabType AS smLabType,
|
|
// Mcu_SummaryLabIsNormalValue AS isNormal,
|
|
// Mcu_SummaryLabWithMethode AS methode,
|
|
// Mcu_SummaryLabNat_MethodeID AS methodeID,
|
|
// Mcu_KelainanName AS kelainanName,
|
|
// Mcu_KelainanGroupName AS kelainanGroupName,
|
|
// `fn_getadvicebykelainanid`(Mcu_summaryLabMcu_KelainanID) AS kelainanSaran
|
|
// FROM mcu_summarylab
|
|
// join mcu_kelainan on Mcu_SummaryLabMcu_KelainanID = Mcu_KelainanID
|
|
// join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
|
|
// WHERE Mcu_SummaryLabNat_TestID = '{$e['natTestID']}'
|
|
// AND Mcu_SummaryLabIsActive = 'Y'";
|
|
// $query = $this->db_onedev->query($sql, []);
|
|
// // echo $this->db_onedev->last_query();
|
|
// // exit;
|
|
// if (!$query) {
|
|
// $message = $this->db_onedev->error();
|
|
// $message['qry'] = $this->db_onedev->last_query();
|
|
// $this->sys_error($message);
|
|
// exit;
|
|
// }
|
|
// $normalValue = $query->result_array();
|
|
// // echo $normalValue;
|
|
// // exit;
|
|
// $test[$i]['normalValue'] = $normalValue;
|
|
// // $test[$i]['test'] = $normalValue;
|
|
|
|
// for ($k = 0; $k < count($normalValue); $k++) {
|
|
// $ket = '';
|
|
// $nv = $normalValue[$k];
|
|
// // if ($e['value'] != null && trim($e['value']) != '') {
|
|
|
|
// if ($nv['isNormal'] == 'Y') {
|
|
// if ($nv['smLabType'] == '<' || $nv['smLabType'] == '<=') {
|
|
// $ket = 'menurun';
|
|
// $value_comparison = $e['minValues'];
|
|
// }
|
|
// if ($nv['smLabType'] == '>' || $nv['smLabType'] == '>=') {
|
|
// $ket = 'meningkat';
|
|
// $value_comparison = $e['maxValues'];
|
|
// }
|
|
// //echo "Y";
|
|
// if ($nv['methode'] == 'N' && $this->dynamic_comparison($e['value'], $nv['smLabType'], $value_comparison)) {
|
|
// if ($nv['smLabType'] == '<' || $nv['smLabType'] == '<=') {
|
|
// $ket = 'menurun';
|
|
// }
|
|
// if ($nv['smLabType'] == '>' || $nv['smLabType'] == '>=') {
|
|
// $ket = 'meningkat';
|
|
// }
|
|
// $kelainan = $e['testName'] . " " . $ket . "({$e['result']})";
|
|
// $saran = $nv['kelainanSaran'];
|
|
// $rstNormal = 'N';
|
|
// }
|
|
// } else {
|
|
// $value_comparison = $nv['value'];
|
|
// if ($nv['smLabType'] == '!=' || $nv['smLabType'] == '==') {
|
|
// if ($this->dynamic_comparison($e['value'], $nv['smLabType'], $value_comparison)) {
|
|
// //echo $r['T_TestName']." : ".$r['Mcu_KelainanName'].", ";
|
|
// //langsung hasil
|
|
// // $kelainan = $nv;
|
|
// $kelainan = $e['testName'] . " " . "{$e['result']}";
|
|
// $saran = $nv['kelainanSaran'];
|
|
// $rstNormal = 'N';
|
|
// }
|
|
// } else {
|
|
// if (is_numeric($e['value']) && $this->dynamic_comparison($e['value'], $nv['smLabType'], $value_comparison)) {
|
|
// if ($nv['smLabType'] == '<' || $nv['smLabType'] == '<=') {
|
|
// $ket = 'menurun';
|
|
// }
|
|
// if ($nv['smLabType'] == '>' || $nv['smLabType'] == '>=') {
|
|
// $ket = 'meningkat';
|
|
// }
|
|
// // $kelainan = $nv;
|
|
// $kelainan = $e['testName'] . " " . $ket . "({$e['result']})";
|
|
// $saran = $nv['kelainanSaran'];
|
|
// $rstNormal = 'N';
|
|
// }
|
|
// }
|
|
// }
|
|
// // }
|
|
// }
|
|
}
|
|
$test[$i]['kelainan'] = $kelainan;
|
|
$test[$i]['resultIsNormal'] = $rstNormal;
|
|
$test[$i]['saran'] = $saran;
|
|
}
|
|
$newGab = [];
|
|
|
|
$group = [];
|
|
//penggabungan test
|
|
for ($i = 0; $i < count($test); $i++) {
|
|
$e = $test[$i];
|
|
|
|
if (!in_array($e['groupName'], $group)) {
|
|
$group[] = $e['groupName'];
|
|
if ($e['resultIsNormal'] == 'Y') {
|
|
$e['kelainan'] = '';
|
|
}
|
|
$newGab[] = $e;
|
|
} else {
|
|
for ($k = 0; $k < count($newGab); $k++) {
|
|
$nv = $newGab[$k];
|
|
if ($e['groupName'] == $nv['groupName']) {
|
|
|
|
if ($test[$i]['resultIsNormal'] == 'N') {
|
|
# code...
|
|
if (trim($newGab[$k]['kelainan']) == "") {
|
|
$newGab[$k]['kelainan'] = $test[$i]['kelainan'];
|
|
} else {
|
|
if ($newGab[$k]['kelainan'] != $test[$i]['kelainan']) {
|
|
$newGab[$k]['kelainan'] = $newGab[$k]['kelainan'] . ', ' . $test[$i]['kelainan'];
|
|
}
|
|
}
|
|
if (trim($newGab[$k]['saran']) == "" && trim($test[$i]['saran']) != '') {
|
|
$newGab[$k]['saran'] = $test[$i]['saran'];
|
|
$newGab[$k]['saranArr'][] = $test[$i]['saran'];
|
|
} else {
|
|
if (trim($test[$i]['saran']) != '') {
|
|
$newGab[$k]['saran'] = $newGab[$k]['saran'] . '@' . $test[$i]['saran'];
|
|
}
|
|
}
|
|
if ($newGab[$k]['testIDKelainan'] == '' && !isset($newGab[$k]['testIDKelainan'])) {
|
|
# code...
|
|
$newGab[$k]['testIDKelainan'] = $test[$i]['testID'];
|
|
} else {
|
|
$newGab[$k]['testIDKelainan'] = $newGab[$k]['testIDKelainan'] . ',' . $test[$i]['testID'];
|
|
}
|
|
}
|
|
$newGab[$k]['testID'] = $newGab[$k]['testID'] . ', ' . $test[$i]['testID'];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for ($i = 0; $i < count($newGab); $i++) {
|
|
$newGab[$i]['normalValue'] = '';
|
|
if (trim(str_replace(',', '', $newGab[$i]['kelainan'])) != '') {
|
|
$newGab[$i]['resultIsNormal'] = 'N';
|
|
} else {
|
|
$newGab[$i]['resultIsNormal'] = 'Y';
|
|
$newGab[$i]['kelainan'] = 'Dalam batas normal';
|
|
}
|
|
|
|
//saran unique
|
|
$expldSaran = explode('@', $newGab[$i]['saran']);
|
|
$expldSaranUnique = array_unique($expldSaran);
|
|
$newGab[$i]['saran'] = implode('@', $expldSaranUnique);
|
|
$expldTestIdKelainan = explode('@', $newGab[$i]['testIDKelainan']);
|
|
$expldTestIdKelainanUnique = array_unique($expldTestIdKelainan);
|
|
$newGab[$i]['testIDKelainan'] = implode(',', $expldTestIdKelainanUnique);
|
|
}
|
|
if ($isApi == 'Y') {
|
|
$this->sys_ok([
|
|
"test" => $test,
|
|
'gab' => $newGab
|
|
]);
|
|
} else {
|
|
return $newGab;
|
|
}
|
|
}
|
|
function dynamic_comparison($varleft, $op, $varright)
|
|
{
|
|
|
|
switch ($op) {
|
|
case "=":
|
|
return $varleft == $varright;
|
|
case "!=":
|
|
return $varleft != $varright;
|
|
case ">=":
|
|
return $varleft >= $varright;
|
|
case "<=":
|
|
return $varleft <= $varright;
|
|
case ">":
|
|
return $varleft > $varright;
|
|
case "<":
|
|
return $varleft < $varright;
|
|
default:
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function generate_kelainan_lab($orderid)
|
|
{
|
|
$sql = "select
|
|
T_OrderHeaderID,T_OrderHeaderLabNumber,
|
|
T_TestName, T_OrderDetailID, T_OrderDetailResult, T_OrderDetailNat_MethodeID,
|
|
T_OrderDetailNat_MethodeID, T_OrderDetailNat_MethodeName,
|
|
T_OrderDetailMinValue, T_OrderDetailMaxValue, T_OrderDetailMinValueInclusive,
|
|
T_OrderDetailMaxValueInclusive,
|
|
Mcu_SummaryLabID,
|
|
Mcu_SummaryLabValue,
|
|
Mcu_SummaryLabNat_MethodeID,
|
|
Mcu_SummaryLabWithMethode,
|
|
Mcu_SummaryLabType,
|
|
Mcu_SummaryLabIsNormalValue,
|
|
Mcu_KelainanID, Mcu_KelainanName, Mcu_KelainanClasification,
|
|
Nat_TestID,
|
|
Nat_TestCode,
|
|
mcu_kelainangroup.*
|
|
from t_orderdetail
|
|
join t_orderheader on T_OrderHeaderID = {$orderid}
|
|
and T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
|
and T_OrderDetailIsActive = 'Y'
|
|
join t_test
|
|
on T_OrderDetailT_TestID = T_TestID
|
|
join nat_test ON T_TestNat_TestID = Nat_TestID
|
|
join mcu_summarylab on T_TestNat_TestID = Mcu_SummaryLabNat_TestID AND Mcu_SummaryLabIsActive = 'Y'
|
|
join mcu_kelainan on Mcu_SummaryLabMcu_KelainanID = Mcu_KelainanID
|
|
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID";
|
|
//echo $sql;
|
|
$qry = $this->db_onedev->query($sql);
|
|
if (!$qry) {
|
|
echo $this->db_onedev->last_query();
|
|
echo json_encode([
|
|
"status" => "ERR",
|
|
"message" => "Error get order | " . $this->db_onedev->error()["message"]
|
|
]);
|
|
exit;
|
|
}
|
|
|
|
$rows = $qry->result_array();
|
|
$results = [];
|
|
|
|
|
|
|
|
foreach ($rows as $r) {
|
|
$result_value = $r['T_OrderDetailResult'];
|
|
|
|
$value_comparison = 0;
|
|
//echo $r['Mcu_SummaryLabIsNormalValue'];
|
|
$kelainan = [];
|
|
$notavailable = [];
|
|
if (trim($result_value) == 'NA') {
|
|
$notavailable = $r;
|
|
} elseif ($r['Mcu_SummaryLabIsNormalValue'] == 'Y') {
|
|
if ($r['Mcu_SummaryLabType'] == '<' || $r['Mcu_SummaryLabType'] == '<=') {
|
|
$value_comparison = $r['T_OrderDetailMinValue'];
|
|
}
|
|
if ($r['Mcu_SummaryLabType'] == '>' || $r['Mcu_SummaryLabType'] == '>=') {
|
|
$value_comparison = $r['T_OrderDetailMaxValue'];
|
|
}
|
|
//echo "Y";
|
|
if ($r['Mcu_SummaryLabWithMethode'] == 'N' && $this->dynamic_comparison($result_value, $r['Mcu_SummaryLabType'], $value_comparison)) {
|
|
//echo $r['T_TestName']." : ".$r['Mcu_KelainanName'].", ";
|
|
$kelainan = $r;
|
|
$results[] = array('test' => $r['T_TestName'], 'nat_test' => $r['Nat_TestCode'], 'kelainan' => $r['Mcu_KelainanName'], 'orderdetailID' => $r['T_OrderDetailID'], 'orderheaderID' => $r['T_OrderHeaderID'], 'nat_testID' => $r['Nat_TestID'], 'mcu_summarylabID' => $r['Mcu_SummaryLabID']);
|
|
}
|
|
} else {
|
|
$value_comparison = $r['Mcu_SummaryLabValue'];
|
|
if ($r['Mcu_SummaryLabType'] == '!=' || $r['Mcu_SummaryLabType'] == '==') {
|
|
if ($this->dynamic_comparison($result_value, $r['Mcu_SummaryLabType'], $value_comparison)) {
|
|
//echo $r['T_TestName']." : ".$r['Mcu_KelainanName'].", ";
|
|
$kelainan = $r;
|
|
$results[] = array('test' => $r['T_TestName'], 'nat_test' => $r['Nat_TestCode'], 'kelainan' => $r['Mcu_KelainanName'], 'orderdetailID' => $r['T_OrderDetailID'], 'orderheaderID' => $r['T_OrderHeaderID'], 'nat_testID' => $r['Nat_TestID'], 'mcu_summarylabID' => $r['Mcu_SummaryLabID']);
|
|
}
|
|
} else {
|
|
if (is_numeric($result_value) && $this->dynamic_comparison($result_value, $r['Mcu_SummaryLabType'], $value_comparison)) {
|
|
//echo $r['T_TestName']." : ".$r['Mcu_KelainanName'].", ";
|
|
$kelainan = $r;
|
|
$results[] = array('test' => $r['T_TestName'], 'nat_test' => $r['Nat_TestCode'], 'kelainan' => $r['Mcu_KelainanName'], 'orderdetailID' => $r['T_OrderDetailID'], 'orderheaderID' => $r['T_OrderHeaderID'], 'nat_testID' => $r['Nat_TestID'], 'mcu_summarylabID' => $r['Mcu_SummaryLabID']);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (count($results) > 0) {
|
|
$sql = "UPDATE t_kelainan_lab
|
|
SET T_KelainanLabIsActive = 'N'
|
|
WHERE
|
|
T_KelainanLabT_OrderHeaderID = {$orderid}";
|
|
$this->db_onedev->query($sql);
|
|
|
|
foreach ($results as $v_result) {
|
|
$sql_kel_lab = "SELECT *
|
|
FROM t_kelainan_lab
|
|
WHERE T_KelainanLabT_OrderDetailID = ?
|
|
GROUP BY T_KelainanLabT_OrderDetailID";
|
|
$qry_kel_lab = $this->db_onedev->query($sql_kel_lab, array($v_result['orderdetailID']));
|
|
if ($qry_kel_lab) {
|
|
$rows_kel = $qry_kel_lab->result_array();
|
|
} else {
|
|
$this->sys_error_db("select kelainan lab", $this->db_onedev);
|
|
exit;
|
|
}
|
|
|
|
if (count($rows_kel) > 0) {
|
|
|
|
// print_r($v_result['orderdetailID']);
|
|
// exit;
|
|
|
|
$sql_update_kel = "UPDATE t_kelainan_lab
|
|
SET T_KelainanLabT_OrderDetailID = {$v_result['orderdetailID']},
|
|
T_KelainanLabT_OrderHeaderID = {$v_result['orderheaderID']},
|
|
T_KelainanLabNat_TestID = {$v_result['nat_testID']},
|
|
T_KelainanLabMcu_SummaryLabID = {$v_result['mcu_summarylabID']},
|
|
T_KelainanLabCreatedUserID = 1,
|
|
T_KelainanLabIsActive = 'Y',
|
|
T_KelainanLabCreated = NOW()
|
|
WHERE T_KelainanLabID = {$rows_kel[0]['T_KelainanLabID']}";
|
|
$qry_update_kel = $this->db_onedev->query($sql_update_kel);
|
|
if (!$qry_update_kel) {
|
|
echo $this->db_onedev->last_query();
|
|
//$this->db_onedev->trans_rollback();
|
|
$this->sys_error_db('error', 'Error update lab: ' . $this->db_onedev);
|
|
exit;
|
|
}
|
|
} else {
|
|
// print_r('insert');
|
|
// exit;
|
|
$sql_insert_lab = "INSERT INTO t_kelainan_lab(
|
|
T_KelainanLabT_OrderDetailID,
|
|
T_KelainanLabT_OrderHeaderID,
|
|
T_KelainanLabNat_TestID,
|
|
T_KelainanLabMcu_SummaryLabID,
|
|
T_KelainanLabCreatedUserID,
|
|
T_KelainanLabCreated)
|
|
VALUES(
|
|
'{$v_result['orderdetailID']}',
|
|
'{$v_result['orderheaderID']}',
|
|
'{$v_result['nat_testID']}',
|
|
'{$v_result['mcu_summarylabID']}',
|
|
1,
|
|
NOW())";
|
|
$qry_insert_lab = $this->db_onedev->query($sql_insert_lab);
|
|
|
|
if (!$qry_insert_lab) {
|
|
//$this->db_onedev->trans_rollback();
|
|
echo $this->db_onedev->last_query();
|
|
$this->sys_error_db('error', 'Error insert kelainan lab: ' . $this->db_onedev);
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
function savedoctor()
|
|
{
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
$id = $prm['id'];
|
|
$doctorid = $prm['doctorid'];
|
|
$userid = $this->sys_user["M_UserID"];
|
|
//insert mcu_resume
|
|
$resumeID = 0;
|
|
$sql = "SELECT Mcu_ResumeID
|
|
FROM mcu_resume
|
|
WHERE Mcu_ResumeT_OrderHeaderID = ?
|
|
AND Mcu_ResumeIsActive = 'Y'";
|
|
$query = $this->db_onedev->query($sql, [$id]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
|
|
$dataCek = $query->result_array();
|
|
if (count($dataCek) == 0) {
|
|
$sql = "INSERT INTO mcu_resume
|
|
(Mcu_ResumeT_OrderHeaderID,
|
|
Mcu_ResumeStatus,
|
|
Mcu_ResumeM_DoctorID,
|
|
Mcu_ResumeCreated,
|
|
Mcu_ResumeUserID
|
|
)
|
|
VALUES(?,'NEW',?,NOW(),?)";
|
|
$query = $this->db_onedev->query($sql, [
|
|
$id,
|
|
$doctorid,
|
|
$userid,
|
|
]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$resumeID = $this->db_onedev->insert_id();
|
|
} else {
|
|
$resumeID = $dataCek[0]['Mcu_ResumeID'];
|
|
$sql = "UPDATE mcu_resume
|
|
SET Mcu_ResumeM_DoctorID = ?,
|
|
Mcu_ResumeUserID = ?
|
|
WHERE Mcu_ResumeID = ?";
|
|
$query = $this->db_onedev->query($sql, [
|
|
$doctorid,
|
|
$userid,
|
|
$resumeID,
|
|
]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
$this->sys_ok('OK');
|
|
exit;
|
|
}
|
|
}
|