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\Models\File;
use App\Models\Member;
use App\Models\ClaimRequest;
use App\Services\ClaimRequestService;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
@@ -17,6 +18,7 @@ class ClaimRequestController extends Controller
* Display a listing of the resource.
* @return Renderable
*/
private static $code_prefix = 'CRQ-C';
public function index()
{
return view('client::index');
@@ -42,9 +44,9 @@ class ClaimRequestController extends Controller
'member_id' => 'required',
'service_code' => 'required|in:OP,IP'
]);
$code = $this->getNextCode();
$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);
@@ -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.
* @return Renderable
*/
private static $code_prefix = 'CRQ-H';
public function index(request $request)
{
$claimRequests = ClaimRequest::query()
@@ -64,9 +65,9 @@ class ClaimRequestController extends Controller
'member_id' => 'required',
'service_code' => 'required|in:OP,IP'
]);
$code = $this->getNextCode();
$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);
@@ -191,4 +192,20 @@ class ClaimRequestController extends Controller
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 = [
[
'id' => 1,
'name' => 'Out Patient',
'name' => 'Outpatient',
'code' => 'OP',
'description' => 'Out Patient',
'description' => 'Outpatient',
],
[
'id' => 2,

View File

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

View File

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

View File

@@ -14,12 +14,13 @@ use Str;
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 {
DB::beginTransaction();
$claimRequestData = [
'code' => $code,
'member_id' => $member->id,
'submission_date' => $submissionDate ?? now(),
'status' => $status,
@@ -27,7 +28,7 @@ class ClaimRequestService{
'service_code' => $serviceCode,
'policy_id' => $member->currentPolicy->id ?? null,
];
$claimRequest = ClaimRequest::create($claimRequestData);
DB::commit();

View File

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

View File

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