mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-11 18:51:31 +00:00
162 lines
10 KiB
PHP
Executable File
162 lines
10 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Modules\Reports\Http\Controllers;
|
|
|
|
use Barryvdh\Snappy\Facades\SnappyPdf;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Streamline\Models\HospitalInformation;
|
|
use Streamline\Models\PatientEpisode;
|
|
use Streamline\Models\Investigation;
|
|
|
|
class HmisController002 extends Controller {
|
|
|
|
public function page_1(Request $request) {
|
|
$search_text = "";
|
|
|
|
switch ($request->search_date_by){
|
|
case 'yesterday':
|
|
$end_date = Carbon::yesterday()->endOfDay()->format('Y-m-d H:i:s');
|
|
$start_date = Carbon::yesterday()->startOfDay()->format('Y-m-d H:i:s');
|
|
$search_text .= "Yesterday ";
|
|
break;
|
|
case 'custom_date':
|
|
$end_date = Carbon::parse($request->start_date)->endOfDay()->format('Y-m-d H:i:s');
|
|
$start_date = Carbon::parse($request->start_date)->startOfDay()->format('Y-m-d H:i:s');
|
|
$search_text .= "From: " . streamline_date($start_date) . " ";
|
|
break;
|
|
case 'custom_date_range':
|
|
$end_date = Carbon::parse($request->end_date)->endOfDay()->format('Y-m-d H:i:s');
|
|
$start_date = Carbon::parse($request->start_date)->startOfDay()->format('Y-m-d H:i:s');
|
|
$search_text .= "From: " . streamline_date($start_date) . " to " . streamline_date($end_date) . " ";
|
|
break;
|
|
case 'today':
|
|
default:
|
|
$end_date = Carbon::today()->endOfDay()->format('Y-m-d H:i:s');
|
|
$start_date = Carbon::today()->startOfDay()->format('Y-m-d H:i:s');
|
|
$search_text .= "Today ";
|
|
break;
|
|
}
|
|
|
|
$episodes = PatientEpisode::leftJoin('triage', 'patient_episodes.triage_id', '=', 'triage.id')
|
|
->leftJoin('patients', 'patient_episodes.patient_id', '=', 'patients.id')
|
|
->leftJoin('consultations as c', 'patient_episodes.id', '=', 'c.episode_id')
|
|
->leftJoin('districts', 'patients.district_id', '=', 'districts.id')
|
|
->leftJoin('subcounties', 'patients.subcounty_id', '=', 'subcounties.id')
|
|
->leftJoin('parishes', 'patients.parish_id', '=', 'parishes.id')
|
|
->leftJoin('villages', 'patients.village_id', '=', 'villages.id')
|
|
->leftJoin('family_relations', 'patients.next_of_kin_relationship', '=', 'family_relations.id')
|
|
->select('patient_episodes.id as id', 'first_name', 'last_name', 'date_of_birth', 'gender', 'citizenship', 'next_of_kin', 'national_id', 'phone', 'rbs', 'phone_of_next_of_kin', 'next_of_kin_relationship', 'family_relations.name as relation', 'observations', 'new_attendance', 'villages.name as village', 'parishes.name as parish', 'subcounties.name as subcounty', 'districts.name as district', 'patient_episodes.created_at', 'patient_episodes.consultation_id','patient_episodes.triage_id')
|
|
->whereBetween('patient_episodes.created_at', [$start_date, $end_date])->orderBy('id', 'asc')
|
|
->get();
|
|
|
|
$hospital_info = HospitalInformation::find(1);
|
|
|
|
return view('reports::hmis_reports.002.page-1', compact('search_text', 'episodes', 'start_date','hospital_info','end_date'));
|
|
}
|
|
|
|
public function page_1_print($start_date, $end_date) {
|
|
$episodes = PatientEpisode::leftJoin('triage', 'patient_episodes.triage_id', '=', 'triage.id')
|
|
->leftJoin('patients', 'patient_episodes.patient_id', '=', 'patients.id')
|
|
->leftJoin('consultations as c', 'patient_episodes.id', '=', 'c.episode_id')
|
|
->leftJoin('districts', 'patients.district_id', '=', 'districts.id')
|
|
->leftJoin('subcounties', 'patients.subcounty_id', '=', 'subcounties.id')
|
|
->leftJoin('parishes', 'patients.parish_id', '=', 'parishes.id')
|
|
->leftJoin('villages', 'patients.village_id', '=', 'villages.id')
|
|
->leftJoin('family_relations', 'patients.next_of_kin_relationship', '=', 'family_relations.id')
|
|
->select('patient_episodes.id as id', 'first_name', 'last_name', 'date_of_birth', 'gender', 'citizenship', 'next_of_kin', 'national_id', 'phone', 'rbs', 'phone_of_next_of_kin', 'next_of_kin_relationship', 'family_relations.name as relation', 'observations', 'new_attendance', 'villages.name as village', 'parishes.name as parish', 'subcounties.name as subcounty', 'districts.name as district', 'patient_episodes.created_at', 'patient_episodes.consultation_id','patient_episodes.triage_id')
|
|
->whereBetween('patient_episodes.created_at', [$start_date, $end_date])->orderBy('id', 'asc')
|
|
->get();
|
|
|
|
$search_text = "From: " . streamline_date($start_date) . " to " . streamline_date($end_date);
|
|
$hospital_info = HospitalInformation::find(1);
|
|
$data = [
|
|
'search_text' => $search_text,
|
|
'episodes' => $episodes,
|
|
'hospital_info' => $hospital_info,
|
|
'start_date' => $start_date,
|
|
'end_date' => $end_date
|
|
];
|
|
|
|
$pdf = SnappyPDF::loadView('reports::hmis_reports/002/page-1-print', $data)
|
|
->setOrientation('landscape')
|
|
->setPaper('a3')
|
|
->setOption('margin-bottom', 10)
|
|
->setOption('footer-left', 'Stre@mline')
|
|
->setOption('footer-right', '[page] of [toPage]');
|
|
|
|
return $pdf->inline('HMIS OPD 002 - Outpatient Register' . date(" d-m-y h:ia") . '.pdf');
|
|
}
|
|
|
|
public function page_2(Request $request) {
|
|
$search_text = !empty($request->search_text)? $request->search_text :"";
|
|
if(!empty($request->page_1_start_date)){
|
|
$end_date = $request->end_date;
|
|
$start_date = $request->page_1_start_date;
|
|
} else
|
|
switch ($request->search_date_by){
|
|
case 'yesterday':
|
|
$end_date = Carbon::yesterday()->endOfDay()->format('Y-m-d H:i:s');
|
|
$start_date = Carbon::yesterday()->startOfDay()->format('Y-m-d H:i:s');
|
|
$search_text .= "Yesterday ";
|
|
break;
|
|
case 'custom_date':
|
|
$end_date = Carbon::parse($request->start_date)->endOfDay()->format('Y-m-d H:i:s');
|
|
$start_date = Carbon::parse($request->start_date)->startOfDay()->format('Y-m-d H:i:s');
|
|
$search_text .= "From: " . streamline_date($start_date) . " ";
|
|
break;
|
|
case 'custom_date_range':
|
|
$end_date = Carbon::parse($request->end_date)->endOfDay()->format('Y-m-d H:i:s');
|
|
$start_date = Carbon::parse($request->start_date)->startOfDay()->format('Y-m-d H:i:s');
|
|
$search_text .= "From: " . streamline_date($start_date) . " to " . streamline_date($end_date) . " ";
|
|
break;
|
|
case 'today':
|
|
default:
|
|
$end_date = Carbon::today()->endOfDay()->format('Y-m-d H:i:s');
|
|
$start_date = Carbon::today()->startOfDay()->format('Y-m-d H:i:s');
|
|
$search_text .= "Today ";
|
|
break;
|
|
}
|
|
|
|
$episodes = PatientEpisode::leftJoin('triage', 'patient_episodes.triage_id', '=', 'triage.id')
|
|
->leftJoin('patients', 'patient_episodes.patient_id', '=', 'patients.id')
|
|
->leftJoin('consultations as c', 'patient_episodes.id', '=', 'c.episode_id')
|
|
->leftJoin('treatments as t', 'patient_episodes.id', '=', 't.episode_id')
|
|
->leftJoin('investigation_results as or', 'or.episode_id','patient_episodes.id')
|
|
->leftJoin('eye_clinic_main_exam as e', 'patient_episodes.id', '=', 'e.episode_id')
|
|
->select('patient_episodes.id as id', 'first_name', 'last_name', 'date_of_birth', 'gender', 'next_of_kin', 'national_id','patients.id as patient_id', 'attendance', 'phone', 'phone_of_next_of_kin', 'new_attendance', 're_attendance','primary_diagnosis','other_diagnoses','rdt',DB::raw('GROUP_CONCAT(drugs) as drugs'),DB::raw('GROUP_CONCAT(frequencies) as frequencies'),DB::raw('GROUP_CONCAT(durations) as durations'),DB::raw('GROUP_CONCAT(doses) as doses'),'tb_status_assessment',
|
|
'next_of_kin_relationship', 'right_eye_diagnosis', 'triage.symptoms', 'c.symptoms as symps', 'patient_episodes.clinic_id', 'left_eye_diagnosis', DB::raw('GROUP_CONCAT(or.investigation_id) as investigation_ids'), 'observations', 'new_attendance', 'patient_episodes.created_at', 'patient_episodes.consultation_id','patient_episodes.triage_id', 'number', 'c.referred_to')
|
|
->whereBetween('patient_episodes.created_at', [$start_date, $end_date])->orderBy('id', 'asc')->groupBy('id')
|
|
->get();
|
|
|
|
$hospital_info = HospitalInformation::find(1);
|
|
$fever_symptom_ids = DB::table('symptoms')->where('name', 'LIKE', "%fever%")->orderBy('name')->pluck('id')->toArray();
|
|
$tb_clinic_ids = DB::table('clinics')->where('name', 'LIKE', "%tb%")->orWhere('name', 'LIKE', "%tuber%")->pluck('id')->toArray();
|
|
$investigations = Investigation::whereIn('hmis_002_slug', [2,3])->pluck('id')->toArray();
|
|
return view('reports::hmis_reports.002.page-2', compact('search_text', 'episodes', 'start_date', 'end_date', 'hospital_info', 'fever_symptom_ids','tb_clinic_ids','investigations'));
|
|
}
|
|
|
|
public function page_2_print(Request $request) {
|
|
$data = [
|
|
'search_text' => $request->search_text,
|
|
'episodes'=> unserialize($request->episodes),
|
|
'start_date' => $request->start_date,
|
|
'end_date' => $request->end_date,
|
|
'hospital_info' => unserialize($request->hospital_info),
|
|
'fever_symptom_ids'=> unserialize($request->fever_symptom_ids),
|
|
'tb_clinic_ids'=> unserialize($request->tb_clinic_ids),
|
|
'investigations'=> unserialize($request->investigations)
|
|
];
|
|
|
|
$pdf = SnappyPDF::loadView('reports::hmis_reports/002/page-2-print', $data)
|
|
->setOrientation('landscape')
|
|
->setPaper('a3')
|
|
->setOption('margin-bottom', 10)
|
|
->setOption('footer-left', 'Stre@mline')
|
|
->setOption('footer-right', '[page] of [toPage]');
|
|
|
|
return $pdf->inline('HMIS OPD 002 - Outpatient Register' . date(" d-m-y h:ia") . '.pdf');
|
|
}
|
|
}
|