mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-11 18:51:31 +00:00
325 lines
15 KiB
PHP
Executable File
325 lines
15 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Modules\Hiv\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Streamline\Models\PatientDocument;
|
|
use Streamline\Models\Alert;
|
|
use Streamline\Models\Allergy;
|
|
use Streamline\Models\Patient;
|
|
use Streamline\Models\Triage;
|
|
use Streamline\Models\ArtClinicRegistration;
|
|
use Streamline\Models\ArtContinuationCard;
|
|
use Carbon\Carbon;
|
|
use Streamline\Models\HivPatient;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class AntiretralViralTherapyController extends Controller
|
|
{
|
|
public function __construct() {
|
|
$this->middleware('auth');
|
|
}
|
|
/**
|
|
* Display a listing of the resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function index()
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Show the form for creating a new resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function create()
|
|
{
|
|
$episode_id = session()->get('episode_id');
|
|
$patient_id = session()->get('patient_id');
|
|
$patient = Patient::find($patient_id);
|
|
|
|
$categories = DB::table('patient_categories')->where('available', 1)->pluck("name", "id");
|
|
$marital_statuses = DB::table('marital_statuses')->pluck("name", "id")->prepend('-- Select --','');
|
|
$districts = DB::table('districts')->pluck("name", "id")->prepend('-- Select --','');
|
|
$care_entry_points = DB::table('care_entry_points')->pluck("name", "id")->prepend('-- Select --','');
|
|
$drug_categories = DB::table('drug_categories')->get();
|
|
$triage_id = get_name($episode_id, "id", "triage_id", "patient_episodes");
|
|
$triage = Triage::find($triage_id);
|
|
$documents = PatientDocument::where('patient_id',$patient_id)->orderBy('created_at','desc')->take(2)->get();
|
|
$known_patient_allergies = Allergy::where('patient_id' , $patient_id)->orderBy('created_at', 'desc')->take(2)->get();
|
|
$known_patient_alerts = Alert::where('patient_id' , $patient_id)->orderBy('created_at','desc')->take(2)->get();
|
|
$drug_categories_array = DB::table('drug_categories')->pluck('name', 'id');
|
|
|
|
//check if there is ART clinic registration data for this paatient
|
|
$existing_episode_art_clinic_registration = ArtClinicRegistration::where(['patient_id' => $patient_id])->get();
|
|
//dd($existing_episode_art_clinic_registration);
|
|
|
|
return view('hiv::art_clinic.create',compact('patient_id','episode_id','patient','categories','marital_statuses','drug_categories','documents','known_patient_alerts','known_patient_allergies','drug_categories_array','triage','districts','care_entry_points'));
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function store(Request $request)
|
|
{
|
|
$test_type_array = array(
|
|
"Test_Type" => $request->test_type,
|
|
"Where?" => $request->where
|
|
);
|
|
$test_type_serial = serialize($test_type_array);
|
|
|
|
//Care Entry Point
|
|
$care_entry_point_array = array(
|
|
"Care_Entry_Point" => $request->care_entry_point,
|
|
"Other(Specify)" => $request->other_care_entry_point
|
|
);
|
|
$care_entry_point_serial = serialize($care_entry_point_array);
|
|
|
|
//Treatment supporter
|
|
$treatment_supporter_array = array(
|
|
"Treatment_Supporter_Name" => $request->treatment_supporter_name,
|
|
"Phone" => $request->treatment_supporter_phone,
|
|
"District" => $request->district,
|
|
"County" => $request->county_id,
|
|
"Subcounty" => $request->subcounty_id,
|
|
"Parish" => $request->parish,
|
|
"Village" => $request->village
|
|
);
|
|
$treatment_supporter_serial = serialize($treatment_supporter_array);
|
|
|
|
//save data into the art_clinic_registration
|
|
$art_clinic_registration = new ArtClinicRegistration;
|
|
$art_clinic_registration->patient_id = $request->patient_id;
|
|
$art_clinic_registration->marital_status = $request->marital_status;
|
|
$art_clinic_registration->art_clinic_number = $request->art_clinic_number;
|
|
/* ========== register the patient in hiv_patients table ========== */
|
|
$hiv_patient = new HivPatient;
|
|
$hiv_patient->patient_id = session()->get('patient_id');
|
|
$hiv_patient->art_clinic_number = $request->art_clinic_number;
|
|
$hiv_patient->save();
|
|
/* ===================== */
|
|
$art_clinic_registration->date_confirmed_HIV = isset($request->date_hiv_confirmed) ? Carbon::createFromFormat('d/m/Y', $request->date_hiv_confirmed)->toDateString() : null;
|
|
$art_clinic_registration->test_type = $test_type_serial;
|
|
$art_clinic_registration->care_entry_point = $care_entry_point_serial;
|
|
$art_clinic_registration->treatment_supporter = $treatment_supporter_serial;
|
|
$art_clinic_registration->home_based_care_by = $request->home_based_care_provided_by;
|
|
$art_clinic_registration->created_by = auth()->user()->id;
|
|
if ($art_clinic_registration->save()) {
|
|
flash('ART details have been filled. Please fill out the ART continuation card')->success();
|
|
return redirect('art_continuation_card');
|
|
}
|
|
return redirect()->back()->withInput();
|
|
}
|
|
|
|
/**
|
|
* Display the specified resource.
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function show($id)
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Show the form for editing the specified resource.
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function edit($id)
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function update(Request $request, $id)
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function destroy($id)
|
|
{
|
|
//
|
|
}
|
|
|
|
/* Display ART continuation card */
|
|
public function create_art_continuation_card()
|
|
{
|
|
$patient_id = session()->get('patient_id');
|
|
$patient = Patient::find($patient_id);
|
|
$categories = DB::table('patient_categories')->where('available', 1)->pluck("name", "id");
|
|
$marital_statuses = DB::table('marital_statuses')->pluck("name", "id")->prepend('-- Select --','');
|
|
$districts = DB::table('districts')->pluck("name", "id")->prepend('-- Select --','');
|
|
$fp_options = DB::table('art_card_family_planning_methods')->pluck("name", "id")->prepend('-- Select --','');
|
|
$tb_statuses = DB::table('tuberclosis_statuses')->pluck("name", "id")->prepend('-- Select --','');
|
|
$potential_side_effects = DB::table('art_potential_side_effects')->pluck("name","id")->prepend('-- Select --','');
|
|
$oi_options = DB::table('art_oi')->pluck("name","id")->prepend('-- Select --','');
|
|
$nutrition = DB::table('nutrition')->pluck("name","id")->prepend('-- Select --','');
|
|
$arv_adherence_reasons = DB::table('arv_adherence_reasons')->pluck("name","id")->prepend('-- Select --','');
|
|
$drug_categories = DB::table('drug_categories')->get();
|
|
$documents = PatientDocument::where('patient_id',$patient_id)->orderBy('created_at','desc')->take(2)->get();
|
|
$known_patient_allergies = Allergy::where('patient_id',$patient_id)->orderBy('created_at','desc')->take(2)->get();
|
|
$known_patient_alerts = Alert::where('patient_id' , $patient_id)->orderBy('created_at','desc')->take(2)->get();
|
|
$drug_categories_array = DB::table('drug_categories')->pluck('name', 'id');
|
|
|
|
//check if there is ART clinic registration data for this paatient
|
|
$existing_art_continuation_card_records = ArtContinuationCard::where(['patient_id' => $patient_id])->get();
|
|
$existing_art_continuation_card_records_array = $existing_art_continuation_card_records->toArray();
|
|
|
|
return view('hiv::art_clinic.create_ART_continuation_card',compact('patient_id','patient','categories','marital_statuses','drug_categories','documents','known_patient_alerts','known_patient_allergies','drug_categories_array','districts','fp_options','tb_statuses','potential_side_effects','oi_options','nutrition','arv_adherence_reasons','existing_art_continuation_card_records_array','existing_art_continuation_card_records'));
|
|
}
|
|
|
|
/* Store art continuation card details */
|
|
public function store_art_continuation_card(Request $request)
|
|
{
|
|
//ART
|
|
$art_array = array(
|
|
"Date started ART" => isset($request->date_started_art) ? Carbon::createFromFormat('d/m/Y', $request->date_started_art)->toDateString() : null,
|
|
"Duration" => $request->art_duration,
|
|
"Date started current ART regime" => isset($request->art_regime_start_date) ? Carbon::createFromFormat('d/m/Y', $request->art_regime_start_date)->toDateString() : null,
|
|
"Current Regime Duration" => $request->art_regime_duration
|
|
);
|
|
$art_serial = serialize($art_array);
|
|
//MUAC and oedema
|
|
$muac_array = array(
|
|
"muac" => $request->muac,
|
|
"oedema" => $request->oedema
|
|
);
|
|
$muac_serial = serialize($muac_array);
|
|
//Pregnacy
|
|
$pregnancy_array = array(
|
|
"Pregnant" => $request->pregnant,
|
|
"EDD" => isset($request->edd) ? Carbon::createFromFormat('d/m/Y', $request->edd)->toDateString() : null,
|
|
"EMTCT" => $request->emtct,
|
|
"ANC Location" => $request->anc_location,
|
|
"Gestation" => $request->gestation,
|
|
"FP" => $request->fp
|
|
);
|
|
$pregnancy_serial = serialize($pregnancy_array);
|
|
//TB
|
|
$tb_array = array(
|
|
"TB Status" => $request->tb_status,
|
|
"TB Rx start date" => isset($request->tb_rx_start_date) ? Carbon::createFromFormat('d/m/Y', $request->tb_rx_start_date)->toDateString() : null,
|
|
"Stop date" => isset($request->tb_rx_stop_date) ? Carbon::createFromFormat('d/m/Y', $request->tb_rx_stop_date)->toDateString() : null,
|
|
"District TB Register Number" => $request->district_tb_register_no
|
|
);
|
|
$tb_serial = serialize($tb_array);
|
|
//Side effects
|
|
$side_effects_array = array(
|
|
"Potential side effects" => $request->potential_side_effects,
|
|
"Others" => $request->other_side_effects
|
|
);
|
|
$side_effects_serial = serialize($side_effects_array);
|
|
//New OI
|
|
$new_oi = array(
|
|
"New OI / other problems" => $request->new_oi,
|
|
"Other" => $request->new_oi_other
|
|
);
|
|
$new_oi_serial = serialize($new_oi);
|
|
//Nutrition
|
|
$nutrition_array = array(
|
|
"Nutrition" => $request->nutrition,
|
|
"Functional Status" => $request->functional_status,
|
|
"WHO Stage" => $request->who_stage
|
|
);
|
|
$nutrition_serial = serialize($nutrition_array);
|
|
//CPT / Dapsone
|
|
$cpt_dapsone_array = array(
|
|
"Adherence" => $request->cpt_dapsone_adherence,
|
|
"Number of pills dispensed" => $request->cpt_no_pills_dispensed,
|
|
"Number of days passed" => $request->cpt_no_days_passed
|
|
);
|
|
$cpt_dapsone_serial = serialize($cpt_dapsone_array);
|
|
//INH
|
|
$inh_array = array(
|
|
"Number of pills dispensed" => $request->inh_no_pills_dispensed,
|
|
"Number of days passed" => $request->inh_no_days_passed
|
|
);
|
|
$inh_serial = serialize($inh_array);
|
|
//Other meds
|
|
$other_meds_array = array(
|
|
"Other Meds Dispensed including nutritional supplement" => $request->other_meds
|
|
);
|
|
$other_meds_serial = serialize($other_meds_array);
|
|
//ARVs
|
|
$arvs_array = array(
|
|
"Adherence" => $request->arvs_adherence,
|
|
"Why?" => $request->arvs_adherence_why,
|
|
"Others" => $request->arvs_other,
|
|
"Regime" => $request->arvs_regime,
|
|
"Number of pills dispensed" => $request->arvs_no_pills_dispensed,
|
|
"Number of days passed" => $request->arvs_no_days_passed,
|
|
);
|
|
$arvs_serial = serialize($arvs_array);
|
|
//Ix
|
|
$ix_array = array(
|
|
"CD4 count" => $request->cd4_count,
|
|
"Date" => isset($request->cd4_count_date) ? Carbon::createFromFormat('d/m/Y', $request->cd4_count_date)->toDateString() : null,
|
|
"Other Ix" => $request->other_ix,
|
|
"Nutrition supplements" => $request->nutritional_supplements
|
|
);
|
|
$ix_serial = serialize($ix_array);
|
|
//Referrals
|
|
$referrals_array = array(
|
|
"Consultation / link/provide" => $request->consultation_link_provide,
|
|
"Date" => isset($request->consultation_link_provide_date) ? Carbon::createFromFormat('d/m/Y', $request->consultation_link_provide_date)->toDateString() : null,
|
|
"Nutrition support" => $request->nutritional_support,
|
|
"Nutrition support Date" => isset($request->nutritional_support_date) ? Carbon::createFromFormat('d/m/Y', $request->nutritional_support_date)->toDateString() : null,
|
|
"Hospitalization" => $request->hospitalisation,
|
|
"Duration" => $request->hospitalisation_duration
|
|
);
|
|
$referrals_serial = serialize($referrals_array);
|
|
//Appointments
|
|
$appointment_array = array(
|
|
"Next Appointment ART date" => isset($request->next_appointment_date) ? Carbon::createFromFormat('d/m/Y', $request->next_appointment_date)->toDateString() : null,
|
|
"Other Appointment" => $request->other_appointment,
|
|
"Other Appointment Date" => isset($request->other_appointment_date) ? Carbon::createFromFormat('d/m/Y', $request->other_appointment_date)->toDateString() : null
|
|
);
|
|
$appointment_serial = serialize($appointment_array);
|
|
|
|
$art_continuation_card = new ArtContinuationCard;
|
|
$art_continuation_card->patient_id = $request->patient_id;
|
|
$art_continuation_card->episode_id = session()->get('episode_id');
|
|
$art_continuation_card->clinician_id = auth()->user()->id;
|
|
$art_continuation_card->follow_up = $request->follow_up;
|
|
$art_continuation_card->ART = $art_serial;
|
|
$art_continuation_card->muac_oedema = $muac_serial;
|
|
$art_continuation_card->pregnancy = $pregnancy_serial;
|
|
$art_continuation_card->TB = $tb_serial;
|
|
$art_continuation_card->side_effects = $side_effects_serial;
|
|
$art_continuation_card->OI = $new_oi_serial;
|
|
$art_continuation_card->nutrition = $nutrition_serial;
|
|
$art_continuation_card->cpt_dapsone = $cpt_dapsone_serial;
|
|
$art_continuation_card->INH = $inh_serial;
|
|
$art_continuation_card->other_meds = $other_meds_serial;
|
|
$art_continuation_card->ARVs = $arvs_serial;
|
|
$art_continuation_card->Ix = $ix_serial;
|
|
$art_continuation_card->referrals = $referrals_serial;
|
|
$art_continuation_card->appointments = $appointment_serial;
|
|
if ($art_continuation_card->save()) {
|
|
flash("ART continuation details have been added")->success();
|
|
return redirect('patient_episodes');
|
|
}
|
|
return redirect()->back()->withInput();
|
|
}
|
|
}
|