middleware('auth'); $this->middleware('permission:incoming-inpatient-bills', ['only' => ['incoming_inpatient_bills']]); } public function incoming_inpatient_bills(Request $request) { $filters = []; if ($request->search_by == 1) { $end = Carbon::yesterday()->endOfDay()->toDateTimeString(); $start = Carbon::yesterday()->startOfDay()->toDateTimeString(); $search_text = " Yesterday"; } else if ($request->search_by == 2) { $end = Carbon::parse($request->reg_date)->endOfDay()->toDateTimeString(); $start = Carbon::parse($request->reg_date)->startOfDay()->toDateTimeString(); $search_text = " On: " . streamline_date($request->reg_date); } else if ($request->search_by == 3) { $end = Carbon::parse($request->end_date)->endOfDay()->toDateTimeString(); $start = Carbon::parse($request->start_date)->startOfDay()->toDateTimeString(); $search_text = " Between: " . streamline_date($request->start_date) . " And " . streamline_date($request->end_date); } else { $end = Carbon::today()->endOfDay()->toDateTimeString(); $start = Carbon::today()->startOfDay()->toDateTimeString(); $search_text = " Today"; } if(isset($request->ward_id) && $request->ward_id != 0){ $filters[] = ['inpatient_info.ward_id', '=', $request->ward_id]; } if ($request->inpatient_status == 1) { // patient still admitted in date range $search_text = "Patients Still Admitted" . $search_text; $inpatients_info = DB::table('inpatient_info') ->where('inpatient_info.discharged_on', '>', $end) ->OrWhereNull('inpatient_info.discharged_on') ->where('inpatient_info.admitted_on', '<', $end) ->join('patients', 'inpatient_info.patient_id', '=', 'patients.id') ->join('inpatient_bills', 'inpatient_info.id', '=', 'inpatient_bills.inpatient_info_id') ->select('inpatient_info.*', 'patients.category_id as patients_category_id', 'patients.number as patients_number', 'inpatient_bills.amount_to_pay as bills_amount_to_pay', 'inpatient_bills.invoices_amount as bills_invoices_amount', 'inpatient_bills.created_by as bills_created_by', 'inpatient_bills.updated_by as bills_updated_by', 'inpatient_bills.original_bill as bills_original_bill', 'inpatient_bills.amount_paid as bills_amount_paid') ->paginate(200); } else { if ($request->inpatient_status == 2) { // patient discharge in data range $filters[] = ['inpatient_info.discharged_on', '>', $start]; $filters[] = ['inpatient_info.discharged_on', '<', $end]; $filters[] = ['inpatient_info.discharged', '=', 1]; $search_text = "Patients Discharged" . $search_text; } else { // all patients $filters[] = ['inpatient_info.created_at', '>', $start]; $filters[] = ['inpatient_info.created_at', '<', $end]; $search_text = "Patients Admitted" . $search_text; } $inpatients_info = DB::table('inpatient_info') ->where($filters) ->join('patients', 'inpatient_info.patient_id', '=', 'patients.id') ->join('inpatient_bills', 'inpatient_info.id', '=', 'inpatient_bills.inpatient_info_id') ->select('inpatient_info.*', 'patients.category_id as patients_category_id', 'patients.number as patients_number', 'inpatient_bills.amount_to_pay as bills_amount_to_pay', 'inpatient_bills.invoices_amount as bills_invoices_amount', 'inpatient_bills.created_by as bills_created_by', 'inpatient_bills.updated_by as bills_updated_by', 'inpatient_bills.original_bill as bills_original_bill', 'inpatient_bills.amount_paid as bills_amount_paid') ->paginate(200); } $patient_categories = DB::table('patient_categories')->where('available', 1)->pluck('name', 'id')->toArray(); $wards = DB::table('wards')->where('available', 1)->pluck('name', 'id')->toArray(); $wards = ['' => '- select -', '0' => 'All wards'] + $wards; $inpatient_status = [0 => "All Patients", 1 => "Still Admitted", 2 => "Discharged"]; return view('ward_management::inpatient.incoming_bills',compact('inpatients_info','wards','inpatient_status', 'search_text', 'patient_categories')); } }