user(); $department = $user->department; $beds = (int)$department->metrikaDefault()->where('rf_metrika_item_id', 1)->first()->value; $occupiedBeds = optional(Report::where('rf_department_id', $user->rf_department_id) ->join('metrika_results', 'reports.report_id', '=', 'metrika_results.rf_report_id') ->where('metrika_results.rf_metrika_item_id', 8) ->orderBy('sent_at', 'desc')->first())->value ?? 0; $percentLoadedBeds = intval($occupiedBeds) * 100 / $beds; $metrikaGroup = MetrikaGroup::whereMetrikaGroupId(2)->first(); $metrikaItems = $metrikaGroup->metrikaItems; return response()->json([ 'department' => [ 'beds' => $beds, 'percentLoadedBeds' => $percentLoadedBeds, ], 'metrikaItems' => $metrikaItems ]); } public function store(Request $request) { $data = $request->validate([ 'metrics' => 'required', 'observationPatients' => 'nullable', 'departmentId' => 'required|integer', ]); $metrics = $data['metrics']; $observationPatients = $data['observationPatients']; $metriks = []; foreach ($metrics as $key => $value) { $metrika = new MetrikaResult; $metrikaId = (int)Str::replace('metrika_item_', '', $key); $metrika->rf_metrika_item_id = $metrikaId; $metrika->value = $value; $metriks[] = $metrika; } \DB::beginTransaction(); $report = Report::create([ 'rf_department_id' => $data['departmentId'], 'rf_user_id' => Auth::user()->id, 'created_at' => now(), 'sent_at' => now() ]); foreach ($metriks as $metrika) { $metrika->rf_report_id = $report->report_id; $metrika->save(); } foreach ($observationPatients as $observationPatient) { ObservationPatient::create([ 'rf_department_id' => $data['departmentId'], 'rf_report_id' => $report->report_id, 'rf_medicalhistory_id' => $observationPatient['id'], 'rf_mkab_id' => null ]); } \DB::commit(); return response()->json([ 'message' => 'success' ]); } public function getPatients(Request $request) { $data = $request->validate([ 'status' => 'required|string', // plan emergency ]); $status = $data['status']; $model = new MisMedicalHistory(); if ($status === 'plan') { $patients = MisMedicalHistory::select( [ ...$model->getFillable(), DB::raw('ROW_NUMBER() OVER (ORDER BY "DateRecipient" DESC) as num') ]) ->where('rf_EmerSignID', 1) ->orderBy('DateRecipient', 'DESC') ->get(); } else if ($status === 'emergency') { $patients = MisMedicalHistory::select( [ ...$model->getFillable(), DB::raw('ROW_NUMBER() OVER (ORDER BY "DateRecipient" DESC) as num') ]) ->where('rf_EmerSignID', 2) ->orderBy('DateRecipient', 'DESC') ->get(); } return response()->json(FormattedPatientResource::collection($patients)); } public function getPatientsCount(Request $request) { $data = $request->validate([ 'status' => 'required|string', // plan emergency ]); $status = $data['status']; $model = new MisMedicalHistory(); if ($status === 'plan') { $count = MisMedicalHistory::select($model->getFillable()) ->where('rf_EmerSignID', 1) ->orderBy('DateRecipient', 'DESC') ->count(); } else if ($status === 'emergency') { $count = MisMedicalHistory::select($model->getFillable()) ->where('rf_EmerSignID', 2) ->orderBy('DateRecipient', 'DESC') ->count(); } return response()->json($count); } }