153 lines
4.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Ms_Pasien;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class PasienController extends Controller
{
// GET /pasien
public function getPasien()
{
try {
$data = Ms_Pasien::where('statusenabled', true)->get();
return response()->json([
'message' => 'Data pasien berhasil diambil',
'data' => $data
]);
} catch (\Exception $e) {
return response()->json([
'message' => 'Gagal ambil data pasien',
'error' => $e->getMessage()
], 500);
}
}
public function getDetailPasien($mr)
{
try {
$pasien = Ms_Pasien::where('statusenabled', true)->findOrFail($mr);
return response()->json([
'message' => 'Data pasien ditemukan',
'data' => $pasien
]);
} catch (\Exception $e) {
return response()->json([
'message' => 'Pasien tidak ditemukan',
'error' => $e->getMessage()
], 404);
}
}
public function tambahPasien(Request $request)
{
DB::beginTransaction();
try {
$validated = $request->validate([
'NamaPasien' => 'required|string|max:100',
'TanggalLahir' => 'required|date',
'JenisKelamin' => 'required|string|in:Laki-laki,Perempuan',
'Alamat' => 'nullable|string|max:255',
'NoHP' => 'nullable|string|max:20',
]);
$last = Ms_Pasien::orderByDesc('NoRM')->first();
$nextNumber = $last ? (int)$last->NoRM + 1 : 1;
$noRM = str_pad($nextNumber, 5, '0', STR_PAD_LEFT);
$mrPasien = 'RSABHK' . $nextNumber;
$pasien = Ms_Pasien::create([
'MRPasien' => $mrPasien,
'NoRM' => $noRM,
'NamaPasien' => $validated['NamaPasien'],
'TanggalLahir' => $validated['TanggalLahir'],
'JenisKelamin' => $validated['JenisKelamin'],
'Alamat' => $validated['Alamat'] ?? null,
'NoHP' => $validated['NoHP'] ?? null,
'statusenabled' => true,
]);
DB::commit();
return response()->json([
'message' => 'Pasien berhasil ditambahkan',
'data' => $pasien
], 201);
} catch (\Exception $e) {
DB::rollBack();
return response()->json([
'message' => 'Gagal tambah pasien',
'error' => $e->getMessage()
], 500);
}
}
public function updatePasien(Request $request, $mr)
{
DB::beginTransaction();
try {
$validated = $request->validate([
'NamaPasien' => 'required|string|max:100',
'TanggalLahir' => 'required|date',
'JenisKelamin' => 'required|string|in:Laki-laki,Perempuan',
'Alamat' => 'nullable|string|max:255',
'NoHP' => 'nullable|string|max:20',
]);
$pasien = Ms_Pasien::findOrFail($mr);
$pasien->update([
'NamaPasien' => $validated['NamaPasien'],
'TanggalLahir' => $validated['TanggalLahir'],
'JenisKelamin' => $validated['JenisKelamin'],
'Alamat' => $validated['Alamat'] ?? null,
'NoHP' => $validated['NoHP'] ?? null,
]);
DB::commit();
return response()->json([
'message' => 'Pasien berhasil diperbarui',
'data' => $pasien
]);
} catch (\Exception $e) {
DB::rollBack();
return response()->json([
'message' => 'Gagal update pasien',
'error' => $e->getMessage()
], 500);
}
}
public function hapusPasien($mr)
{
DB::beginTransaction();
try {
$pasien = Ms_Pasien::findOrFail($mr);
$pasien->statusenabled = false;
$pasien->save();
DB::commit();
return response()->json([
'message' => 'Pasien berhasil dinonaktifkan',
'data' => $pasien
]);
} catch (\Exception $e) {
DB::rollBack();
return response()->json([
'message' => 'Gagal hapus pasien',
'error' => $e->getMessage()
], 500);
}
}
}