mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-11 18:51:31 +00:00
An updated set of source files and initialization was provided by streamline to address issues observed during initial testing. These files have been updated in order to generate a new set of app images.
144 lines
8.3 KiB
PHP
Executable File
144 lines
8.3 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Streamline\Http\Controllers;
|
|
|
|
use Illuminate\Support\Facades\DB;
|
|
use Streamline\Models\InsuranceMember;
|
|
use Streamline\Models\MessageBoard;
|
|
use Streamline\Models\Patient;
|
|
use Streamline\Models\StreamlineSetupStep;
|
|
|
|
class HomeController extends Controller
|
|
{
|
|
/**
|
|
* Create a new controller instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->middleware('auth');
|
|
}
|
|
|
|
/**
|
|
* Show the application dashboard.
|
|
*
|
|
*/
|
|
public function index() {
|
|
/*
|
|
* -check if it is the first time of using this system then go through the the process of setting up else show the home page
|
|
*/
|
|
$setup_steps = StreamlineSetupStep::where('completion_status', 1)->orderBy('id')->get();
|
|
$last_setup_step = $setup_steps->last();
|
|
|
|
if (is_null($last_setup_step)){
|
|
session()->put(['streamline_setup' => 1]);
|
|
return redirect('hospital_information/create');
|
|
} elseif ($last_setup_step->step == "hospital registration") {
|
|
session()->put(['streamline_setup' => 1]);
|
|
return redirect('clinics/create');
|
|
} elseif ($last_setup_step->step == "clinics registration") {
|
|
session()->put(['streamline_setup' => 1]);
|
|
return redirect('wards/create');
|
|
} elseif ($last_setup_step->step == "wards registration") {
|
|
session()->put(['streamline_setup' => 1]);
|
|
return redirect('service_items/create');
|
|
} elseif ($last_setup_step->step == "services registration") {
|
|
session()->put(['streamline_setup' => 1]);
|
|
return redirect('investigations/create');
|
|
} elseif ($last_setup_step->step == "investigations registration") {
|
|
session()->put(['streamline_setup' => 1]);
|
|
return redirect('drugs/create');
|
|
} elseif ($last_setup_step->step == "drugs registration") {
|
|
session()->put(['streamline_setup' => 1]);
|
|
return redirect('procedures/create');
|
|
} elseif ($last_setup_step->step == "procedures registration") {
|
|
session()->put(['streamline_setup' => 1]);
|
|
return redirect('sundries/create');
|
|
} elseif ($last_setup_step->step == "general settings configuration") {
|
|
session()->forget('streamline_setup');
|
|
$messages = MessageBoard::orderBy('created_at', 'desc')->paginate(3);
|
|
return view('home', compact('messages'));
|
|
} else {
|
|
$messages = MessageBoard::orderBy('created_at', 'desc')->paginate(3);
|
|
return view('home', compact('messages'));
|
|
}
|
|
}
|
|
|
|
public function quick_analysis_reports()
|
|
{
|
|
$insurance_members_array = InsuranceMember::pluck('patient_id')->toArray();
|
|
|
|
$patient_registered_per_month_under_insurance = Patient::whereIn('id',$insurance_members_array)->whereBetween('created_at', ['2018-01-01', '2022-12-31'])->select(DB::raw('count(id) as `data`'),DB::raw("DATE_FORMAT(created_at, '%Y-%m') episodes_year_month"))
|
|
->groupBy('episodes_year_month')->orderBy('episodes_year_month')->get();
|
|
|
|
return $patient_registered_per_month_under_insurance;
|
|
|
|
/* set_time_limit(0);
|
|
$patient_visits_per_month = PatientEpisode::select(DB::raw('count(id) as `data`'),DB::raw("DATE_FORMAT(created_at, '%Y-%m') episodes_year_month"))
|
|
->groupBy('episodes_year_month')->orderBy('episodes_year_month')->get();
|
|
//return $patient_visits_per_month;
|
|
|
|
$patient_visits_per_month_for_insured = PatientEpisode::whereIn('patient_id',$insurance_members_array)->whereBetween('created_at', ['2019-01-01', '2022-12-31'])->select(DB::raw('count(id) as `data`'),DB::raw("DATE_FORMAT(created_at, '%Y-%m') episodes_year_month"))
|
|
->groupBy('episodes_year_month')->orderBy('episodes_year_month')->get();
|
|
|
|
|
|
foreach ($patient_visits_per_month_for_insured as $record) {
|
|
$year_month_array = explode("-", $record->episodes_year_month);
|
|
$families_array = [];
|
|
|
|
$per_month_records = PatientEpisode::whereIn('patient_id',$insurance_members_array)->whereYear('created_at', '=', $year_month_array[0])->whereMonth('created_at', '=', $year_month_array[1])->get();
|
|
|
|
foreach ($per_month_records as $single_record) {
|
|
$family_id = get_name($single_record->patient_id, 'patient_id', 'family_id', 'insurance_members');
|
|
if (!in_array($family_id, $families_array)) {
|
|
$families_array[] = $family_id;
|
|
}
|
|
}
|
|
$total[$record->episodes_year_month] = count($families_array);
|
|
}
|
|
//return $total;
|
|
|
|
|
|
//mode of co_payments
|
|
$service_deposits = DB::select("SELECT patient_amount_paid, occurs FROM (SELECT patient_amount_paid,count(*) as occurs FROM service_deposits WHERE patient_id IN(SELECT patient_id FROM insurance_members) AND patient_amount_paid != 0 AND items_ids != 'Inpatient_Deposit' GROUP BY `patient_amount_paid` LIMIT 1) T1 ");
|
|
|
|
$treatment_deposits = DB::select("SELECT patient_amount_paid, occurs FROM (SELECT patient_amount_paid,count(*) as occurs FROM treatment_deposits WHERE patient_id IN(SELECT patient_id FROM insurance_members) AND patient_amount_paid != 0 GROUP BY `patient_amount_paid` LIMIT 1) T1 ");
|
|
|
|
$investigation_deposits = DB::select("SELECT patient_amount_paid, occurs FROM (SELECT patient_amount_paid,count(*) as occurs FROM investigation_deposits WHERE patient_id IN(SELECT patient_id FROM insurance_members) AND patient_amount_paid != 0 GROUP BY `patient_amount_paid` LIMIT 1) T1 ");
|
|
|
|
$procedure_deposits = DB::select("SELECT patient_amount_paid, occurs FROM (SELECT patient_amount_paid,count(*) as occurs FROM procedure_deposits WHERE patient_id IN(SELECT patient_id FROM insurance_members) AND patient_amount_paid != 0 GROUP BY `patient_amount_paid` LIMIT 1) T1 ");
|
|
|
|
$sundry_deposits = DB::select("SELECT patient_amount_paid, occurs FROM (SELECT patient_amount_paid,count(*) as occurs FROM sundries_deposits WHERE patient_id IN(SELECT patient_id FROM insurance_members) AND patient_amount_paid != 0 GROUP BY `patient_amount_paid` LIMIT 1) T1 ");
|
|
|
|
return [$service_deposits, $treatment_deposits, $investigation_deposits, $procedure_deposits, $sundry_deposits];
|
|
|
|
|
|
//average co_payments
|
|
$service_deposits_average = DB::select("SELECT AVG(patient_amount_paid) as average_co_payment FROM service_deposits WHERE patient_id IN(SELECT patient_id FROM insurance_members) AND patient_amount_paid != 0 AND items_ids != 'Inpatient_Deposit' ");
|
|
$treatment_deposits_average = DB::select("SELECT AVG(patient_amount_paid) as average_co_payment FROM treatment_deposits WHERE patient_id IN(SELECT patient_id FROM insurance_members) AND patient_amount_paid != 0 ");
|
|
$investigation_deposits_average = DB::select("SELECT AVG(patient_amount_paid) as average_co_payment FROM investigation_deposits WHERE patient_id IN(SELECT patient_id FROM insurance_members) AND patient_amount_paid != 0 ");
|
|
$procedure_deposits_average = DB::select("SELECT AVG(patient_amount_paid) as average_co_payment FROM procedure_deposits WHERE patient_id IN(SELECT patient_id FROM insurance_members) AND patient_amount_paid != 0 ");
|
|
$sundries_deposits_average = DB::select("SELECT AVG(patient_amount_paid) as average_co_payment FROM sundries_deposits WHERE patient_id IN(SELECT patient_id FROM insurance_members) AND patient_amount_paid != 0 ");
|
|
|
|
return [$service_deposits_average,$treatment_deposits_average,$investigation_deposits_average,$procedure_deposits_average,$sundries_deposits_average];
|
|
|
|
//average family size stuff
|
|
$family_numbers = DB::select("SELECT family_id, occurs FROM (SELECT family_id,count(*) as occurs FROM insurance_members GROUP BY `family_id`) T1 ");
|
|
|
|
$number_of_occurances = [];
|
|
foreach ($family_numbers as $record) {
|
|
$number_of_occurances[] = $record->occurs;
|
|
}
|
|
|
|
$counts = array_count_values($number_of_occurances);
|
|
arsort($counts);
|
|
|
|
return $counts; */
|
|
|
|
//mode of co_payments percentages
|
|
$number_of_insured_patients_in_service_deposits = DB::select("SELECT id FROM service_deposits WHERE patient_id IN(SELECT patient_id FROM insurance_members) AND patient_amount_paid ='2000'");
|
|
return (count($number_of_insured_patients_in_service_deposits));
|
|
}
|
|
}
|