diff --git a/Modules/HospitalPortal/Http/Controllers/Api/ClaimRequestController.php b/Modules/HospitalPortal/Http/Controllers/Api/ClaimRequestController.php index 2a177d78..332bbbeb 100644 --- a/Modules/HospitalPortal/Http/Controllers/Api/ClaimRequestController.php +++ b/Modules/HospitalPortal/Http/Controllers/Api/ClaimRequestController.php @@ -62,10 +62,11 @@ class ClaimRequestController extends Controller { $request->validate([ 'member_id' => 'required', + 'service_code' => 'required|in:OP,IP' ]); $member = Member::find($request->member_id); - $newClaimRequest = ClaimRequestService::storeClaimRequest(member: $member); + $newClaimRequest = ClaimRequestService::storeClaimRequest(member: $member, paymentType: 'reimbursement', serviceCode: $request->service_code); ClaimRequested::dispatch($newClaimRequest); diff --git a/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php b/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php index 9dbe39fa..e8042da3 100644 --- a/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php +++ b/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php @@ -36,7 +36,7 @@ class ClaimRequestController extends Controller ->when($request->status, function($q, $status) { $q->where('status', $status); }) - ->with(['member', 'files']) + ->with(['member', 'files', 'service']) ->paginate(); return Helper::paginateResources(ClaimRequestResource::collection($claimRequests)); diff --git a/Modules/Internal/Services/ClaimService.php b/Modules/Internal/Services/ClaimService.php deleted file mode 100644 index ec1429ae..00000000 --- a/Modules/Internal/Services/ClaimService.php +++ /dev/null @@ -1,11 +0,0 @@ - $this->submission_date, 'member' => $this->member, 'status' => $this->status ?? 'unknown', - 'service_type' => $this->service_type, + 'service_name' => $this->service->name, + 'payment_type' => $this->payment_type, + 'payment_type_name' => $this->payment_type_name, 'files_by_type' => $filesGroupByType ]; diff --git a/app/Http/Controllers/GeneratedDocumentController.php b/app/Http/Controllers/GeneratedDocumentController.php index c634543a..cb07adf3 100644 --- a/app/Http/Controllers/GeneratedDocumentController.php +++ b/app/Http/Controllers/GeneratedDocumentController.php @@ -57,6 +57,8 @@ class GeneratedDocumentController extends Controller // $pdf = PDF::loadFile(route('generated-document.show', $id)); // return $pdf->inline(); + // $pdf = PDF::loadHtml('
You owe me money, dude.
'; // // $snappy->generateFromHtml($html, '/tmp/bill-123.pdf'); diff --git a/app/Models/Claim.php b/app/Models/Claim.php index c8fc65c1..bb12ff7b 100644 --- a/app/Models/Claim.php +++ b/app/Models/Claim.php @@ -122,6 +122,17 @@ class Claim extends Model return (string) self::$code_prefix .'-'. str_pad($next_number, 5, 0, STR_PAD_LEFT); } + // Current ClaimRequest that refer to the claim + public function claimRequest() + { + return $this->belongsTo(ClaimRequest::class, 'claim_request_id'); + } + + // Possibilities of ClaimRequest that refer to the claim + public function claimRequests() + { + return $this->hasMany(ClaimRequest::class, 'claim_id'); + } public function files() { diff --git a/app/Models/ClaimRequest.php b/app/Models/ClaimRequest.php index dda5aa9a..39533f41 100644 --- a/app/Models/ClaimRequest.php +++ b/app/Models/ClaimRequest.php @@ -17,8 +17,12 @@ class ClaimRequest extends Model protected static $code_prefix = 'CRQ'; public $fillable = [ + 'uuid', 'submission_date', 'member_id', + 'payment_type', + 'service_code', + 'policy_id', 'status', 'claim_id' ]; @@ -35,13 +39,19 @@ class ClaimRequest extends Model public static $status = [ 'draft' => 'Draft', 'requested' => 'Requested', - 'received' => 'Received', 'approved' => 'Approved', - 'postpone' => 'Postpone', - 'paid' => 'Paid', 'declined' => 'Declined' ]; + public static $payment_types = [ + 'cashless' => 'Cashless', + 'reimbursement' => 'Reimbursement' + ]; + + public $appends = [ + 'payment_type_name' + ]; + protected static function boot() { parent::boot(); @@ -116,6 +126,11 @@ class ClaimRequest extends Model return (string) self::$code_prefix .'-'. str_pad($next_number, 5, 0, STR_PAD_LEFT); } + public function claim() + { + return $this->belongsTo(Claim::class, 'claim_id'); + } + public function claims() { return $this->hasMany(Claim::class, 'claim_request_id'); @@ -140,4 +155,19 @@ class ClaimRequest extends Model { return $this->belongsTo(Member::class, 'member_id', 'id'); } + + public function service() + { + return $this->belongsTo(Service::class, 'service_code', 'code'); + } + + public function getPaymentTypeNameAttribute() + { + return self::$payment_types[$this->payment_type] ?? $this->payment_type; + } + + public function getStatusAttribute($value) + { + return self::$payment_types[$value] ?? $value; + } } diff --git a/app/Models/Member.php b/app/Models/Member.php index 7c9f3b7a..b0f72a86 100755 --- a/app/Models/Member.php +++ b/app/Models/Member.php @@ -151,13 +151,20 @@ class Member extends Model } public function currentPolicy() + { + return $this->hasOneThrough(CorporatePolicy::class, MemberPolicy::class, 'member_id', 'code', 'member_id', 'policy_id') + ->where('status', 'active') + ->orderBy('end', 'DESC'); + // return $this->hasOne(MemberPolicy::class, 'member_id', 'member_id')->where('status', 'active')->latestOfMany(); + } + + public function currentActivePolicy() { return $this->hasOneThrough(CorporatePolicy::class, MemberPolicy::class, 'member_id', 'code', 'member_id', 'policy_id') ->where('corporate_policies.start', '<', now()) ->where('corporate_policies.end', '>', now()) ->where('member_policies.start', '<', now()) ->where('member_policies.end', '>', now()); - // return $this->hasOne(MemberPolicy::class, 'member_id', 'member_id')->where('status', 'active')->latestOfMany(); } public function getAgeAttribute() diff --git a/app/Services/ClaimRequestService.php b/app/Services/ClaimRequestService.php index 16e79772..08c31f1b 100644 --- a/app/Services/ClaimRequestService.php +++ b/app/Services/ClaimRequestService.php @@ -14,7 +14,7 @@ use Str; class ClaimRequestService{ - public static function storeClaimRequest($member, $submissionDate = null, $status = 'requested') + public static function storeClaimRequest($member, $paymentType, $serviceCode, $submissionDate = null, $status = 'requested') { try { DB::beginTransaction(); @@ -22,7 +22,10 @@ class ClaimRequestService{ $claimRequestData = [ 'member_id' => $member->id, 'submission_date' => $submissionDate ?? now(), - 'status' => $status + 'status' => $status, + 'payment_type' => $paymentType, + 'service_code' => $serviceCode, + 'policy_id' => $member->currentPolicy->id ?? null, ]; $claimRequest = ClaimRequest::create($claimRequestData); diff --git a/database/migrations/2023_02_14_102144_create_claim_requests_table.php b/database/migrations/2023_02_14_102144_create_claim_requests_table.php index 36564820..84c1cd49 100644 --- a/database/migrations/2023_02_14_102144_create_claim_requests_table.php +++ b/database/migrations/2023_02_14_102144_create_claim_requests_table.php @@ -19,6 +19,9 @@ return new class extends Migration $table->string('code')->index(); $table->dateTime('submission_date')->nullable(); $table->foreignId('member_id'); + $table->string('payment_type'); + $table->string('service_code'); + $table->foreignId('policy_id'); $table->string('status')->nullable(); $table->foreignId('claim_id')->nullable()->comment('After Claim is Created'); diff --git a/frontend/dashboard/src/components/dialogs/DialogDetailClaim.tsx b/frontend/dashboard/src/components/dialogs/DialogDetailClaim.tsx index 64495bef..960c0d11 100644 --- a/frontend/dashboard/src/components/dialogs/DialogDetailClaim.tsx +++ b/frontend/dashboard/src/components/dialogs/DialogDetailClaim.tsx @@ -135,6 +135,34 @@ const DialogDetailClaim = ({ title, openDialog, setOpenDialog, data }: MuiDialog )} */} + +
+ {{--
--}}