%PDF- %PDF-
Direktori : /var/www/html/klinisol/klinisol-api/app/Http/Controllers/Api/App/v1/ |
Current File : /var/www/html/klinisol/klinisol-api/app/Http/Controllers/Api/App/v1/DoctorController.php |
<?php namespace App\Http\Controllers\Api\App\v1; use App\Http\Controllers\Api\ApiController; use App\Models\Doctor; use App\Models\Protocol; use App\Models\Role; use App\Models\User; use App\Transformers\App\PatientTransformer; use App\Transformers\MediaTransformer; use App\Transformers\ProtocolTransformer; use Illuminate\Support\Facades\DB; class DoctorController extends ApiController { /** * @return \Illuminate\Http\JsonResponse */ public function getAllProtocols() { /** @var User $user */ $user = auth() ->guard('api') ->user(); $doctor = Doctor::query() ->where('id', '=', $user->id) ->whereHas('roles', function ($q) { $q->whereIn('name', [ Role::DOCTOR, ]); }) ->firstOrFail(); return $this->collection($doctor->protocols, new ProtocolTransformer()); } public function getAllPatients($id) { /** @var User $user */ $user = auth() ->guard('api') ->user(); $doctor = Doctor::query() ->where('id', '=', $user->id) ->whereHas('roles', function ($q) { $q->whereIn('name', [ Role::DOCTOR, ]); }) ->firstOrFail(); /** @var Doctor $doctor */ $params = [ 'id' => $id, 'hospitalIds' => implode(',', $doctor->hospital() ->pluck('id') ->toArray()), ]; $result = DB::select("select p.id, p.code, pp.*, s.Id as submission_id, icds.Id as icd_id, e.Id as enrollment_id, if(s.Id is null, false, true) as has_completed_inc_exc, if(s.Id is not null and s.status <> 'ASSIGNED', true, false) has_signed_inc_exc, if(icds.Id is null, false, true) as has_completed_icd, if(icds.Id is not null and icds.status <> 'ASSIGNED', true, false) as has_signed_icd, if(e.id is null, false, true) as has_completed_enrollment, if(e.Id is not null and e.status <> 'ASSIGNED', true, false) as has_signed_enrollment from patients p inner join patient_protocol pp on p.id = pp.patient_id inner join patient_hospital ph on p.id = ph.patient_id left join submissions s on s.patient_id = pp.patient_id and s.protocol_id = pp.protocol_id left join icd_submissions icds on icds.patient_id = pp.patient_id and icds.protocol_id = pp.protocol_id left join enrollments e on e.patient_id = pp.patient_id and e.protocol_id = pp.protocol_id where pp.protocol_id = :id and ph.hospital_id in (:hospitalIds) and pp.status = 'COMPLETED'", $params); return $this->item($result, new PatientTransformer()); } public function getMedia($id) { /** @var Protocol $protocol */ $protocol = Protocol::query() ->findOrFail($id); return $this->collection($protocol->getMedia(Protocol::COLLECTION_NAME), new MediaTransformer()); } }