From a3927d377063b43a9a530e3b45482a9e6036d20d Mon Sep 17 00:00:00 2001 From: ivan-sim Date: Mon, 15 Jan 2024 14:36:54 +0700 Subject: [PATCH 01/12] Update TTD --- resources/views/pdf/final_log_page_2.blade.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/views/pdf/final_log_page_2.blade.php b/resources/views/pdf/final_log_page_2.blade.php index f2a154dc..ea80aa5b 100644 --- a/resources/views/pdf/final_log_page_2.blade.php +++ b/resources/views/pdf/final_log_page_2.blade.php @@ -329,7 +329,7 @@ @endphp Alarm Center Vale MKS (LinkSehat) Office
- {{ !empty($dataMember->name_perusahaan) ? $dataMember->name_perusahaan : '' }}
+ {{ !empty($dataMember->nama_perusahaan) ? $dataMember->nama_perusahaan : '' }}
Lt. 1, Jalan Somba Opu 281, Ujung Pandang, Losari,
Kec. Makassar, Kota Makassar, Sulawesi Selatan 90113 @php @@ -337,7 +337,7 @@ @endphp Alarm Center Petrolab (LinkSehat) Office
- {{ !empty($dataMember->name_perusahaan) ? $dataMember->name_perusahaan : '' }}
+ {{ !empty($dataMember->nama_perusahaan) ? $dataMember->nama_perusahaan : '' }}
Jalan Pisangan Lama 3 Nomor 28 Jatinegara, RT.9/RW.3,
Pisangan Tim., Kec. Pulo Gadung, Kota Jakarta Timur, Daerah Khusus Ibukota Jakarta 13230 @php @@ -345,7 +345,7 @@ @endphp Alarm Center (LinkSehat) Office
- {{ !empty($dataMember->name_perusahaan) ? $dataMember->name_perusahaan : '' }}
+ {{ !empty($dataMember->nama_perusahaan) ? $dataMember->nama_perusahaan : '' }}
@php From 439daf4e2e779c7ce037f721ee72fdb6cac67bc3 Mon Sep 17 00:00:00 2001 From: Tb Fajri Date: Tue, 16 Jan 2024 10:33:07 +0700 Subject: [PATCH 02/12] Update import request log --- .../Internal/Services/RequestLogService.php | 73 +++++++++++++------ 1 file changed, 50 insertions(+), 23 deletions(-) diff --git a/Modules/Internal/Services/RequestLogService.php b/Modules/Internal/Services/RequestLogService.php index 2455e2ad..fd1272d6 100644 --- a/Modules/Internal/Services/RequestLogService.php +++ b/Modules/Internal/Services/RequestLogService.php @@ -187,39 +187,66 @@ class RequestLogService $final_log = 1; } + if ($row['catatan']){ + $data = [ + 'code' => $code, + 'member_id' => $member->id, + 'submission_date' => $row['submission_date'], + 'discharge_date' => $row['submission_date'], + 'payment_type' => 'cashless', + 'status' => $status, + 'status_final_log' => $statusFinalLog, + 'final_log' =>$final_log, + 'import_system' =>TRUE, + // 'catatan' => $row['catatan'], + 'keterangan' => $row['keterangan'], + 'policy_id' => $member->currentPolicy->id ?? null, + 'organization_id' => $organization_id, + 'diagnosis' => $row['catatan'], + 'service_code' => $serviceCode, + 'approved_final_log_at' => $row['approved_final_log_at'], + ]; + } else { + $data = [ + 'code' => $code, + 'member_id' => $member->id, + 'submission_date' => $row['submission_date'], + 'discharge_date' => $row['submission_date'], + 'payment_type' => 'cashless', + 'status' => $status, + 'status_final_log' => $statusFinalLog, + 'final_log' =>$final_log, + 'import_system' =>TRUE, + // 'catatan' => $row['catatan'], + 'keterangan' => $row['keterangan'], + 'policy_id' => $member->currentPolicy->id ?? null, + 'organization_id' => $organization_id, + 'service_code' => $serviceCode, + 'approved_final_log_at' => $row['approved_final_log_at'], + ]; + } + $requestLog = RequestLog::updateOrCreate( - [ - 'code' => $code - ], [ 'code' => $code, - 'member_id' => $member->id, - 'submission_date' => $row['submission_date'], - 'discharge_date' => $row['submission_date'], - 'payment_type' => 'cashless', - 'status' => $status, - 'status_final_log' => $statusFinalLog, - 'final_log' =>$final_log, - 'import_system' =>TRUE, - 'catatan' => $row['catatan'], - 'policy_id' => $member->currentPolicy->id ?? null, - 'organization_id' => $organization_id, - 'service_code' => $serviceCode, - 'approved_final_log_at' => $row['approved_final_log_at'], - ]); + ], + $data); if ($benefit) { // jika tidak ada benefit nya maka belum ngisi benefit nya - RequestLogBenefit::updateOrCreate( - [ - 'request_log_id' => $requestLog->id, - ], + // Delete item + if ($row['total_billing']){ + RequestLogBenefit::where('request_log_id', '=', $requestLog->id)->delete(); + } + + // Insert Item + RequestLogBenefit::create( [ 'request_log_id' => $requestLog->id, 'benefit_id' => $benefit->id, - 'amount_incurred' => $row['total_billing'], + 'amount_incurred' => ($row['amount_not_approval'] ? $row['amount_not_approval'] : 0) + $row['amount_approval'] , 'amount_approved' => $row['amount_approval'], - 'amount_not_approved' => $row['amount_not_approval'], + 'amount_not_approved' => $row['amount_not_approval'] ?? 0, 'excess_paid' => $row['amount_not_approval'], 'created_by' => auth()->user()->id, From cb6a98607a83888aa049aad9154e53db265d437c Mon Sep 17 00:00:00 2001 From: Tb Fajri Date: Tue, 16 Jan 2024 11:13:36 +0700 Subject: [PATCH 03/12] update improvement --- Modules/Internal/Services/RequestLogService.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Modules/Internal/Services/RequestLogService.php b/Modules/Internal/Services/RequestLogService.php index fd1272d6..eb1b89db 100644 --- a/Modules/Internal/Services/RequestLogService.php +++ b/Modules/Internal/Services/RequestLogService.php @@ -34,6 +34,7 @@ class RequestLogService "Total Billing" => "total_billing", "Amount Approval" => "amount_approval", "Amount Not Approval" => "amount_not_approval", + "Final Billing" => "final_billing", "QC 1" => "status_final_log", "Ingestion Code" => "ingestion_code", // TODO I think this should not be here because if user uploading result then ingestion code and status will be filled "Ingestion Status" => "ingestion_status", @@ -54,6 +55,7 @@ class RequestLogService "total_billing" => "Total Billing", "amount_approval" => "Amount Approval", "amount_not_approval" => "Amount Not Approval", + "final_billing" => "Final Billing", "status_final_log" => "QC 1" , "ingestion_code" => "Ingestion Code", "ingestion_status" => "Ingestion Status", @@ -73,6 +75,7 @@ class RequestLogService "Total Billing", "Amount Approval", "Amount Not Approval", + "Final Billing", "QC 1", "Ingestion Code", "Ingestion Status", @@ -92,6 +95,7 @@ class RequestLogService "Total Billing", "Amount Approval", "Amount Not Approval", + "Final Billing", "QC 1", "Ingestion Code", "Ingestion Status", @@ -235,7 +239,7 @@ class RequestLogService if ($benefit) { // jika tidak ada benefit nya maka belum ngisi benefit nya // Delete item - if ($row['total_billing']){ + if ($row['final_billing']){ RequestLogBenefit::where('request_log_id', '=', $requestLog->id)->delete(); } @@ -244,7 +248,7 @@ class RequestLogService [ 'request_log_id' => $requestLog->id, 'benefit_id' => $benefit->id, - 'amount_incurred' => ($row['amount_not_approval'] ? $row['amount_not_approval'] : 0) + $row['amount_approval'] , + 'amount_incurred' => $row['total_billing'], 'amount_approved' => $row['amount_approval'], 'amount_not_approved' => $row['amount_not_approval'] ?? 0, 'excess_paid' => $row['amount_not_approval'], From 9c3e44f6250fa8392d0952214ed8f8408722d596 Mon Sep 17 00:00:00 2001 From: Tb Fajri Date: Tue, 16 Jan 2024 11:55:19 +0700 Subject: [PATCH 04/12] update --- Modules/Internal/Services/RequestLogService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/Internal/Services/RequestLogService.php b/Modules/Internal/Services/RequestLogService.php index eb1b89db..36dc8316 100644 --- a/Modules/Internal/Services/RequestLogService.php +++ b/Modules/Internal/Services/RequestLogService.php @@ -248,7 +248,7 @@ class RequestLogService [ 'request_log_id' => $requestLog->id, 'benefit_id' => $benefit->id, - 'amount_incurred' => $row['total_billing'], + 'amount_incurred' => $row['amount_approval'] + ($row['amount_not_approval'] ? $row['amount_not_approval'] : 0) , 'amount_approved' => $row['amount_approval'], 'amount_not_approved' => $row['amount_not_approval'] ?? 0, 'excess_paid' => $row['amount_not_approval'], From d88dce5b9eeae5df6e57acaa4428f6cc3f9b0cb0 Mon Sep 17 00:00:00 2001 From: Tb Fajri Date: Tue, 16 Jan 2024 16:07:17 +0700 Subject: [PATCH 05/12] update --- Modules/Internal/Services/RequestLogService.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Modules/Internal/Services/RequestLogService.php b/Modules/Internal/Services/RequestLogService.php index 36dc8316..2b5582ff 100644 --- a/Modules/Internal/Services/RequestLogService.php +++ b/Modules/Internal/Services/RequestLogService.php @@ -174,6 +174,7 @@ class RequestLogService $code = $this->makeCode($row['code'], $data); $status = $row['status_final_log'] == 'Y' ? 'approved' : 'requested'; + $service = Service::where('name', $row['service'])->first(); if ($service){ $serviceCode = $service->code; @@ -248,10 +249,10 @@ class RequestLogService [ 'request_log_id' => $requestLog->id, 'benefit_id' => $benefit->id, - 'amount_incurred' => $row['amount_approval'] + ($row['amount_not_approval'] ? $row['amount_not_approval'] : 0) , - 'amount_approved' => $row['amount_approval'], + 'amount_incurred' => ($row['amount_approval'] ? $row['amount_approval'] : 0) + ($row['amount_not_approval'] ? $row['amount_not_approval'] : 0) , + 'amount_approved' => $row['amount_approval'] ?? 0, 'amount_not_approved' => $row['amount_not_approval'] ?? 0, - 'excess_paid' => $row['amount_not_approval'], + 'excess_paid' => $row['amount_not_approval'] ?? 0, 'created_by' => auth()->user()->id, ]); From d90abffedf679df11b96e1f4c1e292ef333a9b9f Mon Sep 17 00:00:00 2001 From: ivan-sim Date: Tue, 16 Jan 2024 16:21:36 +0700 Subject: [PATCH 06/12] Update Export Excel Alrm Center --- .../Http/Controllers/Api/ClaimController.php | 239 ++++++++++++++++++ Modules/Client/Routes/api.php | 1 + .../client-portal/src/components/Table.tsx | 2 +- .../src/pages/AlarmCenter/List.tsx | 2 +- 4 files changed, 242 insertions(+), 2 deletions(-) diff --git a/Modules/Client/Http/Controllers/Api/ClaimController.php b/Modules/Client/Http/Controllers/Api/ClaimController.php index 0ed4533c..e3221ade 100644 --- a/Modules/Client/Http/Controllers/Api/ClaimController.php +++ b/Modules/Client/Http/Controllers/Api/ClaimController.php @@ -17,6 +17,10 @@ use Modules\Client\Transformers\ClaimShowResource; use PhpOffice\PhpSpreadsheet\Spreadsheet; use Illuminate\Support\Facades\Storage; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; +use Box\Spout\Writer\Common\Creator\WriterEntityFactory; +use Box\Spout\Writer\Common\Creator\Style\StyleBuilder; +use Box\Spout\Common\Entity\Style\CellAlignment; +use Box\Spout\Common\Entity\Style\Color; class ClaimController extends Controller { @@ -261,4 +265,239 @@ class ClaimController extends Controller ]); } } + + public function exportAlrmCenter($corporate_id, $start, $end) + { + $writer = WriterEntityFactory::createXLSXWriter(); + $writer->openToFile(public_path('files/Claim-Data-Corporate-'. date('Y-m-d').'.xlsx')); + $header = [ + 'No', + 'Code', + 'Provider', + 'Member ID (BN)', + 'Member Name', + 'Member Name Principal', + 'Plan ID', + 'Payor ID', + 'Corporate name', + 'Policy Number', + 'Benefit Code', + 'Benefit Desc', + 'Amt Incurred', + 'Amt Approved', + 'Amt Not Approved', + 'Excess Paid', + 'Diagnosis' + ]; + $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); + + $data = DB::table('request_logs') + ->leftJoin('members', 'members.id', '=', 'request_logs.member_id') + ->leftJoin('corporate_employees','corporate_employees.member_id','=','members.id') + ->where('corporate_employees.corporate_id', '=', 1) + ->where('request_logs.submission_date', '>', $start) + ->where('request_logs.submission_date', '<', $end) + ->select( + DB::raw('1 AS no'), + 'request_logs.organization_id', + 'request_logs.id', + 'request_logs.member_id', + 'request_logs.service_code', + 'request_logs.code' + ) + ->get(); + + if (isset($data) && count($data) > 0) + { + $dataRow = array(); + $no = 0; + foreach ($data as $item) + { + //Provider + $dataRumahSakit = DB::table('organizations') + ->leftJoin('addresses', 'addresses.addressable_id', '=', 'organizations.id') + ->where('organizations.id', '=', $item->organization_id) + ->where('addresses.addressable_type', '=', 'App\Models\Organization') + ->select('organizations.name AS nama_rumahsakit', 'addresses.text AS alamat_rumahsakit') + ->first(); + //Data Member + $dataMember = DB::table('members') + ->where('members.id', '=', $item->member_id) + ->select( + 'members.nric', + 'members.id', + 'members.principal_id', + 'members.name', + 'members.birth_date', + 'members.member_id', + 'members.gender', + DB::raw(' + (Select persons.nik FROM persons WHERE persons.id = members.person_id LIMIT 1) AS nik + '), + DB::raw(' + "LinkSehat" AS penjamin + '), + DB::raw(' + (Select corporates.name FROM corporates + LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id + WHERE corporate_employees.member_id = members.id LIMIT 1) AS nama_perusahaan + '), + DB::raw(' + (Select corporates.id FROM corporates + LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id + WHERE corporate_employees.member_id = members.id LIMIT 1) AS id_perusahaan + '), + DB::raw(' + (Select corporates.code FROM corporates + LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id + WHERE corporate_employees.member_id = members.id LIMIT 1) AS code_perusahaan + '), + DB::raw(' + (Select services.name FROM services + WHERE services.code = "'.$item->service_code.'" LIMIT 1) AS jenis_perwatan + '), + DB::raw(' + (Select member_policies.policy_id FROM member_policies WHERE member_policies.member_id = members.member_id LIMIT 1) AS no_polis + '), + DB::raw(' + (Select member_policies.status FROM member_policies WHERE member_policies.member_id = members.member_id LIMIT 1) AS status_polis + '), + DB::raw(' + (Select plans.code FROM member_plans + LEFT JOIN plans ON plans.id = member_plans.plan_id + WHERE member_plans.member_id = members.id AND plans.service_code = "'.$item->service_code.'" LIMIT 1) AS code_plan + '), + DB::raw(' + (Select plans.limit_rules FROM member_plans + LEFT JOIN plans ON plans.id = member_plans.plan_id + WHERE member_plans.member_id = members.id LIMIT 1) AS limit_rules + '), + DB::raw(' + "IDR" AS mata_uang + '), + 'members.members_effective_date AS mulai', + 'members.members_expire_date AS akhir' + ) + ->first(); + + //Nama Karyawan + $data['namaKaryawan'] = ''; + if($dataMember->principal_id) + { + $dataNamaKaryawan = DB::table('members') + ->where('members.member_id', '=', $dataMember->principal_id) + ->select('members.name') + ->first(); + $data['namaKaryawan'] = $dataNamaKaryawan->name; + } + else{ + $data['namaKaryawan'] = $dataMember->name; + } + + //Data Benefit + $dataClaimLog = DB::table('request_log_benefits') + ->where('request_log_benefits.request_log_id', '=', $item->id) + ->select( + '*', + DB::raw(' + (Select benefits.description FROM benefits + WHERE benefits.id = request_log_benefits.benefit_id LIMIT 1) AS benfit + '), + DB::raw(' + (Select benefits.code FROM benefits + WHERE benefits.id = request_log_benefits.benefit_id LIMIT 1) AS code + ') + ) + ->get(); + + $check_first_id = 0; + if($check_first_id != $item->id) + { + $no += $item->no; + } + if (isset($dataClaimLog) && count($dataClaimLog) > 0) + { + foreach ($dataClaimLog as $item_benefit) + { + $rowData = [ + $check_first_id != $item->id ? $no : '', + !empty($item->code) ? $item->code : '', + !empty($dataRumahSakit->nama_rumahsakit) ? $dataRumahSakit->nama_rumahsakit : '', + !empty($dataMember->member_id) ? $dataMember->member_id : '', + !empty($dataMember->name) ? $dataMember->name : '', + $data['namaKaryawan'], + !empty($dataMember->code_plan) ? $dataMember->code_plan : '', + 'LinkSehat', + !empty($dataMember->nama_perusahaan) ? $dataMember->nama_perusahaan : '', + !empty($dataMember->no_polis) ? $dataMember->no_polis : '', + !empty($item_benefit->code) ? $item_benefit->code : '', + !empty($item_benefit->benfit) ? $item_benefit->benfit : '', + !empty($item_benefit->amount_incurred) ? $item_benefit->amount_incurred : '', + !empty($item_benefit->amount_approved) ? $item_benefit->amount_approved : '', + !empty($item_benefit->amount_not_approved) ? $item_benefit->amount_not_approved : '', + !empty($item_benefit->excess_paid) ? $item_benefit->excess_paid : '', + !empty($item_benefit->keterangan) ? $item_benefit->keterangan : '', + + ]; + array_push($dataRow,$rowData); + + $check_first_id = $item->id; + } + } + else + { + $rowData = [ + $check_first_id != $item->id ? $no : '', + !empty($item->code) ? $item->code : '', + !empty($dataRumahSakit->nama_rumahsakit) ? $dataRumahSakit->nama_rumahsakit : '', + !empty($dataMember->member_id) ? $dataMember->member_id : '', + !empty($dataMember->name) ? $dataMember->name : '', + $data['namaKaryawan'], + !empty($dataMember->code_plan) ? $dataMember->code_plan : '', + 'LinkSehat', + !empty($dataMember->nama_perusahaan) ? $dataMember->nama_perusahaan : '', + !empty($dataMember->no_polis) ? $dataMember->no_polis : '', + '', + '', + '', + '', + '', + '', + '', + + ]; + array_push($dataRow,$rowData); + + } + } + $style = (new StyleBuilder()) + //->setFontBold() + // ->setFontSize(15) + // ->setFontColor(Color::BLUE) + // ->setShouldWrapText() + ->setCellAlignment(CellAlignment::LEFT) + // ->setBackgroundColor(Color::YELLOW) + ->build(); + foreach ($dataRow as $rowData) { + $row = WriterEntityFactory::createRowFromArray($rowData, $style); + $writer->addRow($row); + } + } + $writer->close(); + + return Helper::responseJson([ + 'file_name' => 'Claim-Data-Corporate-'. date('Y-m-d'), + "file_url" => url('files/Claim-Data-Corporate-'. date('Y-m-d').'.xlsx') + ]); + } } diff --git a/Modules/Client/Routes/api.php b/Modules/Client/Routes/api.php index e7fc76e2..3e4513cc 100644 --- a/Modules/Client/Routes/api.php +++ b/Modules/Client/Routes/api.php @@ -54,6 +54,7 @@ Route::prefix('client')->group(function () { Route::get('claims/status', [ClaimController::class, 'status']); Route::get('claims', [ClaimController::class, 'index']); Route::get('claims/export', [ClaimController::class, 'export']); + Route::get('claims/exportAlrmCenter/{start}/{end}', [ClaimController::class, 'exportAlrmCenter']); Route::get('claims/{claim_id}/encounters', [ClaimEncounterController::class, 'getEncounterData']); Route::get('topup', [TopUpController::class, 'index']); // Route::get('topup', [TopUpController::class, 'get']); diff --git a/frontend/client-portal/src/components/Table.tsx b/frontend/client-portal/src/components/Table.tsx index 75dd41fc..9aa6d58d 100644 --- a/frontend/client-portal/src/components/Table.tsx +++ b/frontend/client-portal/src/components/Table.tsx @@ -311,7 +311,7 @@ export default function Table({