This commit is contained in:
brusnitsyn
2026-02-20 17:28:16 +09:00
parent 94e374c32b
commit 52a80ccd3b
41 changed files with 2555 additions and 206 deletions

View File

@@ -3,13 +3,14 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\DB;
class MisMedicalHistory extends Model
{
protected $table = 'stt_medicalhistory';
protected $primaryKey = 'MedicalHistoryID';
public $timestamps = false;
protected $fillable = [
'MedicalHistoryID',
@@ -21,9 +22,64 @@ class MisMedicalHistory extends Model
];
protected $casts = [
'DateRecipient' => 'datetime'
'DateRecipient' => 'datetime',
'DateExtract' => 'datetime'
];
/**
* Проверить, находится ли пациент еще в стационаре
*/
public function isStillInHospital(): bool
{
// Проверяем специальное значение даты
if ($this->DateExtract && $this->DateExtract->format('dmY') === '01012222') {
return true;
}
// Или проверяем по статусу
return $this->rf_kl_VisitStatusID === 0;
}
/**
* Получить реальную дату выписки (если пациент выписан)
*/
public function getActualDischargeDate(): ?Carbon
{
if (!$this->DateExtract) {
return null;
}
// Если это специальное значение - значит не выписан
if ($this->DateExtract->format('dmY') === '01012222') {
return null;
}
return $this->DateExtract;
}
/**
* Рассчитать койко-дни для данной истории болезни
*/
public function getBedDays(): int
{
if (!$this->DateRecipient) {
return 0;
}
$start = Carbon::parse($this->DateRecipient);
// Определяем дату окончания
if ($this->isStillInHospital()) {
// Пациент еще в стационаре
$end = Carbon::now();
} else {
// Пациент выписан
$end = Carbon::parse($this->DateExtract);
}
return $start->diffInDays($end);
}
public function observationPatient()
{
return $this->hasMany(ObservationPatient::class, 'rf_medicalhistory_id', 'MedicalHistoryID');