Update Claim

This commit is contained in:
2023-06-08 11:41:19 +07:00
parent afafed11d5
commit 778d2b5bb5
6 changed files with 222 additions and 13 deletions

View File

@@ -13,6 +13,8 @@ use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Modules\Internal\Transformers\ClaimShowResource;
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
use PDF;
class ClaimController extends Controller
@@ -285,4 +287,147 @@ class ClaimController extends Controller
return $view;
}
public function dataClaimReport(Request $request){
$file_name = 'Data Claim Report';
// Membuat penulis entitas Spout
$writer = WriterEntityFactory::createXLSXWriter();
// Membuka penulis untuk menulis ke file
$writer->openToFile(public_path('files/CorporatePlan&BenefitImportData.xlsx'));
// Sheet 1
$writer->getCurrentSheet()->setName('Worksheet');
$headers_map_to_table_fields = Claim::$listing_doc_headers;
$headerRow = WriterEntityFactory::createRowFromArray($headers_map_to_table_fields);
$writer->addRow($headerRow);
$claims = Claim::with([
'member',
'diagnoses' => function ($diagnosis) {
return $diagnosis->where('type', 'primary');
},
'diagnoses.icd',
'plan',
'benefit',
'claimRequest',
'claimRequest.service'
])
// ->latest()
->get()->toArray();
foreach ($claims as $index => $row){
$rowData = [
'', // Count of Usage
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
$row['code'],
];
}
// $dataClaim = Claim::query
// $dataPlans = Claim::query()
// ->filter($request->all())
// ->where('corporate_id', $corporate_id)
// // ->whereHas('corporatePlan', function ($corporatePlan) use ($corporate_id) {
// // $corporatePlan->where('corporate_id', $corporate_id);
// // })
// // ->with('corporatePlan')
// ->orderBy('corporate_plan_id', 'asc')
// ->get()->toArray();
// foreach ($dataPlans as $index => $row){
// $rowData = [
// $row['service_code'], // Service
// $row['corporate_plan_id'], // Plan
// $row['code'], // Customer plans
// $row['type'], // Plan Type
// $row['start'], // Start Date of Plan
// $row['end'], // End Date of Plan
// $row['require_referral'], // Referral
// $row['referral_source'], // Referral Source
// $row['referral_duration'], // Referral Duration
// $row['family_plan'], // Family Plan
// $row['family_plan_share_rules'], // Family Sharing Overflow
// $row['limit_rules'], // Plan Limit
// $row['layer'], // Layer ID
// $row['layer_conditions'], // Layer Condition
// $row['budget_type'], // Budget Type
// $row['budget_code'], // Budget Code
// $row['budget_conditions'], // Budget Condition
// $row['surgery_limit'], // Surgery
// $row['non_surgery_limit'], // Non Surgery
// $row['max_claim_limit'], // Max/Claim
// $row['max_claim_count'], // Max Count of Claim
// $row['area_limit'], // Area
// $row['limit_shared_plans'], // Shared Plan
// $row['limit_shared_plan_type'], // Shared Plan Type
// $row['cashless_percentage'], // Cashless(%)
// $row['reimbursement_percentage'], // Reimbursement(%)
// $row['digital_percentage'], // Digital(%)
// $row['co_share_m_percentage'], // CoShareM(%)
// $row['co_share_s_percentage'], // CoShareS(%)
// $row['co_share_c_percentage'], // CoShareC(%)
// $row['cashless_deductible'], // Cashless Deductible
// $row['cashless_deductible'], // Reimbursement Deductible
// $row['digital_deductible'], // Digital Deductible
// $row['co_share_m_deductible'], // DeductibleM
// $row['co_share_s_deductible'], // DeductibleS
// $row['co_share_c_deductible'], // DeductibleC
// $row['co_share_deductible_condition'], // Co-share & Deductible Condition
// $row['msc'], // MSC
// $row['genders'], // Gender
// $row['min_age'], // Min Age
// $row['max_age'], // Max Age
// $row['rule_of_excess'], // Rule of Excess
// $row['max_excess_covered'], // Max Excess Covered
// $row['prorate_type'], // Prorate Type
// $row['prorate_lookup'], // Prorate Lookup
// $row['currency'], // Currency
// $row['max_surgery_reinstatement_days'], // Reinstatement days for Surgery NonSurgery
// $row['max_surgery_periode_days'], // Max Periode of Surgery Non Surgery
// ];
// $row = WriterEntityFactory::createRowFromArray($rowData);
// $writer->addRow($row);
// }
$writer->close();
return Helper::responseJson([
'file_name' => "Data Claim Report " . date('Y-m-d h:i:s'),
"file_url" => url('files/CorporatePlan&BenefitImportData.xlsx')
]);
}
}

View File

@@ -144,6 +144,7 @@ Route::prefix('internal')->group(function () {
Route::post('claims', [ClaimController::class, 'store']);
Route::get('claims/{id}', [ClaimController::class, 'show']);
Route::post('check-limit', [ClaimController::class, 'checkLimit']);
Route::get('claims/1/data-claim', [ClaimController::class, 'dataClaimReport']);
Route::get('search-organizations', [OrganizationController::class, 'searchOrganization']);
Route::get('search-specialities', [SpecialityController::class, 'searchSpeciality']);

View File

@@ -50,6 +50,52 @@ class Claim extends Model
'paid' => 'Paid',
'declined' => 'Declined'
];
public static $listing_doc_headers = [
// Pharmacy permit number Pharmacy Address Pharmacy phone number Delivery Address Claimable Status Benefit Code
'Count of Usage',
'Claim Number',
'Insurar Code',
'Policy no',
'Corporate Name',
'Plan Code',
'Member Name',
'Member Status',
'DOB', // date of brith
'Member Number',
'Institution Code',
'Invoice Line Number',
'Claim Status',
'Admission Date',
'Discharge Date',
'Date Of Service',
'Place Of Service',
'Los',
'Provider code',
'Treating Doctor Code',
'Treating Doctor Name',
'Doctor Title',
'Diagnosis',
'ServiceCode',
'ServiceType',
'ServiceDescription',
'UnitPrice',
'Quantity',
'Tarif',
'Claimable amount',
'Paid by customer',
'HD Disc',
'Doctor Notes',
'ConsultationID Date',
'Pharmacy Code',
'Pharmacy Name',
'Pharmacy Permit Number',
'Pharmacy Address',
'Pharmacy Phone number',
'Delivery Address',
'Claimable Status',
'Benefit Code',
];
protected static function boot()
{

View File

@@ -69,7 +69,7 @@ const navConfig = [
title: 'CLAIM MANAGEMENT',
path: '/claims',
// children: [
// { title: 'Request', path: '/case-request' },
// { title: 'Report', path: '/case-report' },
// ],
},
{

View File

@@ -15,16 +15,17 @@ import {
Stack,
Menu,
ButtonGroup,
Link,
Tooltip,
} from '@mui/material';
import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';
import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';
import AddIcon from '@mui/icons-material/Add';
import AssessmentIcon from '@mui/icons-material/Assessment';
import UploadIcon from '@mui/icons-material/Upload';
import CancelIcon from '@mui/icons-material/Cancel';
// hooks
import React, { ChangeEvent, useEffect, useRef, useState } from 'react';
import { Navigate, useNavigate, useSearchParams } from 'react-router-dom';
import { Link, Navigate, useNavigate, useSearchParams } from 'react-router-dom';
// components
import axios from '../../utils/axios';
import { LaravelPaginatedData, LaravelPaginatedDataDefault } from '../../@types/paginated-data';
@@ -55,6 +56,17 @@ export default function List() {
props.onSearch({ search: searchText }); // Trigger to Parent
};
const handleGetData = (type :string) => {
axios.get(`claims/1/data-claim`)
.then((response) => {
const link = document.createElement('a');
link.href = response.data.data.file_url;
link.setAttribute('download', response.data.data.file_name);
document.body.appendChild(link);
link.click();
})
}
useEffect(() => {
// Trigger First Search
setSearchText(searchParams.get('search') ?? '');
@@ -62,15 +74,20 @@ export default function List() {
return (
<form onSubmit={handleSearchSubmit} style={{ width: '100%' }}>
<TextField
id="search-input"
ref={searchInput}
label="Search"
variant="outlined"
fullWidth
onChange={handleSearchChange}
value={searchText}
/>
<Stack direction={'row'} spacing={2} sx={{ mb: 2 }}>
<TextField
id="search-input"
ref={searchInput}
label="Search"
variant="outlined"
fullWidth
onChange={handleSearchChange}
value={searchText}
/>
<Tooltip title="Export Excel">
<Button variant="outlined" startIcon={<AssessmentIcon />} sx={{ p: 1.8 }} onClick={handleGetData}/>
</Tooltip>
</Stack>
</form>
);
}

View File

@@ -269,7 +269,7 @@ export default function Members() {
<Button variant="outlined" startIcon={<PublishIcon />} sx={{ p: 1.8 }} onClick={handleImportButton}>
Import
</Button>
</Grid>
</Grid>
</Grid>
<Card>