Files
BE_CPONE/application/controllers/tools/bckp/Listrptpatient.php--30924
2026-04-27 10:26:26 +07:00

295 lines
14 KiB
Plaintext

<?php
class Listrptpatient extends MY_Controller
{
var $db;
public function __construct()
{
parent::__construct();
}
public function index()
{
echo "Listing Report Patient API";
}
function get_list_patient_rpt($orderHeaderID)
{
try {
// if (!$this->isLogin) {
// $this->sys_error("Invalid Token");
// exit;
// }
// $prm = $this->sys_input;
// $orderHeaderID = $prm["orderHeaderID"];
$sql = "SELECT
toh.T_OrderHeaderID,
toh.T_OrderHeaderLabNumber,
mp.M_PatientID,
mp.M_PatientName,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderheader toh
JOIN m_patient mp ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID
AND mp.M_PatientIsActive = 'Y'
WHERE toh.T_OrderHeaderID = ? AND toh.T_OrderHeaderIsActive = 'Y'";
$qry = $this->db->query($sql, [$orderHeaderID]);
if ($qry) {
$row = $qry->result_array();
} else {
$this->sys_error_db("error get nomor lab dan nama pasien", $this->db);
exit;
}
$lab_number = "";
$patient_name = "";
$lab = "";
foreach ($row as $key => $value) {
$lab_number = $value["T_OrderHeaderLabNumber"];
$patient_name = $value["M_PatientName"];
$lab = "/birt/run?__report=report/one/lab/rpt_test_history.rptdesign&__format=pdf&PID={$value["M_PatientID"]}&tm={$value["Datetime"]}&username=admin";
}
## non-lab rpt
$sql_so = "SELECT
sre.So_ResultEntryID,
sre.So_ResultEntryT_OrderHeaderID,
sre.So_ResultEntryT_OrderDetailID,
sre.So_ResultEntryNonlab_TemplateID,
sre.So_ResultEntryNonlab_TemplateName,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail tdet
JOIN t_test tt ON tdet.T_OrderDetailT_TestID = tt.T_TestID
AND tt.T_TestIsActive = 'Y'
JOIN so_resultentry sre ON sre.So_ResultEntryT_OrderDetailID = tdet.T_OrderDetailID
AND sre.So_ResultEntryIsActive = 'Y'
WHERE tdet.T_OrderDetailT_OrderHeaderID = ?
AND tdet.T_OrderDetailIsActive = 'Y'";
$qry_so = $this->db->query($sql_so, [$orderHeaderID]);
if ($qry_so) {
//$rows_so = $qry_so->result_array();
} else {
$this->sys_error_db("error get so result entry", $this->db);
exit;
}
$sql = "SELECT DISTINCT group_resultName as rpt_name,
IFNULL(So_ResultEntryID,0) as so_id,
T_OrderDetailT_OrderHeaderID as order_id,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'N'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = {$orderHeaderID} AND Group_ResultName <> 'Tanpa Hasil'
UNION
SELECT DISTINCT group_resultName as rpt_name,
IFNULL(So_ResultEntryID,0) as so_id,
T_OrderDetailT_OrderHeaderID as order_id,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_SamplingSoT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'Y'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = {$orderHeaderID} AND Group_ResultName <> 'Tanpa Hasil'
UNION
SELECT DISTINCT T_TestName as rpt_name,
IFNULL(So_ResultEntryID,0) as so_id,
T_OrderDetailT_OrderHeaderID as order_id,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestName NOT IN ('Visus Mata','Buta Warna','Pemeriksaan Lapang Pandang')
JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_SamplingSoT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND
Group_ResultFlagPerTest = 'Y' AND Group_ResultFlagNonLab = 'Y'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = {$orderHeaderID} AND Group_ResultName <> 'Tanpa Hasil'";
$qry = $this->db->query($sql);
if ($qry) {
$rows_rpt = $qry->result_array();
} else {
$this->sys_error_db("error get rpts", $this->db);
exit;
}
## nonlab pid = so result id
$fisik = "";
$rontgen = "";
$ekg = "";
$audiometri = "";
$spirometri = "";
$treadmill = "";
$papsmear = "";
/*foreach ($rows_so as $key => $value) {
switch (true) {
case in_array($value["So_ResultEntryNonlab_TemplateName"], ['Fisik Umum', 'Fisik Umum K3']):
$fisik = "/birt/run?__report=report/one/mcu/mcu_fisik_history.rptdesign&__format=pdf&PType=fisik&PLang=1&PID={$value["So_ResultEntryID"]}&tm={$value["Datetime"]}&username=admin";
break;
case in_array($value["So_ResultEntryNonlab_TemplateName"], ['Thorax', 'Thorax PA']):
$rontgen = "/birt/run?__report=report/one/lab/rpt_hasil_so_radiology_2_annual.rptdesign&__format=pdf&PID={$value["So_ResultEntryID"]}&tm={$value["Datetime"]}&username=admin";
break;
case $value["So_ResultEntryNonlab_TemplateName"] === 'Audiometri':
$audiometri = "/birt/run?__report=report/one/lab/rpt_hasil_so_audiometri_2_annual.rptdesign&__format=pdf&PID={$value["So_ResultEntryID"]}&tm={$value["Datetime"]}&username=admin";
break;
case $value["So_ResultEntryNonlab_TemplateName"] === 'Spirometri':
$spirometri = "/birt/run?__report=report/one/lab/rpt_hasil_so_spirometri_2_annual.rptdesign&__format=pdf&PID={$value["So_ResultEntryID"]}&tm={$value["Datetime"]}&username=admin";
break;
case in_array($value["So_ResultEntryNonlab_TemplateName"], ['EKG', 'ECG']):
$ekg = "/birt/run?__report=report/one/lab/rpt_hasil_so_ecg_2_annual.rptdesign&__format=pdf&PID={$value["So_ResultEntryID"]}&tm={$value["Datetime"]}&username=admin";
break;
case in_array($value["So_ResultEntryNonlab_TemplateName"], ['Default', 'Treadmill']):
$treadmill = "/birt/run?__report=report/one/lab/rpt_hasil_so_treadmill_2_annual.rptdesign&__format=pdf&PID={$value["So_ResultEntryID"]}&tm={$value["Datetime"]}&username=admin";
break;
default:
// Default case
break;
}
}*/
//print_r($rows_rpt);
foreach ($rows_rpt as $key => $value) {
if($value['rpt_name'] == 'Pemeriksaan Fisik')
$fisik = "/birt/run?__report=report/one/mcu/mcu_fisik_history.rptdesign&__format=pdf&PType=fisik&PLang=1&PID={$value["so_id"]}&tm={$value["Datetime"]}&username=admin";
if($value['rpt_name'] == 'Rontgen')
$rontgen = "/birt/run?__report=report/one/lab/rpt_hasil_so_radiology_2_annual.rptdesign&__format=pdf&PID={$value["so_id"]}&tm={$value["Datetime"]}&username=admin";
if($value['rpt_name'] == 'Audiometri')
$audiometri = "/birt/run?__report=report/one/lab/rpt_hasil_so_audiometri_2_annual.rptdesign&__format=pdf&PID={$value["so_id"]}&tm={$value["Datetime"]}&username=admin";
if($value['rpt_name'] == 'Spirometri')
$spirometri = "/birt/run?__report=report/one/lab/rpt_hasil_so_spirometri_2_annual.rptdesign&__format=pdf&PID={$value["so_id"]}&tm={$value["Datetime"]}&username=admin";
if($value['rpt_name'] == 'ECG')
$ekg = "/birt/run?__report=report/one/lab/rpt_hasil_so_ecg_2_annual.rptdesign&__format=pdf&PID={$value["so_id"]}&tm={$value["Datetime"]}&username=admin";
if($value['rpt_name'] == 'Treadmill')
$treadmill = "/birt/run?__report=report/one/lab/rpt_hasil_so_treadmill_2_annual.rptdesign&__format=pdf&PID={$value["so_id"]}&tm={$value["Datetime"]}&username=admin";
if($value['rpt_name'] == 'Papsmear')
$papsmear = "/birt/run?__report=report/one/lab/rpt_test_papsmear_history.rptdesign&__format=pdf&PID={$value["order_id"]}&tm={$value["Datetime"]}&username=admin";
}
$sql_resume = "SELECT
Mcu_ResumeID,
DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime
FROM mcu_resume
WHERE Mcu_ResumeT_OrderHeaderID = ?
AND Mcu_ResumeIsActive = 'Y' AND Mcu_ResumeStatus = 'VAL'";
$qry_resume = $this->db->query($sql_resume, [$orderHeaderID]);
if ($qry_resume) {
$row_resume = $qry_resume->result_array();
} else {
$this->sys_error_db("error get resume id", $this->db);
exit;
}
$kesimpulan_saran = "";
$cover_rpt = "";
## resume ID
foreach ($row_resume as $key => $value) {
$kesimpulan_saran = "/birt/run?__report=report/one/mcu/rpt_mcu_saran_kesimpulan.rptdesign&__format=pdf&username=admin&PID={$value["Mcu_ResumeID"]}&tm={$value["Datetime"]}";
$cover_rpt = "/birt/run?__report=report/one/mcu/rpt_mcu_resume_cover.rptdesign&__format=pdf&username=admin&PID={$value["Mcu_ResumeID"]}&tm={$value["Datetime"]}";
}
// $prefix = "http://localhost";
$prefix = "https://cpone.aplikasi.web.id";
$prefix = "https://".$_SERVER['SERVER_NAME'];
$list_rpt = array();
if ($cover_rpt != "") {
$list_rpt[] = $prefix . $cover_rpt;
}
if ($fisik != "") {
$list_rpt[] = $prefix . $fisik;
}
if ($rontgen != "") {
$list_rpt[] = $prefix . $rontgen;
}
if ($ekg != "") {
$list_rpt[] = $prefix . $ekg;
}
if ($audiometri != "") {
$list_rpt[] = $prefix . $audiometri;
}
if ($spirometri != "") {
$list_rpt[] = $prefix . $spirometri;
}
if ($treadmill != "") {
$list_rpt[] = $prefix . $treadmill;
}
if ($kesimpulan_saran != "") {
$list_rpt[] = $prefix . $kesimpulan_saran;
}
if ($lab != "") {
$list_rpt[] = $prefix . $lab;
}
if ($papsmear != "") {
$list_rpt[] = $prefix . $papsmear;
}
//echo json_encode($list_rpt);
//print_r($list_rpt);
/* list_rpt hardcoded */
// $hard_rpt = [
// "https://devone.aplikasi.web.id/birt/run?__report=report/one/fo/rpt_t_001.rptdesign&__format=pdf&username=ADMIN&PID=131891",
// "https://devone.aplikasi.web.id/birt/frameset?__report=report/one/lab/rpt_test.rptdesign&__format=pdf&username=ADMIN&PID=131911&tm=1699347690090",
// "https://devone.aplikasi.web.id/birt/frameset?__report=report/one/lab/rpt_test_not_print.rptdesign&__format=pdf&username=ADMIN&PID=131890&tm=1699347726767"
// ];
$merge_input = array(
"output" => "test.pdf",
"input" => $list_rpt
);
$jsonData = json_encode($merge_input);
// Initialize cURL session
$target_pdf = "https://".$_SERVER['SERVER_NAME']."/one-api/tools/merge_pdf/merge";
$response = $this->post($target_pdf, $jsonData);
$output_file_name = $lab_number . "_" . str_replace(" ", "_", $patient_name) . ".pdf";
header("Content-type: application/pdf");
header(
'Content-Disposition: inline; filename="' .
$output_file_name .
'"'
);
echo ($response);
// $this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function post($url, $data)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt(
$ch,
CURLOPT_HTTPHEADER,
array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data)
)
);
$result = curl_exec($ch);
return $result;
}
}