From ced9b41539f24688bff9ef80675ac410871f369a Mon Sep 17 00:00:00 2001 From: hasrinuryawati <53637311+hasrinuryawati@users.noreply.github.com> Date: Sun, 27 Apr 2025 20:02:22 +0700 Subject: [PATCH] transaksi --- app/Http/Controllers/AsuransiController.php | 48 +++- app/Http/Controllers/PasienController.php | 63 ++--- app/Http/Controllers/RegistrasiController.php | 79 +++--- .../Controllers/RuangPelayananController.php | 2 +- app/Http/Controllers/TindakanController.php | 2 +- app/Http/Controllers/TransaksiController.php | 79 +++--- app/Models/AsuransiTindakan.php | 27 ++ app/Models/Pasien.php | 1 + app/Models/Registrasi.php | 1 + app/Models/Transaksi.php | 3 + .../2025_04_25_162805_create_pasien_table.php | 1 + ...5_04_25_164014_create_registrasi_table.php | 4 +- ...25_04_26_033229_create_transaksi_table.php | 4 + ..._081628_create_asuransi_tindakan_table.php | 43 +++ resources/views/layout/breadcrumb.blade.php | 4 +- resources/views/layout/script.blade.php | 4 + resources/views/layout/sidebar.blade.php | 9 + resources/views/layout/stylesheet.blade.php | 4 + .../views/module/asuransi/index.blade.php | 4 +- .../asuransi/mapping_tindakan.blade.php | 113 ++++++++ resources/views/module/pasien/index.blade.php | 177 ++++++++++--- .../views/module/registrasi/index.blade.php | 250 ++++++++++++++++++ .../module/ruang_pelayanan/index.blade.php | 2 - .../views/module/tindakan/index.blade.php | 2 - .../views/module/transaksi/tindakan.blade.php | 193 ++++++++++++++ routes/web.php | 12 + 26 files changed, 950 insertions(+), 181 deletions(-) create mode 100644 app/Models/AsuransiTindakan.php create mode 100644 database/migrations/2025_04_27_081628_create_asuransi_tindakan_table.php create mode 100644 resources/views/module/asuransi/mapping_tindakan.blade.php create mode 100644 resources/views/module/registrasi/index.blade.php create mode 100644 resources/views/module/transaksi/tindakan.blade.php diff --git a/app/Http/Controllers/AsuransiController.php b/app/Http/Controllers/AsuransiController.php index 4dbc69d..e2e09cb 100644 --- a/app/Http/Controllers/AsuransiController.php +++ b/app/Http/Controllers/AsuransiController.php @@ -3,13 +3,15 @@ namespace App\Http\Controllers; use App\Models\Asuransi; +use App\Models\AsuransiTindakan; +use App\Models\Tindakan; use Illuminate\Http\Request; class AsuransiController extends Controller { public function index() { - $asuransi = Asuransi::get(); + $asuransi = Asuransi::orderByDesc('id')->get(); return view('module.asuransi.index', compact('asuransi')); } @@ -33,4 +35,48 @@ class AsuransiController extends Controller return redirect()->back()->with('message','Data berhasil di ubah'); } + + public function maappingForm(Asuransi $asuransi) + { + $dataAsuransi = Asuransi::find($asuransi->id); + $tindakan = Tindakan::get(); + $tindakanMapping = AsuransiTindakan::where('id_asuransi', $dataAsuransi->id) + ->get() + ->keyBy('id_tindakan'); + + return view('module.asuransi.mapping_tindakan', compact(['dataAsuransi', 'tindakan', 'tindakanMapping'])); + } + + public function mapping(Request $request) + { + $request->validate([ + 'id_asuransi' => 'required|exists:asuransi,id', + 'tindakan' => 'required|array', + ]); + + $idAsuransi = $request->id_asuransi; + $dataTindakan = $request->tindakan; + + foreach ($dataTindakan as $idTindakan => $data) { + if (isset($data['selected']) && $data['selected']) { + $existing = AsuransiTindakan::where('id_asuransi', $idAsuransi) + ->where('id_tindakan', $idTindakan) + ->first(); + + if ($existing) { + continue; + } + + $asuransiTindakan = new AsuransiTindakan(); + $asuransiTindakan->id_asuransi = $idAsuransi; + $asuransiTindakan->id_tindakan = $idTindakan; + $asuransiTindakan->cover_type = $data['cover_type'] ?? 'none'; + $asuransiTindakan->cover_percentage = $data['cover_percentage'] ?? null; + $asuransiTindakan->created_by = auth('pegawai')->user()->nama ?? 'system'; + $asuransiTindakan->save(); + } + } + + return redirect()->back()->with('success', 'Mapping berhasil disimpan.'); + } } diff --git a/app/Http/Controllers/PasienController.php b/app/Http/Controllers/PasienController.php index a410b7a..df8ebe9 100644 --- a/app/Http/Controllers/PasienController.php +++ b/app/Http/Controllers/PasienController.php @@ -2,61 +2,50 @@ namespace App\Http\Controllers; +use App\Models\Asuransi; use App\Models\Pasien; +use App\Models\Registrasi; +use App\Models\RuangPelayanan; +use App\Models\Tindakan; use Illuminate\Http\Request; +use Illuminate\Support\Str; class PasienController extends Controller { public function index() { - return view('module.pasien.index'); + $pasien = Pasien::with('registrasi')->orderByDesc('id')->get(); + $ruangPelayanan = RuangPelayanan::get(); + $asuransi = Asuransi::get(); + $tindakan = Tindakan::get(); + + return view('module.pasien.index', compact(['pasien', 'ruangPelayanan', 'asuransi', 'tindakan'])); } - /** - * Show the form for creating a new resource. - */ - public function create() + public function cekNik(Request $request) { - // + $pasien = Pasien::where('nik', $request->nik)->first(); + if ($pasien) { + return response()->json([ + 'success' => true, + 'pasien' => [ + 'nama' => $pasien->nama, + 'tgl_lahir' => $pasien->tgl_lahir, + 'jenis_kelamin' => $pasien->jenis_kelamin, + ], + ]); + } else { + return response()->json(['success' => false]); + } } - /** - * Store a newly created resource in storage. - */ public function store(Request $request) { - // + } - /** - * Display the specified resource. - */ - public function show(Pasien $pasien) - { - // - } - - /** - * Show the form for editing the specified resource. - */ - public function edit(Pasien $pasien) - { - // - } - - /** - * Update the specified resource in storage. - */ public function update(Request $request, Pasien $pasien) { // } - - /** - * Remove the specified resource from storage. - */ - public function destroy(Pasien $pasien) - { - // - } } diff --git a/app/Http/Controllers/RegistrasiController.php b/app/Http/Controllers/RegistrasiController.php index 9432700..46ba2ea 100644 --- a/app/Http/Controllers/RegistrasiController.php +++ b/app/Http/Controllers/RegistrasiController.php @@ -2,64 +2,53 @@ namespace App\Http\Controllers; +use App\Models\Asuransi; +use App\Models\Pasien; use App\Models\Registrasi; +use App\Models\RuangPelayanan; +use App\Models\Tindakan; use Illuminate\Http\Request; +use Illuminate\Support\Str; class RegistrasiController extends Controller { - /** - * Display a listing of the resource. - */ 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'])); } - /** - * Show the form for creating a new resource. - */ - public function create() - { - // - } - - /** - * Store a newly created resource in storage. - */ public function store(Request $request) { - // - } + $randomUppercaseString = Str::upper(Str::random(4)); + $pasien = Pasien::where('nik', $request->nik)->first(); - /** - * Display the specified resource. - */ - public function show(Registrasi $registrasi) - { - // - } + 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(); + } - /** - * Show the form for editing the specified resource. - */ - public function edit(Registrasi $registrasi) - { - // - } + $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(); - /** - * Update the specified resource in storage. - */ - public function update(Request $request, Registrasi $registrasi) - { - // - } - - /** - * Remove the specified resource from storage. - */ - public function destroy(Registrasi $registrasi) - { - // + return redirect()->back()->with('message','Registrasi pasien berhasil'); } } diff --git a/app/Http/Controllers/RuangPelayananController.php b/app/Http/Controllers/RuangPelayananController.php index a0e5559..8c44742 100644 --- a/app/Http/Controllers/RuangPelayananController.php +++ b/app/Http/Controllers/RuangPelayananController.php @@ -9,7 +9,7 @@ class RuangPelayananController extends Controller { public function index() { - $ruangPelayanan = RuangPelayanan::get(); + $ruangPelayanan = RuangPelayanan::orderByDesc('id')->get(); return view('module.ruang_pelayanan.index', compact('ruangPelayanan')); } diff --git a/app/Http/Controllers/TindakanController.php b/app/Http/Controllers/TindakanController.php index 5c97286..448cb11 100644 --- a/app/Http/Controllers/TindakanController.php +++ b/app/Http/Controllers/TindakanController.php @@ -9,7 +9,7 @@ class TindakanController extends Controller { public function index() { - $tindakan = Tindakan::get(); + $tindakan = Tindakan::orderByDesc('id')->get(); return view('module.tindakan.index', compact('tindakan')); } diff --git a/app/Http/Controllers/TransaksiController.php b/app/Http/Controllers/TransaksiController.php index 2070f80..0f87edd 100644 --- a/app/Http/Controllers/TransaksiController.php +++ b/app/Http/Controllers/TransaksiController.php @@ -2,64 +2,51 @@ namespace App\Http\Controllers; +use App\Models\Asuransi; +use App\Models\AsuransiTindakan; +use App\Models\Registrasi; +use App\Models\Tindakan; use App\Models\Transaksi; use Illuminate\Http\Request; class TransaksiController extends Controller { - /** - * Display a listing of the resource. - */ - public function index() + public function tindakanForm(Registrasi $registrasi) { - // + $dataRegistrasi = Registrasi::find($registrasi->id); + $tindakan = Tindakan::get(); + $asuransiTindakan = AsuransiTindakan::where('id_asuransi', $dataRegistrasi->id_asuransi)->get(); + + return view('module.transaksi.tindakan', compact(['dataRegistrasi', 'tindakan', 'asuransiTindakan'])); } - /** - * Show the form for creating a new resource. - */ - public function create() - { - // - } - - /** - * Store a newly created resource in storage. - */ public function store(Request $request) { - // - } + $idRegistrasi = $request->input('id_registrasi'); + $idTindakanList = $request->input('id_tindakan'); + $jumlahTindakanList = $request->input('jumlah_tindakan'); + $subtotalList = $request->input('subtotal'); + $asuransiDiscountList = $request->input('asuransi_discount'); + $totalAkhirList = $request->input('total_akhir'); - /** - * Display the specified resource. - */ - public function show(Transaksi $transaksi) - { - // - } + foreach ($idTindakanList as $index => $idTindakan) { + $transaksi = new Transaksi(); + $transaksi->id_registrasi = $idRegistrasi; + $transaksi->id_tindakan = $idTindakan; + $transaksi->jml_tindakan = $jumlahTindakanList[$index]; + $transaksi->potongan = $asuransiDiscountList[$index]; + $transaksi->subtotal = $subtotalList[$index]; + $transaksi->total = $totalAkhirList[$index]; + $transaksi->id_pegawai = auth('pegawai')->user()->id; + $transaksi->created_by = auth('pegawai')->user()->nama; + $transaksi->save(); + } - /** - * Show the form for editing the specified resource. - */ - public function edit(Transaksi $transaksi) - { - // - } + $registrasi = Registrasi::find($idRegistrasi); + $registrasi->status_tindakan = "done"; + $registrasi->updated_by = auth('pegawai')->user()->nama; + $registrasi->save(); - /** - * Update the specified resource in storage. - */ - public function update(Request $request, Transaksi $transaksi) - { - // - } - - /** - * Remove the specified resource from storage. - */ - public function destroy(Transaksi $transaksi) - { - // + return redirect()->back()->with('message', 'Transaksi berhasil'); } } diff --git a/app/Models/AsuransiTindakan.php b/app/Models/AsuransiTindakan.php new file mode 100644 index 0000000..d4260c0 --- /dev/null +++ b/app/Models/AsuransiTindakan.php @@ -0,0 +1,27 @@ +timestamps(); $table->string('nama', 100); + $table->string('nik', 16)->unique(); $table->date('tgl_lahir'); $table->enum('jenis_kelamin', ['male', 'female']); }); diff --git a/database/migrations/2025_04_25_164014_create_registrasi_table.php b/database/migrations/2025_04_25_164014_create_registrasi_table.php index 7e588e3..783d4ee 100644 --- a/database/migrations/2025_04_25_164014_create_registrasi_table.php +++ b/database/migrations/2025_04_25_164014_create_registrasi_table.php @@ -32,7 +32,7 @@ return new class extends Migration table:'asuransi', indexName:'registrasi_id_asuransi' ); - $table->integer('no_asuransi')->nullable(); + $table->string('no_asuransi')->nullable(); $table->foreignId('id_pegawai') ->constrained( @@ -45,6 +45,8 @@ return new class extends Migration table:'ruang_pelayanan', indexName:'registrasi_id_ruang_pelayanan' ); + + $table->enum('status_tindakan', ['inprogress', 'done'])->default('inprogress'); }); } diff --git a/database/migrations/2025_04_26_033229_create_transaksi_table.php b/database/migrations/2025_04_26_033229_create_transaksi_table.php index 2ed6b2e..5267811 100644 --- a/database/migrations/2025_04_26_033229_create_transaksi_table.php +++ b/database/migrations/2025_04_26_033229_create_transaksi_table.php @@ -30,6 +30,10 @@ return new class extends Migration ); $table->integer('jml_tindakan'); + $table->decimal('potongan', 15, 2); + $table->decimal('subtotal', 15, 2); + $table->decimal('total', 15, 2); + $table->foreignId('id_pegawai') ->constrained( table:'pegawai', diff --git a/database/migrations/2025_04_27_081628_create_asuransi_tindakan_table.php b/database/migrations/2025_04_27_081628_create_asuransi_tindakan_table.php new file mode 100644 index 0000000..a479bab --- /dev/null +++ b/database/migrations/2025_04_27_081628_create_asuransi_tindakan_table.php @@ -0,0 +1,43 @@ +id(); + $table->string('created_by')->nullable(); + $table->string('updated_by')->nullable(); + $table->timestamps(); + $table->foreignId('id_asuransi') + ->constrained( + table:'asuransi', + indexName:'asuransi_tindakan_id_asuransi' + ); + + $table->foreignId('id_tindakan') + ->constrained( + table:'tindakan', + indexName:'asuransi_tindakan_id_tindakan' + ); + + $table->enum('cover_type', ['full', 'partial', 'none']); + $table->integer('cover_percentage')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('asuransi_tindakan'); + } +}; diff --git a/resources/views/layout/breadcrumb.blade.php b/resources/views/layout/breadcrumb.blade.php index 0e529a7..59ef9f9 100644 --- a/resources/views/layout/breadcrumb.blade.php +++ b/resources/views/layout/breadcrumb.blade.php @@ -4,7 +4,9 @@

- @if (Route::currentRouteName() === "pasien.index") + @if (Route::currentRouteName() === "registrasi.index") + Registrasi + @elseif (Route::currentRouteName() === "pasien.index") Pasien @elseif (Route::currentRouteName() === "asuransi.index") Asuransi diff --git a/resources/views/layout/script.blade.php b/resources/views/layout/script.blade.php index 86f33a2..edd40e0 100644 --- a/resources/views/layout/script.blade.php +++ b/resources/views/layout/script.blade.php @@ -51,6 +51,10 @@ {{-- Toastr --}} + + + + +@endpush diff --git a/resources/views/module/pasien/index.blade.php b/resources/views/module/pasien/index.blade.php index ed967c3..e032cc1 100644 --- a/resources/views/module/pasien/index.blade.php +++ b/resources/views/module/pasien/index.blade.php @@ -5,56 +5,123 @@
-
- Unduh Excel - Unduh PDF - -
-
+ + @php + $no = 1; + @endphp + @foreach ($pasien as $data) - - + + + + - - - - - - - - - - - - - - - - + + {{-- Modal Detail --}} + + + {{-- Modal Edit --}} + + @endforeach
No NamaNIK Tgl Lahir Jenis Kelamin Action
1Internet - Explorer 4.0 + {{ $no++ }}{{ $data->nama }}{{ $data->nik }}{{ $data->tgl_lahir }} + @if ($data->jenis_kelamin === "male") + Laki-laki + @else + Perempuan + @endif
- +
2Internet - Explorer 5.0 - Win 95+
3Internet - Explorer 6 - Win 98+
@@ -115,7 +184,7 @@ {{-- Modal Add --}}