db_smartone = $this->load->database("onedev", true); } function _add_address(&$doc) { if (count($doc) == "0") { return; } $doc_ids = "-1"; foreach($doc as $idx => $d ) { $doc_ids .= "," . $d["M_DoctorID"]; $doc[$idx]["address"] = array(); } $sql = "select M_DoctorAddressID,M_DoctorAddressM_DoctorID, M_DoctorAddressDesc from m_doctoraddress where M_DoctorAddressM_DoctorID in ( $doc_ids ) and M_DoctorAddressIsActive = 'Y'"; $query = $this->db_smartone->query($sql); if ($query) { $rows = $query->result_array(); foreach($rows as $r) { $doctorID= $r["M_DoctorAddressM_DoctorID"]; foreach($doc as $idx => $d) { if($d["M_DoctorID"] == $doctorID) { $doc[$idx]["address"][] = $r; } } } } else { $this->sys_error_db("m_doctoraddress ", $this->db_smartone); exit; } } public function search_pj() { //sipe : M_DoctorPjIsDefault diganti ke M_DoctorPjIsDefaultPJ $sql = "select M_DoctorID, CONCAT(M_DoctorPrefix, M_DoctorPrefix2,' ',M_DoctorName,' ',M_DoctorSufix, M_DoctorSufix2, M_DoctorSufix3) M_DoctorName, M_DoctorPjIsDefaultPj M_DoctorIsDefaultPJ from m_doctor join m_doctorpj on M_DoctorPJM_DoctorID = M_DoctorID and M_DoctorPjIsactive = 'Y' and M_DoctorPjIsPJ = 'Y' where M_DoctorIsActive = 'Y' and ( M_DoctorPJID is not null ) "; $query = $this->db_smartone->query($sql, array("%$search%")); $rows = $query->result_array(); $result = array("total" => count($rows) , "records" => $rows); $this->sys_ok($result); exit; } public function get_doctoraddress() { $prm = $this->sys_input; $id = $prm['id']; $sql = "select M_DoctorAddressID, M_DoctorAddressM_DoctorID, M_DoctorAddressNote, M_DoctorAddressDescription, CONCAT(M_DoctorAddressDescription, ' :',M_DoctorAddressNote) as description from m_doctoraddress where M_DoctorAddressM_DoctorID = $id and M_DoctorAddressIsActive = 'Y' ORDER BY M_DoctorAddressDeliveryDefault DESC"; $query = $this->db_smartone->query($sql); $rows = $query->result_array(); $result = array("total" => count($rows) , "records" => $rows); $this->sys_ok($result); exit; } public function get_queueid() { $prm = $this->sys_input; $id = $prm['id']; $sql = "select queueID as id FROM antrione.queue WHERE queueServiceID = 7 AND queueNumber = '{$id}'"; $query = $this->db_smartone->query($sql); $rows = $query->result_array(); $result = array("total" => count($rows) , "records" => $rows); $this->sys_ok($result); exit; } public function search() { $prm = $this->sys_input; $max_rst = 12; $tot_count =0; $q = [ 'search' => '%' ]; if ($prm['search'] != '') { $q['search'] = "%{$prm['search']}%"; } // QUERY TOTAL $sql = "select M_DoctorID, M_DoctorIsDefault, IF(M_DoctorPJID IS NULL, 'Y', '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_DoctorAddressNote',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 m_doctor join m_doctoraddress on M_DoctorAddressIsActive = 'Y' and M_DoctorAddressM_DoctorID = M_DoctorID left join m_doctorpj on M_DoctorPJM_DoctorID = M_DoctorID and M_DoctorPjIsactive = 'Y' where M_DoctorIsActive = 'Y' and CONCAT('[ ',M_DoctorCode,' ] ',M_DoctorPrefix, M_DoctorPrefix2,' ',M_DoctorName,' ',M_DoctorSufix, M_DoctorSufix2, M_DoctorSufix3) like ? group by M_DoctorID limit 30"; $query = $this->db_smartone->query($sql, array($q['search'])); if ($query) { $rows = $query->result_array(); foreach ($rows as $k => $v){ $rows[$k]['address'] = json_decode($v['address']); foreach($rows[$k]['address'] as $k_a => $v_a){ $rows[$k]['address'][$k_a]->description = $rows[$k]['address'][$k_a]->M_DoctorAddressNote." : ".$rows[$k]['address'][$k_a]->M_DoctorAddressDescription; } } $result = array("total" => $tot_count, "records" => $rows, "total_display" => sizeof($rows)); $this->sys_ok($result); } else { $this->sys_error_db("m_doctor rows",$this->db_smartone); exit; } } public function search_() { $prm = $this->sys_input; $search = $prm["search"]; $sql = "select count(*) total from m_doctor join ( select distinct M_DoctorAddressM_DoctorID from m_doctoraddress where M_DoctorAddressIsActive = 'Y' ) ma on M_DoctorID = M_DoctorAddressM_DoctorID where M_DoctorIsActive = 'Y' and M_DoctorName like ? "; $query = $this->db_smartone->query($sql, array("%$search%")); $tot_count =0; if ($query) { $tot_count = $query->result_array()[0]["total"]; } else { $this->sys_error_db("m_patient count", $this->db_smartone); exit; } $sql = "select M_DoctorID,M_DoctorName from m_doctor join ( select distinct M_DoctorAddressM_DoctorID from m_doctoraddress where M_DoctorAddressIsActive = 'Y' ) ma on M_DoctorID = M_DoctorAddressM_DoctorID where M_DoctorIsActive = 'Y' and M_DoctorName like ? limit 0,10"; $query = $this->db_smartone->query($sql, array("%$search%")); $rows = $query->result_array(); $this->_add_address($rows); $result = array("total" => $tot_count, "records" => $rows); $this->sys_ok($result); exit; } public function save() { $prm = $this->sys_input; $prm = $prm['data']; $q = [ 'name' => isset($prm['name']) ? $prm['name'] : '', 'prefix1' => isset($prm['prefix1']) ? $prm['prefix1'] : '', 'prefix2' => isset($prm['prefix2']) ? $prm['prefix2'] : '', 'sufix1' => isset($prm['sufix1']) ? $prm['sufix1'] : '', 'sufix2' => isset($prm['sufix2']) ? $prm['sufix2'] : '', 'sufix3' => isset($prm['sufix3']) ? $prm['sufix3'] : '', 'sex' => isset($prm['sex']) ? $prm['sex'] : '0', 'hp' => isset($prm['hp']) ? $prm['hp'] : '', 'note' => isset($prm['note']) ? $prm['note'] : '', 'address' => isset($prm['address']) ? $prm['address'] : '', 'province' => isset($prm['province']) ? $prm['province'] : '', 'city' => isset($prm['city']) ? $prm['city'] : '', 'district' => isset($prm['district']) ? $prm['district'] : '', 'village' => isset($prm['village']) ? $prm['village'] : '' ]; $sql = "INSERT INTO m_doctor(M_DoctorPrefix, M_DoctorPrefix2, M_DoctorName, M_DoctorSufix, M_DoctorSufix2, M_DoctorSufix3, M_DoctorM_SexID, M_DoctorHP, M_DoctorNote) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)"; $query = $this->db_smartone->query($sql, [$q['prefix1'], $q['prefix2'], $q['name'], $q['sufix1'], $q['sufix2'], $q['sufix3'], $q['sex'], $q['hp'], $q['note']]); if ($query) { $id = $this->db_smartone->insert_id(); $sql = "INSERT INTO m_doctoraddress(M_DoctorAddressM_DoctorID, M_DoctorAddressNote, M_DoctorAddressDescription, M_DoctorAddressM_KelurahanID) VALUES(?, 'Utama', ?, ?)"; $query = $this->db_smartone->query($sql, [$id, $q['address'], $q['village']]); if ($query) { $result = $this->get_one($id); $this->sys_ok($result); exit; } } $this->sys_error_db("DOCTOR SAVE", $this->db_smartone); } private function get_one($id) { $sql = "SELECT M_DoctorID, M_DoctorIsDefault, 'N' M_DoctorIsPJ, fn_global_doctor_name(M_DoctorID) as M_DoctorName, M_DoctorName M_DoctorRealName, IFNULL( concat('[', group_concat(JSON_OBJECT('M_DoctorAddressNote',M_DoctorAddressNote,'M_DoctorAddressDescription', M_DoctorAddressDescription, 'M_DoctorAddressID', M_DoctorAddressID) SEPARATOR ','), ']'), '[]') as address FROM m_doctor LEFT JOIN m_doctoraddress ON M_DoctorAddressM_DoctorID = M_DoctorID AND M_DoctorAddressIsActive = 'Y' WHERE M_DoctorID = ?"; $query = $this->db_smartone->query($sql, $id); if ($query) { $row = $query->result_array(); foreach ($row as $k => $v) $row[$k]['address'] = json_decode($v['address']); $result = array("total" => 1, "records" => $row, "total_display" => 1); return $result; } return false; } }