* оптимизировал запросы выдачи пациентов, сохранения снапшотов
* доработал страницу отчета дежурного * переделал "действия" над пациентом * подключил виджеты на странице отчета дежурного
This commit is contained in:
@@ -104,7 +104,7 @@ class MigrationPatient extends MaterializedViewModel
|
||||
->where('ingoing_date', '<', $dateRange->startSql())
|
||||
->wherehas('medicalHistory', function ($query) use ($dateRange) {
|
||||
$query->whereNull('extract_date');
|
||||
}); // опционально: поступил не раньше 2 лет назад
|
||||
});
|
||||
})
|
||||
->orWhere(function ($q) use ($dateRange) {
|
||||
$q->where('ingoing_date', '<=', $dateRange->endSql())
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace App\Models;
|
||||
|
||||
use App\Services\DateRange;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class UnifiedMigrationPatient extends Model
|
||||
@@ -89,4 +90,23 @@ class UnifiedMigrationPatient extends Model
|
||||
->orderBy('ingoing_date', 'desc')
|
||||
->limit(1)->first();
|
||||
}
|
||||
|
||||
public function getAdmittedInCurrentAttribute(): bool
|
||||
{
|
||||
// Получаем дату поступления из последнего движения
|
||||
$ingoing = $this->ingoing_date;
|
||||
|
||||
if (!$ingoing) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$ingoingLocal = Carbon::parse($ingoing)->setTimezone(config('app.timezone', 'Europe/Moscow'));
|
||||
$now = Carbon::now(config('app.timezone', 'Europe/Moscow'));
|
||||
|
||||
// Окно смены: вчера 09:00 → сегодня 09:00
|
||||
$shiftStart = $now->copy()->subDay()->setTime(9, 0);
|
||||
$shiftEnd = $now->copy()->setTime(9, 0);
|
||||
|
||||
return $ingoingLocal->between($shiftStart, $shiftEnd);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user