* добавил исход спец контингенту

* оптимизация обновления при редактировании спец контингента
* добавил поддержку заключительных диагнозов
* изменил определение законченной операции
* добавил поддержку исхода операции
* добавил определение отмены для операции через назначение
* работа над диапазонами календарей, подсчет статистики
* добавил статусы отчетов и подкорректировал привязку спец контингента к отчету
* добавил новые сервисы для будущего кеширования
* частичное разделение логики подсчета пациентов
This commit is contained in:
brusnitsyn
2026-04-22 20:35:39 +09:00
parent 2041ab54ea
commit 719eb1403f
39 changed files with 1458 additions and 763 deletions

View File

@@ -41,9 +41,8 @@ class BedDayService
// Находим отчеты за период
$reports = Report::where('rf_department_id', $departmentId)
// ->whereBetween('created_at', [$actualStartDate, $endDate])
->where('sent_at', '>=', $actualStartDate)
->where('sent_at', '<=', $endDate)
->where('period_start', '>=', $actualStartDate)
->where('period_end', '<', $endDate)
->pluck('report_id');
if ($reports->isEmpty()) {
@@ -109,9 +108,8 @@ class BedDayService
// Находим все отчеты за период по отделениям
$reportsByDepartment = Report::whereIn('rf_department_id', $departmentIds)
// ->whereBetween('created_at', [$actualStartDate, $endDate])
->where('sent_at', '>=', $actualStartDate)
->where('sent_at', '<=', $endDate)
->where('period_start', '>=', $actualStartDate)
->where('period_end', '<', $endDate)
->select('report_id', 'rf_department_id')
->get()
->groupBy('rf_department_id');
@@ -190,9 +188,8 @@ class BedDayService
public function getDetailedStatsFromSnapshots(int $departmentId, string $startDate, string $endDate): array
{
$reports = Report::where('rf_department_id', $departmentId)
// ->whereBetween('created_at', [$startDate, $endDate])
->where('sent_at', '>', $startDate)
->where('sent_at', '<=', $endDate)
->where('period_start', '>=', $startDate)
->where('period_end', '<', $endDate)
->pluck('report_id');
if ($reports->isEmpty()) {
@@ -296,7 +293,7 @@ class BedDayService
foreach ($reports as $report) {
// Для каждого отчета считаем средний койко-день за последние 30 дней до даты отчета
$endDate = $report->created_at;
$endDate = $report->period_end;
$startDate = Carbon::startOfYear();
$avg = $this->getAverageBedDaysFromSnapshots(