Исправление определения перевода
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user