update claim management

This commit is contained in:
2023-09-28 17:28:22 +07:00
parent 0fd79b8284
commit 601a8e5aff
8 changed files with 69 additions and 26 deletions

View File

@@ -6,6 +6,7 @@ use App\Events\ClaimRequested;
use App\Helpers\Helper; use App\Helpers\Helper;
use App\Models\File; use App\Models\File;
use App\Models\Member; use App\Models\Member;
use App\Models\ClaimRequest;
use App\Services\ClaimRequestService; use App\Services\ClaimRequestService;
use Illuminate\Contracts\Support\Renderable; use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@@ -17,6 +18,7 @@ class ClaimRequestController extends Controller
* Display a listing of the resource. * Display a listing of the resource.
* @return Renderable * @return Renderable
*/ */
private static $code_prefix = 'CRQ-C';
public function index() public function index()
{ {
return view('client::index'); return view('client::index');
@@ -42,9 +44,9 @@ class ClaimRequestController extends Controller
'member_id' => 'required', 'member_id' => 'required',
'service_code' => 'required|in:OP,IP' 'service_code' => 'required|in:OP,IP'
]); ]);
$code = $this->getNextCode();
$member = Member::find($request->member_id); $member = Member::find($request->member_id);
$newClaimRequest = ClaimRequestService::storeClaimRequest(member: $member, paymentType: 'reimbursement', serviceCode: $request->service_code); $newClaimRequest = ClaimRequestService::storeClaimRequest(code: $code, member: $member, paymentType: 'reimbursement', serviceCode: $request->service_code);
ClaimRequested::dispatch($newClaimRequest); ClaimRequested::dispatch($newClaimRequest);
@@ -144,4 +146,20 @@ class ClaimRequestController extends Controller
{ {
// //
} }
public static function getNextCode()
{
$last_number = ClaimRequest::withTrashed()->max('code');
$next_number = empty($last_number) ? 1 : ((int) explode('-', $last_number)[2] + 1);
return self::makeCode($next_number);
}
public static function makeCode($next_number)
{
// Pastikan $next_number adalah integer positif
$next_number = max(1, (int) $next_number);
// Menghasilkan kode dengan format yang diinginkan
return self::$code_prefix . '-' . str_pad($next_number, 5, '0', STR_PAD_LEFT);
}
} }

View File

@@ -23,6 +23,7 @@ class ClaimRequestController extends Controller
* Display a listing of the resource. * Display a listing of the resource.
* @return Renderable * @return Renderable
*/ */
private static $code_prefix = 'CRQ-H';
public function index(request $request) public function index(request $request)
{ {
$claimRequests = ClaimRequest::query() $claimRequests = ClaimRequest::query()
@@ -64,9 +65,9 @@ class ClaimRequestController extends Controller
'member_id' => 'required', 'member_id' => 'required',
'service_code' => 'required|in:OP,IP' 'service_code' => 'required|in:OP,IP'
]); ]);
$code = $this->getNextCode();
$member = Member::find($request->member_id); $member = Member::find($request->member_id);
$newClaimRequest = ClaimRequestService::storeClaimRequest(member: $member, paymentType: 'reimbursement', serviceCode: $request->service_code); $newClaimRequest = ClaimRequestService::storeClaimRequest(code: $code, member: $member, paymentType: 'reimbursement', serviceCode: $request->service_code);
ClaimRequested::dispatch($newClaimRequest); ClaimRequested::dispatch($newClaimRequest);
@@ -191,4 +192,20 @@ class ClaimRequestController extends Controller
return $claimRequest; return $claimRequest;
} }
public static function getNextCode()
{
$last_number = ClaimRequest::withTrashed()->max('code');
$next_number = empty($last_number) ? 1 : ((int) explode('-', $last_number)[2] + 1);
return self::makeCode($next_number);
}
public static function makeCode($next_number)
{
// Pastikan $next_number adalah integer positif
$next_number = max(1, (int) $next_number);
// Menghasilkan kode dengan format yang diinginkan
return self::$code_prefix . '-' . str_pad($next_number, 5, '0', STR_PAD_LEFT);
}
} }

View File

@@ -121,9 +121,9 @@ class CorporateController extends Controller
$services = [ $services = [
[ [
'id' => 1, 'id' => 1,
'name' => 'Out Patient', 'name' => 'Outpatient',
'code' => 'OP', 'code' => 'OP',
'description' => 'Out Patient', 'description' => 'Outpatient',
], ],
[ [
'id' => 2, 'id' => 2,

View File

@@ -33,7 +33,7 @@ class Claim extends Model
]; ];
protected $hidden = [ protected $hidden = [
'created_at', // 'created_at',
'updated_at', 'updated_at',
'deleted_at', 'deleted_at',
'created_by', 'created_by',

View File

@@ -14,7 +14,8 @@ class ClaimRequest extends Model
{ {
use HasFactory, SoftDeletes, Blameable; use HasFactory, SoftDeletes, Blameable;
protected static $code_prefix = 'CRQ'; // protected static $code_prefix_hospital = 'CRQ-H';
// protected static $code_prefix_client = 'CRQ-R';
public $fillable = [ public $fillable = [
'uuid', 'uuid',
@@ -24,7 +25,8 @@ class ClaimRequest extends Model
'service_code', 'service_code',
'policy_id', 'policy_id',
'status', 'status',
'claim_id' 'claim_id',
'code'
]; ];
protected $hidden = [ protected $hidden = [
@@ -59,7 +61,7 @@ class ClaimRequest extends Model
static::creating(function ($model) { static::creating(function ($model) {
try { try {
$model->uuid = (string) Str::orderedUuid(); // generate uuid $model->uuid = (string) Str::orderedUuid(); // generate uuid
$model->code = self::getNextCode(); // $model->code = self::getNextCode();
} catch (\Exception $e) { } catch (\Exception $e) {
abort(500, $e->getMessage()); abort(500, $e->getMessage());
} }
@@ -113,18 +115,18 @@ class ClaimRequest extends Model
}); });
} }
public static function getNextCode() // public static function getNextCode()
{ // {
$last_number = self::withTrashed()->max('code'); // $last_number = self::withTrashed()->max('code');
$next_number = empty($last_number) ? 1 : ((int) explode('-', $last_number)[1] + 1); // $next_number = empty($last_number) ? 1 : ((int) explode('-', $last_number)[1] + 1);
return self::makeCode($next_number); // return self::makeCode($next_number);
} // }
public static function makeCode($next_number) // public static function makeCode($next_number)
{ // {
return (string) self::$code_prefix .'-'. str_pad($next_number, 5, 0, STR_PAD_LEFT); // return (string) self::$code_prefix .'-'. str_pad($next_number, 5, 0, STR_PAD_LEFT);
} // }
public function claim() public function claim()
{ {

View File

@@ -14,12 +14,13 @@ use Str;
class ClaimRequestService{ class ClaimRequestService{
public static function storeClaimRequest($member, $paymentType, $serviceCode, $submissionDate = null, $status = 'requested') public static function storeClaimRequest($code, $member, $paymentType, $serviceCode, $submissionDate = null, $status = 'requested')
{ {
try { try {
DB::beginTransaction(); DB::beginTransaction();
$claimRequestData = [ $claimRequestData = [
'code' => $code,
'member_id' => $member->id, 'member_id' => $member->id,
'submission_date' => $submissionDate ?? now(), 'submission_date' => $submissionDate ?? now(),
'status' => $status, 'status' => $status,

View File

@@ -115,7 +115,7 @@ const DialogRequestLog = ({ openDialog, setOpenDialog, data }: MuiDialogProps) =
setSubmitLoading(true); setSubmitLoading(true);
const formData = makeFormData({ const formData = makeFormData({
member_id: data.id, member_id: data.memberId,
result_files: fileHasilPenunjangs, result_files: fileHasilPenunjangs,
diagnosa_files: fileDiagnosas, diagnosa_files: fileDiagnosas,
kondisi_files: fileKondisis, kondisi_files: fileKondisis,

View File

@@ -35,6 +35,7 @@ import EditRoundedIcon from '@mui/icons-material/EditRounded';
import { Chip } from '@mui/material'; import { Chip } from '@mui/material';
import Iconify from '@/components/Iconify'; import Iconify from '@/components/Iconify';
import { enqueueSnackbar } from 'notistack'; import { enqueueSnackbar } from 'notistack';
import { fDate } from '../../utils/formatTime';
export default function List() { export default function List() {
const [searchParams, setSearchParams] = useSearchParams(); const [searchParams, setSearchParams] = useSearchParams();
@@ -168,13 +169,14 @@ export default function List() {
return ( return (
<React.Fragment> <React.Fragment>
<TableRow sx={{ '& > *': { borderBottom: 'unset' } }}> <TableRow sx={{ '& > *': { borderBottom: 'unset' } }}>
<TableCell> {/* <TableCell>
<IconButton aria-label="expand row" size="small" onClick={() => setOpen(!open)}> <IconButton aria-label="expand row" size="small" onClick={() => setOpen(!open)}>
{open ? <KeyboardArrowDownIcon /> : <KeyboardArrowRightIcon />} {open ? <KeyboardArrowDownIcon /> : <KeyboardArrowRightIcon />}
</IconButton> </IconButton>
</TableCell> </TableCell> */}
<TableCell align="left">{row.claim_request?.code}</TableCell> <TableCell align="left">{row.claim_request?.code}</TableCell>
{/* <TableCell align="left">{row.code}</TableCell> */} {/* <TableCell align="left">{row.code}</TableCell> */}
<TableCell align="left">{fDate(row.created_at)}</TableCell>
<TableCell align="left">{row.member?.full_name}</TableCell> <TableCell align="left">{row.member?.full_name}</TableCell>
<TableCell align="left">{row.plan?.code}</TableCell> <TableCell align="left">{row.plan?.code}</TableCell>
<TableCell align="left">{row.claim_request?.service?.name}</TableCell> <TableCell align="left">{row.claim_request?.service?.name}</TableCell>
@@ -230,10 +232,13 @@ export default function List() {
{/* ------------------ TABLE HEADER ------------------ */} {/* ------------------ TABLE HEADER ------------------ */}
<TableBody> <TableBody>
<TableRow> <TableRow>
<TableCell style={headStyle} align="left" /> {/* <TableCell style={headStyle} align="left" /> */}
<TableCell style={headStyle} align="left"> <TableCell style={headStyle} align="left">
Code Request Code Request
</TableCell> </TableCell>
<TableCell style={headStyle} align="left">
Date
</TableCell>
{/* <TableCell style={headStyle} align="left"> {/* <TableCell style={headStyle} align="left">
Code Claim Code Claim
</TableCell> */} </TableCell> */}