byStatus; $byUrgency = $stats->byUrgency; $admitted = $stats->admitted; // === Базовые счётчики === $patientsIsRecipient = $statsOverride['recipient'] ?? ($byStatus['recipient'] ?? 0); $patientsInDepartment = $statsOverride['in_department'] ?? ($byStatus['in_department'] ?? 0); $patientsIsDischarged = $statsOverride['outcome'] ?? $stats->outcome; $patientsIsTransferred = $stats->transferred; $patientsIsDeceased = $byStatus['deceased'] ?? 0; // Ср. койко-день $totalPatients = $stats->totalPatients; $totalBedDays = $stats->totalBedDays; $avgBedDay = $totalPatients > 0 ? round($totalBedDays / $totalPatients, 2) : 0; // Пред. опер. койко-день $patientsWithOps = $stats->patientsWithOperations; $totalPreOpDays = $stats->totalPreopBedDays; $avgPreOpBedDay = $patientsWithOps > 0 ? round($totalPreOpDays / $patientsWithOps, 2) : 0; // % загруженности $bedsInDepartment = DepartmentMetrikaDefault::where('rf_department_id', $report->rf_department_id) ->where('rf_metrika_item_id', 1) ->where('date_end', '>', Carbon::now()) ->value('value') ?? 0; $occupancyPercent = $bedsInDepartment > 0 ? round(($patientsInDepartment * 100) / $bedsInDepartment, 2) : 0; // % летальности $mortalityPercent = $totalPatients > 0 ? round(($patientsIsDeceased * 100) / $totalPatients, 2) : 0; // Операции $totalOperations = $stats->totalOperations; $plannedOperations = $stats->plannedOperations; $urgentOperations = $stats->urgentOperations; // === Сохранение метрик === $this->metricRepository->saveMetric($report->id, 1, $bedsInDepartment); // Кол-во коек $this->metricRepository->saveMetric($report->id, 8, $patientsInDepartment); // Пациентов в отделении $this->metricRepository->saveMetric($report->id, 3, $patientsIsRecipient); // Поступило $this->metricRepository->saveMetric($report->id, 15, $patientsIsDischarged); // Выписано $this->metricRepository->saveMetric($report->id, 7, $patientsIsDischarged); // Выписано (дубль?) $this->metricRepository->saveMetric($report->id, 13, $patientsIsTransferred); // Переведено $this->metricRepository->saveMetric($report->id, 9, $patientsIsDeceased); // Умерло $this->metricRepository->saveMetric($report->id, 4, $admitted['planned'] ?? 0); // Планово поступило $this->metricRepository->saveMetric($report->id, 12, $admitted['urgent'] ?? 0); // Экстренно поступило $this->metricRepository->saveMetric($report->id, 22, $occupancyPercent); // % загруженности $this->metricRepository->saveMetric($report->id, 25, round($totalBedDays, 2)); // Всего койко-дней $this->metricRepository->saveMetric($report->id, 18, $avgBedDay); // Ср. койко-день $this->metricRepository->saveMetric($report->id, 26, round($totalPreOpDays, 2)); // Пред. опер. койко-день (сумма) $this->metricRepository->saveMetric($report->id, 27, $patientsWithOps); // Пациентов с операциями (знаменатель) $this->metricRepository->saveMetric($report->id, 21, $avgPreOpBedDay); // Ср. Пред. опер. койко-день $this->metricRepository->saveMetric($report->id, 19, $mortalityPercent); // % летальности $this->metricRepository->saveMetric($report->id, 11, $plannedOperations); // Плановых операций $this->metricRepository->saveMetric($report->id, 10, $urgentOperations); // Экстренных операций $this->metricRepository->saveMetric($report->id, 17, $staff); // Мед. персонал } }