From dbbe28bfb25a9f3f0c611c7dee6bc7ec4f3d6f5a Mon Sep 17 00:00:00 2001 From: brusnitsyn Date: Wed, 10 Jun 2026 09:57:30 +0900 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B4=D0=B0=D1=82=D1=8B=20=D1=81=D0=BC=D0=B5=D1=80?= =?UTF-8?q?=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/DutyReportService.php | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/app/Services/DutyReportService.php b/app/Services/DutyReportService.php index e355fc0..24cf6f2 100644 --- a/app/Services/DutyReportService.php +++ b/app/Services/DutyReportService.php @@ -372,14 +372,18 @@ class DutyReportService } } - // Выбытие в периоде (есть out_date в периоде) - if ($outDate && $this->dateRangeService->dateInPeriod($outDate, $dateRange)) { - // Смерть (коды 5, 15 - умер в стационаре) - if (in_array($visitResultId, [5, 15])) { + // Умер в периоде + if (!empty($patient['death_date'])) { + $deathDateCarbon = Carbon::parse($patient['death_date']); + if ($deathDateCarbon >= $periodStartCarbon && $deathDateCarbon <= $periodEndCarbon) { $hasDeathInPeriod = true; } + } + + // Выбытие в периоде (есть out_date в периоде) + if ($outDate && $this->dateRangeService->dateInPeriod($outDate, $dateRange)) { // Перевод (коды 4, 14) - elseif (in_array($visitResultId, [4, 14])) { + if (in_array($visitResultId, [4, 14])) { $hasTransferInPeriod = true; } // Выписка @@ -645,16 +649,24 @@ class DutyReportService // Модифицируем patientBatch перед сохранением $filteredPatientBatch = array_map(function($patient) use ($reportDutyId, $reportDate) { // Очищаем death_date, если она есть + // (заплатка для данных из МИС - бывает что дата смерти не устанавливается) + // Пример карт - 329609 и 325529 if (!empty($patient['death_date'])) { - // Проверяем, была ли смерть на момент отчета $deathDate = Carbon::parse($patient['death_date']); - $extractDate = Carbon::parse($patient['extract_date']); + } else { + $deathDate = Carbon::parse($patient['extract_date']); + } + $visitResultId = $patient['visit_result_id']; + + if (in_array($visitResultId, [5, 15])) { // Если дата смерти ПОЗЖЕ даты отчета - удаляем if ($deathDate->gt($reportDate)) { $patient['death_date'] = null; + } else { + // Если дата смерти в тот же день или раньше - оставляем + $patient['death_date'] = $deathDate; } - // Если дата смерти в тот же день или раньше - оставляем } // extract_date оставляем всегда (это дата перевода/выбытия из отделения)