Advertisement
alan216

Konsultasi.php

Aug 15th, 2019
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.00 KB | None | 0 0
  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3.  
  4. class Konsultasi extends CI_Controller {
  5. function __construct() {
  6. parent::__construct();
  7. $this->load->helper('url');
  8. $this->load->library('form_validation');
  9. }
  10. function index() {
  11.  
  12. $jenis_kucing = $this->db->get('jenis_kucing')->result();
  13. $varietas_kucing = $this->db->get('varietas_kucing')->result();
  14. $config = array(
  15. array('field' => 'nama_pemilik', 'label' => 'Nama Pemilik', 'rules' => 'required'),
  16. array('field' => 'jenis_kucing', 'label' => 'Jenis Kucing', 'rules' => 'required'),
  17. array('field' => 'varietas_kucing', 'label' => 'Varietas Kucing', 'rules' => 'required'),
  18. array('field' => 'kelamin_kucing', 'label' => 'Kelamin Kucing', 'rules' => 'required'),
  19. array('field' => 'usia', 'label' => 'Usia', 'rules' => 'required|integer'),
  20. array('field' => 'lokasi_pemeliharaan', 'label' => 'Lokasi Pemeliharaan', 'rules' => 'required'),
  21. array('field' => 'session_id_valid_requiered', 'label' => 'Session Valid', 'rules' => 'callback_check_session_id_valid'),
  22. );
  23.  
  24. $this->form_validation->set_rules($config);
  25. if ($this->form_validation->run() == FALSE) {
  26. if (isset($_SESSION['session_id_valid'])) {
  27. unset($_SESSION['session_id_valid']);
  28. }
  29. if (isset($_SESSION['start_konsultasi'])) {
  30. unset($_SESSION['start_konsultasi']);
  31. }
  32. $_SESSION['session_id_valid'] = md5(time().time());
  33. $data = $this->load->view('isi_dulu',
  34. array('jenis_kucing' => $jenis_kucing,
  35. 'varietas_kucing' => $varietas_kucing, 'session_id_valid' => $_SESSION['session_id_valid'])
  36. , TRUE);
  37. $this->load->view('template', array('data'=>$data));
  38. } else {
  39. $sql = "INSERT INTO tmp_pasien(nama_pemilik, kelamin_kucing, varietas_kucing, jenis_kucing, usia, lokasi, session_id, tanggal) values (?, ?, ?, ?, ?, ?, ?, ?)";
  40. $status = $this->db->query($sql, array(@$_POST['nama_pemilik'], @$_POST['kelamin_kucing'], @$_POST['varietas_kucing'], @$_POST['jenis_kucing'], @$_POST['usia'], @$_POST['lokasi_pemeliharaan'], @$_POST['session_id_valid_requiered'], date("Y-m-d H:i:s"))
  41. );
  42. if($status) {
  43. redirect('konsultasi/pertanyaan');
  44. }
  45. }
  46.  
  47. }
  48. function pertanyaan() {
  49. if (!isset($_SESSION['session_id_valid'])) {
  50. redirect('konsultasi');
  51. }
  52.  
  53. //Susun algoritma disini
  54. /*
  55. 1. Init & Cek Apakah sudah dimulai
  56. Masukkan relasi ke tmp_relasi
  57. */
  58. if (!isset($_SESSION['start_konsultasi'])) {
  59. $_SESSION['start_konsultasi'] = md5(rand().time());
  60. $sql = "INSERT INTO tmp_relasi SELECT *, ? as session_id from relasi";
  61. $this->db->query($sql, array($_SESSION['session_id_valid']));
  62. } else {
  63. # code...
  64. }
  65.  
  66. /*
  67. 2. Ambil gejala secara terurut dari yang paling banyak muncul
  68. Jika tidak ada gejala selesai perulangan dan ambil penyakit terakhir sebagai hasil
  69. */
  70. $sql = "SELECT kd_gejala from tmp_relasi where session_id = ? group by kd_gejala order by count(kd_gejala) desc";
  71. $gejala = $this->db->query($sql, array($_SESSION['session_id_valid']));
  72. if (!$gejala->num_rows()) {
  73. $sql = "SELECT kd_penyakit from tmp_analisa where session_id = ? order by id desc limit 1";
  74. $gejala = $this->db->query($sql, array($_SESSION['session_id_valid']))->row();
  75. unset($_SESSION['start_konsultasi']);
  76. if(@is_object($gejala)) {
  77. $_SESSION['hasil_konsultasi'] = $gejala->kd_penyakit;
  78. }
  79. else
  80. {
  81. $_SESSION['hasil_konsultasi'] = "0";
  82. }
  83. //var_dump($gejala);
  84. redirect('konsultasi/analisa');
  85. } else {
  86. $gejala = $gejala->row();
  87. $gejala = $gejala->kd_gejala;
  88. $sql = "SELECT * from gejala where id=?";
  89. $gejala = $this->db->query($sql, array($gejala))->row();
  90.  
  91. }
  92.  
  93. /*
  94. 3. Tanyakan
  95. Jika benar, hapus penyakit yang tidak mengandung gejala
  96. Jika salah, hapus penyakit yang mengandung gejala
  97. Jangan lupa, hapus pertanyaan
  98. */
  99. $data = $this->load->view('pertanyaan',
  100. array('gejala'=> $gejala)
  101. , TRUE);
  102. $this->load->view('template', array('data'=>$data));
  103.  
  104.  
  105.  
  106. }
  107. function act_pertanyaan() {
  108. if (!isset($_SESSION['start_konsultasi'])
  109. || isset($_SESSION['hasil_konsultasi'])
  110. ) {
  111. exit(json_encode(array('url' => "fail", 'baris' => __LINE__)));
  112. }
  113.  
  114. /*
  115. 3. Tanyakan
  116. Jika benar, hapus penyakit yang tidak mengandung gejala
  117. Jika salah, hapus penyakit yang mengandung gejala
  118. Jangan lupa, hapus pertanyaan
  119. */
  120. $config = array(
  121. array('field' => 'kd_gejala', 'label' => 'Kode Gejala', 'rules' => 'required'),
  122. array('field' => 'pilihan', 'label' => 'Pilihan', 'rules' => 'required')
  123. );
  124.  
  125. $this->form_validation->set_rules($config);
  126. if ($this->form_validation->run()) {
  127. $gejala = $this->input->post('kd_gejala');
  128. $pilihan = $this->input->post('pilihan');
  129. $sql = "SELECT kd_penyakit from tmp_relasi where kd_gejala = ? and session_id = ? group by kd_penyakit";
  130. $kd_penyakit_arr = $this->db->query($sql, array($gejala, $_SESSION['session_id_valid']))->result();
  131. $kd_penyakit_arr_ = array();
  132. foreach ($kd_penyakit_arr as $value) {
  133. $kd_penyakit_arr_[] = (int) $value->kd_penyakit;
  134. }
  135. $kd_penyakit_arr = "(".implode(", ", $kd_penyakit_arr_).")";
  136. if ($pilihan == 'ya') {
  137. $sql = "DELETE FROM tmp_relasi where session_id = ? AND (kd_penyakit NOT IN $kd_penyakit_arr OR kd_gejala = ?)";
  138. $status = "Y";
  139. } else {
  140. $sql = "DELETE FROM tmp_relasi where session_id = ? AND (kd_penyakit IN $kd_penyakit_arr OR kd_gejala = ?)";
  141. $status = "N";
  142. }
  143. $return = $this->db->query($sql, array($_SESSION['session_id_valid'], $gejala));
  144.  
  145. /*
  146. 4. Ambil Penyakit
  147. Jika ada masukkan ke tabel analisa sementara
  148. Jika tidak ada, selesai perulangan dan tidak ada penyakit di database
  149. */
  150. $sql = "SELECT kd_penyakit from tmp_relasi where session_id = ? GROUP BY kd_penyakit";
  151. $penyakit = $this->db->query($sql, array($_SESSION['session_id_valid']));
  152. if ($penyakit->num_rows() ) {
  153. $penyakit = $penyakit->result();
  154. $penyakit_arr = array();
  155. foreach ($penyakit as $_penyakit) {
  156. $penyakit_arr[] = (int) $_penyakit->kd_penyakit;
  157. }
  158. $sql = "INSERT INTO tmp_analisa (session_id, kd_penyakit, kd_gejala, status) values (?,?,?,?)";
  159. $this->db->query($sql, array($_SESSION['session_id_valid'], json_encode($penyakit_arr), $gejala, $status));
  160. //Message if success
  161. //redirect('konsultasi/pertanyaan');
  162. echo json_encode(array('url' => base_url()."konsultasi/pertanyaan"));
  163. } else {
  164. unset($_SESSION['start_konsultasi']);
  165. if ($status == 'Y') {
  166. $sql = "SELECT kd_penyakit from tmp_analisa where session_id = ? order by id desc limit 1";
  167. $gejala = $this->db->query($sql, array($_SESSION['session_id_valid']))->row();
  168. $_SESSION['hasil_konsultasi'] = json_decode($gejala->kd_penyakit)[0];
  169. } else {
  170. $_SESSION['hasil_konsultasi'] = "0";
  171.  
  172. }
  173.  
  174. //redirect('konsultasi/analisa');
  175. echo json_encode(array('url' => base_url()."konsultasi/analisa"));
  176. }
  177. } else {
  178. echo json_encode(array('url' => "fail"));
  179. }
  180.  
  181. }
  182. function analisa() {
  183. if (!isset($_SESSION['session_id_valid'])
  184. || !isset($_SESSION['hasil_konsultasi'])
  185. ) {
  186. redirect('home');
  187. }
  188. $penyakit = $_SESSION['hasil_konsultasi'];
  189. $sql = "INSERT INTO analisa_hasil(nama_pemilik, kelamin_kucing, varietas_kucing, jenis_kucing, usia, lokasi, session_id, tanggal, kd_penyakit) SELECT nama_pemilik, kelamin_kucing, varietas_kucing, jenis_kucing, usia, lokasi, session_id, tanggal, ? AS kd_penyakit FROM tmp_pasien WHERE session_id = ? AND session_id not in ( select session_id from analisa_hasil)";
  190. $this->db->query($sql, array($penyakit, $_SESSION['session_id_valid']));
  191. $sql = "SELECT id from analisa_hasil where session_id = ?";
  192. $id = @$this->db->query($sql, array($_SESSION['session_id_valid']))->row()->id;
  193. if(!$id) {
  194. redirect('konsultasi/delete');
  195. }
  196. $data = $this->db->query("CALL getDetailRekaman(?)", array($id))->row();
  197. mysqli_next_result($this->db->conn_id);
  198. if ($data->kd_penyakit) {
  199. $gejala = $this->db->query("SELECT `gejala`.* FROM `gejala` JOIN `relasi` ON `gejala`.`id` = `relasi`.`kd_gejala` AND `relasi`.`kd_penyakit` = '{$data->kd_penyakit}'")->result();
  200. $data = $this->load->view('analisa',
  201. array('data' => $data, 'gejala' => $gejala)
  202. , TRUE);
  203. } else {
  204. $data = $this->load->view('analisa_gagal',
  205. array('data' => $data)
  206. , TRUE);
  207. }
  208.  
  209. $this->load->view('template', array('data'=>$data));
  210. }
  211. function delete() {
  212. if (isset($_SESSION['session_id_valid'])) {
  213. $sql = "delete from tmp_relasi where session_id = ?";
  214. $this->db->query($sql, array($_SESSION['session_id_valid']));
  215. $sql = "delete from tmp_pasien where session_id = ?";
  216. $this->db->query($sql, array($_SESSION['session_id_valid']));
  217. unset($_SESSION['session_id_valid']);
  218. }
  219. unset($_SESSION['hasil_konsultasi']);
  220. unset($_SESSION['start_konsultasi']);
  221.  
  222. redirect('home');
  223. }
  224. function check_session_id_valid($str) {
  225. if ($str == $_SESSION['session_id_valid']) {
  226. return true;
  227. }
  228. else
  229. {
  230. return false;
  231. }
  232. }
  233.  
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement