From 601a8e5aff940aecbd1160222c4bad6ea5eccf78 Mon Sep 17 00:00:00 2001 From: Tb Fajri Date: Thu, 28 Sep 2023 17:28:22 +0700 Subject: [PATCH] update claim management --- .../Api/ClaimRequestController.php | 22 +++++++++++++-- .../Api/ClaimRequestController.php | 21 ++++++++++++-- .../Controllers/Api/CorporateController.php | 4 +-- app/Models/Claim.php | 2 +- app/Models/ClaimRequest.php | 28 ++++++++++--------- app/Services/ClaimRequestService.php | 5 ++-- .../sections/dashboard/DialogRequestLog.tsx | 2 +- frontend/dashboard/src/pages/Claims/List.tsx | 11 ++++++-- 8 files changed, 69 insertions(+), 26 deletions(-) diff --git a/Modules/Client/Http/Controllers/Api/ClaimRequestController.php b/Modules/Client/Http/Controllers/Api/ClaimRequestController.php index 1c2ea8e9..c2aacf0b 100644 --- a/Modules/Client/Http/Controllers/Api/ClaimRequestController.php +++ b/Modules/Client/Http/Controllers/Api/ClaimRequestController.php @@ -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); + } } diff --git a/Modules/HospitalPortal/Http/Controllers/Api/ClaimRequestController.php b/Modules/HospitalPortal/Http/Controllers/Api/ClaimRequestController.php index d606cf82..27bd30e3 100644 --- a/Modules/HospitalPortal/Http/Controllers/Api/ClaimRequestController.php +++ b/Modules/HospitalPortal/Http/Controllers/Api/ClaimRequestController.php @@ -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); + } } diff --git a/Modules/Internal/Http/Controllers/Api/CorporateController.php b/Modules/Internal/Http/Controllers/Api/CorporateController.php index 013047ee..e63fb754 100644 --- a/Modules/Internal/Http/Controllers/Api/CorporateController.php +++ b/Modules/Internal/Http/Controllers/Api/CorporateController.php @@ -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, diff --git a/app/Models/Claim.php b/app/Models/Claim.php index d01decbe..88b7b11f 100644 --- a/app/Models/Claim.php +++ b/app/Models/Claim.php @@ -33,7 +33,7 @@ class Claim extends Model ]; protected $hidden = [ - 'created_at', + // 'created_at', 'updated_at', 'deleted_at', 'created_by', diff --git a/app/Models/ClaimRequest.php b/app/Models/ClaimRequest.php index 39533f41..e2bc8194 100644 --- a/app/Models/ClaimRequest.php +++ b/app/Models/ClaimRequest.php @@ -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() { diff --git a/app/Services/ClaimRequestService.php b/app/Services/ClaimRequestService.php index 08c31f1b..2e5428d4 100644 --- a/app/Services/ClaimRequestService.php +++ b/app/Services/ClaimRequestService.php @@ -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(); diff --git a/frontend/client-portal/src/sections/dashboard/DialogRequestLog.tsx b/frontend/client-portal/src/sections/dashboard/DialogRequestLog.tsx index be4fb691..bfae3015 100644 --- a/frontend/client-portal/src/sections/dashboard/DialogRequestLog.tsx +++ b/frontend/client-portal/src/sections/dashboard/DialogRequestLog.tsx @@ -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, diff --git a/frontend/dashboard/src/pages/Claims/List.tsx b/frontend/dashboard/src/pages/Claims/List.tsx index c9ec2143..efd97ca7 100644 --- a/frontend/dashboard/src/pages/Claims/List.tsx +++ b/frontend/dashboard/src/pages/Claims/List.tsx @@ -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 ( *': { borderBottom: 'unset' } }}> - + {/* setOpen(!open)}> {open ? : } - + */} {row.claim_request?.code} {/* {row.code} */} + {fDate(row.created_at)} {row.member?.full_name} {row.plan?.code} {row.claim_request?.service?.name} @@ -230,10 +232,13 @@ export default function List() { {/* ------------------ TABLE HEADER ------------------ */} - + {/* */} Code Request + + Date + {/* Code Claim */}