mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-12 03:01:32 +00:00
resolved conflicts
This commit is contained in:
@@ -0,0 +1,249 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Insurance\Http\Controllers;
|
||||
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Streamline\Models\InsuranceBenefit;
|
||||
use Streamline\Models\InsuranceTariff;
|
||||
|
||||
class InsuranceTariffsController extends Controller {
|
||||
|
||||
public function add_tariff($benefit_id, $item_id, $item_type) {
|
||||
$benefit = InsuranceBenefit::find($benefit_id);
|
||||
$item = false;
|
||||
|
||||
switch ($item_type) {
|
||||
case 1:
|
||||
$item = DB::table('services')->where('id', $item_id)->first();
|
||||
break;
|
||||
case 2:
|
||||
$item = DB::table('procedures')->where('id', $item_id)->first();
|
||||
break;
|
||||
case 3:
|
||||
$item = DB::table('investigations')->where('id', $item_id)->first();
|
||||
break;
|
||||
case 4:
|
||||
$item = DB::table('drugs')->where('id', $item_id)->first();
|
||||
break;
|
||||
case 5:
|
||||
$item = DB::table('sundries')->where('id', $item_id)->first();
|
||||
break;
|
||||
}
|
||||
|
||||
$item_details = get_item_insurance_details($item_id, $item_type, $benefit_id);
|
||||
|
||||
$item_name = $item ? $item->name : '';
|
||||
$item_cash_price = $item ? $item->non_insured_price : 0;
|
||||
$co_payment = $item_details ? $item_details['co_payment'] : 0;
|
||||
$ipd_co_payment = $item_details ? ($item_details['ipd_co_payment'] ?? 0) : 0;
|
||||
|
||||
return view('insurance::insurance_tariffs.add_tariff', compact('benefit', 'item_type', 'item_name', 'item_id', 'item_cash_price', 'co_payment', 'ipd_co_payment'));
|
||||
}
|
||||
|
||||
public function save_tariff(Request $request) {
|
||||
request()->validate([
|
||||
'age_limit_start' => 'nullable|required_with:age_limit_end|integer',
|
||||
'age_limit_end' =>'bail|nullable|required_with:age_limit_start|integer'
|
||||
]);
|
||||
|
||||
$tariff = new InsuranceTariff();
|
||||
$tariff->benefit_id = $request->benefit_id;
|
||||
$tariff->plan_id = get_name($request->benefit_id, 'id', 'plan_id', 'insurance_benefits');
|
||||
$tariff->item_id = $request->item_id;
|
||||
$tariff->item_type = $request->item_type;
|
||||
$tariff->name = $request->tariff_name;
|
||||
$tariff->age_limit = $request->age_limit_start . ',' . $request->age_limit_end;
|
||||
$tariff->age_type = $request->age_type;
|
||||
$tariff->gender = $request->gender;
|
||||
$tariff->authorisation_required = $request->authorisation;
|
||||
$tariff->tariff_price = $request->tariff_price;
|
||||
$tariff->ipd_tariff_price = $request->ipd_tariff_price;
|
||||
$tariff->created_by = Auth::id();
|
||||
|
||||
try {
|
||||
$tariff->save();
|
||||
flash("Tariff has been added to the item")->success();
|
||||
return redirect('/insurance_benefits/view_items/' . $request->benefit_id . '/' . $request->item_type);
|
||||
} catch (\Exception $e) {
|
||||
flash("An error occurred. Please try again later")->error();
|
||||
return back()->withInput();
|
||||
}
|
||||
}
|
||||
|
||||
public function get_item_tariffs($benefit_id, $item_id, $item_type) {
|
||||
$tariffs = InsuranceTariff::where('benefit_id', $benefit_id)
|
||||
->where('item_id', $item_id)->where('item_type', $item_type)->get();
|
||||
$time_periods = [0 => 'Days', 1 => 'Months', 2 => 'Years'];
|
||||
$genders = [0 => 'All', 1 => 'Male', 2 => 'Female'];
|
||||
|
||||
if (count($tariffs) > 0) {
|
||||
$return_code = "<table class='table table-striped color-bordered-table success-bordered-table'>";
|
||||
$return_code .= "<thead><tr><th>" . __('insurance_benefits.tariff_name') . "</th>";
|
||||
$return_code .= "<th>" . __('insurance_benefits.gender') . "</th><th>" . __('insurance_benefits.age_limit') . "</th>";
|
||||
$return_code .= "<th>" . __('insurance_benefits.tariff_price') . "</th><th>" . __('insurance_benefits.ipd_tariff_price') . "</th><th>" . __('insurance_benefits.authorisation') . "</th>";
|
||||
$return_code .= "<th></th><th></th></tr></thead>";
|
||||
$return_code .= "</thead>";
|
||||
$return_code .= "<tbody>";
|
||||
|
||||
foreach ($tariffs as $tariff) {
|
||||
$age_limits = explode(",", $tariff->age_limit);
|
||||
$return_code .= "<tr>";
|
||||
$return_code .= "<td>" . $tariff->name . "</td>";
|
||||
$return_code .= "<td>" . ($genders[$tariff->gender] ?? 'All') . "</td>";
|
||||
$return_code .= "<td>" . ($age_limits[0] ?? "0") . ' to ' . ($age_limits[1] ?? "0") . ' ' . $time_periods[$tariff->age_type] ?? 'years' . "</td>";
|
||||
$return_code .= "<td>" . ugandan_shillings($tariff->tariff_price) . "</td>";
|
||||
$return_code .= "<td>" . ugandan_shillings($tariff->ipd_tariff_price) . "</td>";
|
||||
$return_code .= "<td>" . ($tariff->authorisation == 1 ? 'Yes' : 'No') . "</td>";
|
||||
$return_code .= "<td>" . (Auth::user()->can('insurance-tariffs-edit') ? "<a href='/insurance_tariffs/edit/" . $tariff->id . "' class='btn btn-success btn-sm btn-rounded'>Edit</a>" : "") . "</td>";
|
||||
$return_code .= "<td>" . (Auth::user()->can('insurance-tariffs-delete') ? "<a href='/insurance_tariffs/delete/" . $tariff->id . "' class='btn btn-danger btn-sm btn-rounded' onclick='return confirm(\"Are you sure?\")'>Deactivate</a>" : "") . "</td>";
|
||||
$return_code .= "</tr>";
|
||||
}
|
||||
$return_code .= "</tbody>";
|
||||
|
||||
$return_code .= "</table>";
|
||||
|
||||
return $return_code;
|
||||
} else {
|
||||
return "<h3 class='text-center'><code>No tariffs registered for this item</code></h3>";
|
||||
}
|
||||
}
|
||||
|
||||
public function edit($id) {
|
||||
$tariff = InsuranceTariff::find($id);
|
||||
$benefit = InsuranceBenefit::find($tariff->benefit_id);
|
||||
$item_id = $tariff->item_id;
|
||||
$item_type = $tariff->item_type;
|
||||
$item = false;
|
||||
|
||||
switch ($item_type) {
|
||||
case 1:
|
||||
$item = DB::table('services')->where('id', $item_id)->first();
|
||||
break;
|
||||
case 2:
|
||||
$item = DB::table('procedures')->where('id', $item_id)->first();
|
||||
break;
|
||||
case 3:
|
||||
$item = DB::table('investigations')->where('id', $item_id)->first();
|
||||
break;
|
||||
case 4:
|
||||
$item = DB::table('drugs')->where('id', $item_id)->first();
|
||||
break;
|
||||
case 5:
|
||||
$item = DB::table('sundries')->where('id', $item_id)->first();
|
||||
break;
|
||||
}
|
||||
|
||||
$item_details = get_item_insurance_details($item_id, $item_type, $tariff->benefit_id);
|
||||
|
||||
$item_name = $item ? $item->name : '';
|
||||
$item_cash_price = $item ? $item->non_insured_price : 0;
|
||||
$co_payment = $item_details ? $item_details['co_payment'] : 0;
|
||||
$ipd_co_payment = $item_details ? ($item_details['ipd_co_payment'] ?? 0) : 0;
|
||||
|
||||
return view('insurance::insurance_tariffs.edit', compact('tariff', 'benefit', 'item_type', 'item_name', 'item_id', 'co_payment', 'item_cash_price', 'ipd_co_payment'));
|
||||
}
|
||||
|
||||
public function update_tariff(Request $request) {
|
||||
request()->validate([
|
||||
'age_limit_start' => 'nullable|required_with:age_limit_end|integer',
|
||||
'age_limit_end' =>'bail|nullable|required_with:age_limit_start|integer'
|
||||
]);
|
||||
$tariff = InsuranceTariff::find($request->tariff_id);
|
||||
|
||||
$tariff->name = $request->name;
|
||||
$tariff->age_limit = $request->age_limit_start . ',' . $request->age_limit_end;
|
||||
$tariff->age_type = $request->age_type;
|
||||
$tariff->gender = $request->gender;
|
||||
$tariff->authorisation_required = $request->authorisation;
|
||||
$tariff->tariff_price = $request->tariff_price;
|
||||
$tariff->ipd_tariff_price = $request->ipd_tariff_price;
|
||||
$tariff->updated_by = Auth::id();
|
||||
|
||||
try {
|
||||
$tariff->save();
|
||||
flash("Tariff has been edited")->success();
|
||||
return redirect('/insurance_benefits/view_items/' . $tariff->benefit_id . '/' . $tariff->item_type);
|
||||
} catch (\Exception $e) {
|
||||
flash("An error occurred. Please try again later")->error();
|
||||
return back()->withInput();
|
||||
}
|
||||
}
|
||||
|
||||
public function delete($id) {
|
||||
$tariff = InsuranceTariff::find($id);
|
||||
|
||||
try {
|
||||
$tariff->delete();
|
||||
flash("Insurance Tariff has been deactivated")->success();
|
||||
return redirect("/insurance_benefits/");
|
||||
} catch (QueryException $e) {
|
||||
flash("An error occurred. Please try again later")->error();
|
||||
return back()->withInput();
|
||||
}
|
||||
}
|
||||
|
||||
public function view_tariffs(Request $request) {
|
||||
$filters = [];
|
||||
$search_text = '';
|
||||
|
||||
$services = DB::table('services')->whereNull('deleted_at')->pluck('name', 'id');
|
||||
$procedures = DB::table('procedures')->whereNull('deleted_at')->pluck('name', 'id');
|
||||
$investigations = DB::table('investigations')->whereNull('deleted_at')->pluck('name', 'id');
|
||||
$drugs = DB::table('drugs')->where('available', 1)->whereNull('deleted_at')->pluck('name', 'id');
|
||||
$sundries = DB::table('sundries')->whereNull('deleted_at')->pluck('name', 'id');
|
||||
$insurance_benefits = DB::table('insurance_benefits')->whereNull('deleted_at')->pluck('name', 'id')->toArray();
|
||||
$insurance_benefits = ['' => '-- select --'] + $insurance_benefits;
|
||||
$insurance_plans = DB::table('community_health_insurance_plans')->whereNull('deleted_at')->pluck('name', 'id')->toArray();
|
||||
$insurance_plans = ['' => '-- select --'] + $insurance_plans;
|
||||
|
||||
if (!is_null($request->insurance_benefit) && is_numeric($request->insurance_benefit)) {
|
||||
$filters[] = ['benefit_id', '=', $request->insurance_benefit];
|
||||
$search_text = "Insurance Benefit: " . $insurance_benefits[$request->insurance_benefit] . " ";
|
||||
}
|
||||
|
||||
if (!is_null($request->insurance_plan) && is_numeric($request->insurance_plan)) {
|
||||
$filters[] = ['plan_id', '=', $request->insurance_plan];
|
||||
$search_text = "Insurance Plan: " . $insurance_plans[$request->insurance_plan];
|
||||
}
|
||||
|
||||
$tariffs = InsuranceTariff::where($filters)->get();
|
||||
|
||||
return view('insurance::insurance_tariffs.view_tariffs', compact('tariffs', 'services', 'procedures', 'investigations', 'drugs', 'sundries', 'insurance_benefits', 'insurance_plans', 'search_text'));
|
||||
}
|
||||
|
||||
public function view_inactive_tariffs() {
|
||||
$services = DB::table('services')->whereNull('deleted_at')->pluck('name', 'id');
|
||||
$procedures = DB::table('procedures')->whereNull('deleted_at')->pluck('name', 'id');
|
||||
$investigations = DB::table('investigations')->whereNull('deleted_at')->pluck('name', 'id');
|
||||
$drugs = DB::table('drugs')->where('available', 1)->whereNull('deleted_at')->pluck('name', 'id');
|
||||
$sundries = DB::table('sundries')->whereNull('deleted_at')->pluck('name', 'id');
|
||||
$insurance_benefits = DB::table('insurance_benefits')->whereNull('deleted_at')->pluck('name', 'id')->toArray();
|
||||
$insurance_benefits = ['' => '-- select --'] + $insurance_benefits;
|
||||
$insurance_plans = DB::table('community_health_insurance_plans')->whereNull('deleted_at')->pluck('name', 'id')->toArray();
|
||||
$insurance_plans = ['' => '-- select --'] + $insurance_plans;
|
||||
|
||||
$tariffs = InsuranceTariff::onlyTrashed()->get();
|
||||
|
||||
if (count($tariffs) < 1) {
|
||||
flash()->error("There is no inactive tariffs");
|
||||
return redirect('/insurance_tariffs/view_tariffs');
|
||||
} else {
|
||||
return view('insurance::insurance_tariffs.view_inactive_tariffs', compact('tariffs', 'services', 'procedures', 'investigations', 'drugs', 'sundries', 'insurance_benefits', 'insurance_plans'));
|
||||
}
|
||||
}
|
||||
|
||||
public function activate_tariff($id) {
|
||||
$tariff = InsuranceTariff::withTrashed()->find($id);
|
||||
|
||||
if($tariff->restore()){
|
||||
flash("Insurance tariff has been activated.")->success();
|
||||
} else {
|
||||
flash("An error occurred. Please try again later")->error();
|
||||
}
|
||||
|
||||
return redirect('/insurance_tariffs/view_tariffs');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user