%PDF- %PDF-
Direktori : /var/www/html/klinisol/klinisol-api/app/Models/ |
Current File : /var/www/html/klinisol/klinisol-api/app/Models/Submission.php |
<?php namespace App\Models; use App\Traits\IsSignable; use Spatie\MediaLibrary\HasMedia; use Spatie\MediaLibrary\InteractsWithMedia; use Spatie\MediaLibrary\MediaCollections\Models\Media; class Submission extends BaseModel implements HasMedia { use InteractsWithMedia, IsSignable; const ASSIGNED = 'ASSIGNED'; const SENT = 'SENT'; const COMPLETED = 'COMPLETED'; protected $table = 'submissions'; const COLLECTION_NAME = 'questions'; const DISK = 's3'; const FINAL_FORM = 'FINAL_FORM'; protected $fillable = [ 'patient_id', 'protocol_id', 'status', 'doctor_id', 'description', 'is_eligible', ]; protected $casts = [ 'id' => 'int', 'patient_id' => 'int', 'protocol_id' => 'int', 'doctor_id' => 'int', 'description' => 'string', 'is_eligible' => 'boolean', 'status' => 'string', ]; public function answers() { return $this->hasMany(Answer::class); } public function patient() { return $this->belongsTo(Patient::class); } public function protocol() { return $this->belongsTo(Protocol::class); } public function doctor() { return $this->belongsTo(Doctor::class); } public static function IsEligible($answers) { $inclusion = Question::query() ->whereIn('id', $answers->pluck('question_id') ->toArray()) ->where('type', 'inclusion') ->get(); if ($inclusion->count() > 0) { $invalidInclusions = $answers->whereIn('question_id', $inclusion->pluck('id') ->toArray()) ->where('value', '<>', 'yes') ->count(); if ($invalidInclusions > 0) return false; } $exclusion = Question::query() ->whereIn('id', $answers->pluck('question_id') ->toArray()) ->where('type', 'exclusion') ->get(); if ($exclusion->count() > 0) { $invalidExclusions = $answers->whereIn('question_id', $exclusion->pluck('id') ->toArray()) ->where('value', '<>', 'no') ->count(); if ($invalidExclusions > 0) return false; } return true; } public function finalForm() { return $this->getMedia(Protocol::COLLECTION_NAME, function (Media $media) { return isset($media->custom_properties['type']) && $media->custom_properties['type'] === $this . self::FINAL_FORM; }) ->first(); } }