75 lines
1.8 KiB
PHP
75 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
use App\Enums\RecordStatusEnum;
|
|
use DateTime;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Support\Facades\App;
|
|
use Illuminate\Support\Facades\Session;
|
|
use App\Traits\AuditLogTrait;
|
|
|
|
class Patient extends BaseModel
|
|
{
|
|
public $timestamps = false;
|
|
use HasFactory;
|
|
use AuditLogTrait;
|
|
/**
|
|
* The table associated with the model.
|
|
*
|
|
* @var string
|
|
*/
|
|
|
|
protected $fillable =
|
|
[
|
|
'name_en',
|
|
'dob',
|
|
'patient_uuid',
|
|
'gender',
|
|
'marital_status',
|
|
'phone_number',
|
|
'khid_number',
|
|
'house_number',
|
|
'street_number',
|
|
'province_id',
|
|
'district_id',
|
|
'commune_id',
|
|
'village_id',
|
|
'lab_id',
|
|
self::CREATED_AT_FIELD,
|
|
self::CREATED_BY_FIELD,
|
|
self::UPDATED_BY_FIELD,
|
|
BaseModel::RECORD_STATUS_FIELD
|
|
];
|
|
|
|
public static function boot()
|
|
{
|
|
parent::boot();
|
|
}
|
|
|
|
public function province(){
|
|
return $this->belongsTo(Province::class,'province_id','id');
|
|
}
|
|
|
|
public function district(){
|
|
return $this->belongsTo(District::class,'district_id','id');
|
|
}
|
|
|
|
public function commune(){
|
|
return $this->belongsTo(Commune::class,'commune_id','id');
|
|
}
|
|
|
|
public function village(){
|
|
return $this->belongsTo(Village::class,'village_id','id');
|
|
}
|
|
|
|
public function samples(){
|
|
return $this->hasMany(Sample::class,'patient_id','id')
|
|
->where([BaseModel::RECORD_STATUS_FIELD => RecordStatusEnum::ACTIVE, 'lab_id' => Session::get('base_lab_id')]);
|
|
}
|
|
|
|
public function telegramChatId(){
|
|
return $this->belongsTo(PatientTelegram::class,'id', 'patient_id');
|
|
}
|
|
|
|
}
|