106 lines
3.8 KiB
PHP
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');
|
|
}
|
|
}
|