Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- defined ( 'BASEPATH' ) or exit ( 'No direct script access allowed' );
- class Konsultasi extends CI_Controller {
- function __construct() {
- parent::__construct ();
- $this->load->helper ( 'url' );
- $this->load->library ( 'form_validation' );
- $this->load->model ( "m_helper" );
- }
- function index() {
- if ($this->isKonsultasiValid ()) {
- redirect ( "konsultasi/pertanyaan" );
- }
- $jenis_kucing = $this->m_helper->result ( "jenis_kucing" );
- $varietas_kucing = $this->m_helper->result ( "jenis_kucing" );
- $config = array (
- array (
- 'field' => 'nama_pemilik',
- 'label' => 'Nama Pemilik',
- 'rules' => 'required'
- ),
- array (
- 'field' => 'jenis_kucing',
- 'label' => 'Jenis Kucing',
- 'rules' => 'required'
- ),
- array (
- 'field' => 'varietas_kucing',
- 'label' => 'Varietas Kucing',
- 'rules' => 'required'
- ),
- array (
- 'field' => 'kelamin_kucing',
- 'label' => 'Kelamin Kucing',
- 'rules' => 'required'
- ),
- array (
- 'field' => 'usia',
- 'label' => 'Usia',
- 'rules' => 'required|integer'
- ),
- array (
- 'field' => 'lokasi_pemeliharaan',
- 'label' => 'Lokasi Pemeliharaan',
- 'rules' => 'required'
- )
- );
- $this->form_validation->set_rules ( $config );
- if ($this->form_validation->run () == FALSE) {
- $content_data = array (
- 'jenis_kucing' => $jenis_kucing,
- 'varietas_kucing' => $varietas_kucing,
- 'session_id_valid' => ''
- );
- $content_view = $this->load->view ( 'isi_dulu', $content_data, TRUE );
- $template_data = array (
- 'data' => $content_view
- );
- $this->load->view ( 'template', $template_data );
- }
- else {
- $konsultasi_session_id = md5 ( time () . time () );
- $post_data = $this->input->post ();
- $fill_data = array (
- "nama_pemilik" => $post_data ['nama_pemilik'],
- "kelamin_kucing" => $post_data ['kelamin_kucing'],
- "varietas_kucing" => $post_data ['varietas_kucing'],
- "jenis_kucing" => $post_data ['jenis_kucing'],
- "usia" => $post_data ['usia'],
- "lokasi" => $post_data ['lokasi_pemeliharaan'],
- "session_id" => $konsultasi_session_id,
- "tanggal" => date ( "Y-m-d H:i:s" )
- );
- $inserted = $this->m_helper->insert ( 'tmp_pasien', $fill_data );
- if ($inserted) {
- $this->session->unset_userdata ( "start_konsultasi" );
- $this->session->set_userdata ( "session_id_valid", $konsultasi_session_id );
- redirect ( 'konsultasi/pertanyaan' );
- }
- }
- }
- private function isKonsultasiValid() {
- return $this->session->userdata ( "start_konsultasi" );
- }
- function pertanyaan() {
- if (! isset ( $_SESSION ['session_id_valid'] )) {
- redirect ( 'konsultasi' );
- }
- // Susun algoritma disini
- /*
- * 1. Init & Cek Apakah sudah dimulai
- * Masukkan relasi ke tmp_relasi
- */
- if (! isset ( $_SESSION ['start_konsultasi'] )) {
- $_SESSION ['start_konsultasi'] = md5 ( rand () . time () );
- $sql = "INSERT INTO tmp_relasi SELECT *, ? as session_id from relasi";
- $this->db->query ( $sql, array (
- $_SESSION ['session_id_valid']
- ) );
- }
- /*
- * 2. Ambil gejala secara terurut dari yang paling banyak muncul
- * Jika tidak ada gejala selesai perulangan dan ambil penyakit terakhir sebagai hasil
- */
- $sql = "SELECT kd_gejala from tmp_relasi where session_id = ? group by kd_gejala order by count(kd_gejala) desc";
- $gejala = $this->db->query ( $sql, array (
- $_SESSION ['session_id_valid']
- ) );
- if (! $gejala->num_rows ()) {
- $sql = "SELECT kd_penyakit from tmp_analisa where session_id = ? order by id desc limit 1";
- $gejala = $this->db->query ( $sql, array (
- $_SESSION ['session_id_valid']
- ) )->row ();
- unset ( $_SESSION ['start_konsultasi'] );
- if (is_object ( $gejala )) {
- $_SESSION ['hasil_konsultasi'] = $gejala->kd_penyakit;
- }
- else {
- $_SESSION ['hasil_konsultasi'] = "0";
- }
- // var_dump($gejala);
- redirect ( 'konsultasi/analisa' );
- }
- else {
- $gejala = $gejala->row ();
- $gejala = $gejala->kd_gejala;
- $sql = "SELECT * from gejala where id=?";
- $gejala = $this->db->query ( $sql, array (
- $gejala
- ) )->row ();
- }
- /*
- * 3. Tanyakan
- * Jika benar, hapus penyakit yang tidak mengandung gejala
- * Jika salah, hapus penyakit yang mengandung gejala
- * Jangan lupa, hapus pertanyaan
- */
- $data = $this->load->view ( 'pertanyaan', array (
- 'gejala' => $gejala
- ), TRUE );
- $this->load->view ( 'template', array (
- 'data' => $data
- ) );
- }
- function act_pertanyaan() {
- if (! isset ( $_SESSION ['start_konsultasi'] ) || isset ( $_SESSION ['hasil_konsultasi'] )) {
- exit ( json_encode ( array (
- 'url' => "fail",
- 'baris' => __LINE__
- ) ) );
- }
- /*
- * 3. Tanyakan
- * Jika benar, hapus penyakit yang tidak mengandung gejala
- * Jika salah, hapus penyakit yang mengandung gejala
- * Jangan lupa, hapus pertanyaan
- */
- $config = array (
- array (
- 'field' => 'kd_gejala',
- 'label' => 'Kode Gejala',
- 'rules' => 'required'
- ),
- array (
- 'field' => 'pilihan',
- 'label' => 'Pilihan',
- 'rules' => 'required'
- )
- );
- $this->form_validation->set_rules ( $config );
- if ($this->form_validation->run ()) {
- $gejala = $this->input->post ( 'kd_gejala' );
- $pilihan = $this->input->post ( 'pilihan' );
- $sql = "SELECT kd_penyakit from tmp_relasi where kd_gejala = ? and session_id = ? group by kd_penyakit";
- $kd_penyakit_arr = $this->db->query ( $sql, array (
- $gejala,
- $_SESSION ['session_id_valid']
- ) )->result ();
- $kd_penyakit_arr_ = array ();
- foreach ( $kd_penyakit_arr as $value ) {
- $kd_penyakit_arr_ [] = ( int ) $value->kd_penyakit;
- }
- $kd_penyakit_arr = "(" . implode ( ", ", $kd_penyakit_arr_ ) . ")";
- if ($pilihan == 'ya') {
- $sql = "DELETE FROM tmp_relasi where session_id = ? AND (kd_penyakit NOT IN $kd_penyakit_arr OR kd_gejala = ?)";
- $status = "Y";
- }
- else {
- $sql = "DELETE FROM tmp_relasi where session_id = ? AND (kd_penyakit IN $kd_penyakit_arr OR kd_gejala = ?)";
- $status = "N";
- }
- $this->db->query ( $sql, array (
- $_SESSION ['session_id_valid'],
- $gejala
- ) );
- /*
- * 4. Ambil Penyakit
- * Jika ada masukkan ke tabel analisa sementara
- * Jika tidak ada, selesai perulangan dan tidak ada penyakit di database
- */
- $sql = "SELECT kd_penyakit from tmp_relasi where session_id = ? GROUP BY kd_penyakit";
- $penyakit = $this->db->query ( $sql, array (
- $_SESSION ['session_id_valid']
- ) );
- if ($penyakit->num_rows ()) {
- $penyakit = $penyakit->result ();
- $penyakit_arr = array ();
- foreach ( $penyakit as $_penyakit ) {
- $penyakit_arr [] = ( int ) $_penyakit->kd_penyakit;
- }
- $sql = "INSERT INTO tmp_analisa (session_id, kd_penyakit, kd_gejala, status) values (?,?,?,?)";
- $this->db->query ( $sql, array (
- $_SESSION ['session_id_valid'],
- json_encode ( $penyakit_arr ),
- $gejala,
- $status
- ) );
- // Message if success
- // redirect('konsultasi/pertanyaan');
- echo json_encode ( array (
- 'url' => base_url () . "konsultasi/pertanyaan"
- ) );
- }
- else {
- unset ( $_SESSION ['start_konsultasi'] );
- if ($status == 'Y') {
- $sql = "SELECT kd_penyakit from tmp_analisa where session_id = ? order by id desc limit 1";
- $gejala = $this->db->query ( $sql, array (
- $_SESSION ['session_id_valid']
- ) )->row ();
- $_SESSION ['hasil_konsultasi'] = json_decode ( $gejala->kd_penyakit ) [0];
- }
- else {
- $_SESSION ['hasil_konsultasi'] = "0";
- }
- // redirect('konsultasi/analisa');
- echo json_encode ( array (
- 'url' => base_url () . "konsultasi/analisa"
- ) );
- }
- }
- else {
- echo json_encode ( array (
- 'url' => "fail"
- ) );
- }
- }
- function analisa() {
- if (! isset ( $_SESSION ['session_id_valid'] ) || ! isset ( $_SESSION ['hasil_konsultasi'] )) {
- redirect ( 'home' );
- }
- $penyakit = $_SESSION ['hasil_konsultasi'];
- $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)";
- $this->db->query ( $sql, array (
- $penyakit,
- $_SESSION ['session_id_valid']
- ) );
- $sql = "SELECT id from analisa_hasil where session_id = ?";
- $id = $this->db->query ( $sql, array (
- $_SESSION ['session_id_valid']
- ) )->row ()->id;
- if (! $id) {
- redirect ( 'konsultasi/delete' );
- }
- $query = $this->db->query ( "CALL getDetailRekaman(?)", array (
- $id
- ) );
- $data = $query->row ();
- mysqli_next_result ( $this->db->conn_id );
- $query->free_result ();
- if ($data->kd_penyakit) {
- $gejala = $this->db->query ( "SELECT `gejala`.* FROM `gejala` JOIN `relasi` ON `gejala`.`id` = `relasi`.`kd_gejala` AND `relasi`.`kd_penyakit` = '{$data->kd_penyakit}'" )->result ();
- $data = $this->load->view ( 'analisa', array (
- 'data' => $data,
- 'gejala' => $gejala
- ), TRUE );
- }
- else {
- $data = $this->load->view ( 'analisa_gagal', array (
- 'data' => $data
- ), TRUE );
- }
- $this->konsultasi_selesai ();
- $this->load->view ( 'template', array (
- 'data' => $data
- ) );
- }
- private function konsultasi_selesai() {
- if (isset ( $_SESSION ['session_id_valid'] )) {
- $sql = "delete from tmp_relasi where session_id = ?";
- $this->db->query ( $sql, array (
- $_SESSION ['session_id_valid']
- ) );
- $sql = "delete from tmp_pasien where session_id = ?";
- $this->db->query ( $sql, array (
- $_SESSION ['session_id_valid']
- ) );
- unset ( $_SESSION ['session_id_valid'] );
- }
- unset ( $_SESSION ['hasil_konsultasi'] );
- unset ( $_SESSION ['start_konsultasi'] );
- }
- function delete() {
- $this->konsultasi_selesai ();
- redirect ( 'home' );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement