mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-11 18:51:31 +00:00
1082 lines
61 KiB
PHP
Executable File
1082 lines
61 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Modules\EyeClinic\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Carbon;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Streamline\Models\Clinic;
|
|
use Streamline\Models\Diagnosis;
|
|
use Streamline\Models\DiagnosisCategory;
|
|
use Streamline\Models\EyeClinicAdditionalTests;
|
|
use Streamline\Models\EyeClinicBaseExamRefraction;
|
|
use Streamline\Models\EyeClinicMainExam;
|
|
use Streamline\Models\InpatientInfo;
|
|
use Streamline\Models\InvestigationResults;
|
|
use Streamline\Models\OrderedEyeGlasses;
|
|
use Streamline\Models\OrderedInvestigation;
|
|
use Streamline\Models\OrderedProcedure;
|
|
use Streamline\Models\OrderedSundry;
|
|
use Streamline\Models\PatientAppointment;
|
|
use Streamline\Models\PatientDocument;
|
|
use Streamline\Models\PatientEpisode;
|
|
use Streamline\Models\SlitLampTestArea;
|
|
use Streamline\Models\SlitLampTestAreaValue;
|
|
use Streamline\Models\Strabismus;
|
|
use Streamline\Models\Patient;
|
|
use Streamline\Models\Treatment;
|
|
use Streamline\Models\Triage;
|
|
use Streamline\Models\User;
|
|
|
|
class EyeClinicController extends Controller {
|
|
|
|
public function index(){}
|
|
|
|
public function main_exam_route() {
|
|
|
|
$patient_id = session()->get('patient_id');
|
|
$episode_id = session()->get('episode_id');
|
|
|
|
$main_exam = EyeClinicMainExam::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->first();
|
|
|
|
if (is_null($main_exam)){
|
|
return self::create_main_exam();
|
|
}
|
|
|
|
switch ($main_exam->completed) {
|
|
case '0': // Pending
|
|
return self::edit_main_exam($main_exam->id);
|
|
|
|
case '1': // Completed
|
|
return self::show_main_exam($main_exam->id);
|
|
|
|
default: // Not created yet
|
|
return self::create_main_exam();
|
|
}
|
|
}
|
|
|
|
public function base_exam_refraction(){
|
|
$patient_id = session()->get('patient_id');
|
|
$episode_id = session()->get('episode_id');
|
|
$patient = Patient::where(['id' => $patient_id])->first();
|
|
|
|
// formulate the CVF dropdown
|
|
$visual_acuity_distance = array("0" => "--Select--","6/4" => "6/4","6/5" => "6/5","6/6" => "6/6","6/9" => "6/9","6/12" => "6/12","6/18" => "6/18","6/24" => "6/24","6/36" => "6/36","6/60" => "6/60","5/60" => "5/60","4/60" => "4/60","3/60" => "3/60","2/60" => "2/60","1/60" => "1/60","HM" => "HM","PL" => "PL","NPL" => "NPL");
|
|
$visual_acuity_near = array("0" => "--Select--","N4" => "N4","N5" => "N5","N6" => "N6","N7" => "N7","N8" => "N8","N9" => "N9","N10" => "N10","N11" => "N11");
|
|
$cvf = array("0" => "--Select--","Sector A" => "Sector A","Sector B" => "Sector B","Sector C" => "Sector C","Sector D" => "Sector D","Sector E" => "Sector E","Sector F" => "Sector F","Sector H" => "Sector H","Sector G" => "Sector G");
|
|
|
|
// check if there is a previous exam
|
|
$base_exam = EyeClinicBaseExamRefraction::where(['episode_id' => $episode_id])->first();
|
|
if ($base_exam){
|
|
return view('eye_clinic::eye_clinic.base_exam_refraction_details', compact('patient', 'base_exam'));
|
|
} else {
|
|
return view('eye_clinic::eye_clinic.base_exam_refraction', compact('patient', 'cvf', 'visual_acuity_distance', 'visual_acuity_near'));
|
|
}
|
|
}
|
|
|
|
public function edit_base_exam_refraction(){
|
|
$patient_id = session()->get('patient_id');
|
|
$episode_id = session()->get('episode_id');
|
|
$patient = Patient::where(['id' => $patient_id])->first();
|
|
|
|
// formulate the CVF dropdown
|
|
$visual_acuity_distance = array("0" => "--Select--","6/4" => "6/4","6/5" => "6/5","6/6" => "6/6","6/9" => "6/9","6/12" => "6/12","6/18" => "6/18","6/24" => "6/24","6/36" => "6/36","6/60" => "6/60","5/60" => "5/60","4/60" => "4/60","3/60" => "3/60","2/60" => "2/60","1/60" => "1/60","HM" => "HM","PL" => "PL","NPL" => "NPL");
|
|
$visual_acuity_near = array("0" => "--Select--","N4" => "N4","N5" => "N5","N6" => "N6","N7" => "N7","N8" => "N8","N9" => "N9","N10" => "N10","N11" => "N11");
|
|
$cvf = array("0" => "--Select--","Sector A" => "Sector A","Sector B" => "Sector B","Sector C" => "Sector C","Sector D" => "Sector D","Sector E" => "Sector E","Sector F" => "Sector F","Sector H" => "Sector H","Sector G" => "Sector G");
|
|
|
|
// check if there is a previous exam
|
|
$base_exam = EyeClinicBaseExamRefraction::where(['episode_id' => $episode_id])->first();
|
|
|
|
return view('eye_clinic::eye_clinic.edit_base_exam_refraction', compact('patient', 'cvf', 'visual_acuity_distance', 'visual_acuity_near', 'base_exam'));
|
|
}
|
|
|
|
public function save_base_exam_refraction(Request $request){
|
|
$base_exam = new EyeClinicBaseExamRefraction;
|
|
|
|
$patient_id = session()->get('patient_id');
|
|
$episode_id = session()->get('episode_id');
|
|
|
|
$base_exam->patient_id = $patient_id;
|
|
$base_exam->episode_id = $episode_id;
|
|
$base_exam->neuro_oriented = isset($request->neuro_oriented) ? 1 : 0;
|
|
$base_exam->neuro_mood = $request->neuro_mood;
|
|
$base_exam->pupils_perrl = isset($request->pupils_perrl) ? 1 : 0;
|
|
$base_exam->pupils_right_dark = $request->pupils_right_dark;
|
|
$base_exam->pupils_right_light = $request->pupils_right_light;
|
|
$base_exam->pupils_right_shape = $request->pupils_right_shape;
|
|
$base_exam->pupils_right_react = $request->pupils_right_react;
|
|
$base_exam->pupils_right_apd = $request->pupils_right_apd;
|
|
$base_exam->pupils_left_dark = $request->pupils_left_dark;
|
|
$base_exam->pupils_left_light = $request->pupils_left_light;
|
|
$base_exam->pupils_left_shape = $request->pupils_left_shape;
|
|
$base_exam->pupils_left_react = $request->pupils_left_react;
|
|
$base_exam->pupils_left_apd = $request->pupils_left_apd;
|
|
$base_exam->visual_acuity_method = $request->visual_acuity_method;
|
|
$base_exam->visual_acuity_distance_sc_right = $request->visual_acuity_distance_sc_right;
|
|
$base_exam->visual_acuity_distance_sc_right_scale = $request->visual_acuity_distance_sc_right_scale;
|
|
$base_exam->visual_acuity_distance_sc_left = $request->visual_acuity_distance_sc_left;
|
|
$base_exam->visual_acuity_distance_sc_left_scale = $request->visual_acuity_distance_sc_left_scale;
|
|
$base_exam->visual_acuity_distance_cc_right = $request->visual_acuity_distance_cc_right;
|
|
$base_exam->visual_acuity_distance_cc_right_scale = $request->visual_acuity_distance_cc_right_scale;
|
|
$base_exam->visual_acuity_distance_cc_left = $request->visual_acuity_distance_cc_left;
|
|
$base_exam->visual_acuity_distance_cc_left_scale = $request->visual_acuity_distance_cc_left_scale;
|
|
$base_exam->visual_acuity_distance_ph_right = $request->visual_acuity_distance_ph_right;
|
|
$base_exam->visual_acuity_distance_ph_right_scale = $request->visual_acuity_distance_ph_right_scale;
|
|
$base_exam->visual_acuity_distance_ph_left = $request->visual_acuity_distance_ph_left;
|
|
$base_exam->visual_acuity_distance_ph_left_scale = $request->visual_acuity_distance_ph_left_scale;
|
|
$base_exam->visual_acuity_near_sc_right = $request->visual_acuity_near_sc_right;
|
|
$base_exam->visual_acuity_near_sc_right_scale = $request->visual_acuity_near_sc_right_scale;
|
|
$base_exam->visual_acuity_near_sc_left = $request->visual_acuity_near_sc_left;
|
|
$base_exam->visual_acuity_near_sc_left_scale = $request->visual_acuity_near_sc_left_scale;
|
|
$base_exam->visual_acuity_near_cc_right = $request->visual_acuity_near_cc_right;
|
|
$base_exam->visual_acuity_near_cc_right_scale = $request->visual_acuity_near_cc_right_scale;
|
|
$base_exam->visual_acuity_near_cc_left = $request->visual_acuity_near_cc_left;
|
|
$base_exam->visual_acuity_near_cc_left_scale = $request->visual_acuity_near_cc_left_scale;
|
|
$base_exam->manifest_retinoscope = 1;
|
|
$base_exam->manifest_autorefractor = 1;
|
|
|
|
//autorefrator
|
|
$base_exam->manifest_auto_right_sphere = $request->manifest_auto_right_sphere;
|
|
$base_exam->manifest_auto_right_cylinder = $request->manifest_auto_right_cylinder;
|
|
$base_exam->manifest_auto_right_axis = $request->manifest_auto_right_axis;
|
|
$base_exam->manifest_auto_left_sphere = $request->manifest_auto_left_sphere;
|
|
$base_exam->manifest_auto_left_cylinder = $request->manifest_auto_left_cylinder;
|
|
$base_exam->manifest_auto_left_axis = $request->manifest_auto_left_axis;
|
|
|
|
//retinoscope
|
|
$base_exam->manifest_ret_right_sphere = $request->manifest_ret_right_sphere;
|
|
$base_exam->manifest_ret_right_cylinder = $request->manifest_ret_right_cylinder;
|
|
$base_exam->manifest_ret_right_axis = $request->manifest_ret_right_axis;
|
|
$base_exam->manifest_ret_left_sphere = $request->manifest_ret_left_sphere;
|
|
$base_exam->manifest_ret_left_cylinder = $request->manifest_ret_left_cylinder;
|
|
$base_exam->manifest_ret_left_axis = $request->manifest_ret_left_axis;
|
|
|
|
$base_exam->keratometry_k1_left = $request->keratometry_k1_left;
|
|
$base_exam->keratometry_k2_left = $request->keratometry_k2_left;
|
|
$base_exam->keratometry_axis_left = $request->keratometry_axis_left;
|
|
$base_exam->keratometry_k1_right = $request->keratometry_k1_right;
|
|
$base_exam->keratometry_k2_right = $request->keratometry_k2_right;
|
|
$base_exam->keratometry_axis_right = $request->keratometry_axis_right;
|
|
$base_exam->subjective_left_sphere = $request->subjective_left_sphere;
|
|
$base_exam->subjective_right_sphere = $request->subjective_right_sphere;
|
|
$base_exam->subjective_left_cylinder = $request->subjective_left_cylinder;
|
|
$base_exam->subjective_right_cylinder = $request->subjective_right_cylinder;
|
|
$base_exam->subjective_left_axis = $request->subjective_left_axis;
|
|
$base_exam->subjective_right_axis = $request->subjective_right_axis;
|
|
$base_exam->best_left_vision = $request->best_left_vision;
|
|
$base_exam->best_right_vision = $request->best_right_vision;
|
|
$base_exam->added_values = $request->added_values;
|
|
$base_exam->comment = $request->comment;
|
|
|
|
$base_exam->pd_right_eye = $request->pd_right_eye;
|
|
$base_exam->pd_left_eye = $request->pd_left_eye;
|
|
|
|
|
|
$base_exam->created_by = Auth::id();
|
|
|
|
if ($base_exam->save()){
|
|
flash("Eye clinic base exam refraction details saved successfully")->success();
|
|
return redirect("/patient_episodes");
|
|
} else {
|
|
flash("Something went wrong. Please try again.")->error();
|
|
return back()->withInput();
|
|
}
|
|
}
|
|
|
|
public function update_base_exam_refraction($id, Request $request){
|
|
$base_exam = EyeClinicBaseExamRefraction::find($id);
|
|
|
|
$patient_id = session()->get('patient_id');
|
|
$episode_id = session()->get('episode_id');
|
|
|
|
$base_exam->patient_id = $patient_id;
|
|
$base_exam->episode_id = $episode_id;
|
|
$base_exam->neuro_oriented = isset($request->neuro_oriented) ? 1 : 0;
|
|
$base_exam->neuro_mood = $request->neuro_mood;
|
|
$base_exam->pupils_perrl = isset($request->pupils_perrl) ? 1 : 0;
|
|
$base_exam->pupils_right_dark = $request->pupils_right_dark;
|
|
$base_exam->pupils_right_light = $request->pupils_right_light;
|
|
$base_exam->pupils_right_shape = $request->pupils_right_shape;
|
|
$base_exam->pupils_right_react = $request->pupils_right_react;
|
|
$base_exam->pupils_right_apd = $request->pupils_right_apd;
|
|
$base_exam->pupils_left_dark = $request->pupils_left_dark;
|
|
$base_exam->pupils_left_light = $request->pupils_left_light;
|
|
$base_exam->pupils_left_shape = $request->pupils_left_shape;
|
|
$base_exam->pupils_left_react = $request->pupils_left_react;
|
|
$base_exam->pupils_left_apd = $request->pupils_left_apd;
|
|
$base_exam->visual_acuity_method = $request->visual_acuity_method;
|
|
$base_exam->visual_acuity_distance_sc_right = $request->visual_acuity_distance_sc_right;
|
|
$base_exam->visual_acuity_distance_sc_right_scale = $request->visual_acuity_distance_sc_right_scale;
|
|
$base_exam->visual_acuity_distance_sc_left = $request->visual_acuity_distance_sc_left;
|
|
$base_exam->visual_acuity_distance_sc_left_scale = $request->visual_acuity_distance_sc_left_scale;
|
|
$base_exam->visual_acuity_distance_cc_right = $request->visual_acuity_distance_cc_right;
|
|
$base_exam->visual_acuity_distance_cc_right_scale = $request->visual_acuity_distance_cc_right_scale;
|
|
$base_exam->visual_acuity_distance_cc_left = $request->visual_acuity_distance_cc_left;
|
|
$base_exam->visual_acuity_distance_cc_left_scale = $request->visual_acuity_distance_cc_left_scale;
|
|
$base_exam->visual_acuity_distance_ph_right = $request->visual_acuity_distance_ph_right;
|
|
$base_exam->visual_acuity_distance_ph_right_scale = $request->visual_acuity_distance_ph_right_scale;
|
|
$base_exam->visual_acuity_distance_ph_left = $request->visual_acuity_distance_ph_left;
|
|
$base_exam->visual_acuity_distance_ph_left_scale = $request->visual_acuity_distance_ph_left_scale;
|
|
$base_exam->visual_acuity_near_sc_right = $request->visual_acuity_near_sc_right;
|
|
$base_exam->visual_acuity_near_sc_right_scale = $request->visual_acuity_near_sc_right_scale;
|
|
$base_exam->visual_acuity_near_sc_left = $request->visual_acuity_near_sc_left;
|
|
$base_exam->visual_acuity_near_sc_left_scale = $request->visual_acuity_near_sc_left_scale;
|
|
$base_exam->visual_acuity_near_cc_right = $request->visual_acuity_near_cc_right;
|
|
$base_exam->visual_acuity_near_cc_right_scale = $request->visual_acuity_near_cc_right_scale;
|
|
$base_exam->visual_acuity_near_cc_left = $request->visual_acuity_near_cc_left;
|
|
$base_exam->visual_acuity_near_cc_left_scale = $request->visual_acuity_near_cc_left_scale;
|
|
$base_exam->manifest_retinoscope = 1;
|
|
$base_exam->manifest_autorefractor = 1;
|
|
|
|
//autorefrator
|
|
$base_exam->manifest_auto_right_sphere = $request->manifest_auto_right_sphere;
|
|
$base_exam->manifest_auto_right_cylinder = $request->manifest_auto_right_cylinder;
|
|
$base_exam->manifest_auto_right_axis = $request->manifest_auto_right_axis;
|
|
$base_exam->manifest_auto_left_sphere = $request->manifest_auto_left_sphere;
|
|
$base_exam->manifest_auto_left_cylinder = $request->manifest_auto_left_cylinder;
|
|
$base_exam->manifest_auto_left_axis = $request->manifest_auto_left_axis;
|
|
|
|
//retinoscope
|
|
$base_exam->manifest_ret_right_sphere = $request->manifest_ret_right_sphere;
|
|
$base_exam->manifest_ret_right_cylinder = $request->manifest_ret_right_cylinder;
|
|
$base_exam->manifest_ret_right_axis = $request->manifest_ret_right_axis;
|
|
$base_exam->manifest_ret_left_sphere = $request->manifest_ret_left_sphere;
|
|
$base_exam->manifest_ret_left_cylinder = $request->manifest_ret_left_cylinder;
|
|
$base_exam->manifest_ret_left_axis = $request->manifest_ret_left_axis;
|
|
|
|
$base_exam->keratometry_k1_left = $request->keratometry_k1_left;
|
|
$base_exam->keratometry_k2_left = $request->keratometry_k2_left;
|
|
$base_exam->keratometry_axis_left = $request->keratometry_axis_left;
|
|
$base_exam->keratometry_k1_right = $request->keratometry_k1_right;
|
|
$base_exam->keratometry_k2_right = $request->keratometry_k2_right;
|
|
$base_exam->keratometry_axis_right = $request->keratometry_axis_right;
|
|
$base_exam->subjective_left_sphere = $request->subjective_left_sphere;
|
|
$base_exam->subjective_right_sphere = $request->subjective_right_sphere;
|
|
$base_exam->subjective_left_cylinder = $request->subjective_left_cylinder;
|
|
$base_exam->subjective_right_cylinder = $request->subjective_right_cylinder;
|
|
$base_exam->subjective_left_axis = $request->subjective_left_axis;
|
|
$base_exam->subjective_right_axis = $request->subjective_right_axis;
|
|
$base_exam->best_left_vision = $request->best_left_vision;
|
|
$base_exam->best_right_vision = $request->best_right_vision;
|
|
$base_exam->added_values = $request->added_values;
|
|
$base_exam->comment = $request->comment;
|
|
|
|
$base_exam->pd_right_eye = $request->pd_right_eye;
|
|
$base_exam->pd_left_eye = $request->pd_left_eye;
|
|
|
|
|
|
$base_exam->created_by = Auth::id();
|
|
|
|
if ($base_exam->save()){
|
|
flash("Eye clinic base exam refraction details Updated successfully")->info();
|
|
return redirect("/patient_episodes");
|
|
} else {
|
|
flash("Something went wrong. Please try again.")->error();
|
|
return back()->withInput();
|
|
}
|
|
}
|
|
|
|
public function create_main_exam(){
|
|
$clinics = Clinic::orderBy('name')->pluck("name", "id")->toArray();
|
|
$clinics = array_prepend($clinics, "Don't assign clinic", '0');
|
|
$users = User::orderBy('first_name')->select("id", "first_name", "last_name")->get();
|
|
|
|
$patient_id = session()->get('patient_id');
|
|
$episode_id = session()->get('episode_id');
|
|
$patient = Patient::where(['id' => $patient_id])->first();
|
|
$diagnoses = Diagnosis::orderBy('name')->pluck("name", "id")->prepend('- select -', '');
|
|
$diagnosis_categories = DiagnosisCategory::all();
|
|
$documents = PatientDocument::where('patient_id', $patient_id)->where('episode_id', $episode_id)->orderBy('created_at', 'desc')->get();
|
|
|
|
$outcomes = DB::table('outcomes')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$wards = DB::table('wards')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$referrals = DB::table('referral_hospitals')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
|
|
$slit_lamp_test_areas = SlitLampTestArea::get();
|
|
$slit_lamp_test_area_values = SlitLampTestAreaValue::get();
|
|
|
|
$treatment = Treatment::where(['patient_id'=>$patient_id,'episode_id'=>$episode_id,'tta'=>0])->first();
|
|
/* get ordered procedures */
|
|
$ordered_procedures = OrderedProcedure::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->get();
|
|
//check for ordered investigations,procedures and treatment
|
|
$ordered_investigations = OrderedInvestigation::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->get();
|
|
//check for investigation results
|
|
$investigation_results = InvestigationResults::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->get();
|
|
/* get ordered sundries */
|
|
$ordered_sundries = OrderedSundry::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->get();
|
|
//check for authenticated investigations
|
|
$ordered_eye_glasses = OrderedEyeGlasses::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->get();
|
|
|
|
// check if there is a previous exam
|
|
$main_exam = EyeClinicMainExam::where(['episode_id' => $episode_id])->first();
|
|
$base_exam = EyeClinicBaseExamRefraction::where(['episode_id' => $episode_id])->first();
|
|
$users_collection = DB::table('users')->orderBy("first_name","asc")->select("id")->get()->toArray();
|
|
$users_array = [];
|
|
foreach ($users_collection as $value){
|
|
$user = User::find($value->id);
|
|
if (!is_null($user)) {
|
|
$users_array[$value->id] = get_full_name($value->id, 'id', 'first_name', 'last_name', 'users');
|
|
}
|
|
}
|
|
$users_array = ['' => '- select -'] + $users_array;
|
|
|
|
return view('eye_clinic::eye_clinic.main_exam', compact('patient', 'base_exam', 'diagnoses', 'outcomes', 'wards', 'referrals','users_array',
|
|
'ordered_investigations', 'ordered_sundries', 'ordered_procedures', 'ordered_eye_glasses', 'treatment', 'slit_lamp_test_areas', 'slit_lamp_test_area_values',
|
|
'investigation_results', 'diagnosis_categories', 'patient_id', 'documents', 'clinics', 'users'));
|
|
|
|
}
|
|
|
|
public function show_main_exam($id){
|
|
$patient_id = session()->get('patient_id');
|
|
$episode_id = session()->get('episode_id');
|
|
$patient = Patient::where(['id' => $patient_id])->first();
|
|
|
|
$slit_lamp_test_areas = SlitLampTestArea::get();
|
|
$slit_lamp_test_area_values = SlitLampTestAreaValue::get();
|
|
$documents = PatientDocument::where('patient_id', $patient_id)->where('episode_id', $episode_id)->orderBy('created_at', 'desc')->get();
|
|
|
|
$diagnoses = Diagnosis::orderBy('name')->pluck("name", "id")->prepend('- select -', '');
|
|
$diagnosis_categories = DiagnosisCategory::orderBy('name', 'asc')->pluck("name", "id")->prepend('- select -', '')->prepend('N/A', 'N/A');
|
|
|
|
$outcomes = DB::table('outcomes')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$wards = DB::table('wards')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$referrals = DB::table('referral_hospitals')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
|
|
$treatment = Treatment::where(['patient_id'=>$patient_id,'episode_id'=>$episode_id,'tta'=>0])->first();
|
|
/* get ordered procedures */
|
|
$ordered_procedures = OrderedProcedure::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->get();
|
|
//check for ordered investigations,procedures and treatment
|
|
$ordered_investigations = OrderedInvestigation::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->get();
|
|
//check for investigation results
|
|
$investigation_results = InvestigationResults::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->get();
|
|
/* get ordered sundries */
|
|
$ordered_sundries = OrderedSundry::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->get();
|
|
//check for authenticated investigations
|
|
$ordered_eye_glasses = OrderedEyeGlasses::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->get();
|
|
$clinics = Clinic::orderBy('name')->pluck("name", "id")->toArray();
|
|
$users = DB::table('users')->orderBy('name')->pluck(DB::raw("CONCAT(first_name,' ',last_name) AS name"), 'id');
|
|
$appointment = PatientAppointment::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->first();
|
|
|
|
|
|
// check if there is a previous exam
|
|
$main_exam = EyeClinicMainExam::where(['episode_id' => $episode_id])->first();
|
|
|
|
return view('eye_clinic::eye_clinic.main_exam_details', compact('patient', 'main_exam', 'diagnoses', 'outcomes', 'wards', 'referrals',
|
|
'ordered_investigations', 'ordered_sundries', 'ordered_procedures', 'ordered_eye_glasses', 'treatment', 'slit_lamp_test_areas', 'slit_lamp_test_area_values',
|
|
'investigation_results', 'diagnosis_categories', 'patient_id', 'documents', 'clinics', 'users', 'appointment'));
|
|
|
|
}
|
|
|
|
public function edit_main_exam($id){
|
|
|
|
$clinics = Clinic::orderBy('name')->pluck("name", "id")->toArray();
|
|
$clinics = array_prepend($clinics, "Don't assign clinic", '0');
|
|
$users = User::orderBy('first_name')->select("id", "first_name", "last_name")->get();
|
|
|
|
$base_exam = $main_exam = [];
|
|
|
|
$patient_id = session()->get('patient_id');
|
|
$episode_id = session()->get('episode_id');
|
|
$patient = Patient::where(['id' => $patient_id])->first();
|
|
$diagnoses = Diagnosis::orderBy('name', 'asc')->where('available', 1)->whereNotNull('diagnosis_category')->get(["name", "id", "diagnosis_category"])->toArray();
|
|
$diagnosis_categories = DiagnosisCategory::all();
|
|
$documents = PatientDocument::where('patient_id', $patient_id)->where('episode_id', $episode_id)->orderBy('created_at', 'desc')->get();
|
|
|
|
$outcomes = DB::table('outcomes')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$wards = DB::table('wards')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$referrals = DB::table('referral_hospitals')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
|
|
$treatment = Treatment::where(['patient_id'=>$patient_id,'episode_id'=>$episode_id,'tta'=>0])->first();
|
|
/* get ordered procedures */
|
|
$ordered_procedures = OrderedProcedure::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->get();
|
|
//check for ordered investigations,procedures and treatment
|
|
$ordered_investigations = OrderedInvestigation::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->get();
|
|
//check for investigation results
|
|
$investigation_results = InvestigationResults::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->get();
|
|
/* get ordered sundries */
|
|
$ordered_sundries = OrderedSundry::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->get();
|
|
//check for authenticated investigations
|
|
$ordered_eye_glasses = OrderedEyeGlasses::where(['patient_id' => $patient_id,'episode_id' => $episode_id])->get();
|
|
|
|
$slit_lamp_test_areas = SlitLampTestArea::get();
|
|
$slit_lamp_test_area_values = SlitLampTestAreaValue::get();
|
|
$users_collection = DB::table('users')->orderBy("first_name","asc")->select("id")->get()->toArray();
|
|
$users_array = [];
|
|
foreach ($users_collection as $value){
|
|
$user = User::find($value->id);
|
|
if (!is_null($user)) {
|
|
$users_array[$value->id] = get_full_name($value->id, 'id', 'first_name', 'last_name', 'users');
|
|
}
|
|
}
|
|
$users_array = ['' => '- select -'] + $users_array;
|
|
|
|
|
|
// check if there is a previous exam
|
|
$main_exam = EyeClinicMainExam::where(['episode_id' => $episode_id])->first();
|
|
|
|
return view('eye_clinic::eye_clinic.edit_main_exam', compact('patient', 'base_exam', 'diagnoses', 'outcomes', 'wards', 'referrals', 'users_array',
|
|
'ordered_investigations', 'ordered_sundries', 'ordered_procedures', 'ordered_eye_glasses', 'treatment', 'main_exam', 'slit_lamp_test_areas',
|
|
'slit_lamp_test_area_values', 'investigation_results', 'diagnosis_categories', 'patient_id', 'documents', 'clinics', 'users'));
|
|
|
|
}
|
|
|
|
public function save_main_exam(Request $request){
|
|
$test = new EyeClinicMainExam();
|
|
|
|
$patient_id = session()->get('patient_id');
|
|
$episode_id = session()->get('episode_id');
|
|
|
|
// performing an ordered procedure.
|
|
if(!is_null($request->perform)){
|
|
for($i = 0; $i < count($request->perform); $i++){
|
|
OrderedProcedure::where('procedure_id', $request->perform[$i])->update([
|
|
'performed' => '1'
|
|
]);
|
|
}
|
|
}
|
|
// performing an ordered procedure.
|
|
if (!is_null($request->perform_selected)) {
|
|
foreach ($request->perform_selected as $procedure_array_id) {
|
|
$arr = explode(",", get_name($request->procedure_order_perform[$procedure_array_id], 'id', 'performed', 'ordered_procedures'));
|
|
$arr_id = explode(",", get_name($request->procedure_order_perform[$procedure_array_id], 'id', 'performed_id', 'ordered_procedures'));
|
|
|
|
$performed_id = record_staff_that_has_performed_the_service($patient_id, $episode_id, 1, $request->perform[$procedure_array_id],
|
|
0, $request->procedure_performed_by[$procedure_array_id]);
|
|
|
|
if (isset($arr[$request->procedure_performed_position[$procedure_array_id]])) {
|
|
$arr[$request->procedure_performed_position[$procedure_array_id]] = 1;
|
|
$arr_id[$request->procedure_performed_position[$procedure_array_id]] = $performed_id;
|
|
$update = DB::table('ordered_procedures')->where('id', $request->procedure_order_perform[$procedure_array_id])
|
|
->update(['performed' => implode(",", $arr), 'performed_id' => implode(",", $arr_id)]);
|
|
}
|
|
}
|
|
}
|
|
|
|
$test->patient_id = $patient_id;
|
|
$test->episode_id = $episode_id;
|
|
$test->external_right = $request->external_right;
|
|
$test->external_left = $request->external_left;
|
|
|
|
$test->slit_ll_right = isset($request->slit_ll_right) ? implode(",",$request->slit_ll_right): "";
|
|
$test->slit_ll_left = isset($request->slit_ll_left) ? implode(",",$request->slit_ll_left): "";
|
|
$test->slit_cs_right = isset($request->slit_cs_right) ? implode(",",$request->slit_cs_right): "";
|
|
$test->slit_cs_left = isset($request->slit_cs_left) ? implode(",",$request->slit_cs_left): "";
|
|
$test->slit_cornea_right = isset($request->slit_cornea_right) ? implode(",",$request->slit_cornea_right): "";
|
|
$test->slit_cornea_left = isset($request->slit_cornea_left) ? implode(",",$request->slit_cornea_left): "";
|
|
$test->slit_ac_right = isset($request->slit_ac_right) ? implode(",",$request->slit_ac_right): "";
|
|
$test->slit_ac_left = isset($request->slit_ac_left) ? implode(",",$request->slit_ac_left): "";
|
|
$test->slit_iris_right = isset($request->slit_iris_right) ? implode(",",$request->slit_iris_right): "";
|
|
$test->slit_iris_left = isset($request->slit_iris_left) ? implode(",",$request->slit_iris_left): "";
|
|
$test->slit_lens_right = isset($request->slit_lens_right) ? implode(",",$request->slit_lens_right): "";
|
|
$test->slit_lens_left = isset($request->slit_lens_left) ? implode(",",$request->slit_lens_left): "";
|
|
$test->slit_vit_right = isset($request->slit_vit_right) ? implode(",",$request->slit_vit_right): "";
|
|
$test->slit_vit_left = isset($request->slit_vit_left) ? implode(",",$request->slit_vit_left): "";
|
|
$test->slit_retina_right = isset($request->slit_retina_right) ? implode(",",$request->slit_retina_right): "";
|
|
$test->slit_retina_left = isset($request->slit_retina_left) ? implode(",",$request->slit_retina_left): "";
|
|
$test->slit_optic_disc_right = isset($request->slit_optic_disc_right) ? implode(",",$request->slit_optic_disc_right): "";
|
|
$test->slit_optic_disc_left = isset($request->slit_optic_disc_left) ? implode(",",$request->slit_optic_disc_left): "";
|
|
|
|
$test->slit_ll_other_right = $request->slit_ll_other_right ?? "";
|
|
$test->slit_ll_other_left = $request->slit_ll_other_left ?? "";
|
|
$test->slit_cs_other_right = $request->slit_cs_other_right ?? "";
|
|
$test->slit_cs_other_left = $request->slit_cs_other_left ?? "";
|
|
$test->slit_cornea_other_right = $request->slit_cornea_other_right ?? "";
|
|
$test->slit_cornea_other_left = $request->slit_cornea_other_left ?? "";
|
|
$test->slit_ac_other_right = $request->slit_ac_other_right ?? "";
|
|
$test->slit_ac_other_left = $request->slit_ac_other_left ?? "";
|
|
$test->slit_iris_other_right = $request->slit_iris_other_right ?? "";
|
|
$test->slit_iris_other_left = $request->slit_iris_other_left ?? "";
|
|
$test->slit_lens_other_right = $request->slit_lens_other_right ?? "";
|
|
$test->slit_lens_other_left = $request->slit_lens_other_left ?? "";
|
|
$test->slit_vit_other_right = $request->slit_vit_other_right ?? "";
|
|
$test->slit_vit_other_left = $request->slit_vit_other_left ?? "";
|
|
$test->slit_retina_other_right = $request->slit_retina_other_right ?? "";
|
|
$test->slit_retina_other_left = $request->slit_retina_other_left ?? "";
|
|
$test->slit_optic_disc_other_right = $request->slit_optic_disc_other_right ?? "";
|
|
$test->slit_optic_disc_other_left = $request->slit_optic_disc_other_left ?? "";
|
|
|
|
$test->cdr_left = $request->cdr_left;
|
|
$test->cdr_right = $request->cdr_right;
|
|
$test->iop_left = $request->iop_left;
|
|
$test->iop_right = $request->iop_right;
|
|
$test->advice = $request->advice;
|
|
$test->outcome_id = $request->outcome;
|
|
$test->completed = 0;
|
|
|
|
$test->left_eye_diagnosis = implode(',',$request->left_eye_diagnosis);
|
|
$test->right_eye_diagnosis = implode(',',$request->right_eye_diagnosis);
|
|
|
|
$test->review_date = $request->review_date;
|
|
$test->doctors_notes = $request->doctors_notes;
|
|
$test->history_comments = $request->history_comments;
|
|
|
|
$test->time = $request->time;
|
|
|
|
$test->created_by = Auth::id();
|
|
|
|
$episode = PatientEpisode::find($episode_id);
|
|
|
|
// Handle the buttons on the test page
|
|
switch ($request->get('submit-btn')):
|
|
case 'eye_glasses':
|
|
session()->put('redirect_to_consultation', '/eye_clinic/main_exam_route');
|
|
$url = '/eye_glasses/order';
|
|
break;
|
|
|
|
case 'treatment':
|
|
session()->put('redirect_to_consultation', '/eye_clinic/main_exam_route');
|
|
$url = '/prescriptions/create/';
|
|
break;
|
|
|
|
case 'procedures':
|
|
session()->put('redirect_to_consultation', '/eye_clinic/main_exam_route');
|
|
$url = '/order_procedures/';
|
|
break;
|
|
|
|
case 'sundries':
|
|
session()->put('redirect_to_consultation', '/eye_clinic/main_exam_route');
|
|
$url = '/order_sundries/';
|
|
break;
|
|
|
|
case 'investigations':
|
|
session()->put('redirect_to_consultation', '/eye_clinic/main_exam_route');
|
|
$url = '/investigations/investigations_review';
|
|
break;
|
|
|
|
case 'patient_documents':
|
|
session()->put('redirect_to_consultation', '/eye_clinic/main_exam_route');
|
|
$url = '/patient_documents/create';
|
|
break;
|
|
|
|
case 'complete':
|
|
$test->completed = 1;
|
|
$url = '/patient_flow_monitoring/index';
|
|
break;
|
|
|
|
case 'save_main_exam':
|
|
$test->completed = 0;
|
|
$url = '/patient_flow_monitoring/index';
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
endswitch;
|
|
|
|
$test->save();
|
|
$episode->consultation_id = $test->id;
|
|
$episode->save();
|
|
|
|
switch ($request->outcome):
|
|
case 1: //Admitted
|
|
$inpatient = new InpatientInfo;
|
|
$inpatient->patient_id = $patient_id;
|
|
$inpatient->episode_id = $episode_id;
|
|
$inpatient->admitted_on = Carbon::parse($request->admitted_on)->format('Y-m-d');
|
|
$inpatient->ward_id = $request->ward_id;
|
|
$inpatient->left_eye_diagnosis = implode(",",$request->left_eye_diagnosis);
|
|
$inpatient->right_eye_diagnosis = implode(",",$request->right_eye_diagnosis);
|
|
$inpatient->comments = $request->comments;
|
|
$inpatient->created_by = Auth::id();
|
|
$inpatient->save();
|
|
|
|
$test->ward_id = $request->ward_id;
|
|
$test->admitted_on = Carbon::parse($request->admitted_on)->format('Y-m-d');
|
|
break;
|
|
case 3: // Home with followup
|
|
$test->followup_where = 'Hospital';
|
|
$test->followup_when = Carbon::parse($request->followup_when)->format('Y-m-d');
|
|
|
|
// save information to the follow-up table
|
|
$appointment = new PatientAppointment();
|
|
$appointment->patient_id = $patient_id;
|
|
$appointment->incharge_id = $request->followup_in_charge;
|
|
$appointment->clinic_allocation = 1;
|
|
$appointment->episode_id = $episode_id;
|
|
$appointment->appointment_date = Carbon::parse($request->followup_when)->format('Y-m-d');
|
|
$appointment->appointment_time = $request->followup_in_time;
|
|
$appointment->created_from = "Eye Clinic Main Exam";
|
|
$appointment->created_by = Auth::id();
|
|
$appointment->updated_by = Auth::id();
|
|
$appointment->save();
|
|
|
|
break;
|
|
case 4: // Referred
|
|
$test->referred_to = $request->referral_id;
|
|
$test->referral_notes = $request->referral_notes;
|
|
break;
|
|
default:
|
|
break;
|
|
endswitch;
|
|
|
|
if ($test->save()){
|
|
flash("Eye clinic main exam saved successfully")->success();
|
|
return redirect($url);
|
|
} else {
|
|
flash("Something went wrong. Please try again.")->error();
|
|
return back()->withInput();
|
|
}
|
|
}
|
|
|
|
public function update_main_exam(Request $request, $id){
|
|
$test = EyeClinicMainExam::find($id);
|
|
$patient_id = session()->get('patient_id');
|
|
$episode_id = session()->get('episode_id');
|
|
|
|
if(!is_null($request->perform)){
|
|
for($i = 0; $i < count($request->perform); $i++){
|
|
OrderedProcedure::where('procedure_id', $request->perform[$i])->update([
|
|
'performed' => '1'
|
|
]);
|
|
}
|
|
}
|
|
// performing an ordered procedure.
|
|
if (!is_null($request->perform_selected)) {
|
|
foreach ($request->perform_selected as $procedure_array_id) {
|
|
$arr = explode(",", get_name($request->procedure_order_perform[$procedure_array_id], 'id', 'performed', 'ordered_procedures'));
|
|
$arr_id = explode(",", get_name($request->procedure_order_perform[$procedure_array_id], 'id', 'performed_id', 'ordered_procedures'));
|
|
|
|
$performed_id = record_staff_that_has_performed_the_service($patient_id, $episode_id, 1, $request->perform[$procedure_array_id],
|
|
0, $request->procedure_performed_by[$procedure_array_id]);
|
|
|
|
if (isset($arr[$request->procedure_performed_position[$procedure_array_id]])) {
|
|
$arr[$request->procedure_performed_position[$procedure_array_id]] = 1;
|
|
$arr_id[$request->procedure_performed_position[$procedure_array_id]] = $performed_id;
|
|
$update = DB::table('ordered_procedures')->where('id', $request->procedure_order_perform[$procedure_array_id])
|
|
->update(['performed' => implode(",", $arr), 'performed_id' => implode(",", $arr_id)]);
|
|
}
|
|
}
|
|
}
|
|
|
|
$test->patient_id = $patient_id;
|
|
$test->episode_id = $episode_id;
|
|
$test->external_right = $request->external_right;
|
|
$test->external_left = $request->external_left;
|
|
|
|
$test->slit_ll_right = isset($request->slit_ll_right) ? implode(",",$request->slit_ll_right): "";
|
|
$test->slit_ll_left = isset($request->slit_ll_left) ? implode(",",$request->slit_ll_left): "";
|
|
$test->slit_cs_right = isset($request->slit_cs_right) ? implode(",",$request->slit_cs_right): "";
|
|
$test->slit_cs_left = isset($request->slit_cs_left) ? implode(",",$request->slit_cs_left): "";
|
|
$test->slit_cornea_right = isset($request->slit_cornea_right) ? implode(",",$request->slit_cornea_right): "";
|
|
$test->slit_cornea_left = isset($request->slit_cornea_left) ? implode(",",$request->slit_cornea_left): "";
|
|
$test->slit_ac_right = isset($request->slit_ac_right) ? implode(",",$request->slit_ac_right): "";
|
|
$test->slit_ac_left = isset($request->slit_ac_left) ? implode(",",$request->slit_ac_left): "";
|
|
$test->slit_iris_right = isset($request->slit_iris_right) ? implode(",",$request->slit_iris_right): "";
|
|
$test->slit_iris_left = isset($request->slit_iris_left) ? implode(",",$request->slit_iris_left): "";
|
|
$test->slit_lens_right = isset($request->slit_lens_right) ? implode(",",$request->slit_lens_right): "";
|
|
$test->slit_lens_left = isset($request->slit_lens_left) ? implode(",",$request->slit_lens_left): "";
|
|
$test->slit_vit_right = isset($request->slit_vit_right) ? implode(",",$request->slit_vit_right): "";
|
|
$test->slit_vit_left = isset($request->slit_vit_left) ? implode(",",$request->slit_vit_left): "";
|
|
$test->slit_retina_right = isset($request->slit_retina_right) ? implode(",",$request->slit_retina_right): "";
|
|
$test->slit_retina_left = isset($request->slit_retina_left) ? implode(",",$request->slit_retina_left): "";
|
|
$test->slit_optic_disc_right = isset($request->slit_optic_disc_right) ? implode(",",$request->slit_optic_disc_right): "";
|
|
$test->slit_optic_disc_left = isset($request->slit_optic_disc_left) ? implode(",",$request->slit_optic_disc_left): "";
|
|
|
|
$test->slit_ll_other_right = $request->slit_ll_other_right ?? "";
|
|
$test->slit_ll_other_left = $request->slit_ll_other_left ?? "";
|
|
$test->slit_cs_other_right = $request->slit_cs_other_right ?? "";
|
|
$test->slit_cs_other_left = $request->slit_cs_other_left ?? "";
|
|
$test->slit_cornea_other_right = $request->slit_cornea_other_right ?? "";
|
|
$test->slit_cornea_other_left = $request->slit_cornea_other_left ?? "";
|
|
$test->slit_ac_other_right = $request->slit_ac_other_right ?? "";
|
|
$test->slit_ac_other_left = $request->slit_ac_other_left ?? "";
|
|
$test->slit_iris_other_right = $request->slit_iris_other_right ?? "";
|
|
$test->slit_iris_other_left = $request->slit_iris_other_left ?? "";
|
|
$test->slit_lens_other_right = $request->slit_lens_other_right ?? "";
|
|
$test->slit_lens_other_left = $request->slit_lens_other_left ?? "";
|
|
$test->slit_vit_other_right = $request->slit_vit_other_right ?? "";
|
|
$test->slit_vit_other_left = $request->slit_vit_other_left ?? "";
|
|
$test->slit_retina_other_right = $request->slit_retina_other_right ?? "";
|
|
$test->slit_retina_other_left = $request->slit_retina_other_left ?? "";
|
|
$test->slit_optic_disc_other_right = $request->slit_optic_disc_other_right ?? "";
|
|
$test->slit_optic_disc_other_left = $request->slit_optic_disc_other_left ?? "";
|
|
|
|
$test->cdr_left = $request->cdr_left;
|
|
$test->cdr_right = $request->cdr_right;
|
|
|
|
$test->iop_left = $request->iop_left;
|
|
$test->iop_right = $request->iop_right;
|
|
$test->advice = $request->advice;
|
|
$test->outcome_id = $request->outcome;
|
|
$test->review_date = $request->review_date;
|
|
$test->doctors_notes = $request->doctors_notes;
|
|
$test->history_comments = $request->history_comments;
|
|
$test->time = $request->time;
|
|
|
|
if(!empty($request->left_eye_diagnosis)){ $test->left_eye_diagnosis = implode(",",$request->left_eye_diagnosis); }
|
|
if(!empty($request->right_eye_diagnosis)){ $test->right_eye_diagnosis = implode(",",$request->right_eye_diagnosis); }
|
|
|
|
$test->created_by = Auth::id();
|
|
|
|
switch ($request->outcome):
|
|
case 1: //Admitted
|
|
$inpatient = new InpatientInfo;
|
|
$inpatient->patient_id = $patient_id;
|
|
$inpatient->episode_id = $episode_id;
|
|
$inpatient->admitted_on = Carbon::parse($request->admitted_on)->format('Y-m-d');
|
|
$inpatient->ward_id = $request->ward_id;
|
|
$inpatient->left_eye_diagnosis = implode(",",$request->left_eye_diagnosis);
|
|
$inpatient->right_eye_diagnosis = implode(",",$request->right_eye_diagnosis);
|
|
$inpatient->comments = $request->comments;
|
|
$inpatient->created_by = Auth::id();
|
|
$inpatient->save();
|
|
|
|
$test->ward_id = $request->ward_id;
|
|
$test->admitted_on = Carbon::parse($request->admitted_on)->format('Y-m-d');
|
|
break;
|
|
case 3: // Home with followup
|
|
$test->followup_where = $request->followup_where;
|
|
$test->followup_when = Carbon::parse($request->followup_when)->format('Y-m-d');
|
|
|
|
// check if there is an appointment for this episode
|
|
$previous_appointment = PatientAppointment::where(['episode_id' => $episode_id])->first();
|
|
|
|
if ($previous_appointment) {
|
|
$appointment = $previous_appointment;
|
|
} else {
|
|
$appointment = new PatientAppointment();
|
|
$appointment->patient_id = $patient_id;
|
|
$appointment->created_by = Auth::id();
|
|
$appointment->episode_id = $episode_id;
|
|
}
|
|
|
|
$appointment->incharge_id = $request->followup_in_charge;
|
|
$appointment->clinic_allocation = $request->followup_clinic_allocation;
|
|
$appointment->appointment_date = Carbon::parse($request->followup_when)->format('Y-m-d');
|
|
$appointment->appointment_time = $request->followup_in_time;
|
|
$appointment->created_from = "Consultation";
|
|
$appointment->updated_by = Auth::id();
|
|
$appointment->save();
|
|
|
|
break;
|
|
case 4: // Referred
|
|
$test->referred_to = $request->referral_id;
|
|
$test->referral_notes = $request->referral_notes;
|
|
break;
|
|
default:
|
|
break;
|
|
endswitch;
|
|
|
|
$episode = PatientEpisode::find($episode_id);
|
|
|
|
// Handle the buttons on the test page
|
|
switch ($request->get('submit-btn')):
|
|
case 'eye_glasses':
|
|
session()->put('redirect_to_consultation', '/eye_clinic/main_exam_route');
|
|
$url = '/eye_glasses/order';
|
|
break;
|
|
|
|
case 'treatment':
|
|
session()->put('redirect_to_consultation', '/eye_clinic/main_exam_route');
|
|
$url = '/prescriptions/create/';
|
|
break;
|
|
|
|
case 'procedures':
|
|
session()->put('redirect_to_consultation', '/eye_clinic/main_exam_route');
|
|
$url = '/order_procedures/';
|
|
break;
|
|
|
|
case 'sundries':
|
|
session()->put('redirect_to_consultation', '/eye_clinic/main_exam_route');
|
|
$url = '/order_sundries/';
|
|
break;
|
|
|
|
case 'investigations':
|
|
session()->put('redirect_to_consultation', '/eye_clinic/main_exam_route');
|
|
$url = '/investigations/investigations_review';
|
|
break;
|
|
|
|
case 'patient_documents':
|
|
session()->put('redirect_to_consultation', '/eye_clinic/main_exam_route');
|
|
$url = '/patient_documents/create';
|
|
break;
|
|
|
|
case 'complete':
|
|
$test->completed = 1;
|
|
$url = '/patient_flow_monitoring/index';
|
|
break;
|
|
|
|
case 'save_main_exam':
|
|
$test->completed = 0;
|
|
$url = '/patient_flow_monitoring/index';
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
endswitch;
|
|
|
|
$test->save();
|
|
|
|
$episode->consultation_id = $test->id;
|
|
|
|
if ($episode->save()){
|
|
flash("Eye clinic main exam Updated successfully")->success();
|
|
return redirect($url);
|
|
} else {
|
|
flash("Something went wrong. Please try again.")->error();
|
|
return back()->withInput();
|
|
}
|
|
}
|
|
|
|
public function additional_tests(){
|
|
$patient_id = session()->get('patient_id');
|
|
$episode_id = session()->get('episode_id');
|
|
$patient = Patient::where(['id' => $patient_id])->first();
|
|
|
|
// check if there is a previous test
|
|
$test = EyeClinicAdditionalTests::where(['episode_id' => $episode_id])->first();
|
|
if ($test){
|
|
return view('eye_clinic::eye_clinic.additional_tests_details', compact('patient', 'test'));
|
|
} else {
|
|
return view('eye_clinic::eye_clinic.additional_tests', compact('patient'));
|
|
}
|
|
}
|
|
|
|
public function save_additional_tests(Request $request){
|
|
$test = new EyeClinicAdditionalTests();
|
|
|
|
$patient_id = session()->get('patient_id');
|
|
$episode_id = session()->get('episode_id');
|
|
|
|
$test->patient_id = $patient_id;
|
|
$test->episode_id = $episode_id;
|
|
$test->pachymetry_right = $request->pachymetry_right;
|
|
$test->pachymetry_left = $request->pachymetry_left;
|
|
$test->pachymetry_date = $request->pachymetry_date;
|
|
$test->schirmers_right = $request->schirmers_right;
|
|
$test->schirmers_left = $request->schirmers_left;
|
|
$test->anesthesia = isset($request->anesthesia) ? 1 : 0;
|
|
$test->keratometry_right_1 = $request->keratometry_right_1;
|
|
$test->keratometry_right_2 = $request->keratometry_right_2;
|
|
$test->keratometry_right_3 = $request->keratometry_right_3;
|
|
$test->keratometry_left_1 = $request->keratometry_left_1;
|
|
$test->keratometry_left_2 = $request->keratometry_left_2;
|
|
$test->keratometry_left_3 = $request->keratometry_left_3;
|
|
$test->keratometry_method = $request->keratometry_method;
|
|
$test->glare_testing_method = $request->glare_testing_method;
|
|
$test->glare_testing_right_off = $request->glare_testing_right_off;
|
|
$test->glare_testing_right_low = $request->glare_testing_right_low;
|
|
$test->glare_testing_right_med = $request->glare_testing_right_med;
|
|
$test->glare_testing_right_high = $request->glare_testing_right_high;
|
|
$test->glare_testing_left_off = $request->glare_testing_left_off;
|
|
$test->glare_testing_left_low = $request->glare_testing_left_low;
|
|
$test->glare_testing_left_med = $request->glare_testing_left_med;
|
|
$test->glare_testing_left_high = $request->glare_testing_left_high;
|
|
$test->gonioscopy_right_one = $request->gonioscopy_right_one;
|
|
$test->gonioscopy_left_one = $request->gonioscopy_left_one;
|
|
$test->gonioscopy_right_two = $request->gonioscopy_right_two;
|
|
$test->gonioscopy_right_three = $request->gonioscopy_right_three;
|
|
$test->gonioscopy_left_two = $request->gonioscopy_left_two;
|
|
$test->gonioscopy_left_three = $request->gonioscopy_left_three;
|
|
$test->gonioscopy_right_four = $request->gonioscopy_right_four;
|
|
$test->gonioscopy_left_four = $request->gonioscopy_left_four;
|
|
$test->worth_distance = $request->worth_distance;
|
|
$test->worth_near = $request->worth_near;
|
|
$test->amsler_right = $request->amsler_right;
|
|
$test->amsler_left = $request->amsler_left;
|
|
$test->pam_right = $request->pam_right;
|
|
$test->pam_left = $request->pam_left;
|
|
$test->test_osmo_right = $request->test_osmo_right;
|
|
$test->test_osmo_left = $request->test_osmo_left;
|
|
$test->stereo_unable = isset($request->stereo_unable) ? 1 : 0;
|
|
$test->stereo_animals = $request->stereo_animals;
|
|
$test->stereo_circles = $request->stereo_circles;
|
|
$test->stereo_lang = $request->stereo_lang;
|
|
$test->dye_disap_right = $request->dye_disap_right;
|
|
$test->dye_disap_left = $request->dye_disap_left;
|
|
$test->created_by = Auth::id();
|
|
|
|
if ($test->save()){
|
|
flash("Eye clinic additional tests saved successfully")->success();
|
|
return redirect("/patient_episodes");
|
|
} else {
|
|
flash("Something went wrong. Please try again.")->error();
|
|
return back()->withInput();
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Create Strabismus resource
|
|
*/
|
|
public function strabismus()
|
|
{
|
|
$patient_id = session()->get('patient_id');
|
|
$episode_id = session()->get('episode_id');
|
|
$patient = Patient::where(['id' => $patient_id])->first();
|
|
|
|
$strabismus = Strabismus::where(['episode_id' => $episode_id])->first();
|
|
if ($strabismus){
|
|
return view('eye_clinic::eye_clinic.strabismus_details', compact('patient', 'strabismus'));
|
|
} else {
|
|
return view('eye_clinic::eye_clinic.strabismus_create', compact('patient'));
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Store strabismus form details
|
|
*/
|
|
public function store_strabismus(Request $request)
|
|
{
|
|
$strabismus = new Strabismus;
|
|
|
|
$patient_id = session()->get('patient_id');
|
|
$episode_id = session()->get('episode_id');
|
|
|
|
$strabismus->patient_id = $patient_id;
|
|
$strabismus->episode_id = $episode_id;
|
|
$strabismus->method = $request->_method;
|
|
$strabismus->ortho = $request->ortho;
|
|
$strabismus->correction_sc = $request->correction_sc;
|
|
$strabismus->correction_cc = $request->correction_cc;
|
|
$strabismus->fixing_eye_right = $request->fixing_eye_right;
|
|
$strabismus->fixing_eye_left = $request->fixing_eye_left;
|
|
$strabismus->distance_top_big = $request->distance_top_big;
|
|
$strabismus->distance_top_small = $request->distance_top_small;
|
|
$strabismus->near_top_big = $request->near_top_big;
|
|
$strabismus->near_top_small = $request->near_top_small;
|
|
$strabismus->near_top_3ds_big = $request->near_top_3ds_big;
|
|
$strabismus->near_top_3ds_small = $request->near_top_3ds_small;
|
|
$strabismus->near_top_bifocals_big = $request->near_top_bifocals_big;
|
|
$strabismus->near_top_bifocals_small = $request->near_top_bifocals_small;
|
|
$strabismus->distance_bottom_big = $request->distance_bottom_big;
|
|
$strabismus->distance_bottom_small = $request->distance_bottom_small;
|
|
$strabismus->near_bottom_big = $request->near_bottom_big;
|
|
$strabismus->near_bottom_small = $request->near_bottom_small;
|
|
$strabismus->near_bottom_3ds_big = $request->near_bottom_3ds_big;
|
|
$strabismus->near_bottom_3ds_small = $request->near_bottom_3ds_small;
|
|
$strabismus->near_bottom_bifocals_big = $request->near_bottom_bifocals_big;
|
|
$strabismus->near_bottom_bifocals_small = $request->near_bottom_bifocals_small;
|
|
$strabismus->convergence_distance_right = $request->convergence_distance_right;
|
|
$strabismus->convergence_distance_left = $request->convergence_distance_left;
|
|
$strabismus->convergence_near_right = $request->convergence_near_right;
|
|
$strabismus->convergence_near_left = $request->convergence_near_left;
|
|
$strabismus->divergence_distance_right = $request->divergence_distance_right;
|
|
$strabismus->divergence_distance_left = $request->divergence_distance_left;
|
|
$strabismus->divergence_near_right = $request->divergence_near_right;
|
|
$strabismus->divergence_near_left = $request->divergence_near_left;
|
|
$strabismus->near_point_of_convergence = $request->near_point_of_convergence;
|
|
$strabismus->npa_right = $request->npa_right;
|
|
$strabismus->aa_right = $request->aa_right;
|
|
$strabismus->npa_left = $request->npa_left;
|
|
$strabismus->aa_left = $request->aa_left;
|
|
$strabismus->npa_both = $request->npa_both;
|
|
$strabismus->aa_both = $request->aa_both;
|
|
$strabismus->left_eye_drawing_big1 = $request->left_eye_drawing_big1;
|
|
$strabismus->left_eye_drawing_small1 = $request->left_eye_drawing_small1;
|
|
$strabismus->left_near_eye_box1 = $request->left_near_eye_box1;
|
|
$strabismus->left_eye_drawing_big2 = $request->left_eye_drawing_big2;
|
|
$strabismus->left_eye_drawing_small2 = $request->left_eye_drawing_small2;
|
|
$strabismus->left_eye_drawing_big3 = $request->left_eye_drawing_big3;
|
|
$strabismus->left_eye_drawing_small3 = $request->left_eye_drawing_small3;
|
|
$strabismus->left_near_eye_box2 = $request->left_near_eye_box2;
|
|
$strabismus->left_eye_drawing_big4 = $request->left_eye_drawing_big4;
|
|
$strabismus->left_eye_drawing_small4 = $request->left_eye_drawing_small4;
|
|
$strabismus->left_eye_drawing_big5 = $request->left_eye_drawing_big5;
|
|
$strabismus->left_eye_drawing_small5 = $request->left_eye_drawing_small5;
|
|
$strabismus->left_near_eye_box3 = $request->left_near_eye_box3;
|
|
$strabismus->left_eye_drawing_big6 = $request->left_eye_drawing_big6;
|
|
$strabismus->left_eye_drawing_small6 = $request->left_eye_drawing_small6;
|
|
$strabismus->right_eye_left_single_box1 = $request->right_eye_left_single_box1;
|
|
$strabismus->eyes_drawing_seperator_big1 = $request->eyes_drawing_seperator_big1;
|
|
$strabismus->eyes_drawing_seperator_small1 = $request->eyes_drawing_seperator_small1;
|
|
$strabismus->eyes_drawing_seperator_big2 = $request->eyes_drawing_seperator_big2;
|
|
$strabismus->eyes_drawing_seperator_small2 = $request->eyes_drawing_seperator_small2;
|
|
$strabismus->right_eye_left_single_box2 = $request->right_eye_left_single_box2;
|
|
$strabismus->eyes_drawing_seperator_big3 = $request->eyes_drawing_seperator_big3;
|
|
$strabismus->eyes_drawing_seperator_small3 = $request->eyes_drawing_seperator_small3;
|
|
$strabismus->eyes_drawing_seperator_big4 = $request->eyes_drawing_seperator_big4;
|
|
$strabismus->eyes_drawing_seperator_small4 = $request->eyes_drawing_seperator_small4;
|
|
$strabismus->right_eye_left_single_box3 = $request->right_eye_left_single_box3;
|
|
$strabismus->eyes_drawing_seperator_big5 = $request->eyes_drawing_seperator_big5;
|
|
$strabismus->eyes_drawing_seperator_small5 = $request->eyes_drawing_seperator_small5;
|
|
$strabismus->eyes_drawing_seperator_big6 = $request->eyes_drawing_seperator_big6;
|
|
$strabismus->eyes_drawing_seperator_small6 = $request->eyes_drawing_seperator_small6;
|
|
$strabismus->left_eye_right_single_box1 = $request->left_eye_right_single_box1;
|
|
$strabismus->left_eye_right_single_box2 = $request->left_eye_right_single_box2;
|
|
$strabismus->left_eye_right_single_box3 = $request->left_eye_right_single_box3;
|
|
$strabismus->left_eye_left_single_box1 = $request->left_eye_left_single_box1;
|
|
$strabismus->right_eye_drawing_big1 = $request->right_eye_drawing_big1;
|
|
$strabismus->right_eye_drawing_small1 = $request->right_eye_drawing_small1;
|
|
$strabismus->right_eye_drawing_big2 = $request->right_eye_drawing_big2;
|
|
$strabismus->right_eye_drawing_small2 = $request->right_eye_drawing_small2;
|
|
$strabismus->left_eye_left_single_box2 = $request->left_eye_left_single_box2;
|
|
$strabismus->right_eye_drawing_big3 = $request->right_eye_drawing_big3;
|
|
$strabismus->right_eye_drawing_small3 = $request->right_eye_drawing_small3;
|
|
$strabismus->right_eye_drawing_big4 = $request->right_eye_drawing_big4;
|
|
$strabismus->right_eye_drawing_small4 = $request->right_eye_drawing_small4;
|
|
$strabismus->left_eye_left_single_box3 = $request->left_eye_left_single_box3;
|
|
$strabismus->right_eye_drawing_big5 = $request->right_eye_drawing_big5;
|
|
$strabismus->right_eye_drawing_small5 = $request->right_eye_drawing_small5;
|
|
$strabismus->right_eye_drawing_big6 = $request->right_eye_drawing_big6;
|
|
$strabismus->right_eye_drawing_small6 = $request->right_eye_drawing_small6;
|
|
$strabismus->right_head_tilt_top_big = $request->right_head_tilt_top_big;
|
|
$strabismus->right_head_tilt_top_small = $request->right_head_tilt_top_small;
|
|
$strabismus->right_head_tilt_bottom_big = $request->right_head_tilt_bottom_big;
|
|
$strabismus->right_head_tilt_bottom_small = $request->right_head_tilt_bottom_small;
|
|
$strabismus->left_head_tilt_top_big = $request->left_head_tilt_top_big;
|
|
$strabismus->left_head_tilt_top_small = $request->left_head_tilt_top_small;
|
|
$strabismus->left_head_tilt_bottom_big = $request->left_head_tilt_bottom_big;
|
|
$strabismus->left_head_tilt_bottom_small = $request->left_head_tilt_bottom_small;
|
|
$strabismus->nystagmus = $request->nystagmus;
|
|
$strabismus->abnormal_head_position = $request->abnormal_head_position;
|
|
$strabismus->next_to_nystagmus = $request->next_to_nystagmus;
|
|
$strabismus->next_to_abnormal_head_position = $request->next_to_abnormal_head_position;
|
|
$strabismus->fly_positive = $request->fly_positive;
|
|
$strabismus->fly_negative = $request->fly_negative;
|
|
$strabismus->unable = $request->unable;
|
|
$strabismus->animals = $request->animals;
|
|
$strabismus->circles = $request->circles;
|
|
$strabismus->lang = $request->lang;
|
|
$strabismus->bruckner = $request->bruckner;
|
|
$strabismus->induced_tropia = $request->induced_tropia;
|
|
$strabismus->angle_toppa = $request->angle_toppa;
|
|
$strabismus->bagolini_lens = $request->bagolini_lens ;
|
|
$strabismus->double_maddox_right_small = $request->double_maddox_right_small;
|
|
$strabismus->double_maddox_right_big = $request->double_maddox_right_big;
|
|
$strabismus->double_maddox_left_small = $request->double_maddox_left_small;
|
|
$strabismus->worth_4_dot_distance = $request->worth_4_dot_distance;
|
|
$strabismus->worth_4_dot_near = $request->worth_4_dot_near;
|
|
$strabismus->created_by = Auth::id();
|
|
|
|
if ($strabismus->save()){
|
|
flash("Strabismus saved successfully")->success();
|
|
return redirect("/patient_episodes");
|
|
} else {
|
|
flash("Something went wrong. Please try again.")->error();
|
|
return back()->withInput();
|
|
}
|
|
}
|
|
|
|
public function store_new_test_area_value(Request $request){
|
|
$new_value = new SlitLampTestAreaValue;
|
|
$new_value->name = $request->test_area_new_value;
|
|
$new_value->slit_lamp_test_area_id = $request->test_area_id;
|
|
$new_value->created_by = Auth::id();
|
|
$new_value->save();
|
|
|
|
$slit_lamp_test_area = SlitLampTestArea::find($request->test_area_id);
|
|
|
|
$ext_left = "";
|
|
$ext_left .= "<div class='col-md-4'>";
|
|
$ext_left .= "<div class='checkbox checkbox-success checkbox-circle'>";
|
|
$ext_left .= "<input id='checkbox_".$slit_lamp_test_area->slug."_left_".$new_value->id."' type='checkbox' name='".$slit_lamp_test_area->slug."_left[]' value='". $new_value->id."'>";
|
|
$ext_left .= "<label for='checkbox_".$slit_lamp_test_area->slug."_left_".$new_value->id."'> <b>".$new_value->name."</b> </label>";
|
|
$ext_left .= "</div>";
|
|
$ext_left .= "</div>";
|
|
|
|
$ext_right = "";
|
|
$ext_right .= "<div class='col-md-4'>";
|
|
$ext_right .= "<div class='checkbox checkbox-success checkbox-circle'>";
|
|
$ext_right .= "<input id='checkbox_".$slit_lamp_test_area->slug."_right_".$new_value->id."' type='checkbox' name='".$slit_lamp_test_area->slug."_right[]' value='". $new_value->id."'>";
|
|
$ext_right .= "<label for='checkbox_".$slit_lamp_test_area->slug."_right_".$new_value->id."'> <b>".$new_value->name."</b> </label>";
|
|
$ext_right .= "</div>";
|
|
$ext_right .= "</div>";
|
|
|
|
if($new_value->save()){
|
|
return array($ext_left, $ext_right);
|
|
}else{
|
|
return 'fail';
|
|
}
|
|
}
|
|
}
|