This commit is contained in:
brusnitsyn
2026-02-20 17:28:16 +09:00
parent 94e374c32b
commit 52a80ccd3b
41 changed files with 2555 additions and 206 deletions

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Department;
use Illuminate\Http\Request;
class DepartmentController extends Controller
{
public function index(Request $request)
{
$departments = Department::all();
return response()->json($departments);
}
}

View File

@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Http\Resources\Mis\FormattedPatientResource;
use App\Models\Department;
use App\Models\MedicalHistorySnapshot;
use App\Models\MetrikaGroup;
use App\Models\MetrikaResult;
@@ -659,11 +660,16 @@ class ReportController extends Controller
'status' => 'required|string',
'startAt' => 'nullable',
'endAt' => 'nullable',
'departmentId' => 'nullable'
]);
$dateRange = $this->dateRangeService->getDateRangeFromRequest($request, $user);
$departmentId = $request->get('departmentId', $user->department->department_id);
$department = Department::where('department_id', $departmentId)->first();
$patients = $this->reportService->getPatientsByStatus(
$department,
Auth::user(),
$validated['status'],
$dateRange
@@ -680,12 +686,17 @@ class ReportController extends Controller
'status' => 'required|string',
'startAt' => 'nullable',
'endAt' => 'nullable',
'departmentId' => 'nullable'
]);
$dateRange = $this->dateRangeService->getDateRangeFromRequest($request, $user);
$departmentId = $request->get('departmentId', $user->department->department_id);
$department = Department::where('department_id', $departmentId)->first();
$count = $this->reportService->getPatientsCountByStatus(
Auth::user(),
$department,
$user,
$validated['status'],
$dateRange,
);
@@ -965,4 +976,20 @@ class ReportController extends Controller
->orderBy('created_at', 'ASC')
->get();
}
public function checkReport(Request $request)
{
$request->validate([
'department_id' => 'required|integer|exists:departments,department_id'
]);
$report = Report::where('rf_department_id', $request->department_id)
->whereDate('created_at', now()->toDateString())
->first();
return response()->json([
'report_id' => $report?->report_id,
'exists' => $report->exists
]);
}
}

View File

@@ -0,0 +1,51 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Department;
use App\Services\DateRangeService;
use App\Services\ReportService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class StatisticController extends Controller
{
public function __construct(
protected DateRangeService $dateRangeService,
protected ReportService $reportService
) {}
public function getUnwantedEvents(Request $request)
{
$user = Auth::user();
$validated = $request->validate([
'startAt' => 'required',
'endAt' => 'required',
'departmentId' => 'required',
]);
$dateRange = $this->dateRangeService->getNormalizedDateRange($user, $validated['startAt'], $validated['endAt']);
$department = Department::findSole($request->departmentId, 'department_id');
$unwantedEvents = $this->reportService->getUnwantedEvents($department, $dateRange);
return response()->json($unwantedEvents);
}
public function getObservablePatients(Request $request)
{
$user = Auth::user();
$validated = $request->validate([
'startAt' => 'required',
'endAt' => 'required',
'departmentId' => 'required'
]);
$dateRange = $this->dateRangeService->getNormalizedDateRange($user, $validated['startAt'], $validated['endAt']);
$department = Department::findSole($request->departmentId, 'department_id');
$observablePatients = $this->reportService->getPatientsByStatus($department, $user, 'observation', $dateRange);
return response()->json($observablePatients);
}
}