update claim management
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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',
|
||||||
|
|||||||
@@ -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()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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,
|
||||||
@@ -27,7 +28,7 @@ class ClaimRequestService{
|
|||||||
'service_code' => $serviceCode,
|
'service_code' => $serviceCode,
|
||||||
'policy_id' => $member->currentPolicy->id ?? null,
|
'policy_id' => $member->currentPolicy->id ?? null,
|
||||||
];
|
];
|
||||||
|
|
||||||
$claimRequest = ClaimRequest::create($claimRequestData);
|
$claimRequest = ClaimRequest::create($claimRequestData);
|
||||||
|
|
||||||
DB::commit();
|
DB::commit();
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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> */}
|
||||||
|
|||||||
Reference in New Issue
Block a user