19_Bakti_SIMRS/backend/app/Http/Controllers/RegistrasiController.php

183 lines
6.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\TrRegistrasi;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class RegistrasiController extends Controller
{
// 🔥 Get semua data registrasi dengan relasi
public function getRegistrasi()
{
try {
$data = TrRegistrasi::with([
'pasien',
'pegawai',
'kamar',
'tempatTidur',
'ruanganPelayanan',
'asuransi'
])
->where('statusenabled', true)
->get();
return response()->json([
'message' => 'Data registrasi berhasil diambil',
'data' => $data,
]);
} catch (\Exception $e) {
return response()->json([
'message' => 'Gagal mengambil data registrasi',
'error' => $e->getMessage()
], 500);
}
}
// 🔥 Get detail registrasi by ID
public function getDetailRegistrasi($id)
{
try {
$data = TrRegistrasi::with([
'pasien',
'pegawai',
'kamar',
'tempatTidur',
'ruanganPelayanan',
'asuransi'
])->findOrFail($id);
return response()->json([
'message' => 'Detail registrasi ditemukan',
'data' => $data,
]);
} catch (\Exception $e) {
return response()->json([
'message' => 'Registrasi tidak ditemukan',
'error' => $e->getMessage(),
], 404);
}
}
// 🔥 Tambah registrasi baru dengan mrpasien dari URL
public function addRegistrasi(Request $request, $mrpasien)
{
DB::beginTransaction();
try {
$validated = $request->validate([
'TanggalRegistrasi' => 'required|date',
'NomorKartuAsuransi' => 'nullable|string|max:255',
'IdAsuransi' => 'required|exists:ms__asuransis,IdAsuransi',
'IdPegawai' => 'required|exists:ms__pegawais,IdPegawai',
'IdRuangPelayanan' => 'required|exists:ms__ruang_pelayanans,IdRuangPelayanan',
'JenisRawat' => 'required|in:rawat_jalan,rawat_inap',
'IdKamar' => 'nullable|exists:ms__kamars,id',
'IdTempatTidur' => 'nullable|exists:ms__tempat_tidurs,id',
]);
// Generate NoRegistrasi
$tanggal = now()->format('dmY');
$countToday = TrRegistrasi::whereDate('TanggalRegistrasi', now())->count() + 1;
$noUrut = str_pad($countToday, 3, '0', STR_PAD_LEFT);
$noReg = $tanggal . $noUrut;
$registrasi = TrRegistrasi::create([
'NoRegistrasi' => $noReg,
'TanggalRegistrasi' => $validated['TanggalRegistrasi'],
'MRPasien' => $mrpasien,
'NomorKartuAsuransi' => $validated['NomorKartuAsuransi'] ?? null,
'IdAsuransi' => $validated['IdAsuransi'],
'IdPegawai' => $validated['IdPegawai'],
'IdRuangPelayanan' => $validated['IdRuangPelayanan'],
'JenisRawat' => $validated['JenisRawat'],
'IdKamar' => $validated['JenisRawat'] == 'rawat_inap' ? $validated['IdKamar'] : null,
'IdTempatTidur' => $validated['JenisRawat'] == 'rawat_inap' ? $validated['IdTempatTidur'] : null,
'statusenabled' => true,
]);
DB::commit();
return response()->json([
'message' => 'Registrasi berhasil ditambahkan',
'data' => $registrasi,
], 201);
} catch (\Exception $e) {
DB::rollBack();
return response()->json([
'message' => 'Gagal menambahkan registrasi',
'error' => $e->getMessage(),
], 500);
}
}
// 🔥 Update registrasi
public function updateRegistrasi(Request $request, $id)
{
DB::beginTransaction();
try {
$validated = $request->validate([
'TanggalRegistrasi' => 'required|date',
'NomorKartuAsuransi' => 'nullable|string|max:255',
'IdAsuransi' => 'required|exists:ms__asuransis,IdAsuransi',
'IdPegawai' => 'required|exists:ms__pegawais,IdPegawai',
'IdRuangPelayanan' => 'required|exists:ms__ruang_pelayanans,IdRuangPelayanan',
'JenisRawat' => 'required|in:rawat_jalan,rawat_inap',
'IdKamar' => 'nullable|exists:ms__kamars,id',
'IdTempatTidur' => 'nullable|exists:ms__tempat_tidurs,id',
]);
$registrasi = TrRegistrasi::findOrFail($id);
$registrasi->update([
'TanggalRegistrasi' => $validated['TanggalRegistrasi'],
'NomorKartuAsuransi' => $validated['NomorKartuAsuransi'] ?? null,
'IdAsuransi' => $validated['IdAsuransi'],
'IdPegawai' => $validated['IdPegawai'],
'IdRuangPelayanan' => $validated['IdRuangPelayanan'],
'JenisRawat' => $validated['JenisRawat'],
'IdKamar' => $validated['JenisRawat'] == 'rawat_inap' ? $validated['IdKamar'] : null,
'IdTempatTidur' => $validated['JenisRawat'] == 'rawat_inap' ? $validated['IdTempatTidur'] : null,
]);
DB::commit();
return response()->json([
'message' => 'Registrasi berhasil diperbarui',
'data' => $registrasi,
]);
} catch (\Exception $e) {
DB::rollBack();
return response()->json([
'message' => 'Gagal update registrasi',
'error' => $e->getMessage(),
], 500);
}
}
// 🔥 Hapus registrasi (nonaktifkan)
public function hapusRegistrasi($id)
{
DB::beginTransaction();
try {
$registrasi = TrRegistrasi::findOrFail($id);
$registrasi->statusenabled = false;
$registrasi->save();
DB::commit();
return response()->json([
'message' => 'Registrasi berhasil dinonaktifkan',
]);
} catch (\Exception $e) {
DB::rollBack();
return response()->json([
'message' => 'Gagal menghapus registrasi',
'error' => $e->getMessage(),
], 500);
}
}
}