export import claim request
This commit is contained in:
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user