report_by; $ward_id = $request->ward_details_for; $drug_id = $request->drug_details_for; $start_date = $request->start_date; $end_date = $request->end_date; $ward_treatment_dispensations = []; $ward_sundry_dispensations = []; $sundries_issued_to_ward = []; $general_items_issued_to_ward = []; $sundry_id = null; $general_items_id = null; $ward_item_request_records = []; $general_items_item_request_records = []; if($request->search_by_details == 0){ // last 24 hours $last_day = Carbon::now()->subDay(); array_push($filters, ['created_at', '>', $last_day]); } elseif($request->search_by_details == 1){ // custom date $start_date = Carbon::parse($request->start_date)->startOfDay()->toDateTimeString(); $end_date = Carbon::parse($request->end_date)->endOfDay()->toDateTimeString(); array_push($filters, ['created_at', '>', $start_date]); array_push($filters, ['created_at', '<', $end_date]); } elseif($request->search_by_details == 2){ // custom date range $start_date = Carbon::parse($request->start_date)->startOfDay()->toDateTimeString(); $end_date = Carbon::parse($request->end_date)->endOfDay()->toDateTimeString(); array_push($filters, ['created_at', '>', $start_date]); array_push($filters, ['created_at', '<', $end_date]); } if ($request->report_by == 3) { $sundry_id = $request->sundries_details_for; $ward_item_request_records = WardItemRequest::where(['dispensation_status' => 1, 'item_type' => 2])->where($filters)->get(); }else if ($request->report_by == 4) { $sundry_id = $request->sundries_details_for; $ward_id = $request->ward_details_for; //$ward_item_request_records = WardItemRequest::where(['dispensation_status' => 1, 'item_type' => 2, 'ward_id' => $ward_id])->where($filters)->get(); $ward_sundry_dispensations = WardSundryDispensation::where('ward_id', $ward_id)->where('sundry_id', $sundry_id)->where($filters)->get(); } else if ($request->report_by == 6) { $general_items_id = $request->general_items_details_for; $ward_id = $request->ward_details_for; //$ward_item_request_records = WardItemRequest::where(['dispensation_status' => 1, 'item_type' => 2, 'ward_id' => $ward_id])->where($filters)->get(); $ward_general_items_dispensations = WardSundryDispensation::where('ward_id', $ward_id)->where('general_items_id', $general_items_id)->where($filters)->get(); } else{ $ward_treatment_dispensations = WardTreatmentDispensation::where('ward_id', $ward_id)->where('drug_id', $drug_id)->where($filters)->get(); } return view('ward_management::wards_consumption.wards_consumption_details',compact('start_date','end_date','ward_id','drug_id','ward_treatment_dispensations','sundries_issued_to_ward', 'sundry_id', 'ward_item_request_records','report_by', 'ward_sundry_dispensations')); } public function ward_consumption_report(Request $request) { $search_complete = true; $consumption_filters = $ward_item_filters = []; $selected_drug_id = 0; $selected_sundry_id = 0; $selected_general_items_id = 0; $start_date = null; $end_date = null; $report_by = $request->report_by; $ward_id = $request->ward_id; $search_text = ""; $wards = DB::table('wards')->where('available', 1)->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->toArray(); $wards = ['' => '- select -'] + $wards; $drugs = DB::table('drugs')->where('available', 1)->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->toArray(); $drugs = ['' => '- select -'] + $drugs; $sundries = DB::table('sundries')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->toArray(); $sundries = ['' => '- select -'] + $sundries; $general_items = DB::table('general_items')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->toArray(); $general_items = ['' => '- select -'] + $general_items; if($request->search_by == 0){ // last 24 hours $last_day = Carbon::now()->subDay(); array_push($consumption_filters, ['created_at', '>', $last_day]); array_push($ward_item_filters, ['dispensation_date', '>', $last_day]); } elseif($request->search_by == 1){ // custom date $start_date = Carbon::parse($request->reg_date)->startOfDay()->toDateTimeString(); $end_date = Carbon::parse($request->reg_date)->endOfDay()->toDateTimeString(); array_push($consumption_filters, ['created_at', '>', $start_date]); array_push($consumption_filters, ['created_at', '<', $end_date]); array_push($ward_item_filters, ['dispensation_date', '>', $start_date]); array_push($ward_item_filters, ['dispensation_date', '<', $end_date]); } elseif($request->search_by == 2){ // custom date range $start_date = Carbon::parse($request->start_date)->startOfDay()->toDateTimeString(); $end_date = Carbon::parse($request->end_date)->endOfDay()->toDateTimeString(); array_push($consumption_filters, ['created_at', '>', $start_date]); array_push($consumption_filters, ['created_at', '<', $end_date]); array_push($ward_item_filters, ['dispensation_date', '>', $start_date]); array_push($ward_item_filters, ['dispensation_date', '<', $end_date]); } //loop through the collections and from an array $patient_consumptions = $item_ids = $array_of_wards_to_loop = $patient_ids = []; $item_consumption = $item_requests = []; if ($request->report_by == 1) { # report by drugs consumption per ward //$ward_prescription_results = WardTreatment::where('ward_id', $ward_id)->where($consumption_filters)->get(); $ward_treatment_dispensation_results = WardTreatmentDispensation::where('ward_id', $ward_id)->where($consumption_filters)->get(); $ward_item_requests_results = WardItemRequest::where(['dispensation_status' => 1, 'item_type' => 1, 'ward_id' => $ward_id])->where($ward_item_filters)->get(); $ward_dispensing_results = WardDispensing::where(['ward_id'=>$ward_id])->where($consumption_filters)->get(); $results = Requisition::where($consumption_filters)->get(); foreach ($ward_dispensing_results as $ward_dispensing) { $issued_item_ids = explode(",", $ward_dispensing->drug_id); $issued_item_quantities = explode(",", $ward_dispensing->quantity_dispensed); for ($i=0; $i < count($issued_item_ids) ; $i++) { if(!in_array($issued_item_ids[$i], $item_ids)) {$item_ids[] = $issued_item_ids[$i];} if (isset($item_consumption[$issued_item_ids[$i]])) { $item_consumption[$issued_item_ids[$i]] += (isset($issued_item_quantities[$i]) && is_numeric($issued_item_quantities[$i])) ? $issued_item_quantities[$i] : 0; } else { $item_consumption[$issued_item_ids[$i]] = (isset($issued_item_quantities[$i]) && is_numeric($issued_item_quantities[$i])) ? $issued_item_quantities[$i] : 0; } } } foreach ($ward_treatment_dispensation_results as $dispensation_record) { if(!in_array($dispensation_record->drug_id, $item_ids)) $item_ids[] = $dispensation_record->drug_id; $patient_ids[$dispensation_record->drug_id][] = $dispensation_record->patient_id; $episode_ids[] = ['episode_id'=>$dispensation_record->episode_id, 'patient_id'=>$dispensation_record->patient_id, 'drug_id'=>$dispensation_record->drug_id]; $patient_consumptions[$dispensation_record->drug_id] = $dispensation_record->quantity_given + ($patient_consumptions[$dispensation_record->drug_id] ?? 0); } foreach ($ward_item_requests_results as $ward_item_request) { $issued_item_ids = explode(",", $ward_item_request->item_ids_issued_out); $issued_item_quantities = explode(",", $ward_item_request->quantity_issued_out); for ($i=0; $i < count($issued_item_ids) ; $i++) { if(!in_array($issued_item_ids[$i], $item_ids)) {$item_ids[] = $issued_item_ids[$i];} if (isset($item_consumption[$issued_item_ids[$i]])) { $item_consumption[$issued_item_ids[$i]] += (isset($issued_item_quantities[$i]) && is_numeric($issued_item_quantities[$i])) ? $issued_item_quantities[$i] : 0; } else { $item_consumption[$issued_item_ids[$i]] = (isset($issued_item_quantities[$i]) && is_numeric($issued_item_quantities[$i])) ? $issued_item_quantities[$i] : 0; } } $requested_item_ids = explode(",", $ward_item_request->item_ids); $requested_item_quantities = explode(",", $ward_item_request->item_quantities); for ($i=0; $i < count($requested_item_ids) ; $i++) { if(!in_array($requested_item_ids[$i], $item_ids)) {$item_ids[] = $requested_item_ids[$i];} if (isset($item_requests[$requested_item_ids[$i]])) { $item_requests[$requested_item_ids[$i]] += (isset($requested_item_quantities[$i]) && is_numeric($requested_item_quantities[$i])) ? $requested_item_quantities[$i] : 0; } else { $item_requests[$requested_item_ids[$i]] = (isset($requested_item_quantities[$i]) && is_numeric($requested_item_quantities[$i])) ? $requested_item_quantities[$i] : 0; } } } $search_text = "Results for " . ($wards[$ward_id] ?? 'N/A') . " from " . streamline_date($start_date) . " to " . streamline_date($end_date); if ($ward_id == "pharmacy") { if (count($results) > 0) { foreach ($results as $pharmacy_record) { $issued_item_ids = explode(",", $pharmacy_record->item_ids_issued_out); $issued_item_quantities = explode(",", $pharmacy_record->quantity_issued); for ($i=0; $i < count($issued_item_ids) ; $i++) { if(!in_array($issued_item_ids[$i], $item_ids)) {$item_ids[] = $issued_item_ids[$i];} if (isset($item_consumption[$issued_item_ids[$i]])) { $item_consumption[$issued_item_ids[$i]] += (isset($issued_item_quantities[$i]) && is_numeric($issued_item_quantities[$i])) ? $issued_item_quantities[$i] : 0; } else { $item_consumption[$issued_item_ids[$i]] = (isset($issued_item_quantities[$i]) && is_numeric($issued_item_quantities[$i])) ? $issued_item_quantities[$i] : 0; } } $requested_item_ids = explode(",", $pharmacy_record->drug_id); $requested_item_quantities = explode(",", $pharmacy_record->quantity_requested); for ($i=0; $i < count($requested_item_ids) ; $i++) { if(!in_array($requested_item_ids[$i], $item_ids)) {$item_ids[] = $requested_item_ids[$i];} if (isset($item_requests[$requested_item_ids[$i]])) { $item_requests[$requested_item_ids[$i]] += (isset($requested_item_quantities[$i]) && is_numeric($requested_item_quantities[$i])) ? $requested_item_quantities[$i] : 0; } else { $item_requests[$requested_item_ids[$i]] = (isset($requested_item_quantities[$i]) && is_numeric($requested_item_quantities[$i])) ? $requested_item_quantities[$i] : 0; } } } } $search_text = "Results for Pharmacy from " . streamline_date($start_date) . " to " . streamline_date($end_date); } } elseif ($request->report_by == 2) { # report for drug $selected_drug_id = $request->drug_id; $ward_treatment_dispensation_results = WardTreatmentDispensation::where('ward_id', 2)->where($consumption_filters)->get(); $ward_item_requests_results = WardItemRequest::where(['dispensation_status' => 1, 'item_type' => 1])->where($ward_item_filters)->get(); $ward_dispensing_results = WardDispensing::where($consumption_filters)->whereRaw('FIND_IN_SET(' . $selected_drug_id . ',drug_id)')->get(); $results = DB::table('requisitions')->select('*')->whereNull('deleted_at')->where('quotation_type_id', 1)->whereRaw('FIND_IN_SET(' . $selected_drug_id . ',drug_id)')->whereBetween('created_at', [$start_date, $end_date])->get(); if (count($results) > 0) { foreach ($results as $pharmacy_record) { $issued_item_ids = explode(",", $pharmacy_record->item_ids_issued_out); $issued_item_quantities = explode(",", $pharmacy_record->quantity_issued); for ($i=0; $i < count($issued_item_ids) ; $i++) { if ($selected_drug_id == $issued_item_ids[$i]) { if(!in_array("pharmacy", $array_of_wards_to_loop)) {$array_of_wards_to_loop[] = "pharmacy";} if (isset($item_consumption["pharmacy"])) { $item_consumption["pharmacy"] += (isset($issued_item_quantities[$i]) && is_numeric($issued_item_quantities[$i])) ? $issued_item_quantities[$i] : 0; } else { $item_consumption["pharmacy"] = (isset($issued_item_quantities[$i]) && is_numeric($issued_item_quantities[$i])) ? $issued_item_quantities[$i] : 0; } } } //requested ids loop $req_item_ids = explode(",", $pharmacy_record->drug_id); $req_item_quantities = explode(",", $pharmacy_record->quantity_requested); for ($i=0; $i < count($req_item_ids) ; $i++) { if ($selected_drug_id == $req_item_ids[$i]) { if(!in_array("pharmacy", $array_of_wards_to_loop)) {$array_of_wards_to_loop[] = "pharmacy";} if (isset($item_requests["pharmacy"])) { $item_requests["pharmacy"] += (isset($req_item_quantities[$i]) && is_numeric($req_item_quantities[$i])) ? $req_item_quantities[$i] : 0; } else { $item_requests["pharmacy"] = (isset($req_item_quantities[$i]) && is_numeric($req_item_quantities[$i])) ? $req_item_quantities[$i] : 0; } } } } } if (count($ward_dispensing_results) > 0) { foreach ($ward_dispensing_results as $ward_dispensing) { $issued_item_ids = explode(",", $ward_dispensing->drug_id); $issued_item_quantities = explode(",", $ward_dispensing->quantity_dispensed); for ($i=0; $i < count($issued_item_ids) ; $i++) { if ($selected_drug_id == $issued_item_ids[$i]) { if(!in_array($ward_dispensing->ward_id, $array_of_wards_to_loop)) {$array_of_wards_to_loop[] = $ward_dispensing->ward_id;} if (isset($item_consumption[$ward_dispensing->ward_id])) { $item_consumption[$ward_dispensing->ward_id] += is_numeric($issued_item_quantities[$i]) ? $issued_item_quantities[$i] : 0; } else { $item_consumption[$ward_dispensing->ward_id] = is_numeric($issued_item_quantities[$i]) ? $issued_item_quantities[$i] : 0; } } } } } if (count($ward_treatment_dispensation_results) > 0) { foreach ($ward_treatment_dispensation_results as $dispensation_record) { if ($selected_drug_id == $dispensation_record->drug_id) { if(!in_array($dispensation_record->ward_id, $array_of_wards_to_loop)) {$array_of_wards_to_loop[] = $dispensation_record->ward_id;} $patient_consumptions[$dispensation_record->ward_id] = $dispensation_record->quantity_given + ($patient_consumptions[$dispensation_record->ward_id] ?? 0); } $patient_ids[$dispensation_record->drug_id][] = $dispensation_record->patient_id; } } if (count($ward_item_requests_results) > 0) { foreach ($ward_item_requests_results as $ward_item_request) { //issued out loop $issued_item_ids = explode(",", $ward_item_request->item_ids_issued_out); $issued_item_quantities = explode(",", $ward_item_request->quantity_issued_out); for ($i=0; $i < count($issued_item_ids) ; $i++) { if ($selected_drug_id == $issued_item_ids[$i]) { if(!in_array($ward_item_request->ward_id, $array_of_wards_to_loop)) {$array_of_wards_to_loop[] = $ward_item_request->ward_id;} if (isset($item_consumption[$ward_item_request->ward_id])) { $item_consumption[$ward_item_request->ward_id] += is_numeric($issued_item_quantities[$i]) ? $issued_item_quantities[$i] : 0; } else { $item_consumption[$ward_item_request->ward_id] = is_numeric($issued_item_quantities[$i]) ? $issued_item_quantities[$i] : 0; } } } //requested ids loop $req_item_ids = explode(",", $ward_item_request->item_ids); $req_item_quantities = explode(",", $ward_item_request->item_quantities); for ($i=0; $i < count($req_item_ids) ; $i++) { if ($selected_drug_id == $req_item_ids[$i]) { if(!in_array($ward_item_request->ward_id, $array_of_wards_to_loop)) {$array_of_wards_to_loop[] = $ward_item_request->ward_id;} if (isset($item_requests[$ward_item_request->ward_id])) { $item_requests[$ward_item_request->ward_id] += (isset($req_item_quantities[$i]) && is_numeric($req_item_quantities[$i])) ? $req_item_quantities[$i] : 0; } else { $item_requests[$ward_item_request->ward_id] = (isset($req_item_quantities[$i]) && is_numeric($req_item_quantities[$i])) ? $req_item_quantities[$i] : 0; } } } } } $opd_dispensations = PatientDispensing::where($consumption_filters)->get(); if (count($opd_dispensations) > 0) { foreach ($opd_dispensations as $opd_record) { $opd_drugs_array = explode(",", $opd_record->drugs); $opd_quantities_array = explode(",", $opd_record->quantity_dispensed); for ($i=0; $i < count($opd_drugs_array); $i++) { if ($selected_drug_id == $opd_drugs_array[$i]) { if(!in_array("pharmacy", $array_of_wards_to_loop)) {$array_of_wards_to_loop[] = "pharmacy";} $patient_consumptions["pharmacy"] = ($opd_quantities_array[$i] ?? 0) + ($patient_consumptions["pharmacy"] ?? 0); } } } } $search_text = "Results for " . ($drugs[$selected_drug_id] ?? 'N/A') . " from " . streamline_date($start_date) . " to " . streamline_date($end_date); } elseif ($request->report_by == 3) { # report for sundry $selected_sundry_id = $request->sundry_id; $ward_item_requests_results = WardItemRequest::where(['dispensation_status' => 1, 'item_type' => 2])->where($ward_item_filters)->get(); $ward_sundry_dispensation_results = WardSundryDispensation::where($consumption_filters)->get(); if (count($ward_item_requests_results) > 0) { foreach ($ward_item_requests_results as $ward_item_request) { $issued_item_ids = explode(",", $ward_item_request->item_ids_issued_out); $issued_item_quantities = explode(",", $ward_item_request->quantity_issued_out); for ($i=0; $i < count($issued_item_ids) ; $i++) { if ($selected_sundry_id == $issued_item_ids[$i]) { if(!in_array($ward_item_request->ward_id, $array_of_wards_to_loop)) {$array_of_wards_to_loop[] = $ward_item_request->ward_id;} if (isset($item_consumption[$ward_item_request->ward_id])) { $item_consumption[$ward_item_request->ward_id] += is_numeric($issued_item_quantities[$i]) ? $issued_item_quantities[$i] : 0; } else { $item_consumption[$ward_item_request->ward_id] = is_numeric($issued_item_quantities[$i]) ? $issued_item_quantities[$i] : 0; } } } } } foreach ($ward_sundry_dispensation_results as $dispensation_record) { if ($selected_sundry_id == $dispensation_record->sundry_id) { if(!in_array($dispensation_record->ward_id, $array_of_wards_to_loop)) {$array_of_wards_to_loop[] = $dispensation_record->ward_id;} if (isset($patient_consumptions[$dispensation_record->ward_id])) { $patient_consumptions[$dispensation_record->ward_id] += $dispensation_record->quantity_given; } else { $patient_consumptions[$dispensation_record->ward_id] = $dispensation_record->quantity_given; } $patient_ids[$dispensation_record->sundry_id][] = $dispensation_record->patient_id; } } $search_text = "Results for " . ($sundries[$selected_sundry_id] ?? 'N/A') . " from " . streamline_date($start_date) . " to " . streamline_date($end_date); } elseif ($request->report_by == 4) { # report for sundries consumption per ward $ward_sundry_dispensation_results = WardSundryDispensation::where('ward_id', $ward_id)->where($consumption_filters)->get(); $ward_item_requests_results = WardItemRequest::where(['dispensation_status' => 1, 'item_type' => 2, 'ward_id' => $ward_id])->where($ward_item_filters)->get(); if (count($ward_sundry_dispensation_results) > 0) { foreach ($ward_sundry_dispensation_results as $sundry_dispensation) { if(!in_array($sundry_dispensation->sundry_id, $item_ids)) {$item_ids[] = $sundry_dispensation->sundry_id;} if (isset($patient_consumptions[$sundry_dispensation->sundry_id])) { $patient_consumptions[$sundry_dispensation->sundry_id] += $sundry_dispensation->quantity_given; } else { $patient_consumptions[$sundry_dispensation->sundry_id] = $sundry_dispensation->quantity_given; } $patient_ids[$sundry_dispensation->sundry_id][] = $sundry_dispensation->patient_id; } } if (count($ward_item_requests_results) > 0) { foreach ($ward_item_requests_results as $ward_item_request) { $issued_item_ids = explode(",", $ward_item_request->item_ids); $issued_item_quantities = explode(",", $ward_item_request->quantity_issued_out); for ($i=0; $i < count($issued_item_ids) ; $i++) { if(!in_array($issued_item_ids[$i], $item_ids)) {$item_ids[] = $issued_item_ids[$i];} if (isset($item_consumption[$issued_item_ids[$i]])) { $item_consumption[$issued_item_ids[$i]] += (isset($issued_item_quantities[$i]) && is_numeric($issued_item_quantities[$i])) ? $issued_item_quantities[$i] : 0; } else { $item_consumption[$issued_item_ids[$i]] = (isset($issued_item_quantities[$i]) && is_numeric($issued_item_quantities[$i])) ? $issued_item_quantities[$i] : 0; } } } } $search_text = "Results for " . ($wards[$ward_id] ?? 'N/A') . " from " . streamline_date($start_date) . " to " . streamline_date($end_date); } elseif ($request->report_by == 5) { # report for general items $selected_general_items_id = $request->general_items_id; $ward_treatment_dispensation_results = WardTreatmentDispensation::where($consumption_filters)->get(); $ward_item_requests_results = WardItemRequest::where(['dispensation_status' => 1, 'item_type' => 1])->where($ward_item_filters)->get(); $ward_dispensing_results = WardDispensing::where($consumption_filters)->get(); $general_items_ids_array = []; if (count($ward_dispensing_results) > 0) { foreach ($ward_dispensing_results as $ward_dispensing) { $issued_item_ids = explode(",", $ward_dispensing->drug_id); $issued_item_quantities = explode(",", $ward_dispensing->quantity_dispensed); for ($i=0; $i < count($issued_item_ids) ; $i++) { if ($selected_drug_id == $issued_item_ids[$i]) { if(!in_array($ward_dispensing->ward_id, $array_of_wards_to_loop)) {$array_of_wards_to_loop[] = $ward_dispensing->ward_id;} if (isset($item_consumption[$ward_dispensing->ward_id])) { $item_consumption[$ward_dispensing->ward_id] += is_numeric($issued_item_quantities[$i]) ? $issued_item_quantities[$i] : 0; } else { $item_consumption[$ward_dispensing->ward_id] = is_numeric($issued_item_quantities[$i]) ? $issued_item_quantities[$i] : 0; } } } } } if (count($ward_treatment_dispensation_results) > 0) { foreach ($ward_treatment_dispensation_results as $dispensation_record) { if ($selected_drug_id == $dispensation_record->drug_id) { if(!in_array($dispensation_record->ward_id, $array_of_wards_to_loop)) {$array_of_wards_to_loop[] = $dispensation_record->ward_id;} if (isset($patient_consumptions[$dispensation_record->ward_id])) { $patient_consumptions[$dispensation_record->ward_id] += $dispensation_record->quantity_given; } else { $patient_consumptions[$dispensation_record->ward_id] = $dispensation_record->quantity_given; } } $patient_ids[$dispensation_record->drug_id][] = $dispensation_record->patient_id; } } if (count($ward_item_requests_results) > 0) { foreach ($ward_item_requests_results as $ward_item_request) { $issued_item_ids = explode(",", $ward_item_request->item_ids); $issued_item_quantities = explode(",", $ward_item_request->quantity_issued_out); for ($i=0; $i < count($issued_item_ids) ; $i++) { if ($selected_drug_id == $issued_item_ids[$i]) { if(!in_array($ward_item_request->ward_id, $array_of_wards_to_loop)) {$array_of_wards_to_loop[] = $ward_item_request->ward_id;} if (isset($item_consumption[$ward_item_request->ward_id])) { $item_consumption[$ward_item_request->ward_id] += is_numeric($issued_item_quantities[$i]) ? $issued_item_quantities[$i] : 0; } else { $item_consumption[$ward_item_request->ward_id] = is_numeric($issued_item_quantities[$i]) ? $issued_item_quantities[$i] : 0; } } } } } $search_text = "Results for " . ($general_items[$selected_general_items_id] ?? 'N/A') . " from " . streamline_date($start_date) . " to " . streamline_date($end_date); } elseif ($request->report_by == 6) { $ward_item_requests_results = WardItemRequest::where(['dispensation_status' => 1, 'item_type' => 3, 'ward_id' => $ward_id])->where($ward_item_filters)->get(); if (count($ward_item_requests_results) > 0) { foreach ($ward_item_requests_results as $ward_item_request) { $issued_item_ids = explode(",", $ward_item_request->item_ids); $issued_item_quantities = explode(",", $ward_item_request->quantity_issued_out); for ($i=0; $i < count($issued_item_ids) ; $i++) { if(!in_array($issued_item_ids[$i], $item_ids)) { $item_ids[] = $issued_item_ids[$i]; } if (isset($item_consumption[$issued_item_ids[$i]])) { $item_consumption[$issued_item_ids[$i]] += (isset($issued_item_quantities[$i]) && is_numeric($issued_item_quantities[$i])) ? $issued_item_quantities[$i] : 0; } else { $item_consumption[$issued_item_ids[$i]] = (isset($issued_item_quantities[$i]) && is_numeric($issued_item_quantities[$i])) ? $issued_item_quantities[$i] : 0; } } } } $search_text = "Results for " . ($wards[$ward_id] ?? 'N/A') . " from " . streamline_date($start_date) . " to " . streamline_date($end_date); } return view('ward_management::wards_consumption.ward_consumption_report',compact('start_date', 'end_date', 'wards', 'drugs','patient_ids', 'sundries', 'general_items', 'search_complete', 'report_by', 'ward_id', 'item_ids', 'patient_consumptions', 'array_of_wards_to_loop', 'selected_drug_id', 'selected_sundry_id', 'selected_general_items_id', 'search_text', 'item_consumption', 'start_date', 'end_date','item_requests')); } public function patient_drill_down(Request $request) { $item_id = $request->item_id; $start_date = $request->start_date; $end_date = $request->end_date; $ward_id = $request->ward_id; $wards = unserialize($request->wards); $patient_id_array = unserialize($request->patient_ids); $ward_name = $wards[$ward_id]; if ($request->report_by == 1) { $patients_results = WardTreatmentDispensation::join('patients', 'patients.id', '=', 'ward_treatment_dispensations.patient_id') ->leftjoin('inpatient_info', 'inpatient_info.episode_id', 'ward_treatment_dispensations.episode_id') ->whereBetween('ward_treatment_dispensations.created_at', [$start_date, $end_date])->where([['drug_id', $item_id],['ward_treatment_dispensations.ward_id', $ward_id]]) ->get(['ward_treatment_dispensations.quantity_given', 'ward_treatment_dispensations.created_at as date_given', 'patients.number', 'patients.id', 'patients.gender', 'patients.date_of_birth', 'ward_treatment_dispensations.episode_id', 'primary_diagnosis','other_diagnoses','right_eye_diagnosis','left_eye_diagnosis']); $name = get_name($item_id, 'id', 'name', 'drugs'); } elseif ($request->report_by == 3) { $patients_results = WardSundryDispensation::join('patients', 'patients.id', '=', 'ward_sundry_dispensations.patient_id') ->whereBetween('ward_sundry_dispensations.created_at', [$start_date, $end_date])->where('sundry_id', $item_id) ->where('ward_id', $ward_id)->get(['ward_sundry_dispensations.quantity_given', 'ward_sundry_dispensations.created_at as date_given', 'patients.number', 'patients.id', 'patients.gender', 'patients.date_of_birth']); $name = get_name($item_id, 'id', 'name', 'sundries'); } elseif ($request->report_by == 4) { $patients_results = WardSundryDispensation::join('patients', 'patients.id', '=', 'ward_sundry_dispensations.patient_id') ->whereBetween('ward_sundry_dispensations.created_at', [$start_date, $end_date])->where('sundry_id', $item_id) ->where('ward_id', $ward_id)->get(['ward_sundry_dispensations.quantity_given', 'ward_sundry_dispensations.created_at as date_given', 'patients.number', 'patients.id', 'patients.gender', 'patients.date_of_birth']); $name = get_name($item_id, 'id', 'name', 'sundries'); } else { return redirect('ward_consumption_report'); } return view('ward_management::wards_consumption.patient_drill_down', compact('patients_results', 'name', 'ward_name')); } public function issued_items_drill_down(Request $request){ //form variables for search form $wards = DB::table('wards')->where('available', 1)->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->toArray(); $wards = ['' => '- select -'] + $wards; $wards = ['pharmacy' => 'Pharmacy'] + $wards; $drugs = DB::table('drugs')->where('available', 1)->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->toArray(); $drugs = ['' => '- select -'] + $drugs; $sundries = DB::table('sundries')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->toArray(); $sundries = ['' => '- select -'] + $sundries; $general_items = DB::table('general_items')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->toArray(); $general_items = ['' => '- select -'] + $general_items; $quotation_type_id = $item_type = 0; //sent via request $item_id = $request->item_id; $start_date = $request->start_date; $end_date = $request->end_date; $ward_id = $request->ward_id; $report_by = $request->report_by; $wards = unserialize($request->wards); $patient_id_array = unserialize($request->patient_ids); $ward_name = $wards[$ward_id]; // if (isset($request->start_date) && isset($request->end_date)) { // $start_date_string = Carbon::createFromFormat('Y-m-d', $start_date)->toDateTimeString(); // $end_date_string = Carbon::createFromFormat('Y-m-d', $end_date)->toDateTimeString(); // } else { // $start_date_string = Carbon::now()->toDateTimeString(); // $end_date_string = Carbon::now()->toDateTimeString(); // } $display = "Records details between " . streamline_date($start_date) . " and " . streamline_date($end_date); $results = $ward_results = []; if ($request->report_by == 1) { // report by ward if ($ward_id == "pharmacy") { $results = DB::table('requisitions') ->select('*')->whereNull('deleted_at') ->where('quotation_type_id', 1) ->whereRaw('FIND_IN_SET(' . $item_id . ',drug_id)') ->whereBetween('created_at', [$start_date, $end_date]) ->get(); $display = "Records details for Pharmacy between " . streamline_date($start_date) . " and " . streamline_date($end_date); } else { $ward_results = DB::table('ward_item_requests') ->select('*')->whereNull('deleted_at') ->where(['item_type' => $quotation_type_id, 'ward_id' => $ward_id]) ->whereRaw('FIND_IN_SET(' . $item_id . ',item_ids_issued_out)') ->whereBetween('created_at', [$start_date, $end_date]) ->get(); $display = "Records details for ".get_name($ward_id, "id", "name", "wards")." between " . streamline_date($start_date) . " and " . streamline_date($end_date); } } elseif ($request->report_by == 2) { //report by drugs $quotation_type_id = $item_type = 1; if ($ward_id == "pharmacy") { $results = DB::table('requisitions') ->select('*')->whereNull('deleted_at') ->where('quotation_type_id', $quotation_type_id) ->whereRaw('FIND_IN_SET(' . $item_id . ',drug_id)') ->whereBetween('created_at', [$start_date, $end_date]) ->get(); $display = "Records details for Pharmacy between " . streamline_date($start_date) . " and " . streamline_date($end_date); } else { $ward_results = DB::table('ward_item_requests') ->select('*')->whereNull('deleted_at') ->where(['item_type' => $quotation_type_id, 'ward_id' => $ward_id]) ->whereRaw('FIND_IN_SET(' . $item_id . ',item_ids_issued_out)') ->whereBetween('created_at', [$start_date, $end_date]) ->get(); $display = "Records details for ".get_name($ward_id, "id", "name", "wards")." between " . streamline_date($start_date) . " and " . streamline_date($end_date); } } elseif ($request->report_by == 3) { if ($ward_id == "pharmacy") { $results = DB::table('requisitions') ->select('*')->whereNull('deleted_at') ->where('quotation_type_id', 2) ->whereRaw('FIND_IN_SET(' . $item_id . ',drug_id)') ->whereBetween('created_at', [$start_date, $end_date]) ->get(); $display = "Records details for Pharmacy between " . streamline_date($start_date) . " and " . streamline_date($end_date); } else { $ward_results = DB::table('ward_item_requests') ->select('*')->whereNull('deleted_at') ->where(['item_type' => 2, 'ward_id' => $ward_id]) ->whereRaw('FIND_IN_SET(' . $item_id . ',item_ids_issued_out)') ->whereBetween('created_at', [$start_date, $end_date]) ->get(); $display = "Records details for ".get_name($ward_id, "id", "name", "wards")." between " . streamline_date($start_date) . " and " . streamline_date($end_date); } } return view('ward_management::wards_consumption.issued_items_drill_down', compact('start_date', 'end_date', 'wards', 'drugs', 'sundries', 'general_items', 'report_by', 'display', 'results', 'display', 'item_id', 'ward_results', 'item_type')); } }