transaksi
This commit is contained in:
parent
17278441a7
commit
ced9b41539
@ -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.');
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
@ -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'));
|
||||
}
|
||||
|
||||
@ -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'));
|
||||
}
|
||||
|
||||
|
||||
@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
27
app/Models/AsuransiTindakan.php
Normal file
27
app/Models/AsuransiTindakan.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class AsuransiTindakan extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'asuransi_tindakan';
|
||||
|
||||
protected $fillable = [
|
||||
'created_at',
|
||||
'created_by',
|
||||
'updated_at',
|
||||
'updated_by',
|
||||
'deleted_at',
|
||||
'deleted_by',
|
||||
|
||||
'id_asuransi',
|
||||
'id_tindakan',
|
||||
'cover_type',
|
||||
'cover_percentage'
|
||||
];
|
||||
}
|
||||
@ -20,6 +20,7 @@ class Pasien extends Model
|
||||
'updated_by',
|
||||
|
||||
'nama',
|
||||
'nik',
|
||||
'tgl_lahir',
|
||||
'jenis_kelamin',
|
||||
];
|
||||
|
||||
@ -26,6 +26,7 @@ class Registrasi extends Model
|
||||
'no_asuransi',
|
||||
'id_pegawai',
|
||||
'id_ruang_pelayanan',
|
||||
'status_tindakan',
|
||||
];
|
||||
|
||||
public function pasien() : BelongsTo
|
||||
|
||||
@ -21,6 +21,9 @@ class Transaksi extends Model
|
||||
'id_registrasi',
|
||||
'id_tindakan',
|
||||
'jml_tindakan',
|
||||
'potongan',
|
||||
'subtotal',
|
||||
'total',
|
||||
'id_pegawai',
|
||||
];
|
||||
|
||||
|
||||
@ -18,6 +18,7 @@ return new class extends Migration
|
||||
$table->timestamps();
|
||||
|
||||
$table->string('nama', 100);
|
||||
$table->string('nik', 16)->unique();
|
||||
$table->date('tgl_lahir');
|
||||
$table->enum('jenis_kelamin', ['male', 'female']);
|
||||
});
|
||||
|
||||
@ -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');
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('asuransi_tindakan', function (Blueprint $table) {
|
||||
$table->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');
|
||||
}
|
||||
};
|
||||
@ -4,7 +4,9 @@
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1 class="m-0">
|
||||
@if (Route::currentRouteName() === "pasien.index")
|
||||
@if (Route::currentRouteName() === "registrasi.index")
|
||||
Registrasi
|
||||
@elseif (Route::currentRouteName() === "pasien.index")
|
||||
Pasien
|
||||
@elseif (Route::currentRouteName() === "asuransi.index")
|
||||
Asuransi
|
||||
|
||||
@ -51,6 +51,10 @@
|
||||
|
||||
{{-- Toastr --}}
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js"></script>
|
||||
|
||||
<!-- Select2 -->
|
||||
<script src="{{ asset('plugins/select2/js/select2.full.min.js') }}"></script>
|
||||
|
||||
<script>
|
||||
@if(Session::has('message'))
|
||||
toastr.options =
|
||||
|
||||
@ -44,6 +44,15 @@
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="{{ route('registrasi.index') }}" class="nav-link {{ request()->is('registrasi') ? 'active' : '' }}">
|
||||
<i class="nav-icon fas fa-copy"></i>
|
||||
<p>
|
||||
Registrasi
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a href="{{ route('pasien.index') }}" class="nav-link {{ request()->is('pasien') ? 'active' : '' }}">
|
||||
<i class="nav-icon fas fa-copy"></i>
|
||||
|
||||
@ -26,3 +26,7 @@
|
||||
|
||||
{{-- Toastr --}}
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css">
|
||||
|
||||
<!-- Select2 -->
|
||||
<link rel="stylesheet" href="{{ asset('plugins/select2/css/select2.min.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('plugins/select2-bootstrap4-theme/select2-bootstrap4.min.css') }}">
|
||||
|
||||
@ -6,8 +6,6 @@
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<a href="#" class="btn btn-success"><i class="fas fa-file-excel"></i>Unduh Excel</a>
|
||||
<a href="#" class="btn btn-danger"><i class="fas fa-file-pdf"></i>Unduh PDF</a>
|
||||
<button type="button" class="btn btn-primary float-right" data-toggle="modal" data-target="#modal-add"><i class="fas fa-plus"></i>Data</button>
|
||||
</div>
|
||||
<!-- /.card-header -->
|
||||
@ -30,8 +28,8 @@
|
||||
<td>{{ $data->nama }}</td>
|
||||
<td>
|
||||
<div class="row">
|
||||
{{-- <button type="button" class="btn btn-primary btn-sm mr-1 mt-1" title="Detail" data-toggle="modal" data-target="#modal-detail"><i class="fas fa-info-circle"></i></button> --}}
|
||||
<a href="#" class="btn btn-secondary btn-sm mr-1 mt-1" title="Edit" data-toggle="modal" data-target="#modal-edit{{ $data->id }}"><i class="fas fa-edit"></i></a>
|
||||
<a href="{{ route('asuransi.mapping.form', $data->id) }}" target="BLANK" class="btn btn-warning btn-sm mr-1 mt-1" title="Mapping Tindakan">Mapping Tindakan</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
113
resources/views/module/asuransi/mapping_tindakan.blade.php
Normal file
113
resources/views/module/asuransi/mapping_tindakan.blade.php
Normal file
@ -0,0 +1,113 @@
|
||||
@extends('layout.main')
|
||||
|
||||
@section('content')
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Mapping Asuransi - Tindakan</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="{{ route('asuransi.mapping') }}" method="POST">
|
||||
@csrf
|
||||
<h3>{{ $dataAsuransi->nama }}</h3>
|
||||
<input name="id_asuransi" type="hidden" value="{{ $dataAsuransi->id }}">
|
||||
|
||||
<div class="table-responsive mt-4">
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><input type="checkbox" id="checkAll"></th>
|
||||
<th>Nama Tindakan</th>
|
||||
<th>Tarif Normal</th>
|
||||
<th>Cover Type</th>
|
||||
<th>Cover Percentage (%)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($tindakan as $td)
|
||||
@php
|
||||
$mapped = $tindakanMapping[$td->id] ?? null;
|
||||
@endphp
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox"
|
||||
name="tindakan[{{ $td->id }}][selected]"
|
||||
value="1"
|
||||
{{ $mapped ? 'disabled checked' : '' }}>
|
||||
</td>
|
||||
<td>{{ $td->nama }}</td>
|
||||
<td>{{ number_format($td->tarif) }}</td>
|
||||
<td>
|
||||
@if ($mapped)
|
||||
{{ ucfirst($mapped->cover_type) }}
|
||||
@else
|
||||
<select name="tindakan[{{ $td->id }}][cover_type]"
|
||||
class="form-control cover-type-select"
|
||||
data-id="{{ $td->id }}">
|
||||
<option value="">Pilih</option>
|
||||
<option value="full">Full</option>
|
||||
<option value="partial">Partial</option>
|
||||
<option value="none">None</option>
|
||||
</select>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@if ($mapped)
|
||||
{{ $mapped->cover_percentage ?? '-' }}%
|
||||
@else
|
||||
<input type="number"
|
||||
name="tindakan[{{ $td->id }}][cover_percentage]"
|
||||
class="form-control cover-percentage-input"
|
||||
placeholder="%">
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="mt-4 text-right">
|
||||
<button type="submit" class="btn btn-primary">Simpan Mapping</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@push('script')
|
||||
<script>
|
||||
document.getElementById('checkAll').addEventListener('change', function () {
|
||||
let checkboxes = document.querySelectorAll('input[type="checkbox"][name$="[selected]"]:not([disabled])');
|
||||
checkboxes.forEach(checkbox => {
|
||||
checkbox.checked = this.checked;
|
||||
});
|
||||
});
|
||||
|
||||
document.querySelectorAll('.cover-type-select').forEach(select => {
|
||||
select.addEventListener('change', function () {
|
||||
let selectedCoverType = this.value;
|
||||
let tindakanId = this.dataset.id;
|
||||
let percentageInput = document.querySelector('input[name="tindakan[' + tindakanId + '][cover_percentage]"]');
|
||||
|
||||
if (selectedCoverType === 'full') {
|
||||
percentageInput.value = 100;
|
||||
percentageInput.setAttribute('readonly', true);
|
||||
} else if (selectedCoverType === 'partial') {
|
||||
percentageInput.value = '';
|
||||
percentageInput.removeAttribute('readonly');
|
||||
} else if (selectedCoverType === 'none') {
|
||||
percentageInput.value = 0;
|
||||
percentageInput.setAttribute('readonly', true);
|
||||
} else {
|
||||
percentageInput.value = '';
|
||||
percentageInput.removeAttribute('readonly');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
@ -5,56 +5,123 @@
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<a href="#" class="btn btn-success"><i class="fas fa-file-excel"></i>Unduh Excel</a>
|
||||
<a href="#" class="btn btn-danger"><i class="fas fa-file-pdf"></i>Unduh PDF</a>
|
||||
<button type="button" class="btn btn-primary float-right" data-toggle="modal" data-target="#modal-add">Register</button>
|
||||
</div>
|
||||
<!-- /.card-header -->
|
||||
<div class="card-body">
|
||||
<table id="pasien_tb" class="table table-bordered table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>No</th>
|
||||
<th>Nama</th>
|
||||
<th>NIK</th>
|
||||
<th>Tgl Lahir</th>
|
||||
<th>Jenis Kelamin</th>
|
||||
<th>Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@php
|
||||
$no = 1;
|
||||
@endphp
|
||||
@foreach ($pasien as $data)
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>Internet
|
||||
Explorer 4.0
|
||||
<td>{{ $no++ }}</td>
|
||||
<td>{{ $data->nama }}</td>
|
||||
<td>{{ $data->nik }}</td>
|
||||
<td>{{ $data->tgl_lahir }}</td>
|
||||
<td>
|
||||
@if ($data->jenis_kelamin === "male")
|
||||
Laki-laki
|
||||
@else
|
||||
Perempuan
|
||||
@endif
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
<div class="row">
|
||||
<button type="button" class="btn btn-primary btn-sm mr-1 mt-1" title="Detail" data-toggle="modal" data-target="#modal-detail"><i class="fas fa-info-circle"></i></button>
|
||||
<button type="button" class="btn btn-info btn-sm mr-1 mt-1" title="Detail" data-toggle="modal" data-target="#modal-detail{{ $data->id }}"><i class="fas fa-info-circle"></i></button>
|
||||
<a href="#" class="btn btn-secondary btn-sm mr-1 mt-1" title="Edit" data-toggle="modal" data-target="#modal-edit"><i class="fas fa-edit"></i></a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2</td>
|
||||
<td>Internet
|
||||
Explorer 5.0
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>Win 95+</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3</td>
|
||||
<td>Internet
|
||||
Explorer 6
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>Win 98+</td>
|
||||
</tr>
|
||||
|
||||
{{-- Modal Detail --}}
|
||||
<div class="modal fade" id="modal-detail{{ $data->id }}">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Detail Rekam Medis Pasien</h4>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-md-4"><b>Tgl Registrasi</b></div>
|
||||
<div class="col-md-1">:</div>
|
||||
<div class="col-md-7">{{ $data->registrasi[0]['tgl_registrasi'] }}</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4"><b>Kode Registrasi</b></div>
|
||||
<div class="col-md-1">:</div>
|
||||
<div class="col-md-7">{{ $data->registrasi[0]['code'] }}</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4"><b>Nama</b></div>
|
||||
<div class="col-md-1">:</div>
|
||||
<div class="col-md-7">{{ $data->nama }}</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4"><b>Tgl Lahir</b></div>
|
||||
<div class="col-md-1">:</div>
|
||||
<div class="col-md-7">{{ $data->tgl_lahir }}</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4"><b>Jenis Kelamin</b></div>
|
||||
<div class="col-md-1">:</div>
|
||||
<div class="col-md-7">
|
||||
@if ($data->jenis_kelamin === "male")
|
||||
Laki-laki
|
||||
@else
|
||||
Perempuan
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4"><b>Asuransi</b></div>
|
||||
<div class="col-md-1">:</div>
|
||||
<div class="col-md-7">{{ $data->registrasi[0]->asuransi->nama ?? '-' }}</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4"><b>No. Asuransi</b></div>
|
||||
<div class="col-md-1">:</div>
|
||||
<div class="col-md-7">{{ $data->registrasi[0]['no_asuransi'] ?? '-'}}</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4"><b>Ruang Pelayanan</b></div>
|
||||
<div class="col-md-1">:</div>
|
||||
<div class="col-md-7">{{ $data->registrasi[0]->ruangPelayanan->nama}}</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4"><b>Pegawai</b></div>
|
||||
<div class="col-md-1">:</div>
|
||||
<div class="col-md-7">{{ $data->registrasi[0]->pegawai->nama ?? '-' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer justify-content-between">
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.modal-content -->
|
||||
</div>
|
||||
<!-- /.modal-dialog -->
|
||||
</div>
|
||||
<!-- /.modal -->
|
||||
|
||||
|
||||
{{-- Modal Edit --}}
|
||||
<div class="modal fade" id="modal-edit">
|
||||
@ -106,6 +173,8 @@
|
||||
<!-- /.modal-dialog -->
|
||||
</div>
|
||||
<!-- /.modal -->
|
||||
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@ -115,7 +184,7 @@
|
||||
|
||||
{{-- Modal Add --}}
|
||||
<div class="modal fade" id="modal-add">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Register Pasien</h4>
|
||||
@ -123,14 +192,14 @@
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form action="#" method="POST" enctype="multipart/form-data">
|
||||
<form action="{{ route('pasien.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="name">Nama</label>
|
||||
<input class="form-control" type="text" name="name" required>
|
||||
<label for="nama">Nama</label>
|
||||
<input class="form-control" type="text" name="nama" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
@ -154,9 +223,10 @@
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="ruang_pelayanan">Ruangan Pelayanan</label>
|
||||
<select name="ruang_pelayanan" class="form-control" style="width: 100%;">
|
||||
<option value="">Ruang 1.a</option>
|
||||
<option value="">Ruang 1.b</option>
|
||||
<select name="ruang_pelayanan" class="form-control select2bs4" style="width: 100%;">
|
||||
@foreach ($ruangPelayanan as $rp)
|
||||
<option value="{{ $rp->id }}">{{ $rp->nama }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@ -166,9 +236,11 @@
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="asuransi">Asuransi</label>
|
||||
<select name="asuransi" class="form-control" style="width: 100%;">
|
||||
<option value="bpjs">BPJS</option>
|
||||
<option value="manulife">Manulife</option>
|
||||
<input type="checkbox" id="asuransi_checkbox" class="mr-2">
|
||||
<select name="asuransi" class="form-control select2bs4" style="width: 100%;" id="asuransi_select" disabled>
|
||||
@foreach ($asuransi as $asr)
|
||||
<option value="{{ $asr->id }}">{{ $asr->nama }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@ -176,7 +248,7 @@
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="no_asuransi">No. Asuransi</label>
|
||||
<input class="form-control" type="text" name="no_asuransi">
|
||||
<input class="form-control" type="text" name="no_asuransi" id="no_asuransi" disabled>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -207,6 +279,29 @@
|
||||
"autoWidth": false,
|
||||
"ordering": false,
|
||||
});
|
||||
|
||||
$('.select2bs4').select2({
|
||||
theme: 'bootstrap4'
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
document.getElementById('asuransi_checkbox').addEventListener('change', function() {
|
||||
var asuransiSelect = document.getElementById('asuransi_select');
|
||||
var noAsuransiInput = document.getElementById('no_asuransi');
|
||||
|
||||
if (this.checked) {
|
||||
asuransiSelect.disabled = false;
|
||||
noAsuransiInput.disabled = false;
|
||||
asuransiSelect.setAttribute('required', 'required');
|
||||
noAsuransiInput.setAttribute('required', 'required');
|
||||
} else {
|
||||
asuransiSelect.disabled = true;
|
||||
noAsuransiInput.disabled = true;
|
||||
asuransiSelect.removeAttribute('required');
|
||||
noAsuransiInput.removeAttribute('required');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
250
resources/views/module/registrasi/index.blade.php
Normal file
250
resources/views/module/registrasi/index.blade.php
Normal file
@ -0,0 +1,250 @@
|
||||
@extends('layout.main')
|
||||
@section('content')
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<a href="#" class="btn btn-success"><i class="fas fa-file-excel"></i>Unduh Excel</a>
|
||||
<a href="#" class="btn btn-danger"><i class="fas fa-file-pdf"></i>Unduh PDF</a>
|
||||
<button type="button" class="btn btn-primary float-right" data-toggle="modal" data-target="#modal-add">Registrasi</button>
|
||||
</div>
|
||||
<!-- /.card-header -->
|
||||
<div class="card-body">
|
||||
<table id="pasien_tb" class="table table-bordered table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>No</th>
|
||||
<th>Tgl Registrasi</th>
|
||||
<th>Kode Registrasi</th>
|
||||
<th>NIK</th>
|
||||
<th>Nama Pasien</th>
|
||||
<th>Tgl Lahir</th>
|
||||
<th>Jenis Kelamin</th>
|
||||
<th>Ruang Pelayanan</th>
|
||||
<th>Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@php
|
||||
$no = 1;
|
||||
@endphp
|
||||
@foreach ($registrasi as $data)
|
||||
<tr>
|
||||
<td>{{ $no++ }}</td>
|
||||
<td>{{ $data->tgl_registrasi }}</td>
|
||||
<td>{{ $data->code }}</td>
|
||||
<td>{{ $data->pasien->nik }}</td>
|
||||
<td>{{ $data->pasien->nama }}</td>
|
||||
<td>{{ $data->pasien->tgl_lahir }}</td>
|
||||
<td>
|
||||
@if ($data->pasien->jenis_kelamin === "male")
|
||||
Laki-laki
|
||||
@else
|
||||
Perempuan
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ $data->ruangPelayanan->nama}}</td>
|
||||
<td>
|
||||
<div class="row">
|
||||
<button type="button" class="btn btn-info btn-sm mr-1 mt-1" title="Detail" data-toggle="modal" data-target="#modal-detail{{ $data->id }}"><i class="fas fa-info-circle"></i></button>
|
||||
@if ($data->status_tindakan === "done")
|
||||
<button class="btn btn-warning btn-sm mr-1 mt-1" title="Tindakan" disabled><i class="fas fa-stethoscope"></i></button>
|
||||
@else
|
||||
<a href="{{ route('transaksi.tindakan', $data->id) }}" target="BLANK" class="btn btn-warning btn-sm mr-1 mt-1" title="Tindakan"><i class="fas fa-stethoscope"></i></a>
|
||||
@endif
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- /.card-body -->
|
||||
</div>
|
||||
<!-- /.card -->
|
||||
|
||||
{{-- Modal Add --}}
|
||||
<div class="modal fade" id="modal-add">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Register Pasien</h4>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<form action="{{ route('registrasi.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="nik">NIK</label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" type="text" name="nik" id="nik" maxlength="16" required>
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-secondary" type="button" id="search-nik-btn">
|
||||
<i class="fas fa-search"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="nama">Nama</label>
|
||||
<input class="form-control" type="text" name="nama" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="tgl_lahir">Tgl Lahir</label>
|
||||
<input class="form-control" type="date" name="tgl_lahir" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="jenis_kelamin">Jenis Kelamin</label>
|
||||
<select name="jenis_kelamin" class="form-control" style="width: 100%;" required>
|
||||
<option value="male">Laki-laki</option>
|
||||
<option value="female">Perempuan</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="asuransi">Asuransi</label>
|
||||
<input type="checkbox" id="asuransi_checkbox" class="mr-2">
|
||||
<select name="asuransi" class="form-control select2bs4" style="width: 100%;" id="asuransi_select" disabled>
|
||||
<option value="">Pilih Asuransi</option>
|
||||
@foreach ($asuransi as $asr)
|
||||
<option value="{{ $asr->id }}">{{ $asr->nama }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="no_asuransi">No. Asuransi</label>
|
||||
<input class="form-control" type="text" name="no_asuransi" id="no_asuransi" disabled>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="ruang_pelayanan">Ruangan Pelayanan</label>
|
||||
<select name="ruang_pelayanan" class="form-control select2bs4" style="width: 100%;">
|
||||
@foreach ($ruangPelayanan as $rp)
|
||||
<option value="{{ $rp->id }}">{{ $rp->nama }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer justify-content-between">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Batal</button>
|
||||
<button type="submit" class="btn btn-default">Simpan</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<!-- /.modal-content -->
|
||||
</div>
|
||||
<!-- /.modal-dialog -->
|
||||
</div>
|
||||
<!-- /.modal -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@push('script')
|
||||
<script>
|
||||
$(function () {
|
||||
$("#pasien_tb").DataTable({
|
||||
"responsive": true,
|
||||
"lengthChange": false,
|
||||
"autoWidth": false,
|
||||
"ordering": false,
|
||||
});
|
||||
|
||||
$('.select2bs4').select2({
|
||||
theme: 'bootstrap4'
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
document.getElementById('asuransi_checkbox').addEventListener('change', function() {
|
||||
var asuransiSelect = document.getElementById('asuransi_select');
|
||||
var noAsuransiInput = document.getElementById('no_asuransi');
|
||||
|
||||
if (this.checked) {
|
||||
asuransiSelect.disabled = false;
|
||||
noAsuransiInput.disabled = false;
|
||||
asuransiSelect.setAttribute('required', 'required');
|
||||
noAsuransiInput.setAttribute('required', 'required');
|
||||
} else {
|
||||
asuransiSelect.disabled = true;
|
||||
noAsuransiInput.disabled = true;
|
||||
asuransiSelect.removeAttribute('required');
|
||||
noAsuransiInput.removeAttribute('required');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#search-nik-btn').click(function() {
|
||||
var nik = $('#nik').val();
|
||||
|
||||
if (nik.length !== 16) {
|
||||
alert('NIK harus 16 digit.');
|
||||
return;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: "{{ route('pasien.cek_nik') }}",
|
||||
method: 'GET',
|
||||
data: { nik: nik },
|
||||
success: function(response) {
|
||||
if (response.success) {
|
||||
$('input[name="nama"]').val(response.pasien.nama).prop('readonly', true);
|
||||
$('input[name="tgl_lahir"]').val(response.pasien.tgl_lahir).prop('readonly', true);
|
||||
$('select[name="jenis_kelamin"]').val(response.pasien.jenis_kelamin).prop('disabled', true);
|
||||
} else {
|
||||
$('input[name="nama"]').val('').prop('readonly', false);
|
||||
$('input[name="tgl_lahir"]').val('').prop('readonly', false);
|
||||
$('select[name="jenis_kelamin"]').val('').prop('disabled', false);
|
||||
alert('NIK tidak ditemukan!');
|
||||
}
|
||||
},
|
||||
error: function(xhr) {
|
||||
console.error(xhr.responseText);
|
||||
alert('Terjadi kesalahan saat mencari data NIK.');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('#nik').on('input', function() {
|
||||
$('input[name="nama"]').prop('readonly', false);
|
||||
$('input[name="tgl_lahir"]').prop('readonly', false);
|
||||
$('select[name="jenis_kelamin"]').prop('disabled', false);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
@endpush
|
||||
@endsection
|
||||
@ -6,8 +6,6 @@
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<a href="#" class="btn btn-success"><i class="fas fa-file-excel"></i>Unduh Excel</a>
|
||||
<a href="#" class="btn btn-danger"><i class="fas fa-file-pdf"></i>Unduh PDF</a>
|
||||
<button type="button" class="btn btn-primary float-right" data-toggle="modal" data-target="#modal-add"><i class="fas fa-plus"></i>Data</button>
|
||||
</div>
|
||||
<!-- /.card-header -->
|
||||
|
||||
@ -6,8 +6,6 @@
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<a href="#" class="btn btn-success"><i class="fas fa-file-excel"></i>Unduh Excel</a>
|
||||
<a href="#" class="btn btn-danger"><i class="fas fa-file-pdf"></i>Unduh PDF</a>
|
||||
<button type="button" class="btn btn-primary float-right" data-toggle="modal" data-target="#modal-add"><i class="fas fa-plus"></i>Data</button>
|
||||
</div>
|
||||
<!-- /.card-header -->
|
||||
|
||||
193
resources/views/module/transaksi/tindakan.blade.php
Normal file
193
resources/views/module/transaksi/tindakan.blade.php
Normal file
@ -0,0 +1,193 @@
|
||||
@extends('layout.main')
|
||||
|
||||
@section('content')
|
||||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card card-info p-3 mb-4">
|
||||
<h5>Informasi Pasien</h5>
|
||||
<div class="row">
|
||||
<div class="col-md-4"><b>Tgl Registrasi:</b> {{ $dataRegistrasi->tgl_registrasi }}</div>
|
||||
<div class="col-md-4"><b>Kode Registrasi:</b> {{ $dataRegistrasi->code }}</div>
|
||||
<div class="col-md-4"><b>Nama:</b> {{ $dataRegistrasi->pasien->nama }}</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-4"><b>Tgl Lahir:</b> {{ $dataRegistrasi->pasien->tgl_lahir }}</div>
|
||||
<div class="col-md-4"><b>Jenis Kelamin:</b>
|
||||
{{ $dataRegistrasi->pasien->jenis_kelamin === "male" ? "Laki-laki" : "Perempuan" }}
|
||||
</div>
|
||||
<div class="col-md-4"><b>Asuransi:</b> {{ $dataRegistrasi->asuransi->nama ?? '-' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form action="{{ route('transaksi.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="card card-primary p-3 mb-4">
|
||||
<h5>Pilih Tindakan Pasien</h5>
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-8">
|
||||
<input name="id_registrasi" type="hidden" value="{{ $dataRegistrasi->id }}">
|
||||
|
||||
<select name="tindakan[]" id="pilihTindakan" class="form-control select2bs4" style="width: 100%;">
|
||||
<option value="">-- Pilih Tindakan --</option>
|
||||
@foreach ($tindakan as $td)
|
||||
<option value="{{ $td->id }}" data-tarif="{{ $td->tarif }}">{{ $td->nama }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<button type="button" id="tambahTindakan" class="btn btn-success w-100">Tambah Tindakan</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered" id="tabelTindakan">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>No</th>
|
||||
<th>Nama Tindakan</th>
|
||||
<th>Tarif</th>
|
||||
<th>Jumlah</th>
|
||||
<th>Subtotal</th>
|
||||
<th>Potongan Asuransi</th>
|
||||
<th>Jumlah Potongan</th>
|
||||
<th>Total Akhir</th>
|
||||
<th>Aksi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- Data rows will be added dynamically -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="row mt-3">
|
||||
<div class="col-md-6 offset-md-6">
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th>Subtotal:</th>
|
||||
<td id="subtotal">Rp 0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Total Potongan:</th>
|
||||
<td id="total_potongan">Rp 0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Jumlah yang Harus Dibayar:</th>
|
||||
<td id="total">Rp 0</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-right">
|
||||
<button type="submit" class="btn btn-primary">Simpan</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@push('script')
|
||||
<script>
|
||||
$(function () {
|
||||
$('.select2bs4').select2({ theme: 'bootstrap4' });
|
||||
|
||||
let tindakanList = [];
|
||||
let no = 1;
|
||||
|
||||
const asuransiCover = @json($asuransiTindakan);
|
||||
|
||||
$('#tambahTindakan').on('click', function () {
|
||||
const selected = $('#pilihTindakan option:selected');
|
||||
const idTindakan = selected.val();
|
||||
const nama = selected.text();
|
||||
const tarif = selected.data('tarif');
|
||||
|
||||
if (!idTindakan) return;
|
||||
|
||||
const selectedAsuransi = asuransiCover.find(item => parseInt(item.id_tindakan) === parseInt(idTindakan));
|
||||
const coverPercentage = selectedAsuransi ? selectedAsuransi.cover_percentage : 0;
|
||||
|
||||
tindakanList.push({
|
||||
idTindakan,
|
||||
nama,
|
||||
tarif,
|
||||
coverPercentage,
|
||||
jumlah: 1
|
||||
});
|
||||
|
||||
renderTabel();
|
||||
});
|
||||
|
||||
function renderTabel() {
|
||||
const tbody = $('#tabelTindakan tbody');
|
||||
tbody.empty();
|
||||
|
||||
let subtotal = 0;
|
||||
|
||||
tindakanList.forEach((item, index) => {
|
||||
const sub = item.tarif * item.jumlah;
|
||||
const asuransiDiscount = (sub * item.coverPercentage) / 100;
|
||||
const lastTotal = sub - asuransiDiscount;
|
||||
subtotal += sub;
|
||||
|
||||
tbody.append(`
|
||||
<tr>
|
||||
<td>${index + 1}</td>
|
||||
<td>${item.nama}</td>
|
||||
<td>${formatRupiah(item.tarif)}</td>
|
||||
<td><input type="number" name="jumlah_tindakan[]" class="form-control jumlahTindakan" value="${item.jumlah}" data-index="${index}" style="width: 60px;" min="1"></td>
|
||||
<td>${formatRupiah(sub)}</td>
|
||||
<td>${item.coverPercentage}%</td>
|
||||
<td>${formatRupiah(asuransiDiscount)}</td>
|
||||
<td>${formatRupiah(lastTotal)}</td>
|
||||
<td><button class="btn btn-danger btn-sm" onclick="hapusTindakan(${index})">Hapus</button></td>
|
||||
</tr>
|
||||
<input type="hidden" name="id_tindakan[]" value="${item.idTindakan}">
|
||||
<input type="hidden" name="tarif[]" value="${item.tarif}">
|
||||
<input type="hidden" name="cover_percentage[]" value="${item.coverPercentage}">
|
||||
<input type="hidden" name="subtotal[]" value="${sub}">
|
||||
<input type="hidden" name="asuransi_discount[]" value="${asuransiDiscount}">
|
||||
<input type="hidden" name="total_akhir[]" value="${lastTotal}">
|
||||
`);
|
||||
});
|
||||
|
||||
const totalAsuransiDiscount = tindakanList.reduce((total, item) => {
|
||||
const sub = item.tarif * item.jumlah;
|
||||
return total + (sub * item.coverPercentage) / 100;
|
||||
}, 0);
|
||||
|
||||
const total = subtotal - totalAsuransiDiscount;
|
||||
|
||||
$('#subtotal').text(`Rp ${formatRupiah(subtotal)}`);
|
||||
$('#total_potongan').text(`Rp ${formatRupiah(totalAsuransiDiscount)}`);
|
||||
$('#total').text(`Rp ${formatRupiah(total)}`);
|
||||
}
|
||||
|
||||
$(document).on('input', '.jumlahTindakan', function () {
|
||||
const index = $(this).data('index');
|
||||
const jumlah = $(this).val();
|
||||
if (jumlah < 1) return;
|
||||
|
||||
tindakanList[index].jumlah = parseInt(jumlah);
|
||||
renderTabel();
|
||||
});
|
||||
|
||||
window.hapusTindakan = function (index) {
|
||||
tindakanList.splice(index, 1);
|
||||
renderTabel();
|
||||
}
|
||||
|
||||
function formatRupiah(angka) {
|
||||
return angka.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
@endpush
|
||||
@endsection
|
||||
@ -4,8 +4,10 @@ use App\Http\Controllers\AsuransiController;
|
||||
use App\Http\Controllers\AuthController;
|
||||
use App\Http\Controllers\DashboardController;
|
||||
use App\Http\Controllers\PasienController;
|
||||
use App\Http\Controllers\RegistrasiController;
|
||||
use App\Http\Controllers\RuangPelayananController;
|
||||
use App\Http\Controllers\TindakanController;
|
||||
use App\Http\Controllers\TransaksiController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
/*
|
||||
@ -31,13 +33,20 @@ Route::middleware('auth:pegawai')->group(function () {
|
||||
// Dashboard
|
||||
Route::get('/dashboard', [DashboardController::class, 'index']);
|
||||
|
||||
Route::get('/registrasi', [RegistrasiController::class, 'index'])->name('registrasi.index');
|
||||
Route::post('/registrasi', [RegistrasiController::class, 'store'])->name('registrasi.store');
|
||||
|
||||
// Pasien
|
||||
Route::get('/pasien', [PasienController::class, 'index'])->name('pasien.index');
|
||||
Route::post('/pasien', [PasienController::class, 'store'])->name('pasien.store');
|
||||
Route::get('/pasien/cek_nik', [PasienController::class, 'cekNik'])->name('pasien.cek_nik');
|
||||
|
||||
// Asuransi
|
||||
Route::get('/asuransi', [AsuransiController::class, 'index'])->name('asuransi.index');
|
||||
Route::post('/asuransi', [AsuransiController::class, 'store'])->name('asuransi.store');
|
||||
Route::put('/asuransi/{asuransi}', [AsuransiController::class, 'update'])->name('asuransi.update');
|
||||
Route::get('/asuransi/mapping_tindakan/{asuransi}', [AsuransiController::class, 'maappingForm'])->name('asuransi.mapping.form');
|
||||
Route::post('/asuransi/mapping_tindakan', [AsuransiController::class, 'mapping'])->name('asuransi.mapping');
|
||||
|
||||
// Ruang Pelayanan
|
||||
Route::get('/ruang_pelayanan', [RuangPelayananController::class, 'index'])->name('ruang_pelayanan.index');
|
||||
@ -48,4 +57,7 @@ Route::middleware('auth:pegawai')->group(function () {
|
||||
Route::get('/tindakan', [TindakanController::class, 'index'])->name('tindakan.index');
|
||||
Route::post('/tindakan', [TindakanController::class, 'store'])->name('tindakan.store');
|
||||
Route::put('/tindakan/{tindakan}', [TindakanController::class, 'update'])->name('tindakan.update');
|
||||
|
||||
Route::get('/tansaksi/tindakan/{registrasi}', [TransaksiController::class, 'tindakanForm'])->name('transaksi.tindakan');
|
||||
Route::post('/transaksi', [TransaksiController::class, 'store'])->name('transaksi.store');
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user