Files
onboard/app/Http/Controllers/Api/NurseController.php
brusnitsyn 717641e4bb * добавил объединение изменений движений
* добавил автоматическое создание движения при редактировании
* добавил функционал для сохранения отчета и пациентов
* изменил форматирование дат
* добавил частичную перезагрузку при сохранении изменений
2026-05-05 17:06:15 +09:00

113 lines
3.4 KiB
PHP

<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\MedicalHistory;
use App\Models\MedicalHistoryCorrection;
use App\Models\MedicalHistoryNurse;
use App\Models\MigrationPatient;
use App\Models\MigrationPatientCorrection;
use App\Models\UnifiedMedicalHistory;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class NurseController extends Controller
{
public function getPatient($id, Request $request)
{
return UnifiedMedicalHistory::where('id', $id)->first();
}
public function searchPatients(Request $request)
{
$search = $request->search;
return MedicalHistory::whereLike('full_name', $search . '%')
->orderBy('recipient_date', 'desc')
->get()->map(function ($item) {
return [
'label' => "$item->medical_card_number - $item->full_name",
'value' => $item->id
];
});
}
public function storePatient(Request $request)
{
$data = $request->validate([
'source_type' => 'nullable',
'medical_card_number' => 'nullable',
'full_name' => 'required',
'birth_date' => 'required',
'recipient_date' => 'required',
'extract_date' => 'nullable',
'death_date' => 'nullable',
'male' => 'nullable',
'urgency_id' => 'required',
'hospital_result_id' => 'nullable',
'visit_result_id' => 'required',
'mis_user_id' => 'nullable',
'comment' => 'nullable',
]);
$data['user_id'] = auth()->user()->id;
$result = MedicalHistoryNurse::create($data);
return response()->json([
'data' => $result,
], 201);
}
public function storeCorrection($id, Request $request)
{
$data = $request->validate([
'medical_card_number' => 'nullable',
'full_name' => 'nullable',
'birth_date' => 'nullable',
'recipient_date' => 'nullable',
'extract_date' => 'nullable',
'death_date' => 'nullable',
'male' => 'nullable',
'urgency_id' => 'nullable',
'hospital_result_id' => 'nullable',
'visit_result_id' => 'nullable',
'mis_user_id' => 'nullable',
'comment' => 'nullable',
]);
$data['medical_history_id'] = $id;
$data['user_id'] = auth()->user()->id;
$currentMigration = MigrationPatient::currentMigration($id);
$migrationData = [
'migration_patient_id' => $currentMigration->id,
'medical_history_id' => $id,
'ingoing_date' => $data['recipient_date'],
'out_date' => $data['extract_date'],
'visit_result_id' => $data['visit_result_id'],
'user_id' => $data['user_id'],
];
DB::beginTransaction();
$historyCorrection = MedicalHistoryCorrection::create($data);
$migrationCorrection = MigrationPatientCorrection::create($migrationData);
if ($historyCorrection && $migrationCorrection) {
DB::commit();
return response()->json([
'data' => $historyCorrection,
], 201);
} else {
DB::rollBack();
return response()->json([
'data' => 'Something went wrong',
], 400);
}
}
}