mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-11 18:51:31 +00:00
481 lines
17 KiB
PHP
481 lines
17 KiB
PHP
<?php
|
|
|
|
namespace Modules\ClinicalData\Http\Controllers;
|
|
|
|
use Illuminate\Database\QueryException;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Streamline\Models\County;
|
|
use Streamline\Models\District;
|
|
use Streamline\Models\Occupation;
|
|
use Streamline\Models\Parish;
|
|
use Streamline\Models\Subcounty;
|
|
use Streamline\Models\Village;
|
|
|
|
class ResidenceController
|
|
{
|
|
public function __construct()
|
|
{
|
|
}
|
|
|
|
public function get_counties($id)
|
|
{
|
|
$code = "<option> -- select -- </option>";
|
|
$counties = DB::table('counties')
|
|
->whereNull('deleted_at')
|
|
->where(['district_id' => $id])
|
|
->get();
|
|
|
|
foreach ($counties as $county) {
|
|
$code .= "<option value='" . $county->id . "'>" . $county->name . "</option>";
|
|
}
|
|
|
|
return $code;
|
|
}
|
|
|
|
public function get_subcounties($id)
|
|
{
|
|
$code = "<option> -- select -- </option>";
|
|
|
|
$subcounties = DB::table('subcounties')
|
|
->whereNull('deleted_at')
|
|
->where(['county_id' => $id])
|
|
->get();
|
|
|
|
foreach ($subcounties as $subcounty) {
|
|
$code .= "<option value='" . $subcounty->id . "'>" . $subcounty->name . "</option>";
|
|
}
|
|
|
|
$code .= "</select>";
|
|
|
|
return $code;
|
|
}
|
|
|
|
public function get_parishes($id)
|
|
{
|
|
$code = "<option> -- select -- </option>";
|
|
|
|
$parishes = DB::table('parishes')
|
|
->whereNull('deleted_at')
|
|
->where(['subcounty_id' => $id])
|
|
->get();
|
|
|
|
foreach ($parishes as $parish) {
|
|
$code .= "<option value='" . $parish->id . "'>" . $parish->name . "</option>";
|
|
}
|
|
|
|
return $code;
|
|
}
|
|
|
|
public function get_villages($id)
|
|
{
|
|
$code = "<option> -- select -- </option>";
|
|
|
|
$villages = DB::table('villages')
|
|
->whereNull('deleted_at')
|
|
->where(['parish_id' => $id])
|
|
->get();
|
|
|
|
foreach ($villages as $village) {
|
|
$code .= "<option value='" . $village->id . "'>" . $village->name . "</option>";
|
|
}
|
|
|
|
return $code;
|
|
}
|
|
|
|
/*
|
|
* get patient residences and send corresponding drop down options
|
|
*/
|
|
public function search_districts(Request $request) {
|
|
$data = [];
|
|
|
|
if ($request->has('q')) {
|
|
$search = $request->q;
|
|
$data = DB::table('districts')->select("name", "id")
|
|
->where('name', 'LIKE', "%$search%")
|
|
->get();
|
|
}
|
|
|
|
return response()->json($data);
|
|
}
|
|
|
|
public function search_counties(Request $request) {
|
|
$data = [];
|
|
|
|
if ($request->has('q')) {
|
|
$search = $request->q;
|
|
$data = DB::table('counties')->leftJoin('districts', 'districts.id', '=', 'counties.district_id')
|
|
->select("counties.name", "counties.id", "districts.name as district_name")
|
|
->where('counties.name', 'LIKE', "%$search%")
|
|
->get();
|
|
}
|
|
|
|
return response()->json($data);
|
|
}
|
|
|
|
public function search_subcounties(Request $request) {
|
|
$data = [];
|
|
|
|
if ($request->has('q')) {
|
|
$search = $request->q;
|
|
$data = DB::table('subcounties')->leftJoin('counties', 'counties.id', '=', 'subcounties.county_id')
|
|
->select("subcounties.name", "subcounties.id", "counties.name as county_name")
|
|
->where('subcounties.name', 'LIKE', "%$search%")
|
|
->get();
|
|
}
|
|
|
|
return response()->json($data);
|
|
}
|
|
|
|
public function search_parishes(Request $request) {
|
|
$data = [];
|
|
|
|
if ($request->has('q')) {
|
|
$search = $request->q;
|
|
$data = DB::table('parishes')->leftJoin('subcounties', 'subcounties.id', '=', 'parishes.subcounty_id')
|
|
->select("parishes.name", "parishes.id", "subcounties.name as sub_county_name")
|
|
->where('parishes.name', 'LIKE', "%$search%")
|
|
->get();
|
|
}
|
|
|
|
return response()->json($data);
|
|
}
|
|
|
|
public function search_villages(Request $request) {
|
|
$data = [];
|
|
|
|
if ($request->has('q')) {
|
|
$search = $request->q;
|
|
$data = DB::table('villages')->leftJoin('parishes', 'parishes.id', '=', 'villages.parish_id')
|
|
->select("villages.name", "villages.id", "parishes.name as parish_name")
|
|
->where('villages.name', 'LIKE', "%$search%")
|
|
->get();
|
|
}
|
|
|
|
return response()->json($data);
|
|
}
|
|
|
|
public function get_residence($district_id)
|
|
{
|
|
//loop is going to take long execution time
|
|
$villages_array = [];
|
|
$parishes_array = [];
|
|
$subcounties_array = [];
|
|
|
|
$counties = DB::table('counties')->where(['district_id' => $district_id])->whereNull('deleted_at')->pluck("name", "id");
|
|
foreach ($counties as $county_id => $county_name) {
|
|
$subcounties = DB::table('subcounties')->where(['county_id' => $county_id])->whereNull('deleted_at')->get();
|
|
foreach ($subcounties as $subcounty) {
|
|
$subcounties_array[$subcounty->id] = $subcounty->name;
|
|
$parishes = DB::table('parishes')->where(['subcounty_id' => $subcounty->id])->whereNull('deleted_at')->get();
|
|
foreach ($parishes as $parish) {
|
|
$parishes_array[$parish->id] = $parish->name;
|
|
$villages = DB::table('villages')->where(['parish_id' => $parish->id])->whereNull('deleted_at')->get();
|
|
foreach ($villages as $village) {
|
|
$villages_array[$village->id] = $village->name;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return ['subcounties' => $subcounties_array, 'parishes' => $parishes_array, 'villages' => $villages_array];
|
|
}
|
|
|
|
public function get_residence_district($district_id)
|
|
{
|
|
//loop is going to take long execution time
|
|
$villages_array = [];
|
|
$parishes_array = [];
|
|
$sub_counties_array = [];
|
|
$counties_array = [];
|
|
$residences_array = [];
|
|
|
|
$counties = DB::table('counties')->where(['district_id' => $district_id])->whereNull('deleted_at')->orderBy("name", "asc")->pluck("name", "id");
|
|
foreach ($counties as $county_id => $county_name) {
|
|
$counties_array[$county_id] = $county_name;
|
|
$subcounties = DB::table('subcounties')->where(['county_id' => $county_id])->whereNull('deleted_at')->get();
|
|
foreach ($subcounties as $subcounty) {
|
|
$sub_counties_array[$subcounty->id] = $subcounty->name;
|
|
$parishes = DB::table('parishes')->where(['subcounty_id' => $subcounty->id])->whereNull('deleted_at')->get();
|
|
foreach ($parishes as $parish) {
|
|
$parishes_array[$parish->id] = $parish->name;
|
|
$villages = DB::table('villages')->where(['parish_id' => $parish->id])->whereNull('deleted_at')->get();
|
|
foreach ($villages as $village) {
|
|
$villages_array[$village->id] = $village->name;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$residences_array['counties'] = $counties_array;
|
|
$residences_array['subcounties'] = $sub_counties_array;
|
|
$residences_array['parishes'] = $parishes_array;
|
|
$residences_array['villages'] = $villages_array;
|
|
|
|
return json_encode($residences_array);
|
|
}
|
|
|
|
public function get_residence_county($county_id)
|
|
{
|
|
//loop is going to take long execution time
|
|
$villages_array = [];
|
|
$parishes_array = [];
|
|
$sub_counties_array = [];
|
|
$residences_array = [];
|
|
|
|
$subcounties = DB::table('subcounties')->where(['county_id' => $county_id])->whereNull('deleted_at')->orderBy("name", "asc")->get();
|
|
foreach ($subcounties as $subcounty) {
|
|
$sub_counties_array[$subcounty->id] = $subcounty->name;
|
|
$parishes = DB::table('parishes')->where(['subcounty_id' => $subcounty->id])->whereNull('deleted_at')->get();
|
|
foreach ($parishes as $parish) {
|
|
$parishes_array[$parish->id] = $parish->name;
|
|
$villages = DB::table('villages')->where(['parish_id' => $parish->id])->whereNull('deleted_at')->get();
|
|
foreach ($villages as $village) {
|
|
$villages_array[$village->id] = $village->name;
|
|
}
|
|
}
|
|
}
|
|
|
|
$residences_array['subcounties'] = $sub_counties_array;
|
|
$residences_array['parishes'] = $parishes_array;
|
|
$residences_array['villages'] = $villages_array;
|
|
|
|
return json_encode($residences_array);
|
|
}
|
|
|
|
public function get_residence_sub_county($sub_county_id)
|
|
{
|
|
//loop is going to take long execution time
|
|
$villages_array = [];
|
|
$parishes_array = [];
|
|
$residences_array = [];
|
|
|
|
$parishes = DB::table('parishes')->where(['subcounty_id' => $sub_county_id])->whereNull('deleted_at')->orderBy("name", "asc")->get();
|
|
foreach ($parishes as $parish) {
|
|
$parishes_array[$parish->id] = $parish->name;
|
|
$villages = DB::table('villages')->where(['parish_id' => $parish->id])->whereNull('deleted_at')->get();
|
|
foreach ($villages as $village) {
|
|
$villages_array[$village->id] = $village->name;
|
|
}
|
|
}
|
|
|
|
$residences_array['parishes'] = $parishes_array;
|
|
$residences_array['villages'] = $villages_array;
|
|
|
|
return json_encode($residences_array);
|
|
}
|
|
|
|
public function get_residence_parish($parish_id)
|
|
{
|
|
//loop is going to take long execution time
|
|
$villages_array = [];
|
|
$residences_array = [];
|
|
|
|
$villages = DB::table('villages')->where(['parish_id' => $parish_id])->whereNull('deleted_at')->orderBy("name", "asc")->get();
|
|
foreach ($villages as $village) {
|
|
$villages_array[$village->id] = $village->name;
|
|
}
|
|
|
|
$residences_array['villages'] = $villages_array;
|
|
|
|
return json_encode($residences_array);
|
|
}
|
|
|
|
/* cater for adding a new occupation from a modal dynamically */
|
|
public function add_new_occupation_dynamically(Request $request)
|
|
{
|
|
$occupation = new Occupation;
|
|
$occupation->name = $request->name;
|
|
$occupation->created_by = Auth::user()->id;
|
|
$occupation->updated_by = Auth::user()->id;
|
|
|
|
try {
|
|
$occupation->save();
|
|
return $occupation->id;
|
|
} catch (QueryException $e) {
|
|
flash("An error occurred")->error();
|
|
return back()->withInput();
|
|
}
|
|
}
|
|
|
|
public function add_new_district_dynamically(Request $request)
|
|
{
|
|
$district = new District;
|
|
$district->name = $request->name;
|
|
$district->created_by = Auth::user()->id;
|
|
$district->updated_by = Auth::user()->id;
|
|
|
|
$check = District::where('name', $request->name)->pluck('name')->first();
|
|
if (is_null($check)) {
|
|
try {
|
|
$district->save();
|
|
return $district->id;
|
|
} catch (QueryException $e) {
|
|
flash("An error occurred")->error();
|
|
return back()->withInput();
|
|
}
|
|
} else {
|
|
return 'false';
|
|
}
|
|
}
|
|
|
|
public function add_new_county_dynamically(Request $request)
|
|
{
|
|
$county = new County;
|
|
$county->name = $request->name;
|
|
$county->district_id = $request->district_id;
|
|
$county->created_by = Auth::user()->id;
|
|
$county->updated_by = Auth::user()->id;
|
|
|
|
$check = County::where('name', $request->name)->pluck('name')->first();
|
|
if (is_null($check)) {
|
|
try {
|
|
$county->save();
|
|
return $county->id;
|
|
} catch (QueryException $e) {
|
|
flash("An error occurred")->error();
|
|
return back()->withInput();
|
|
}
|
|
} else {
|
|
return 'false';
|
|
}
|
|
}
|
|
|
|
public function add_new_subcounty_dynamically(Request $request)
|
|
{
|
|
$sub_county = new Subcounty;
|
|
$sub_county->name = $request->name;
|
|
$sub_county->county_id = $request->county_id;
|
|
$sub_county->created_by = Auth::user()->id;
|
|
$sub_county->updated_by = Auth::user()->id;
|
|
|
|
$check = Subcounty::where('name', $request->name)->pluck('name')->first();
|
|
if (is_null($check)) {
|
|
try {
|
|
$sub_county->save();
|
|
return $sub_county->id;
|
|
} catch (QueryException $e) {
|
|
flash("An error occurred")->error();
|
|
return back()->withInput();
|
|
}
|
|
} else {
|
|
return 'false';
|
|
}
|
|
}
|
|
|
|
public function add_new_parish_dynamically(Request $request)
|
|
{
|
|
$parish = new Parish;
|
|
$parish->name = $request->name;
|
|
$parish->subcounty_id = $request->subcounty_id;
|
|
$parish->created_by = Auth::user()->id;
|
|
$parish->updated_by = Auth::user()->id;
|
|
|
|
$check = Parish::where('name', $request->name)->pluck('name')->first();
|
|
if (is_null($check)) {
|
|
try {
|
|
$parish->save();
|
|
return $parish->id;
|
|
} catch (QueryException $e) {
|
|
flash("An error occurred")->error();
|
|
return back()->withInput();
|
|
}
|
|
} else {
|
|
return 'false';
|
|
}
|
|
}
|
|
|
|
public function add_new_village_dynamically(Request $request)
|
|
{
|
|
$village = new Village;
|
|
$village->name = $request->name;
|
|
$village->parish_id = $request->parish_id;
|
|
$village->created_by = Auth::user()->id;
|
|
$village->updated_by = Auth::user()->id;
|
|
|
|
$check = Village::where('name', $request->name)->pluck('name')->first();
|
|
if (is_null($check)) {
|
|
try {
|
|
$village->save();
|
|
return $village->id;
|
|
} catch (QueryException $e) {
|
|
flash("An error occurred")->error();
|
|
return back()->withInput();
|
|
}
|
|
} else {
|
|
return 'false';
|
|
}
|
|
}
|
|
|
|
public function quick_add_residence(Request $request)
|
|
{
|
|
$district_id = $request->district_id;
|
|
$new_district_name = $request->new_district_name;
|
|
$county_id = $request->county_id;
|
|
$new_county_name = $request->new_county_name;
|
|
$subcounty_id = $request->subcounty_id;
|
|
$new_subcounty_name = $request->new_subcounty_name;
|
|
$parish_id = $request->parish_id;
|
|
$new_parish_name = $request->new_parish_name;
|
|
$village_id = 0;
|
|
$new_village_name = $request->new_village_name;
|
|
|
|
if (!isset($district_id) && isset($new_district_name)) {
|
|
$district = new District;
|
|
$district->name = $new_district_name;
|
|
$district->created_by = Auth::user()->id;
|
|
$district->updated_by = Auth::user()->id;
|
|
$district->save();
|
|
|
|
$district_id = $district->id;
|
|
}
|
|
|
|
if (!isset($county_id) && isset($new_county_name) && is_numeric($district_id)) {
|
|
$county = new County;
|
|
$county->name = $new_county_name;
|
|
$county->district_id = $district_id;
|
|
$county->created_by = Auth::user()->id;
|
|
$county->updated_by = Auth::user()->id;
|
|
$county->save();
|
|
|
|
$county_id = $county->id;
|
|
}
|
|
|
|
if (!isset($subcounty_id) && isset($new_subcounty_name) && is_numeric($county_id)) {
|
|
$sub_county = new Subcounty;
|
|
$sub_county->name = $new_subcounty_name;
|
|
$sub_county->county_id = $county_id;
|
|
$sub_county->created_by = Auth::user()->id;
|
|
$sub_county->updated_by = Auth::user()->id;
|
|
$sub_county->save();
|
|
|
|
$subcounty_id = $sub_county->id;
|
|
}
|
|
|
|
if (!isset($parish_id) && isset($new_parish_name) && is_numeric($subcounty_id)) {
|
|
$parish = new Parish;
|
|
$parish->name = $new_parish_name;
|
|
$parish->subcounty_id = $subcounty_id;
|
|
$parish->created_by = Auth::user()->id;
|
|
$parish->updated_by = Auth::user()->id;
|
|
$parish->save();
|
|
|
|
$parish_id = $parish->id;
|
|
}
|
|
|
|
if (isset($new_village_name)) {
|
|
$village = new Village;
|
|
$village->name = $new_village_name;
|
|
$village->parish_id = is_numeric($parish_id) ? $parish_id : 0;
|
|
$village->created_by = Auth::user()->id;
|
|
$village->updated_by = Auth::user()->id;
|
|
$village->save();
|
|
|
|
$village_id = $village->id;
|
|
}
|
|
|
|
return (is_numeric($village_id) ? $village_id : 0) . "," . (is_numeric($parish_id) ? $parish_id : 0) . "," . (is_numeric($subcounty_id) ? $subcounty_id : 0) . "," .
|
|
(is_numeric($county_id) ? $county_id : 0) . "," . (is_numeric($district_id) ? $district_id : 0);
|
|
}
|
|
} |