db->query($sql, [$orderHeaderID]); if ($qry) { $attachments = $qry->result_array(); } $lab_number = ""; $patient_name = ""; $lab = ""; $orderHeaderID = ""; $sql = "SELECT So_ResultEntryID as id, toh.T_OrderHeaderID, toh.T_OrderHeaderLabNumber, mp.M_PatientID, mp.M_PatientName, DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime from so_resultentry JOIN t_orderheader toh ON toh.T_OrderHeaderID = So_ResultEntryT_OrderHeaderID AND toh.T_OrderHeaderIsActive = 'Y' JOIN t_orderdetail tdet ON tdet.T_OrderDetailID = So_ResultEntryT_OrderDetailID AND tdet.T_OrderDetailIsActive = 'Y' JOIN m_patient mp ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID AND mp.M_PatientIsActive = 'Y' WHERE So_ResultEntryID = ? AND So_ResultEntryIsActive = 'Y' LIMIT 1"; $qry = $this->db->query($sql, [$so_resultentry_id]); if(!$qry){ $this->sys_error_db("error get so result entry", $this->db); exit; } $row = $qry->result_array(); if(count($row) > 0){ $lab_number = $row[0]['T_OrderHeaderLabNumber']; $patient_name = $row[0]['M_PatientName']; $orderHeaderID = $row[0]['T_OrderHeaderID']; } //$rpt_haji = "/birt/run?__report=report/one/mcu/mcu_fisik_haji.rptdesign&__format=pdf&PID={$so_resultentry_id}&tm={$row[0]['Datetime']}&username=admin"; $rpt_haji = "/birt/run?__report=report/one/mcu/mcu_fisik_haji.rptdesign&__format=pdf&username=admin&PID={$so_resultentry_id}&PType=Fisik&tm={$row[0]['Datetime']}"; $sql = "SELECT DISTINCT group_resultName as rpt_name, group_resultName as group_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' AND So_ResultEntryStatus = 'VAL1' WHERE T_OrderDetailT_OrderHeaderID = {$orderHeaderID} AND Group_ResultName <> 'Tanpa Hasil' AND T_OrderDetailIsActive = 'Y' UNION SELECT group_resultName as rpt_name, group_resultName as group_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' JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' AND So_ResultEntryStatus = 'VAL1' WHERE T_OrderDetailT_OrderHeaderID = {$orderHeaderID} AND Group_ResultName <> 'Tanpa Hasil' AND T_OrderDetailIsActive = 'Y' GROUP BY so_id UNION SELECT DISTINCT T_TestName as rpt_name, group_resultName as group_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' JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' AND So_ResultEntryStatus = 'VAL1' 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 = ""; $treadmill_attachment = array(); $papsmear = ""; $mikro = ""; $usg = array(); $sds = ""; $kebugaran = ''; foreach ($rows_rpt as $key => $value) { /*if($value['rpt_name'] == 'Pemeriksaan Fisik') $fisik = "/birt/run?__report=report/one/mcu/mcu_fisik_history_v2.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_xray.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.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.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.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.rptdesign&__format=pdf&PID={$value["so_id"]}&tm={$value["Datetime"]}&username=admin"; $sql = "SELECT * FROM t_nonlabdocument JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_NonlabDocumentT_OrderHeaderID AND T_NonlabDocumentT_SamplingSoID = T_SamplingSoID AND T_SamplingSoIsActive = 'Y' JOIN t_test ON T_SamplingSoT_TestID = T_TestID AND T_TestID in (1651) WHERE T_NonlabDocumentT_OrderHeaderID = ? AND T_NonlabDocumentIsActive = 'Y'"; $qry = $this->db->query($sql, [$orderHeaderID]); // echo $this->db->last_query(); if ($qry) { $rows_attachment = $qry->result_array(); if(count($rows_attachment) > 0){ foreach ($rows_attachment as $key => $value) { $treadmill_attachment[] = '/one-media/one-document-nonlab/'.$value['T_NonlabDocumentFile']; } } } } if($value['rpt_name'] == 'Papsmear') $papsmear = "/birt/run?__report=report/one/lab/rpt_test_papsmear.rptdesign&__format=pdf&PID={$value["order_id"]}&tm={$value["Datetime"]}&username=admin"; if($value['rpt_name'] == 'Mikro') $mikro = "/birt/run?__report=report/one/lab/rpt_test_mikro.rptdesign&__format=pdf&PID={$value["order_id"]}&tm={$value["Datetime"]}&username=admin"; if($value['group_name'] == 'USG' ) $usg[] = "/birt/run?__report=report/one/lab/rpt_hasil_so_usg.rptdesign&__format=pdf&PID={$value["so_id"]}&tm={$value["Datetime"]}&username=admin"; if($value['rpt_name'] == 'SDS' && intval($value["so_id"]) > 0){ $sql_type = "SELECT So_ResultEntrySDSTypeValue as xtype FROM so_resultentrysds_type WHERE So_ResultEntrySDSTypeSo_ResultEntryID = ? AND So_ResultEntrySDSTypeIsActive = 'Y' LIMIT 1"; $qry_type = $this->db->query($sql_type, [$value["so_id"]]); if ($qry_type) { //https://devcpone.aplikasi.web.id/birt/run?__report=report/one/lab/rpt_hasil_so_sds.rptdesign&__format=pdf&username=hrdisuzu@gmail.com&PID=9196&PType=30&tm=240926151412 $type_rpt = $qry_type->row()->xtype; $sds = "/birt/run?__report=report/one/lab/rpt_hasil_so_sds.rptdesign&__format=pdf&PID={$value["so_id"]}&PType={$type_rpt}&tm={$value["Datetime"]}&username=admin"; } } if($value['rpt_name'] == 'Test Kebugaran') $kebugaran = "/birt/run?__report=report/one/lab/rpt_hasil_so_layanan.rptdesign&__format=pdf&PID={$value["so_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 = ""; $file_cover = "rpt_mcu_resume_cover"; $sql = "SELECT M_CoverRpt as file_cover, M_CoverRptLogo as file_logo FROM t_orderheader JOIN mgm_cover ON T_OrderHeaderMgm_McuID = Mgm_CoverMgm_McuID AND Mgm_CoverIsActive = 'Y' JOIN m_cover ON Mgm_CoverM_CoverCode = M_CoverCode AND M_CoverIsActive = 'Y' WHERE T_OrderHeaderID = ? LIMIT 1"; $qry_cover = $this->db->query($sql, [$orderHeaderID]); if ($qry_cover) { $row_cover = $qry_cover->result_array(); if(count($row_cover) > 0){ $file_cover = $row_cover[0]['file_cover']; } } ## resume ID foreach ($row_resume as $key => $value) { $kesimpulan_saran = "/birt/run?__report=report/one/mcu/rpt_mcu_saran_kesimpulan_v2.rptdesign&__format=pdf&username=admin&PID={$value["Mcu_ResumeID"]}&tm={$value["Datetime"]}"; $cover_rpt = "/birt/run?__report=report/one/mcu/".$file_cover.".rptdesign&__format=pdf&username=admin&PID={$value["Mcu_ResumeID"]}&tm={$value["Datetime"]}"; } $additional = ""; if($fisik == ""){ $sql = "SELECT * FROM t_orderdetail JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_TestID IN (2571,2573,2573,3450,2572) LIMIT 1"; $qry_additional = $this->db->query($sql, [$orderHeaderID]); if ($qry_additional) { $rows_addtional = $qry_additional->result_array(); //print_r($rows_addtional); if(count($rows_addtional) > 0){ $id_additional = $rows_addtional[0]['So_ResultEntryID']; $additional = "/birt/run?__report=report/one/mcu/mcu_fisik_ttbbmata_portal.rptdesign&__format=pdf&username=admin&PType=fisik&PID={$id_additional}&PLang=1&tm={$value["Datetime"]}"; } } else { $this->sys_error_db("error get addtional", $this->db); exit; } } */ $prefix = "http://localhost"; $prefix = "https://".$_SERVER['SERVER_NAME']; $list_rpt = array(); if ($rpt_haji != "") { $list_rpt[] = $prefix . $rpt_haji; } if ($cover_rpt != "") { $list_rpt[] = $prefix . $cover_rpt; } if(count($attachments) > 0){ foreach ($attachments as $key => $value) { $list_rpt[] = $prefix."/one-media/one-files/".$value['fname']; } } if ($fisik != "") { $list_rpt[] = $prefix . $fisik; } if(count($rontgen) > 0){ foreach ($rontgen as $key => $value) { $list_rpt[] = $prefix . $value; } } /*if ($usg_abdomen != "") { $list_rpt[] = $prefix . $usg_abdomen; }*/ if(count($usg) > 0){ foreach ($usg as $key => $value) { $list_rpt[] = $prefix . $value; } } 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(count($treadmill_attachment) > 0){ foreach ($treadmill_attachment as $key => $value) { $list_rpt[] = $prefix . $value; } } } if ($sds != "") { $list_rpt[] = $prefix . $sds; } if ($kebugaran != "") { $list_rpt[] = $prefix . $kebugaran; } if ($kesimpulan_saran != "" && $tanpa_kesimpulan == "N") { $list_rpt[] = $prefix . $kesimpulan_saran; } if ($lab != "") { $list_rpt[] = $prefix . $lab; } if ($papsmear != "") { $list_rpt[] = $prefix . $papsmear; } if ($mikro != "") { $list_rpt[] = $prefix . $mikro; } if ($additional != "") { $list_rpt[] = $prefix . $additional; } if($debug == 'Y'){ foreach ($list_rpt as $key => $value) { echo "".$value."
"; } exit; } $merge_input = array( "output" => "test.pdf", "input" => $list_rpt ); if ($dob != "") { $merge_input = array( "output" => "test.pdf", "input" => $list_rpt, "dob" => $dob ); } $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 = $nip . "_" . 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; } }