Добавил вывод метрик для врача дежурного

This commit is contained in:
brusnitsyn
2026-07-13 16:25:13 +09:00
parent d194ea3030
commit 6b3a4bfceb
5 changed files with 62 additions and 18 deletions

View File

@@ -14,12 +14,14 @@ use App\Services\DateRangeService;
use App\Services\DutyMedicalHistoryService;
use App\Services\DutyReportService;
use App\Services\MedicalHistoryService;
use App\Services\MetrikaService;
use App\Services\NurseMedicalHistoryService;
use App\Services\NurseReportService;
use App\Services\UnifiedMedicalHistoryService;
use Barryvdh\DomPDF\Facade\Pdf;
use Illuminate\Http\Request;
use Illuminate\Support\Carbon;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use Inertia\Inertia;
@@ -31,6 +33,7 @@ class DutyReportController extends Controller
protected DutyMedicalHistoryService $dutyMedicalHistoryService,
protected DutyReportService $dutyReportService,
protected NurseMedicalHistoryService $nurseMedicalHistoryService,
protected MetrikaService $metrikaService,
)
{}
@@ -59,7 +62,7 @@ class DutyReportController extends Controller
->where('period_start', '>=', $dateRange->startSql())
->where('period_end', '<=', $dateRange->endSql())
->orderBy('period_end', 'desc')
->with(['unwantedEvents', 'doctor'])
->with(['unwantedEvents', 'doctor', 'metrikaResult'])
->get();
$reportsNurse = ReportNurse::where('rf_department_id', $departmentId)
@@ -109,7 +112,8 @@ class DutyReportController extends Controller
$latestReport = $reportsDuty->first();
} else {
}
else {
// Для прошедшего периода - данные из отчета
$patients = $hasDutyReport
? $this->dutyMedicalHistoryService->getGroupedHistories(
@@ -146,7 +150,7 @@ class DutyReportController extends Controller
'canSaveReport' => $isRangeOneDay && $user->currentRoleCan('report.create'),
'canEditPastReport' => $user->currentRoleCan('report.edit.past'),
'canSaveNurseReport' => $isRangeOneDay && $user->currentRoleCan('nurse.report.create'),
'stats' => $this->prepareStats($patients, $nursePatients, $loaded, $bedsInDepartment),
'stats' => $this->prepareStats($reportsDuty, $patients, $nursePatients, $loaded, $bedsInDepartment),
'dates' => [
$dateRange->startDate->getTimestampMs(),
$dateRange->endDate->getTimestampMs(),
@@ -281,7 +285,7 @@ class DutyReportController extends Controller
/**
* Подготавливает статистику для отображения на фронтенде
*/
private function prepareStats(array $patients, array $nursePatients, int $loaded, ?int $bedsInDepartment): array
private function prepareStats(Collection $reportsDuty, array $patients, array $nursePatients, int $loaded, ?int $bedsInDepartment): array
{
$deceased = $patients['meta']['counts']['deceased'] ?? 0; // Умершие
$discharged = $patients['meta']['counts']['discharged'] ?? 0; // Выписанные
@@ -290,6 +294,8 @@ class DutyReportController extends Controller
? round(($deceased / $discharged) * 100, 2)
: 0;
$baseMetrics = $this->metrikaService->calculateBaseStatistics($reportsDuty);
return [
'nurse' => [
'current' => !empty($nursePatients)
@@ -305,13 +311,14 @@ class DutyReportController extends Controller
'duty' => [
'beds' => $bedsInDepartment ?? 0,
'loaded' => $loaded,
'current' => $patients['meta']['counts']['in_department'] ?? 0,
'recipient' => $patients['meta']['counts']['recipient'] ?? 0,
'discharged' => ($patients['meta']['counts']['discharged'] ?? 0) + ($patients['meta']['counts']['deceased'] ?? 0),
'current' => $baseMetrics['current'],// $patients['meta']['counts']['in_department'] ?? 0,
'recipient' => $baseMetrics['recipient'] ?? 0,
'discharged' => $baseMetrics['outcome'] + ($patients['meta']['counts']['deceased'] ?? 0), //($patients['meta']['counts']['discharged'] ?? 0) + ($patients['meta']['counts']['deceased'] ?? 0),
'deceased' => $patients['meta']['counts']['deceased'] ?? 0,
'lethality' => $lethality,
'surgical_planned' => $patients['meta']['counts']['surgical_planned'] ?? 0,
'surgical_urgent' => $patients['meta']['counts']['surgical_urgent'] ?? 0,
'staff' => $baseMetrics['staff']
]
];
}
@@ -369,6 +376,8 @@ class DutyReportController extends Controller
'observable_out' => $dateRange->endDate,
'out_reason' => 'Закрыто пользователем'
]);
return response()->json()->setStatusCode(200);
}
/**