Data Docter dan Hospital dnegan Filter di dashboard

This commit is contained in:
pajri
2022-12-16 15:57:40 +07:00
parent 1857653ce0
commit 0d6c2ab30b
20 changed files with 2680 additions and 80 deletions

View File

@@ -3,6 +3,7 @@
namespace Modules\Internal\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\Practitioner;
use App\Models\PractitionerRole;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
@@ -15,9 +16,34 @@ class DoctorController extends Controller
* Display a listing of the resource.
* @return Renderable
*/
public function index()
public function index(Request $request)
{
$doctors = PractitionerRole::active()->with('practitioner.person', 'organization')->paginate();
// $doctors = PractitionerRole::active()->with('practitioner.person', 'organization')
// ->when($request->search ?? null, function ($query, $search) {
// $query->whereHas('practitioner.person', function ($person) use ($search) {
// $person->where('name', 'LIKE', '%' . $search . '%');
// });
// })->paginate();
$doctors = Practitioner::with('person', 'practitionerRoles.organization', 'practitionerRoles.speciality')
->when($request->search ?? null, function ($query, $search) {
$query->whereHas('person', function ($person) use ($search) {
$person->where('name', 'LIKE', '%' . $search . '%');
});
})
->when($request->organization_id ?? null, function ($query, $organization_id) {
$query->whereHas('practitionerRoles', function ($practitionerRole) use ($organization_id) {
$practitionerRole->where('organization_id', $organization_id);
});
})
->when($request->speciality_id ?? null, function ($query, $speciality_id) {
$query->whereHas('practitionerRoles', function ($practitionerRole) use ($speciality_id) {
$practitionerRole->where('speciality_id', $speciality_id);
});
})
->paginate();
// return $doctors;
return response()->json(Helper::paginateResources(DoctorResource::collection($doctors)));

View File

@@ -15,12 +15,22 @@ class OrganizationController extends Controller
* Display a listing of the resource.
* @return Renderable
*/
public function index()
public function index(Request $request)
{
$organizations = Organization::active()->hospital()->with('currentAddress')->paginate();
$organizations = Organization::hospital()->with('currentAddress')
->when($request->search ?? null, function ($query, $search) {
$query->where('name', 'LIKE', '%' . $search . '%');
})
->paginate();
return response()->json(Helper::paginateResources(OrganizationResource::collection($organizations)));
}
public function searchOrganization(Request $request)
{
$organizations = Organization::hospital()->get();
return response()->json(OrganizationResource::collection($organizations));
}
/**
* Show the form for creating a new resource.
* @return Renderable

View File

@@ -0,0 +1,87 @@
<?php
namespace Modules\Internal\Http\Controllers\Api;
use App\Models\Speciality;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class SpecialityController extends Controller
{
/**
* Display a listing of the resource.
* @return Renderable
*/
public function index()
{
$specialiy = Speciality::get();
return response()->json($specialiy);
}
public function searchSpeciality(Request $request)
{
$specialiy = Speciality::get();
return response()->json($specialiy);
}
/**
* Show the form for creating a new resource.
* @return Renderable
*/
public function create()
{
return view('internal::create');
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Renderable
*/
public function store(Request $request)
{
//
}
/**
* Show the specified resource.
* @param int $id
* @return Renderable
*/
public function show($id)
{
return view('internal::show');
}
/**
* Show the form for editing the specified resource.
* @param int $id
* @return Renderable
*/
public function edit($id)
{
return view('internal::edit');
}
/**
* Update the specified resource in storage.
* @param Request $request
* @param int $id
* @return Renderable
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
* @param int $id
* @return Renderable
*/
public function destroy($id)
{
//
}
}

View File

@@ -20,6 +20,7 @@ use Modules\Internal\Http\Controllers\Api\FormulariumController;
use Modules\Internal\Http\Controllers\Api\MemberController;
use Modules\Internal\Http\Controllers\Api\OrganizationController;
use Modules\Internal\Http\Controllers\Api\PlanController;
use Modules\Internal\Http\Controllers\Api\SpecialityController;
/*
|--------------------------------------------------------------------------
@@ -104,10 +105,15 @@ Route::prefix('internal')->group(function () {
Route::post('claims', [ClaimController::class, 'store']);
Route::get('claims/{id}', [ClaimController::class, 'show']);
Route::post('check-limit', [ClaimController::class, 'checkLimit']);
Route::get('search-organizations', [OrganizationController::class, 'searchOrganization']);
Route::get('search-specialities', [SpecialityController::class, 'searchSpeciality']);
Route::resource('organizations', OrganizationController::class);
Route::resource('doctors', DoctorController::class);
});
Route::resource('organizations', OrganizationController::class);
Route::resource('doctors', DoctorController::class);
// Route::resource('organizations', OrganizationController::class);
// Route::resource('doctors', DoctorController::class);
// Route::get('something', [DiagnosisExclusionController::class, 'index']);
});

View File

@@ -16,20 +16,35 @@ class DoctorResource extends JsonResource
{
$doctor = [
'id' => $this->id,
'his_dokter_id' => $this->meta->DokterID,
'name' => $this->practitioner->person->name,
'phone' => $this->practitioner->person->phone,
'email' => $this->practitioner->person->email,
'address' => $this->practitioner->person->currentAddress->text,
'organization' => $this->organization->name,
'organization_id' => $this->organization->id,
'specialty' => $this->speciality->name,
'specialtyI_id' => $this->speciality->id,
'education' => $this->practitioner->meta->education,
'experience' => $this->practitioner->meta->work_experience,
'award' => $this->practitioner->meta->award,
'keilmuan' => $this->practitioner->meta->Keilmuan,
'tipe_dokter' => $this->practitioner->meta->tipeDokter,
// 'his_dokter_id' => $this->practitionerRoles->meta,
'name' => $this->person->name,
'person_id' => $this->person->id,
'phone' => $this->person->phone,
'email' => $this->person->email,
'gender' => $this->person->gender == "L" ? 'Laki-laki' : 'Perempuan',
'address' => $this->person->currentAddress->text,
'organizations' => $this->practitionerRoles->unique('organization_id')->map(function ($practitionerRole) {
return [
'organization_id' => $practitionerRole->organization->id,
'organization_name' => $practitionerRole->organization->name,
];
}),
"specialties" => $this->practitionerRoles->unique('speciality_id')->map(function ($practitionerRole) {
return [
'specialty_id' => $practitionerRole->speciality->id,
'specialty_name' => $practitionerRole->speciality->name,
];
}),
"departemen" => $this->practitionerRoles->map(function ($practitionerRole) {
return [
'departemen_id' => $practitionerRole->meta->DepartemenID,
];
}),
'education' => $this->meta->education,
'experience' => $this->meta->work_experience,
'award' => $this->meta->award,
'keilmuan' => $this->meta->Keilmuan,
'tipe_dokter' => $this->meta->tipeDokter,
];

View File

@@ -15,6 +15,7 @@ class OrganizationResource extends JsonResource
public function toArray($request)
{
$organization = [
'id' => $this->id,
'name' => $this->name,
'type' => $this->type,
'code' => $this->code,