Исправление определения перевода

This commit is contained in:
brusnitsyn
2026-06-11 14:36:57 +09:00
parent b98d4eef8c
commit a916a7532a

View File

@@ -330,8 +330,17 @@ class DutyReportService
} }
} }
// Если есть выбытие по миграции ИЛИ по карте // Умер в периоде (по дате смерти из карты)
$hasOutcomeInPeriod = $hasExtractInPeriod || $hasDischargeInMigration; $hasDeathInPeriod = false;
if (!empty($patient['death_date'])) {
$deathDateCarbon = Carbon::parse($patient['death_date']);
if ($deathDateCarbon >= $periodStartCarbon && $deathDateCarbon <= $periodEndCarbon) {
$hasDeathInPeriod = true;
}
}
// Если есть выбытие по миграции, по карте ИЛИ смерть в периоде
$hasOutcomeInPeriod = $hasExtractInPeriod || $hasDischargeInMigration || $hasDeathInPeriod;
if ($hasOutcomeInPeriod) { if ($hasOutcomeInPeriod) {
// Приоритет: данные из миграции (если есть), иначе из карты // Приоритет: данные из миграции (если есть), иначе из карты
@@ -348,7 +357,6 @@ class DutyReportService
// Флаги для пациента // Флаги для пациента
$hasRecipientInPeriod = false; $hasRecipientInPeriod = false;
$hasDeathInPeriod = false;
$hasTransferInPeriod = false; $hasTransferInPeriod = false;
$hasDischargeInPeriod = false; $hasDischargeInPeriod = false;
$hasActiveMigrationInPeriod = false; $hasActiveMigrationInPeriod = false;
@@ -372,18 +380,14 @@ class DutyReportService
} }
} }
// Умер в периоде
if (!empty($patient['death_date'])) {
$deathDateCarbon = Carbon::parse($patient['death_date']);
if ($deathDateCarbon >= $periodStartCarbon && $deathDateCarbon <= $periodEndCarbon) {
$hasDeathInPeriod = true;
}
}
// Выбытие в периоде (есть out_date в периоде) // Выбытие в периоде (есть out_date в периоде)
if ($outDate && $this->dateRangeService->dateInPeriod($outDate, $dateRange)) { if ($outDate && $this->dateRangeService->dateInPeriod($outDate, $dateRange)) {
// Смерть (коды 5, 15)
if (in_array($visitResultId, [5, 15])) {
$hasDeathInPeriod = true;
}
// Перевод (коды 4, 14) // Перевод (коды 4, 14)
if (in_array($visitResultId, [4, 14])) { elseif (in_array($visitResultId, [4, 14])) {
$hasTransferInPeriod = true; $hasTransferInPeriod = true;
} }
// Выписка // Выписка
@@ -669,8 +673,11 @@ class DutyReportService
} }
} }
// extract_date оставляем всегда (это дата перевода/выбытия из отделения) // Если пациент умер, а дата выбытия из отделения не проставлена
// Она может быть в пределах отчетного периода // (миграция в МИС еще не закрыта) - используем дату смерти как дату выбытия
if (!empty($patient['death_date']) && empty($patient['extract_date'])) {
$patient['extract_date'] = $patient['death_date'];
}
return $patient; return $patient;
}, $patientBatch); }, $patientBatch);