export import claim request
This commit is contained in:
@@ -456,6 +456,7 @@ class ClaimController extends Controller
|
||||
//Data Benefit
|
||||
$dataClaimLog = DB::table('request_log_benefits')
|
||||
->where('request_log_benefits.request_log_id', '=', $item->id)
|
||||
->where('request_log_benefits.deleted_at', null)
|
||||
->select(
|
||||
'*',
|
||||
DB::raw('
|
||||
|
||||
@@ -192,15 +192,15 @@ class ClaimController extends Controller
|
||||
'),
|
||||
'claim_requests.created_at',
|
||||
DB::raw('
|
||||
(SELECT plans.code
|
||||
FROM plans
|
||||
WHERE plans.id IN (
|
||||
SELECT member_plans.plan_id
|
||||
FROM member_plans
|
||||
WHERE member_plans.member_id = claim_requests.member_id
|
||||
)
|
||||
AND plans.service_code = claim_requests.service_code) AS plan_code
|
||||
'),
|
||||
(SELECT plans.code
|
||||
FROM plans
|
||||
WHERE plans.id IN (
|
||||
SELECT member_plans.plan_id
|
||||
FROM member_plans
|
||||
WHERE member_plans.member_id = claim_requests.member_id
|
||||
)
|
||||
AND plans.service_code = claim_requests.service_code) AS plan_code
|
||||
'),
|
||||
// DB::raw('
|
||||
// (SELECT plans.code FROM plans WHERE plans.id = member_plans.plan_id LIMIT 1) AS plan_code
|
||||
// '),
|
||||
|
||||
@@ -17,11 +17,18 @@ use App\Services\ClaimRequestService;
|
||||
use App\Exceptions\ImportRowException;
|
||||
use App\Events\ClaimRequested;
|
||||
|
||||
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
|
||||
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
|
||||
use Box\Spout\Writer\Common\Creator\Style\StyleBuilder;
|
||||
use Box\Spout\Common\Entity\Style\CellAlignment;
|
||||
|
||||
use App\Models\File;
|
||||
use App\Models\FilesMcu;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Models\Member;
|
||||
use App\Models\MemberPlan;
|
||||
use App\Models\Plan;
|
||||
use App\Models\RequestLogBenefit;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class ClaimRequestController extends Controller
|
||||
@@ -53,7 +60,6 @@ class ClaimRequestController extends Controller
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
->when($request->service_code, function ($q, $serviceCode) {
|
||||
$q->whereIn('service_code', $serviceCode);
|
||||
})
|
||||
@@ -70,7 +76,7 @@ class ClaimRequestController extends Controller
|
||||
})
|
||||
->with(['member', 'files', 'service', 'member.currentPolicy'])
|
||||
->paginate();
|
||||
|
||||
|
||||
return Helper::paginateResources(ClaimRequestResource::collection($claimRequests));
|
||||
}
|
||||
|
||||
@@ -722,6 +728,293 @@ class ClaimRequestController extends Controller
|
||||
return Helper::responseJson(data: $request->toArray(), message: 'Invoice Success Uploaded');
|
||||
}
|
||||
|
||||
public function exportClaimRequest(Request $request)
|
||||
{
|
||||
$claimRequests = ClaimRequest::query()
|
||||
->when($request->search, function ($q, $search) {
|
||||
$q->where('code', 'LIKE', "%".$search."%");
|
||||
$q->orWhereHas('member', function ($subQuery) use ($search) {
|
||||
$subQuery->where('name', 'LIKE', "%".$search."%");
|
||||
});
|
||||
})
|
||||
->when($request->start_date, function ($q, $startDate) {
|
||||
$q->where('submission_date', '>', Carbon::parse($startDate)->subDay());
|
||||
})
|
||||
->when($request->end_date, function ($q, $endDate) use ($request) {
|
||||
// Jika tanggal akhir diberikan dan tidak sama dengan tanggal mulai
|
||||
if ($request->start_date != $request->end_date) {
|
||||
$q->where('submission_date', '<', Carbon::parse($endDate)->addDay());
|
||||
} else {
|
||||
$q->where('submission_date', '<=', Carbon::parse($endDate));
|
||||
}
|
||||
})
|
||||
->when($request->service_code, function ($q, $serviceCode) {
|
||||
$q->whereIn('service_code', $serviceCode);
|
||||
})
|
||||
->when($request->orderBy, function ($q, $orderBy) use ($request) {
|
||||
if (in_array($orderBy, ['submission_date', 'code'])) {
|
||||
$q->orderBy($orderBy, $request->order);
|
||||
}
|
||||
})
|
||||
->when(empty($request->orderBy), function ($q) {
|
||||
$q->orderBy('created_at', 'desc');
|
||||
})
|
||||
->when($request->status, function($q, $status) {
|
||||
$q->where('status', $status);
|
||||
})
|
||||
->with(['member', 'member.currentCorporate', 'files', 'service', 'member.currentPolicy', 'requestLog', 'requestLog.organization',])
|
||||
->addSelect([
|
||||
'tot_billing' => function ($query) {
|
||||
$query->select(DB::raw('SUM(request_log_benefits.amount_approved)'))
|
||||
->from('request_log_benefits')
|
||||
->whereColumn('request_log_benefits.request_log_id', 'claim_requests.request_log_id')
|
||||
->limit(1);
|
||||
}
|
||||
])
|
||||
->get();
|
||||
$writer = WriterEntityFactory::createXLSXWriter();
|
||||
$writer->openToFile(public_path('files/Report-Data-Claim-Request.xlsx'));
|
||||
$header = [
|
||||
'No',
|
||||
'Code Claim',
|
||||
'Date Claim Submission',
|
||||
'Code LOG',
|
||||
'Date Submission',
|
||||
'Date Admission',
|
||||
'Date Discharge',
|
||||
'Provider',
|
||||
'Member ID (BN)',
|
||||
'Member Name',
|
||||
'Member Name Principal',
|
||||
'Plan Code',
|
||||
'Payor ID',
|
||||
'Corporate name',
|
||||
'Policy Number',
|
||||
'Total Billing',
|
||||
'Benefit Code',
|
||||
'Benefit Desc',
|
||||
'Amt Incurred',
|
||||
'Amt Approved',
|
||||
'Amt Not Approved',
|
||||
'Excess Paid',
|
||||
// 'Reason',
|
||||
'Diagnosis',
|
||||
'Keterangan',
|
||||
'Catatan',
|
||||
'Status',
|
||||
'QC'
|
||||
];
|
||||
$style = (new StyleBuilder())
|
||||
->setFontBold()
|
||||
// ->setFontSize(15)
|
||||
// ->setFontColor(Color::BLUE)
|
||||
// ->setShouldWrapText()
|
||||
->setCellAlignment(CellAlignment::LEFT)
|
||||
// ->setBackgroundColor(Color::YELLOW)
|
||||
->build();
|
||||
|
||||
$headerRow = WriterEntityFactory::createRowFromArray($header, $style);
|
||||
$writer->addRow($headerRow);
|
||||
|
||||
$results = $claimRequests;
|
||||
$no=0;
|
||||
$gr_total = 0;
|
||||
$rowData=[];
|
||||
foreach($results as $item)
|
||||
{
|
||||
// $gr_total += $item->tot_bill;
|
||||
// $requestLogData = RequestLogBenefit::selectRaw('*,
|
||||
// (SELECT code FROM benefits WHERE benefits.id = request_log_benefits.benefit_id) AS benefit_code,
|
||||
// (SELECT description FROM benefits WHERE benefits.id = request_log_benefits.benefit_id) AS benefit_description,
|
||||
// sum(amount_incurred) AS total_incurred'
|
||||
// )
|
||||
// ->where(['request_log_id' => $item->request_log_id, 'deleted_at' => null])
|
||||
// ->get()->toArray();
|
||||
|
||||
//Data Benefit
|
||||
$requestLogData = DB::table('request_log_benefits')
|
||||
->where('request_log_benefits.request_log_id', '=', $item->request_log_id)
|
||||
->select(
|
||||
'*',
|
||||
// DB::raw('SUM(request_log_benefits.amount_incurred) AS total_incurred'),
|
||||
|
||||
DB::raw('
|
||||
(Select benefits.description FROM benefits
|
||||
WHERE benefits.id = request_log_benefits.benefit_id LIMIT 1) AS benefit_description
|
||||
'),
|
||||
DB::raw('
|
||||
(Select benefits.code FROM benefits
|
||||
WHERE benefits.id = request_log_benefits.benefit_id LIMIT 1) AS benefit_code
|
||||
')
|
||||
)
|
||||
->get();
|
||||
if ($item->member){
|
||||
$member = Member::where('member_id', $item->member->principal_id)->first();
|
||||
$memberPrincipal = $member->name;
|
||||
$memberPlan = MemberPlan::where('member_id', $item->member->id)->get('plan_id')->toArray();
|
||||
$plan= Plan::whereIn('id', $memberPlan)->where('service_code', $item->requestLog->service_code)->first();
|
||||
$planCode = $plan->code;
|
||||
if ($item->member->currentCorporate->id == $item->requestLog->organization->corporate_id_partner){
|
||||
$payor = $item->member->currentCorporate->name;
|
||||
} else {
|
||||
$payor = 'LinkSehat';
|
||||
}
|
||||
} else {
|
||||
$memberPrincipal = '-';
|
||||
$planCode = '-';
|
||||
$payor = '-';
|
||||
}
|
||||
|
||||
if ($requestLogData){
|
||||
foreach($requestLogData as $key => $data){
|
||||
$no++;
|
||||
if ($key == 0){
|
||||
$gr_total += $item->tot_billing;
|
||||
}
|
||||
$rowItem = [
|
||||
$no,
|
||||
$item->code,
|
||||
$item->submission_date ? $item->submission_date : '',
|
||||
$item->requestLog ? $item->requestLog->code : '-',
|
||||
$item->requestLog ? Helper::dateParser($item->requestLog->created_at) : '-', // submission = created_at
|
||||
$item->requestLog ? $item->requestLog->submission_date : '-',
|
||||
$item->requestLog ? $item->requestLog->discharge_date : '-',
|
||||
$item->requestLog ? $item->requestLog->organization->name : '-',
|
||||
$item->member ? $item->member->member_id : '-',
|
||||
$item->member ? $item->member->name : '-',
|
||||
$memberPrincipal,
|
||||
$key == 0 ? $planCode : '',
|
||||
$payor,
|
||||
$item->member ? $item->member->currentCorporate->name : '-',
|
||||
$item->member ? $item->member->currentPolicy->code : '-',
|
||||
$key == 0 ? $item->tot_billing : '',
|
||||
$data->benefit_code,
|
||||
$data->benefit_description,
|
||||
$data->amount_incurred ? $data->amount_incurred : '' ,
|
||||
$data->amount_approved ? $data->amount_approved : '',
|
||||
$data->amount_not_approved ? $data->amount_not_approved : '',
|
||||
$data->excess_paid ? $data->excess_paid : '',
|
||||
// $data->reason ? $data->reason : '',
|
||||
$item->requestLog ? $item->requestLog->diagnosis : '-',
|
||||
$item->requestLog ? $item->requestLog->keterangan : '-',
|
||||
$item->requestLog ? $item->requestLog->catatan : '-',
|
||||
$item->status ? $item->status : '-'
|
||||
];
|
||||
array_push($rowData,$rowItem);
|
||||
}
|
||||
} else {
|
||||
$no++;
|
||||
if ($item->member){
|
||||
$member = Member::where('member_id', $item->member->principal_id)->first();
|
||||
$memberPrincipal = $member->name;
|
||||
$memberPlan = MemberPlan::where('member_id', $item->member->id)->get('plan_id')->toArray();
|
||||
$plan= Plan::whereIn('id', $memberPlan)->where('service_code', $item->requestLog->service_code)->first();
|
||||
$planCode = $plan->code;
|
||||
if ($item->member->currentCorporate->id == $item->requestLog->organization->corporate_id_partner){
|
||||
$payor = $item->member->currentCorporate->name;
|
||||
} else {
|
||||
$payor = 'LinkSehat';
|
||||
}
|
||||
} else {
|
||||
$memberPrincipal = '-';
|
||||
$planCode = '-';
|
||||
$payor = '-';
|
||||
}
|
||||
$rowItem = [
|
||||
$no,
|
||||
$item->code,
|
||||
$item->submission_date ? Helper::dateParser($item->submission_date) : '',
|
||||
$item->requestLog ? $item->requestLog->code : '-',
|
||||
$item->requestLog ? Helper::dateParser($item->requestLog->created_at) : '-', // submission = created_at
|
||||
$item->requestLog ? $item->requestLog->submission_date : '-',
|
||||
$item->requestLog ? $item->requestLog->discharge_date : '-',
|
||||
$item->requestLog ? $item->requestLog->organization->name : '-',
|
||||
$item->member ? $item->member->member_id : '-',
|
||||
$item->member ? $item->member->name : '-',
|
||||
$memberPrincipal,
|
||||
$planCode,
|
||||
$payor,
|
||||
$item->member ? $item->member->currentCorporate->name : '-',
|
||||
$item->member ? $item->member->currentPolicy->code : '-',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
// '',
|
||||
$item->requestLog ? $item->requestLog->diagnosis : '-',
|
||||
$item->requestLog ? $item->requestLog->keterangan : '-',
|
||||
$item->requestLog ? $item->requestLog->catatan : '-',
|
||||
$item->status ? $item->status : '-'
|
||||
];
|
||||
array_push($rowData,$rowItem);
|
||||
}
|
||||
|
||||
}
|
||||
$style = (new StyleBuilder())
|
||||
//->setFontBold()
|
||||
// ->setFontSize(15)
|
||||
// ->setFontColor(Color::BLUE)
|
||||
// ->setShouldWrapText()
|
||||
->setCellAlignment(CellAlignment::LEFT)
|
||||
// ->setBackgroundColor(Color::YELLOW)
|
||||
->build();
|
||||
foreach ($rowData as $rowItem) {
|
||||
// if (is_numeric($rowItem[13])) {
|
||||
// // Jumlahkan nilai angka ke total
|
||||
// $grand_total_billing += $rowItem[13];
|
||||
// }
|
||||
$row = WriterEntityFactory::createRowFromArray($rowItem, $style);
|
||||
$writer->addRow($row);
|
||||
}
|
||||
|
||||
//Footer
|
||||
$footer = [
|
||||
'Total',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
$gr_total,
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
''
|
||||
];
|
||||
$style = (new StyleBuilder())
|
||||
->setFontBold()
|
||||
// ->setFontSize(15)
|
||||
// ->setFontColor(Color::BLUE)
|
||||
// ->setShouldWrapText()
|
||||
->setCellAlignment(CellAlignment::LEFT)
|
||||
// ->setBackgroundColor(Color::YELLOW)
|
||||
->build();
|
||||
$grand_total_billing = 0;
|
||||
$footerRow = WriterEntityFactory::createRowFromArray($footer, $style);
|
||||
$writer->addRow($footerRow);
|
||||
|
||||
$writer->close();
|
||||
return Helper::responseJson([
|
||||
'file_name' => 'Report-Data-Claim-Request',
|
||||
"file_url" => url('files/Report-Data-Claim-Request.xlsx')
|
||||
]);
|
||||
}
|
||||
|
||||
public function submition($id){
|
||||
$claimRequest = ClaimRequest::findOrFail($id);
|
||||
$claimRequest->status = 'submission';
|
||||
|
||||
@@ -315,13 +315,14 @@ Route::prefix('internal')->group(function () {
|
||||
Route::get('claim-requests/list-member', [ClaimRequestController::class, 'getClaimMemberInfiniteScroll']); // Bagaskoro, BSD 31 Oktober 2023
|
||||
Route::post('claim-requests/{id}/approve', [ClaimRequestController::class, 'approve'])->name('claim-requests.approve');
|
||||
Route::post('claim-requests/{id}/submition', [ClaimRequestController::class, 'submition'])->name('claim-requests.submition');
|
||||
Route::get('claim-requests/{id}', [ClaimRequestController::class, 'show'])->name('claim-requests.show');
|
||||
Route::get('claim-requests/{id}/show', [ClaimRequestController::class, 'show'])->name('claim-requests.show');
|
||||
Route::post('claim-requests', [ClaimRequestController::class, 'createNew']); // Bagaskoro, BSD 2 November 2023
|
||||
Route::post('claim-requests/{id}/update', [ClaimRequestController::class, 'update']);
|
||||
Route::post('claim-requests/import', [ClaimRequestController::class, 'importClaim'])->name('claim-requests.importClaim');
|
||||
Route::get('claim-requests/detail/{id}', [ClaimRequestController::class, 'claimRequestDetail']);
|
||||
Route::post('claim-requests/{id}/invoice-files', [ClaimRequestController::class, 'invoiceFiles']);
|
||||
Route::post('claim-requests/{id}/request-files', [ClaimRequestController::class, 'requestFiles']);
|
||||
Route::get('claim-requests/export', [ClaimRequestController::class, 'exportClaimRequest']);
|
||||
|
||||
Route::get('claim-requests/service/{id}', [ClaimRequestController::class, 'getServiceMember']);
|
||||
|
||||
|
||||
@@ -52,26 +52,28 @@ class ClaimRequest extends Model
|
||||
];
|
||||
|
||||
public static $doc_headers_to_field_map = [
|
||||
"Code" => "code",
|
||||
"Date Submission" => "date_submission",
|
||||
"Code LOG" => "code",
|
||||
"Date Claim Submission" => "date_submission",
|
||||
"Total Billing" => "total_billing",
|
||||
"Benefit Code" => "benefit_code",
|
||||
"Amt Incurred" => "amount_incurred",
|
||||
"Amt Approved" => "amount_apporve",
|
||||
"Amt Not Approved" => "amount_not_apporve",
|
||||
"Excess Paid" => "excess_paid",
|
||||
"Reason" => "reason",
|
||||
"QC" => "qc",
|
||||
];
|
||||
|
||||
public static $listing_doc_headers = [
|
||||
"Code",
|
||||
"Date Submission",
|
||||
"Code LOG",
|
||||
"Date Claim Submission",
|
||||
"Total Billing",
|
||||
"Benefit Code",
|
||||
"Amt Incurred",
|
||||
"Amt Approved",
|
||||
"Amt Not Approved",
|
||||
"Excess Paid",
|
||||
"Excess Paid",
|
||||
"Reason",
|
||||
"QC",
|
||||
];
|
||||
|
||||
|
||||
@@ -279,7 +279,7 @@ export default function List() {
|
||||
}
|
||||
|
||||
const handleGetData = (type :string) => {
|
||||
axios.get(`corporates/${corporate_id}/data-plan-benefit`)
|
||||
axios.get(`claim-requests/export`)
|
||||
.then((response) => {
|
||||
const link = document.createElement('a');
|
||||
link.href = response.data.data.file_url;
|
||||
@@ -416,7 +416,7 @@ export default function List() {
|
||||
setDataTableLoading(true);
|
||||
const filter = appliedFilter ? appliedFilter : Object.fromEntries([...searchParams.entries()]);
|
||||
const response = await axios.get('/claim-requests', { params: filter });
|
||||
console.log(response.data);
|
||||
|
||||
setDataTableLoading(false);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user