* исправил вывод статистики в сводной если выбран период

This commit is contained in:
brusnitsyn
2026-02-09 09:42:10 +09:00
parent e08942e699
commit 68626918a6

View File

@@ -341,11 +341,11 @@ class ReportService
'emergency' => $this->getMetrikaResultCount(12, $reportIds), 'emergency' => $this->getMetrikaResultCount(12, $reportIds),
'outcome' => $this->getMetrikaResultCount(7, $reportIds), 'outcome' => $this->getMetrikaResultCount(7, $reportIds),
'deceased' => $this->getMetrikaResultCount(9, $reportIds), 'deceased' => $this->getMetrikaResultCount(9, $reportIds),
'current' => $this->getMetrikaResultCount(8, $reportIds), 'current' => $this->getMetrikaResultCount(8, $reportIds, false),
// 'discharged' => $this->getMetrikaResultCount('discharged', $reportIds), // 'discharged' => $this->getMetrikaResultCount('discharged', $reportIds),
'transferred' => $this->getMetrikaResultCount(13, $reportIds), 'transferred' => $this->getMetrikaResultCount(13, $reportIds),
'recipient' => $this->getMetrikaResultCount(3, $reportIds), 'recipient' => $this->getMetrikaResultCount(3, $reportIds),
'beds' => $this->getMetrikaResultCount(1, $reportIds) 'beds' => $this->getMetrikaResultCount(1, $reportIds, false)
]; ];
// Получаем ID поступивших пациентов // Получаем ID поступивших пациентов
@@ -592,7 +592,7 @@ class ReportService
if ($status === 'outcome') { if ($status === 'outcome') {
return MedicalHistorySnapshot::whereIn('rf_report_id', $reportIds) return MedicalHistorySnapshot::whereIn('rf_report_id', $reportIds)
->whereIn('patient_type', ['discharged', 'transferred', 'deceased']) ->whereIn('patient_type', ['discharged', 'deceased'])
->distinct('rf_medicalhistory_id') ->distinct('rf_medicalhistory_id')
->count('rf_medicalhistory_id'); ->count('rf_medicalhistory_id');
} }
@@ -737,17 +737,19 @@ class ReportService
/** /**
* Получить количество из метрик * Получить количество из метрик
*/ */
private function getMetrikaResultCount(int $metrikaItemId, array $reportIds): int private function getMetrikaResultCount(int $metrikaItemId, array $reportIds, bool $sum = true): int
{ {
$count = 0; $count = 0;
$reports = Report::whereIn('report_id', $reportIds) $reports = Report::whereIn('report_id', $reportIds)
->with('metrikaResults') ->with('metrikaResults')
->orderBy('created_at', 'DESC')
->get(); ->get();
foreach ($reports as $report) { foreach ($reports as $report) {
foreach ($report->metrikaResults as $metrikaResult) { foreach ($report->metrikaResults as $metrikaResult) {
if ($metrikaResult->rf_metrika_item_id === $metrikaItemId) { if ($metrikaResult->rf_metrika_item_id === $metrikaItemId) {
$count += intval($metrikaResult->value) ?? 0; if ($sum) $count += intval($metrikaResult->value) ?? 0;
else $count = intval($metrikaResult->value) ?? 0;
} }
} }
} }