Добавил проверку источника при добавлении пациента и вывод отчетов выбранной мед. сестры
This commit is contained in:
@@ -26,7 +26,13 @@ class NurseController extends Controller
|
||||
{
|
||||
public function getPatient($id, Request $request)
|
||||
{
|
||||
return Cache::remember("nurse_patient:{$id}", 120, function () use ($id, $request) {
|
||||
$patientSource = $request->query('patient_source', 'manual');
|
||||
if ($patientSource === 'manual') {
|
||||
return Cache::remember("nurse_patient:manual:{$id}", 120, function () use ($id, $request) {
|
||||
return UnifiedMedicalHistory::where('id', $id)->first();
|
||||
});
|
||||
}
|
||||
return Cache::remember("nurse_patient:mis:{$id}", 120, function () use ($id, $request) {
|
||||
return MisMKSB::where('MedicalHistoryID', $id)->select(MisMKSB::workColumns())->first();
|
||||
});
|
||||
}
|
||||
@@ -202,6 +208,11 @@ class NurseController extends Controller
|
||||
$reportNurseId = $request->input('report_nurse_id');
|
||||
$this->syncNurseSnapshot($originalId, $data, $migrationData, $departmentId, $reportNurseId);
|
||||
|
||||
if (Cache::has("nurse_patient:manual:{$id}"))
|
||||
Cache::forget("nurse_patient:manual:{$id}");
|
||||
if (Cache::has("nurse_patient:mis:{$id}"))
|
||||
Cache::forget("nurse_patient:mis:{$id}");
|
||||
|
||||
return response()->json([
|
||||
'data' => $historyCorrection,
|
||||
], 201);
|
||||
|
||||
@@ -35,6 +35,7 @@ class NurseReportController extends Controller
|
||||
$departmentId = $request->query('departmentId') ? (int) $request->query('departmentId') : null;
|
||||
$department = Department::where('department_id', $departmentId)->firstOrFail();
|
||||
$dateRange = $this->dateRangeService->getDateRangeFromRequest($request, $user);
|
||||
$isRangeOneDay = $this->dateRangeService->isRangeOneDay($dateRange->startDate, $dateRange->endDate);
|
||||
|
||||
// Проверяем, есть ли отчет за этот период
|
||||
$isPastPeriod = $this->dateRangeService->isPastPeriod($dateRange);
|
||||
@@ -43,9 +44,42 @@ class NurseReportController extends Controller
|
||||
->where('period_end', '<=', $dateRange->endSql())
|
||||
->exists();
|
||||
|
||||
$hasReport = $existsReport && $isPastPeriod;
|
||||
$isCurrentPeriod = !$isPastPeriod;
|
||||
|
||||
$data = $this->unifiedMedicalHistoryService->getGroupedHistories($dateRange, $department->rf_mis_department_id);
|
||||
$reportsNurse = ReportNurse::where('rf_department_id', $departmentId)
|
||||
->where('period_start', '>=', $dateRange->startSql())
|
||||
->where('period_end', '<=', $dateRange->endSql())
|
||||
->where('rf_lpudoctor_id', $selectedUserId)
|
||||
->orderBy('period_end', 'desc')
|
||||
->with(['doctor'])
|
||||
->get();
|
||||
|
||||
$hasNurseReport = $reportsNurse->count() > 0;
|
||||
$reportNurseIds = $reportsNurse->pluck('id')->toArray();
|
||||
|
||||
// Получаем пациентов (источник зависит от периода)
|
||||
if ($isCurrentPeriod) {
|
||||
// Для текущего периода - пациенты из МИС
|
||||
$patients = $this->unifiedMedicalHistoryService->getGroupedHistories(
|
||||
$dateRange,
|
||||
$department->rf_mis_department_id,
|
||||
);
|
||||
|
||||
$latestReport = $reportsNurse->first();
|
||||
} else {
|
||||
// Для прошедшего периода - данные из отчета
|
||||
$patients = $hasNurseReport
|
||||
? $this->nurseMedicalHistoryService->getGroupedHistories(
|
||||
$dateRange,
|
||||
$department->rf_mis_department_id,
|
||||
$reportNurseIds
|
||||
)
|
||||
: [];
|
||||
|
||||
$latestReport = $reportsNurse->first();
|
||||
}
|
||||
|
||||
//$data = $this->unifiedMedicalHistoryService->getGroupedHistories($dateRange, $department->rf_mis_department_id);
|
||||
|
||||
$currentReport = ReportNurse::where('rf_department_id', $departmentId)
|
||||
->where('period_start', '>=', $dateRange->startSql())
|
||||
@@ -56,7 +90,8 @@ class NurseReportController extends Controller
|
||||
$isRangeOneDay = $this->dateRangeService->isRangeOneDay($dateRange->startDate, $dateRange->endDate);
|
||||
|
||||
return Inertia::render('Nurse/Report/Index', [
|
||||
'patients' => $data,
|
||||
'patients' => $patients,
|
||||
'latestReport' => $latestReport ?? null,
|
||||
'reportNurseId' => $currentReport?->id,
|
||||
'canSaveReport' => $isRangeOneDay && $user->currentRoleCan('nurse.report.create'),
|
||||
'canEditPastReport' => $user->currentRoleCan('nurse.report.edit.past'),
|
||||
|
||||
@@ -39,4 +39,9 @@ class ReportNurse extends Model
|
||||
{
|
||||
return $this->belongsTo(ReportStatus::class);
|
||||
}
|
||||
|
||||
public function doctor()
|
||||
{
|
||||
return $this->belongsTo(MisLpuDoctor::class, 'rf_lpudoctor_id', 'LPUDoctorID');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,6 +50,12 @@ class NurseReportService
|
||||
'rf_user_id' => $user->id,
|
||||
];
|
||||
|
||||
$existsReport = ReportNurse::where('period_start', $data['period_start'])
|
||||
->where('period_end', $data['period_end'])
|
||||
->exists();
|
||||
|
||||
if ($existsReport) unset($data['rf_lpudoctor_id']);
|
||||
|
||||
$report = ReportNurse::updateOrCreate(
|
||||
[
|
||||
'report_date' => $data['report_date'],
|
||||
|
||||
Reference in New Issue
Block a user