Files
streamline-emr/docker/streamline-src/Modules/Diabetes/Http/Controllers/DiabetesClinicController.php
T

204 lines
12 KiB
PHP
Executable File

<?php
namespace Modules\Diabetes\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Streamline\Models\DiabetesFollowUp;
use Streamline\Models\DiabetesRegistration;
use Streamline\Models\DosageFrequency;
use Streamline\Models\Drug;
use Streamline\Models\Patient;
class DiabetesClinicController extends Controller {
public function follow_up(){
$patient_id = session()->get('patient_id');
$patient = Patient::where('id', $patient_id)->first();
$drugs = Drug::where('available', 1)->orderby('name','asc')->get();
$dosage_frequencies = DosageFrequency::get();
// prep the dropdowns
$hiv_status = array('N/A' => '--select--', 'Positive' => 'Positive', 'Negative' => 'Negative', 'Exposed' => 'Exposed');
$tb_status = array('N/A' => '--select--', 'Negative' => 'Negative', 'Gene-expert positive' => 'Gene-expert positive', 'Extra-pulmonary positive' => 'Extra-pulmonary positive', 'Previous treated' => 'Previous treated', 'Exposed asymptomatic' => 'Exposed asymptomatic');
$alcohol = array('N/A' => '--select--', 'High' => 'High', 'Moderate' => 'Moderate', 'Low' => 'Low', 'Nil' => 'Nil');
$mood = array('N/A' => '--select--', 'Fine' => 'Fine', 'Swings' => 'Swings', 'Anxiety' => 'Anxiety');
$pulse_rhythm = array('N/A' => '--select--', 'Sinus' => 'Sinus', 'AF' => 'AF', 'Heart Block' => 'Heart Block', 'Ectopics' => 'Ectopics');
$sensation = array('N/A' => '--select--', 'Normal' => 'Normal', 'Impaired' => 'Impaired');
$fundoscopy = array('N/A' => '--select--', 'Normal' => 'Normal', 'Diabetic retinopathy' => 'Diabetic retinopathy', 'Hypertensive changes' => 'Hypertensive changes', 'Papilloedema' => 'Papilloedema', 'Other' => 'Other');
$injection_site_inspection = array('N/A' => '--select--', 'Satisfactory' => 'Satisfactory', 'Unsatisfactory' => '“Unsatisfactory');
return view('diabetes::diabetes_clinic.follow_up', compact('patient', 'tb_status', 'hiv_status', 'injection_site_inspection', 'pulse_rhythm', 'alcohol', 'mood', 'sensation', 'fundoscopy', 'drugs', 'dosage_frequencies'));
}
public function save_follow_up(Request $request){
$follow_up = new DiabetesFollowUp();
$follow_up->patient_id = session()->get('patient_id');
$follow_up->episode_id = session()->get('episode_id');
$follow_up->hypoglycaemic = isset($request->hypoglycaemic) ? 1 : 0;
$follow_up->hyperglycaemic_episodes = isset($request->hyperglycaemic_episodes) ? 1 : 0;
$follow_up->visual_symptoms = isset($request->visual_symptoms) ? 1 : 0;
$follow_up->feet_sensation = isset($request->feet_sensation) ? 1 : 0;
$follow_up->impotence = isset($request->impotence) ? 1 : 0;
$follow_up->smoker = isset($request->smoker) ? 1 : 0;
$follow_up->hiv_status = $request->hiv_status;
$follow_up->tb_status = $request->tb_status;
$follow_up->alcohol = $request->alcohol;
$follow_up->mood = $request->mood;
$follow_up->immunisation_date = $request->immunisation_date;
$follow_up->comments = $request->comments;
$follow_up->height = $request->height;
$follow_up->weight = $request->weight;
$follow_up->waist = $request->waist;
$follow_up->hip = $request->hip;
$follow_up->bp_lying = $request->bp_lying;
$follow_up->bp_standing = $request->bp_standing;
$follow_up->pulse_rate = $request->pulse_rate;
$follow_up->pulse_rhythm = $request->pulse_rhythm;
$follow_up->sensation = $request->sensation;
$follow_up->pedal_pulses = isset($request->pedal_pulses) ? 1 : 0;
$follow_up->feet_inspection = isset($request->feet_inspection) ? 1 : 0;
$follow_up->visual_acuity = isset($request->visual_acuity) ? 1 : 0;
$follow_up->fundoscopy = $request->fundoscopy;
$follow_up->injection_site_inspection = $request->injection_site_inspection;
$follow_up->examination_comments = $request->examination_comments;
$follow_up->bmi = $request->bmi;
$follow_up->waist_hip_ratio = $request->waist_hip_ratio;
$follow_up->blood_glucose = $request->blood_glucose;
$follow_up->creatinine = $request->creatinine;
$follow_up->hdl_cholesterol = $request->hdl_cholesterol;
$follow_up->ldl_cholesterol = $request->ldl_cholesterol;
$follow_up->total_choresterol = $request->total_choresterol;
$follow_up->triglyceride = $request->triglyceride;
$follow_up->urine_protein = $request->urine_protein;
$follow_up->urine_ketones = $request->urine_ketones;
$follow_up->hba1c = $request->hba1c;
$follow_up->drug_id = implode(",", $request->drug_id);
$follow_up->dose = implode(",", $request->dose);
$follow_up->frequency_id = implode(",", $request->frequency_id);
$follow_up->dispense_number = implode(",", $request->dispense_number);
$follow_up->overview_diabetes = isset($request->overview_diabetes) ? 1 : 0;
$follow_up->overview_diabetes_date = $request->overview_diabetes_date;
$follow_up->management_diabetes = isset($request->management_diabetes) ? 1 : 0;
$follow_up->management_diabetes_date = $request->management_diabetes_date;
$follow_up->diabetic_clinic_date = $request->diabetic_clinic_date;
$follow_up->eye_clinic_referral = isset($request->eye_clinic_referral) ? 1 : 0;
$follow_up->psychological_assessment_referral = isset($request->psychological_assessment_referral) ? 1 : 0;
$follow_up->chaplain_support_referral = isset($request->chaplain_support_referral) ? 1 : 0;
$follow_up->other_clinic_follow_up = $request->other_clinic_follow_up;
$follow_up->created_by = Auth::user()->id;
if ($follow_up->save()){
flash("Diabetes follow up details saved successfully")->success();
return redirect("/patient_episodes");
} else {
flash("Something went wrong. Please try again.")->error();
return back()->withInput();
}
}
public function follow_up_details($id){
$patient_id = session()->get('patient_id');
$patient = Patient::where('id', $patient_id)->first();
$follow_up = DiabetesFollowUp::find($id);
$drugs = Drug::where('available', 1)->pluck('name', 'id');
$dosage_frequencies = DosageFrequency::pluck('name', 'id');
return view('diabetes::diabetes_clinic.follow_up_details', compact('patient', 'drugs', 'dosage_frequencies', 'follow_up'));
}
public function get_dispensable_drug_units($drug_id){
return get_name($drug_id, 'id', 'pharmacy_stock', 'drugs');
}
public function clinic_registration(){
$patient_id = session()->get('patient_id');
$episode_id = session()->get('episode_id');
$patient = Patient::where('id', $patient_id)->first();
$drugs = Drug::where('available', 1)->orderby('name','asc')->get();
$dosage_frequencies = DosageFrequency::get();
// prep the dropdowns
$hiv_status = array('N/A' => '--select--', 'Positive' => 'Positive', 'Negative' => 'Negative', 'Exposed' => 'Exposed');
$tb_status = array('N/A' => '--select--', 'Negative' => 'Negative', 'Gene-expert positive' => 'Gene-expert positive', 'Extra-pulmonary positive' => 'Extra-pulmonary positive', 'Previous treated' => 'Previous treated', 'Exposed asymptomatic' => 'Exposed asymptomatic');
$type = array('N/A' => '--select--', 'Type 1' => 'Type 1', 'Type 2' => 'Type 2', 'Type 2 on insuline' => 'Type 2 on insulin');
$alcohol = array('N/A' => '--select--', 'High' => 'High', 'Moderate' => 'Moderate', 'Low' => 'Low', 'Nil' => 'Nil');
// check if the patient has already been registered
$clinic_registration = DiabetesRegistration::where('episode_id', $episode_id)->first();
if ($clinic_registration){
// redirect to the view details page
$drugs = Drug::where('available', 1)->pluck('name', 'id');
$dosage_frequencies = DosageFrequency::pluck('name', 'id');
// get follow up history if available
$follow_up = DiabetesFollowUp::where('episode_id', $episode_id)->get();
return view('diabetes::diabetes_clinic.clinic_registration_details', compact('clinic_registration','patient', 'drugs', 'dosage_frequencies', 'hiv_status', 'tb_status', 'type', 'alcohol', 'follow_up'));
} else {
return view('diabetes::diabetes_clinic.clinic_registration', compact('patient', 'drugs', 'dosage_frequencies', 'hiv_status', 'tb_status', 'type', 'alcohol'));
}
}
public function save_clinic_registration(Request $request){
$registration = new DiabetesRegistration();
$registration->patient_id = session()->get('patient_id');
$registration->episode_id = session()->get('episode_id');
$registration->family_history = $request->family_history;
$registration->family_member_with_diabetes = $request->family_member_with_diabetes;
$registration->diagnosis_date = $request->diagnosis_date;
$registration->diabetes_type = $request->diabetes_type;
$registration->presenting_none = isset($request->presenting_none) ? 1 : 0;
$registration->presenting_dka = isset($request->presenting_dka) ? 1 : 0;
$registration->presenting_excessive_thirst = isset($request->presenting_excessive_thirst) ? 1 : 0;
$registration->presenting_polyuria = isset($request->presenting_polyuria) ? 1 : 0;
$registration->presenting_weight_loss = isset($request->presenting_weight_loss) ? 1 : 0;
$registration->presenting_visual_problems = isset($request->presenting_visual_problems) ? 1 : 0;
$registration->presenting_peripheral_neuropathy = isset($request->presenting_peripheral_neuropathy) ? 1 : 0;
$registration->other_symptoms = $request->other_symptoms;
$registration->other_diagnosis = $request->other_diagnosis;
$registration->hiv_status = $request->hiv_status;
$registration->tb_status = $request->tb_status;
$registration->height = $request->height;
$registration->weight = $request->weight;
$registration->bmi = $request->bmi;
$registration->waist = $request->waist;
$registration->hip_circumference = $request->hip_circumference;
$registration->waist_to_hip_ratio = $request->waist_to_hip_ratio;
$registration->smoker = isset($request->smoker) ? 1 : 0;
$registration->alcohol = $request->alcohol;
$registration->immunisation_date = $request->immunisation_date;
$registration->drug_id = implode(",", $request->drug_id);
$registration->dose = implode(",", $request->dose);
$registration->frequency_id = implode(",", $request->frequency_id);
$registration->dispense_number = implode(",", $request->dispense_number);
$registration->hba1c = $request->hba1c;
$registration->bp = $request->bp;
$registration->cholesterol = $request->cholesterol;
$registration->waist_hip_ratio = $request->waist_hip_ratio;
$registration->overview_diabetes = isset($request->overview_diabetes) ? 1 : 0;
$registration->overview_diabetes_date = $request->overview_diabetes_date;
$registration->management_diabetes = isset($request->management_diabetes) ? 1 : 0;
$registration->management_diabetes_date = $request->management_diabetes_date;
$registration->diet_review = $request->diet_review;
$registration->comment = $request->comment;
$registration->created_by = Auth::user()->id;
if ($registration->save()){
flash("Diabetes registration details saved successfully")->success();
return redirect("/patient_episodes");
} else {
flash("Something went wrong. Please try again.")->error();
return back()->withInput();
}
}
}