mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-11 18:51:31 +00:00
2991 lines
173 KiB
PHP
Executable File
2991 lines
173 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Modules\Maternity\Http\Controllers;
|
|
|
|
use Barryvdh\Snappy\Facades\SnappyPdf;
|
|
|
|
use Illuminate\Database\QueryException;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Streamline\Models\Alert;
|
|
use Streamline\Models\Allergy;
|
|
use Streamline\Models\Patient;
|
|
use Streamline\Models\InpatientInfo;
|
|
use Streamline\Models\PatientEpisode;
|
|
use Streamline\Models\Triage;
|
|
use Streamline\Models\AnteNatalClinicRegistration;
|
|
use Streamline\Models\EmergencySign;
|
|
use Streamline\Models\PatientDocument;
|
|
use Streamline\Models\Diagnosis;
|
|
use Streamline\Models\ObstetricHistory;
|
|
use Streamline\Models\AnteNatalClinicBloodTransfusion;
|
|
use Streamline\Models\AncVdrlHiv;
|
|
use Streamline\Models\MaternityInpatient;
|
|
use Streamline\Models\MaternityDeliveryRecord;
|
|
use Streamline\Models\FamilyPlanningMethod;
|
|
use Carbon\Carbon;
|
|
use Streamline\Models\LocationOfDelivery;
|
|
use Streamline\Models\Ward;
|
|
use Streamline\Models\OrderedInvestigation;
|
|
use Streamline\Models\InvestigationResults;
|
|
use Streamline\Models\CardioEchoResult;
|
|
use Streamline\Models\Investigation;
|
|
use Streamline\Models\Symptom;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Streamline\Models\CaesarianSection;
|
|
use Streamline\Models\UterusOperation;
|
|
use Streamline\Models\GenderBasedViolence;
|
|
use Streamline\Models\GenderViolence;
|
|
use Streamline\Models\MaternityDeliveryPlan;
|
|
use Streamline\Models\MaternityMotherHistory;
|
|
use Streamline\Models\Surgery;
|
|
use Streamline\Models\PelvicExaminationAndAssessment;
|
|
use Streamline\Models\OtherFacilityUterusOperation;
|
|
use Streamline\Models\Consultation;
|
|
use Streamline\Models\OtherFacilityOtherOperation;
|
|
use Streamline\Models\Drug;
|
|
use Streamline\Models\WardTreatment;
|
|
use Streamline\Models\LabourWardAdmission;
|
|
use Barryvdh\DomPDF\Facade\Pdf as DomPDF;
|
|
use Illuminate\Support\Facades\Redirect;
|
|
use Illuminate\Support\Facades\Session;
|
|
use Streamline\Models\AncDeliveryPlan;
|
|
use Streamline\Models\AnteNatalClinicFollowup;
|
|
use Streamline\Models\AntenatalMotherHistory;
|
|
use Illuminate\Support\Facades\URL;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MaternityController 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()
|
|
{
|
|
$patient_id = session()->get('patient_id');
|
|
$episode_id = session()->get('episode_id');
|
|
|
|
// session to pick where user is from // patient episodes or // /wards/select
|
|
Session::put('previous_url', URL::previous());
|
|
}
|
|
|
|
/**
|
|
* Create new episode for a patient.
|
|
*
|
|
* @param request object
|
|
* @return \Illuminate\Foundation\Application|\Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\Routing\Redirector
|
|
*/
|
|
public function create_episode(Request $request)
|
|
{
|
|
$logged_in_user_id = Auth::id();
|
|
$episode = new PatientEpisode;
|
|
|
|
$episode->patient_id = $request->patient_id;
|
|
$episode->clinic_id = get_default_hospital_clinic();
|
|
$episode->created_by = $logged_in_user_id;
|
|
$episode->updated_by = $logged_in_user_id;
|
|
$ward_id = get_name("maternity", "slug", "id", "wards");
|
|
|
|
if ($ward_id != "N/A") {
|
|
try {
|
|
$episode->save();
|
|
$last_inserted_id = $episode->id;
|
|
|
|
// Admit patient in maternity ward
|
|
$inpatient = new InpatientInfo;
|
|
$inpatient->patient_id = $request->patient_id;
|
|
$inpatient->episode_id = $last_inserted_id;
|
|
$inpatient->admitted_on = $request->maternity_date;
|
|
$inpatient->ward_id = $ward_id;
|
|
$inpatient->created_by = Auth::id();
|
|
$inpatient->created_at = Carbon::now();
|
|
$inpatient->save();
|
|
|
|
flash("Patient admitted in MATERNITY")->success();
|
|
return redirect('/patient_episodes/');
|
|
} catch (QueryException $e) {
|
|
flash("An error occured!")->error();
|
|
return back()->withInput();
|
|
}
|
|
} else {
|
|
flash("No ward has been tagged as maternity!")->error();
|
|
return redirect('/patient_episodes/');
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Set a session for the selected episode
|
|
*/
|
|
public function set_episode_session($episode_id)
|
|
{
|
|
$set_episode_session = session()->put(['episode_id' => $episode_id]);
|
|
return $set_episode_session;
|
|
}
|
|
|
|
//redirect to route based on user input //edit //show //crate
|
|
public function route()
|
|
{
|
|
|
|
/*
|
|
* Check if a consultation is pending and then route it to edit page
|
|
* If a consultation is completed, route to the view page
|
|
*/
|
|
|
|
$patient_id = session()->get('patient_id');
|
|
$episode_id = session()->get('episode_id');
|
|
$existing_maternity_inpatient_data = MaternityInpatient::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
|
|
if ($existing_maternity_inpatient_data) {
|
|
switch ($existing_maternity_inpatient_data->completed) {
|
|
case '0': // saved_for_editing
|
|
return self::edit_inpatient();
|
|
case '1': // Completed
|
|
return self::maternity_admission_details($existing_maternity_inpatient_data->id);
|
|
default: // Not created yet
|
|
return self::create_inpatient();
|
|
}
|
|
} else {
|
|
return self::create_inpatient();
|
|
}
|
|
}
|
|
/*
|
|
* Show the form to create maternity inpatient sheet
|
|
*/
|
|
public function create_inpatient()
|
|
{
|
|
|
|
|
|
$episode_id = session()->get('episode_id');
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$diagnoses_patient = DB::table('diagnoses')->orderBy('name', 'asc')->pluck("name", "id");
|
|
$patient_id = $patient_episode_details->patient_id;
|
|
$patient = Patient::find($patient_id);
|
|
|
|
// fetch patient surgeries
|
|
$patient_surgeries = Surgery::leftJoin('users', 'surgeries.surgeon', '=', 'users.id')
|
|
->leftJoin('procedures', 'surgeries.procedure_id', '=', 'procedures.id')
|
|
->where('patient_id', $patient_id)
|
|
->latest('surgeries.created_at')->get(['procedures.name as procedure_name', 'date_surgery_completed', 'users.first_name', 'users.last_name', 'primary_diagnosis', 'other_diagnoses'])->take(5);
|
|
|
|
|
|
|
|
// fetch patient consultations //
|
|
$patient_consultations = Consultation::leftJoin('users', 'consultations.created_by', '=', 'users.id')
|
|
->leftJoin('diagnoses', 'consultations.primary_diagnosis', '=', 'diagnoses.id')
|
|
->leftJoin('wards', 'consultations.ward_id', '=', 'wards.id')
|
|
->leftJoin('outcomes', 'consultations.outcome_id', '=', 'outcomes.id')
|
|
->where(['patient_id' => $patient_id])
|
|
->get([
|
|
|
|
'admitted_on',
|
|
'episode_id',
|
|
'wards.name as ward',
|
|
'diagnoses.name as primary_diagnosis',
|
|
'other_diagnoses',
|
|
'users.first_name',
|
|
'users.last_name',
|
|
'consultations.created_at',
|
|
'outcomes.name as outcome',
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
// fetch previous consultations for patient
|
|
$previous_consultation_inpatient_info = InpatientInfo::leftJoin('diagnoses', 'inpatient_info.primary_diagnosis', '=', 'diagnoses.id')
|
|
->leftJoin('users', 'inpatient_info.discharged_by', '=', 'users.id')
|
|
->leftJoin('wards', 'inpatient_info.ward_id', '=', 'wards.id')
|
|
->leftJoin('triage', 'inpatient_info.episode_id', '=', 'triage.episode_id')
|
|
->leftJoin('consultations', 'inpatient_info.episode_id', '=', 'consultations.episode_id')
|
|
->leftJoin('ordered_investigations', 'inpatient_info.episode_id', '=', 'ordered_investigations.episode_id')
|
|
->leftJoin('ward_treatments', 'inpatient_info.episode_id', '=', 'ward_treatments.episode_id')
|
|
->leftJoin('outcomes', 'inpatient_info.outcome_id', '=', 'outcomes.id')
|
|
->where([['inpatient_info.patient_id', $patient_id], ['inpatient_info.episode_id', '!=', $episode_id]])
|
|
->where('inpatient_info.created_at', '<', $patient_episode_details->created_at)
|
|
->whereNotNull('inpatient_info.admitted_on')
|
|
->where('consultations.outcome_id', '=', 1) //1 = outcome(admitted) from consultations table
|
|
->latest('inpatient_info.created_at')
|
|
->get(
|
|
[
|
|
'diagnoses.name as primary_diagnosis',
|
|
'inpatient_info.other_diagnoses as other_diagnoses',
|
|
'users.first_name as first_name',
|
|
'consultations.created_at as consultation_date',
|
|
'inpatient_info.created_at as inpatient_info_date',
|
|
'diagnoses.name as primary_diagnosis',
|
|
'inpatient_info.other_diagnoses',
|
|
'outcomes.name as outcome',
|
|
'inpatient_info.episode_id',
|
|
'inpatient_info.admitted_on',
|
|
'inpatient_info.discharged_on',
|
|
'users.first_name as first_name',
|
|
'users.last_name as last_name',
|
|
'wards.name as ward',
|
|
'triage.observations',
|
|
'triage.symptoms as triage_symptoms',
|
|
'triage.symptom_duration as triage_symptom_duration',
|
|
'consultations.symptoms as consultation_symptoms',
|
|
'consultations.symptom_duration as consultation_symptom_duration',
|
|
DB::raw("CONCAT(triage.symptoms, '', consultations.symptoms) as symptoms"),
|
|
DB::raw("CONCAT(triage.symptom_duration, ', ', consultations.symptom_duration) as symptom_duration"),
|
|
]
|
|
|
|
)->take(5);
|
|
|
|
|
|
/*check if episode record exists in the db and redirect to show details if it does */
|
|
$existing_maternity_inpatient = MaternityInpatient::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$latest_existing_maternity_inpatient_data = MaternityInpatient::where(['patient_id' => $patient_id])->latest()->first();
|
|
|
|
if (!is_null($existing_maternity_inpatient)) {
|
|
flash('Patient already admitted to maternity for this episode')->error();
|
|
return redirect('maternity_admission_details');
|
|
}
|
|
|
|
// past obstetric history
|
|
$obstetric_history_details = ObstetricHistory::where(['patient_id' => $patient_id])->orderBy('obstetric_date', 'desc')->get();
|
|
|
|
$categories = DB::table('patient_categories')->where('available', 1)->pluck("name", "id");
|
|
$marital_statuses = DB::table('marital_statuses')->pluck("name", "id");
|
|
$diagnoses = DB::table('diagnoses')->where('available', 1)->orderBy('name', 'asc')->pluck("name", "id")->prepend('- select -', '');
|
|
$relationships = DB::table('family_relations')->pluck('name', 'id');
|
|
$occupations = DB::table('occupations')->pluck('name', 'id');
|
|
|
|
$patient_categories = DB::table('patient_categories')->where('available', 1)->pluck('name', 'id');
|
|
$drug_categories = DB::table('drug_categories')->get();
|
|
$documents = PatientDocument::where('patient_id', $patient_id)->orderBy('created_at', 'desc')->get();
|
|
//allergies and alerts
|
|
$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');
|
|
$consultation_id = get_name($episode_id, "id", "consultation_id", "patient_episodes");
|
|
$triage_id = get_name($episode_id, "id", "triage_id", "patient_episodes");
|
|
$triage = Triage::find($triage_id); //this maybe null since one may be admitted straight away
|
|
|
|
$anc_registration = AnteNatalClinicRegistration::where(['patient_id' => $patient_id])->orderBy('id', 'desc')->first();
|
|
$latest_existing_delivery_plan = AncDeliveryPlan::where(['patient_id' => $patient_id])->latest()->first();
|
|
$latest_existing_anc_clinic_followup = AnteNatalClinicFollowup::where(['patient_id' => $patient_id])->latest()->first();
|
|
$diagnoses_all = DB::table('diagnoses')->select('id', 'prompts', 'reference_areas', 'reference_names')->get();
|
|
|
|
|
|
$latest_existing_anc_hiv_info = AncVdrlHiv::where(['patient_id' => $patient_id])->latest()->first();
|
|
$latest_existing_antenatal_mother_history = AntenatalMotherHistory::where(['patient_id' => $patient_id])->latest()->first();
|
|
$emergency_signs = EmergencySign::where(['patient_id' => $patient_id, 'triage_id' => $triage_id, 'episode_id' => $episode_id])->get();
|
|
$patient_documents = PatientDocument::where(['patient_id' => $patient_id])->get();
|
|
$diagnosis = Diagnosis::where('available', 1)->orderby('name', 'asc')->get();
|
|
$obstetric_history = ObstetricHistory::where(['patient_id' => $patient_id])->orderBy('obstetric_date', 'desc')->get();
|
|
$existing_blood_transfusion = AnteNatalClinicBloodTransfusion::where(['patient_id' => $patient_id])->first();
|
|
$anc_blood_transfusion = AnteNatalClinicBloodTransfusion::where(['patient_id' => $patient_id])->get();
|
|
|
|
$blood_groups = DB::table('blood_groups')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$referrals = DB::table('referral_hospitals')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$accuracies = DB::table('ante_natal_clinic_accuracies')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$anc_outcomes = DB::table('ante_natal_clinic_outcomes')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$hiv_statuses = ['' => '-- Select --', '0' => 'Negative', '1' => 'Positive', '3' => 'Unknown'];
|
|
$maternity_progress = DB::table('maternity_progress')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$family_planning_methods = FamilyPlanningMethod::orderBy('name', 'asc')->pluck("name", "id");
|
|
$family_planning_methods_data = FamilyPlanningMethod::all();
|
|
|
|
$caesarian_sections = CaesarianSection::orderBy('name', 'asc')->pluck("name", "id")->prepend('- Select -', '');
|
|
$uterus_operations = UterusOperation::orderBy('name', 'asc')->pluck("name", "id");
|
|
$gender_based_violence = GenderViolence::orderBy('name', 'asc')->pluck("name", "id");
|
|
|
|
// prep the inpatient investigation arrays and counters
|
|
$opd_investigations = [];
|
|
$ward_investigations = [];
|
|
$symptoms = Symptom::pluck("name", "id");
|
|
|
|
// get all investigations ordered in this episode
|
|
$ordered_investigations = OrderedInvestigation::where(['episode_id' => $episode_id])->get();
|
|
// ordered investigations
|
|
$ordered_investigations = OrderedInvestigation::where(['patient_id' => $patient_id])->get();
|
|
|
|
// get all results
|
|
$investigation_results_order_ids = InvestigationResults::pluck('order_id', 'id')->toArray();
|
|
|
|
foreach ($ordered_investigations as $investigation) {
|
|
$investigation_ids = explode(",", $investigation->investigation_id);
|
|
$inpatient_status = explode(",", $investigation->for_inpatient);
|
|
|
|
// check if results are available for this investigation
|
|
if (in_array($investigation->id, $investigation_results_order_ids)) {
|
|
// get the key if available
|
|
$key = array_search($investigation->id, $investigation_results_order_ids);
|
|
|
|
// get the results object
|
|
$results = InvestigationResults::find($key);
|
|
|
|
// exclude obstetric u/s results
|
|
if ($results->result_type != "Ultrasound_Obstetric") {
|
|
$investigation_results = explode(",", $results->value);
|
|
$investigation_per_valid = explode(",", $results->per_investigation);
|
|
$investigation_comments = explode(",", $results->comment);
|
|
|
|
if ($results->all_authenticated == 1) {
|
|
for ($i = 0; $i < count($inpatient_status); $i++) {
|
|
if ($inpatient_status[$i] == 0) {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$opd_investigations['name'][] = $result->name;
|
|
$opd_investigations['value'][] = $investigation_results[$i];
|
|
$opd_investigations['comment'][] = $investigation_comments[$i];
|
|
} else {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$ward_investigations['name'][] = $result->name;
|
|
$ward_investigations['value'][] = $investigation_results[$i];
|
|
$ward_investigations['comment'][] = $investigation_comments[$i];
|
|
}
|
|
}
|
|
} else {
|
|
for ($i = 0; $i < count($inpatient_status); $i++) {
|
|
if ($investigation_per_valid[$i] == 1) {
|
|
// this investigation is authenticated
|
|
if ($inpatient_status[$i] == 0) {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$opd_investigations['name'][] = $result->name;
|
|
$opd_investigations['value'][] = $investigation_results[$i];
|
|
$opd_investigations['comment'][] = $investigation_comments[$i];
|
|
} else {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$ward_investigations['name'][] = $result->name;
|
|
$ward_investigations['value'][] = $investigation_results[$i];
|
|
$ward_investigations['comment'][] = $investigation_comments[$i];
|
|
}
|
|
} else {
|
|
if ($inpatient_status[$i] == 0) {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$opd_investigations['name'][] = $result->name;
|
|
$opd_investigations['value'][] = "Pending";
|
|
$opd_investigations['comment'][] = "Pending";
|
|
} else {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$ward_investigations['name'][] = $result->name;
|
|
$ward_investigations['value'][] = "Pending";
|
|
$ward_investigations['comment'][] = "Pending";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
for ($i = 0; $i < count($inpatient_status); $i++) {
|
|
if ($inpatient_status[$i] == 0) {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$opd_investigations['name'][] = $result->name;
|
|
$opd_investigations['value'][] = "Pending";
|
|
$opd_investigations['comment'][] = "Pending";
|
|
} else {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$ward_investigations['name'][] = $result->name;
|
|
$ward_investigations['value'][] = "Pending";
|
|
$ward_investigations['comment'][] = "Pending";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// previous consultations
|
|
if (session()->get('consultation_with_notes') == 1) {
|
|
$consultation_with_notes = true;
|
|
} else {
|
|
$consultation_with_notes = false;
|
|
}
|
|
|
|
|
|
$patient_episodes = DB::table('patient_episodes')->where('patient_id', $patient_id)->whereNotIn('id', [$episode_id])->get();
|
|
$episode = PatientEpisode::where('id', $episode_id)->first();
|
|
|
|
|
|
$past_episodes_info = [];
|
|
$counter = 0;
|
|
|
|
foreach ($patient_episodes as $patient_episode) {
|
|
if ($counter == 5) {
|
|
break;
|
|
}
|
|
|
|
if (!is_episode_safe_to_delete($patient_episode->id) && isset($patient_episode->consultation_id)) { // exclude empty episodes
|
|
$consultations_details = DB::table('consultations')->find($patient_episode->consultation_id);
|
|
|
|
if ($consultations_details) {
|
|
$past_episodes_info[$counter]["start_date"] = streamline_date_time($patient_episode->created_at);
|
|
$past_episodes_info[$counter]["episode_id"] = $patient_episode->id;
|
|
|
|
$past_episodes_info[$counter]["primary_diagnosis"] = $consultations_details->primary_diagnosis ?? 0;
|
|
if (unserialize($consultations_details->other_diagnoses)) {
|
|
$past_episodes_info[$counter]["other_diagnoses"] = unserialize($consultations_details->other_diagnoses);
|
|
} else {
|
|
$past_episodes_info[$counter]["other_diagnoses"] = [];
|
|
}
|
|
|
|
$past_episodes_info[$counter]["outcome"] = $consultations_details->outcome_id ?? 0;
|
|
$doctor_id = $consultations_details->consultation_done_by ?? $consultations_details->created_by;
|
|
$past_episodes_info[$counter]["doctor"] = get_full_name($doctor_id, 'id', 'first_name', 'last_name', 'users');
|
|
$past_episodes_info[$counter]["clinic"] = isset($patient_episode->clinic_id) ? get_name($patient_episode->clinic_id, 'id', 'name', 'clinics') : "N/A";
|
|
|
|
if (isset($patient_episode->triage_id)) {
|
|
$triage_details = DB::table('triage')->find($patient_episode->triage_id);
|
|
|
|
if ($triage_details) {
|
|
$past_episodes_info[$counter]["symptoms"] = [
|
|
"symptom_duration" => $triage_details->symptom_duration,
|
|
"symptoms" => $triage_details->symptoms
|
|
];
|
|
|
|
$observations = explode(",", $triage_details->observations);
|
|
$past_episodes_info[$counter]["resp"] = "N/A";
|
|
$past_episodes_info[$counter]["mmhg"] = "N/A";
|
|
$past_episodes_info[$counter]["pulse"] = "N/A";
|
|
$past_episodes_info[$counter]["temp"] = "N/A";
|
|
|
|
foreach ($observations as $observation) {
|
|
if (strpos($observation, "Temperature") !== false) {
|
|
$past_episodes_info[$counter]["temp"] = explode("=", $observation)[1];
|
|
}
|
|
|
|
if (strpos($observation, "Pulse") !== false) {
|
|
$past_episodes_info[$counter]["pulse"] = explode("=", $observation)[1];
|
|
}
|
|
|
|
if (strpos($observation, "Systolic bp") !== false) {
|
|
$past_episodes_info[$counter]["mmhg"] = explode("=", $observation)[1];
|
|
}
|
|
|
|
if (strpos($observation, "Diastolic bp") !== false) {
|
|
$past_episodes_info[$counter]["mmhg"] = $past_episodes_info[$counter]["mmhg"] . " / " . explode("=", $observation)[1];
|
|
}
|
|
|
|
if (strpos($observation, "Respirations") !== false) {
|
|
$past_episodes_info[$counter]["resp"] = explode("=", $observation)[1];
|
|
}
|
|
}
|
|
} else {
|
|
$past_episodes_info[$counter]["symptoms"] = [];
|
|
$past_episodes_info[$counter]["resp"] = "N/A";
|
|
$past_episodes_info[$counter]["mmhg"] = "N/A";
|
|
$past_episodes_info[$counter]["pulse"] = "N/A";
|
|
$past_episodes_info[$counter]["temp"] = "N/A";
|
|
}
|
|
} else {
|
|
$past_episodes_info[$counter]["symptoms"] = [];
|
|
$past_episodes_info[$counter]["resp"] = "N/A";
|
|
$past_episodes_info[$counter]["mmhg"] = "N/A";
|
|
$past_episodes_info[$counter]["pulse"] = "N/A";
|
|
$past_episodes_info[$counter]["temp"] = "N/A";
|
|
}
|
|
|
|
$counter++;
|
|
}
|
|
}
|
|
}
|
|
|
|
// end previous consultations
|
|
|
|
return view(
|
|
'maternity::maternity.inpatient_sheet',
|
|
compact(
|
|
'patient_episodes',
|
|
'past_episodes_info',
|
|
'episode',
|
|
'consultation_with_notes',
|
|
'latest_existing_maternity_inpatient_data',
|
|
'previous_consultation_inpatient_info',
|
|
'existing_blood_transfusion',
|
|
'patient_id',
|
|
'episode_id',
|
|
'patient',
|
|
'categories',
|
|
'patient_surgeries',
|
|
'patient_consultations',
|
|
'marital_statuses',
|
|
'diagnoses',
|
|
'diagnoses_all',
|
|
'diagnoses_patient',
|
|
'relationships',
|
|
'occupations',
|
|
'drug_categories',
|
|
'documents',
|
|
'drug_categories_array',
|
|
'known_patient_alerts',
|
|
'known_patient_allergies',
|
|
'consultation_id',
|
|
'triage_id',
|
|
'triage',
|
|
'anc_registration',
|
|
'emergency_signs',
|
|
'patient_documents',
|
|
'diagnosis',
|
|
'obstetric_history',
|
|
'anc_blood_transfusion',
|
|
'blood_groups',
|
|
'referrals',
|
|
'accuracies',
|
|
'anc_outcomes',
|
|
'hiv_statuses',
|
|
'maternity_progress',
|
|
'ward_investigations',
|
|
'opd_investigations',
|
|
'symptoms',
|
|
'obstetric_history_details',
|
|
'family_planning_methods',
|
|
'caesarian_sections',
|
|
'uterus_operations',
|
|
'gender_based_violence',
|
|
'latest_existing_delivery_plan',
|
|
'latest_existing_antenatal_mother_history',
|
|
'latest_existing_anc_clinic_followup',
|
|
'latest_existing_anc_hiv_info',
|
|
|
|
)
|
|
);
|
|
}
|
|
|
|
/*
|
|
* Show the form to create maternity delivery record
|
|
*/
|
|
public function create_delivery_record()
|
|
{
|
|
$episode_id = session()->get('episode_id');
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$patient_id = $patient_episode_details->patient_id;
|
|
$patient = Patient::find($patient_id);
|
|
/* check if record with this same episode has been previously entered and display the details page instead */
|
|
$existing_delivery_record = MaternityDeliveryRecord::where(['episode_id' => $episode_id])->first();
|
|
if (!is_null($existing_delivery_record)) {
|
|
return redirect('delivery_record_details');
|
|
}
|
|
|
|
$categories = DB::table('patient_categories')->where('available', 1)->pluck("name", "id");
|
|
$marital_statuses = DB::table('marital_statuses')->pluck("name", "id");
|
|
$diagnoses = DB::table('diagnoses')->where('available', 1)->orderBy('name', 'asc')->pluck("name", "id");
|
|
$relationships = DB::table('family_relations')->pluck('name', 'id');
|
|
$occupations = DB::table('occupations')->pluck('name', 'id');
|
|
$patient_categories = DB::table('patient_categories')->where('available', 1)->pluck('name', 'id');
|
|
$drug_categories = DB::table('drug_categories')->get();
|
|
$documents = PatientDocument::where('patient_id', $patient_id)->orderBy('created_at', 'desc')->get();
|
|
//allergies and alerts
|
|
$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');
|
|
|
|
/* SELECT User_Id, First_Name,Last_Name FROM users WHERE Active = 1 AND User_Group_Id in (7,37,39,42,47,59,60) ORDER BY First_Name ASC; */
|
|
$users = DB::table('users')->orderBy("first_name", "asc")->get()->toArray();
|
|
$allowed_users = DB::table('users')->orderBy('first_name')->pluck('first_name', 'id')->prepend('- select -', '');
|
|
$mode_of_delivery = DB::table('mode_of_delivery')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$location_of_delivery = DB::table('location_of_delivery')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$respiration_minutes = DB::table('spontaneous_regular_respiration_in_minutes')->pluck('minutes', 'id');
|
|
$wards = DB::table('wards')->where('available', 1)->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', ''); /* select post natal ward */
|
|
return view('maternity::maternity.delivery_record', compact('patient_id', 'episode_id', 'patient', 'categories', 'drug_categories_array', 'known_patient_alerts', 'known_patient_allergies', 'marital_statuses', 'diagnoses', 'relationships', 'occupations', 'patient_categories', 'drug_categories', 'documents', 'allowed_users', 'users', 'mode_of_delivery', 'location_of_delivery', 'respiration_minutes', 'wards'));
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
|
|
|
|
public function check_hiv_test_date_if_three_months(Request $request)
|
|
{
|
|
|
|
$pickedDate = Carbon::parse($request->input('hiv_date'));
|
|
$currentDate = Carbon::now();
|
|
$response = '';
|
|
|
|
if ($pickedDate->diffInMonths($currentDate) >= 3) {
|
|
$response = "<div class='alert alert-success'>The captured date is 3 months ago or more.</div>";
|
|
} else {
|
|
$response = "<div class='alert alert-warning'>The captured date is less than 3 months ago.</div>";
|
|
}
|
|
|
|
return $response;
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
|
|
|
|
//start database transaction
|
|
/* try to perform this set of db transactions and if any fails, rollback everything */
|
|
DB::transaction(function () use ($request) {
|
|
|
|
// validations
|
|
$validatedData = $request->validate([
|
|
'femur_fracture_details' => 'nullable',
|
|
'femur_fracture_date' => 'nullable',
|
|
]);
|
|
|
|
$episode_id = session()->get('episode_id');
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$patient_id = $patient_episode_details->patient_id;
|
|
$maternity_inpatient = MaternityInpatient::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
if (empty($maternity_inpatient)) {
|
|
$maternity_inpatient = new MaternityInpatient;
|
|
$maternity_inpatient->patient_id = $patient_id;
|
|
$maternity_inpatient->episode_id = $episode_id;
|
|
$maternity_inpatient->created_by = Auth::id();
|
|
} else $maternity_inpatient->updated_by = Auth::id();
|
|
|
|
|
|
$maternity_inpatient->primary_diagnosis = $request->primary_diagnosis;
|
|
$maternity_inpatient->other_diagnoses = (!empty($request->other_diagnosis[0])) ? serialize($request->other_diagnosis) : null;
|
|
$maternity_inpatient->gravida = $request->gravida;
|
|
$maternity_inpatient->para = $request->para;
|
|
$maternity_inpatient->abortion = $request->abortion;
|
|
$maternity_inpatient->ectopic_pregnancies = $request->ectopic_pregnancies;
|
|
$maternity_inpatient->postpartum = $request->postpartum;
|
|
$maternity_inpatient->previous_pph = $request->previous_pph;
|
|
$maternity_inpatient->previous_pph_details = $request->pph_details;
|
|
$maternity_inpatient->previous_scar = $request->previous_scar;
|
|
$maternity_inpatient->previous_scar_number = $request->scar_number;
|
|
$maternity_inpatient->previous_scar_indication = $request->scar_indication;
|
|
$maternity_inpatient->other_comments_pph = $request->other_comments_pph;
|
|
$maternity_inpatient->lmp = !is_null($request->lmp) ? Carbon::createFromFormat('d/m/Y', $request->lmp)->toDateString() : null;
|
|
$maternity_inpatient->accuracy = $request->accuracy;
|
|
$maternity_inpatient->edd = isset($request->edd) ? Carbon::createFromFormat('d/m/Y', $request->edd)->toDateString() : null;
|
|
$maternity_inpatient->referral_from = $request->refferal;
|
|
$maternity_inpatient->progress = $request->progress;
|
|
$maternity_inpatient->born_before_arrival = $request->born_before_arrival;
|
|
$maternity_inpatient->vdrl_location = $request->vdrl_location;
|
|
$maternity_inpatient->vdrl_date = !is_null($request->vdrl_date) ? Carbon::createFromFormat('d/m/Y', $request->vdrl_date)->toDateString() : null;
|
|
$maternity_inpatient->vdrl_result = $request->vdrl_result;
|
|
$maternity_inpatient->hiv_location = $request->hiv_location;
|
|
$maternity_inpatient->hiv_date = !is_null($request->hiv_date) ? Carbon::createFromFormat('d/m/Y', $request->hiv_date)->toDateString() : null;
|
|
$maternity_inpatient->hiv_result_usaid = $request->hiv_result;
|
|
$maternity_inpatient->scan_edd = !is_null($request->scan_edd) ? Carbon::createFromFormat('d/m/Y', $request->scan_edd)->toDateString() : null;
|
|
$maternity_inpatient->gestation_from_scan = $request->gestation_from_scan;
|
|
$maternity_inpatient->history_of_fits = $request->history_of_fits;
|
|
$maternity_inpatient->history_of_aph = $request->history_of_aph;
|
|
$maternity_inpatient->aph_details = $request->aph_details;
|
|
$maternity_inpatient->fits_details = $request->fits_details;
|
|
$maternity_inpatient->other_comments = $request->other_comments;
|
|
$maternity_inpatient->iufd = $request->iufd;
|
|
$maternity_inpatient->weeks_of_amenorrhoea = $request->weeks_of_amenorrhoea;
|
|
$maternity_inpatient->delivery_recomendation = $request->delivery_recomendation;
|
|
$maternity_inpatient->pregnancy_complications = implode(',', $request->pregnancy_complications ?? []);
|
|
$maternity_inpatient->other_pregnancy_complications = $request->other_pregnancy_complications;
|
|
$maternity_inpatient->physical_examination = implode(',', $request->physical_examination ?? []);
|
|
$maternity_inpatient->heart_physical_examination_details = $request->heart_physical_examination_details;
|
|
$maternity_inpatient->breasts_physical_examination_details = $request->breasts_physical_examination_details;
|
|
$maternity_inpatient->legs_physical_examination_details = $request->legs_physical_examination_details;
|
|
$maternity_inpatient->lungs_physical_examination_details = $request->lungs_physical_examination_details;
|
|
$maternity_inpatient->teeth_physical_examination_details = $request->teeth_physical_examination_details;
|
|
$maternity_inpatient->other_physical_examinations = $request->other_physical_examinations;
|
|
$maternity_inpatient->other_obstetric_risk_factors = $request->other_obstetric_risk_factors;
|
|
$maternity_inpatient->current_acute_problems = isset($request->current_acute_problems) ? implode(',', $request->current_acute_problems) : '';
|
|
$maternity_inpatient->obstetric_risk_factors = isset($request->obstetric_risk_factors) ? implode(',', $request->obstetric_risk_factors) : '';
|
|
$maternity_inpatient->blood_transfusion_available = isset($request->blood_transfusion_available) ? implode(',', $request->blood_transfusion_available) : '';
|
|
$maternity_inpatient->fractures = isset($request->fractures) ? implode(',', $request->fractures) : '';
|
|
|
|
$maternity_inpatient->blood_transfusion_details = $request->blood_transfusion_details;
|
|
$maternity_inpatient->pelvis_fracture_date = !is_null($request->pelvis_fracture_date) ? Carbon::createFromFormat('d/m/Y', $request->pelvis_fracture_date)->toDateString() : null;
|
|
$maternity_inpatient->pelvis_fracture_details = $request->pelvis_fracture_details;
|
|
$maternity_inpatient->spine_fracture_date = !is_null($request->spine_fracture_date) ? Carbon::createFromFormat('d/m/Y', $request->spine_fracture_date)->toDateString() : null;
|
|
$maternity_inpatient->spine_fracture_details = $request->spine_fracture_details;
|
|
$maternity_inpatient->femur_fracture_date = !is_null($request->femur_fracture_date) ? Carbon::createFromFormat('d/m/Y', $request->femur_fracture_date)->toDateString() : null;
|
|
|
|
$maternity_inpatient->femur_fracture_details = $request->femur_fracture_details;
|
|
$maternity_inpatient->other_fracture_details = $request->other_fracture_details;
|
|
$maternity_inpatient->created_by = auth()->user()->id;
|
|
|
|
if ($request->get('submit-btn') == 'submit_maternity_admission') {
|
|
// save and complete
|
|
$maternity_inpatient->completed = 1;
|
|
$maternity_inpatient->save();
|
|
} else {
|
|
// save draft
|
|
$maternity_inpatient->completed = 0;
|
|
$maternity_inpatient->save();
|
|
}
|
|
|
|
|
|
$maternity_clinic_id = get_name('MATERNITY', 'name', 'id', 'wards'); //get maternity ward id
|
|
|
|
// store past obstetric history data with child data
|
|
for ($k = 1; $k <= $request->pregnancy_number; $k++) {
|
|
$pregnancy = 'pregnancy_' . $k;
|
|
$obs_date = $pregnancy . '_obstetric_date';
|
|
$gestation = $pregnancy . '_gestation';
|
|
$outcome = $pregnancy . '_obstetric_outcome';
|
|
$abortion_outcome = $pregnancy . '_abortion_outcome';
|
|
$delivery_type = $pregnancy . '_delivery_type';
|
|
$past_pregnancy_complications = $pregnancy . '_past_pregnancy_complications';
|
|
$past_pregnancy_comment = $pregnancy . '_past_pregnancy_comment';
|
|
$puerperium = $pregnancy . '_puerperium';
|
|
$child_name = $pregnancy . '_child_name';
|
|
$child_gender = $pregnancy . '_child_gender';
|
|
$child_patient_number = $pregnancy . '_child_patient_number';
|
|
$child_birth_weight = $pregnancy . '_child_birth_weight';
|
|
$child_immunisation_status = $pregnancy . '_child_immunisation_status';
|
|
$child_health_condition = $pregnancy . '_child_health_condition';
|
|
$child_counter = !empty($request->$child_name[0]) ? count($request->$child_name) : 0;
|
|
$children = [];
|
|
if ($child_counter > 0) {
|
|
for ($t = 0; $t < $child_counter; $t++) {
|
|
$children[] = [
|
|
'health_condition' => $request->$child_health_condition[$t],
|
|
'immunisation_status' => $request->$child_immunisation_status[$t],
|
|
'birth_weight' => $request->$child_birth_weight[$t],
|
|
'patient_number' => $request->$child_patient_number[$t],
|
|
'gender' => $request->$child_gender[$t],
|
|
'name' => $request->$child_name[$t]
|
|
];
|
|
}
|
|
}
|
|
|
|
//check if past_obs_date is filled
|
|
if (isset($request->$obs_date)) {
|
|
$obstetric_history = new ObstetricHistory;
|
|
$obstetric_history->patient_id = $patient_id;
|
|
$obstetric_history->episode_id = $episode_id;
|
|
$obstetric_history->obstetric_date = isset($request->$obs_date) ? Carbon::createFromFormat('d/m/Y', $request->$obs_date)->toDateString() : null;
|
|
$obstetric_history->gestation = $request->$gestation;
|
|
$obstetric_history->outcome = $request->$outcome;
|
|
$obstetric_history->clinic_id = $maternity_clinic_id;
|
|
$obstetric_history->abortion_outcome = $request->$abortion_outcome;
|
|
$obstetric_history->delivery_type = $request->$delivery_type;
|
|
$obstetric_history->past_pregnancy_complications = $request->$past_pregnancy_complications;
|
|
$obstetric_history->past_pregnancy_comment = $request->$past_pregnancy_comment;
|
|
$obstetric_history->puerperium = $request->$puerperium;
|
|
$obstetric_history->children = !empty($children) ? json_encode($children) : null;
|
|
$obstetric_history->created_by = auth()->user()->id;
|
|
|
|
$obstetric_history->save();
|
|
}
|
|
}
|
|
|
|
// delivery plan
|
|
$delivery_plan = new MaternityDeliveryPlan;
|
|
$delivery_plan->patient_id = $patient_id;
|
|
$delivery_plan->episode_id = $episode_id;
|
|
$delivery_plan->person_you_live_with = $request->person_you_live_with;
|
|
$delivery_plan->transport_means_to_facility = $request->transport_means_to_facility;
|
|
$delivery_plan->person_to_accompany_you = $request->person_to_accompany_you;
|
|
$delivery_plan->person_to_look_after_home = $request->person_to_look_after_home;
|
|
$delivery_plan->mother_partner_screened_for = implode(',', $request->mother_partner_screened_for ?? []);
|
|
$delivery_plan->family_planning_method_plan = $request->family_planning_method_plan;
|
|
$delivery_plan->person_to_stay_at_facility = $request->person_to_stay_at_facility;
|
|
$delivery_plan->delivery_method = $request->delivery_method;
|
|
$delivery_plan->backup_delivery_method = $request->backup_delivery_method;
|
|
$delivery_plan->after_birth_disposal = $request->after_birth_disposal;
|
|
$delivery_plan->created_by = auth()->user()->id;
|
|
$delivery_plan->save();
|
|
|
|
// maternity mother history
|
|
$maternity_mother_history = new MaternityMotherHistory;
|
|
$maternity_mother_history->patient_id = $patient_id;
|
|
$maternity_mother_history->episode_id = $episode_id;
|
|
$maternity_mother_history->cycle_length = $request->cycle_length;
|
|
$maternity_mother_history->menses_length = $request->menses_length;
|
|
$maternity_mother_history->menses_amount = $request->menses_amount;
|
|
$maternity_mother_history->family_planning_method = $request->family_planning_method;
|
|
$maternity_mother_history->date_discontinued = isset($request->date_discontinued) ? Carbon::createFromFormat('d/m/Y', $request->date_discontinued)->toDateString() : null;
|
|
$maternity_mother_history->why_stop_family_planning = $request->why_stop_family_planning;
|
|
$maternity_mother_history->medical_presentations = implode(',', $request->medical_presentations ?? []);
|
|
$maternity_mother_history->other_medical_presentations = $request->other_medical_presentations;
|
|
$maternity_mother_history->sgbv_risk = implode(',', $request->sgbv_risk ?? []);
|
|
$maternity_mother_history->other_sgbv_risk = $request->other_sgbv_risk;
|
|
$maternity_mother_history->husband_health = $request->husband_health;
|
|
$maternity_mother_history->history_of_aph = $request->history_of_aph;
|
|
$maternity_mother_history->history_aph_details = $request->history_aph_details;
|
|
$maternity_mother_history->history_of_fits = $request->history_of_fits;
|
|
$maternity_mother_history->history_fit_details = $request->history_fit_details;
|
|
$maternity_mother_history->other_medical_history_comment = $request->other_medical_history_comment;
|
|
|
|
foreach ($request->uterus_operations_name as $key => $operation) {
|
|
if (!empty($operation))
|
|
$uterine_operations[] = ['name' => $operation, 'date' => $request->uterus_operations_date[$key], 'facility_name' => $request->uterus_operations_facility_name[$key]];
|
|
}
|
|
|
|
foreach ($request->other_operations_name as $key => $operation) {
|
|
if (!empty($operation))
|
|
$other_surgeries[] = ['name' => $operation, 'date' => $request->other_operations_name_date[$key], 'facility_name' => $request->other_operations_name_facility_name[$key]];
|
|
}
|
|
|
|
$maternity_mother_history->uterine_surgeries = !empty($uterine_operations) ? json_encode($uterine_operations) : null;
|
|
$maternity_mother_history->other_surgeries = !empty($other_surgeries) ? json_encode($other_surgeries) : null;
|
|
|
|
|
|
$maternity_mother_history->created_by = auth()->user()->id;
|
|
$maternity_mother_history->save();
|
|
|
|
// Blood Transfusion
|
|
$blood_group = $request->blood_group;
|
|
$transfusion_date_array = $request->transfusion_date;
|
|
$no_of_units_array = $request->no_of_units;
|
|
$transfusion_comment_array = $request->transfusion_comment;
|
|
|
|
|
|
if (is_array($transfusion_date_array) && !empty($transfusion_date_array) && !in_array(null, $transfusion_date_array, true)) {
|
|
// The 'transfusion_date' parameter is an array and contains null values
|
|
if (!empty($transfusion_date_array)) for ($i = 0; $i < count($transfusion_date_array); $i++) {
|
|
$anc_blood_transfusion = new AnteNatalClinicBloodTransfusion;
|
|
$anc_blood_transfusion->patient_id = $patient_id;
|
|
$anc_blood_transfusion->episode_id = $episode_id;
|
|
$anc_blood_transfusion->blood_group_id = $blood_group;
|
|
$anc_blood_transfusion->transfusion_date = isset($transfusion_date_array[$i]) ? Carbon::createFromFormat('d/m/Y', $transfusion_date_array[$i])->toDateString() : null;
|
|
$anc_blood_transfusion->number_of_units = $no_of_units_array[$i];
|
|
$anc_blood_transfusion->comments = $transfusion_comment_array[$i];
|
|
$anc_blood_transfusion->created_by = auth()->user()->id;
|
|
|
|
$anc_blood_transfusion->save();
|
|
}
|
|
} else {
|
|
// Handle when its empty and has null value
|
|
Log::info("transfusion is null");
|
|
}
|
|
|
|
// pelvic examination and assessement
|
|
$pelvic_examination_and_assessment = new PelvicExaminationAndAssessment;
|
|
$pelvic_examination_and_assessment->patient_id = $patient_id;
|
|
$pelvic_examination_and_assessment->episode_id = $episode_id;
|
|
$pelvic_examination_and_assessment->vulva = $request->vulva;
|
|
$pelvic_examination_and_assessment->vagina = $request->vagina;
|
|
$pelvic_examination_and_assessment->cervix = $request->cervix;
|
|
$pelvic_examination_and_assessment->dilatation = $request->dilatation;
|
|
$pelvic_examination_and_assessment->uterine_adnexa = $request->uterine_adnexa;
|
|
$pelvic_examination_and_assessment->moniliasis = $request->moniliasis;
|
|
$pelvic_examination_and_assessment->diagonal_conjugate = round($request->diagonal_conjugate, 2);
|
|
$pelvic_examination_and_assessment->sacrum = $request->sacrum;
|
|
$pelvic_examination_and_assessment->ischial_spinces = $request->ischial_spinces;
|
|
$pelvic_examination_and_assessment->sub_public_angle = $request->sub_public_angle;
|
|
$pelvic_examination_and_assessment->ischial_tuberosities = $request->ischial_tuberosities;
|
|
$pelvic_examination_and_assessment->pelvic_adequate = $request->pelvic_adequate;
|
|
$pelvic_examination_and_assessment->created_by = auth()->user()->id;
|
|
$pelvic_examination_and_assessment->save();
|
|
|
|
|
|
});
|
|
|
|
//end database transaction
|
|
|
|
// pick previoius_url //picked from /create
|
|
$previous_url = Session::get('previous_url');
|
|
|
|
switch ($request->get('submit-btn')) {
|
|
case 'save_maternity_admission':
|
|
flash('Maternity Inpatient Sheet Saved successfully')->success();
|
|
if ($previous_url == url('/wards/select')) {
|
|
return redirect('/wards/select');
|
|
} elseif ($previous_url == url('/patient_episodes')) {
|
|
return redirect('patient_episodes');
|
|
} else {
|
|
return redirect('patient_episodes');
|
|
}
|
|
|
|
break;
|
|
case 'submit_maternity_admission':
|
|
flash('Maternity Inpatient Sheet Completed and Submitted successfully')->success();
|
|
if ($previous_url == url('/wards/select')) {
|
|
return redirect('/wards/select');
|
|
} elseif ($previous_url == url('/patient_episodes')) {
|
|
return redirect('patient_episodes');
|
|
} else {
|
|
return redirect('patient_episodes');
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Store a newly created delivery record in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function store_delivery_record(Request $request)
|
|
{
|
|
$episode_id = session()->get('episode_id');
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$patient_id = $patient_episode_details->patient_id;
|
|
$parent_record = Patient::find($patient_id);
|
|
|
|
//inputs from the delivery section
|
|
$foetal_number = $request->foetal_number; //not array
|
|
$date_of_birth = implode(',', $request->birthdate);
|
|
$delivery_time = implode(',', $request->deliveryTime);
|
|
$duration1 = implode(',', $request->duration1);
|
|
$duration2_hrs = implode(',', $request->duration2_hrs);
|
|
$duration2_mins = implode(',', $request->duration2_mins);
|
|
$baby_one_duration2 = $request->duration2_hrs[0] . ' and ' . $request->duration2_mins[0];
|
|
$baby_two_duration2 = $request->duration2_hrs[1] . ' and ' . $request->duration2_mins[1];
|
|
$baby_three_duration2 = $request->duration2_hrs[2] . ' and ' . $request->duration2_mins[2];
|
|
$duration2 = [$baby_one_duration2, $baby_two_duration2, $baby_three_duration2];
|
|
$duration2 = implode(',', $duration2);
|
|
|
|
$baby_one_duration3 = $request->duration3_hrs[0] . ' and ' . $request->duration3_mins[0];
|
|
$baby_two_duration3 = $request->duration3_hrs[1] . ' and ' . $request->duration3_mins[1];
|
|
$baby_three_duration3 = $request->duration3_hrs[2] . ' and ' . $request->duration3_mins[2];
|
|
$duration3 = [$baby_one_duration3, $baby_two_duration3, $baby_three_duration3];
|
|
$duration3 = implode(',', $duration3);
|
|
|
|
$delivered_by_cadre = implode(',', $request->deliveredByCadre); //1-staff,2-student
|
|
$delivered_by_name = implode(',', $request->deliveredByName); //picks user IDs
|
|
$supervised_by = implode(',', $request->supervisedBy); //picks user IDs
|
|
$mode_of_delivery = implode(',', $request->modeOfDelivery);
|
|
$indication_for_cs = implode(',', $request->indicationForCS);
|
|
$location_of_delivery = implode(',', $request->locationOfDelivery);
|
|
$delivery_comments = implode(',', $request->deliveryComments);
|
|
$blood_loss = $request->bloodLoss; //not array
|
|
$bloodloss_measurement = $request->bloodloss_measurement; //not array
|
|
//inputs from the baby section
|
|
$received_by = implode(',', $request->receivedBy);
|
|
$gender = implode(',', $request->sex); //1=female 2=male 3=ambigous
|
|
$condition = implode(',', $request->condition);
|
|
$weight = implode(',', $request->weight);
|
|
$birth_order = implode(',', $request->birth_order);
|
|
$congenital_abnormalities1 = $request->congenital_abnormalities1;
|
|
$congenital_abnormalities2 = $request->congenital_abnormalities2;
|
|
$congenital_abnormalities3 = $request->congenital_abnormalities3;
|
|
$congenital_abnormalities = [$congenital_abnormalities1, $congenital_abnormalities2, $congenital_abnormalities3];
|
|
$congenital_abnormalities = implode(',', $congenital_abnormalities);
|
|
$baby_comments = implode(',', $request->babyComments);
|
|
|
|
//if baby condition = fresh SB or mecarated SB
|
|
$perinetal_death_notification_form1 = $request->perinetal_death_notification_form1;
|
|
$perinetal_death_notification_form2 = $request->perinetal_death_notification_form2;
|
|
$perinetal_death_notification_form3 = $request->perinetal_death_notification_form3;
|
|
$perinetal_death_notification_form = [$perinetal_death_notification_form1, $perinetal_death_notification_form2, $perinetal_death_notification_form3];
|
|
$perinetal_death_notification_form = implode(',', $perinetal_death_notification_form);
|
|
$perinetal_audit_form1 = $request->perinetal_audit_form1;
|
|
$perinetal_audit_form2 = $request->perinetal_audit_form2;
|
|
$perinetal_audit_form3 = $request->perinetal_audit_form3;
|
|
$perinetal_audit_form = [$perinetal_audit_form3, $perinetal_audit_form2, $perinetal_audit_form1];
|
|
$perinetal_audit_form = implode(',', $perinetal_audit_form);
|
|
|
|
//if baby condition = Alive
|
|
$apgar_score_at_minute_1 = !is_null($request->apgar_score_at_minute_1) ? implode(',', $request->apgar_score_at_minute_1) : null;
|
|
$apgar_score_at_minute_5 = !is_null($request->apgar_score_at_minute_5) ? implode(',', $request->apgar_score_at_minute_5) : null;
|
|
$apgar_score_at_minute_10 = !is_null($request->apgar_score_at_minute_10) ? implode(',', $request->apgar_score_at_minute_10) : null;
|
|
$age_established_spontaneous_reg_respiration = !is_null($request->age_established_spontaneous_reg_respiration) ? implode(',', $request->age_established_spontaneous_reg_respiration) : null;
|
|
$resuscitation_airway = !is_null($request->resuscitation_airway) ? implode(',', $request->resuscitation_airway) : null;
|
|
$resuscitation_suction = !is_null($request->resuscitation_suction) ? implode(',', $request->resuscitation_suction) : null;
|
|
$advanced_resuscitation = !is_null($request->advanced_resuscitation) ? implode(',', $request->advanced_resuscitation) : null;
|
|
$advanced_resuscitation_ett = !is_null($request->advanced_resuscitation_ett) ? implode(',', $request->advanced_resuscitation_ett) : null;
|
|
$advanced_resuscitation_ecm = !is_null($request->advanced_resuscitation_ecm) ? implode(',', $request->advanced_resuscitation_ecm) : null;
|
|
$advanced_resuscitation_drugs1 = $request->advanced_resuscitation_drugs1;
|
|
$advanced_resuscitation_drugs2 = $request->advanced_resuscitation_drugs2;
|
|
$advanced_resuscitation_drugs3 = $request->advanced_resuscitation_drugs3; /* 1.IV dextrose 2.Adrenaline 3.Aminophylline */
|
|
$advanced_resuscitation_drugs = [$advanced_resuscitation_drugs1, $advanced_resuscitation_drugs2, $advanced_resuscitation_drugs3];
|
|
$advanced_resuscitation_drugs = !is_null($advanced_resuscitation_drugs) ? implode(',', $advanced_resuscitation_drugs) : null;
|
|
$im_vitamin_k_given1 = $request->im_vitamin_k_given1;
|
|
$im_vitamin_k_given2 = $request->im_vitamin_k_given2;
|
|
$im_vitamin_k_given3 = $request->im_vitamin_k_given3;
|
|
$im_vitamin_k_given = [$im_vitamin_k_given1, $im_vitamin_k_given2, $im_vitamin_k_given3];
|
|
$im_vitamin_k_given = !is_null($im_vitamin_k_given) ? implode(',', $im_vitamin_k_given) : null;
|
|
$moved_to = !is_null($request->moved_to) ? implode(',', $request->moved_to) : null; //1=Post Natal 2=SCBU 3=Labour
|
|
$created_at = Carbon::now();
|
|
|
|
$delivery_record = new MaternityDeliveryRecord;
|
|
$delivery_record->patient_id = $patient_id;
|
|
$delivery_record->episode_id = $episode_id;
|
|
$delivery_record->foetal_number = $foetal_number;
|
|
$delivery_record->date_of_birth = $date_of_birth;
|
|
$delivery_record->delivery_time = $delivery_time;
|
|
$delivery_record->duration_1 = $duration1;
|
|
$delivery_record->duration_2 = $duration2;
|
|
$delivery_record->duration_3 = $duration3;
|
|
$delivery_record->delivered_by_cadre = $delivered_by_cadre;
|
|
$delivery_record->delivered_by_name = $delivered_by_name;
|
|
$delivery_record->supervised_by = $supervised_by;
|
|
$delivery_record->mode_of_delivery = $mode_of_delivery;
|
|
$delivery_record->indication_for_cs = $indication_for_cs;
|
|
$delivery_record->location_of_delivery = $location_of_delivery;
|
|
$delivery_record->delivery_comments = $delivery_comments;
|
|
$delivery_record->blood_loss = $blood_loss;
|
|
$delivery_record->bloodloss_measurement = $bloodloss_measurement;
|
|
$delivery_record->received_by = $received_by;
|
|
$delivery_record->gender = $gender;
|
|
$delivery_record->baby_condition = $condition;
|
|
$delivery_record->weight = $weight;
|
|
$delivery_record->congenital_abnormalities = $congenital_abnormalities;
|
|
$delivery_record->birth_order = $birth_order;
|
|
$delivery_record->baby_comments = $baby_comments;
|
|
$delivery_record->perinatal_death_notification = $perinetal_death_notification_form;
|
|
$delivery_record->perinatal_audit_form = $perinetal_audit_form;
|
|
$delivery_record->apgar_score_at_minute_1 = $apgar_score_at_minute_1;
|
|
$delivery_record->apgar_score_at_minute_5 = $apgar_score_at_minute_5;
|
|
$delivery_record->apgar_score_at_minute_10 = $apgar_score_at_minute_10;
|
|
$delivery_record->age_established_spontaneous_reg_respiration = $age_established_spontaneous_reg_respiration;
|
|
$delivery_record->resuscitation_airway = $resuscitation_airway;
|
|
$delivery_record->resuscitation_suction = $resuscitation_suction;
|
|
$delivery_record->advanced_resuscitation_ett = $advanced_resuscitation_ett;
|
|
$delivery_record->advanced_resuscitation_ecm = $advanced_resuscitation_ecm;
|
|
$delivery_record->advanced_resuscitation_drugs = $advanced_resuscitation_drugs;
|
|
$delivery_record->IM_vitamin_k_given = $im_vitamin_k_given;
|
|
$delivery_record->moved_to = $moved_to;
|
|
$delivery_record->created_by = Auth::id();
|
|
$delivery_record->save();
|
|
|
|
/* start process of registering the baby in the patients table */
|
|
$children_ids_array = [];
|
|
//loop the registration depending on the foetal number
|
|
for ($i = 0; $i < $foetal_number; $i++) {
|
|
$fname = 'Baby of';
|
|
$lname = $parent_record->first_name . ' ' . $parent_record->last_name;
|
|
$gender_array = $request->sex;
|
|
$date_of_birth_array = $request->birthdate;
|
|
$gender = isset($gender_array[$i]) ? $gender_array[$i] : 0;
|
|
$birthdate_explode = explode("/", $date_of_birth_array[$i]);
|
|
//if twins
|
|
if ($foetal_number == 2 && $i == 0) {
|
|
$lname = $lname . ' -twin 1';
|
|
$birthdate = $date_of_birth_array[1]; //$birthdate_explode[2] . $birthdate_explode[1] . $birthdate_explode[0];
|
|
} elseif ($foetal_number == 2 && $i == 1) {
|
|
$birthdate = $date_of_birth_array[1]; //$birthdate_explode[2] . $birthdate_explode[1] . $birthdate_explode[0];
|
|
$lname = $lname . ' -twin 2';
|
|
}
|
|
//if triplets
|
|
if ($foetal_number == 3 && $i == 0) {
|
|
$birthdate = $date_of_birth_array[1]; //$birthdate_explode[2] . $birthdate_explode[1] . $birthdate_explode[0];
|
|
$lname = $lname . ' -triplet 1';
|
|
} elseif ($foetal_number == 3 && $i == 1) {
|
|
$birthdate = $date_of_birth_array[2]; //$birthdate_explode[2] . $birthdate_explode[1] . $birthdate_explode[0];
|
|
$lname = $lname . ' -triplet 2';
|
|
} elseif ($foetal_number == 3 && $i == 2) {
|
|
$birthdate = isset($date_of_birth_array[3]) ? $date_of_birth_array[2] : ""; //$birthdate_explode[2] . $birthdate_explode[1] . $birthdate_explode[0];
|
|
$lname = $lname . ' -triplet 3';
|
|
}
|
|
//if singleton
|
|
if ($foetal_number == 1) {
|
|
$birthdate = $date_of_birth_array[1]; //$birthdate_explode[2] . $birthdate_explode[1] . $birthdate_explode[0];
|
|
}
|
|
$position = '';
|
|
$department = '';
|
|
$age = 0;
|
|
$agemonths = 0;
|
|
$district = $parent_record->district_id;
|
|
$county_id = $parent_record->county_id;
|
|
$parish = $parent_record->parish_id;
|
|
$subcounty = $parent_record->subcounty_id;
|
|
$village = $parent_record->village_id;
|
|
$maritalstatus = 1;
|
|
$occupation = 0;
|
|
$nextkin = $parent_record->first_name . ' ' . $parent_record->last_name;
|
|
$nextrelation = 4; //'Mother';
|
|
$national_id = '';
|
|
$mobilenumber = $parent_record->phone;
|
|
$mobileowner = $parent_record->phone_owner;
|
|
$patient_category = $parent_record->category_id;
|
|
$chairman_name = $parent_record->lc_one;
|
|
$any_contact = $parent_record->hospital_contact;
|
|
$religion = $parent_record->religion_id;
|
|
$staff_id = Auth::id();
|
|
$language = $parent_record->language;
|
|
|
|
$baby_details = new Patient;
|
|
$baby_details->first_name = $fname;
|
|
$baby_details->last_name = $lname;
|
|
$baby_details->date_of_birth = (is_null($birthdate) || $birthdate == "") ? Carbon::now() : Carbon::createFromFormat('d/m/Y', $birthdate)->toDateString();
|
|
$baby_details->district_id = $district;
|
|
$baby_details->parish_id = $parish;
|
|
$baby_details->subcounty_id = $subcounty;
|
|
$baby_details->village_id = $village;
|
|
$baby_details->gender = $gender;
|
|
$baby_details->marital_status = $maritalstatus;
|
|
$baby_details->occupation_id = $occupation;
|
|
$baby_details->next_of_Kin = $nextkin;
|
|
$baby_details->next_of_kin_relationship = $nextrelation;
|
|
$baby_details->phone = $mobilenumber;
|
|
$baby_details->phone_owner = $mobileowner;
|
|
$baby_details->category_id = $patient_category;
|
|
$baby_details->lc_one = $chairman_name;
|
|
$baby_details->hospital_contact = $any_contact;
|
|
//$baby_details->national_id = $national_id;
|
|
$baby_details->religion_id = $religion;
|
|
$baby_details->language = $language;
|
|
$baby_details->parent_id = $parent_record->id;
|
|
if ($baby_details->save()) {
|
|
$prefix = DB::table('hospital_information')->where('id', 1)->value('patient_number_abbr');
|
|
$new_id = quadLimit($baby_details->id);
|
|
$patient_number = $prefix . "-" . $new_id;
|
|
DB::table('patients')->where('id', $new_id)->update(['number' => $patient_number]); // Updating the patient number
|
|
$children_ids_array[] = $baby_details->id;
|
|
|
|
/* ======= start baby admission ========== */
|
|
$new_baby_episode = new PatientEpisode;
|
|
$new_baby_episode->patient_id = $baby_details->id;
|
|
$new_baby_episode->clinic_id = get_default_hospital_clinic();
|
|
$new_baby_episode->created_by = Auth::id();
|
|
$new_baby_episode->updated_by = Auth::id();
|
|
if ($new_baby_episode->save()) {
|
|
$new_baby_inpatient = new InpatientInfo;
|
|
$new_baby_inpatient->patient_id = $baby_details->id;
|
|
$new_baby_inpatient->episode_id = $new_baby_episode->id;
|
|
$new_baby_inpatient->admitted_on = $baby_details->date_of_birth;
|
|
$maternity_ward_id = get_name("maternity", "slug", "id", "wards");
|
|
$new_baby_inpatient->ward_id = isset($request->moved_to[$i]) ? $request->moved_to[$i] : $maternity_ward_id;
|
|
$new_baby_inpatient->created_by = Auth::id();
|
|
$new_baby_inpatient->created_at = Carbon::now();
|
|
$new_baby_inpatient->save();
|
|
|
|
flash($baby_details->first_name . " " . $baby_details->last_name . "(" . $baby_details->number . ") has been admitted in " . get_name($new_baby_inpatient->ward_id, "id", "name", "wards"))->success();
|
|
}
|
|
/* ======= end baby admission========== */
|
|
}
|
|
}
|
|
|
|
/* update the parent record with the new children_ids */
|
|
$update_parent_record = Patient::find($parent_record->id);
|
|
/* ideally shd just append on whetever string values that have been found in the children_id column */
|
|
$exisiting_children_ids_array = explode(',', $update_parent_record->children_id);
|
|
$merge_old_children_ids_with_new = array_merge($exisiting_children_ids_array, $children_ids_array);
|
|
$update_parent_record->children_id = implode(',', $merge_old_children_ids_with_new);
|
|
|
|
$update_parent_record->update();
|
|
/* end baby registration process in the demographics table */
|
|
/* Insert into the audit trail table when worked on*/
|
|
flash('New delivery record has been added')->success();
|
|
return redirect('patient_episodes');
|
|
}
|
|
|
|
/**
|
|
* Display the specified resource.
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function show($id)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Show the form for editing the maternity inpatient sheet.
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
|
|
// edit inpatient admission details maternity
|
|
public function edit_inpatient()
|
|
{
|
|
|
|
|
|
// session to pick where user is from // patient episodes or // /wards/select
|
|
Session::put('previous_url', URL::previous());
|
|
$episode_id = session()->get('episode_id');
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$diagnoses_patient = DB::table('diagnoses')->orderBy('name', 'asc')->pluck("name", "id");
|
|
$patient_id = $patient_episode_details->patient_id;
|
|
$patient = Patient::find($patient_id);
|
|
|
|
// fetch existing data from maternity inpatient and related tables
|
|
$existing_maternity_inpatient_data = MaternityInpatient::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$existing_maternity_delivery_plan = MaternityDeliveryPlan::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$existing_maternity_mother_history = MaternityMotherHistory::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$existing_maternity_pelvic_examination_and_assessement = PelvicExaminationAndAssessment::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$existing_uterus_operations = OtherFacilityUterusOperation::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get();
|
|
$existing_other_facility_operations = OtherFacilityOtherOperation::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get();
|
|
$existing_blood_transfusion = AnteNatalClinicBloodTransfusion::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$anc_blood_transfusion = AnteNatalClinicBloodTransfusion::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get();
|
|
$anc_blood_transfusion_details = AnteNatalClinicBloodTransfusion::where([['patient_id', $patient_id], ['episode_id', $episode_id]])->latest()->get();
|
|
$obstetric_history_details = ObstetricHistory::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->orderBy('obstetric_date', 'desc')->get();
|
|
// fetch patient surgeries
|
|
$patient_surgeries = Surgery::leftJoin('users', 'surgeries.surgeon', '=', 'users.id')
|
|
->leftJoin('procedures', 'surgeries.procedure_id', '=', 'procedures.id')
|
|
->where('patient_id', $patient_id)
|
|
->get(['procedures.name as procedure_name', 'date_surgery_completed', 'users.first_name', 'users.last_name', 'primary_diagnosis', 'other_diagnoses']);
|
|
|
|
// fetch patient consultations
|
|
$patient_consultations = Consultation::leftJoin('users', 'consultations.created_by', '=', 'users.id')
|
|
->leftJoin('diagnoses', 'consultations.primary_diagnosis', '=', 'diagnoses.id')
|
|
->leftJoin('wards', 'consultations.ward_id', '=', 'wards.id')
|
|
->leftJoin('outcomes', 'consultations.outcome_id', '=', 'outcomes.id')
|
|
->where(['patient_id' => $patient_id])
|
|
->get([
|
|
|
|
'admitted_on',
|
|
'wards.name as ward',
|
|
'diagnoses.name as primary_diagnosis',
|
|
'other_diagnoses',
|
|
'users.first_name',
|
|
'users.last_name',
|
|
'consultations.created_at',
|
|
'outcomes.name as outcome',
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
// fetch previous consultations for patient
|
|
$previous_consultation_inpatient_info = InpatientInfo::leftJoin('diagnoses', 'inpatient_info.primary_diagnosis', '=', 'diagnoses.id')
|
|
->leftJoin('users', 'inpatient_info.discharged_by', '=', 'users.id')
|
|
->leftJoin('wards', 'inpatient_info.ward_id', '=', 'wards.id')
|
|
->leftJoin('triage', 'inpatient_info.episode_id', '=', 'triage.episode_id')
|
|
->leftJoin('consultations', 'inpatient_info.episode_id', '=', 'consultations.episode_id')
|
|
->leftJoin('ordered_investigations', 'inpatient_info.episode_id', '=', 'ordered_investigations.episode_id')
|
|
->leftJoin('ward_treatments', 'inpatient_info.episode_id', '=', 'ward_treatments.episode_id')
|
|
->leftJoin('outcomes', 'inpatient_info.outcome_id', '=', 'outcomes.id')
|
|
->where([['inpatient_info.patient_id', $patient_id], ['inpatient_info.episode_id', '!=', $episode_id]])
|
|
->where('inpatient_info.created_at', '<', $patient_episode_details->created_at)
|
|
->latest('inpatient_info.created_at')
|
|
->get(
|
|
[
|
|
'diagnoses.name as primary_diagnosis',
|
|
'inpatient_info.other_diagnoses as other_diagnoses',
|
|
'users.first_name as first_name',
|
|
'consultations.created_at as consultation_date',
|
|
'inpatient_info.created_at as inpatient_info_date',
|
|
'diagnoses.name as primary_diagnosis',
|
|
'inpatient_info.other_diagnoses',
|
|
'outcomes.name as outcome',
|
|
'inpatient_info.episode_id',
|
|
'inpatient_info.admitted_on',
|
|
'inpatient_info.discharged_on',
|
|
'users.first_name as first_name',
|
|
'users.last_name as last_name',
|
|
'wards.name as ward',
|
|
'triage.observations',
|
|
'triage.symptoms as triage_symptoms',
|
|
'triage.symptom_duration as triage_symptom_duration',
|
|
'consultations.symptoms as consultation_symptoms',
|
|
'consultations.symptom_duration as consultation_symptom_duration',
|
|
DB::raw("CONCAT(triage.symptoms, '', consultations.symptoms) as symptoms"),
|
|
DB::raw("CONCAT(triage.symptom_duration, ', ', consultations.symptom_duration) as symptom_duration"),
|
|
]
|
|
|
|
)->take(5);
|
|
|
|
|
|
$current_episode_triage_symptoms = InpatientInfo::leftJoin('diagnoses', 'inpatient_info.primary_diagnosis', '=', 'diagnoses.id')
|
|
->leftJoin('users', 'inpatient_info.discharged_by', '=', 'users.id')
|
|
->leftJoin('wards', 'inpatient_info.ward_id', '=', 'wards.id')
|
|
->leftJoin('triage', 'inpatient_info.episode_id', '=', 'triage.episode_id')
|
|
->leftJoin('consultations', 'inpatient_info.episode_id', '=', 'consultations.episode_id')
|
|
->leftJoin('ordered_investigations', 'inpatient_info.episode_id', '=', 'ordered_investigations.episode_id')
|
|
->leftJoin('ward_treatments', 'inpatient_info.episode_id', '=', 'ward_treatments.episode_id')
|
|
->leftJoin('outcomes', 'inpatient_info.outcome_id', '=', 'outcomes.id')
|
|
->where([['inpatient_info.patient_id', $patient_id], ['inpatient_info.episode_id', '=', $episode_id]])->get(
|
|
[
|
|
'diagnoses.name as primary_diagnosis',
|
|
'inpatient_info.other_diagnoses as other_diagnoses',
|
|
'users.first_name as first_name',
|
|
'diagnoses.name as primary_diagnosis',
|
|
'inpatient_info.other_diagnoses',
|
|
'outcomes.name as outcome',
|
|
'inpatient_info.episode_id',
|
|
'inpatient_info.admitted_on',
|
|
'inpatient_info.discharged_on',
|
|
'users.first_name as first_name',
|
|
'users.last_name as last_name',
|
|
'wards.name as ward',
|
|
'triage.observations',
|
|
'triage.symptoms as triage_symptoms',
|
|
'triage.symptom_duration as triage_symptom_duration',
|
|
'consultations.symptoms as consultation_symptoms',
|
|
'consultations.symptom_duration as consultation_symptom_duration',
|
|
DB::raw("CONCAT(triage.symptoms, ', ', consultations.symptoms) as symptoms"),
|
|
DB::raw("CONCAT(triage.symptom_duration, ', ', consultations.symptom_duration) as symptom_duration"),
|
|
]
|
|
|
|
)->take(5);
|
|
|
|
$categories = DB::table('patient_categories')->where('available', 1)->pluck("name", "id");
|
|
$marital_statuses = DB::table('marital_statuses')->pluck("name", "id");
|
|
$diagnoses = DB::table('diagnoses')->where('available', 1)->orderBy('name', 'asc')->pluck("name", "id")->prepend('- select -', '');
|
|
$relationships = DB::table('family_relations')->pluck('name', 'id');
|
|
$occupations = DB::table('occupations')->pluck('name', 'id');
|
|
$patient_categories = DB::table('patient_categories')->where('available', 1)->pluck('name', 'id');
|
|
$drug_categories = DB::table('drug_categories')->get();
|
|
$documents = PatientDocument::where('patient_id', $patient_id)->orderBy('created_at', 'desc')->get();
|
|
//allergies and alerts
|
|
$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');
|
|
$consultation_id = get_name($episode_id, "id", "consultation_id", "patient_episodes");
|
|
$triage_id = get_name($episode_id, "id", "triage_id", "patient_episodes");
|
|
$triage = Triage::find($triage_id); //this maybe null since one may be admitted straight away
|
|
|
|
$anc_registration = AnteNatalClinicRegistration::where(['patient_id' => $patient_id])->orderBy('id', 'desc')->first();
|
|
$emergency_signs = EmergencySign::where(['patient_id' => $patient_id, 'triage_id' => $triage_id, 'episode_id' => $episode_id])->get();
|
|
$patient_documents = PatientDocument::where(['patient_id' => $patient_id])->get();
|
|
$diagnosis = Diagnosis::where('available', 1)->orderby('name', 'asc')->get();
|
|
$diagnoses_all = DB::table('diagnoses')->whereNull('deleted_at')->select('id', 'prompts', 'reference_areas', 'reference_names')->get();
|
|
$obstetric_history = ObstetricHistory::where(['patient_id' => $patient_id])->orderBy('obstetric_date', 'desc')->get();
|
|
$blood_groups = DB::table('blood_groups')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$referrals = DB::table('referral_hospitals')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$accuracies = DB::table('ante_natal_clinic_accuracies')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$anc_outcomes = DB::table('ante_natal_clinic_outcomes')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$hiv_statuses = ['' => '-- Select --', '0' => 'Negative', '1' => 'Positive', '3' => 'Unknown'];
|
|
$maternity_progress = DB::table('maternity_progress')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$family_planning_methods = FamilyPlanningMethod::orderBy('name', 'asc')->get();
|
|
$family_planning_methods_data = FamilyPlanningMethod::all();
|
|
|
|
$caesarian_sections = CaesarianSection::orderBy('name', 'asc')->pluck("name", "id")->prepend('- Select -', '');
|
|
$uterus_operations = UterusOperation::orderBy('name', 'asc')->get();
|
|
$uterus_operations = UterusOperation::orderBy('name', 'asc')->pluck("name", "id")->prepend('- Select -', '');
|
|
$gender_based_violence = GenderViolence::orderBy('name', 'asc')->pluck("name", "id");
|
|
|
|
// prep the inpatient investigation arrays and counters
|
|
$opd_investigations = [];
|
|
$ward_investigations = [];
|
|
$symptoms = Symptom::pluck("name", "id");
|
|
|
|
// get all investigations ordered in this episode
|
|
$ordered_investigations = OrderedInvestigation::where(['episode_id' => $episode_id])->get();
|
|
|
|
// get all results
|
|
$investigation_results_order_ids = InvestigationResults::pluck('order_id', 'id')->toArray();
|
|
|
|
foreach ($ordered_investigations as $investigation) {
|
|
$investigation_ids = explode(",", $investigation->investigation_id);
|
|
$inpatient_status = explode(",", $investigation->for_inpatient);
|
|
|
|
// check if results are available for this investigation
|
|
if (in_array($investigation->id, $investigation_results_order_ids)) {
|
|
// get the key if available
|
|
$key = array_search($investigation->id, $investigation_results_order_ids);
|
|
|
|
// get the results object
|
|
$results = InvestigationResults::find($key);
|
|
|
|
// exclude obstetric u/s results
|
|
if ($results->result_type != "Ultrasound_Obstetric") {
|
|
$investigation_results = explode(",", $results->value);
|
|
$investigation_per_valid = explode(",", $results->per_investigation);
|
|
$investigation_comments = explode(",", $results->comment);
|
|
|
|
if ($results->all_authenticated == 1) {
|
|
for ($i = 0; $i < count($inpatient_status); $i++) {
|
|
if ($inpatient_status[$i] == 0) {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$opd_investigations['name'][] = $result->name;
|
|
$opd_investigations['value'][] = $investigation_results[$i];
|
|
$opd_investigations['comment'][] = $investigation_comments[$i];
|
|
} else {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$ward_investigations['name'][] = $result->name;
|
|
$ward_investigations['value'][] = $investigation_results[$i];
|
|
$ward_investigations['comment'][] = $investigation_comments[$i];
|
|
}
|
|
}
|
|
} else {
|
|
for ($i = 0; $i < count($inpatient_status); $i++) {
|
|
if ($investigation_per_valid[$i] == 1) {
|
|
// this investigation is authenticated
|
|
if ($inpatient_status[$i] == 0) {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$opd_investigations['name'][] = $result->name;
|
|
$opd_investigations['value'][] = $investigation_results[$i];
|
|
$opd_investigations['comment'][] = $investigation_comments[$i];
|
|
} else {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$ward_investigations['name'][] = $result->name;
|
|
$ward_investigations['value'][] = $investigation_results[$i];
|
|
$ward_investigations['comment'][] = $investigation_comments[$i];
|
|
}
|
|
} else {
|
|
if ($inpatient_status[$i] == 0) {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$opd_investigations['name'][] = $result->name;
|
|
$opd_investigations['value'][] = "Pending";
|
|
$opd_investigations['comment'][] = "Pending";
|
|
} else {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$ward_investigations['name'][] = $result->name;
|
|
$ward_investigations['value'][] = "Pending";
|
|
$ward_investigations['comment'][] = "Pending";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
for ($i = 0; $i < count($inpatient_status); $i++) {
|
|
if ($inpatient_status[$i] == 0) {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$opd_investigations['name'][] = $result->name;
|
|
$opd_investigations['value'][] = "Pending";
|
|
$opd_investigations['comment'][] = "Pending";
|
|
} else {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$ward_investigations['name'][] = $result->name;
|
|
$ward_investigations['value'][] = "Pending";
|
|
$ward_investigations['comment'][] = "Pending";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// previous consultations
|
|
if (session()->get('consultation_with_notes') == 1) {
|
|
$consultation_with_notes = true;
|
|
} else {
|
|
$consultation_with_notes = false;
|
|
}
|
|
|
|
|
|
$patient_episodes = DB::table('patient_episodes')->where('patient_id', $patient_id)->whereNotIn('id', [$episode_id])->get();
|
|
$episode = PatientEpisode::where('id', $episode_id)->first();
|
|
|
|
|
|
$past_episodes_info = [];
|
|
$counter = 0;
|
|
|
|
foreach ($patient_episodes as $patient_episode) {
|
|
if ($counter == 5) {
|
|
break;
|
|
}
|
|
|
|
if (!is_episode_safe_to_delete($patient_episode->id) && isset($patient_episode->consultation_id)) { // exclude empty episodes
|
|
$consultations_details = DB::table('consultations')->find($patient_episode->consultation_id);
|
|
|
|
if ($consultations_details) {
|
|
$past_episodes_info[$counter]["start_date"] = streamline_date_time($patient_episode->created_at);
|
|
$past_episodes_info[$counter]["episode_id"] = $patient_episode->id;
|
|
|
|
$past_episodes_info[$counter]["primary_diagnosis"] = $consultations_details->primary_diagnosis ?? 0;
|
|
if (unserialize($consultations_details->other_diagnoses)) {
|
|
$past_episodes_info[$counter]["other_diagnoses"] = unserialize($consultations_details->other_diagnoses);
|
|
} else {
|
|
$past_episodes_info[$counter]["other_diagnoses"] = [];
|
|
}
|
|
|
|
$past_episodes_info[$counter]["outcome"] = $consultations_details->outcome_id ?? 0;
|
|
$doctor_id = $consultations_details->consultation_done_by ?? $consultations_details->created_by;
|
|
$past_episodes_info[$counter]["doctor"] = get_full_name($doctor_id, 'id', 'first_name', 'last_name', 'users');
|
|
$past_episodes_info[$counter]["clinic"] = isset($patient_episode->clinic_id) ? get_name($patient_episode->clinic_id, 'id', 'name', 'clinics') : "N/A";
|
|
|
|
if (isset($patient_episode->triage_id)) {
|
|
$triage_details = DB::table('triage')->find($patient_episode->triage_id);
|
|
|
|
if ($triage_details) {
|
|
$past_episodes_info[$counter]["symptoms"] = [
|
|
"symptom_duration" => $triage_details->symptom_duration,
|
|
"symptoms" => $triage_details->symptoms
|
|
];
|
|
|
|
$observations = explode(",", $triage_details->observations);
|
|
$past_episodes_info[$counter]["resp"] = "N/A";
|
|
$past_episodes_info[$counter]["mmhg"] = "N/A";
|
|
$past_episodes_info[$counter]["pulse"] = "N/A";
|
|
$past_episodes_info[$counter]["temp"] = "N/A";
|
|
|
|
foreach ($observations as $observation) {
|
|
if (strpos($observation, "Temperature") !== false) {
|
|
$past_episodes_info[$counter]["temp"] = explode("=", $observation)[1];
|
|
}
|
|
|
|
if (strpos($observation, "Pulse") !== false) {
|
|
$past_episodes_info[$counter]["pulse"] = explode("=", $observation)[1];
|
|
}
|
|
|
|
if (strpos($observation, "Systolic bp") !== false) {
|
|
$past_episodes_info[$counter]["mmhg"] = explode("=", $observation)[1];
|
|
}
|
|
|
|
if (strpos($observation, "Diastolic bp") !== false) {
|
|
$past_episodes_info[$counter]["mmhg"] = $past_episodes_info[$counter]["mmhg"] . " / " . explode("=", $observation)[1];
|
|
}
|
|
|
|
if (strpos($observation, "Respirations") !== false) {
|
|
$past_episodes_info[$counter]["resp"] = explode("=", $observation)[1];
|
|
}
|
|
}
|
|
} else {
|
|
$past_episodes_info[$counter]["symptoms"] = [];
|
|
$past_episodes_info[$counter]["resp"] = "N/A";
|
|
$past_episodes_info[$counter]["mmhg"] = "N/A";
|
|
$past_episodes_info[$counter]["pulse"] = "N/A";
|
|
$past_episodes_info[$counter]["temp"] = "N/A";
|
|
}
|
|
} else {
|
|
$past_episodes_info[$counter]["symptoms"] = [];
|
|
$past_episodes_info[$counter]["resp"] = "N/A";
|
|
$past_episodes_info[$counter]["mmhg"] = "N/A";
|
|
$past_episodes_info[$counter]["pulse"] = "N/A";
|
|
$past_episodes_info[$counter]["temp"] = "N/A";
|
|
}
|
|
|
|
$counter++;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
return view(
|
|
'maternity::maternity.edit_admission_details',
|
|
compact(
|
|
'anc_blood_transfusion_details',
|
|
'existing_maternity_inpatient_data',
|
|
'existing_maternity_delivery_plan',
|
|
'existing_maternity_pelvic_examination_and_assessement',
|
|
'existing_uterus_operations',
|
|
'existing_other_facility_operations',
|
|
'diagnoses_all',
|
|
'current_episode_triage_symptoms',
|
|
'patient_episodes',
|
|
'past_episodes_info',
|
|
'episode',
|
|
'consultation_with_notes',
|
|
'existing_maternity_mother_history',
|
|
'existing_blood_transfusion',
|
|
'previous_consultation_inpatient_info',
|
|
'patient_id',
|
|
'episode_id',
|
|
'patient',
|
|
'categories',
|
|
'patient_surgeries',
|
|
'patient_consultations',
|
|
'marital_statuses',
|
|
'diagnoses',
|
|
'diagnoses_patient',
|
|
'relationships',
|
|
'occupations',
|
|
'drug_categories',
|
|
'documents',
|
|
'drug_categories_array',
|
|
'known_patient_alerts',
|
|
'known_patient_allergies',
|
|
'consultation_id',
|
|
'triage_id',
|
|
'triage',
|
|
'anc_registration',
|
|
'emergency_signs',
|
|
'patient_documents',
|
|
'diagnosis',
|
|
'obstetric_history',
|
|
'anc_blood_transfusion',
|
|
'blood_groups',
|
|
'referrals',
|
|
'accuracies',
|
|
'anc_outcomes',
|
|
'hiv_statuses',
|
|
'maternity_progress',
|
|
'ward_investigations',
|
|
'opd_investigations',
|
|
'symptoms',
|
|
'obstetric_history_details',
|
|
'family_planning_methods',
|
|
'caesarian_sections',
|
|
'uterus_operations',
|
|
'gender_based_violence'
|
|
|
|
)
|
|
);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
|
|
public function calculate_weeks_of_amenorrhoea_from_lmp(Request $request)
|
|
{
|
|
$lmp_date = Carbon::createFromFormat('d/m/Y', $request->lmp_date);
|
|
$now = Carbon::now();
|
|
$days = $lmp_date->diffInDays($now);
|
|
$weeks = floor($days / 7);
|
|
$dayRemainder = $days % 7;
|
|
$weeks_of_amenorrhoea = $weeks . '<sup style="top: 0.1em;">' . $dayRemainder . '</sup>';
|
|
return response()->json($weeks_of_amenorrhoea);
|
|
}
|
|
|
|
|
|
public function calculate_edd_from_lmp(Request $request)
|
|
{
|
|
$lmp_date = $request->lmp_date;
|
|
$lmp_date = Carbon::createFromFormat('d/m/Y', $request->lmp_date);
|
|
$edd = $lmp_date->addDays(280);
|
|
$edd = $edd->toDateString();
|
|
|
|
$date = date("d/m/Y", strtotime($edd));
|
|
|
|
return response()->json($date);
|
|
}
|
|
|
|
public function update(Request $request, $id)
|
|
{
|
|
//transfusion_date_array
|
|
$maternity_inpatient = MaternityInpatient::findOrFail($id);
|
|
|
|
//start database transaction
|
|
DB::transaction(function () use ($request, $maternity_inpatient) {
|
|
|
|
$episode_id = session()->get('episode_id');
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$patient_id = $patient_episode_details->patient_id;
|
|
$patient = Patient::find($patient_id);
|
|
|
|
$maternity_inpatient->primary_diagnosis = $request->primary_diagnosis;
|
|
$maternity_inpatient->other_diagnoses = (!empty($request->other_diagnosis[0])) ? serialize($request->other_diagnosis) : null;
|
|
$maternity_inpatient->patient_id = $patient_id;
|
|
$maternity_inpatient->episode_id = $episode_id;
|
|
$maternity_inpatient->gravida = $request->gravida;
|
|
$maternity_inpatient->para = $request->para;
|
|
$maternity_inpatient->abortion = $request->abortion;
|
|
$maternity_inpatient->ectopic_pregnancies = $request->ectopic_pregnancies;
|
|
$maternity_inpatient->postpartum = $request->postpartum;
|
|
$maternity_inpatient->previous_pph = $request->previous_pph;
|
|
$maternity_inpatient->previous_pph_details = $request->pph_details;
|
|
$maternity_inpatient->previous_scar = $request->previous_scar;
|
|
$maternity_inpatient->previous_scar_number = $request->scar_number;
|
|
$maternity_inpatient->previous_scar_indication = $request->scar_indication;
|
|
$maternity_inpatient->other_comments_pph = $request->other_comments_pph;
|
|
$maternity_inpatient->lmp = isset($request->lmp) ? Carbon::createFromFormat('d/m/Y', $request->lmp)->toDateString() : null;
|
|
$maternity_inpatient->accuracy = $request->accuracy;
|
|
$maternity_inpatient->edd = null;
|
|
|
|
if (isset($request->edd) && !empty($request->edd)) {
|
|
try {
|
|
$eddDate = Carbon::createFromFormat('d/m/Y', $request->edd);
|
|
$maternity_inpatient->edd = $eddDate->toDateString();
|
|
} catch (\Exception $e) {
|
|
// Handle the exception if the date format is invalid
|
|
$maternity_inpatient->edd = null;
|
|
}
|
|
}
|
|
|
|
|
|
$maternity_inpatient->referral_from = $request->refferal;
|
|
$maternity_inpatient->progress = $request->progress;
|
|
$maternity_inpatient->born_before_arrival = $request->born_before_arrival;
|
|
$maternity_inpatient->vdrl_location = $request->vdrl_location;
|
|
$maternity_inpatient->vdrl_date = !is_null($request->vdrl_date) ? Carbon::createFromFormat('d/m/Y', $request->vdrl_date)->toDateString() : null;
|
|
$maternity_inpatient->vdrl_result = $request->vdrl_result;
|
|
$maternity_inpatient->hiv_location = $request->hiv_location;
|
|
$maternity_inpatient->hiv_date = !is_null($request->hiv_date) ? Carbon::createFromFormat('d/m/Y', $request->hiv_date)->toDateString() : null;
|
|
$maternity_inpatient->hiv_result_usaid = $request->hiv_result;
|
|
$maternity_inpatient->scan_edd = !is_null($request->scan_edd) ? Carbon::createFromFormat('d/m/Y', $request->scan_edd)->toDateString() : null;
|
|
$maternity_inpatient->gestation_from_scan = $request->gestation_from_scan;
|
|
$maternity_inpatient->history_of_fits = $request->history_of_fits;
|
|
$maternity_inpatient->history_of_aph = $request->history_of_aph;
|
|
$maternity_inpatient->aph_details = $request->aph_details;
|
|
$maternity_inpatient->fits_details = $request->fits_details;
|
|
$maternity_inpatient->other_comments = $request->other_comments;
|
|
$maternity_inpatient->iufd = $request->iufd;
|
|
$maternity_inpatient->weeks_of_amenorrhoea = $request->input('weeks_of_amenorrhoea');
|
|
$maternity_inpatient->delivery_recomendation = $request->delivery_recomendation;
|
|
$maternity_inpatient->pregnancy_complications = implode(',', $request->pregnancy_complications ?? []);
|
|
$maternity_inpatient->other_pregnancy_complications = $request->other_pregnancy_complications;
|
|
$maternity_inpatient->physical_examination = implode(',', $request->physical_examination ?? []);
|
|
$maternity_inpatient->heart_physical_examination_details = $request->heart_physical_examination_details;
|
|
$maternity_inpatient->breasts_physical_examination_details = $request->breasts_physical_examination_details;
|
|
$maternity_inpatient->legs_physical_examination_details = $request->legs_physical_examination_details;
|
|
$maternity_inpatient->lungs_physical_examination_details = $request->lungs_physical_examination_details;
|
|
$maternity_inpatient->teeth_physical_examination_details = $request->teeth_physical_examination_details;
|
|
$maternity_inpatient->other_physical_examinations = $request->other_physical_examinations;
|
|
$maternity_inpatient->other_obstetric_risk_factors = $request->other_obstetric_risk_factors;
|
|
$maternity_inpatient->current_acute_problems = isset($request->current_acute_problems) ? implode(',', $request->current_acute_problems) : '';
|
|
$maternity_inpatient->obstetric_risk_factors = implode(',', $request->obstetric_risk_factors ?? []);
|
|
$maternity_inpatient->blood_transfusion_available = isset($request->blood_transfusion_available) ? implode(',', $request->blood_transfusion_available) : '';
|
|
$maternity_inpatient->fractures = isset($request->fractures) ? implode(',', $request->fractures) : '';
|
|
$maternity_inpatient->blood_transfusion_details = $request->blood_transfusion_details;
|
|
$maternity_inpatient->pelvis_fracture_date = !is_null($request->pelvis_fracture_date) ? Carbon::createFromFormat('d/m/Y', $request->pelvis_fracture_date)->toDateString() : null;
|
|
$maternity_inpatient->pelvis_fracture_details = $request->pelvis_fracture_details;
|
|
$maternity_inpatient->spine_fracture_date = !is_null($request->spine_fracture_date) ? Carbon::createFromFormat('d/m/Y', $request->spine_fracture_date)->toDateString() : null;
|
|
$maternity_inpatient->spine_fracture_details = $request->spine_fracture_details;
|
|
$maternity_inpatient->femur_fracture_date = !is_null($request->femur_fracture_date) ? Carbon::createFromFormat('d/m/Y', $request->femur_fracture_date)->toDateString() : null;
|
|
$maternity_inpatient->femur_fracture_details = $request->femur_fracture_details;
|
|
$maternity_inpatient->other_fracture_details = $request->other_fracture_details;
|
|
$maternity_inpatient->created_by = auth()->user()->id;
|
|
|
|
if ($request->get('submit-btn') == 'submit_maternity_admission') {
|
|
// save and complete
|
|
$maternity_inpatient->completed = 1;
|
|
$maternity_inpatient->save();
|
|
} else {
|
|
// save draft
|
|
$maternity_inpatient->completed = 0;
|
|
$maternity_inpatient->save();
|
|
}
|
|
|
|
$clinic_id = get_name('ante_natal', 'slug', 'id', 'clinics'); //get the id for antenatal clinic from clinics table
|
|
$maternity_clinic_id = get_name('MATERNITY', 'name', 'id', 'wards'); //get maternity ward id
|
|
|
|
// store past obstetric history data with child data
|
|
for ($k = 1; $k <= $request->pregnancy_number; $k++) {
|
|
$pregnancy = 'pregnancy_' . $k;
|
|
$obs_date = $pregnancy . '_obstetric_date';
|
|
$gestation = $pregnancy . '_gestation';
|
|
$outcome = $pregnancy . '_obstetric_outcome';
|
|
$abortion_outcome = $pregnancy . '_abortion_outcome';
|
|
$stillbirth_type = $pregnancy . '_stillbirth_type';
|
|
$delivery_type = $pregnancy . '_delivery_type';
|
|
$classification = $pregnancy . '_classification';
|
|
$puerperium = $pregnancy . '_puerperium';
|
|
$pregnancy_complication = $pregnancy . '_pregnancy_complication';
|
|
$child_name = $pregnancy . '_child_name';
|
|
$child_gender = $pregnancy . '_child_gender';
|
|
$child_patient_number = $pregnancy . '_child_patient_number';
|
|
$child_birth_weight = $pregnancy . '_child_birth_weight';
|
|
$child_immunisation_status = $pregnancy . '_child_immunisation_status';
|
|
$child_health_condition = $pregnancy . '_child_health_condition';
|
|
$stored_pregnancy = $pregnancy . '_id';
|
|
$deleted_pregnancy = 'delete_' . $pregnancy . '_id';
|
|
$child_counter = !empty($request->$child_name[0]) ? count($request->$child_name) : 0;
|
|
$children = [];
|
|
if ($child_counter > 0) {
|
|
for ($t = 0; $t < $child_counter; $t++) {
|
|
$children[] = [
|
|
'health_condition' => $request->$child_health_condition[$t],
|
|
'immunisation_status' => $request->$child_immunisation_status[$t],
|
|
'birth_weight' => $request->$child_birth_weight[$t],
|
|
'patient_number' => $request->$child_patient_number[$t],
|
|
'gender' => $request->$child_gender[$t],
|
|
'name' => $request->$child_name[$t]
|
|
];
|
|
}
|
|
}
|
|
if (!empty($request->$deleted_pregnancy)) {
|
|
$delete_pregnancy = ObstetricHistory::find($request->$deleted_pregnancy);
|
|
$delete_pregnancy->delete();
|
|
} elseif (!empty($request->$stored_pregnancy) && empty($request->$deleted_pregnancy)) {
|
|
$update_obstetric_history = ObstetricHistory::find($request->$stored_pregnancy);
|
|
$update_obstetric_history->patient_id = $patient_id;
|
|
$update_obstetric_history->episode_id = $episode_id;
|
|
$update_obstetric_history->obstetric_date = isset($request->$obs_date) ? Carbon::createFromFormat('d/m/Y', $request->$obs_date)->toDateString() : null;
|
|
$update_obstetric_history->gestation = $request->$gestation;
|
|
$update_obstetric_history->outcome = $request->$outcome;
|
|
$update_obstetric_history->clinic_id = $clinic_id;
|
|
$update_obstetric_history->abortion_outcome = $request->$abortion_outcome;
|
|
$update_obstetric_history->stillbirth_type = $request->$stillbirth_type;
|
|
$update_obstetric_history->delivery_type = $request->$delivery_type;
|
|
$update_obstetric_history->classification = $request->$classification;
|
|
$update_obstetric_history->puerperium = $request->$puerperium;
|
|
$update_obstetric_history->pregnancy_complication = $request->$pregnancy_complication;
|
|
$update_obstetric_history->children = !empty($children) ? json_encode($children) : null;
|
|
$update_obstetric_history->updated_by = auth()->user()->id;
|
|
$update_obstetric_history->save();
|
|
} else {
|
|
$obstetric_history = new ObstetricHistory;
|
|
$obstetric_history->patient_id = $patient_id;
|
|
$obstetric_history->episode_id = $episode_id;
|
|
$obstetric_history->obstetric_date = isset($request->$obs_date) ? Carbon::createFromFormat('d/m/Y', $request->$obs_date)->toDateString() : null;
|
|
$obstetric_history->gestation = $request->$gestation;
|
|
$obstetric_history->outcome = $request->$outcome;
|
|
$obstetric_history->stillbirth_type = $request->$stillbirth_type;
|
|
$obstetric_history->clinic_id = $clinic_id;
|
|
$obstetric_history->abortion_outcome = $request->$abortion_outcome;
|
|
$obstetric_history->delivery_type = $request->$delivery_type;
|
|
$obstetric_history->classification = $request->$classification;
|
|
$obstetric_history->puerperium = $request->$puerperium;
|
|
$obstetric_history->pregnancy_complication = $request->$pregnancy_complication;
|
|
$obstetric_history->children = !empty($children) ? json_encode($children) : null;
|
|
$obstetric_history->created_by = auth()->user()->id;
|
|
$obstetric_history->save();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// delivery plan
|
|
// pick stored delivery plan id from request ( hidden form input : id)
|
|
if (!empty($request->delivery_plan_id)) {
|
|
$update_delivery_plan = MaternityDeliveryPlan::find($request->delivery_plan_id);
|
|
$update_delivery_plan->patient_id = $patient_id;
|
|
$update_delivery_plan->episode_id = $episode_id;
|
|
$update_delivery_plan->person_you_live_with = $request->person_you_live_with;
|
|
$update_delivery_plan->transport_means_to_facility = $request->transport_means_to_facility;
|
|
$update_delivery_plan->person_to_accompany_you = $request->person_to_accompany_you;
|
|
$update_delivery_plan->person_to_look_after_home = $request->person_to_look_after_home;
|
|
$update_delivery_plan->mother_partner_screened_for = implode(',', $request->mother_partner_screened_for ?? []);
|
|
$update_delivery_plan->family_planning_method_plan = $request->family_planning_method_plan;
|
|
$update_delivery_plan->person_to_stay_at_facility = $request->person_to_stay_at_facility;
|
|
$update_delivery_plan->delivery_method = $request->delivery_method;
|
|
$update_delivery_plan->backup_delivery_method = $request->backup_delivery_method;
|
|
$update_delivery_plan->after_birth_disposal = $request->after_birth_disposal;
|
|
$update_delivery_plan->created_by = auth()->user()->id;
|
|
$update_delivery_plan->save();
|
|
} else {
|
|
$delivery_plan = new MaternityDeliveryPlan();
|
|
$delivery_plan->patient_id = $patient_id;
|
|
$delivery_plan->episode_id = $episode_id;
|
|
$delivery_plan->person_you_live_with = $request->person_you_live_with;
|
|
$delivery_plan->transport_means_to_facility = $request->transport_means_to_facility;
|
|
$delivery_plan->person_to_accompany_you = $request->person_to_accompany_you;
|
|
$delivery_plan->person_to_look_after_home = $request->person_to_look_after_home;
|
|
$delivery_plan->mother_partner_screened_for = implode(',', $request->mother_partner_screened_for ?? []);
|
|
$delivery_plan->family_planning_method_plan = $request->family_planning_method_plan;
|
|
$delivery_plan->person_to_stay_at_facility = $request->person_to_stay_at_facility;
|
|
$delivery_plan->delivery_method = $request->delivery_method;
|
|
$delivery_plan->backup_delivery_method = $request->backup_delivery_method;
|
|
$delivery_plan->after_birth_disposal = $request->after_birth_disposal;
|
|
$delivery_plan->created_by = auth()->user()->id;
|
|
$delivery_plan->save();
|
|
}
|
|
|
|
//Store Mother's History
|
|
if (!empty($request->mother_obs_history_id)) {
|
|
$maternity_mother_history = MaternityMotherHistory::find($request->mother_obs_history_id);
|
|
$maternity_mother_history->updated_by = auth()->user()->id;
|
|
} else {
|
|
$maternity_mother_history = new MaternityMotherHistory();
|
|
$maternity_mother_history->created_by = auth()->user()->id;
|
|
}
|
|
|
|
// maternity mother history
|
|
$maternity_mother_history->patient_id = $patient_id;
|
|
$maternity_mother_history->episode_id = $episode_id;
|
|
$maternity_mother_history->cycle_length = $request->cycle_length;
|
|
$maternity_mother_history->menses_length = $request->menses_length;
|
|
$maternity_mother_history->menses_amount = $request->menses_amount;
|
|
$maternity_mother_history->family_planning_method = $request->family_planning_method;
|
|
$maternity_mother_history->date_discontinued = isset($request->date_discontinued) ? Carbon::createFromFormat('d/m/Y', $request->date_discontinued)->toDateString() : null;
|
|
$maternity_mother_history->why_stop_family_planning = $request->why_stop_family_planning;
|
|
$maternity_mother_history->medical_presentations = implode(',', $request->medical_presentations ?? []);
|
|
$maternity_mother_history->other_medical_presentations = $request->other_medical_presentations;
|
|
$maternity_mother_history->sgbv_risk = implode(',', $request->sgbv_risk ?? []);
|
|
$maternity_mother_history->other_sgbv_risk = $request->other_sgbv_risk;
|
|
$maternity_mother_history->husband_health = $request->husband_health;
|
|
$maternity_mother_history->history_of_aph = $request->history_of_aph;
|
|
$maternity_mother_history->history_aph_details = $request->history_aph_details;
|
|
$maternity_mother_history->history_of_fits = $request->history_of_fits;
|
|
$maternity_mother_history->history_fit_details = $request->history_fit_details;
|
|
$maternity_mother_history->other_medical_history_comment = $request->other_medical_history_comment;
|
|
foreach ($request->uterus_operations_name as $key => $operation) {
|
|
if (!empty($operation))
|
|
$uterine_operations[] = ['name' => $operation, 'date' => $request->uterus_operations_date[$key], 'facility_name' => $request->uterus_operations_facility_name[$key]];
|
|
}
|
|
foreach ($request->other_operations_name as $key => $operation) {
|
|
if (!empty($operation))
|
|
$other_surgeries[] = ['name' => $operation, 'date' => $request->other_operations_name_date[$key], 'facility_name' => $request->other_operations_name_facility_name[$key]];
|
|
}
|
|
$maternity_mother_history->uterine_surgeries = !empty($uterine_operations) ? json_encode($uterine_operations) : null;
|
|
$maternity_mother_history->other_surgeries = !empty($other_surgeries) ? json_encode($other_surgeries) : null;
|
|
|
|
$maternity_mother_history->created_by = auth()->user()->id;
|
|
$maternity_mother_history->save();
|
|
|
|
|
|
|
|
|
|
$blood_group = $request->blood_group;
|
|
$transfusion_date_array = $request->transfusion_date;
|
|
$no_of_units_array = $request->no_of_units;
|
|
$transfusion_comment_array = $request->transfusion_comment;
|
|
|
|
|
|
if (is_array($request->blood_group_transfusion_id)) {
|
|
foreach ($request->blood_group_transfusion_id as $key => $value) {
|
|
if (isset($request->blood_group_transfusion_id[$key])) {
|
|
$anc_blood_transfusion = AnteNatalClinicBloodTransfusion::find($request->blood_group_transfusion_id[$key]);
|
|
} else {
|
|
// Create a new instance if ID doesn't exist
|
|
$anc_blood_transfusion = new AnteNatalClinicBloodTransfusion();
|
|
}
|
|
|
|
$anc_blood_transfusion->blood_group_id = $blood_group;
|
|
$anc_blood_transfusion->patient_id = $patient_id;
|
|
$anc_blood_transfusion->episode_id = $episode_id;
|
|
$anc_blood_transfusion->transfusion_date = Carbon::createFromFormat('d/m/Y', $transfusion_date_array[$key])->toDateString();
|
|
$anc_blood_transfusion->number_of_units = $no_of_units_array[$key];
|
|
$anc_blood_transfusion->comments = $transfusion_comment_array[$key];
|
|
$anc_blood_transfusion->updated_by = auth()->user()->id;
|
|
$anc_blood_transfusion->save();
|
|
}
|
|
} else {
|
|
// Log::error('blood_group_transfusion_id is not an array or is null.');
|
|
}
|
|
|
|
|
|
PelvicExaminationAndAssessment::updateOrInsert(
|
|
[
|
|
'patient_id' => $patient_id,
|
|
'episode_id' => $episode_id,
|
|
],
|
|
[
|
|
'vulva' => $request->vulva,
|
|
'vagina' => $request->vagina,
|
|
'cervix' => $request->cervix,
|
|
'dilatation' => $request->dilatation,
|
|
'uterine_adnexa' => $request->uterine_adnexa,
|
|
'moniliasis' => $request->moniliasis,
|
|
'diagonal_conjugate' => round($request->diagonal_conjugate, 2),
|
|
'sacrum' => $request->sacrum,
|
|
'ischial_spinces' => $request->ischial_spinces,
|
|
'sub_public_angle' => $request->sub_public_angle,
|
|
'ischial_tuberosities' => $request->ischial_tuberosities,
|
|
'pelvic_adequate' => $request->pelvic_adequate,
|
|
'updated_at' => Carbon::now(),
|
|
'created_by' => auth()->user()->id,
|
|
'updated_by' => auth()->user()->id,
|
|
]
|
|
);
|
|
|
|
});
|
|
|
|
// end database transaction
|
|
|
|
|
|
|
|
|
|
|
|
// pick previoius_url //picked from /create
|
|
$previous_url = Session::get('previous_url');
|
|
|
|
switch ($request->get('submit-btn')) {
|
|
case 'save_maternity_admission':
|
|
flash('Maternity Inpatient Sheet Saved successfully')->success();
|
|
// return redirect('patient_episodes');
|
|
if ($previous_url == url('/wards/select')) {
|
|
return redirect('/wards/select');
|
|
} elseif ($previous_url == url('/patient_episodes')) {
|
|
return redirect('patient_episodes');
|
|
} else {
|
|
return redirect('patient_episodes');
|
|
}
|
|
|
|
break;
|
|
case 'submit_maternity_admission':
|
|
flash('Maternity Inpatient Sheet Updated and Submitted successfully')->success();
|
|
if ($previous_url == url('/wards/select')) {
|
|
return redirect('/wards/select');
|
|
} elseif ($previous_url == url('/patient_episodes')) {
|
|
return redirect('patient_episodes');
|
|
} else {
|
|
return redirect('patient_episodes');
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function destroy($id)
|
|
{
|
|
//
|
|
}
|
|
|
|
public function delete_anc_blood_transfusion_record(Request $request, $id)
|
|
{
|
|
$bloodTransfusion = AnteNatalClinicBloodTransfusion::find($id);
|
|
if (!$bloodTransfusion) {
|
|
// Handle if the record doesn't exist
|
|
return response()->json(['error' => 'Blood transfusion record not found'], 404);
|
|
}
|
|
|
|
// Delete the record
|
|
$bloodTransfusion->delete();
|
|
|
|
// Oreturn a response
|
|
return response()->json(['success' => 'Blood transfusion record deleted successfully'], 200);
|
|
}
|
|
|
|
|
|
/* display delivery_record */
|
|
public function delivery_record_details()
|
|
{
|
|
/* display maternity delivery record details */
|
|
$episode_id = session()->get('episode_id');
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$patient_id = $patient_episode_details->patient_id;
|
|
$patient = Patient::find($patient_id);
|
|
$delivery_record_details = MaternityDeliveryRecord::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$users = DB::table('users')->pluck('last_name', 'id');
|
|
$delivery_modes = DB::table('mode_of_delivery')->pluck('name', 'id');
|
|
$delivery_locations = DB::table('location_of_delivery')->pluck('name', 'id');
|
|
$babies = Patient::where(['parent_id' => $patient_id])->get(); //where to be changed to where(parent_id=>$patient_id)
|
|
|
|
return view('maternity::maternity.delivery_record_details', compact('episode_id', 'patient_id', 'patient', 'delivery_record_details', 'users', 'delivery_modes', 'delivery_locations', 'babies'));
|
|
}
|
|
|
|
public function print_delivery_record_details(Request $request)
|
|
{
|
|
$delivery_record_details = MaternityDeliveryRecord::where(['patient_id' => $request->patient_id, 'episode_id' => $request->episode_id])->first();
|
|
$babies = Patient::where(['parent_id' => $request->patient_id])->get();
|
|
$users = unserialize($request->users);
|
|
$delivery_locations = unserialize($request->delivery_locations);
|
|
$delivery_modes = unserialize($request->delivery_modes);
|
|
$patient_number = $request->patient_number;
|
|
$episode_id = $request->episode_id;
|
|
|
|
$pdf = SnappyPDF::loadView('maternity::maternity.print_delivery_record_details', compact('delivery_record_details', 'users', 'delivery_modes', 'delivery_locations', 'babies', 'patient_number', 'episode_id'))
|
|
->setOrientation('portrait')
|
|
->setOption('margin-bottom', 7)
|
|
->setOption('margin-top', 5)
|
|
->setOption('footer-html', '<i>' . config('app.name') . ' - Printed On ' . date('Y-m-d') . ' By ' . auth()->user()->first_name . " " . auth()->user()->last_name . '</i>');
|
|
return $pdf->inline(__('maternity.delivery_record') . date(" d-m-y h:ia") . '.pdf');
|
|
}
|
|
|
|
/* display maternity admission details */
|
|
public function maternity_admission_details()
|
|
{
|
|
|
|
$episode_id = session()->get('episode_id');
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$patient_id = $patient_episode_details->patient_id;
|
|
$patient = Patient::find($patient_id);
|
|
$maternity_admission_details = MaternityInpatient::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$delivery_plan_details = MaternityDeliveryPlan::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$maternity_mother_history_details = MaternityMotherHistory::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$anc_blood_transfusion_details = AnteNatalClinicBloodTransfusion::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$pelvic_examination_and_assessment_details = PelvicExaminationAndAssessment::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$obstetric_history = ObstetricHistory::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$obstetric_history_details = ObstetricHistory::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->orderBy('obstetric_date', 'desc')->get();
|
|
$anc_outcomes = DB::table('ante_natal_clinic_outcomes')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$blood_groups = DB::table('blood_groups')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$blood_transfusion = AnteNatalClinicBloodTransfusion::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->latest()->get();
|
|
$categories = DB::table('patient_categories')->where('available', 1)->pluck("name", "id");
|
|
$marital_statuses = DB::table('marital_statuses')->pluck("name", "id");
|
|
$diagnoses = DB::table('diagnoses')->where('available', 1)->orderBy('name', 'asc')->pluck("name", "id");
|
|
$relationships = DB::table('family_relations')->pluck('name', 'id');
|
|
$occupations = DB::table('occupations')->pluck('name', 'id');
|
|
$patient_categories = DB::table('patient_categories')->where('available', 1)->pluck('name', 'id');
|
|
$drug_categories = DB::table('drug_categories')->get();
|
|
$documents = PatientDocument::where('patient_id', $patient_id)->orderBy('created_at', 'desc')->get();
|
|
|
|
$referrals = DB::table('referral_hospitals')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id');
|
|
//pick single referal
|
|
|
|
$maternity_progress = DB::table('maternity_progress')->orderBy('name')->pluck('name', 'id');
|
|
$accuracies = DB::table('ante_natal_clinic_accuracies')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
|
|
return view('maternity::maternity.admission_details', compact('episode_id', 'patient_id', 'patient', 'maternity_admission_details', 'categories', 'marital_statuses', 'diagnoses', 'relationships', 'occupations', 'patient_categories', 'drug_categories', 'documents', 'obstetric_history', 'blood_transfusion', 'referrals', 'maternity_progress', 'delivery_plan_details', 'accuracies', 'maternity_mother_history_details', 'pelvic_examination_and_assessment_details', 'obstetric_history_details', 'anc_outcomes', 'blood_groups'));
|
|
}
|
|
|
|
public function print_maternity_admission_details_pdf($id)
|
|
{
|
|
|
|
$episode_id = session()->get('episode_id');
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$patient_id = $patient_episode_details->patient_id;
|
|
$patient = Patient::find($patient_id);
|
|
$maternity_admission_details = MaternityInpatient::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$delivery_plan_details = MaternityDeliveryPlan::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$maternity_mother_history_details = MaternityMotherHistory::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$anc_blood_transfusion_details = AnteNatalClinicBloodTransfusion::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$pelvic_examination_and_assessment_details = PelvicExaminationAndAssessment::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$obstetric_history = ObstetricHistory::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$obstetric_history_details = ObstetricHistory::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->orderBy('obstetric_date', 'desc')->get();
|
|
$anc_outcomes = DB::table('ante_natal_clinic_outcomes')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$categories = DB::table('patient_categories')->where('available', 1)->pluck("name", "id");
|
|
$marital_statuses = DB::table('marital_statuses')->pluck("name", "id");
|
|
$diagnoses = DB::table('diagnoses')->where('available', 1)->orderBy('name', 'asc')->pluck("name", "id");
|
|
$relationships = DB::table('family_relations')->pluck('name', 'id');
|
|
$occupations = DB::table('occupations')->pluck('name', 'id');
|
|
$patient_categories = DB::table('patient_categories')->where('available', 1)->pluck('name', 'id');
|
|
$drug_categories = DB::table('drug_categories')->get();
|
|
$documents = \Streamline\Models\PatientDocument::where('patient_id', $patient_id)->orderBy('created_at', 'desc')->get();
|
|
|
|
$blood_transfusion = AnteNatalClinicBloodTransfusion::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$referrals = DB::table('referral_hospitals')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id');
|
|
//pick single referal
|
|
|
|
$maternity_progress = DB::table('maternity_progress')->orderBy('name')->pluck('name', 'id');
|
|
$accuracies = DB::table('ante_natal_clinic_accuracies')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
|
|
|
|
// data object with print vars
|
|
$ward_request_record = \Streamline\Models\WardItemRequest::find($id);
|
|
$hospital_info = \Streamline\Models\HospitalInformation::find(1);
|
|
$print_footer = (!is_null($hospital_info->print_footer)) ? '     <i>' . $hospital_info->print_footer . '</i>' : '';
|
|
|
|
|
|
$data = [
|
|
'maternity_admission_details' => $maternity_admission_details,
|
|
'hospitalInfo' => $hospital_info,
|
|
'obstetric_history_details' => $obstetric_history_details,
|
|
'delivery_plan_details' => $delivery_plan_details,
|
|
'maternity_mother_history_details' => $maternity_mother_history_details,
|
|
|
|
];
|
|
|
|
return view('maternity::maternity.print.print_maternity_admission_details_pdf', compact('episode_id', 'patient_id', 'patient', 'maternity_admission_details', 'categories', 'marital_statuses', 'diagnoses', 'relationships', 'occupations', 'patient_categories', 'drug_categories', 'documents', 'obstetric_history', 'blood_transfusion', 'referrals', 'maternity_progress', 'delivery_plan_details', 'accuracies', 'maternity_mother_history_details', 'pelvic_examination_and_assessment_details', 'obstetric_history_details', 'anc_outcomes', 'hospital_info'));
|
|
|
|
|
|
// $pdf = SnappyPDF::loadView("maternity::maternity.print.print_maternity_admission_details_pdf", $data)
|
|
// ->setOrientation('portrait')
|
|
// ->setPaper('a4')
|
|
// ->setOption('margin-bottom', 5)
|
|
// ->setOption('margin-top', 5)
|
|
// ->setOption('footer-html', '<i>© ' . date('Y') . ' Stre@mline</i>' . $print_footer);
|
|
|
|
// return $pdf->inline('Maternity admission Details' . date(" d-m-y h:ia") . '.pdf');
|
|
}
|
|
|
|
/* add new delivery location through bootstrap modal */
|
|
public function add_delivery_location(Request $request)
|
|
{
|
|
$location_of_delivery = new LocationOfDelivery;
|
|
$location_of_delivery->name = $request->delivery_location_name;
|
|
$location_of_delivery->created_by = Auth::id();
|
|
$location_of_delivery->save();
|
|
return $location_of_delivery->id;
|
|
}
|
|
|
|
/* add new ward */
|
|
public function add_new_ward(Request $request)
|
|
{
|
|
$new_ward = new Ward;
|
|
$new_ward->name = $request->ward_name;
|
|
$new_ward->created_by = Auth::id();
|
|
$new_ward->save();
|
|
return $new_ward->id;
|
|
}
|
|
|
|
public function edit_delivery_record($id)
|
|
{
|
|
$delivery_record = MaternityDeliveryRecord::withTrashed()->find($id);
|
|
$patient_id = $delivery_record->patient_id;
|
|
$episode_id = $delivery_record->episode_id;
|
|
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$patient_id = $patient_episode_details->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");
|
|
$diagnoses = DB::table('diagnoses')->where('available', 1)->orderBy('name', 'asc')->pluck("name", "id");
|
|
$relationships = DB::table('family_relations')->pluck('name', 'id');
|
|
$occupations = DB::table('occupations')->pluck('name', 'id');
|
|
$patient_categories = DB::table('patient_categories')->where('available', 1)->pluck('name', 'id');
|
|
$drug_categories = DB::table('drug_categories')->get();
|
|
$documents = PatientDocument::where('patient_id', $patient_id)->orderBy('created_at', 'desc')->get();
|
|
//allergies and alerts
|
|
$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');
|
|
|
|
/* SELECT User_Id, First_Name,Last_Name FROM users WHERE Active = 1 AND User_Group_Id in (7,37,39,42,47,59,60) ORDER BY First_Name ASC; */
|
|
$users = DB::table('users')->orderBy("first_name", "asc")->get()->toArray();
|
|
$allowed_users = DB::table('users')->orderBy('first_name')->pluck('first_name', 'id')->prepend('- select -', '');
|
|
$mode_of_delivery = DB::table('mode_of_delivery')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$location_of_delivery = DB::table('location_of_delivery')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$respiration_minutes = DB::table('spontaneous_regular_respiration_in_minutes')->pluck('minutes', 'id');
|
|
$wards = DB::table('wards')->where('available', 1)->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', ''); /* select post natal ward */
|
|
|
|
return view('maternity::maternity.edit_delivery_record', compact('delivery_record', 'patient_id', 'episode_id', 'patient', 'categories', 'drug_categories_array', 'known_patient_alerts', 'known_patient_allergies', 'marital_statuses', 'diagnoses', 'relationships', 'occupations', 'patient_categories', 'drug_categories', 'documents', 'allowed_users', 'users', 'mode_of_delivery', 'location_of_delivery', 'respiration_minutes', 'wards', 'obstetric_history_details'));
|
|
}
|
|
|
|
public function update_delivery_record(Request $request, $id)
|
|
{
|
|
//inputs from the delivery section
|
|
$patient_id = $request->patient_id;
|
|
$episode_id = $request->episode_id;
|
|
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$patient_id = $patient_episode_details->patient_id;
|
|
$parent_record = Patient::find($patient_id);
|
|
|
|
$foetal_number = $request->foetal_number;
|
|
$date_of_birth = implode(',', $request->birthdate);
|
|
$delivery_time = implode(',', $request->deliveryTime);
|
|
$duration1 = implode(',', $request->duration1);
|
|
$duration2_hrs = implode(',', $request->duration2_hrs);
|
|
$duration2_mins = implode(',', $request->duration2_mins);
|
|
$baby_one_duration2 = $request->duration2_hrs[0] . ' and ' . $request->duration2_mins[0];
|
|
$baby_two_duration2 = $request->duration2_hrs[1] . ' and ' . $request->duration2_mins[1];
|
|
$baby_three_duration2 = $request->duration2_hrs[2] . ' and ' . $request->duration2_mins[2];
|
|
$duration2 = [$baby_one_duration2, $baby_two_duration2, $baby_three_duration2];
|
|
$duration2 = implode(',', $duration2);
|
|
|
|
$baby_one_duration3 = $request->duration3_hrs[0] . ' and ' . $request->duration3_mins[0];
|
|
$baby_two_duration3 = $request->duration3_hrs[1] . ' and ' . $request->duration3_mins[1];
|
|
$baby_three_duration3 = $request->duration3_hrs[2] . ' and ' . $request->duration3_mins[2];
|
|
$duration3 = [$baby_one_duration3, $baby_two_duration3, $baby_three_duration3];
|
|
$duration3 = implode(',', $duration3);
|
|
|
|
$delivered_by_cadre = implode(',', $request->deliveredByCadre); //1-staff,2-student
|
|
$delivered_by_name = implode(',', $request->deliveredByName); //picks user IDs
|
|
$supervised_by = implode(',', $request->supervisedBy); //picks user IDs
|
|
$mode_of_delivery = implode(',', $request->modeOfDelivery);
|
|
$indication_for_cs = implode(',', $request->indicationForCS);
|
|
$location_of_delivery = implode(',', $request->locationOfDelivery);
|
|
$delivery_comments = implode(',', $request->deliveryComments);
|
|
$blood_loss = $request->bloodLoss; //not array
|
|
$bloodloss_measurement = $request->bloodloss_measurement; //not array
|
|
//inputs from the baby section
|
|
$received_by = implode(',', $request->receivedBy);
|
|
$gender = implode(',', $request->sex); //1=female 2=male 3=ambigous
|
|
$condition = implode(',', $request->condition);
|
|
$weight = implode(',', $request->weight);
|
|
$birth_order = implode(',', $request->birth_order);
|
|
$congenital_abnormalities1 = $request->congenital_abnormalities1;
|
|
$congenital_abnormalities2 = $request->congenital_abnormalities2;
|
|
$congenital_abnormalities3 = $request->congenital_abnormalities3;
|
|
$congenital_abnormalities = [$congenital_abnormalities1, $congenital_abnormalities2, $congenital_abnormalities3];
|
|
$congenital_abnormalities = implode(',', $congenital_abnormalities);
|
|
$baby_comments = implode(',', $request->babyComments);
|
|
|
|
//if baby condition = fresh SB or mecarated SB
|
|
$perinetal_death_notification_form1 = $request->perinetal_death_notification_form1;
|
|
$perinetal_death_notification_form2 = $request->perinetal_death_notification_form2;
|
|
$perinetal_death_notification_form3 = $request->perinetal_death_notification_form3;
|
|
$perinetal_death_notification_form = [$perinetal_death_notification_form1, $perinetal_death_notification_form2, $perinetal_death_notification_form3];
|
|
$perinetal_death_notification_form = implode(',', $perinetal_death_notification_form);
|
|
$perinetal_audit_form1 = $request->perinetal_audit_form1;
|
|
$perinetal_audit_form2 = $request->perinetal_audit_form2;
|
|
$perinetal_audit_form3 = $request->perinetal_audit_form3;
|
|
$perinetal_audit_form = [$perinetal_audit_form3, $perinetal_audit_form2, $perinetal_audit_form1];
|
|
$perinetal_audit_form = implode(',', $perinetal_audit_form);
|
|
|
|
//if baby condition = Alive
|
|
$apgar_score_at_minute_1 = !is_null($request->apgar_score_at_minute_1) ? implode(',', $request->apgar_score_at_minute_1) : null;
|
|
$apgar_score_at_minute_5 = !is_null($request->apgar_score_at_minute_5) ? implode(',', $request->apgar_score_at_minute_5) : null;
|
|
$age_established_spontaneous_reg_respiration = !is_null($request->age_established_spontaneous_reg_respiration) ? implode(',', $request->age_established_spontaneous_reg_respiration) : null;
|
|
$resuscitation_airway = !is_null($request->resuscitation_airway) ? implode(',', $request->resuscitation_airway) : null;
|
|
$resuscitation_suction = !is_null($request->resuscitation_suction) ? implode(',', $request->resuscitation_suction) : null;
|
|
$advanced_resuscitation = !is_null($request->advanced_resuscitation) ? implode(',', $request->advanced_resuscitation) : null;
|
|
$advanced_resuscitation_ett = !is_null($request->advanced_resuscitation_ett) ? implode(',', $request->advanced_resuscitation_ett) : null;
|
|
$advanced_resuscitation_ecm = !is_null($request->advanced_resuscitation_ecm) ? implode(',', $request->advanced_resuscitation_ecm) : null;
|
|
$advanced_resuscitation_drugs1 = $request->advanced_resuscitation_drugs1;
|
|
$advanced_resuscitation_drugs2 = $request->advanced_resuscitation_drugs2;
|
|
$advanced_resuscitation_drugs3 = $request->advanced_resuscitation_drugs3; /* 1.IV dextrose 2.Adrenaline 3.Aminophylline */
|
|
$advanced_resuscitation_drugs = [$advanced_resuscitation_drugs1, $advanced_resuscitation_drugs2, $advanced_resuscitation_drugs3];
|
|
$advanced_resuscitation_drugs = !is_null($advanced_resuscitation_drugs) ? implode(',', $advanced_resuscitation_drugs) : null;
|
|
$im_vitamin_k_given1 = $request->im_vitamin_k_given1;
|
|
$im_vitamin_k_given2 = $request->im_vitamin_k_given2;
|
|
$im_vitamin_k_given3 = $request->im_vitamin_k_given3;
|
|
$im_vitamin_k_given = [$im_vitamin_k_given1, $im_vitamin_k_given2, $im_vitamin_k_given3];
|
|
$im_vitamin_k_given = !is_null($im_vitamin_k_given) ? implode(',', $im_vitamin_k_given) : null;
|
|
$moved_to = !is_null($request->moved_to) ? implode(',', $request->moved_to) : null; //1=Post Natal 2=SCBU 3=Labour
|
|
$created_at = Carbon::now();
|
|
|
|
$delivery_record = MaternityDeliveryRecord::findOrFail($id);
|
|
$delivery_record->patient_id = $patient_id;
|
|
$delivery_record->episode_id = $episode_id;
|
|
$delivery_record->foetal_number = $foetal_number;
|
|
$delivery_record->date_of_birth = $date_of_birth;
|
|
$delivery_record->delivery_time = $delivery_time;
|
|
$delivery_record->duration_1 = $duration1;
|
|
$delivery_record->duration_2 = $duration2;
|
|
$delivery_record->duration_3 = $duration3;
|
|
$delivery_record->delivered_by_cadre = $delivered_by_cadre;
|
|
$delivery_record->delivered_by_name = $delivered_by_name;
|
|
$delivery_record->supervised_by = $supervised_by;
|
|
$delivery_record->mode_of_delivery = $mode_of_delivery;
|
|
$delivery_record->indication_for_cs = $indication_for_cs;
|
|
$delivery_record->location_of_delivery = $location_of_delivery;
|
|
$delivery_record->delivery_comments = $delivery_comments;
|
|
$delivery_record->blood_loss = $blood_loss;
|
|
$delivery_record->bloodloss_measurement = $bloodloss_measurement;
|
|
$delivery_record->received_by = $received_by;
|
|
$delivery_record->gender = $gender;
|
|
$delivery_record->baby_condition = $condition;
|
|
$delivery_record->weight = $weight;
|
|
$delivery_record->congenital_abnormalities = $congenital_abnormalities;
|
|
$delivery_record->birth_order = $birth_order;
|
|
$delivery_record->baby_comments = $baby_comments;
|
|
$delivery_record->perinatal_death_notification = $perinetal_death_notification_form;
|
|
$delivery_record->perinatal_audit_form = $perinetal_audit_form;
|
|
$delivery_record->apgar_score_at_minute_1 = $apgar_score_at_minute_1;
|
|
$delivery_record->apgar_score_at_minute_5 = $apgar_score_at_minute_5;
|
|
$delivery_record->age_established_spontaneous_reg_respiration = $age_established_spontaneous_reg_respiration;
|
|
$delivery_record->resuscitation_airway = $resuscitation_airway;
|
|
$delivery_record->resuscitation_suction = $resuscitation_suction;
|
|
$delivery_record->advanced_resuscitation_ett = $advanced_resuscitation_ett;
|
|
$delivery_record->advanced_resuscitation_ecm = $advanced_resuscitation_ecm;
|
|
$delivery_record->advanced_resuscitation_drugs = $advanced_resuscitation_drugs;
|
|
$delivery_record->IM_vitamin_k_given = $im_vitamin_k_given;
|
|
$delivery_record->moved_to = $moved_to;
|
|
$delivery_record->created_by = Auth::id();
|
|
$delivery_record->save();
|
|
|
|
/* start process of registering the baby in the patients table */
|
|
$children_ids_array = [];
|
|
//loop the registration depending on the foetal number
|
|
for ($i = 0; $i < $foetal_number; $i++) {
|
|
$fname = 'Baby of';
|
|
$lname = $parent_record->first_name . ' ' . $parent_record->last_name;
|
|
$gender_array = clean($request->sex);
|
|
$date_of_birth_array = $request->birthdate;
|
|
$gender = isset($gender_array[$i]) ? $gender_array[$i] : 0;
|
|
$birthdate_explode = explode("/", $date_of_birth_array[$i]);
|
|
//if twins
|
|
if ($foetal_number == 2 && $i == 0) {
|
|
$lname = $lname . ' -twin 1';
|
|
$birthdate = $date_of_birth_array[1]; //$birthdate_explode[2] . $birthdate_explode[1] . $birthdate_explode[0];
|
|
} elseif ($foetal_number == 2 && $i == 1) {
|
|
$birthdate = $date_of_birth_array[1]; //$birthdate_explode[2] . $birthdate_explode[1] . $birthdate_explode[0];
|
|
$lname = $lname . ' -twin 2';
|
|
}
|
|
//if triplets
|
|
if ($foetal_number == 3 && $i == 0) {
|
|
$birthdate = $date_of_birth_array[1]; //$birthdate_explode[2] . $birthdate_explode[1] . $birthdate_explode[0];
|
|
$lname = $lname . ' -triplet 1';
|
|
} elseif ($foetal_number == 3 && $i == 1) {
|
|
$birthdate = $date_of_birth_array[2]; //$birthdate_explode[2] . $birthdate_explode[1] . $birthdate_explode[0];
|
|
$lname = $lname . ' -triplet 2';
|
|
} elseif ($foetal_number == 3 && $i == 2) {
|
|
$birthdate = isset($date_of_birth_array[3]) ? $date_of_birth_array[2] : ""; //$birthdate_explode[2] . $birthdate_explode[1] . $birthdate_explode[0];
|
|
$lname = $lname . ' -triplet 3';
|
|
}
|
|
//if singleton
|
|
if ($foetal_number == 1) {
|
|
$birthdate = $date_of_birth_array[1]; //$birthdate_explode[2] . $birthdate_explode[1] . $birthdate_explode[0];
|
|
}
|
|
$position = '';
|
|
$department = '';
|
|
$age = 0;
|
|
$agemonths = 0;
|
|
$district = $parent_record->district_id;
|
|
$county_id = $parent_record->county_id;
|
|
$parish = $parent_record->parish_id;
|
|
$subcounty = $parent_record->subcounty_id;
|
|
$village = $parent_record->village_id;
|
|
$maritalstatus = 1;
|
|
$occupation = 0;
|
|
$nextkin = $parent_record->first_name . ' ' . $parent_record->last_name;
|
|
$nextrelation = 4; //'Mother';
|
|
$national_id = '';
|
|
$mobilenumber = $parent_record->phone;
|
|
$mobileowner = $parent_record->phone_owner;
|
|
$patient_category = $parent_record->category_id;
|
|
$chairman_name = $parent_record->lc_one;
|
|
$any_contact = $parent_record->hospital_contact;
|
|
$religion = $parent_record->religion_id;
|
|
$staff_id = Auth::id();
|
|
$language = $parent_record->language;
|
|
}
|
|
|
|
/* Insert into the audit trail table when worked on*/
|
|
flash('Delivery record has been been updated')->info();
|
|
return redirect('patient_episodes');
|
|
}
|
|
|
|
// create labur ward admission sheet
|
|
public function create_labour_ward_admission_sheet()
|
|
{
|
|
|
|
$episode_id = session()->get('episode_id');
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$diagnoses_patient = DB::table('diagnoses')->orderBy('name', 'asc')->pluck("name", "id");
|
|
$patient_id = $patient_episode_details->patient_id;
|
|
$patient = Patient::find($patient_id);
|
|
|
|
// fetch existing data from maternity inpatient and related tables
|
|
$existing_maternity_inpatient_data = MaternityInpatient::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$latest_existing_maternity_inpatient_data = MaternityInpatient::where(['patient_id' => $patient_id])->latest()->first();
|
|
$existing_maternity_delivery_plan = MaternityDeliveryPlan::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$existing_maternity_mother_history = MaternityMotherHistory::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$latest_existing_maternity_mother_history = MaternityMotherHistory::where(['patient_id' => $patient_id])->latest()->first();
|
|
$existing_maternity_pelvic_examination_and_assessement = PelvicExaminationAndAssessment::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$existing_uterus_operations = OtherFacilityUterusOperation::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get();
|
|
$existing_other_facility_operations = OtherFacilityOtherOperation::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get();
|
|
$existing_blood_transfusion = AnteNatalClinicBloodTransfusion::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$anc_blood_transfusion = AnteNatalClinicBloodTransfusion::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->get();
|
|
$obstetric_history_details = ObstetricHistory::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->orderBy('obstetric_date', 'desc')->get();
|
|
$anc_registration = AnteNatalClinicRegistration::where(['patient_id' => $patient_id])->orderBy('id', 'desc')->first();
|
|
$latest_anc_registration = AnteNatalClinicRegistration::where(['patient_id' => $patient_id])->orderBy('id', 'desc')->latest()->first();
|
|
|
|
// fetch patient surgeries
|
|
$patient_surgeries = Surgery::leftJoin('users', 'surgeries.surgeon', '=', 'users.id')
|
|
->leftJoin('procedures', 'surgeries.procedure_id', '=', 'procedures.id')
|
|
->where('patient_id', $patient_id)
|
|
->get(['procedures.name as procedure_name', 'date_surgery_completed', 'users.first_name', 'users.last_name', 'primary_diagnosis', 'other_diagnoses']);
|
|
|
|
// fetch patient consultations
|
|
$patient_consultations = Consultation::leftJoin('users', 'consultations.created_by', '=', 'users.id')
|
|
->leftJoin('diagnoses', 'consultations.primary_diagnosis', '=', 'diagnoses.id')
|
|
->leftJoin('wards', 'consultations.ward_id', '=', 'wards.id')
|
|
->leftJoin('outcomes', 'consultations.outcome_id', '=', 'outcomes.id')
|
|
->where(['patient_id' => $patient_id])
|
|
->get([
|
|
|
|
'admitted_on',
|
|
'wards.name as ward',
|
|
'diagnoses.name as primary_diagnosis',
|
|
'other_diagnoses',
|
|
'users.first_name',
|
|
'users.last_name',
|
|
'consultations.created_at',
|
|
'outcomes.name as outcome',
|
|
|
|
]);
|
|
|
|
|
|
|
|
// fetch previous consultations for patient
|
|
$previous_consultation_inpatient_info = InpatientInfo::leftJoin('diagnoses', 'inpatient_info.primary_diagnosis', '=', 'diagnoses.id')
|
|
->leftJoin('users', 'inpatient_info.discharged_by', '=', 'users.id')
|
|
->leftJoin('wards', 'inpatient_info.ward_id', '=', 'wards.id')
|
|
->leftJoin('triage', 'inpatient_info.episode_id', '=', 'triage.episode_id')
|
|
->leftJoin('consultations', 'inpatient_info.episode_id', '=', 'consultations.episode_id')
|
|
->leftJoin('ordered_investigations', 'inpatient_info.episode_id', '=', 'ordered_investigations.episode_id')
|
|
->leftJoin('ward_treatments', 'inpatient_info.episode_id', '=', 'ward_treatments.episode_id')
|
|
->leftJoin('outcomes', 'inpatient_info.outcome_id', '=', 'outcomes.id')
|
|
->where([['inpatient_info.patient_id', $patient_id], ['inpatient_info.episode_id', '!=', $episode_id]])->get(
|
|
[
|
|
'diagnoses.name as primary_diagnosis',
|
|
'inpatient_info.other_diagnoses as other_diagnoses',
|
|
'users.first_name as first_name',
|
|
'diagnoses.name as primary_diagnosis',
|
|
'inpatient_info.other_diagnoses',
|
|
'outcomes.name as outcome',
|
|
'inpatient_info.episode_id',
|
|
'inpatient_info.admitted_on',
|
|
'inpatient_info.discharged_on',
|
|
'users.first_name as first_name',
|
|
'users.last_name as last_name',
|
|
'wards.name as ward',
|
|
'triage.observations',
|
|
'triage.symptoms as triage_symptoms',
|
|
'triage.symptom_duration as triage_symptom_duration',
|
|
'consultations.symptoms as consultation_symptoms',
|
|
'consultations.symptom_duration as consultation_symptom_duration',
|
|
DB::raw("CONCAT(triage.symptoms, ', ', consultations.symptoms) as symptoms"),
|
|
DB::raw("CONCAT(triage.symptom_duration, ', ', consultations.symptom_duration) as symptom_duration"),
|
|
]
|
|
|
|
)->take(5);
|
|
|
|
|
|
$current_episode_triage_symptoms = InpatientInfo::leftJoin('diagnoses', 'inpatient_info.primary_diagnosis', '=', 'diagnoses.id')
|
|
->leftJoin('users', 'inpatient_info.discharged_by', '=', 'users.id')
|
|
->leftJoin('wards', 'inpatient_info.ward_id', '=', 'wards.id')
|
|
->leftJoin('triage', 'inpatient_info.episode_id', '=', 'triage.episode_id')
|
|
->leftJoin('consultations', 'inpatient_info.episode_id', '=', 'consultations.episode_id')
|
|
->leftJoin('ordered_investigations', 'inpatient_info.episode_id', '=', 'ordered_investigations.episode_id')
|
|
->leftJoin('ward_treatments', 'inpatient_info.episode_id', '=', 'ward_treatments.episode_id')
|
|
->leftJoin('outcomes', 'inpatient_info.outcome_id', '=', 'outcomes.id')
|
|
->where([['inpatient_info.patient_id', $patient_id], ['inpatient_info.episode_id', '=', $episode_id]])->get(
|
|
[
|
|
'diagnoses.name as primary_diagnosis',
|
|
'inpatient_info.other_diagnoses as other_diagnoses',
|
|
'users.first_name as first_name',
|
|
'diagnoses.name as primary_diagnosis',
|
|
'inpatient_info.other_diagnoses',
|
|
'outcomes.name as outcome',
|
|
'inpatient_info.episode_id',
|
|
'inpatient_info.admitted_on',
|
|
'inpatient_info.discharged_on',
|
|
'users.first_name as first_name',
|
|
'users.last_name as last_name',
|
|
'wards.name as ward',
|
|
'triage.observations',
|
|
'triage.symptoms as triage_symptoms',
|
|
'triage.symptom_duration as triage_symptom_duration',
|
|
'consultations.symptoms as consultation_symptoms',
|
|
'consultations.symptom_duration as consultation_symptom_duration',
|
|
DB::raw("CONCAT(triage.symptoms, ', ', consultations.symptoms) as symptoms"),
|
|
DB::raw("CONCAT(triage.symptom_duration, ', ', consultations.symptom_duration) as symptom_duration"),
|
|
]
|
|
|
|
)->take(5);
|
|
|
|
|
|
$categories = DB::table('patient_categories')->where('available', 1)->pluck("name", "id");
|
|
$marital_statuses = DB::table('marital_statuses')->pluck("name", "id");
|
|
$diagnoses = DB::table('diagnoses')->where('available', 1)->orderBy('name', 'asc')->pluck("name", "id")->prepend('- select -', '');
|
|
$relationships = DB::table('family_relations')->pluck('name', 'id');
|
|
$occupations = DB::table('occupations')->pluck('name', 'id');
|
|
$patient_categories = DB::table('patient_categories')->where('available', 1)->pluck('name', 'id');
|
|
$drug_categories = DB::table('drug_categories')->get();
|
|
$documents = \Streamline\Models\PatientDocument::where('patient_id', $patient_id)->orderBy('created_at', 'desc')->get();
|
|
//allergies and alerts
|
|
$known_patient_allergies = \Streamline\Models\Allergy::where('patient_id', $patient_id)->orderBy('created_at', 'desc')->take(2)->get();
|
|
$known_patient_alerts = \Streamline\Models\Alert::where('patient_id', $patient_id)->orderBy('created_at', 'desc')->take(2)->get();
|
|
$drug_categories_array = DB::table('drug_categories')->pluck('name', 'id');
|
|
$consultation_id = get_name($episode_id, "id", "consultation_id", "patient_episodes");
|
|
$triage_id = get_name($episode_id, "id", "triage_id", "patient_episodes");
|
|
$triage = Triage::find($triage_id); //this maybe null since one may be admitted straight away
|
|
$emergency_signs = EmergencySign::where(['patient_id' => $patient_id, 'triage_id' => $triage_id, 'episode_id' => $episode_id])->get();
|
|
$patient_documents = PatientDocument::where(['patient_id' => $patient_id])->get();
|
|
$diagnosis = Diagnosis::where('available', 1)->orderby('name', 'asc')->get();
|
|
$diagnoses_all = DB::table('diagnoses')->whereNull('deleted_at')->select('id', 'prompts', 'reference_areas', 'reference_names')->get();
|
|
$obstetric_history = ObstetricHistory::where(['patient_id' => $patient_id])->orderBy('obstetric_date', 'desc')->get();
|
|
$blood_groups = DB::table('blood_groups')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
|
|
$referrals = DB::table('referral_hospitals')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$accuracies = DB::table('ante_natal_clinic_accuracies')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$anc_outcomes = DB::table('ante_natal_clinic_outcomes')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$hiv_statuses = ['' => '-- Select --', '0' => 'Negative', '1' => 'Positive', '3' => 'Unknown'];
|
|
$maternity_progress = DB::table('maternity_progress')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$family_planning_methods = FamilyPlanningMethod::orderBy('name', 'asc')->get();
|
|
$family_planning_methods_data = FamilyPlanningMethod::all();
|
|
|
|
$caesarian_sections = CaesarianSection::orderBy('name', 'asc')->pluck("name", "id")->prepend('- Select -', '');
|
|
$uterus_operations = UterusOperation::orderBy('name', 'asc')->get();
|
|
$uterus_operations = UterusOperation::orderBy('name', 'asc')->pluck("name", "id")->prepend('- Select -', '');
|
|
|
|
// prep the inpatient investigation arrays and counters
|
|
$opd_investigations = [];
|
|
$ward_investigations = [];
|
|
$symptoms = Symptom::pluck("name", "id");
|
|
|
|
// get all investigations ordered in this episode
|
|
$ordered_investigations = OrderedInvestigation::where(['episode_id' => $episode_id])->get();
|
|
|
|
// get all results
|
|
$investigation_results_order_ids = InvestigationResults::pluck('order_id', 'id')->toArray();
|
|
|
|
foreach ($ordered_investigations as $investigation) {
|
|
$investigation_ids = explode(",", $investigation->investigation_id);
|
|
$inpatient_status = explode(",", $investigation->for_inpatient);
|
|
|
|
// check if results are available for this investigation
|
|
if (in_array($investigation->id, $investigation_results_order_ids)) {
|
|
// get the key if available
|
|
$key = array_search($investigation->id, $investigation_results_order_ids);
|
|
|
|
// get the results object
|
|
$results = InvestigationResults::find($key);
|
|
|
|
// exclude obstetric u/s results
|
|
if ($results->result_type != "Ultrasound_Obstetric") {
|
|
$investigation_results = explode(",", $results->value);
|
|
$investigation_per_valid = explode(",", $results->per_investigation);
|
|
$investigation_comments = explode(",", $results->comment);
|
|
|
|
if ($results->all_authenticated == 1) {
|
|
for ($i = 0; $i < count($inpatient_status); $i++) {
|
|
if ($inpatient_status[$i] == 0) {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$opd_investigations['name'][] = $result->name;
|
|
$opd_investigations['value'][] = $investigation_results[$i];
|
|
$opd_investigations['comment'][] = $investigation_comments[$i];
|
|
} else {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$ward_investigations['name'][] = $result->name;
|
|
$ward_investigations['value'][] = $investigation_results[$i];
|
|
$ward_investigations['comment'][] = $investigation_comments[$i];
|
|
}
|
|
}
|
|
} else {
|
|
for ($i = 0; $i < count($inpatient_status); $i++) {
|
|
if ($investigation_per_valid[$i] == 1) {
|
|
// this investigation is authenticated
|
|
if ($inpatient_status[$i] == 0) {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$opd_investigations['name'][] = $result->name;
|
|
$opd_investigations['value'][] = $investigation_results[$i];
|
|
$opd_investigations['comment'][] = $investigation_comments[$i];
|
|
} else {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$ward_investigations['name'][] = $result->name;
|
|
$ward_investigations['value'][] = $investigation_results[$i];
|
|
$ward_investigations['comment'][] = $investigation_comments[$i];
|
|
}
|
|
} else {
|
|
if ($inpatient_status[$i] == 0) {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$opd_investigations['name'][] = $result->name;
|
|
$opd_investigations['value'][] = "Pending";
|
|
$opd_investigations['comment'][] = "Pending";
|
|
} else {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$ward_investigations['name'][] = $result->name;
|
|
$ward_investigations['value'][] = "Pending";
|
|
$ward_investigations['comment'][] = "Pending";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
for ($i = 0; $i < count($inpatient_status); $i++) {
|
|
if ($inpatient_status[$i] == 0) {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$opd_investigations['name'][] = $result->name;
|
|
$opd_investigations['value'][] = "Pending";
|
|
$opd_investigations['comment'][] = "Pending";
|
|
} else {
|
|
$result = Investigation::where('id', $investigation_ids[$i])->first();
|
|
$ward_investigations['name'][] = $result->name;
|
|
$ward_investigations['value'][] = "Pending";
|
|
$ward_investigations['comment'][] = "Pending";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// previous consultations
|
|
if (session()->get('consultation_with_notes') == 1) {
|
|
$consultation_with_notes = true;
|
|
} else {
|
|
$consultation_with_notes = false;
|
|
}
|
|
|
|
|
|
$patient_episodes = DB::table('patient_episodes')->where('patient_id', $patient_id)->whereNotIn('id', [$episode_id])->get();
|
|
$episode = PatientEpisode::where('id', $episode_id)->first();
|
|
|
|
|
|
$past_episodes_info = [];
|
|
$counter = 0;
|
|
|
|
foreach ($patient_episodes as $patient_episode) {
|
|
if ($counter == 5) {
|
|
break;
|
|
}
|
|
|
|
if (!is_episode_safe_to_delete($patient_episode->id) && isset($patient_episode->consultation_id)) { // exclude empty episodes
|
|
$consultations_details = DB::table('consultations')->find($patient_episode->consultation_id);
|
|
|
|
if ($consultations_details) {
|
|
$past_episodes_info[$counter]["start_date"] = streamline_date_time($patient_episode->created_at);
|
|
$past_episodes_info[$counter]["episode_id"] = $patient_episode->id;
|
|
|
|
$past_episodes_info[$counter]["primary_diagnosis"] = $consultations_details->primary_diagnosis ?? 0;
|
|
if (unserialize($consultations_details->other_diagnoses)) {
|
|
$past_episodes_info[$counter]["other_diagnoses"] = unserialize($consultations_details->other_diagnoses);
|
|
} else {
|
|
$past_episodes_info[$counter]["other_diagnoses"] = [];
|
|
}
|
|
|
|
$past_episodes_info[$counter]["outcome"] = $consultations_details->outcome_id ?? 0;
|
|
$doctor_id = $consultations_details->consultation_done_by ?? $consultations_details->created_by;
|
|
$past_episodes_info[$counter]["doctor"] = get_full_name($doctor_id, 'id', 'first_name', 'last_name', 'users');
|
|
$past_episodes_info[$counter]["clinic"] = isset($patient_episode->clinic_id) ? get_name($patient_episode->clinic_id, 'id', 'name', 'clinics') : "N/A";
|
|
|
|
if (isset($patient_episode->triage_id)) {
|
|
$triage_details = DB::table('triage')->find($patient_episode->triage_id);
|
|
|
|
if ($triage_details) {
|
|
$past_episodes_info[$counter]["symptoms"] = [
|
|
"symptom_duration" => $triage_details->symptom_duration,
|
|
"symptoms" => $triage_details->symptoms
|
|
];
|
|
|
|
$observations = explode(",", $triage_details->observations);
|
|
$past_episodes_info[$counter]["resp"] = "N/A";
|
|
$past_episodes_info[$counter]["mmhg"] = "N/A";
|
|
$past_episodes_info[$counter]["pulse"] = "N/A";
|
|
$past_episodes_info[$counter]["temp"] = "N/A";
|
|
|
|
foreach ($observations as $observation) {
|
|
if (strpos($observation, "Temperature") !== false) {
|
|
$past_episodes_info[$counter]["temp"] = explode("=", $observation)[1];
|
|
}
|
|
|
|
if (strpos($observation, "Pulse") !== false) {
|
|
$past_episodes_info[$counter]["pulse"] = explode("=", $observation)[1];
|
|
}
|
|
|
|
if (strpos($observation, "Systolic bp") !== false) {
|
|
$past_episodes_info[$counter]["mmhg"] = explode("=", $observation)[1];
|
|
}
|
|
|
|
if (strpos($observation, "Diastolic bp") !== false) {
|
|
$past_episodes_info[$counter]["mmhg"] = $past_episodes_info[$counter]["mmhg"] . " / " . explode("=", $observation)[1];
|
|
}
|
|
|
|
if (strpos($observation, "Respirations") !== false) {
|
|
$past_episodes_info[$counter]["resp"] = explode("=", $observation)[1];
|
|
}
|
|
}
|
|
} else {
|
|
$past_episodes_info[$counter]["symptoms"] = [];
|
|
$past_episodes_info[$counter]["resp"] = "N/A";
|
|
$past_episodes_info[$counter]["mmhg"] = "N/A";
|
|
$past_episodes_info[$counter]["pulse"] = "N/A";
|
|
$past_episodes_info[$counter]["temp"] = "N/A";
|
|
}
|
|
} else {
|
|
$past_episodes_info[$counter]["symptoms"] = [];
|
|
$past_episodes_info[$counter]["resp"] = "N/A";
|
|
$past_episodes_info[$counter]["mmhg"] = "N/A";
|
|
$past_episodes_info[$counter]["pulse"] = "N/A";
|
|
$past_episodes_info[$counter]["temp"] = "N/A";
|
|
}
|
|
|
|
$counter++;
|
|
}
|
|
}
|
|
}
|
|
|
|
// end previous consultations
|
|
|
|
return view(
|
|
|
|
'maternity::labour_ward.labour_ward_admission_sheet',
|
|
compact(
|
|
'existing_maternity_inpatient_data',
|
|
'existing_maternity_delivery_plan',
|
|
'existing_maternity_pelvic_examination_and_assessement',
|
|
'existing_uterus_operations',
|
|
'existing_other_facility_operations',
|
|
'diagnoses_all',
|
|
'current_episode_triage_symptoms',
|
|
'patient_episodes',
|
|
'patient_id',
|
|
'past_episodes_info',
|
|
'episode',
|
|
'consultation_with_notes',
|
|
'existing_maternity_mother_history',
|
|
'existing_blood_transfusion',
|
|
'previous_consultation_inpatient_info',
|
|
'latest_anc_registration',
|
|
'latest_existing_maternity_inpatient_data',
|
|
'latest_existing_maternity_mother_history',
|
|
'patient_id',
|
|
'episode_id',
|
|
'patient',
|
|
'categories',
|
|
'patient_surgeries',
|
|
'patient_consultations',
|
|
'marital_statuses',
|
|
'diagnoses',
|
|
'diagnoses_patient',
|
|
'relationships',
|
|
'occupations',
|
|
'drug_categories',
|
|
'documents',
|
|
'drug_categories_array',
|
|
'known_patient_alerts',
|
|
'known_patient_allergies',
|
|
'consultation_id',
|
|
'triage_id',
|
|
'triage',
|
|
'anc_registration',
|
|
'emergency_signs',
|
|
'patient_documents',
|
|
'diagnosis',
|
|
'obstetric_history',
|
|
'anc_blood_transfusion',
|
|
'blood_groups',
|
|
'referrals',
|
|
'accuracies',
|
|
'anc_outcomes',
|
|
'hiv_statuses',
|
|
'maternity_progress',
|
|
'ward_investigations',
|
|
'opd_investigations',
|
|
'symptoms',
|
|
'obstetric_history_details',
|
|
'family_planning_methods',
|
|
'caesarian_sections',
|
|
'uterus_operations',
|
|
|
|
)
|
|
);
|
|
}
|
|
|
|
// store labour ward admission sheet
|
|
public function store_labour_ward_admission_sheet(Request $request)
|
|
{
|
|
$episode_id = session()->get('episode_id');
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$patient_id = $patient_episode_details->patient_id;
|
|
$labour_ward_admission = new LabourWardAdmission();
|
|
$labour_ward_admission->patient_id = $patient_id;
|
|
$labour_ward_admission->episode_id = $episode_id;
|
|
$labour_ward_admission->labour_onset = $request->labour_onset;
|
|
$labour_ward_admission->active_labour_diagnosis_date = $request->active_labour_diagnosis_date;
|
|
$labour_ward_admission->membranes_rapture_at = $request->membranes_rapture_at;
|
|
$labour_ward_admission->gravida = $request->gravida;
|
|
$labour_ward_admission->para = $request->para;
|
|
$labour_ward_admission->abortions = $request->abortions;
|
|
$labour_ward_admission->ectopic_pregnancies = $request->ectopic_pregnancies;
|
|
$labour_ward_admission->post_partum = $request->post_partum;
|
|
$labour_ward_admission->history_of_aph = $request->history_of_aph;
|
|
$labour_ward_admission->history_of_fits = $request->history_of_fits;
|
|
$labour_ward_admission->history_aph_details = $request->history_aph_details;
|
|
$labour_ward_admission->history_fit_details = $request->history_fit_details;
|
|
$labour_ward_admission->iufd = $request->iufd;
|
|
$labour_ward_admission->born_before_arrival = $request->born_before_arrival;
|
|
$labour_ward_admission->progress = $request->progress;
|
|
$labour_ward_admission->other_labour_comments = $request->other_labour_comments;
|
|
$labour_ward_admission->obstetric_risk_factors = json_encode($request->obstetric_risk_factors);
|
|
$labour_ward_admission->other_obstetric_risk_factors = $request->other_obstetric_risk_factors;
|
|
$labour_ward_admission->created_by = auth()->user()->id;
|
|
|
|
//save_labour_ward_admission
|
|
if ($request->get('submit-btn') == 'complete') {
|
|
// save and complete
|
|
$labour_ward_admission->complete = 1;
|
|
$labour_ward_admission->save();
|
|
} else {
|
|
// save draft
|
|
$labour_ward_admission->complete = 0;
|
|
$labour_ward_admission->save();
|
|
}
|
|
|
|
// redirect based on button click
|
|
switch ($request->get('submit-btn')):
|
|
case 'complete':
|
|
$url = '/patient_episodes';
|
|
break;
|
|
|
|
case 'save_labour_ward_admission':
|
|
$url = '/patient_episodes';
|
|
break;
|
|
default:
|
|
break;
|
|
endswitch;
|
|
|
|
flash("Labour ward admission successful")->success();
|
|
return redirect($url);
|
|
|
|
}
|
|
|
|
// labour ward admission sheet details
|
|
public function labour_ward_admission_sheet_details()
|
|
{
|
|
$episode_id = session()->get('episode_id');
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$patient_id = $patient_episode_details->patient_id;
|
|
$patient = Patient::find($patient_id);
|
|
$maternity_progress = DB::table('maternity_progress')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
|
|
$labour_ward_admission_details = LabourWardAdmission::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
return view(
|
|
|
|
'maternity::labour_ward.labour_ward_admission_details',
|
|
compact(
|
|
'episode_id',
|
|
'patient',
|
|
'labour_ward_admission_details',
|
|
'maternity_progress'
|
|
)
|
|
);
|
|
}
|
|
|
|
// edit labour ward admission sheet
|
|
public function edit_labour_ward_admission_sheet()
|
|
{
|
|
$episode_id = session()->get('episode_id');
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$diagnoses_patient = DB::table('diagnoses')->orderBy('name', 'asc')->pluck("name", "id");
|
|
$patient_id = $patient_episode_details->patient_id;
|
|
$patient = Patient::find($patient_id);
|
|
$existing_labour_admission_data = LabourWardAdmission::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$latest_anc_registration = AnteNatalClinicRegistration::where(['patient_id' => $patient_id])->orderBy('id', 'desc')->latest()->first();
|
|
$latest_existing_maternity_inpatient_data = MaternityInpatient::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->latest()->first();
|
|
$maternity_progress = DB::table('maternity_progress')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$existing_maternity_inpatient_data = MaternityInpatient::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$existing_maternity_delivery_plan = MaternityDeliveryPlan::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$existing_maternity_mother_history = MaternityMotherHistory::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$existing_maternity_pelvic_examination_and_assessement = PelvicExaminationAndAssessment::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$anc_registration = AnteNatalClinicRegistration::where(['patient_id' => $patient_id])->orderBy('id', 'desc')->first();
|
|
$referrals = DB::table('referral_hospitals')->whereNull('deleted_at')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$patient_episodes = DB::table('patient_episodes')->where('patient_id', $patient_id)->whereNotIn('id', [$episode_id])->get();
|
|
$episode = PatientEpisode::where('id', $episode_id)->first();
|
|
|
|
return view(
|
|
'maternity::labour_ward.edit_labour_ward_admission_sheet',
|
|
compact(
|
|
'existing_labour_admission_data',
|
|
'existing_maternity_inpatient_data',
|
|
'existing_maternity_delivery_plan',
|
|
'existing_maternity_pelvic_examination_and_assessement',
|
|
'patient_id',
|
|
'episode',
|
|
'existing_maternity_mother_history',
|
|
'episode_id',
|
|
'patient',
|
|
'anc_registration',
|
|
'referrals',
|
|
'latest_anc_registration',
|
|
'latest_existing_maternity_inpatient_data',
|
|
'maternity_progress'
|
|
|
|
)
|
|
);
|
|
}
|
|
|
|
// update labour ward admissino sheet
|
|
public function updpate_labour_ward_admission_sheet(Request $request, $id)
|
|
{
|
|
$episode_id = session()->get('episode_id');
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$patient_id = $patient_episode_details->patient_id;
|
|
|
|
$labour_ward_admission = LabourWardAdmission::findOrFail($id);
|
|
$labour_ward_admission->patient_id = $patient_id;
|
|
$labour_ward_admission->episode_id = $episode_id;
|
|
$labour_ward_admission->labour_onset = $request->labour_onset;
|
|
$labour_ward_admission->active_labour_diagnosis_date = $request->active_labour_diagnosis_date;
|
|
$labour_ward_admission->membranes_rapture_at = $request->membranes_rapture_at;
|
|
$labour_ward_admission->gravida = $request->gravida;
|
|
$labour_ward_admission->para = $request->para;
|
|
$labour_ward_admission->abortions = $request->abortions;
|
|
$labour_ward_admission->ectopic_pregnancies = $request->ectopic_pregnancies;
|
|
$labour_ward_admission->post_partum = $request->post_partum;
|
|
$labour_ward_admission->history_of_aph = $request->history_of_aph;
|
|
$labour_ward_admission->history_of_fits = $request->history_of_fits;
|
|
$labour_ward_admission->history_aph_details = $request->history_aph_details;
|
|
$labour_ward_admission->history_fit_details = $request->history_fit_details;
|
|
$labour_ward_admission->iufd = $request->iufd;
|
|
$labour_ward_admission->born_before_arrival = $request->born_before_arrival;
|
|
$labour_ward_admission->progress = $request->progress;
|
|
$labour_ward_admission->other_labour_comments = $request->other_labour_comments;
|
|
$labour_ward_admission->obstetric_risk_factors = json_encode($request->obstetric_risk_factors);
|
|
$labour_ward_admission->other_obstetric_risk_factors = $request->other_obstetric_risk_factors;
|
|
$labour_ward_admission->created_by = auth()->user()->id;
|
|
|
|
//update_labour_ward_admission
|
|
if ($request->get('submit-btn') == 'complete') {
|
|
// update and complete
|
|
$labour_ward_admission->complete = 1;
|
|
$labour_ward_admission->save();
|
|
} else {
|
|
// save draft
|
|
$labour_ward_admission->complete = 0;
|
|
$labour_ward_admission->save();
|
|
}
|
|
|
|
// redirect based on button click
|
|
switch ($request->get('submit-btn')):
|
|
case 'complete':
|
|
$url = '/patient_episodes';
|
|
break;
|
|
|
|
case 'save_labour_ward_admission':
|
|
$url = '/patient_episodes';
|
|
break;
|
|
default:
|
|
break;
|
|
endswitch;
|
|
|
|
flash("Labour ward admission successful")->success();
|
|
return redirect($url);
|
|
|
|
}
|
|
|
|
// print labour ward admission
|
|
public function print_labour_admission_sheet_details($episode_id)
|
|
{
|
|
|
|
$episode_id = session()->get('episode_id');
|
|
$patient_episode_details = PatientEpisode::find($episode_id);
|
|
$patient_id = $patient_episode_details->patient_id;
|
|
$patient = Patient::find($patient_id);
|
|
$episode = PatientEpisode::find($episode_id);
|
|
$hospitalInfo = \Streamline\Models\HospitalInformation::find(1);
|
|
$maternity_progress = DB::table('maternity_progress')->orderBy('name')->pluck('name', 'id')->prepend('- select -', '');
|
|
$consultation = Consultation::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
$labour_ward_admission_details = LabourWardAdmission::where(['patient_id' => $patient_id, 'episode_id' => $episode_id])->first();
|
|
|
|
return view(
|
|
'maternity::labour_ward.print.print_labour_admission_sheet_details',
|
|
compact(
|
|
'episode_id',
|
|
'episode',
|
|
'patient',
|
|
'labour_ward_admission_details',
|
|
'maternity_progress',
|
|
'consultation',
|
|
'hospitalInfo'
|
|
)
|
|
);
|
|
}
|
|
}
|