Dr-Panel/app/Models/Patient.php

106 lines
2.6 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Models;
use App\Casts\JalaliDatetime;
use App\Traits\HasUserStamps;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
class Patient extends Model
{
use HasUserStamps;
protected $fillable = [
'icno',
'first_name',
'last_name',
'father_name',
'gender',
'birth_date',
'age',
'marital_status',
'education',
'job',
'hand_phone',
'home_phone',
'work_phone',
'other_phone',
'home_address',
'work_address',
'refered_by',
'referal_reason',
'doc_id',
'insurance',
'insurance_no',
'blood_pressure',
'blood_sugar',
'current_illness_1',
'current_illness_2',
'is_undercare',
'undercare_reason',
'is_usingdrug',
'underdrug_reason',
'has_alergyto',
'alergy_reason',
'description',
'surgery_before',
'sergery_after',
'photos_before',
'photos_after',
'videos',
'audio_files',
];
protected function casts(): array
{
return [
'blood_pressure' => 'integer',
'blood_sugar' => 'integer',
'age' => 'integer',
'current_illness_1' => 'array',
'current_illness_2' => 'array',
'has_alergyto' => 'array',
'photos_before' => 'array',
'photos_after' => 'array',
'videos' => 'array',
'audio_files' => 'array',
'created_at' => JalaliDatetime::class,
'updated_at' => JalaliDatetime::class,
];
}
public function getFullNameAttribute(): string
{
return trim($this->first_name . ' ' . $this->last_name);
}
public function creator(): BelongsTo
{
return $this->belongsTo(User::class, 'created_by');
}
public function updator(): BelongsTo
{
return $this->belongsTo(User::class, 'updated_by');
}
public function surgeryAppointment(): HasOne
{
return $this->hasOne(SurgeryAppointment::class);
}
public function prescriptions(): HasMany
{
return $this->hasMany(Prescription::class, 'patient');
}
public function visits(): HasMany
{
return $this->hasMany(Visit::class, 'patient');
}
}