<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Doctor extends CI_Controller { /** * Index Page for this controller. * * Maps to the following URL * http://example.com/index.php/welcome * - or - * http://example.com/index.php/welcome/index * - or - * Since this controller is set as the default controller in * config/routes.php, it's displayed at http://example.com/ * * So any other public methods not prefixed with an underscore will * map to /index.php/welcome/<method_name> * @see https://codeigniter.com/user_guide/general/urls.html */ function __construct() { parent::__construct(); $this->load->model('Doctor_model'); $this->load->model('Home_model'); $this->load->model('Patient_model'); $this->load->model('Search_doctor_model'); global $default_date ; $this->default_date = '01/01/1970'; //print_r(date_default_timezone_get());die(); } /*CONTROLLER - DOCTOR DASHBOARD*/ public function index() { if($this->session->userdata('UserData')&&($this->session->userdata('UserData')['type']=="DOCTOR")) { $userdata = $this->session->userdata('UserData'); $template['page'] = "doctor_dash"; $template['page_title'] = "Dashboard"; $template['data'] = "Doctor page"; $doctor_data = $this->Doctor_model->get_single_doctor($userdata['id']); $clinic_list = $this->Doctor_model->get_doctor_clinic_list($userdata['id']); $day_appointment = $this->Doctor_model->get_doctor_appointments_day($userdata['id'],'null'); foreach ($day_appointment as $key => $value) { $times = explode('-', $value['booking_time']); $day_appointment[$key]['time_start'] = $times[0]; $day_appointment[$key]['time_end'] = $times[1]; } /*CODE FOR FETCHING APPOINTMENTS COUNT(DAY/WEEK/MONTH/YEAR)*/ $attendence = array(); //DAY ATTENDENCE $attendence = $this->Doctor_model->get_doctor_num_attendence_fordate($userdata['id'],date('y-m-d')); //WEEK ATTENDENCE $attendence_week = 0; for ($i=0; $i < 7; $i++) { $day = date('D',strtotime('+'.$i.'day')); $week_appointments[$i] = $this->Doctor_model->get_doctor_appointments_week($userdata['id'],date('y-m-d',strtotime('+'.$i.'day'))); foreach ($week_appointments[$i] as $key => $value) { if(!empty($value['count'])) { $attendence_week = $attendence_week + $value['count']; } } } $attendence['attendence_week'] = $attendence_week; //MONTH ATTENDENCE $attendence_month = 0; $month_appointment = $this->Doctor_model->get_doctor_appointments_month($userdata['id']); foreach ($month_appointment as $key => $value) { if(!empty($value['count'])) { $attendence_month = $attendence_month + $value['count']; } } $attendence['attendence_month'] = $attendence_month; //YEAR ATTENDENCE $attendence_year = $this->Doctor_model->get_doctor_appointments_year($userdata['id']); $attendence['attendence_year'] = $attendence_year['count']; //CODE FOR SUMMARY IN NUMBERS $no_of_attendance = $this->Doctor_model->get_doctor_num_attendance($userdata['id']); $no_of_billed = $this->Doctor_model->get_doctor_num_billed($userdata['id']); $no_of_patients = $this->Doctor_model->get_doctor_num_patients($userdata['id']); $no_of_profileview = $this->Doctor_model->get_doctor_num_profileview($userdata['id']); if(empty($no_of_billed['amount'])) { $no_of_billed['amount'] = 0; } $dash_view = array('no_of_attendance' => $no_of_attendance['count'],'no_of_billed'=>$no_of_billed['amount'],'no_of_patients' => $no_of_patients['count'],'no_of_profileview'=>$no_of_profileview['count']); //FETCHING NOTIFICATION FOR DASHBOARD VIEW $notifications = $this->Doctor_model->get_notifications($userdata['id'],1,10); $this->session->set_userdata('notifications',$notifications); //print_r($notifications);die(); $recent = $this->Home_model->get_recent_chat($userdata['id'],$userdata['type']); //$recent = json_decode($recent); //PASSING VALUES TO VIEW $template['recent'] = $recent; $template['doctor_data'] = $doctor_data; $template['clinic_list'] = $clinic_list; $template['day_appointment'] = $day_appointment; $template['dash_view'] = $dash_view; $template['attendence'] = $attendence; $template['attendence'] = $attendence; $template['notifications'] = $notifications; $this->load->view('template/template', $template); } elseif($this->session->userdata('UserData')&&($this->session->userdata('UserData')['type']=="COLLABORATOR")) { header('Location: '.base_url().'Doctor/collaborator'); } else { $this->session->set_flashdata('message', array('message' => load_language('session_invalid_error',true), 'title' => load_language('error',true), 'class' => 'danger')); header('Location: '.base_url()); } } /*GET DOCTOR APPOINMENTS FOR CURRENT MONTH - DOCTOR DASH*/ public function doctor_appointments_month() { $userdata = $this->session->userdata('UserData'); $month_appointment = $this->Doctor_model->get_doctor_appointments_month($userdata['id']); $template['month_appointment'] = $month_appointment; $this->load->view('doctor_dash_appointments_month',$template); } /*GET DOCTOR APPOINMENTS FOR CURRENT WEEK - DOCTOR DASH*/ public function doctor_appointments_week() { //$day_appointments = array(); $userdata = $this->session->userdata('UserData'); for ($i=0; $i < 7; $i++) { $day = date('D',strtotime('+'.$i.'day')); $dayno = date('d',strtotime('+'.$i.'day')); $week_appointments[$i] = $this->Doctor_model->get_doctor_appointments_week($userdata['id'],date('y-m-d',strtotime('+'.$i.'day'))); } $template['week_appointments'] = $week_appointments; //print_r($week_appointments);die(); $this->load->view('doctor_dash_appointments_week',$template); } /*FUNCTION FOR CANCELING BOOKING - DOCTOR DASHBOARD*/ /*DESC : CHANGE BOOKING STATUS TO CANCEL FROM CONFIRMED AND NOTIFIY THE USER WITH CANCELATION.ALSO NOTIFY ANY USER IN WAITING LIST */ public function cancelBooking() { $nowin_server = date("Y-m-d TH:i:s"); $userdata = $this->session->userdata('UserData'); $result = $this->Patient_model->cancel_Booking($_POST['booking_id']); $doctor_data = $this->Doctor_model->get_single_doctor($userdata['id']); /*CODE FOR WALLET INSERTION*/ /*---------------------------------------------------*/ $booking_details = $this->Doctor_model->get_booking_details($_POST['booking_id']); if($booking_details['visit_type']==0) { //print_r($booking_details);die(); //$ipok_settings = $this->Home_model->get_ipok_settings(); $wallet = $this->Doctor_model->get_wallet_for_doctor($userdata['id']); $earn = $booking_details['book_price'] - (($booking_details['book_price'] * $booking_details['ipok_fee'])/100); $wallet['future_earn'] = $wallet['future_earn'] - $earn; $wallet['total_earn'] = $wallet['total_earn'] - $earn; $this->Doctor_model->update_wallet($userdata['id'],$wallet); } /*---------------------------------------------------*/ /*CODE FOR SENTING NOTIFICATION - PATIENT NOTIFICATION*/ /*------------------------------------------------*/ $text_pat = 'Your appointment scheduled in the system, on '.date('d.m.Y',$booking_details['time_start']).' at '.date('H:i a',$booking_details['time_start']).', doctor '.$userdata['name'] .' is Canceled!'; $notification_pat = array('patient_id' => $booking_details['pat_id'],'type'=>3,'message'=>$text_pat,'read_status'=>0,'time'=>strtotime($nowin_server),'booking_id' => $_POST['booking_id']); $patient_insert_id = $this->Home_model->insert_notification_patient($notification_pat); $fcm_user = $this->Home_model->get_patient_fcm($booking_details['pat_id']); //print_r($fcm_user); if(!empty($fcm_user['fcm_token'])) { //print_r($fcm_user['fcm_token']);die(); $pat_push_obj['id'] = $patient_insert_id; $pat_push_obj['type'] = "Consultation Canceled!"; $pat_push_obj['booking_id'] = $_POST['booking_id']; $pat_push_obj['booking_date'] = $booking_details['book_date']; $pat_push_obj['doctor_id'] = $booking_details['doc_id']; $pat_push_obj['doctor_name'] = $userdata['name']; $pat_push_obj['doctor_specialization'] = $doctor_data['dr_specialization']; $pat_push_obj['message'] = $text_pat; $pat_push_obj['time'] = strtotime($nowin_server); $pat_push_obj['to'] = $fcm_user['fcm_token']; $user_type = '1'; //patient push $push_status = push_sent($pat_push_obj,$user_type); } /*------------------------------------------------*/ //die(); /* $check_waiting_list = $this->Patient_model->check_waiting_list($result); //print_r($check_waiting_list);die(); if($check_waiting_list['count']>0) { $this->Patient_model->change_waitinglist_to_confirmed($check_waiting_list['booking_id']); } */ $day_appointment = $this->Doctor_model->get_doctor_appointments_day($userdata['id'],$_POST['selectedDate']); foreach ($day_appointment as $key => $value) { $times = explode('-', $value['booking_time']); $day_appointment[$key]['time_start'] = $times[0]; $day_appointment[$key]['time_end'] = $times[1]; } $template['day_appointment'] = $day_appointment; $this->load->view('doctor_dash_appointments_day',$template); } /*FUNCTION FOR RETURNING DOCTOR SCHEDULES FOR PARTICULAR CLINIC - DOCTOR DASH*/ public function getScheduleforClinic() { if($this->session->userdata('UserData')) { $userdata = $this->session->userdata('UserData'); if($userdata['type']=="DOCTOR") { $result = $this->Doctor_model->Schedulelist($_POST['clinic_id'],$userdata['id']); //print_r($result);die(); if(!empty($result)) { $res = array('status' => 'success', 'pri_schedule'=>$result['pri_schedule'],'sec_schedule'=>$result['sec_schedule'],'active_schedule'=>$result['active_schedule']); } else { $res = array('status' => 'fail', 'pri_schedule'=>$result['pri_schedule'],'sec_schedule'=>$result['sec_schedule'],'active_schedule'=>$result['active_schedule']); } print json_encode($res); } } } /*FUNCTION FOR ADDING DOCTOR SCHEDULE TO CONSULTATION TABLE - DOCTOR DASH*/ public function addSchedule() { if($this->session->userdata('UserData')) { $userdata = $this->session->userdata('UserData'); if($userdata['type']=="DOCTOR") { // print_r($this->default_date); //print_r($_POST);//die(); $insert_array = array(); $insert_array_sec = array(); $not_available_day = array(); $flag = 0; $request = $_POST; $flag_day_equal = 0; //print_r($request);echo"<br><br>"; $consult_duration = $this->Doctor_model->check_consult_duration($userdata['id']); //print_r($consult_duration['consultation_duration']);exit(); $result = $this->Doctor_model->checkDoctorExist($this->session->userdata('UserData')['id']); //print_r($result);die(); if(!empty($request)) { if($request['active_schedule_type']=='0') { $schedule_day = $request['dct_sch_day']; } else { $schedule_day = $request['sec_dct_sch_day']; } if(!empty($result)){ foreach ($schedule_day as $req_day_key => $req_day_value) { foreach ($result as $db_key => $db_value) { if($db_value['active_schedule']=='0') { $decode_date = json_decode($db_value['date'],true); } else { $decode_date = json_decode($db_value['date_secondary'],true); } if(!empty($decode_date)) { foreach ($decode_date as $time_key => $time_value) { if($req_day_value == $time_value['day'] && $db_value['clinic_id'] != $request['dct_sch_clinic']) { if($request['active_schedule_type']=='0') { $startTime = 'dct_sch_'.$req_day_value.'_start'; $endTime = 'dct_sch_'.$req_day_value.'_end'; } else { $startTime = 'sec_dct_sch_'.$req_day_value.'_start'; $endTime = 'sec_dct_sch_'.$req_day_value.'_end'; } if((strtotime($this->default_date.$time_value['time']['start']) <= strtotime($this->default_date.$request[$startTime ]) && strtotime($this->default_date.$request[$startTime ]) <= strtotime($this->default_date.$time_value['time']['end'])) || (strtotime($this->default_date.$time_value['time']['start']) <= strtotime($this->default_date.$request[$endTime]) && strtotime($this->default_date.$request[$endTime ]) <= strtotime($this->default_date.$time_value['time']['end'])) || (strtotime($this->default_date.$request[$startTime ]) <= strtotime($this->default_date.$time_value['time']['start']) && strtotime($this->default_date.$time_value['time']['start']) <= strtotime($this->default_date.$request[$endTime])) || (strtotime($this->default_date.$request[$startTime ]) <= strtotime($this->default_date.$time_value['time']['end']) && strtotime($this->default_date.$time_value['time']['end']) <= strtotime($this->default_date.$request[$endTime]))) { $flag_day_equal = 1; } } } } } } if($flag_day_equal == 0) { $res = $this->set_doctor_schedule_data($request,$consult_duration); } else { $res = array('status' => 'fail','msg' => load_language('schedule_add_failed',true) ); } }else{ $this->Doctor_model->assignDoctors_default($this->session->userdata('UserData')['id'],$request['dct_sch_clinic']); $res = $this->set_doctor_schedule_data($request,$consult_duration); } } else { $res = array('status' => 'fail','msg' => load_language('schedule_add_mismatch',true)); } print json_encode($res); } } } function set_doctor_schedule_data($request,$consult_duration){ $insert_array = array(); $insert_array_sec = array(); //FOREACH FOR ADD PRIMARY SCHEDULE TO INSERT ARRAY foreach ($request['dct_sch_day'] as $key_elseDay => $value_elseDay) { $start = 'dct_sch_'.$value_elseDay.'_start'; $end = 'dct_sch_'.$value_elseDay.'_end'; $intr_start = 'dct_intr_'.$value_elseDay.'_start'; $intr_end = 'dct_intr_'.$value_elseDay.'_end'; if((isset($request[$intr_start]) and !empty($request[$intr_start])) || (isset($request[$intr_end]) and !empty($request[$intr_end]))) { $res = array('day'=>$value_elseDay, 'time'=>array('start'=>$request[$start], 'end'=>$request[$end], 'interval'=>$consult_duration['consultation_duration'], 'break_from'=>$request[$intr_start], 'break_to'=>$request[$intr_end])); array_push($insert_array, $res); } else { $res = array('day'=>$value_elseDay, 'time'=>array('start'=>$request[$start], 'end'=>$request[$end], 'interval'=>$consult_duration['consultation_duration'], 'break_from'=>'null', 'break_to'=>'null')); array_push($insert_array, $res); } } //FOREACH FOR ADD SECONDARY SCHEDULE TO INSERT ARRAY foreach ($request['sec_dct_sch_day'] as $key_elseDay => $value_elseDay) { $start_sec = 'sec_dct_sch_'.$value_elseDay.'_start'; $end_sec = 'sec_dct_sch_'.$value_elseDay.'_end'; $intr_start_sec = 'sec_dct_intr_'.$value_elseDay.'_start'; $intr_end_sec = 'sec_dct_intr_'.$value_elseDay.'_end'; if((isset($request[$intr_start_sec]) and !empty($request[$intr_start_sec])) || (isset($request[$intr_end_sec]) and !empty($request[$intr_end_sec]))) { $res_sec = array('day'=>$value_elseDay, 'time'=>array('start'=>$request[$start_sec], 'end'=>$request[$end_sec], 'interval'=>$consult_duration['consultation_duration'], 'break_from'=>$request[$intr_start_sec], 'break_to'=>$request[$intr_end_sec])); array_push($insert_array_sec, $res_sec); } else { $res_sec = array('day'=>$value_elseDay, 'time'=>array('start'=>$request[$start_sec], 'end'=>$request[$end_sec], 'interval'=>$consult_duration['consultation_duration'], 'break_from'=>'null', 'break_to'=>'null')); array_push($insert_array_sec, $res_sec); } } //print_r($insert_array); //print_r($insert_array_sec);die(); //ADDING SCHEDULE TO DB $this->Doctor_model->set_new_consultation($insert_array,$insert_array_sec,$request['active_schedule_type'],$request['dct_sch_clinic'],$this->session->userdata('UserData')['id']); $res = array('status' => 'success','msg' => load_language('schedule_add_success',true) ); return $res; } /*FUNCTION FOR CHECKING IF CONSULTATION DURATION IS SET WHILE ENTERING DOCTOR SCHEDULE - DOCTOR DASH*/ public function check_consultduration() { $userdata = $this->session->userdata('UserData'); $check_duration = $this->Doctor_model->check_consult_duration($userdata['id']); $arrayName = array('message' => 'success','data' =>$check_duration['consultation_duration'] ); print json_encode($arrayName); } /*FUNCTION FOR ADDING LEAVE FOR DOCTOR - DOCTOR DASH*/ public function addVacation() { if($this->session->userdata('UserData')) { $userdata = $this->session->userdata('UserData'); if($userdata['type']=="DOCTOR") { $request = array('doctor_id' => $userdata['id'],'clinic_id' => $_POST['doc-leave-clinic'],'start_date' => strtotime($_POST['dctr-leave-start']),'end_date' => strtotime($_POST['dctr-leave-end'])); //print_r($request); $result = $this->Doctor_model->insertVacation($request); if($result) { $res = array('status' => 'success'); } else { $res = array('status' => 'fail' ); } print json_encode($res); } } } /*FUNCTION FOR FETCHING APPOINMENTS FOR GIVEN DAY - DOCTOR DASH*/ public function get_myappointments_day() { //print_r($_POST['appointment_day']); $userdata = $this->session->userdata('UserData'); $day_appointment = $this->Doctor_model->get_doctor_appointments_day($userdata['id'],$_POST['appointment_day']); foreach ($day_appointment as $key => $value) { $times = explode('-', $value['booking_time']); $day_appointment[$key]['time_start'] = $times[0]; $day_appointment[$key]['time_end'] = $times[1]; } //print_r($day_appointment); $template['day_appointment'] = $day_appointment; $this->load->view('doctor_dash_appointments_day',$template); } /*MEDICAL RECORDS PAGE*/ public function records() { if($this->session->userdata('UserData')&&($this->session->userdata('UserData')['type']=="DOCTOR")) { $userdata = $this->session->userdata('UserData'); $template['page'] = "doctor_medical_records"; $template['page_title'] = "Records"; $userdata = $this->session->userdata('UserData'); $doctor_data = $this->Doctor_model->get_single_doctor($userdata['id']); $patient_attended = $this->Doctor_model->get_single_doc_pat_attended($userdata['id'],''); $patient_attended_total = $this->Doctor_model->get_single_doc_pat_attended_count($userdata['id']); $patient_scheduled = $this->Doctor_model->get_single_doc_pat_scheduled($userdata['id'],''); $patient_scheduled_total = $this->Doctor_model->get_single_doc_pat_scheduled_count($userdata['id']); //print_r($patient_scheduled);die(); /*CODE FOR SHOWING SUMMARY NUMBERS*/ //CODE FOR SUMMARY IN NUMBERS $no_of_attendance = $this->Doctor_model->get_doctor_num_attendance($userdata['id']); $no_of_billed = $this->Doctor_model->get_doctor_num_billed($userdata['id']); $no_of_patients = $this->Doctor_model->get_doctor_num_patients($userdata['id']); $no_of_profileview = $this->Doctor_model->get_doctor_num_profileview($userdata['id']); if(empty($no_of_billed['amount'])) { $no_of_billed['amount'] = 0; } $dash_view = array('no_of_attendance' => $no_of_attendance['count'],'no_of_billed'=>$no_of_billed['amount'],'no_of_patients' => $no_of_patients['count'],'no_of_profileview'=>$no_of_profileview['count']); $template['patient_attended'] = $patient_attended; $template['patient_attended_total'] = $patient_attended_total; $template['patient_attended_page'] = '1'; $template['patient_scheduled'] = $patient_scheduled; $template['patient_scheduled_total'] = $patient_scheduled_total; $template['patient_scheduled_page'] = '1'; $template['dash_view'] = $dash_view; $this->load->view('template/template', $template); } else { $this->session->set_flashdata('message', array('message' => load_language('session_invalid_error',true), 'title' => load_language('error',true), 'class' => 'danger')); header('Location: '.base_url()); } } /*GET SCHEDULED MEDICAL RECORDS FOR NEXT PAGE - MEDICAL RECORDS*/ public function med_rec_scheduled_next() { $userdata = $this->session->userdata('UserData'); $patient_scheduled_total = $this->Doctor_model->get_single_doc_pat_scheduled_count($userdata['id']); $next_page = $_POST['currentpage']+1; $patient_scheduled = $this->Doctor_model->get_single_doc_pat_scheduled($userdata['id'],$next_page); $template['patient_scheduled'] = $patient_scheduled; $template['patient_scheduled_total'] = $patient_scheduled_total; $template['patient_scheduled_page'] = $next_page; $this->load->view('doctor_medical_records_scheduled', $template); } /*GET SCHEDULED MEDICAL RECORDS FOR PREV PAGE - MEDICAL RECORDS*/ public function med_rec_scheduled_prev() { $userdata = $this->session->userdata('UserData'); $prev_page = $_POST['currentpage']-1; $patient_scheduled = $this->Doctor_model->get_single_doc_pat_scheduled($userdata['id'],$prev_page); $patient_scheduled_total = $this->Doctor_model->get_single_doc_pat_scheduled_count($userdata['id']); $template['patient_scheduled'] = $patient_scheduled; $template['patient_scheduled_total'] = $patient_scheduled_total; $template['patient_scheduled_page'] = $prev_page; $this->load->view('doctor_medical_records_scheduled', $template); } /*GET ATTENDED MEDICAL RECORDS FOR NEXT PAGE - MEDICAL RECORDS*/ public function med_rec_attended_next() { $userdata = $this->session->userdata('UserData'); $patient_attended_total = $this->Doctor_model->get_single_doc_pat_attended_count($userdata['id']); $next_page = $_POST['currentpage']+1; $patient_attended = $this->Doctor_model->get_single_doc_pat_attended($userdata['id'],$next_page); $template['patient_attended'] = $patient_attended; $template['patient_attended_total'] = $patient_attended_total; $template['patient_attended_page'] = $next_page; $this->load->view('doctor_medical_records_attended', $template); } /*GET ATTENDED MEDICAL RECORDS FOR PREV PAGE - MEDICAL RECORDS*/ public function med_rec_attended_prev() { $userdata = $this->session->userdata('UserData'); $prev_page = $_POST['currentpage']-1; $patient_attended = $this->Doctor_model->get_single_doc_pat_attended($userdata['id'],$prev_page); $patient_attended_total = $this->Doctor_model->get_single_doc_pat_attended_count($userdata['id']); $template['patient_attended'] = $patient_attended; $template['patient_attended_total'] = $patient_attended_total; $template['patient_attended_page'] = $prev_page; $this->load->view('doctor_medical_records_attended', $template); } /*SEARCH FUNCTION IN SCHEDULED MEDICAL RECORDS - MEDICAL RECORDS*/ public function med_rec_scheduled_search() { //print_r($_POST); $userdata = $this->session->userdata('UserData'); $patient_scheduled = $this->Doctor_model->get_single_doc_pat_scheduled_search($userdata['id'],$_POST['text']); //print_r(sizeof($patient_scheduled)); $template['patient_scheduled'] = $patient_scheduled; $template['patient_scheduled_total'] = array('count'=>sizeof($patient_scheduled)); $template['patient_scheduled_page'] = '1'; $template['search_data'] = $_POST['text']; $this->load->view('doctor_medical_records_scheduled', $template); } /*SEARCH FUNCTION IN ATTENDED MEDICAL RECORDS - MEDICAL RECORDS*/ public function med_rec_attended_search() { //print_r($_POST); $userdata = $this->session->userdata('UserData'); $patient_attended = $this->Doctor_model->get_single_doc_pat_attended_search($userdata['id'],$_POST['text']); //print_r(sizeof($patient_scheduled)); $template['patient_attended'] = $patient_attended; $template['patient_attended_total'] = array('count'=>sizeof($patient_attended)); $template['patient_attended_page'] = '1'; $template['search_data_att'] = $_POST['text']; $this->load->view('doctor_medical_records_attended', $template); } /*FUNCTION FOR MEDICAL RECORDS VIEW - MEDICAL RECORDS*/ public function recordsview() { if($this->session->userdata('UserData')&&($this->session->userdata('UserData')['type']=="DOCTOR")) { $patient_id = $this->uri->segment(3); //print_r($patient_id);die(); $userdata = $this->session->userdata('UserData'); $patient_data = $this->Patient_model->get_single_patient($patient_id); //CODE FOR SUMMARY IN NUMBERS $no_of_attendance = $this->Doctor_model->get_doctor_num_attendance($userdata['id']); $no_of_billed = $this->Doctor_model->get_doctor_num_billed($userdata['id']); $no_of_patients = $this->Doctor_model->get_doctor_num_patients($userdata['id']); $no_of_profileview = $this->Doctor_model->get_doctor_num_profileview($userdata['id']); if(empty($no_of_billed['amount'])) { $no_of_billed['amount'] = 0; } $dash_view = array('no_of_attendance' => $no_of_attendance['count'],'no_of_billed'=>$no_of_billed['amount'],'no_of_patients' => $no_of_patients['count'],'no_of_profileview'=>$no_of_profileview['count']); $consultation_list = $this->Doctor_model->get_single_doc_pat_consultation_list($userdata['id'],$patient_id); if(!empty($consultation_list)) { $booking_details = $this->Doctor_model->get_booking_details($consultation_list['0']['book_id']); $record_data = $this->Doctor_model->get_medical_record_for_booking($consultation_list['0']['book_id']); /*if(empty($record_data)) redirect(base_url());*/ $doctor_data = $this->Doctor_model->get_single_doctor($userdata['id']); $patient_data = $this->Patient_model->get_single_patient($patient_id); if(!empty($record_data)) { $record_data['diseases'] = json_decode($record_data['diseases']); $record_data['prescribtions'] = json_decode($record_data['prescribtions']); $record_data['exams'] = json_decode($record_data['exams']); $record_data['budget'] = json_decode($record_data['budget']); $record_data['letters'] = json_decode($record_data['letters']); } } //print_r($record_data);die(); $template['dash_view'] = $dash_view; $template['patient_data'] = $patient_data; $template['doctor_data'] = $doctor_data; $template['booking_details'] = $booking_details; $template['record_data'] = $record_data; $template['consultation_list'] = $consultation_list; $template['page'] = "doctor_medical_records_detail"; $template['page_title'] = "Records"; $this->load->view('template/template', $template); } else { $this->session->set_flashdata('message', array('message' => load_language('session_invalid_error',true), 'title' => load_language('error',true), 'class' => 'danger')); header('Location: '.base_url()); } } /*AJAX FUNCTION FOR LOADING MEDICAL RECORD FOR GIVEN BOOKING ID*/ public function loadrecord() { $booking_id = $this->uri->segment(3); $booking_details = $this->Doctor_model->get_booking_details($booking_id); $record_data = $this->Doctor_model->get_medical_record_for_booking($booking_id); //print_r($record_data);die(); $doctor_data = $this->Doctor_model->get_single_doctor($booking_details['doc_id']); $patient_data = $this->Patient_model->get_single_patient($booking_details['pat_id']); if(!empty($record_data)) { $record_data['diseases'] = json_decode($record_data['diseases']); $record_data['prescribtions'] = json_decode($record_data['prescribtions']); $record_data['exams'] = json_decode($record_data['exams']); $record_data['budget'] = json_decode($record_data['budget']); $record_data['letters'] = json_decode($record_data['letters']); } $template['booking_details'] = $booking_details; $template['record_data'] = $record_data; $template['doctor_data'] = $doctor_data; $template['patient_data'] = $patient_data; $this->load->view('doctor_medical_records_recordview', $template); } /*FUNCTION FOR EDIT MEDICAL RECORDS - MEDICAL RECORDS*/ public function recordsedit() { if($this->session->userdata('UserData')&&($this->session->userdata('UserData')['type']=="DOCTOR")) { $userdata = $this->session->userdata('UserData'); $template['page'] = "doctor_medical_records_edit"; $template['page_title'] = "Records"; $this->load->view('template/template', $template); } else { $this->session->set_flashdata('message', array('message' => load_language('session_invalid_error',true), 'title' => load_language('error',true), 'class' => 'danger')); header('Location: '.base_url()); } } /*CONTROLLER - SERVICE/CONSULTATION */ public function service() { if($this->session->userdata('UserData')&&($this->session->userdata('UserData')['type']=="DOCTOR")&&(!empty($this->uri->segment(3)))) { $booking_id = $this->uri->segment(3); $current_booking_status = $this->Doctor_model->get_current_booking_status($booking_id); if($current_booking_status['booking_status']==1) { $this->Doctor_model->change_booking_status($booking_id,2); $check_record = $this->Doctor_model->check_medical_record($booking_id); if($check_record['count']>0) { $template['record_id'] = $check_record['record_id']; } else { $record_id = $this->Doctor_model->insert_medical_record($booking_id); $array = array('medical_record_id' =>$record_id); $this->Doctor_model->update_booking($booking_id,$array); $template['record_id'] = $record_id; } $booking_details = $this->Doctor_model->get_booking_details($booking_id); $main_complaints = $this->Doctor_model->get_main_complaints(); $major_problems = $this->Doctor_model->get_major_problems(); foreach ($major_problems as $key => $value) { $val = $this->Doctor_model->get_major_subproblems($value['id']); $major_problems[$key]['sub_problem'] = $val; } //echo "<pre>"; //print_r($major_problems);die(); $medicines = $this->Doctor_model->get_distinct_medicines(); //for use of medicines $exams = $this->Doctor_model->get_distinct_exams(); //for use of medicines $procedure = $this->Doctor_model->get_distinct_procedure(); //for use of medicines $cidnumbers = $this->Doctor_model->get_distinct_cid(); //for use of medicines $certificate_letter = $this->Doctor_model->get_certificate_letters(); //for use of medicines //$medicine_list = $this->Doctor_model->get_all_medicines(); $userdata = $this->session->userdata('UserData'); $template['booking_details'] = $booking_details; $template['page'] = "doctor_dash_start_service"; $template['page_title'] = "Service"; $template['main_complaints'] = $main_complaints; $template['major_problems'] = $major_problems; $template['medicines'] = $medicines; $template['exams'] = $exams; $template['procedure'] = $procedure; $template['cidnumbers'] = $cidnumbers; $template['certificate_letter'] = $certificate_letter; //print_r($medicines);die(); $this->load->view('template/template', $template); } else { header('Location: '.base_url().'Doctor'); } } else { $this->session->set_flashdata('message', array('message' => load_language('session_invalid_error',true), 'title' => load_language('error',true), 'class' => 'danger')); header('Location: '.base_url().'Home/error/url'); } } /*Desc : FUNCTION FOR ADDING MEDICAL RECORD DATA INTO DATABASE - START SERVICE*/ public function endservice() { $booking_id = $this->uri->segment(3); $this->Doctor_model->change_booking_status($booking_id,3); /*CODE FOR WALLET INSERTION*/ /*------------------------------------------------*/ $ipok_settings = $this->Home_model->get_ipok_settings(); $booking_details = $this->Doctor_model->get_booking_details($booking_id); $wallet = $this->Doctor_model->get_wallet_for_doctor($booking_details['doc_id']); if(empty($wallet)) { $wallet = array('reedem_earn' => 0,'future_earn' => 0 ,'total_earn' => 0 ); } $earn = $booking_details['book_price'] - (($booking_details['book_price'] * $ipok_settings['ipok_fee'])/100); $wallet['reedem_earn'] = $wallet['reedem_earn'] + $earn; $wallet['future_earn'] = $wallet['future_earn'] - $earn; $this->Doctor_model->update_wallet($booking_details['doc_id'],$wallet); /*------------------------------------------------*/ redirect(base_url().'Doctor/recordsummary/'.$booking_id); } /*Desc : FUNCTION FOR ADDING MEDICAL RECORD DATA INTO DATABASE - START SERVICE*/ public function recordsummary() { if($this->session->userdata('UserData')&&($this->session->userdata('UserData')['type']=="DOCTOR")&&(!empty($this->uri->segment(3)))) { $booking_id = $this->uri->segment(3); $booking_details = $this->Doctor_model->get_booking_details($booking_id); $record_data = $this->Doctor_model->get_medical_record_for_booking($booking_id); if(empty($record_data)) redirect(base_url()); $doctor_data = $this->Doctor_model->get_single_doctor($booking_details['doc_id']); $patient_data = $this->Patient_model->get_single_patient($booking_details['pat_id']); $record_data['diseases'] = json_decode($record_data['diseases']); $record_data['prescribtions'] = json_decode($record_data['prescribtions']); $record_data['exams'] = json_decode($record_data['exams']); $record_data['budget'] = json_decode($record_data['budget']); $record_data['letters'] = json_decode($record_data['letters']); //print_r($record_data);die(); $template['page'] = "doctor_dash_start_service_summary"; $template['page_title'] = "Service"; $template['record_data'] = $record_data; $template['booking_details'] = $booking_details; $template['doctor_data'] = $doctor_data; $template['patient_data'] = $patient_data; $this->load->view('template/template', $template); } else { $this->session->set_flashdata('message', array('message' => load_language('session_invalid_error',true), 'title' => load_language('error',true), 'class' => 'danger')); header('Location: '.base_url()); } } /*Desc : FUNCTION FOR ADDING MEDICAL RECORD DATA INTO DATABASE - START SERVICE*/ public function save_medicalrecord_data() { //print_r($_POST); //print_r($_FILES); $insert_array = array(); $res = array(); if(!empty($_POST) and $_POST['section']=='anamnesis') { if(isset($_POST['Kidney_Problem'])&&!empty($_POST['Kidney_Problem'])) { $anamnese['Kidney_Problem'] = $_POST['Kidney_Problem']; } if(isset($_POST['Heart_Problem'])&&!empty($_POST['Heart_Problem'])) { $anamnese['Heart_Problem'] = $_POST['Heart_Problem']; } if(isset($_POST['Joint_Problem'])&&!empty($_POST['Joint_Problem'])) { $anamnese['Joint_Problem'] = $_POST['Joint_Problem']; } if(isset($_POST['Breathing_Problem'])&&!empty($_POST['Breathing_Problem'])) { $anamnese['Breathing_Problem'] = $_POST['Breathing_Problem']; } if(isset($_POST['Gastric_Problem'])&&!empty($_POST['Gastric_Problem'])) { $anamnese['Gastric_Problem'] = $_POST['Gastric_Problem']; } if(isset($_POST['Allergies'])&&!empty($_POST['Allergies'])) { $anamnese['Allergies'] = $_POST['Allergies']; } if(isset($_POST['Medications'])&&!empty($_POST['Medications'])) { $anamnese['Medications'] = $_POST['Medications']; } if(isset($_POST['others'])&&!empty($_POST['others'])) { $anamnese['others'] = $_POST['others']; } if(!empty($anamnese)&&isset($anamnese)) { $disease['anamnese'] = $anamnese; $myJSON = json_encode($disease); $insert_array['diseases'] = $myJSON; } if(!empty($_POST['description']) and (isset($_POST['description']))) { $insert_array['description'] = $_POST['description']; } $insert_array['main_complaint'] = $_POST['main_complaint']; $update = $this->Doctor_model->update_records($_POST['booking_id'],$insert_array); if($update) { $res= array('status' => 'success','msg'=> load_language('anamnese_updated_message',true) ); } else { $res= array('status' => 'error','msg'=> load_language('updation_failed',true) ); } } elseif(!empty($_POST) and $_POST['section']=='medicine' and !empty($_POST['medicine_list'])) { //print_r($_POST['medicine_list']);die(); foreach ($_POST['medicine_list'] as $key => $elem) { $medicine[$key] = json_decode($elem); //decoding json medicine } $myJSON = json_encode($medicine); //json encoding for db entry $insert_array['prescribtions'] = $myJSON; $update = $this->Doctor_model->update_records($_POST['booking_id'],$insert_array); if($update) { $res= array('status' => 'success','msg'=> load_language('medicine_updated_message',true)); } else { $res= array('status' => 'error','msg'=> load_language('updation_failed',true) ); } } elseif(!empty($_POST) and $_POST['section']=='exams') { //print_r($_POST);die(); $exam = array(); $exam['procedure'] = $_POST['exam_procedure']; $exam['observation'] = $_POST['observation']; $new =array(); $new[] = $exam; //print_r(json_encode($new));exit(); $myJSON = json_encode($new); //json encoding for db entry $insert_array['exams'] = $myJSON; $update = $this->Doctor_model->update_records($_POST['booking_id'],$insert_array); if($update) { $res= array('status' => 'success','msg'=> load_language('exams_updated_message',true) ); } else { $res= array('status' => 'error','msg'=> load_language('updation_failed',true) ); } } elseif(!empty($_POST) and $_POST['section']=='budget' and !empty($_POST['budget'])) { //print_r($_POST);die(); foreach ($_POST['budget'] as $key => $elem) { $budget[$key] = json_decode($elem); //decoding json medicine } $myJSON = json_encode($budget); //json encoding for db entry $insert_array['budget'] = $myJSON; $update = $this->Doctor_model->update_records($_POST['booking_id'],$insert_array); if($update) { $res= array('status' => 'success','msg'=> load_language('procedure_updated_message',true)); } else { $res= array('status' => 'error','msg'=> load_language('updation_failed',true) ); } } elseif(!empty($_POST) and $_POST['section']=='certificate' and !empty($_POST['certificate'])) { $postdata = $_POST; unset($postdata['booking_id']); unset($postdata['section']); if($_POST['is_letter_with_cid']=='true') { $postdata['is_letter_with_cid'] = true; } else { $postdata['is_letter_with_cid'] = false; } //$postdata['is_letter_with_cid'] = (boolean)$postdata['is_letter_with_cid']; $letter_json = json_encode($postdata); //print_r($letter_json);die(); $insert_array['letters'] = $letter_json; $update = $this->Doctor_model->update_records($_POST['booking_id'],$insert_array); if($update) { $res= array('status' => 'success','msg'=> load_language('certificate_updated_message',true)); } else { $res= array('status' => 'error','msg'=> load_language('updation_failed',true) ); } } elseif(!empty($_POST) and $_POST['section']=='review' and !empty($_POST['review'])) { //print_r($_POST);die(); $offset = json_decode($_POST['offset']); $nowin_server = date("Y-m-d TH:i:s"); if($offset->sign=='+') { $nowin_server_addoffset = date('Y-m-d H:i:s',strtotime('+'.$offset->hour.' hour +'.$offset->minute.' minutes',strtotime($nowin_server))); } elseif ($offset->sign=='-') { $nowin_server_addoffset = date('Y-m-d H:i:s',strtotime('-'.$offset->hour.' hour -'.$offset->minute.' minutes',strtotime($nowin_server))); } $insert_array['patient_review'] = $_POST['review']; $update = $this->Doctor_model->update_records($_POST['booking_id'],$insert_array); if($update) { $res= array('status' => 'success','msg'=> load_language('review_updated',true)); /*CODE FOR DOCTOR NOTIFICATION ON ADDING MEDICAL RECORD REVIEW*/ /*------------------------------------------------*/ $booking_details = $this->Search_doctor_model->get_booking_details($_POST['booking_id']); $patient_data = $this->Patient_model->get_single_patient($booking_details['patient_id']); $text = 'The patient '.$patient_data['pt_name'].' evaluated his consultation on '.date('d.m.Y',$booking_details['time_start']); $notification = array('doctor_id' => $booking_details['doctor_id'],'type'=>1,'message'=>$text,'read_status'=>0,'time'=>strtotime($nowin_server) ); $doctor_insert_id = $this->Home_model->insert_notification_doctor($notification); $fcm_doctor = $this->Home_model->get_doctor_fcm($booking_details['doctor_id']); if(!empty($fcm_doctor['fcm_token'])) { $doc_push_obj['id'] = $doctor_insert_id; $doc_push_obj['type'] = "New Review"; $doc_push_obj['message'] =$text; $doc_push_obj['read_status'] = false; $doc_push_obj['to'] = $fcm_doctor['fcm_token']; $user_type = '2'; $push_status = push_sent($doc_push_obj,$user_type); } /*------------------------------------------------*/ } else { $res= array('status' => 'error','msg'=> load_language('insertion_failed',true) ); } } print json_encode($res); } /*Desc:FUNCTION FOR SAVE MEDICAL RECORD FINAL DATA - SERVICE*/ public function save_medicalrecord_finaldata() { //print_r($_FILES); //print_r($_POST); //die(); $insert_array = array(); if(!empty($_POST) ) { $booking_id = $_POST['booking_id']; if(!empty($_FILES)) { if (!file_exists('./assets/uploads/medicalrecord/booking'.$booking_id)) { mkdir('./assets/uploads/medicalrecord/booking'.$booking_id, 0777, true); } $files = $_FILES; $config = set_upload_options('./assets/uploads/medicalrecord/booking'.$booking_id); $this->load->library('upload', $config); for ($i=0; $i < count($files['images']['name']) ; $i++) { $_FILES['images']['name'] = $files['images']['name'][$i]; $_FILES['images']['type'] = $files['images']['type'][$i]; $_FILES['images']['tmp_name'] = $files['images']['tmp_name'][$i]; $_FILES['images']['error'] = $files['images']['error'][$i]; $_FILES['images']['size'] = $files['images']['size'][$i]; if($this->upload->do_upload('images')) { $dataInfo[$i] = $this->upload->data(); $obsr_images[$i] = 'assets/uploads/medicalrecord/booking'.$booking_id.'/'.$dataInfo[$i]['file_name']; } else { $error = array('error' => $this->upload->display_errors('', '')); $res_img = array( "status"=> "error", "error"=> "Upload Error", "msg"=> load_language('image_upload_error',true)/*.$error['error']*/ ); print json_encode($res_img); exit(); } } } if(!empty($obsr_images)) { $insert_array['images'] = json_encode($obsr_images,JSON_UNESCAPED_SLASHES); } if(!empty($_POST['obsr'])) { $insert_array['other_observations'] = $_POST['obsr']; } if(!empty($_POST['main_complaint'])) { $insert_array['main_complaint'] = $_POST['main_complaint']; } if(!empty($insert_array)) { $update = $this->Doctor_model->update_records($_POST['booking_id'],$insert_array); if($update) { $res= array('status' => 'success','msg'=> load_language('success',true),'booking_id'=>$booking_id ); } else { $res= array('status' => 'error','msg'=> load_language('updation_failed',true) ); } } else { $res= array('status' => 'success','msg'=> load_language('success',true),'booking_id'=>$booking_id ); } print json_encode($res); } } /*Desc:FUNCTION FOR RETURNING MEDICINE DETAILS FOR GIVEN MEDICINE NAME - SERVICE*/ public function get_medicine_details() { $name = $_POST['medicine_name']; $medicine = $this->Doctor_model->get_medicine_for_name($name); print json_encode($medicine); } /*Desc:FUNCTION FOR RETURNING EXAM DETAILS FOR GIVEN EXAM NAME - SERVICE*/ public function get_exam_details() { $name = $_POST['exam_name']; $exam = $this->Doctor_model->get_exam_for_name($name); print json_encode($exam); } /*Desc:FUNCTION FOR RETURNING EXAM DETAILS FOR GIVEN EXAM NAME - SERVICE*/ public function get_budget_details() { $name = $_POST['procedure_name']; $budget = $this->Doctor_model->get_budget_for_name($name); print json_encode($budget); } /*CONTROLLER - EDIT PROFILE*/ public function editProfile() { if($this->session->userdata('UserData')&&$this->session->userdata('UserData')['type']=="DOCTOR") { $userdata = $this->session->userdata('UserData'); $template['page'] = "doctor_editprofile"; $template['page_title'] = "Edit Profile"; $template['data'] = "Doctor page"; $doctor_data = $this->Doctor_model->get_single_doctor($userdata['id']); $speciality_list = $this->Home_model->get_speciality(); $template['speciality_list'] = $speciality_list; $template['doctor_data'] = $doctor_data; $this->load->view('template/template', $template); } else { $this->session->set_flashdata('message', array('message' => load_language('session_invalid_error',true), 'title' => load_language('error',true), 'class' => 'danger')); header('Location: '.base_url()); } } /*FUNCTION FOR CHECK USERNAME AVAILABLE - EDIT PROFILE*/ public function check_username_edit() { $userdata = $this->session->userdata('UserData'); $data = $_POST; if($userdata['username']==$data['username']) { print json_encode(array('message'=>'success')); } else { $check_result = $this->Home_model->usernameExist_doc($data); print json_encode($check_result); } } /*FUNCTION FOR UPDATING PROFILE - EDIT PROFILE*/ public function saveProfile() { $userdata = $this->session->userdata('UserData'); $_POST['dob'] = strtotime($_POST['dob']); if(isset($_POST) and !empty($_POST)) { $update_data = $_POST; if(isset($_FILES['profile_photo']['name']) and !empty($_FILES['profile_photo']['name'])) { $fileName = $userdata['id'].'_'.$_FILES['profile_photo']['name']; $config = set_upload_options('./assets/uploads/profilepic/doctors/'); $config['file_name'] = $fileName; $this->load->library('upload', $config); if ( ! $this->upload->do_upload('profile_photo')) { //print_r("expression");die(); $error = array('error' => $this->upload->display_errors('', '')); $this->session->set_flashdata('message', array('message' => 'Profile Photo Cant be Uploaded, Try Again', 'title' => 'Error', 'class' => 'danger')); //header('Location: '.base_url().'Doctor/editProfile'); redirect(base_url().'Doctor/editProfile'); } else { $imagedata = $this->upload->data(); $fullfilepath='assets/uploads/profilepic/doctors/'.$imagedata['file_name']; //$picdata = array('profile_pic'=>$fullfilepath); $update_data['profile_pic'] = $fullfilepath; } } else { unset($update_data['profile_pic']); } //print_r($update_data);die(); $update = $this->Doctor_model->update_profile($userdata['id'],$update_data); if($update['status']=='success') { $doctor_data = $this->Doctor_model->get_single_doctor_row($userdata['id']); //print_r($patient_data); $new_userdata = array( "type"=>"DOCTOR", "id"=> $doctor_data['id'], "name"=> $doctor_data['name'], "username"=> $doctor_data['username'], "email"=> $doctor_data['email'], "password" => $doctor_data['password'], "specialization" => $doctor_data['specialization'], "telphone" => $doctor_data['telephone'], "cpf" => $doctor_data['cpf'], "rg" => $doctor_data['rg'], "dob" => $doctor_data['dob'], "gender" => $doctor_data['gender'], "price" => $doctor_data['price'], "zip_code" => $doctor_data['cep'], "street_address" => $doctor_data['street_address'], "locality" => $doctor_data['locality'], "number" => $doctor_data['number'], "landmark" =>$doctor_data['complement'], "profile_photo" => $doctor_data['profile_pic'], "bio" => $doctor_data['about'] ); $this->session->set_userdata('UserData',$new_userdata); header('Location: '.base_url().'Doctor'); } else { $this->session->set_flashdata('message', array('message' => load_language('updation_failed',true), 'title' => 'Error', 'class' => 'danger')); redirect(base_url().'Doctor/editProfile'); } } } /*FUNCTION FOR VALIDATION UPLOADING FILE TYPE*/ function is_valid_type($file,$valid_types) { if (in_array($file['type'], $valid_types)) return 1; return 0; } /*FUNCTION FOR UPDATING CONSULTATION CONFIGURATION - DOCTOR DASH*/ public function addConsultConfig() { $data = $_POST; //print_r($data); $userdata = $this->session->userdata('UserData'); $update = $this->Doctor_model->update_profile($userdata['id'],$data); print json_encode($update); } /*FUNCTION FOR VIEWING ALL NOTIFICATION FOR CURRENT DOCTOR - NOTIFICATIONS*/ public function notification() { if($this->session->userdata('UserData')&&$this->session->userdata('UserData')['type']=="DOCTOR") { $userdata = $this->session->userdata('UserData'); //CODE FOR SUMMARY IN NUMBERS $no_of_attendance = $this->Doctor_model->get_doctor_num_attendance($userdata['id']); $no_of_billed = $this->Doctor_model->get_doctor_num_billed($userdata['id']); $no_of_patients = $this->Doctor_model->get_doctor_num_patients($userdata['id']); $no_of_profileview = $this->Doctor_model->get_doctor_num_profileview($userdata['id']); if(empty($no_of_billed['amount'])) { $no_of_billed['amount'] = 0; } $dash_view = array('no_of_attendance' => $no_of_attendance['count'],'no_of_billed'=>$no_of_billed['amount'],'no_of_patients' => $no_of_patients['count'],'no_of_profileview'=>$no_of_profileview['count']); $doctor_data = $this->Doctor_model->get_single_doctor($userdata['id']); $speciality_list = $this->Home_model->get_speciality(); $page = 1; $notifications = $this->Doctor_model->get_notifications($userdata['id'],$page); $notifications_total_count = $this->Doctor_model->get_notifications_total_count($userdata['id']); $aniversaries = $this->Doctor_model->get_aniversaries_list($userdata['id']); //echo "<pre>"; //print_r($aniversaries);die(); //print_r(strtotime(date('Y-m-d H:i:s'))); //echo "<pre>";print_r($notifications);die(); $template['speciality_list'] = $speciality_list; $template['doctor_data'] = $doctor_data; $template['dash_view'] = $dash_view; $template['notifications'] = $notifications; $template['notifications_total_count'] = $notifications_total_count[0]; //print_r($notifications_total_count);die(); $template['notifications_page_no'] = $page; $template['aniversaries'] = $aniversaries; $template['page'] = "doctor_notifications_aniversaries"; $template['page_title'] = "Notification"; $this->load->view('template/template', $template); } else { $this->session->set_flashdata('message', array('message' => load_language('session_invalid_error',true), 'title' => load_language('error',true), 'class' => 'danger')); header('Location: '.base_url()); } } public function notification_ajax() { $userdata = $this->session->userdata('UserData'); $page = 1; if(!empty($_POST)) {$page = $_POST['page']+1;} $notifications = $this->Doctor_model->get_notifications($userdata['id'],$page); $notifications_total_count = $this->Doctor_model->get_notifications_total_count($userdata['id']); $template['notifications'] = $notifications; $template['notifications_total_count'] = $notifications_total_count[0]; $template['notifications_page_no'] = $page; $this->load->view('doctor_notifications_list', $template); } /*FUNCTION FOR CHECKING CREDENTIALS OF CURRENTLY LOGEDIN PATIENT - DELETE ACCOUNT*/ public function check_current_user_credential() { $userdata = $this->session->userdata('UserData'); if($_POST['username']==$userdata['username']) { $db_pass = $this->Doctor_model->get_doctor_password($userdata['id']); $enterd_pass = md5($_POST['password']); if($db_pass['password']==$enterd_pass) { $this->sentConfirmationcode($userdata); $res = array('status' =>'success' , 'msg'=>load_language('valid_credentials',true)); } else { $res = array('status' =>'error' , 'msg'=>load_language('invalid_credentials',true)); } } else { $res = array('status' =>'error' , 'msg'=>load_language('invalid_credentials',true)); } print json_encode($res); } /*FUNCTION FOR CHECKING CONFIRMATION CODE OF CURRENTLY LOGEDIN PATIENT - DELETE ACCOUNT*/ public function check_current_user_confirmationcode() { $userdata = $this->session->userdata('UserData'); $db_confirmation_code = $this->Doctor_model->get_doctor_confirmation_code($userdata['id']); if($db_confirmation_code['confirmation_code']==strtoupper($_POST['confirmation_code'])) { $res = array('status' => 'success','msg'=>load_language('valid_code',true)); $this->Doctor_model->disable_doctor_account($userdata['id']); } else { $res = array('status' => 'error','msg'=>load_language('invalid_code',true)); } print json_encode($res); } /*FUNCTION FOR SENTING CONFRIMATION CODE FOR ACCOUNT DELETION - PATIENT AND DOCTOR*/ public function sentConfirmationcode($user) { $characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $result = ''; for ($i = 0; $i < 8; $i++) $result .= $characters[mt_rand(0, 35)]; $msg = "Hi ".$user['name'].",<br><br>Your Confirmation Code for Ipok Account Deactivation is ".$result.". <br><br>Ipok Team"; send_mail($msg,$user['email'],'Account Deactivation'); $this->Doctor_model->set_confirmation_code($user,$result); } /*FUNCTION FOR SENTING MAIL */ /* public function send_mail($msg,$email,$sub) { $settings = $this->db->get('settings')->row(); $configs = array( 'protocol'=>'smtp', 'smtp_host'=>$settings->smtp_host, 'smtp_user'=>$settings->smtp_username, 'smtp_pass'=>$settings->smtp_password, 'smtp_port'=>'587', 'smtp_timeout'=>20, 'mailtype' => 'html', 'charset' => 'iso-8859-1', 'wordwrap' => TRUE ); $this->load->library('email', $configs); $this->email->initialize($configs); $this->email->set_newline("\r\n"); $this->email ->from($settings->admin_email, 'Ipok') ->to($email) ->subject($sub) ->message($msg); $this->email->send(); } */ /*FUNCTION FOR DOCTOR CHAT*/ public function chat() { if($this->session->userdata('UserData')&&($this->session->userdata('UserData')['type']=="DOCTOR" or $this->session->userdata('UserData')['type']=="COLLABORATOR")) { $userdata = $this->session->userdata('UserData'); if($this->session->userdata('UserData')['type']=="COLLABORATOR") { $my_capabilities = $this->Doctor_model->get_capabilities_of_collaborator($userdata['c_id']); $capabilities = explode(',', $my_capabilities['capabilities']); $find_capability = in_array("Doctor/chat",$capabilities); if(!$find_capability) { redirect(base_url().'Home/error'); } } $userdata = $this->session->userdata('UserData'); if(!empty($this->uri->segment(3))) { $patient_id = $this->uri->segment(3); $patient_data = $this->Patient_model->get_single_patient($patient_id); $opponent = array('pat_name' =>$patient_data['pt_name'], 'patient_id' => $patient_data['patientid'], 'pat_pic' => $patient_data['pt_pic']); $this->session->set_userdata('opponentData',$opponent); //print_r($this->session->userdata('oppenontData'));die(); redirect(base_url().'Doctor/chat'); } $template['page'] = 'chat'; $template['page_title'] = "Chat"; $this->load->view('template/template', $template); } else { redirect(base_url()); } } public function sentBroadcast() { $DEFAULT_PATH = '/chats/'; $userdata = $this->session->userdata('UserData'); $time = (int)time().'000'; //print_r($time);die(); $jsonData = json_decode($_POST['json_obj']); $nowin_server = date("Y-m-d TH:i:s"); //print_r($jsonData); foreach ($jsonData as $key => $val) { $chatid = 'P'.$val->patient_id.'@_@D'.$userdata['id']; //print_r($chatid); $firebaseobject = array('doctor_id' => (int)$userdata['id'], 'doctor_name' => $userdata['name'], 'doctor_photo' => $userdata['profile_photo'], 'message' => $_POST['message'], 'sender_type' =>1, 'patient_id' =>(int)$val->patient_id, 'patient_name' =>$val->pat_name, 'patient_photo' =>$val->pat_pic, 'photo_url' =>'', //'time' =>strtotime(local_time_in_server(time(),'H:i:s')), 'time' => $time, 'type' =>0, 'video_url' =>''); //print_r($firebaseobject);die(); //UPDATING RECENT MSG IN MYSQL DB $recent_obj = array('chat_id' => $chatid, 'patient_id' => $val->patient_id, 'doctor_id' => $userdata['id'], 'sender_type' =>1, 'msg' => $_POST['message'], 'photo_url' => '', 'video_url' => '', 'type'=> 0, //'time' =>strtotime(local_time_in_server(time(),'H:i:s')) 'time' => $time ); //print_r($recent_obj); $result = firebase()->push($DEFAULT_PATH .'/'.$chatid.'/', ""); $token = json_decode($result); $firebaseobject['id'] = $token->name; //print_r($token->name);die(); firebase()->set($DEFAULT_PATH .'/'.$chatid.'/'.$token->name,$firebaseobject); $update = $this->Home_model->update_recent_chat($recent_obj); $doctor_data = $this->Doctor_model->get_single_doctor($userdata['id']); $text_pat = ''.$doctor_data['dr_name'].' :'.$_POST['message']; $fcm_user = $this->Home_model->get_patient_fcm($val->patient_id); if(!empty($fcm_user['fcm_token'])) { //print_r($fcm_user['fcm_token']);die(); $pat_push_obj['id'] = $val->patient_id; $pat_push_obj['type'] = "New Message"; $pat_push_obj['booking_id'] = ''; $pat_push_obj['booking_date'] = ''; $pat_push_obj['doctor_id'] = $userdata['id']; $pat_push_obj['doctor_name'] = $doctor_data['dr_name']; $pat_push_obj['doctor_specialization'] = $doctor_data['dr_specialization']; $pat_push_obj['message'] = $_POST['message']; $pat_push_obj['time'] = strtotime($nowin_server); $pat_push_obj['to'] = $fcm_user['fcm_token']; $user_type = '1'; //patient push $push_status = push_sent($pat_push_obj,$user_type); } } print json_encode($update); } /*FUNCTION FOR ADDING COLABORATOR - DOCTOR DASHBOARD*/ public function addColaborator() { if($this->session->userdata('UserData')&&$this->session->userdata('UserData')['type']=="DOCTOR") { $template['page'] = 'doctor_dash_add_colaborator'; $template['page_title'] = "Add Colaborator"; $this->load->view('template/template', $template); } else { redirect(base_url()); } } /*FUNCTION FOR EDITING COLABORATOR - DOCTOR DASHBOARD*/ public function editColaborator() { if($this->session->userdata('UserData')&&($this->session->userdata('UserData')['type']=="DOCTOR")&&(!empty($this->uri->segment(3)))) { $userdata = $this->session->userdata('UserData'); $id = $this->uri->segment(3); $collaborator_data = $this->Doctor_model->get_collaboator_byid_doc_id($id,$userdata['id']); //print_r($collaborator_data);die(); if(!empty($collaborator_data)) { $template['collaborator_data'] = $collaborator_data; $template['page'] = 'doctor_dash_edit_colaborator'; $template['page_title'] = "Edit Colaborator"; $this->load->view('template/template', $template); } else { redirect(base_url()); } } else { redirect(base_url()); } } /*FUNCTION FOR SAVING COLABORATOR - ADD COLLABORATOR*/ public function saveColaborator() { //print_r($_FILES); //die(); $userdata = $this->session->userdata('UserData'); if(!empty($_POST['data'])) { parse_str($_POST['data'], $req_data); $insertarray = array('name' => $req_data['name'],'email' => $req_data['email'],'password' => md5($req_data['password']),'telephone' => $req_data['telephone'],'cpf' => $req_data['cpf'],'doctor_id' => $userdata['id'] ); } $colaborator = $this->Doctor_model->add_colaborator($insertarray); if($colaborator>0) { $fileName = $colaborator.'_'.$_FILES['image']['name']; $config = set_upload_options('./assets/uploads/profilepic/doctor_collaborator/'); $config['file_name'] = $fileName; $this->load->library('upload', $config); if ( ! $this->upload->do_upload('image')) { $error = array('error' => $this->upload->display_errors('', '')); $res = array( "status"=> "error", "error"=> "Upload Error", "message"=> load_language('image_upload_error',true)/*.$error['error']*/ ); $this->Doctor_model->delete_registration_collaborator($colaborator); } else { $imagedata = $this->upload->data(); $fullfilepath='assets/uploads/profilepic/doctor_collaborator/'.$imagedata['file_name']; $picdata = array('image'=>$fullfilepath); $this->Doctor_model->update_colaborator($colaborator,$picdata); $cpf_obj = array('cpf' => $insertarray['cpf'] ,'user_type' =>2,'user_id'=>$colaborator); $this->Home_model->insertcpfunique($cpf_obj); $res = array('status' =>'success','colaborator' => $colaborator); //Updating collaborator data in session - header display $collaborator_data = $this->Doctor_model->get_all_collaborator_for_doctor($userdata['id']); $this->session->set_userdata('CollaboratorData',$collaborator_data); } } else { $res = array('status' => 'error' ); } print json_encode($res); } /*FUNCTION FOR UPDATING COLABORATOR DATA- SETTING AUTHORIZATION, EDIT COLLABORATOR*/ public function updateColaborator() { $userdata = $this->session->userdata('UserData'); //print_r($_POST); //print_r($_FILES); //die(); $update_array = array(); if($_POST['section']=='authorizeaccess') { $update_array['capabilities'] = ''; if(!empty($_POST['access']) and isset($_POST['access'])) { $update_array['capabilities'] = implode(",",$_POST['access']); } } elseif($_POST['section']=='profile') { parse_str($_POST['data'], $req_data); $update_array = array('name' => $req_data['name'],'telephone' => $req_data['telephone'],'cpf' => $req_data['cpf']); //print_r($_POST); //print_r($_FILES);die(); if(!empty($_FILES['image'])) { $fileName = $_POST['colabor_id'].'_'.$_FILES['image']['name']; $config = set_upload_options('./assets/uploads/profilepic/doctor_collaborator/'); $config['file_name'] = $fileName; $this->load->library('upload', $config); if ( ! $this->upload->do_upload('image')) { $error = array('error' => $this->upload->display_errors('', '')); $res = array( "status"=> "error", "error"=> "Upload Error", "message"=> load_language('image_upload_error',true)/*.$error['error']*/ ); //$this->Doctor_model->delete_registration_collaborator($colaborator); } else { $imagedata = $this->upload->data(); $fullfilepath='assets/uploads/profilepic/doctor_collaborator/'.$imagedata['file_name']; $update_array['image'] = $fullfilepath; } } } if(!empty($update_array) and empty($res['error'])) { $update = $this->Doctor_model->update_colaborator($_POST['colabor_id'],$update_array); if($update) { $res = array('status' => 'success' ); //Updating collaborator data in session - header display $collaborator_data = $this->Doctor_model->get_all_collaborator_for_doctor($userdata['id']); $this->session->set_userdata('CollaboratorData',$collaborator_data); } else {$res = array('status'=>'error');} } print json_encode($res); } public function collaborator() { if($this->session->userdata('UserData') and $this->session->userdata('UserData')['type']=='COLLABORATOR') { $userdata = $this->session->userdata('UserData'); $my_capabilities = $this->Doctor_model->get_capabilities_of_collaborator($userdata['c_id']); //print_r($my_capabilities);die(); $clinic_list = $this->Doctor_model->get_doctor_clinic_list($userdata['id']); $day_appointment = $this->Doctor_model->get_doctor_appointments_day($userdata['id'],'null'); foreach ($day_appointment as $key => $value) { $times = explode('-', $value['booking_time']); $day_appointment[$key]['time_start'] = $times[0]; $day_appointment[$key]['time_end'] = $times[1]; } //CODE FOR SUMMARY IN NUMBERS $no_of_attendance = $this->Doctor_model->get_doctor_num_attendance($userdata['id']); $no_of_billed = $this->Doctor_model->get_doctor_num_billed($userdata['id']); $no_of_patients = $this->Doctor_model->get_doctor_num_patients($userdata['id']); $no_of_profileview = $this->Doctor_model->get_doctor_num_profileview($userdata['id']); if(empty($no_of_billed['amount'])) { $no_of_billed['amount'] = 0; } $dash_view = array('no_of_attendance' => $no_of_attendance['count'],'no_of_billed'=>$no_of_billed['amount'],'no_of_patients' => $no_of_patients['count'],'no_of_profileview'=>$no_of_profileview['count']); $recent = $this->Home_model->get_recent_chat($userdata['id'],$userdata['type']); //$recent = json_decode($recent); //PASSING VALUES TO VIEW $template['my_capabilities'] = $my_capabilities; $template['recent'] = $recent; //$template['doctor_data'] = $doctor_data; $template['clinic_list'] = $clinic_list; $template['day_appointment'] = $day_appointment; $template['dash_view'] = $dash_view; $template['page'] = "collaborator_dash"; $template['page_title'] = "Error"; $this->load->view('template/template', $template); } else { redirect(base_url().'Home/error'); } //print_r($userdata); } /*FUNCTION TO DELETE COLLABORATOR PROFILE*/ public function removeColaborator() { $userdata = $this->session->userdata('UserData'); //print_r($_POST);die(); if(!empty($_POST['collaborator_id'])) { $delete = $this->Home_model->removeColaborator($_POST['collaborator_id']); if($delete) { $res = array('status' => 'success' ,'message' =>'Collaborator Excluded'); $this->Home_model->remove_cpfunique($_POST['collaborator_id'],'c'); //remove cpf //Updating collaborator data in session - header display $collaborator_data = $this->Doctor_model->get_all_collaborator_for_doctor($userdata['id']); //print_r($collaborator_data);die(); $this->session->set_userdata('CollaboratorData',$collaborator_data); } else { $res = array('status' => 'failed' , 'message' => load_language('collaborator_exclusion_failed',true)); } } else { $res = array('status' => 'failed' , 'message' => load_language('facing_technical_issues',true)); } print json_encode($res); } public function wallet() { if($this->session->userdata('UserData') and $this->session->userdata('UserData')['type']=='DOCTOR' and empty($this->uri->segment(3))) { $userdata = $this->session->userdata('UserData'); $wallet = $this->Doctor_model->get_wallet_for_doctor($userdata['id']); $banks = $this->Home_model->get_all_banks($userdata['id'],$userdata['type']); $last_redemption = $this->Home_model->get_last_redemption($userdata['id'],$userdata['type']); if(empty($last_redemption)) { $last_redemption = array('amount' => '0'); } $next_release = $this->Home_model->get_next_release($userdata['id'],$userdata['type']); $ipok_settings = $this->Home_model->get_ipok_settings(); $next_release_amount = $next_release['total_sum'] - (($next_release['total_sum'] * $ipok_settings['ipok_fee'])/100); if(empty($next_release)) { $next_release_amount = 0; } //print_r($next_release_amount);die(); $template['banks'] = $banks; $template['last_redemption'] = $last_redemption['amount']; $template['next_release_amount'] = $next_release_amount; //print_r($wallet);die(); $template['wallet'] = $wallet; $template['page'] = "wallet"; $template['page_title'] = "Wallet"; $this->load->view('template/template', $template); } else if($this->session->userdata('UserData') and $this->session->userdata('UserData')['type']=='DOCTOR' and !empty($this->uri->segment(3)) and $this->uri->segment(3)=='redemptionhistory') { $userdata = $this->session->userdata('UserData'); $redemptiondata = $this->Home_model->redemptionhistory($userdata['id']); //echo "<pre>"; //print_r($redemptiondata);die(); $template['page'] = "wallet_redemptionhistory"; $template['page_title'] = "Wallet"; $template['redemptiondata'] = $redemptiondata; $this->load->view('template/template', $template); } else if($this->session->userdata('UserData') and $this->session->userdata('UserData')['type']=='DOCTOR' and !empty($this->uri->segment(3)) and $this->uri->segment(3)=='futurereleases') { $userdata = $this->session->userdata('UserData'); $futurereleases = $this->Home_model->futurereleases($userdata['id']); //echo "<pre>"; //print_r($futurereleases);die(); $template['page'] = "wallet_futurereleases"; $template['page_title'] = "Wallet"; $template['futurereleases'] = $futurereleases; $this->load->view('template/template', $template); } else { redirect(base_url().'Home/error/url'); } } }