query('userId') ? (int) $request->query('userId') : null; $departmentId = $request->query('departmentId') ? (int) $request->query('departmentId') : null; $department = Department::where('department_id', $departmentId)->firstOrFail(); $dateRange = $this->dateRangeService->getDateRangeFromRequest($request, $user); // Проверяем, есть ли отчет за этот период $isPastPeriod = $this->dateRangeService->isPastPeriod($dateRange); $existsReport = ReportNurse::where('rf_department_id', $departmentId) ->where('period_end', '>', $dateRange->startSql()) ->where('period_end', '<=', $dateRange->endSql()) ->exists(); $hasReport = $existsReport && $isPastPeriod; $data = $this->unifiedMedicalHistoryService->getGroupedHistories($dateRange, $department->rf_mis_department_id); $currentReport = ReportNurse::where('rf_department_id', $departmentId) ->where('period_start', '>=', $dateRange->startSql()) ->where('period_end', '<=', $dateRange->endSql()) ->orderBy('period_end', 'desc') ->first(); $isRangeOneDay = $this->dateRangeService->isRangeOneDay($dateRange->startDate, $dateRange->endDate); return Inertia::render('Nurse/Report/Index', [ 'patients' => $data, 'reportNurseId' => $currentReport?->id, 'canSaveReport' => $isRangeOneDay && $user->currentRoleCan('nurse.report.create'), 'canEditPastReport' => $user->currentRoleCan('nurse.report.edit.past'), 'department' => $department, 'selectedUserId' => $selectedUserId, 'selectedDepartmentId' => $departmentId, 'dates' => [ $dateRange->startDate->getTimestampMs(), $dateRange->endDate->getTimestampMs(), ] ]); } /** * Сохранение отчета от роли мед. сестра * @return \Illuminate\Http\RedirectResponse */ public function store(Request $request) { abort_if(!auth()->user()->currentRoleCan('nurse.report.create'), 403); $user = auth()->user(); $selectedUserId = $request->input('userId') ? (int) $request->input('userId') : null; $departmentId = $request->input('departmentId') ? (int) $request->input('departmentId') : null; $dateRange = $this->dateRangeService->getDateRangeFromRequest($request, $user); $report = $this->nurseReportService->saveReport($dateRange, null, $selectedUserId, $departmentId); $this->nurseReportService->saveSnapshot($dateRange, $report, null, auth()->id()); return redirect()->back(); } }