362 lines
15 KiB
PHP
362 lines
15 KiB
PHP
<?php
|
|
class Injectdetail extends MY_Controller
|
|
{
|
|
var $db_onedev;
|
|
var $load;
|
|
var $kesimpulanfisik;
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->db_onedev = $this->load->database("onedev", true);
|
|
// $this->load->library("SsPriceMou");
|
|
}
|
|
public function index()
|
|
{
|
|
echo "CPONE RESUME INDIVIDU API";
|
|
}
|
|
public function getpatient($setupID, $startDate, $endDate, $debug = 'N')
|
|
{
|
|
$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
|
|
FROM t_orderheader
|
|
JOIN m_patient
|
|
ON T_OrderHeaderM_PatientID = M_PatientID
|
|
AND (DATE_FORMAT(T_OrderHeaderDate, '%Y-%m-%d') BETWEEN ? AND ?)
|
|
AND T_OrderHeaderMgm_McuID = ?
|
|
AND T_OrderHeaderIsActive = 'Y'
|
|
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'
|
|
ORDER BY T_OrderHeaderLabNumber
|
|
|
|
";
|
|
$query = $this->db_onedev->query($sql, [$startDate, $endDate, $setupID]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$result = $query->result_array();
|
|
if ($debug == "N") {
|
|
return $result;
|
|
} else {
|
|
$this->sys_ok($result);
|
|
}
|
|
}
|
|
public function getDetail($orderID, $debug = 'N')
|
|
{
|
|
//get detail yang belum ada di resume_detail
|
|
$sql = "SELECT * FROM (
|
|
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'
|
|
AND T_OrderDetailT_OrderHeaderID = ?
|
|
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 NonlabTemplateMcuM_LangID = 1
|
|
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'
|
|
GROUP BY T_OrderDetailT_TestID
|
|
) x
|
|
WHERE resumeDetailsID = 0 OR resumeDetailResult IS NULL OR resumeDetailResult = ''
|
|
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;
|
|
}
|
|
$result = $query->result_array();
|
|
$this->load->library("Kesimpulanfisik");
|
|
for ($i = 0; $i < count($result); $i++) {
|
|
if ($result[$i]['category'] == 'FISIK') {
|
|
$kesimpulanFisik = $this->kesimpulanfisik->kesimpulan($result[$i]['resultID']);
|
|
$result[$i]['result'] = $kesimpulanFisik;
|
|
$result[$i]['resumeEntryResult'] = $kesimpulanFisik;
|
|
if ($kesimpulanFisik != 'Tidak ditemukan kelainan.') {
|
|
$result[$i]['isNormal'] = 1;
|
|
} else {
|
|
$result[$i]['isNormal'] = 0;
|
|
}
|
|
}
|
|
}
|
|
if ($debug == "N") {
|
|
return $result;
|
|
} else {
|
|
$this->sys_ok($result);
|
|
}
|
|
}
|
|
|
|
public function inject($setupID, $startDate, $endDate)
|
|
{
|
|
$order = $this->getpatient($setupID, $startDate, $endDate);
|
|
|
|
for ($i = 0; $i < count($order); $i++) {
|
|
$ord = $order[$i];
|
|
$detail = $this->getDetail($ord['orderID']);
|
|
$order[$i]['dtl'] = $detail;
|
|
}
|
|
|
|
$this->sys_ok($order);
|
|
}
|
|
|
|
public function injectV2()
|
|
{
|
|
$jsonBefore = "";
|
|
$jsonAfter = "";
|
|
$prm = $this->sys_input;
|
|
$action = 'INJECT DETAIL BELUM INPUT';
|
|
$data = $prm['data'];
|
|
$resumeID = $data['resumeID'];
|
|
$userid = '9999';
|
|
|
|
$sql = "SELECT *
|
|
FROM mcu_resume
|
|
WHERE Mcu_ResumeID = ?
|
|
AND Mcu_ResumeIsActive = 'Y'";
|
|
$query = $this->db_onedev->query($sql, [$resumeID]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$resumeBefore = $query->result_array()[0];
|
|
$jsonBefore = $resumeBefore;
|
|
|
|
//get detail for log
|
|
$sql = "SELECT *
|
|
FROM mcu_resumedetails
|
|
WHERE
|
|
Mcu_ResumeDetailsMcu_ResumeID = ?
|
|
AND Mcu_ResumeDetailsIsActive = 'Y'";
|
|
$query = $this->db_onedev->query($sql, [$resumeID]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$detailResume = $query->result_array();
|
|
$jsonBefore['detail'] = $detailResume;
|
|
|
|
$sql = "SELECT Mcu_ResumeDetailsID
|
|
FROM mcu_resumedetails
|
|
WHERE Mcu_ResumeDetailsT_OrderDetailID = ?
|
|
AND Mcu_ResumeDetailsT_TestID = ?
|
|
AND Mcu_ResumeDetailsCategory = ?
|
|
AND Mcu_ResumeDetailsIsActive = 'Y'";
|
|
$query = $this->db_onedev->query($sql, [
|
|
$data['detailOrderID'],
|
|
$data['testID'],
|
|
$data['category'],
|
|
]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$cekDetail = $query->result_array();
|
|
if (count($cekDetail) == 0) {
|
|
$action = 'INJECT DETAIL BELUM INPUT';
|
|
$sql = "INSERT INTO mcu_resumedetails(
|
|
Mcu_ResumeDetailsMcu_ResumeID,
|
|
Mcu_ResumeDetailsCategory,
|
|
Mcu_ResumeDetailsT_OrderDetailID,
|
|
Mcu_ResumeDetailsT_TestID,
|
|
Mcu_ResumeDetailsResult,
|
|
Mcu_ResumeDetailsCreated,
|
|
Mcu_ResumeDetailsUserID)
|
|
VALUES(?,?,?,?,?,NOW(),?)";
|
|
$query = $this->db_onedev->query($sql, [
|
|
$resumeID,
|
|
$data['category'],
|
|
$data['detailOrderID'],
|
|
$data['testID'],
|
|
$data['resumeEntryResult'],
|
|
$userid,
|
|
]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
} else {
|
|
$action = 'UPDATE DETAIL INPUT KOSONG';
|
|
$sql = "UPDATE mcu_resumedetails
|
|
SET Mcu_ResumeDetailsResult = ?,
|
|
Mcu_ResumeDetailsLastUpdated = NOW(),
|
|
Mcu_ResumeDetailsUserID = ?
|
|
WHERE Mcu_ResumeDetailsID = ?";
|
|
$query = $this->db_onedev->query($sql, [
|
|
$data['resumeEntryResult'],
|
|
$userid,
|
|
$cekDetail[0]['Mcu_ResumeDetailsID']
|
|
]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
$sql = "SELECT *
|
|
FROM mcu_resume
|
|
WHERE Mcu_ResumeID = ?
|
|
AND Mcu_ResumeIsActive = 'Y'";
|
|
$query = $this->db_onedev->query($sql, [$resumeID]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$jsonAfter = $query->result_array()[0];
|
|
//get detail for log
|
|
$sql = "SELECT *
|
|
FROM mcu_resumedetails
|
|
WHERE
|
|
Mcu_ResumeDetailsMcu_ResumeID = ?
|
|
AND Mcu_ResumeDetailsIsActive = 'Y'";
|
|
$query = $this->db_onedev->query($sql, [$resumeID,]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$detailAfter = $query->result_array();
|
|
$jsonAfter['detail'] = $detailAfter;
|
|
|
|
$sql = "INSERT INTO cpone_log.log_mcu_resume_inject
|
|
(log_Mcu_ResumeMcu_ResumeID,
|
|
log_Mcu_ResumeJsonBefore,
|
|
log_Mcu_ResumeJsonAfter,
|
|
log_Mcu_ResumeJsonPrm,
|
|
log_Mcu_ResumeType,
|
|
log_Mcu_ResumeUserID,
|
|
log_Mcu_ResumeCreated)
|
|
VALUES(?,?,?,?,?,?,NOW())";
|
|
$query = $this->db_onedev->query($sql, [
|
|
$resumeID,
|
|
json_encode($jsonBefore),
|
|
json_encode($jsonAfter),
|
|
json_encode($prm),
|
|
$action,
|
|
$userid
|
|
]);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$message['qry'] = $this->db_onedev->last_query();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$this->sys_ok('ok');
|
|
}
|
|
}
|