mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-11 18:51:31 +00:00
89 lines
4.8 KiB
PHP
Executable File
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'));
|
|
}
|
|
}
|