Обновлен стартовый экран
Переписаны запросы для статистики, отчетов Добавлена интеграция отчета сестры
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user