Advertisement
alan216

Konsultasi.php

Aug 30th, 2019
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.03 KB | None | 0 0
  1. <?php
  2. defined ( 'BASEPATH' ) or exit ( 'No direct script access allowed' );
  3. class Konsultasi extends CI_Controller {
  4. function __construct() {
  5. parent::__construct ();
  6. $this->load->helper ( 'url' );
  7. $this->load->library ( 'form_validation' );
  8. $this->load->model ( "m_helper" );
  9. }
  10. function index() {
  11. if ($this->isKonsultasiValid ()) {
  12. redirect ( "konsultasi/pertanyaan" );
  13. }
  14.  
  15. $jenis_kucing = $this->m_helper->result ( "jenis_kucing" );
  16. $varietas_kucing = $this->m_helper->result ( "jenis_kucing" );
  17.  
  18. $config = array (
  19. array (
  20. 'field' => 'nama_pemilik',
  21. 'label' => 'Nama Pemilik',
  22. 'rules' => 'required'
  23. ),
  24. array (
  25. 'field' => 'jenis_kucing',
  26. 'label' => 'Jenis Kucing',
  27. 'rules' => 'required'
  28. ),
  29. array (
  30. 'field' => 'varietas_kucing',
  31. 'label' => 'Varietas Kucing',
  32. 'rules' => 'required'
  33. ),
  34. array (
  35. 'field' => 'kelamin_kucing',
  36. 'label' => 'Kelamin Kucing',
  37. 'rules' => 'required'
  38. ),
  39. array (
  40. 'field' => 'usia',
  41. 'label' => 'Usia',
  42. 'rules' => 'required|integer'
  43. ),
  44. array (
  45. 'field' => 'lokasi_pemeliharaan',
  46. 'label' => 'Lokasi Pemeliharaan',
  47. 'rules' => 'required'
  48. )
  49. );
  50.  
  51. $this->form_validation->set_rules ( $config );
  52. if ($this->form_validation->run () == FALSE) {
  53.  
  54. $content_data = array (
  55. 'jenis_kucing' => $jenis_kucing,
  56. 'varietas_kucing' => $varietas_kucing,
  57. 'session_id_valid' => ''
  58. );
  59. $content_view = $this->load->view ( 'isi_dulu', $content_data, TRUE );
  60.  
  61. $template_data = array (
  62. 'data' => $content_view
  63. );
  64.  
  65. $this->load->view ( 'template', $template_data );
  66. }
  67.  
  68. else {
  69.  
  70. $konsultasi_session_id = md5 ( time () . time () );
  71.  
  72. $post_data = $this->input->post ();
  73. $fill_data = array (
  74. "nama_pemilik" => $post_data ['nama_pemilik'],
  75. "kelamin_kucing" => $post_data ['kelamin_kucing'],
  76. "varietas_kucing" => $post_data ['varietas_kucing'],
  77. "jenis_kucing" => $post_data ['jenis_kucing'],
  78. "usia" => $post_data ['usia'],
  79. "lokasi" => $post_data ['lokasi_pemeliharaan'],
  80. "session_id" => $konsultasi_session_id,
  81. "tanggal" => date ( "Y-m-d H:i:s" )
  82. );
  83.  
  84. $inserted = $this->m_helper->insert ( 'tmp_pasien', $fill_data );
  85. if ($inserted) {
  86. $this->session->unset_userdata ( "start_konsultasi" );
  87. $this->session->set_userdata ( "session_id_valid", $konsultasi_session_id );
  88. redirect ( 'konsultasi/pertanyaan' );
  89. }
  90. }
  91. }
  92. private function isKonsultasiValid() {
  93. return $this->session->userdata ( "start_konsultasi" );
  94. }
  95. function pertanyaan() {
  96. if (! isset ( $_SESSION ['session_id_valid'] )) {
  97. redirect ( 'konsultasi' );
  98. }
  99.  
  100. // Susun algoritma disini
  101. /*
  102. * 1. Init & Cek Apakah sudah dimulai
  103. * Masukkan relasi ke tmp_relasi
  104. */
  105. if (! isset ( $_SESSION ['start_konsultasi'] )) {
  106. $_SESSION ['start_konsultasi'] = md5 ( rand () . time () );
  107. $sql = "INSERT INTO tmp_relasi SELECT *, ? as session_id from relasi";
  108. $this->db->query ( $sql, array (
  109. $_SESSION ['session_id_valid']
  110. ) );
  111. }
  112.  
  113. /*
  114. * 2. Ambil gejala secara terurut dari yang paling banyak muncul
  115. * Jika tidak ada gejala selesai perulangan dan ambil penyakit terakhir sebagai hasil
  116. */
  117. $sql = "SELECT kd_gejala from tmp_relasi where session_id = ? group by kd_gejala order by count(kd_gejala) desc";
  118. $gejala = $this->db->query ( $sql, array (
  119. $_SESSION ['session_id_valid']
  120. ) );
  121. if (! $gejala->num_rows ()) {
  122. $sql = "SELECT kd_penyakit from tmp_analisa where session_id = ? order by id desc limit 1";
  123. $gejala = $this->db->query ( $sql, array (
  124. $_SESSION ['session_id_valid']
  125. ) )->row ();
  126. unset ( $_SESSION ['start_konsultasi'] );
  127. if (is_object ( $gejala )) {
  128. $_SESSION ['hasil_konsultasi'] = $gejala->kd_penyakit;
  129. }
  130. else {
  131. $_SESSION ['hasil_konsultasi'] = "0";
  132. }
  133. // var_dump($gejala);
  134. redirect ( 'konsultasi/analisa' );
  135. }
  136. else {
  137. $gejala = $gejala->row ();
  138. $gejala = $gejala->kd_gejala;
  139. $sql = "SELECT * from gejala where id=?";
  140. $gejala = $this->db->query ( $sql, array (
  141. $gejala
  142. ) )->row ();
  143. }
  144.  
  145. /*
  146. * 3. Tanyakan
  147. * Jika benar, hapus penyakit yang tidak mengandung gejala
  148. * Jika salah, hapus penyakit yang mengandung gejala
  149. * Jangan lupa, hapus pertanyaan
  150. */
  151. $data = $this->load->view ( 'pertanyaan', array (
  152. 'gejala' => $gejala
  153. ), TRUE );
  154. $this->load->view ( 'template', array (
  155. 'data' => $data
  156. ) );
  157. }
  158. function act_pertanyaan() {
  159. if (! isset ( $_SESSION ['start_konsultasi'] ) || isset ( $_SESSION ['hasil_konsultasi'] )) {
  160. exit ( json_encode ( array (
  161. 'url' => "fail",
  162. 'baris' => __LINE__
  163. ) ) );
  164. }
  165.  
  166. /*
  167. * 3. Tanyakan
  168. * Jika benar, hapus penyakit yang tidak mengandung gejala
  169. * Jika salah, hapus penyakit yang mengandung gejala
  170. * Jangan lupa, hapus pertanyaan
  171. */
  172. $config = array (
  173. array (
  174. 'field' => 'kd_gejala',
  175. 'label' => 'Kode Gejala',
  176. 'rules' => 'required'
  177. ),
  178. array (
  179. 'field' => 'pilihan',
  180. 'label' => 'Pilihan',
  181. 'rules' => 'required'
  182. )
  183. );
  184.  
  185. $this->form_validation->set_rules ( $config );
  186. if ($this->form_validation->run ()) {
  187. $gejala = $this->input->post ( 'kd_gejala' );
  188. $pilihan = $this->input->post ( 'pilihan' );
  189. $sql = "SELECT kd_penyakit from tmp_relasi where kd_gejala = ? and session_id = ? group by kd_penyakit";
  190. $kd_penyakit_arr = $this->db->query ( $sql, array (
  191. $gejala,
  192. $_SESSION ['session_id_valid']
  193. ) )->result ();
  194. $kd_penyakit_arr_ = array ();
  195. foreach ( $kd_penyakit_arr as $value ) {
  196. $kd_penyakit_arr_ [] = ( int ) $value->kd_penyakit;
  197. }
  198. $kd_penyakit_arr = "(" . implode ( ", ", $kd_penyakit_arr_ ) . ")";
  199. if ($pilihan == 'ya') {
  200. $sql = "DELETE FROM tmp_relasi where session_id = ? AND (kd_penyakit NOT IN $kd_penyakit_arr OR kd_gejala = ?)";
  201. $status = "Y";
  202. }
  203. else {
  204. $sql = "DELETE FROM tmp_relasi where session_id = ? AND (kd_penyakit IN $kd_penyakit_arr OR kd_gejala = ?)";
  205. $status = "N";
  206. }
  207. $this->db->query ( $sql, array (
  208. $_SESSION ['session_id_valid'],
  209. $gejala
  210. ) );
  211.  
  212. /*
  213. * 4. Ambil Penyakit
  214. * Jika ada masukkan ke tabel analisa sementara
  215. * Jika tidak ada, selesai perulangan dan tidak ada penyakit di database
  216. */
  217. $sql = "SELECT kd_penyakit from tmp_relasi where session_id = ? GROUP BY kd_penyakit";
  218. $penyakit = $this->db->query ( $sql, array (
  219. $_SESSION ['session_id_valid']
  220. ) );
  221. if ($penyakit->num_rows ()) {
  222. $penyakit = $penyakit->result ();
  223. $penyakit_arr = array ();
  224. foreach ( $penyakit as $_penyakit ) {
  225. $penyakit_arr [] = ( int ) $_penyakit->kd_penyakit;
  226. }
  227. $sql = "INSERT INTO tmp_analisa (session_id, kd_penyakit, kd_gejala, status) values (?,?,?,?)";
  228. $this->db->query ( $sql, array (
  229. $_SESSION ['session_id_valid'],
  230. json_encode ( $penyakit_arr ),
  231. $gejala,
  232. $status
  233. ) );
  234. // Message if success
  235. // redirect('konsultasi/pertanyaan');
  236. echo json_encode ( array (
  237. 'url' => base_url () . "konsultasi/pertanyaan"
  238. ) );
  239. }
  240. else {
  241. unset ( $_SESSION ['start_konsultasi'] );
  242. if ($status == 'Y') {
  243. $sql = "SELECT kd_penyakit from tmp_analisa where session_id = ? order by id desc limit 1";
  244. $gejala = $this->db->query ( $sql, array (
  245. $_SESSION ['session_id_valid']
  246. ) )->row ();
  247. $_SESSION ['hasil_konsultasi'] = json_decode ( $gejala->kd_penyakit ) [0];
  248. }
  249. else {
  250. $_SESSION ['hasil_konsultasi'] = "0";
  251. }
  252.  
  253. // redirect('konsultasi/analisa');
  254. echo json_encode ( array (
  255. 'url' => base_url () . "konsultasi/analisa"
  256. ) );
  257. }
  258. }
  259. else {
  260. echo json_encode ( array (
  261. 'url' => "fail"
  262. ) );
  263. }
  264. }
  265. function analisa() {
  266. if (! isset ( $_SESSION ['session_id_valid'] ) || ! isset ( $_SESSION ['hasil_konsultasi'] )) {
  267. redirect ( 'home' );
  268. }
  269. $penyakit = $_SESSION ['hasil_konsultasi'];
  270. $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)";
  271. $this->db->query ( $sql, array (
  272. $penyakit,
  273. $_SESSION ['session_id_valid']
  274. ) );
  275. $sql = "SELECT id from analisa_hasil where session_id = ?";
  276. $id = $this->db->query ( $sql, array (
  277. $_SESSION ['session_id_valid']
  278. ) )->row ()->id;
  279. if (! $id) {
  280. redirect ( 'konsultasi/delete' );
  281. }
  282. $query = $this->db->query ( "CALL getDetailRekaman(?)", array (
  283. $id
  284. ) );
  285.  
  286. $data = $query->row ();
  287.  
  288. mysqli_next_result ( $this->db->conn_id );
  289. $query->free_result ();
  290.  
  291. if ($data->kd_penyakit) {
  292. $gejala = $this->db->query ( "SELECT `gejala`.* FROM `gejala` JOIN `relasi` ON `gejala`.`id` = `relasi`.`kd_gejala` AND `relasi`.`kd_penyakit` = '{$data->kd_penyakit}'" )->result ();
  293. $data = $this->load->view ( 'analisa', array (
  294. 'data' => $data,
  295. 'gejala' => $gejala
  296. ), TRUE );
  297. }
  298. else {
  299. $data = $this->load->view ( 'analisa_gagal', array (
  300. 'data' => $data
  301. ), TRUE );
  302. }
  303. $this->konsultasi_selesai ();
  304. $this->load->view ( 'template', array (
  305. 'data' => $data
  306. ) );
  307. }
  308. private function konsultasi_selesai() {
  309. if (isset ( $_SESSION ['session_id_valid'] )) {
  310. $sql = "delete from tmp_relasi where session_id = ?";
  311. $this->db->query ( $sql, array (
  312. $_SESSION ['session_id_valid']
  313. ) );
  314. $sql = "delete from tmp_pasien where session_id = ?";
  315. $this->db->query ( $sql, array (
  316. $_SESSION ['session_id_valid']
  317. ) );
  318. unset ( $_SESSION ['session_id_valid'] );
  319. }
  320. unset ( $_SESSION ['hasil_konsultasi'] );
  321. unset ( $_SESSION ['start_konsultasi'] );
  322. }
  323. function delete() {
  324. $this->konsultasi_selesai ();
  325.  
  326. redirect ( 'home' );
  327. }
  328. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement