* добавил исход спец контингенту

* оптимизация обновления при редактировании спец контингента
* добавил поддержку заключительных диагнозов
* изменил определение законченной операции
* добавил поддержку исхода операции
* добавил определение отмены для операции через назначение
* работа над диапазонами календарей, подсчет статистики
* добавил статусы отчетов и подкорректировал привязку спец контингента к отчету
* добавил новые сервисы для будущего кеширования
* частичное разделение логики подсчета пациентов
This commit is contained in:
brusnitsyn
2026-04-22 20:35:39 +09:00
parent 2041ab54ea
commit 719eb1403f
39 changed files with 1458 additions and 763 deletions

View File

@@ -244,8 +244,10 @@ class ReportController extends Controller
'rf_department_id' => $data['departmentId'],
'rf_user_id' => Auth::user()->id,
'rf_lpudoctor_id' => $data['userId'],
'created_at' => now(),
'sent_at' => now()
'created_at' => $dateRange->endSql(),
'sent_at' => $dateRange->endSql(),
'period_start' => $dateRange->startSql(),
'period_end' => $dateRange->endSql(),
]
);
} else {
@@ -253,8 +255,10 @@ class ReportController extends Controller
'rf_department_id' => $data['departmentId'],
'rf_user_id' => Auth::user()->id,
'rf_lpudoctor_id' => $data['userId'],
'created_at' => now(),
'sent_at' => now()
'created_at' => $dateRange->endSql(),
'sent_at' => $dateRange->endSql(),
'period_start' => $dateRange->startSql(),
'period_end' => $dateRange->endSql(),
]);
}
@@ -869,6 +873,10 @@ class ReportController extends Controller
$user = Auth::user();
$data = $request->validate([
'departmentId' => 'required|integer',
'report_id' => 'nullable|integer',
'startAt' => 'required_without:report_id',
'endAt' => 'required_without:report_id',
'user_id' => 'nullable|integer',
'full_name' => 'required|string|max:255',
'birth_date' => 'required|date',
'patient_kind' => 'required|in:plan,emergency',
@@ -880,18 +888,22 @@ class ReportController extends Controller
$department = Department::where('department_id', $data['departmentId'])->firstOrFail();
$patient = $this->reportService->createManualPatient($department, $user, $data);
return response()->json($patient, 201);
return response()->json([
'patient' => $patient,
'report_id' => $patient->rf_report_id,
], 201);
}
public function setManualPatientOutcome(Request $request, int $departmentPatientId)
{
$user = Auth::user();
$data = $request->validate([
'outcome_type' => 'required|in:discharged,transferred,deceased',
'outcome_at' => 'nullable|date',
]);
return response()->json(
$this->reportService->setManualPatientOutcome($departmentPatientId, $data)
$this->reportService->setManualPatientOutcome($user, $departmentPatientId, $data)
);
}
@@ -903,6 +915,8 @@ class ReportController extends Controller
'full_name' => 'required|string|max:255',
'birth_date' => 'required|date',
'patient_kind' => 'required|in:plan,emergency',
'manual_status' => 'nullable|in:current,discharged,deceased',
'outcome_at' => 'nullable|date',
'diagnosis_code' => 'nullable|string|max:255',
'diagnosis_name' => 'nullable|string|max:1000',
'admitted_at' => 'nullable|date',
@@ -1087,15 +1101,13 @@ class ReportController extends Controller
{
if (Carbon::parse($startDate)->diffInDays(Carbon::parse($endDate)) > 1.0)
return Report::where('rf_department_id', $departmentId)
// ->whereBetween('created_at', [$startDate, $endDate])
->where('sent_at', '>=', $startDate)
->where('sent_at', '<=', $endDate)
->orderBy('sent_at', 'ASC')
->withinPeriod($startDate, $endDate)
->orderBy('period_end', 'ASC')
->get();
else
return Report::where('rf_department_id', $departmentId)
->whereDate('created_at', $endDate)
->orderBy('created_at', 'ASC')
->exactPeriod($startDate, $endDate)
->orderBy('period_end', 'ASC')
->get();
}
@@ -1106,12 +1118,12 @@ class ReportController extends Controller
]);
$report = Report::where('rf_department_id', $request->department_id)
->whereDate('created_at', now()->toDateString())
->exactPeriod(now('Asia/Yakutsk')->subDay()->setTime(7, 0)->format('Y-m-d H:i:s'), now('Asia/Yakutsk')->setTime(7, 0)->format('Y-m-d H:i:s'))
->first();
return response()->json([
'report_id' => $report?->report_id,
'exists' => $report->exists
'exists' => (bool) $report
]);
}
}