Обновлен стартовый экран

Переписаны запросы для статистики, отчетов
Добавлена интеграция отчета сестры
This commit is contained in:
brusnitsyn
2026-05-28 22:10:00 +09:00
parent 90e0d04dfd
commit 739168d427
96 changed files with 6663 additions and 1465 deletions

View File

@@ -52,8 +52,10 @@ class NurseReportService
$report = ReportNurse::updateOrCreate(
[
'report_date' => $data['report_date'], 'period_start' => $data['period_start'],
'period_end' => $data['period_end']
'report_date' => $data['report_date'],
'period_start' => $data['period_start'],
'period_end' => $data['period_end'],
'rf_department_id' => $data['rf_department_id'],
],
$data
);
@@ -71,21 +73,36 @@ class NurseReportService
$startYear = Carbon::now()->startOfYear()->format('Y-m-d');
$query = UnifiedMedicalHistory::query()
// Фильтруем движения по отделению + пересечение дат
->whereHas('migrations', function ($q) use ($departmentId, $dateRange, $startYear) {
$q->where('department_id', $departmentId)
// пребывание пересекается с отчётным периодом
->where('ingoing_date', '<=', $dateRange->endSql())
->where('ingoing_date', '>=', $startYear)
->where(function ($sub) use ($dateRange) {
->where(function ($sub) use ($dateRange, $startYear) {
$sub->whereNull('out_date')
->orWhere('out_date', '>=', $dateRange->startSql())
->where('out_date', '<=', $dateRange->endSql());
});
});
->where('ingoing_date', '>', $startYear);
// Получаем данные (chunk для памяти, если пациентов > 1000)
$patients = $query->cursor();
$sub->orWhere(function ($sub2) use ($dateRange, $startYear) {
$sub2->whereNotNull('out_date')
->where('out_date', '>', $dateRange->startSql())
->where('out_date', '>', $startYear);
});
});
})
->with(['migrations' => function ($q) use ($departmentId, $dateRange, $startYear) {
$q->where('department_id', $departmentId)
->where('ingoing_date', '<=', $dateRange->endSql())
->where(function ($sub) use ($dateRange, $startYear) {
$sub->whereNull('out_date')
->where('ingoing_date', '>', $startYear);
$sub->orWhere(function ($sub2) use ($dateRange, $startYear) {
$sub2->whereNotNull('out_date')
->where('out_date', '>', $dateRange->startSql())
->where('out_date', '>', $startYear);
});
});
}]);
$patients = $query->lazy();
$savedStats = $this->saveReportSnapshot($reportNurse->id, $patients, $userId);