Files
2026-04-15 15:23:57 +07:00

1042 lines
45 KiB
PHP

<?php
class Mcu_nl extends MY_Controller
{
function __construct()
{
parent::__construct();
}
function log($msg)
{
$date = date("Y-m-d H:i:s");
echo "$date $msg\n";
}
/*
create table request(
requestID int not null auto_increment primary key,
requestType varchar(20),
requestM_CompanyID int,
requestStartDate varchar(10),
requestEndDate varchar(10),
requestStatus varchar(1) default 'N',
requestCreated datetime default current_timestamp(),
requestLasUpdated datetime default current_timestamp()
on update current_timestamp(),
requestUserID int default 3,
key(requestType),
key(requestStatus)
);
*/
function update_request() {
$param = $this->sys_input;
$id = $param["requestID"];
$sql = "update one_rekap.request set requestStatus = 'Y' where requestID = ?";
$qry = $this->db->query($sql,[$id]);
if (!$qry) {
echo json_encode(["status"=>"ERR", "message" => $this->db->error()["message"]]);
exit;
}
echo json_encode(["status" => "OK", "message" => "Request ID $id updated"]);
}
function get_request() {
$sql = "select M_CompanyName, request.*
from one_rekap.request
join m_company on RequestM_CompanyID = M_CompanyID
and requestType = 'nl'
and requestStatus = 'N'
limit 0,10";
$resp = $this->get_rows($sql);
if ($resp["status"] == -1) {
echo json_encode(["status"=>"ERR", "message" => $resp["message"]]);
exit;
}
echo json_encode(["status" => "OK", "data" => $resp["data"]]);
}
function get_order($companyID, $startDate, $endDate = "")
{
if ($enDate == "") {
$endDate = date("Y-m-d");
}
$sql = "select T_OrderHeaderID, T_OrderHeaderLabNumber,M_MouID, M_MouNumber, M_MouStartDate, M_MouEndDate
from t_orderheader
join m_mou on T_OrderHeaderM_CompanyID = ?
and T_OrderHeaderIsActive = 'Y' and M_MouID = T_OrderHeaderM_MouID
and M_MouIsActive = 'Y'
and T_OrderHeaderDate >- ? and T_OrderHeaderDate <= ?
join t_orderheaderaddon on T_OrderHeaderID = T_OrderHeaderAddOnT_OrderHeaderID
and T_OrderHeaderAddOnIsActive = 'Y'
and (
T_OrderHeaderAddOnPatientMCU = 'Y'
or
M_MouIsMcu = 'Y'
)
join mcu_resume on Mcu_ResumeT_OrderHeaderID = T_OrderHeaderID
order by M_MouID,T_OrderHeaderID";
$resp = $this->get_rows($sql, [$companyID, $startDate, $endDate]);
if ($resp["status"] == -1) {
$this->log(
"Err Get Orders : $startDate - $endDate " . $resp["message"]
);
exit();
}
$result = [];
$group = [];
$counter = 0;
$total = 0;
foreach ($resp["data"] as $d) {
$group[] = $d;
if ($counter == 25) {
$result[] = $group;
$counter = 0;
$group = [];
$total += 25;
}
$counter++;
}
$total += $counter;
if ($counter > 0) {
$result[] = $group;
}
echo json_encode(["status" => "OK", "data" => $result, "total" => $total]);
}
function nl_01()
{
$param = $this->sys_input;
$ids = implode(",", $param["order"]);
if ($ids == "") {
$ids = "-1";
}
$sql = " select
T_OrderHeaderID,
T_OrderHeaderDate orgT_OrderHeaderDate,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS T_OrderHeaderDate,T_OrderHeaderLabNumber,M_PatientLocation,
fn_lookup_external(T_OrderHeaderLabNumber,'L') as NOLAB ,
fn_get_name( T_OrderHeaderM_PatientID ) AS NAMA ,
SUBSTRING(T_OrderHeaderM_PatientAge , 1, 2) AS USIA,
M_SexCode as JENISKELAMIN ,
case when Nat_TestFlagMcu = 'C' then Nat_SubSubGroupName
when Mcu_ResumeDetailsCategory = 'konsul' then 'Konsultasi'
else T_TestName end as T_TestName ,
Mcu_ResumeDetailsResult,
M_CompanyNumber,
M_CompanyName,
M_MouName,
Mcu_ResumeDetailsCategory,
Mcu_ResumeDetailsID,
M_No_FormRev,
S_SystemsCompanyCity ,
DATE_FORMAT(now(), '%d-%m-%Y %T') AS DATENOW ,
M_CompanyID,
M_MouID,
T_TestSasCode, DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS M_PatientDOB,
M_PatientNIK ,
M_PatientJabatan ,
M_PatientKedudukan ,
M_PatientPJ ,
M_PatientJob,
M_PatientIDNumber
from t_orderheader
join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderID in ($ids)
left join mcu_resume on T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y'
left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y'
left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y'
left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y'
LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = 'LAB'
left join conf_systems on S_SystemsID > 0
left join mcu_resumedetails on Mcu_ResumeDetailsMcu_ResumeID = Mcu_ResumeID
left join t_test on Mcu_ResumeDetailsT_TestID = T_TestID
left join nat_test oN T_TestNat_TestID = Nat_TestID aND Nat_TestIsActive = 'Y'
left join nat_subgroup on Nat_TestNat_SubGroupID = Nat_SubgroupID anD Nat_SubGroupIsActive = 'Y'
left join nat_subsubgroup on Nat_TestNat_SubSubGroupID = Nat_SubSubGroupID and Nat_SubSubGroupIsActive = 'Y'
left join t_orderdetail on Mcu_ResumeDetailsT_OrderDetailID = T_OrderDetailID
where
T_OrderDetailIsActive = 'Y'
union all
select
T_OrderHeaderID,
T_OrderHeaderDate orgT_OrderHeaderDate,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS T_OrderHeaderDate,T_OrderHeaderLabNumber,M_PatientLocation,
fn_lookup_external(T_OrderHeaderLabNumber,'L') as NOLAB ,
fn_get_name( T_OrderHeaderM_PatientID ) AS NAMA ,
SUBSTRING(T_OrderHeaderM_PatientAge , 1, 2) AS USIA,
M_SexCode as JENISKELAMIN ,
'Kesimpulan' as T_TestName ,
Mcu_ResumeKesimpulan as Mcu_ResumeDetailsResult,
M_CompanyNumber,
M_CompanyName,
M_MouName,
'' as Mcu_ResumeDetailsCategory,
'' as Mcu_ResumeDetailsID,
'' as M_No_FormRev,
'' as S_SystemsCompanyCity ,
DATE_FORMAT(now(), '%d-%m-%Y %T') AS DATENOW ,
M_CompanyID,
M_MouID,
'7777777777' as T_TestSasCode, DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS M_PatientDOB,
M_PatientNIK ,
M_PatientJabatan ,
M_PatientKedudukan ,
M_PatientPJ ,
M_PatientJob,
M_PatientIDNumber
from t_orderheader
join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderID in ($ids)
left join mcu_resume on T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y'
left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y'
left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y'
left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y'
where
Mcu_ResumeKesimpulan <> ''
union all
select
T_OrderHeaderID,
T_OrderHeaderDate orgT_OrderHeaderDate,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS T_OrderHeaderDate,T_OrderHeaderLabNumber,M_PatientLocation,
fn_lookup_external(T_OrderHeaderLabNumber,'L') as NOLAB ,
fn_get_name( T_OrderHeaderM_PatientID ) AS NAMA ,
SUBSTRING(T_OrderHeaderM_PatientAge , 1, 2) AS USIA,
M_SexCode as JENISKELAMIN ,
'Rekomendasi' as T_TestName ,
Mcu_ResumeRekomendasi as Mcu_ResumeDetailsResult,
M_CompanyNumber,
M_CompanyName,
M_MouName,
'' as Mcu_ResumeDetailsCategory,
'' as Mcu_ResumeDetailsID,
'' as M_No_FormRev,
'' as S_SystemsCompanyCity ,
DATE_FORMAT(now(), '%d-%m-%Y %T') AS DATENOW ,
M_CompanyID,
M_MouID,
'8888888888' as T_TestSasCode, DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS M_PatientDOB ,
M_PatientNIK ,
M_PatientJabatan ,
M_PatientKedudukan ,
M_PatientPJ ,
M_PatientJob,
M_PatientIDNumber
from t_orderheader
join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderID in ($ids)
left join mcu_resume on T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y'
left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y'
left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y'
left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y'
where
Mcu_ResumeKesimpulan <> ''
and Mcu_ResumeRekomendasi <> ''
union all
select
T_OrderHeaderID,
T_OrderHeaderDate orgT_OrderHeaderDate,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS T_OrderHeaderDate,T_OrderHeaderLabNumber,M_PatientLocation,
fn_lookup_external(T_OrderHeaderLabNumber,'L') as NOLAB ,
fn_get_name( T_OrderHeaderM_PatientID ) AS NAMA ,
SUBSTRING(T_OrderHeaderM_PatientAge , 1, 2) AS USIA,
M_SexCode as JENISKELAMIN ,
'Saran' as T_TestName ,
Mcu_ResumeSaran as Mcu_ResumeDetailsResult,
M_CompanyNumber,
M_CompanyName,
M_MouName,
'' as Mcu_ResumeDetailsCategory,
'' as Mcu_ResumeDetailsID,
'' as M_No_FormRev,
'' as S_SystemsCompanyCity ,
DATE_FORMAT(now(), '%d-%m-%Y %T') AS DATENOW ,
M_CompanyID,
M_MouID,
'9999999999' as T_TestSasCode, DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS M_PatientDOB,
M_PatientNIK ,
M_PatientJabatan ,
M_PatientKedudukan ,
M_PatientPJ ,
M_PatientJob,
M_PatientIDNumber
from t_orderheader
join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderID in ($ids)
left join mcu_resume on T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y'
left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y'
left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y'
left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y'
where
Mcu_ResumeSaran <> '' ";
$resp = $this->get_rows($sql);
if ($resp["status"] == -1) {
echo json_encode([
"status" => "ERR",
"message" => $this->db->error()["message"],
]);
} else {
$tot_update = 0;
$tot_insert = 0;
foreach($resp["data"] as $dt) {
$resp = $this->insert_or_update("one_rekap.rekap_nl_001", $dt, [
"M_MouID",
"T_OrderHeaderID",
]);
if($resp["status"] == "ERR") {
echo json_encode($resp);
exit;
} else {
if($resp["message"] == "Update") {
$tot_update++;
} else {
$tot_insert++;
}
}
}
echo json_encode(["status" => "OK" , "message" => "Insert : $tot_insert , Update : $tot_update"] );
}
}
function nl_02()
{
$param = $this->sys_input;
$ids = implode(",", $param["order"]);
if ($ids == "") {
$ids = "-1";
}
$sql = "select
T_OrderHeaderID,
T_OrderHeaderDate orgT_OrderHeaderDate,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS T_OrderHeaderDate,T_OrderHeaderLabNumber,M_PatientLocation,
fn_lookup_external(T_OrderHeaderLabNumber,'L') as NOLAB ,
fn_get_name( T_OrderHeaderM_PatientID ) AS NAMA ,
SUBSTRING(T_OrderHeaderM_PatientAge , 1, 2) AS USIA,
M_SexCode as JENISKELAMIN ,
T_TestName ,
if(`fn_itf_isnumber`(T_OrderDetailResult) = '0',T_OrderDetailResult ,`fn_rpt_format_number`(T_OrderDetailResult) ) as Mcu_ResumeDetailsResult,
M_CompanyName,
M_MouName,
'' as Mcu_ResumeDetailsCategory,
'' as Mcu_ResumeDetailsID,
M_No_FormRev,
S_SystemsCompanyCity ,
DATE_FORMAT(now(), '%d-%m-%Y %T') AS DATENOW ,
M_CompanyID,
M_MouID,
T_TestSasCode , DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS M_PatientDOB,
M_PatientNIK ,
M_PatientJabatan ,
M_PatientKedudukan ,
M_PatientPJ ,
M_PatientJob,
M_PatientIDNumber
from t_orderheader
join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y'
join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderID in ($ids)
left join mcu_resume on T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y'
left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y'
left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y'
LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = 'LAB'
left join conf_systems on S_SystemsID > 0
left join t_orderdetail on T_OrderDetailT_OrderHeaderID = T_OrderHeaderID and T_OrderDetailIsActive = 'Y'
left join t_test on T_OrderDetailT_TestID = T_TestID
where
T_OrderDetailT_TestIsResult = 'y' and T_TestIsNonLab = ''
union all
select
T_OrderHeaderID,
T_OrderHeaderDate orgT_OrderHeaderDate,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS T_OrderHeaderDate,T_OrderHeaderLabNumber,M_PatientLocation,
fn_lookup_external(T_OrderHeaderLabNumber,'L') as NOLAB ,
fn_get_name( T_OrderHeaderM_PatientID ) AS NAMA ,
SUBSTRING(T_OrderHeaderM_PatientAge , 1, 2) AS USIA,
M_SexCode as JENISKELAMIN ,
if(Mcu_ResumeDetailsCategory = 'konsul' , 'Konsultasi' , T_TestName) as T_TestName ,
Mcu_ResumeDetailsResult,
M_CompanyName,
M_MouName,
Mcu_ResumeDetailsCategory,
Mcu_ResumeDetailsID,
M_No_FormRev,
S_SystemsCompanyCity ,
DATE_FORMAT(now(), '%d-%m-%Y %T') AS DATENOW ,
M_CompanyID,
M_MouID,
T_TestSasCode , DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS M_PatientDOB,
M_PatientNIK ,
M_PatientJabatan ,
M_PatientKedudukan ,
M_PatientPJ ,
M_PatientJob,
M_PatientIDNumber
from t_orderheader
join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y'
join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderID in ($ids)
left join mcu_resume on T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y'
left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y'
left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y'
LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = 'LAB'
left join conf_systems on S_SystemsID > 0
left join mcu_resumedetails on Mcu_ResumeDetailsMcu_ResumeID = Mcu_ResumeID
left join t_test on Mcu_ResumeDetailsT_TestID = T_TestID
where
Mcu_ResumeDetailsCategory <> 'lab'
union all
select
T_OrderHeaderID,
T_OrderHeaderDate orgT_OrderHeaderDate,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS T_OrderHeaderDate,T_OrderHeaderLabNumber,M_PatientLocation,
fn_lookup_external(T_OrderHeaderLabNumber,'L') as NOLAB ,
fn_get_name( T_OrderHeaderM_PatientID ) AS NAMA ,
SUBSTRING(T_OrderHeaderM_PatientAge , 1, 2) AS USIA,
M_SexCode as JENISKELAMIN ,
'Kesimpulan' as T_TestName ,
Mcu_ResumeKesimpulan as Mcu_ResumeDetailsResult,
M_CompanyName,
M_MouName,
'' as Mcu_ResumeDetailsCategory,
'' as Mcu_ResumeDetailsID,
'' as M_No_FormRev,
'' as S_SystemsCompanyCity ,
DATE_FORMAT(now(), '%d-%m-%Y %T') AS DATENOW ,
M_CompanyID,
M_MouID,
'7777777777' as T_TestSasCode , DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS M_PatientDOB,
M_PatientNIK ,
M_PatientJabatan ,
M_PatientKedudukan ,
M_PatientPJ ,
M_PatientJob,
M_PatientIDNumber
from t_orderheader
join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y'
join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderID in ($ids)
left join mcu_resume on T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y'
left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y'
left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y'
where
Mcu_ResumeKesimpulan <> ''
union all
select
T_OrderHeaderID,
T_OrderHeaderDate orgT_OrderHeaderDate,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS T_OrderHeaderDate,T_OrderHeaderLabNumber,M_PatientLocation,
fn_lookup_external(T_OrderHeaderLabNumber,'L') as NOLAB ,
fn_get_name( T_OrderHeaderM_PatientID ) AS NAMA ,
SUBSTRING(T_OrderHeaderM_PatientAge , 1, 2) AS USIA,
M_SexCode as JENISKELAMIN ,
'Rekomendasi' as T_TestName ,
Mcu_ResumeRekomendasi as Mcu_ResumeDetailsResult,
M_CompanyName,
M_MouName,
'' as Mcu_ResumeDetailsCategory,
'' as Mcu_ResumeDetailsID,
'' as M_No_FormRev,
'' as S_SystemsCompanyCity ,
DATE_FORMAT(now(), '%d-%m-%Y %T') AS DATENOW ,
M_CompanyID,
M_MouID,
'8888888888' as T_TestSasCode , DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS M_PatientDOB,
M_PatientNIK ,
M_PatientJabatan ,
M_PatientKedudukan ,
M_PatientPJ ,
M_PatientJob,
M_PatientIDNumber
from t_orderheader
join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y'
join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderID in ($ids)
join mcu_resume on T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
and Mcu_ResumeKesimpulan <> ''
and Mcu_ResumeRekomendasi <> ''
left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y'
left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y'
left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y'
union all
select
T_OrderHeaderID,
T_OrderHeaderDate orgT_OrderHeaderDate,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS T_OrderHeaderDate,T_OrderHeaderLabNumber,M_PatientLocation,
fn_lookup_external(T_OrderHeaderLabNumber,'L') as NOLAB ,
fn_get_name( T_OrderHeaderM_PatientID ) AS NAMA ,
SUBSTRING(T_OrderHeaderM_PatientAge , 1, 2) AS USIA,
M_SexCode as JENISKELAMIN ,
'Saran' as T_TestName ,
Mcu_ResumeSaran as Mcu_ResumeDetailsResult,
M_CompanyName,
M_MouName,
'' as Mcu_ResumeDetailsCategory,
'' as Mcu_ResumeDetailsID,
'' as M_No_FormRev,
'' as S_SystemsCompanyCity ,
DATE_FORMAT(now(), '%d-%m-%Y %T') AS DATENOW ,
M_CompanyID,
M_MouID,
'9999999999' as T_TestSasCode , DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS M_PatientDOB,
M_PatientNIK ,
M_PatientJabatan ,
M_PatientKedudukan ,
M_PatientPJ ,
M_PatientJob,
M_PatientIDNumber
from t_orderheader
join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y'
join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderID in ($ids)
join mcu_resume on T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
and Mcu_ResumeSaran <> ''
left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y'
left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y'
left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y'
union all
select
T_OrderHeaderID,
T_OrderHeaderDate orgT_OrderHeaderDate,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS T_OrderHeaderDate,T_OrderHeaderLabNumber,M_PatientLocation,
fn_lookup_external(T_OrderHeaderLabNumber,'L') as NOLAB ,
fn_get_name( T_OrderHeaderM_PatientID ) AS NAMA ,
SUBSTRING(T_OrderHeaderM_PatientAge , 1, 2) AS USIA,
M_SexCode as JENISKELAMIN ,
T_TestName ,
So_ResultEntryDetailResult as Mcu_ResumeDetailsResult,
M_CompanyName,
M_MouName,
'' as Mcu_ResumeDetailsCategory,
'' as Mcu_ResumeDetailsID,
M_No_FormRev,
S_SystemsCompanyCity ,
DATE_FORMAT(now(), '%d-%m-%Y %T') AS DATENOW ,
M_CompanyID,
M_MouID,
T_TestSasCode , DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS M_PatientDOB,
M_PatientNIK ,
M_PatientJabatan ,
M_PatientKedudukan ,
M_PatientPJ ,
M_PatientJob,
M_PatientIDNumber
from t_orderheader
join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y'
join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderID in ($ids)
join t_orderdetail on T_OrderDetailT_OrderHeaderID = T_OrderHeaderID and T_OrderDetailIsActive = 'Y'
and T_OrderDetailT_TestIsResult = 'y'
join t_test on T_OrderDetailT_TestID = T_TestID
and T_TestIsNonLab <> ''
join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y'
join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y'
join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y'
join so_resultentry on So_ResultEntryT_OrderHeaderID = T_OrderHeaderID and So_ResultEntryT_OrderDetailID = T_OrderDetailID
join so_resultentrydetail on So_ResultEntryDetailSo_ResultEntryID = So_ResultEntryID
join so_templatedetail on So_ResultEntryDetailSo_TemplateDetailID = So_TemplateDetailID
and (So_TemplateDetailName = 'kesan' or So_TemplateDetailName = 'Interpretasi')
LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = 'LAB'
left join conf_systems on S_SystemsID > 0
";
$resp = $this->get_rows($sql);
if ($resp["status"] == -1) {
echo json_encode([
"status" => "ERR",
"message" => $this->db->error()["message"],
]);
} else {
$tot_update = 0;
$tot_insert = 0;
foreach($resp["data"] as $dt) {
$resp = $this->insert_or_update("one_rekap.rekap_nl_002", $dt, [
"M_MouID",
"T_OrderHeaderID",
]);
if($resp["status"] == "ERR") {
echo json_encode($resp);
exit;
} else {
if($resp["message"] == "Update") {
$tot_update++;
} else {
$tot_insert++;
}
}
}
echo json_encode(["status" => "OK" , "message" => "Insert : $tot_insert , Update : $tot_update"] );
}
}
function nl_03()
{
$param = $this->sys_input;
$ids = implode(",", $param["order"]);
if ($ids == "") {
$ids = "-1";
}
$sql = "select
T_OrderHeaderID,
T_OrderHeaderDate orgT_OrderHeaderDate,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS T_OrderHeaderDate,T_OrderHeaderLabNumber,M_PatientLocation,
fn_lookup_external(T_OrderHeaderLabNumber,'L') as NOLAB ,
fn_get_name( T_OrderHeaderM_PatientID ) AS NAMA ,
SUBSTRING(T_OrderHeaderM_PatientAge , 1, 2) AS USIA,
M_SexCode as JENISKELAMIN ,
T_TestName ,
if(`fn_itf_isnumber`(T_OrderDetailResult) = '0',T_OrderDetailResult ,`fn_rpt_format_number`(T_OrderDetailResult) ) as Mcu_ResumeDetailsResult,
M_CompanyNumber,
M_CompanyName,
M_MouName,
'' as Mcu_ResumeDetailsCategory,
'' as Mcu_ResumeDetailsID,
M_No_FormRev,
S_SystemsCompanyCity ,
DATE_FORMAT(now(), '%d-%m-%Y %T') AS DATENOW ,
M_CompanyID,
M_MouID,
T_TestSasCode , DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS M_PatientDOB,
M_PatientNIK ,
M_PatientJabatan ,
M_PatientKedudukan ,
M_PatientPJ ,
M_PatientJob,
M_PatientIDNumber
from t_orderheader
join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderID in ($ids)
join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y'
and (T_OrderHeaderAddOnPatientMcu = 'Y' or M_MouIsMcu = '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_OrderDetailT_TestIsResult = 'y' and T_TestIsNonLab = ''
left join mcu_resume on T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y'
left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y'
left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y'
LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = 'LAB'
left join conf_systems on S_SystemsID > 0
union all
select
T_OrderHeaderID,
T_OrderHeaderDate orgT_OrderHeaderDate,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS T_OrderHeaderDate,T_OrderHeaderLabNumber,M_PatientLocation,
fn_lookup_external(T_OrderHeaderLabNumber,'L') as NOLAB ,
fn_get_name( T_OrderHeaderM_PatientID ) AS NAMA ,
SUBSTRING(T_OrderHeaderM_PatientAge , 1, 2) AS USIA,
M_SexCode as JENISKELAMIN ,
if(Mcu_ResumeDetailsCategory = 'konsul' , 'Konsultasi' , T_TestName) as T_TestName ,
Mcu_ResumeDetailsResult,
M_CompanyNumber,
M_CompanyName,
M_MouName,
Mcu_ResumeDetailsCategory,
Mcu_ResumeDetailsID,
M_No_FormRev,
S_SystemsCompanyCity ,
DATE_FORMAT(now(), '%d-%m-%Y %T') AS DATENOW ,
M_CompanyID,
M_MouID,
T_TestSasCode , DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS M_PatientDOB,
M_PatientNIK ,
M_PatientJabatan ,
M_PatientKedudukan ,
M_PatientPJ ,
M_PatientJob,
M_PatientIDNumber
from t_orderheader
join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderID in ($ids)
join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y'
and (T_OrderHeaderAddOnPatientMcu = 'Y' or M_MouIsMcu = 'Y')
join mcu_resume on T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y'
left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y'
left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y'
LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = 'LAB'
left join conf_systems on S_SystemsID > 0
left join mcu_resumedetails on Mcu_ResumeDetailsMcu_ResumeID = Mcu_ResumeID
left join t_test on Mcu_ResumeDetailsT_TestID = T_TestID
where
Mcu_ResumeDetailsCategory <> 'lab'
union all
select
T_OrderHeaderID,
T_OrderHeaderDate orgT_OrderHeaderDate,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS T_OrderHeaderDate,T_OrderHeaderLabNumber,M_PatientLocation,
fn_lookup_external(T_OrderHeaderLabNumber,'L') as NOLAB ,
fn_get_name( T_OrderHeaderM_PatientID ) AS NAMA ,
SUBSTRING(T_OrderHeaderM_PatientAge , 1, 2) AS USIA,
M_SexCode as JENISKELAMIN ,
'Kesimpulan' as T_TestName ,
Mcu_ResumeKesimpulan as Mcu_ResumeDetailsResult,
M_CompanyNumber,
M_CompanyName,
M_MouName,
'' as Mcu_ResumeDetailsCategory,
'' as Mcu_ResumeDetailsID,
'' as M_No_FormRev,
'' as S_SystemsCompanyCity ,
DATE_FORMAT(now(), '%d-%m-%Y %T') AS DATENOW ,
M_CompanyID,
M_MouID,
'7777777777' as T_TestSasCode , DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS M_PatientDOB,
M_PatientNIK ,
M_PatientJabatan ,
M_PatientKedudukan ,
M_PatientPJ ,
M_PatientJob,
M_PatientIDNumber
from t_orderheader
join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderID in ($ids)
join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y'
and (T_OrderHeaderAddOnPatientMcu = 'Y' or M_MouIsMcu = 'Y')
join mcu_resume on T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y'
join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y'
left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y'
where
Mcu_ResumeKesimpulan <> ''
union all
select
T_OrderHeaderID,
T_OrderHeaderDate orgT_OrderHeaderDate,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS T_OrderHeaderDate,T_OrderHeaderLabNumber,M_PatientLocation,
fn_lookup_external(T_OrderHeaderLabNumber,'L') as NOLAB ,
fn_get_name( T_OrderHeaderM_PatientID ) AS NAMA ,
SUBSTRING(T_OrderHeaderM_PatientAge , 1, 2) AS USIA,
M_SexCode as JENISKELAMIN ,
'Rekomendasi' as T_TestName ,
Mcu_ResumeRekomendasi as Mcu_ResumeDetailsResult,
M_CompanyNumber,
M_CompanyName,
M_MouName,
'' as Mcu_ResumeDetailsCategory,
'' as Mcu_ResumeDetailsID,
'' as M_No_FormRev,
'' as S_SystemsCompanyCity ,
DATE_FORMAT(now(), '%d-%m-%Y %T') AS DATENOW ,
M_CompanyID,
M_MouID,
'8888888888' as T_TestSasCode , DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS M_PatientDOB,
M_PatientNIK ,
M_PatientJabatan ,
M_PatientKedudukan ,
M_PatientPJ ,
M_PatientJob,
M_PatientIDNumber
from t_orderheader
join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderID in ($ids)
join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y'
and (T_OrderHeaderAddOnPatientMcu = 'Y' or M_MouIsMcu = 'Y')
join mcu_resume on T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y'
left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y'
left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y'
where
Mcu_ResumeKesimpulan <> ''
and Mcu_ResumeRekomendasi <> ''
union all
select
T_OrderHeaderID,
T_OrderHeaderDate orgT_OrderHeaderDate,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS T_OrderHeaderDate,T_OrderHeaderLabNumber,M_PatientLocation,
fn_lookup_external(T_OrderHeaderLabNumber,'L') as NOLAB ,
fn_get_name( T_OrderHeaderM_PatientID ) AS NAMA ,
SUBSTRING(T_OrderHeaderM_PatientAge , 1, 2) AS USIA,
M_SexCode as JENISKELAMIN ,
'Saran' as T_TestName ,
Mcu_ResumeSaran as Mcu_ResumeDetailsResult,
M_CompanyNumber,
M_CompanyName,
M_MouName,
'' as Mcu_ResumeDetailsCategory,
'' as Mcu_ResumeDetailsID,
'' as M_No_FormRev,
'' as S_SystemsCompanyCity ,
DATE_FORMAT(now(), '%d-%m-%Y %T') AS DATENOW ,
M_CompanyID,
M_MouID,
'9999999999' as T_TestSasCode , DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS M_PatientDOB,
M_PatientNIK ,
M_PatientJabatan ,
M_PatientKedudukan ,
M_PatientPJ ,
M_PatientJob,
M_PatientIDNumber
from t_orderheader
join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderID in ($ids)
join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y'
and (T_OrderHeaderAddOnPatientMcu = 'Y' or M_MouIsMcu = 'Y')
join mcu_resume on T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID
left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y'
left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y'
left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y'
where
Mcu_ResumeSaran <> ''
union all
select
T_OrderHeaderID,
T_OrderHeaderDate orgT_OrderHeaderDate,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS T_OrderHeaderDate,T_OrderHeaderLabNumber,M_PatientLocation,
fn_lookup_external(T_OrderHeaderLabNumber,'L') as NOLAB ,
fn_get_name( T_OrderHeaderM_PatientID ) AS NAMA ,
SUBSTRING(T_OrderHeaderM_PatientAge , 1, 2) AS USIA,
M_SexCode as JENISKELAMIN ,
T_TestName ,
So_ResultEntryDetailResult as Mcu_ResumeDetailsResult,
M_CompanyNumber,
M_CompanyName,
M_MouName,
'' as Mcu_ResumeDetailsCategory,
'' as Mcu_ResumeDetailsID,
M_No_FormRev,
S_SystemsCompanyCity ,
DATE_FORMAT(now(), '%d-%m-%Y %T') AS DATENOW ,
M_CompanyID,
M_MouID,
T_TestSasCode , DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS M_PatientDOB,
M_PatientNIK ,
M_PatientJabatan ,
M_PatientKedudukan ,
M_PatientPJ ,
M_PatientJob,
M_PatientIDNumber
from t_orderheader
join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderID in ($ids)
join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y'
and (T_OrderHeaderAddOnPatientMcu = 'Y' or M_MouIsMcu = 'Y')
join t_orderdetail on T_OrderDetailT_OrderHeaderID = T_OrderHeaderID and T_OrderDetailIsActive = 'Y'
and T_OrderDetailT_TestIsResult = 'y'
join t_test on T_OrderDetailT_TestID = T_TestID
and T_TestIsNonLab <> ''
left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y'
left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y'
left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y'
LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = 'LAB'
left join conf_systems on S_SystemsID > 0
left join so_resultentry on So_ResultEntryT_OrderHeaderID = T_OrderHeaderID and So_ResultEntryT_OrderDetailID = T_OrderDetailID
left join so_resultentrydetail on So_ResultEntryDetailSo_ResultEntryID = So_ResultEntryID
left join so_templatedetail on So_ResultEntryDetailSo_TemplateDetailID = So_TemplateDetailID
where
(So_TemplateDetailName = 'kesan' or So_TemplateDetailName = 'Interpretasi')
";
$resp = $this->get_rows($sql);
if ($resp["status"] == -1) {
echo json_encode([
"status" => "ERR",
"message" => $this->db->error()["message"],
]);
} else {
$tot_update = 0;
$tot_insert = 0;
foreach($resp["data"] as $dt) {
$resp = $this->insert_or_update("one_rekap.rekap_nl_003", $dt, [
"M_MouID",
"T_OrderHeaderID",
]);
if($resp["status"] == "ERR") {
echo json_encode($resp);
exit;
} else {
if($resp["message"] == "Update") {
$tot_update++;
} else {
$tot_insert++;
}
}
}
echo json_encode(["status" => "OK" , "message" => "Insert : $tot_insert , Update : $tot_update"] );
}
}
function get_sp($sql, $param = false)
{
$resp = $this->get_rows($sql, $param);
$this->clean_mysqli_connection($this->db->conn_id);
return $resp;
}
//helpers
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_row($sql, $param = false)
{
$resp = $this->get_rows($sql, $param);
if ($resp["status"] == -1) {
return $resp;
}
if (count($resp["data"]) == 0) {
return ["status" => 0, "message" => "Not found."];
}
return ["status" => 1, "data" => $resp["data"][0]];
}
function insert_or_update($table, $dt, $keys)
{
$s_where = "";
$param = [];
foreach ($keys as $k) {
if ($s_where != "") {
$s_where .= " and ";
}
$s_where .= " $k = ?";
$param[] = $dt[$k];
}
$sql = "select count(*) as total
from $table
where $s_where ";
$qry = $this->db->query($sql, $param);
if (!$qry) {
return [
"status" => "ERR",
"message" =>
$this->db->error()["message"] .
"|" .
$this->db->last_query(),
];
}
$rows = $qry->result_array();
$status = "Insert";
if (count($rows) > 0) {
if ($rows[0]["total"] > 0) {
foreach ($keys as $k) {
$this->db->where($k, $dt[$k]);
}
$qry = $this->db->update($table, $dt);
if (!$qry) {
return [
"status" => "ERR",
"message" =>
"ERR Update : " .
$this->db->error()["message"] .
"|" .
$this->db->last_query(),
];
}
$status = "Update";
} else {
//insert
$qry = $this->db->insert($table, $dt);
if (!$qry) {
return [
"status" => "ERR",
"message" =>
"ERR Insert : " .
$this->db->error()["message"] .
"|" .
$this->db->last_query(),
];
}
}
} else {
//insert
$qry = $this->db->insert($table, $dt);
if (!$qry) {
return [
"status" => "ERR",
"message" =>
"ERR Insert : " .
$this->db->error()["message"] .
"|" .
$this->db->last_query(),
];
}
}
return ["status" => "OK", "message" => $status];
}
}
?>