File: /mnt/data/ghayatcom/ghayatcom-api/app/ReferalDetails.php
<?php
namespace App;
use App\Allergie;
use App\Appointment;
use App\ExaminationDetails;
use App\Examinations;
use App\HealthProfileAllergie;
use App\HealthProfileMedication;
use App\Medication;
use App\ReferalRequests;
use App\ReferalRequestDetail;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Storage;
/**
* App\ReferalDetails
*
* @property mixed $is_referal
* @property mixed $presenting_complaints
* @property mixed $indications
* @property mixed $special_comments
* @property mixed $last_menstrual_period
* @property mixed $other_examinations
* @property mixed $additional_comments
* @property mixed $status
*/
class ReferalDetails extends Model
{
use SoftDeletes;
protected $appends = ['request_for_str','examinations_str','specific_examinations_str','allergies_str','current_medications_str','examination_list','examinations_data','specific_examinations_data','request_for_data'];
protected $hidden = ['deleted_by','deleted_at'];
public function referalExaminations(): BelongsToMany
{
return $this->belongsToMany(Examinations::class, 'referal_examinations');
}
public function referalSpecificExaminations(): BelongsToMany
{
return $this->belongsToMany(ExaminationDetails::class, 'referal_specific_examinations');
}
public function referalRequestFor(): HasMany
{
return $this->hasMany(ReferalRequestDetail::class, 'referal_details_id', 'id');
}
public function getRequestForStrAttribute()
{
return $this->referalRequestFor()->get()->toArray();
}
public function getExaminationsStrAttribute()
{
if (! empty($this->examinations)) {
$list = explode(',', $this->examinations);
$out = [];
foreach ($list as $key => $value) {
$val = Examinations::select('examination')->find($value);
$out[] = $val->examination;
}
return $out;
} else {
return $this->examinations;
}
}
public function getSpecificExaminationsStrAttribute()
{
if (! empty($this->specific_examinations)) {
$list = explode(',', $this->specific_examinations);
$out = [];
foreach ($list as $key => $value) {
$val = ExaminationDetails::select('name')->find($value);
$out[] = $val->name;
}
return $out;
} else {
return $this->specific_examinations;
}
}
public function getAllergiesStrAttribute()
{
// $appointment = Appointment::find($this->appointment_id);
// $patient_id = $appointment->patient_id;
// $allergies = HealthProfileAllergie::where('user_id', $patient_id)->get();
// $out = [];
// foreach ($allergies as $key => $value) {
// $out[] = $value->allergie_name;
// }
// return $out;
$out = [];
$appointment = Appointment::find($this->appointment_id);
$patient_id = $appointment->patient_id;
$doctor_id = $appointment->doctor_id;
$out[] = GeneralHealthConditionPatient::where('doctor_id', $doctor_id)
->where('patient_id', $patient_id)
->where('type', 'Allergy')
->value('description');
return $out;
}
public function getCurrentMedicationsStrAttribute()
{
// $appointment = Appointment::find($this->appointment_id);
// $patient_id = $appointment->patient_id;
// $medications = HealthProfileMedication::where('user_id', $patient_id)->get();
// $out = [];
// foreach ($medications as $key => $value) {
// $out[] = $value->medication_name;
// }
// return $out;
$out = [];
$appointment = Appointment::find($this->appointment_id);
$patient_id = $appointment->patient_id;
$doctor_id = $appointment->doctor_id;
$out[] = GeneralHealthConditionPatient::where('doctor_id', $doctor_id)
->where('patient_id', $patient_id)
->where('type', 'Medication')
->value('description');
return $out;
}
public function getExaminationListAttribute()
{
$list = $this->referalExaminations()->get()->toArray();
$out = [];
/**
* @var array $list
*/
foreach ($list as $key => $value) {
$exam_id = $value['id'];
$exe = Examinations::select('id', 'examination')->find($exam_id);
// $specific = explode(',', $this->specific_examinations);
$specific = $this->referalSpecificExaminations()->get()->toArray();
$sp = [];
/**
* @var array $specific
*/
foreach ($specific as $key => $val) {
$spec_id = $val['id'];
$val1 = ExaminationDetails::select('id', 'examination_id', 'name')->find($spec_id);
if ($val1->examination_id == $exe->id) {
$sp[] = $val1->name;
} elseif ($val1->examination_id == 5) {
$sp[] = $this->other_examinations;
}
}
$spec_out = implode(',', $sp);
$out[] = $exe->examination.' - '.$spec_out;
}
return $out;
}
public function getPdfAttribute($value)
{
// return (isset($value)) ? Storage::url('app/public/referal/' . $value) : "";
$S3Library = new \App\Library\S3Library;
$digimedFile = ($S3Library->s3Url($value, null, 'digimed/images/referal'));
return (isset($value)) ? $digimedFile : '';
}
public function getExaminationsDataAttribute(){
// $out = [];
// if($this->examinations != ""){
// $items = explode(",",$this->examinations);
// $out = Examinations::select('id','examination')->whereIn('id',$items)->get()->toArray();
// return $out;
// }
// return $out;
return $this->referalExaminations()->get()->toArray();
}
public function getSpecificExaminationsDataAttribute(){
// $out = [];
// if($this->specific_examinations != ""){
// $items = explode(",",$this->specific_examinations);
// $out = ExaminationDetails::select('id','name')->whereIn('id',$items)->get()->toArray();
// return $out;
// }
// return $out;
return $this->referalSpecificExaminations()->get()->toArray();
}
public function getRequestForDataAttribute(){
// $out = [];
// if($this->request_for != ""){
// $items = explode(",",$this->request_for);
// $out = ReferalRequests::select('id','name')->whereIn('id',$items)->get()->toArray();
// return $out;
// }
// return $out;
return $this->referalRequestFor()->get()->toArray();
}
}