middleware('auth'); $this->middleware('permission:patient-flow-monitoring'); } public function index(Request $request){ $clinic_id = $request->clinic_id; $search_by = $request->search_by; $reg_date = $request->reg_date; $start_date = $request->start_date; $end_date = $request->end_date; $order_by = $request->order_by ?? 1; if (!isset($clinic_id) && !isset($search_by)){ $clinic_id = session()->get('clinic_id'); $search_by = session()->get('search_by'); $reg_date = session()->get('reg_date'); $start_date = session()->get('start_date'); $end_date = session()->get('end_date'); $order_by = session()->get('order_by'); } else { session()->put('clinic_id', $clinic_id); session()->put('search_by', $search_by); session()->put('reg_date', $reg_date); session()->put('start_date', $start_date); session()->put('end_date', $end_date); session()->put('order_by', $order_by); } if($search_by === 0){ // last 24 hours $start_date_search = Carbon::yesterday()->startOfDay()->toDateTimeString(); $end_date_search = Carbon::yesterday()->endOfDay()->toDateTimeString(); $date_search = "Yesterday"; } elseif($search_by == 1){ // custom date $start_date_search = Carbon::parse($reg_date)->startOfDay()->toDateTimeString(); $end_date_search = Carbon::parse($reg_date)->endOfDay()->toDateTimeString(); $date_search = streamline_date($start_date_search); } elseif($search_by == 2){ // custom date range $start_date_search = Carbon::parse($start_date)->startOfDay()->toDateTimeString(); $end_date_search = Carbon::parse($end_date)->endOfDay()->toDateTimeString(); $date_search = streamline_date($start_date_search) . " to " . streamline_date($end_date_search); } else { // Today $start_date_search = Carbon::today()->startOfDay()->toDateTimeString(); $end_date_search = Carbon::today()->endOfDay()->toDateTimeString(); $date_search = "Today"; } switch (get_select_clinic_order_type()) { case 0: if ($order_by == 0) { $order_by_text = "patient_episodes.id"; } else { $order_by_text = "triage.severe_grade desc, patient_episodes.id"; } break; case 1: if ($order_by == 0) { $order_by_text = "patient_episodes.id desc"; } else { $order_by_text = "triage.severe_grade desc, patient_episodes.id desc"; } break; case 2: default: if ($order_by == 0) { $order_by_text = "consultations.completed, patient_episodes.id"; } else { $order_by_text = "consultations.completed, triage.severe_grade desc, patient_episodes.id"; } break; } if($clinic_id == 0){ $patient_episodes = DB::table('patient_episodes') ->whereNull('patient_episodes.deleted_at') ->leftJoin('consultations', 'patient_episodes.id', '=', 'consultations.episode_id') ->leftJoin('ante_natal_clinic_followups as a', 'patient_episodes.id', '=', 'a.episode_id') ->leftJoin('triage', 'patient_episodes.id', '=', 'triage.episode_id') ->select('patient_episodes.*', 'consultations.primary_diagnosis','consultations.outcome_id','consultations.completed','consultations.created_by as consultation_created_by','consultations.updated_by as consultation_updated_by','consultations.consultation_done_by', 'a.primary_diagnosis as antenatal_primary_diagnosis','a.outcome_id as antenatal_outcome_id','a.completion_status as antenatal_completed','a.created_by as antenatal_created_by','a.updated_by as antenatal_updated_by', 'triage.id as episode_triage_id', 'triage.severe_grade', 'triage.clinic_allocation') ->whereBetween('patient_episodes.created_at', [$start_date_search, $end_date_search]) ->orderByRaw($order_by_text) ->paginate(200); $clinic_name = "OPD"; } else { $patient_episodes = DB::table('patient_episodes') ->whereNull('patient_episodes.deleted_at') ->leftJoin('consultations', 'patient_episodes.id', '=', 'consultations.episode_id') ->leftJoin('ante_natal_clinic_followups as a', 'patient_episodes.id', '=', 'a.episode_id') ->leftJoin('triage', 'patient_episodes.id', '=', 'triage.episode_id') ->where(['patient_episodes.clinic_id' => $clinic_id]) ->whereBetween('patient_episodes.created_at', [$start_date_search, $end_date_search]) ->orderByRaw($order_by_text) ->select('patient_episodes.*', 'consultations.primary_diagnosis','consultations.outcome_id','consultations.completed','consultations.created_by as consultation_created_by','consultations.updated_by as consultation_updated_by','consultations.consultation_done_by', 'a.primary_diagnosis as antenatal_primary_diagnosis','a.outcome_id as antenatal_outcome_id','a.completion_status as antenatal_completed','a.created_by as antenatal_created_by','a.updated_by as antenatal_updated_by','triage.id as episode_triage_id', 'triage.severe_grade', 'triage.clinic_allocation') ->paginate(200); $clinic_name = get_name($clinic_id, 'id', 'name', 'clinics'); } $patient_categories = DB::table("patient_categories")->whereNull('deleted_at')->pluck("name", "id"); $clinics = DB::table("clinics")->whereNull("deleted_at")->orderBy("name")->pluck("name", "id")->toArray(); $clinics = [0 => 'OPD'] + $clinics; $clinics = ['' => '- select -'] + $clinics; $diagnoses = DB::table('diagnoses')->where('available', 1)->whereNull('deleted_at')->pluck("name", "id")->toArray(); $wards = DB::table('wards')->where('available', 1)->whereNull('deleted_at')->pluck("name", "id")->prepend('- select -', ''); return view('patients::patient_flow_monitoring.index', compact('patient_episodes', 'clinics', 'patient_categories','clinic_name','search_by', 'date_search', 'wards', 'diagnoses')); } public function patient_route($episode_id, $route){ $episode = PatientEpisode::find($episode_id); $patient_id = $episode->patient_id; // set up session session()->put(['patient_id' => $patient_id]); session()->put(['episode_id' => $episode_id]); if($route == 'triage'){ $url = '/triage'; session()->put('triage_without_etat', 0); } elseif ($route == 'consultation'){ session()->put('consultation_with_notes', 0); $url = '/consultation/route'; } elseif ($route == 'create_anaesthetics'){ $url = '/anaesthetics/create'; } elseif ($route == 'create_surgery'){ $url = '/theatre_surgery/create'; } elseif ($route == 'anaesthetics_history'){ $url = '/anaesthetics/history'; } elseif ($route == 'surgery_index'){ $url = '/theatre_surgery'; } elseif ($route == 'treatment') { $url = '/prescriptions/create'; } elseif ($route == 'anc_registration_button'){ $url = '/ante_natal_clinic/create'; } elseif ($route == 'anc_followup_button'){ $url = '/ante_natal_clinic_follow_up/create'; } elseif ($route == 'investigation') { $url = '/investigations/investigations_review'; } elseif ($route == 'triage_without_etat') { session()->put('triage_without_etat', 1); $url = '/triage'; } elseif ($route == 'consultation_with_notes') { session()->put('consultation_with_notes', 1); $url = '/consultation/route'; } elseif ($route == 'view_patient_history') { $url = '/patient_episodes/'; } elseif ($route == 'main_exam') { $url = '/eye_clinic/main_exam_route'; } elseif ($route == 'base_refraction_exam') { $url = '/eye_clinic/base_exam_refraction'; } return response()->json($url); } public function inpatient_admission(Request $request) { $episode = PatientEpisode::find($request->admission_episode_id); $patient_id = $episode->patient_id; $ward_id = $request->admission_ward_id; $admitted_on = $request->ward_admission_date; try { $episode_id = $episode->id; session()->put(['episode_id' => $episode_id]); session()->put(['patient_id' => $patient_id]); $consultation = Consultation::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first(); if ($consultation) { $consultation->outcome_id = get_name("Admitted", "name", "id", "outcomes"); $consultation->ward_id = $ward_id; $consultation->admitted_on = $admitted_on; $consultation->save(); } // Admit patient in ward $existing_inpatient = InpatientInfo::where(['episode_id' => $episode_id])->first(); if ($existing_inpatient) { $ward_id = $existing_inpatient->ward_id; $ward_name = get_name($ward_id, "id", "name", "wards"); flash("Patient ".get_name($patient_id, "id", "number", "patients")." already admitted for in admitted in ".$ward_name. ". You can use the ward transfer option incase you want to transfer to another ward")->error(); } else { $inpatient = is_null($existing_inpatient) ? new InpatientInfo : $existing_inpatient; $inpatient = new InpatientInfo; $inpatient->patient_id = $patient_id; $inpatient->episode_id = $episode_id; $inpatient->admitted_on = $admitted_on; $inpatient->ward_id = $ward_id; $inpatient->created_by = auth()->user()->id; $inpatient->created_at = Carbon::now(); $inpatient->save(); $ward_name = get_name($ward_id, "id", "name", "wards"); flash("Patient ".get_name($patient_id, "id", "number", "patients")." admitted in ".$ward_name)->success(); } return redirect('/patient_episodes/'); } catch (QueryException $e) { flash("This episode already exists!")->error(); return back()->withInput(); } } }