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' AND T_OrderDetailIsActive = 'Y' 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' AND T_OrderDetailIsActive = 'Y' 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' AND T_OrderDetailIsActive = 'Y'"; $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; } }