183 lines
6.4 KiB
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);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|