Files
streamline-emr/docker/streamline-src/Modules/WardManagement/Http/Controllers/InpatientBillsController.php

89 lines
4.8 KiB
PHP
Executable File

<?php
namespace Modules\WardManagement\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Streamline\Models\InpatientInfo;
use Carbon\Carbon;
use Streamline\Models\Ward;
class InpatientBillsController extends Controller {
public function __construct() {
$this->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'));
}
}