rsabhk_hsr/app/Http/Controllers/RegistrasiController.php
2025-04-27 20:42:42 +07:00

106 lines
3.8 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Exports\RegistrasiExport;
use App\Models\Asuransi;
use App\Models\Pasien;
use App\Models\Registrasi;
use App\Models\RuangPelayanan;
use App\Models\Tindakan;
use Barryvdh\DomPDF\Facade\Pdf as FacadePdf;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Maatwebsite\Excel\Facades\Excel;
use PDF;
class RegistrasiController extends Controller
{
public function index()
{
$registrasi = Registrasi::with(['pasien', 'asuransi', 'pegawai', 'ruangPelayanan'])->get();
$ruangPelayanan = RuangPelayanan::get();
$asuransi = Asuransi::get();
$tindakan = Tindakan::get();
return view('module.registrasi.index', compact(['registrasi', 'ruangPelayanan', 'asuransi', 'tindakan']));
}
public function store(Request $request)
{
$randomUppercaseString = Str::upper(Str::random(4));
$pasien = Pasien::where('nik', $request->nik)->first();
if ($pasien === null)
{
$pasien = new Pasien();
$pasien->nama = $request->nama;
$pasien->nik = $request->nik;
$pasien->tgl_lahir = $request->tgl_lahir;
$pasien->jenis_kelamin = $request->jenis_kelamin;
$pasien->created_by = auth('pegawai')->user()->nama;
$pasien->save();
}
$registrasi = new Registrasi();
$registrasi->code = now()->format('ymd') . $randomUppercaseString;
$registrasi->tgl_registrasi = now()->format('Y-m-d');
$registrasi->id_pasien = $pasien->id;
$registrasi->id_asuransi = $request->asuransi;
$registrasi->no_asuransi = $request->no_asuransi;
$registrasi->id_pegawai = auth('pegawai')->user()->id;
$registrasi->id_ruang_pelayanan = $request->ruang_pelayanan;
$registrasi->created_by = auth('pegawai')->user()->nama;
$registrasi->save();
return redirect()->back()->with('message','Registrasi pasien berhasil');
}
public function excelExport()
{
$registrasi = Registrasi::with(['pasien', 'asuransi', 'pegawai', 'ruangPelayanan'])->orderByDesc('id')->get();
$data = [];
$no = 1;
foreach ($registrasi as $rgs) {
$data[] = [
'No' => $no++,
'Kode Registrasi' => $rgs->code,
'Tgl Registrasi' => $rgs->tgl_registrasi,
'Nama Pasien' => $rgs->pasien->nama,
'Tgl Lahir' => date('d/m/Y', strtotime($rgs->pasien->tgl_lahir)),
'Jenis Kelamin' => $rgs->pasien->jenis_kelamin === 'male' ? 'Laki-laki' : ($rgs->pasien->jenis_kelamin === 'female' ? 'Perempuan' : ''),
'Asuransi' => $rgs->asuransi->nama ?? null,
'No Asuransi' => $rgs->no_asuransi ?? null,
'Ruang Pelayanan' => $rgs->ruangPelayanan->nama,
'Pegawai' => $rgs->pegawai->nama,
];
}
$header = [
'No',
'Kode Registrasi',
'Tgl Registrasi',
'Nama Pasien',
'Tgl Lahir',
'Jenis Kelamin',
'Asuransi',
'No Asuransi',
'Ruang Pelayanan',
'Pegawai',
];
return Excel::download(new RegistrasiExport($header, $data), 'Data Registrasi Pasien '.now().'.xlsx');
}
public function generatePdf()
{
$registrasi = Registrasi::with(['pasien', 'asuransi', 'pegawai', 'ruangPelayanan'])->orderByDesc('id')->get();
$pdf = FacadePdf::loadview('module.registrasi.registrasi_pdf', ['registrasi' => $registrasi]);
$pdf->setPaper('A4');
return $pdf->stream('Data Regitrasi Pasien '.now().'.pdf');
}
}