db_smartone = $this->load->database("onedev", true); } function get_time_start() { $rows = date("Y-m-d H:i:s"); $this->sys_ok(["records" => $rows, "total" => 1, "q" => $this->db_smartone->last_query()]); } function save() { $prm = $this->sys_input; $hdr = $prm['header']; $xd = substr($prm['header']['booking_date'], 0, 2); $xm = substr($prm['header']['booking_date'], 2, 2); $xy = substr($prm['header']['booking_date'], 4, 4); $booking_date = $xy . "-" . $xm . "-" . $xd; $header = json_encode($prm['header']); $detail = json_encode($prm['detail']); $delivery = json_encode($prm['delivery']); $delivery_note = json_encode($prm['delivery_note']); $header_json = addslashes(str_replace('\n', '\\\n', json_encode($hdr))); $detail_json = str_replace('\n', '\\\n', json_encode($prm['detail'])); $delivery_json = addslashes(str_replace('\n', '\\\n', json_encode($prm['delivery']))); $req_json = json_encode($prm['req']); $sql = "INSERT INTO future_order ( FutureOrderNumber, FutureOrderDateBooking, FutureOrderM_PatientID, FutureOrderM_CompanyID, FutureOrderM_MouID, FutureOrderSenderM_DoctorID, FutureOrderSenderM_DoctorAddressID, FutureOrderDoctorAlias, FutureOrderDoctorAliasAddress, FutureOrderLastUpdated, FutureOrderUserID, FutureOrderJSONHeader, FutureOrderJSONDetail, FutureOrderJSONDelivery, FutureOrderJSONReq, FutureOrderJSONDeliveryNote ) VALUES( fn_numbering_future('FO'), '{$booking_date}', '{$prm['header']['patient_id']}', '{$prm['header']['company_id']}', '{$prm['header']['mou_id']}', '{$prm['header']['sender_doctor_id']}', '{$prm['header']['sender_address_id']}', '{$prm['header']['alias_doctor']}', '{$prm['header']['alias_doctor_address']}', NOW(), '{$this->sys_user['M_UserID']}', '{$header}', '{$detail}', '{$delivery}', '{$req_json}', '{$delivery_note}' )"; //echo $sql; $query = $this->db_smartone->query($sql); if ($query) { $order_id = $this->db_smartone->insert_id(); if ($prm['detail'] && count($prm['detail']) > 0) { foreach ($prm['detail'] as $k_detail => $v_detail) { $sql = "INSERT INTO future_orderdetail( Future_OrderDetailFutureOrderID, Future_OrderDetailT_TestID, Future_OrderDetailPrice, Future_OrderDetailDisc, Future_OrderDetailDiscAmount, Future_OrderDetailIsPacket, Future_OrderDetailPacketType, Future_OrderDetailT_PacketID, Future_OrderDetailUserID, Future_OrderDetailLastUpdated ) VALUES( '{$order_id}', '{$v_detail['t_id']}', '{$v_detail['t_price']}', '{$v_detail['t_disc']}', '{$v_detail['t_discrp']}', '{$v_detail['t_ispacket']}', '{$v_detail['t_packettype']}', '{$v_detail['t_packetid']}', '{$this->sys_user['M_UserID']}', NOW() )"; $this->db_smartone->query($sql); } } $rst = array(); $sql = "SELECT * FROM future_order WHERE FutureOrderID = {$order_id}"; $data_h = $this->db_smartone->query($sql)->row_array(); $rst['data'] = array('id' => $order_id, 'number' => $data_h['FutureOrderNumber']); $rst['message'] = array('query' => '', 'text' => ''); $rst['order_header'] = $this->get_header($order_id); $rst['order_detail'] = $this->get_details($order_id); //$rst->order_delivery = $this->get_delivery($order_id); echo json_encode($rst); } } function savex() { $prm = $this->sys_input; $hdr = $prm['header']; $header_json = addslashes(str_replace('\n', '\\\n', json_encode($hdr))); $detail_json = str_replace('\n', '\\\n', json_encode($prm['detail'])); $delivery_json = addslashes(str_replace('\n', '\\\n', json_encode($prm['delivery']))); $req_json = json_encode($prm['req']); $sql = "CALL sp_fo_register_save_v5('', '{$header_json}', '{$delivery_json}', '{$detail_json}', '{$req_json}', '{$this->sys_user['M_UserID']}');"; //echo $sql; $query = $this->db_smartone->query($sql); if ($query) { $rst = $query->row(); $this->clean_mysqli_connection($this->db_smartone->conn_id); $rst_id = $rst->id; $rst->data = json_decode($rst->data); $rst_id = $rst->data->id; if ($rst_id) { $rsampletime = ''; if ($hdr['received_sample'] == 'Y') { $xd = substr($hdr['received_sample_time'], 0, 2); $xm = substr($hdr['received_sample_time'], 2, 2); $xy = substr($hdr['received_sample_time'], 4, 4); $xhh = substr($hdr['received_sample_time'], 8, 2); $xmm = substr($hdr['received_sample_time'], 10, 2); $xdtime = $xy . "-" . $xm . "-" . $xd . " " . $xhh . ":" . $xmm; $rsampletime = ", T_OrderHeaderAddOnOnlySampleTime = '{$xdtime}'"; } $sql = "UPDATE t_orderheaderaddon SET T_OrderHeaderAddOnAliasDoctorName = '{$hdr['alias_doctor']}', T_OrderHeaderAddOnAliasDoctorAddress = '{$hdr['alias_doctor_address']}' $rsampletime WHERE T_OrderHeaderAddOnT_OrderHeaderID = {$rst_id}"; $this->db_smartone->query($sql); $delivery_note = $prm['delivery']; foreach ($delivery_note as $k => $v) { //print_r($v); if ($v['noteplus'] != '') { if ($v['delivery_code'] == 'EMAIL' || $v['delivery_code'] == 'WHATSAPP' || $v['delivery_code'] == 'TELEGRAM') { $sql = "UPDATE t_orderdelivery SET T_OrderDeliveryDestination = '{$v['noteplus']}' WHERE T_OrderDeliveryT_OrderHeaderID = {$rst_id} AND T_OrderDeliveryM_DeliveryID = {$v['delivery_id']} AND T_OrderDeliveryM_DeliveryTypeID = {$v['delivery_type_id']} AND T_OrderDeliveryAddressID = {$v['address_id']} AND T_OrderDeliveryIsActive = 'Y'"; $this->db_smartone->query($sql); //echo $sql; } else { $sql = "SELECT T_OrderDeliveryID as xdel_id FROM t_orderdelivery WHERE T_OrderDeliveryT_OrderHeaderID = {$rst_id} AND T_OrderDeliveryM_DeliveryID = {$v['delivery_id']} AND T_OrderDeliveryM_DeliveryTypeID = {$v['delivery_type_id']} AND T_OrderDeliveryAddressID = {$v['address_id']} AND T_OrderDeliveryIsActive = 'Y'"; //echo $sql; $xdel_id = $this->db_smartone->query($sql)->row()->xdel_id; $sql = "INSERT INTO t_orderdeliverynote( T_OrderDeliveryNoteT_OrderDeliveryID, T_OrderDeliveryNoteValue, T_OrderDeliveryNoteCreated, T_OrderDeliveryNoteUserID ) VALUES( {$xdel_id}, '{$v['noteplus']}', NOW(), {$this->sys_user['M_UserID']} )"; $this->db_smartone->query($sql); //echo $sql; } } } $sql = "SELECT * FROM t_orderheader JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID WHERE T_OrderHeaderID = {$rst_id}"; //echo $sql; $x_header = $this->db_smartone->query($sql)->row_array(); $sql = "SELECT * FROM t_orderdetail WHERE T_OrderDetailT_OrderHeaderID = {$rst_id} AND T_OrderDetailT_TestIsPrice = 'Y' AND T_OrderDetailIsActive = 'Y'"; $x_details = $this->db_smartone->query($sql)->result_array(); $x_details = json_encode($x_details); $x_deliveries = json_encode($prm['delivery']); $sql = "SELECT * FROM t_orderpromise WHERE T_OrderPromiseT_OrderHeaderID = {$rst_id} AND T_OrderPromiseIsActive = 'Y'"; $x_promises = $this->db_smartone->query($sql)->result_array(); $x_promises = json_encode($x_promises); $sql = "INSERT INTO order_log( OrderLogT_OrderHeaderID, OrderLogM_PatientDOB, OrderLogM_CompanyID, OrderLogM_MouID, OrderLogM_DoctorSenderID, OrderLogM_DoctorSenderAddressID, orderLogT_OrderHeaderAddOnAliasDoctorName, orderLogT_OrderHeaderAddOnAliasDoctorAddress, OrderLogAge, OrderLogFoNote, OrderLogSubtotal, OrderLogTotal, OrderLogUserID, OrderLogDetails, OrderLogDeliveries, OrderLogPromises ) VALUES( {$rst_id}, '{$x_header['M_PatientDOB']}', {$x_header['T_OrderHeaderM_CompanyID']}, {$x_header['T_OrderHeaderM_MouID']}, {$x_header['T_OrderHeaderSenderM_DoctorID']}, {$x_header['T_OrderHeaderSenderM_DoctorAddressID']}, '{$hdr['alias_doctor']}', '{$hdr['alias_doctor_address']}', '{$x_header['T_OrderHeaderM_PatientAge']}', '{$x_header['T_OrderHeaderFoNote']}', '{$x_header['T_OrderHeaderSubTotal']}', '{$x_header['T_OrderHeaderTotal']}', {$this->sys_user['M_UserID']}, '{$x_details}', '{$x_deliveries}', '{$x_promises}' )"; //echo $sql; $this->db_smartone->query($sql); if (isset($prm['order_id']) && intval($prm['order_id']) > 0) { $sql = "UPDATE t_orderpromise SET T_OrderPromiseIsActive = 'N' WHERE T_OrderPromiseT_OrderHeaderID = {$rst_id}"; $this->db_smartone->query($sql); $sql = "SELECT * FROM mcu_preregister_patients JOIN mcu_offline_prepare ON Mcu_PreregisterDetailsMcuOfflinePrepareID = McuOfflinePrepareID WHERE Mcu_PreregisterDetailsID = {$prm['order_id']}"; $row_new_promise = $this->db_smartone->query($sql)->row_array(); $new_promise = $row_new_promise['McuOfflinePreparePromiseDate'] . ' ' . $row_new_promise['McuOfflinePreparePromiseTime']; $sql = "INSERT INTO t_orderpromise ( T_OrderPromiseT_OrderHeaderID, T_OrderPromiseDateTime ) VALUES( {$rst_id}, '{$new_promise}' )"; $this->db_smartone->query($sql); $last_promise_id = $this->db_smartone->insert_id(); $sql = "UPDATE mcu_preregister_patients SET Mcu_PreregisterDetailsT_OrderHeaderID = {$rst_id}, Mcu_PreregisterDetailsFlagAction = 'S' WHERE Mcu_PreregisterDetailsID = {$row_new_promise['Mcu_PreregisterDetailsID']}"; //echo $sql; $this->db_smartone->query($sql); $sql = "UPDATE t_orderdetail SET T_OrderDetailT_OrderPromiseID = {$last_promise_id} WHERE T_OrderDetailT_OrderHeaderID = {$rst_id}"; $this->db_smartone->query($sql); } } $x = preg_match("/janji hasi/", $rst->message); if ($x) $rst->message = "Masih ada pemeriksaan yang BELUM DISET JANJI HASILNYA !"; $rst->message = ["text" => $rst->message, "query" => $this->db_smartone->last_query()]; // pe : add broadcast notification $rst->order_header = $this->get_header($rst_id); $rst->order_detail = $this->get_details($rst_id); $rst->order_delivery = $this->get_delivery($rst_id); $this->broadcast("fo-register"); echo json_encode($rst); } else { $this->sys_error_db("save order", $this->db_smartone); exit; } } function get_header($id) { $sql = " SELECT FutureOrderID as order_id, FutureOrderNumber as order_no, FutureOrderDateBooking as order_date, FutureOrderSubTotal as order_subtotal, 0 as order_rounding, FutureOrderTotal as order_total, concat(if(M_TitleID is null, '', concat(M_TitleName, ' ')),IFNULL(M_PatientPrefix,''),' ',M_PatientName,' ',IFNULL(M_PatientSuffix,'')) as patient_name, M_PatientNoReg as patient_mr, M_MouName as order_mou, M_CompanyName as order_company, fn_global_doctor_name(da.M_DoctorID) doctor_sender, fn_global_doctor_name(db.M_DoctorID) doctor_pj, fn_global_doctor_address(aa.M_DoctorAddressID, 1) doctor_sender_address, M_MouIsBill M_CompanyIsBill, M_MouMinDP M_CompanyMinDP, M_MouIsAgingOnHold M_CompanyIsAgingOnHold, M_MouIsAgingOnHoldNote M_CompanyIsAgingOnHoldNote from future_order join m_patient on FutureOrderM_PatientID = M_PatientID join m_company on FutureOrderM_CompanyID = M_CompanyID join m_mou on FutureOrderM_MouID = M_MouID join m_doctor da on FutureOrderSenderM_DoctorID = da.M_DoctorID join m_doctoraddress aa on FutureOrderSenderM_DoctorAddressID = aa.M_DoctorAddressID join m_doctor db on FutureOrderSenderM_DoctorID = db.M_DoctorID left join m_title on m_patientm_titleid = m_titleid where FutureOrderID = {$id}"; //echo $sql; $query = $this->db_smartone->query($sql); $rows = $query->row(); //echo $this->db->last_query(); return $rows; } function get_delivery($id) { $sql = "CALL sp_fo_payment_get_delivery('{$id}')"; $rows = $this->db_smartone->query($sql)->row(); $this->clean_mysqli_connection($this->db_smartone->conn_id); return json_decode($rows->delivery); } function get_details($id) { $sql = " select Future_OrderDetailID as d_id, Future_OrderDetailT_TestID as t_id, IF(Future_OrderDetailPacketType = 'PN',T_PacketName,T_TestName) as t_name, Future_OrderDetailPrice as t_price, Future_OrderDetailDiscTotal as t_disctotal, Future_OrderDetailTotal as t_total from future_orderdetail left join t_test on Future_OrderDetailT_TestID = t_testid AND Future_OrderDetailPacketType <> 'PN' left join t_packet on Future_OrderDetailPacketType = 'PN' and Future_OrderDetailT_PacketID = t_packetid where Future_OrderDetailFutureOrderID = {$id} and Future_OrderDetailIsActive = 'Y' "; $query = $this->db_smartone->query($sql); //echo $this->db->last_query(); $rows = $query->result_array(); return $rows; } function load_from_clinic() { $prm = $this->sys_input; $sql = "CALL sp_fo_clinic_load('{$prm['queue']}');"; $query = $this->db_smartone->query($sql); if ($query) { $rst = $query->row(); if ($rst->status == "OK") { $rst->data = json_decode($rst->data); $rst->data->doctor->address = $rst->data->doctor_address; unset($rst->data->doctor_address); $rst->data->company->mou = [$rst->data->mou]; unset($rst->data->mou); } else { $this->sys_error("Tidak ada order"); exit; } echo json_encode($rst); } else { $this->sys_error_db("save order", $this->db_smartone); exit; } } function load() { $prm = $this->sys_input; $sql = "CALL sp_fo_register_load('{$prm['id']}');"; $query = $this->db_smartone->query($sql); if ($query) { $rst = $query->row(); if ($rst->status == "OK") { $rst->data = json_decode($rst->data); $rst->data->doctor->address = $rst->data->doctor_address; unset($rst->data->doctor_address); $rst->data->company->mou = [$rst->data->mou]; unset($rst->data->mou); } else { $this->sys_error("Tidak ada order"); exit; } echo json_encode($rst); } else { $this->sys_error_db("save order", $this->db_smartone); exit; } } function search_deliveries($prm) { $type = $prm['type']; $id = $prm['id']; if ($type == 'patient') { $sql = " SELECT 0 as kelurahan, 0 as address_id, M_DeliveryM_DeliveryTypeID as delivery_type, M_DeliveryID as delivery_id, M_DeliveryName as delivery_name, '' as description, 'N' as chex, '' as note, 'origin' as typeform, '{$type}' as type, M_DeliveryTypeCode as delivery_code FROM m_delivery JOIN m_deliverytype ON M_DeliveryTypeCode = 'PICKUP' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID WHERE M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y' UNION SELECT M_PatientAddressM_KelurahanID as kelurahan, M_PatientAddressID as address_id, M_DeliveryM_DeliveryTypeID as delivery_type, M_DeliveryID as delivery_id, M_DeliveryName as delivery_name, CONCAT(M_PatientAddressDescription,' ',M_KelurahanName,', ',M_DistrictName,', ',M_CityName) as description, 'N' as chex, '' as note, 'origin' as typeform, '{$type}' as type, M_DeliveryTypeCode as delivery_code FROM m_patient JOIN m_patientaddress ON M_PatientAddressM_PatientID = M_PatientID AND M_PatientAddressIsActive = 'Y' JOIN m_kelurahan ON M_PatientAddressM_KelurahanID = M_KelurahanID JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID JOIN m_city ON M_DistrictM_CityID = M_CityID JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y' JOIN m_deliverytype ON M_DeliveryTypeCode = 'ADDRESS' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID WHERE M_PatientID = {$id} GROUP BY M_PatientAddressID UNION SELECT 0 as kelurahan, 0 as address_id, M_DeliveryM_DeliveryTypeID as delivery_type, M_DeliveryID as delivery_id, M_DeliveryName as delivery_name, IFNULL(M_PatientEmail,'Belum ada email pasien') as description, 'N' as chex, '' as note, 'origin' as typeform, '{$type}' as type, M_DeliveryTypeCode as delivery_code FROM m_patient JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y' JOIN m_deliverytype ON M_DeliveryTypeCode = 'EMAIL' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID WHERE M_PatientID = {$id} UNION SELECT 0 as kelurahan, 0 as address_id, M_DeliveryM_DeliveryTypeID as delivery_type, M_DeliveryID as delivery_id, M_DeliveryName as delivery_name, IFNULL(M_PatientEmail,'Belum ada email pasien') as description, 'N' as chex, '' as note, 'origin' as typeform, '{$type}' as type, M_DeliveryTypeCode as delivery_code FROM m_patient JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y' JOIN m_deliverytype ON M_DeliveryTypeCode = 'EMAIL' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID WHERE M_PatientID = {$id} UNION SELECT 0 as kelurahan, 0 as address_id, M_DeliveryM_DeliveryTypeID as delivery_type, M_DeliveryID as delivery_id, M_DeliveryName as delivery_name, IFNULL(M_PatientHP,'Belum ada WA pasien') as description, 'N' as chex, '' as note, 'origin' as typeform, '{$type}' as type, M_DeliveryTypeCode as delivery_code FROM m_patient JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y' JOIN m_deliverytype ON M_DeliveryTypeCode = 'WHATSAPP' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID WHERE M_PatientID = {$id} UNION SELECT 0 as kelurahan, 0 as address_id, M_DeliveryM_DeliveryTypeID as delivery_type, M_DeliveryID as delivery_id, M_DeliveryName as delivery_name, IFNULL(M_PatientHP,'Belum ada telegram pasien') as description, 'N' as chex, '' as note, 'origin' as typeform, '{$type}' as type, M_DeliveryTypeCode as delivery_code FROM m_patient JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y' JOIN m_deliverytype ON M_DeliveryTypeCode = 'TELEGRAM' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID WHERE M_PatientID = {$id}"; //echo $sql; } if ($type == 'mou') { //echo $id; $sql = "SELECT * FROM m_mou WHERE M_MouID = {$id}"; //echo $sql; $data_mou = $this->db_onedev->query($sql)->row_array(); //print_r($data_mou); $sql = " SELECT M_CompanyM_KelurahanID as kelurahan, M_CompanyID as address_id, M_DeliveryM_DeliveryTypeID as delivery_type, M_DeliveryID as delivery_id, M_DeliveryName as delivery_name, CONCAT(M_CompanyAddress,' ',M_KelurahanName,', ',M_DistrictName,', ',M_CityName) as description, 'N' as chex, '' as note, 'origin' as typeform, '{$type}' as type, M_DeliveryTypeCode as delivery_code FROM m_company JOIN m_delivery ON M_DeliverySource = 'COMPANY' AND M_DeliveryIsActive = 'Y' JOIN m_deliverytype ON M_DeliveryTypeCode = 'ADDRESS' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID JOIN m_kelurahan ON M_CompanyM_KelurahanID = M_KelurahanID JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID JOIN m_city ON M_DistrictM_CityID = M_CityID WHERE M_CompanyID = {$data_mou['M_MouM_CompanyID']} UNION SELECT 0 as kelurahan, 0 as address_id, M_DeliveryM_DeliveryTypeID as delivery_type, M_DeliveryID as delivery_id, M_DeliveryName as delivery_name, IFNULL(M_MouEmail,'Belum ada email agreement') as description, IFNULL(M_MouEmailIsDefault,'N') as chex, '' as note, 'origin' as typeform, '{$type}' as type, M_DeliveryTypeCode as delivery_code FROM m_mou JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y' JOIN m_deliverytype ON M_DeliveryTypeCode = 'EMAIL' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID WHERE M_MouID = {$id}"; //echo $sql; } if ($type == 'doctor') { $sql = " SELECT M_DoctorAddressM_KelurahanID as kelurahan, M_DoctorAddressID as address_id, M_DeliveryM_DeliveryTypeID as delivery_type, M_DeliveryID as delivery_id, M_DeliveryName as delivery_name, CONCAT(M_DoctorAddressDescription,' ',M_KelurahanName,', ',M_DistrictName,', ',M_CityName) as description, M_DoctorAddressDeliveryDefault as chex, '' as note, 'origin' as typeform, '{$type}' as type, M_DeliveryTypeCode as delivery_code FROM m_doctor JOIN m_doctoraddress ON M_DoctorAddressM_DoctorID = M_DoctorID AND M_DoctorAddressIsActive = 'Y' JOIN m_kelurahan ON M_DoctorAddressM_KelurahanID = M_KelurahanID JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID JOIN m_city ON M_DistrictM_CityID = M_CityID JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y' JOIN m_deliverytype ON M_DeliveryTypeCode = 'ADDRESS' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID WHERE M_DoctorID = {$id} GROUP BY M_DoctorAddressID UNION SELECT 0 as kelurahan, 0 as address_id, M_DeliveryM_DeliveryTypeID as delivery_type, M_DeliveryID as delivery_id, M_DeliveryName as delivery_name, IF(ISNULL(M_DoctorEmail) OR M_DoctorEmail = '','Belum ada email pengirim',M_DoctorEmail) as description, IF(M_DoctorEmailIsDefault = '','N',IFNULL(M_DoctorEmailIsDefault,'N')) as chex, '' as note, 'origin' as typeform, '{$type}' as type, M_DeliveryTypeCode as delivery_code FROM m_doctor JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y' JOIN m_deliverytype ON M_DeliveryTypeCode = 'EMAIL' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID WHERE M_DoctorID = {$id} UNION SELECT 0 as kelurahan, 0 as address_id, M_DeliveryM_DeliveryTypeID as delivery_type, M_DeliveryID as delivery_id, M_DeliveryName as delivery_name, IF(ISNULL(M_DoctorHP) OR M_DoctorHP = '','Belum ada WA pengirim',M_DoctorHP) as description, IF(M_DoctorEmailIsDefault = '','N',IFNULL(M_DoctorEmailIsDefault,'N')) as chex, '' as note, 'origin' as typeform, '{$type}' as type, M_DeliveryTypeCode as delivery_code FROM m_doctor JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y' JOIN m_deliverytype ON M_DeliveryTypeCode = 'WHATSAPP' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID WHERE M_DoctorID = {$id} UNION SELECT 0 as kelurahan, 0 as address_id, M_DeliveryM_DeliveryTypeID as delivery_type, M_DeliveryID as delivery_id, M_DeliveryName as delivery_name, IF(ISNULL(M_DoctorHP) OR M_DoctorHP = '','Belum ada telegram pengirim',M_DoctorHP) as description, IF(M_DoctorEmailIsDefault = '','N',IFNULL(M_DoctorEmailIsDefault,'N')) as chex, '' as note, 'origin' as typeform, '{$type}' as type, M_DeliveryTypeCode as delivery_code FROM m_doctor JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y' JOIN m_deliverytype ON M_DeliveryTypeCode = 'TELEGRAM' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID WHERE M_DoctorID = {$id}"; } //echo $sql; $query = $this->db_onedev->query($sql); if ($query) { $rows = $query->result_array(); //$data = json_decode($rows->x); if ($rows) { foreach ($rows as $k => $v) { $xval = $v['chex'] === 'N' ? false : true; //$rows[$k]['chex'] = $xval; } } return $rows; } else { return array(); } } function load_preregister() { if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $tests = $row_header['Mcu_PreregisterDetailsTests']; if ($prm['id'] != -1) { $sql = "SELECT * FROM mcu_preregister_patients JOIN mcu_offline_prepare ON Mcu_PreregisterDetailsMcuOfflinePrepareID = McuOfflinePrepareID WHERE Mcu_PreregisterDetailsID = {$prm['id']}"; } else { $sql = "SELECT * FROM mcu_offline_prepare WHERE McuOfflinePrepareIsDownloaded = 'Y' ORDER BY McuOfflinePrepareID DESC LIMIT 1"; } $row_header = $this->db_onedev->query($sql)->row_array(); $patient = array(); $sql = "SELECT 'N' divider,M_PatientID, M_PatientNoReg,M_PatientEmail,M_PatientPrefix,M_PatientSuffix, concat(IFNULL(M_TitleName,''),' ',IFNULL(M_PatientPrefix,''),' ',M_PatientName,' ',IFNULL(M_PatientSuffix,'')) M_PatientName, M_PatientName M_PatientRealName, M_TitleID, M_TitleName, M_SexID, M_SexName, M_PatientHP, M_PatientPOB, M_PatientDOB, DATE_FORMAT(M_PatientDOB,'%d-%m-%Y') as dob_ina, '' M_PatientAddress, M_PatientAddressDescription, M_PatientM_IdTypeID, M_PatientIDNumber, IFNULL(M_PatientNote, '') M_PatientNote, M_PatientPhoto, IF(M_PatientPhone IS NULL OR M_PatientPhone = '', M_PatientHP, M_PatientPhone) hp, '' info, M_PatientAddressM_KelurahanID M_KelurahanID, 0 M_DistrictID, 0 M_CityID, 0 M_ProvinceID, M_PatientM_ReligionID, IFNULL(M_ReligionName, '-') M_ReligionName from m_patient left join m_title on M_PatientM_TitleID = M_TitleID join m_sex on M_PatientM_SexID = M_SexID left join m_patientaddress on M_PatientAddressM_PatientID = M_PatientID and M_PatientAddressIsActive = 'Y' left join m_religion on m_patientm_religionid = m_religionid where M_PatientID = {$row_header['Mcu_PreregisterDetailsM_PatientID']} group by M_PatientID"; //echo $sql; $query = $this->db_onedev->query($sql); if ($query && $prm['id'] != -1) { $patient = $query->row_array(); if ($patient['M_KelurahanID']) { $patient['M_PatientName'] = stripslashes($patient['M_PatientName']); $sql = "SELECT *, concat('{$patient['M_PatientAddressDescription']}', '\n\n', m_kelurahanname, ', ', m_districtname,'\n', m_cityname, ', ', m_provincename) as xaddress FROM m_kelurahan JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID JOIN m_city ON M_DistrictM_CityID = M_CityID JOIN m_province ON M_CityM_ProvinceID = M_ProvinceID WHERE M_KelurahanID = {$patient['M_KelurahanID']} "; //echo $sql; $row_address = $this->db_onedev->query($sql)->row_array(); $patient['M_PatientAddress'] = stripslashes($row_address['xaddress']); $patient['M_DistrictID'] = $row_address['M_DistrictID']; $patient['M_CityID'] = $row_address['M_CityID']; $patient['M_ProvinceID'] = $row_address['M_ProvinceID']; $info = $this->db_onedev->query("SELECT fn_fo_patient_visit(?) info", [$patient['M_PatientID']])->row(); $patient['info'] = json_decode($info->info); $rst['patient'] = $patient; } else { $patient['M_PatientAddress'] = ''; $patient['M_DistrictID'] = 0; $patient['M_CityID'] = 0; $patient['M_ProvinceID'] = 0; $info = $this->db_onedev->query("SELECT fn_fo_patient_visit(?) info", [$patient['M_PatientID']])->row(); $patient['info'] = json_decode($info->info); $rst['patient'] = $patient; } } else { $rst['patient'] = array(); } if ($row_header['Mcu_PreregisterDetailsAgreement'] == '') { $sql = "SELECT M_MouStatus,M_MouEmail, M_MouEmailIsDefault, M_MouEndDate, M_MouID, M_MouIsBill, M_MouIsDefault, M_MouName, M_MouNote, M_MouStartDate, '' delivery_email_code FROM m_mou WHERE M_MouID = {$row_header['McuOfflinePrepareM_MouDefaultID']}"; } else { $sql = "SELECT M_MouStatus,M_MouEmail, M_MouEmailIsDefault, M_MouEndDate, M_MouID, M_MouIsBill, M_MouIsDefault, M_MouName, M_MouNote, M_MouStartDate, '' delivery_email_code FROM m_mou WHERE M_MouNumber = '{$row_header['Mcu_PreregisterDetailsAgreement']}'"; } //echo $sql; $row_mou = $this->db_onedev->query($sql)->row_array(); $rst['data_deliveries'] = array(); $new_delivery = array(); $new_delivery = $this->search_deliveries(array('id' => $row_header['Mcu_PreregisterDetailsM_PatientID'], 'type' => 'patient')); if (count($new_delivery) > 0) { foreach ($new_delivery as $knd => $vnd) { array_push($rst['data_deliveries'], $vnd); } } /*data doctor*/ $sql = "SELECT M_DoctorID, M_DoctorIsDefault, 'N' M_DoctorIsPJ, CONCAT('[ ',M_DoctorCode,' ] ',M_DoctorPrefix, M_DoctorPrefix2,' ',M_DoctorName,' ',M_DoctorSufix, M_DoctorSufix2, M_DoctorSufix3) as M_DoctorName, fn_fo_delivery_code('DOCTOR', 'EMAIL', 0) as delivery_email_code, IF(M_DoctorEmail IS NULL OR M_DoctorEmail = '', 'N', M_DoctorEmailIsDefault) email_default, IFNULL( concat('[', group_concat(JSON_OBJECT('description',M_DoctorAddressNote,'M_DoctorAddressDescription', M_DoctorAddressDescription, 'M_DoctorAddressID', M_DoctorAddressID, 'delivery_default', M_DoctorAddressDeliveryDefault, 'delivery_code', fn_fo_delivery_code('DOCTOR', 'ADDRESS', M_DoctorAddressID)) SEPARATOR ','), ']'), '[]') as address, M_DoctorNote FROM mcu_offline_prepare JOIN m_doctor ON McuOfflinePrepareM_DoctorDefaultID = M_DoctorID AND M_DoctorIsActive = 'Y' JOIN m_doctoraddress ON M_DoctorAddressM_DoctorID = M_DoctorID AND M_DoctorAddressIsActive = 'Y' WHERE McuOfflinePrepareID = {$row_header['McuOfflinePrepareID']} group by M_DoctorID"; //echo $sql; $v = $this->db_onedev->query($sql)->row_array(); if ($v) { $v['address'] = json_decode($v['address']); $rst['selected_doctor'] = $v; $sql = "SELECT M_DoctorAddressDescription, M_DoctorAddressID, M_DoctorAddressDeliveryDefault delivery_default, fn_fo_delivery_code('DOCTOR', 'ADDRESS', M_DoctorAddressID) delivery_code FROM mcu_offline_prepare JOIN m_doctor ON McuOfflinePrepareM_DoctorDefaultID = M_DoctorID AND M_DoctorIsActive = 'Y' JOIN m_doctoraddress ON McuOfflinePrepareM_DoctorAddressDefaultID = M_DoctorAddressID AND M_DoctorAddressIsActive = 'Y' WHERE McuOfflinePrepareID = {$row_header['McuOfflinePrepareID']}"; $raddr = $this->db_onedev->query($sql)->row_array(); foreach ($v['address'] as $kaddr => $vaddr) { $v['address'][$kaddr]->description = $v['address'][$kaddr]->M_DoctorAddressNote . " : " . $v['address'][$kaddr]->M_DoctorAddressDescription; if (intval($vaddr->M_DoctorAddressID) == intval($raddr['M_DoctorAddressID'])) $rst['selected_address'] = $v['address'][$kaddr]; } //$rst['selected_address'] = $vaddr; } if (!$rst['selected_address']) { $rst['selected_address'] = $rst['address_doctor'][0]; } $new_delivery = array(); $new_delivery = $this->search_deliveries(array('id' => $rst['selected_doctor']['M_DoctorID'], 'type' => 'doctor')); if (count($new_delivery) > 0) { foreach ($new_delivery as $knd => $vnd) { array_push($rst['data_deliveries'], $vnd); } } /*data company mou*/ $sql = "SELECT m_company.*, '' mou FROM m_company WHERE M_CompanyID = {$row_header['McuOfflinePrepareM_CompanyID']}"; $row_company = $this->db_onedev->query($sql)->row_array(); $sql = "SELECT M_MouStatus,M_MouEmail, M_MouEmailIsDefault, M_MouEndDate, M_MouID, M_MouIsBill, M_MouIsDefault, M_MouName, M_MouNote, M_MouStartDate, '' delivery_email_code FROM m_mou WHERE M_MouM_CompanyID = {$row_company['M_CompanyID']} AND M_MouStatus = 'R' AND M_MouIsActive = 'Y'"; //echo $sql; $row_company['mou'] = $this->db_onedev->query($sql)->result_array(); //print_r($row_company); $rst['selected_company'] = $row_company; $rst['selected_mou'] = $row_mou; $rst['companies'] = array(); array_push($rst['companies'], $rst['selected_company']); $new_delivery = array(); //echo $rst['selected_mou']['M_MouID']; $new_delivery = $this->search_deliveries(array('id' => $row_mou['M_MouID'], 'type' => 'mou')); if (count($new_delivery) > 0) { foreach ($new_delivery as $knd => $vnd) { array_push($rst['data_deliveries'], $vnd); } } //echo 'dsada'; foreach ($rst['data_deliveries'] as $k_ordev => $v_ordev) { //echo $row_header['McuOfflinePrepareDeliveries']; $check_centang_dev = $this->checked_delivery($row_header['McuOfflinePrepareDeliveries'], $v_ordev); if ($check_centang_dev) { $rst['data_deliveries'][$k_ordev] = $check_centang_dev; } } $rst['tests'] = array(); $explode_tests = explode(',', $row_header['Mcu_PreregisterDetailsTests']); if (!empty($explode_tests)) { //print_r($explode_tests); foreach ($explode_tests as $ktest => $vtest) { $r_test = $this->search_test_by_code(trim($vtest), $row_mou['M_MouID']); if ($r_test) { array_push($rst['tests'], $r_test); } } } $xrst = array('status' => $status, 'data' => $rst); $result = array("records" => $rst); $this->sys_ok($result); exit; } function checked_delivery($prepare_deliveries, $delivery) { $rtn = false; //print_r($delivery); //print_r($prepare_deliveries); $prepare_deliveries = preg_replace("/\\n/", "___n___", $prepare_deliveries); $deliveries = json_decode($prepare_deliveries); //print_r($deliveries); foreach ($deliveries as $k => $v) { if ((intval($v->kelurahan) == intval($delivery['kelurahan'])) && (intval($v->address_id) == intval($delivery['address_id'])) && ($v->delivery_type == $delivery['delivery_type']) && (intval($v->delivery_id) == intval($delivery['delivery_id'])) && $v->chex == 'Y') { $rtn = $v; } } return $rtn; } function search_test_by_code($xcode, $mouid) { $is_packet = 'N'; $px_type = 'PX'; if (substr($xcode, 0, 2) == 'PN' || substr($xcode, 0, 2) == 'PR') { $is_packet = 'Y'; $px_type = substr($xcode, 0, 2); $sql = "SELECT T_PacketID as T_TestID FROM t_packet WHERE T_PacketSasCode = '{$xcode}' AND T_PacketIsActive = 'Y'"; } else { $sql = "SELECT T_TestID FROM t_test WHERE T_TestSasCode = '{$xcode}' AND T_TestIsActive = 'Y'"; } //echo $sql; $xrow_test = $this->db_smartone->query($sql)->row_array(); $sql = "select * from ss_price_mou where Ss_PriceMouM_MouID = {$mouid} AND T_TestID = {$xrow_test['T_TestID']} AND px_type = '{$px_type}' AND is_packet = '{$is_packet}' AND T_PriceIsCito <> 'Y';"; // echo $sql; $query = $this->db_smartone->query($sql); if ($query) { $row = $query->row_array(); $id_to_remove = []; // var_dump($rows); $row['requirement'] = []; if ($row['px_type'] == "PX") { $x = $this->db_smartone->query("SELECT fn_fo_requirement_get('{$row['T_TestID']}') x") ->row(); if ($x->x != null) $row['requirement'] = json_decode($x->x); } //print_r($row); // Janji Hasil per PX //$x = $this->db_smartone->query("SELECT fn_fo_find_promise_by_one_px('{$row['T_TestID']}') x")->row(); if ($row['is_packet'] == 'N') { $tests = $row['T_PriceT_TestID']; $panels = ''; } else { $tests = ''; $panels = $row['T_PriceT_TestID']; } $sql_param = array($tests, $panels); $sql = "select fn_fo_find_promise_by_px(?, ?) as x"; $x = $this->db_smartone->query($sql, $sql_param)->row(); if ($x->x != null) $row['promise'] = $x->x; $row['nat_test'] = json_decode($row['nat_test']); $row['child_test'] = json_decode($row['child_test']); // IF PROFILE if ($row['px_type'] == "PR" || $row['px_type'] == "PXR") { foreach ($row['child_test'] as $l => $w) { $row['child_test'][$l]->requirement = []; $row['child_test'][$l]->nat_test = json_decode($w->nat_test); $row['child_test'][$l]->promise = null; //echo "SELECT fn_fo_requirement_get('{$w->T_TestID}')"; $x = $this->db_smartone->query("SELECT fn_fo_requirement_get('{$w->T_TestID}') x")->row(); if ($x->x != null) $row['child_test'][$l]->requirement = json_decode($x->x); // Janji Hasil per PX $x = $this->db_smartone->query("SELECT fn_fo_find_promise_by_one_px('{$w->T_TestID}') x") ->row(); if ($x->x != null) $row['child_test'][$l]->promise = $x->x; } } return $row; } } function get_booking_today() { $prm = $this->sys_input; $sql = "SELECT booking_today.* FROM booking_today WHERE BookingTodayIsActive = 'Y' ORDER BY BookingTodayID DESC LIMIT 1"; $query = $this->db_smartone->query($sql); if (!$query) { $this->db_smartone->trans_rollback(); $this->sys_error_db('select booking today error', $this->db_smartone); exit; } $row = $query->row_array(); $result = array("records" => $row); $this->sys_ok($result); } }