From 4a6d11f5d3b63eb9c6bdd04e461d27c2bd589d5b Mon Sep 17 00:00:00 2001 From: Tb Fajri Date: Tue, 26 Sep 2023 17:24:34 +0700 Subject: [PATCH 1/2] update --- resources/views/pdf/final_log.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/pdf/final_log.blade.php b/resources/views/pdf/final_log.blade.php index 6abfc19e..fccdd337 100644 --- a/resources/views/pdf/final_log.blade.php +++ b/resources/views/pdf/final_log.blade.php @@ -129,7 +129,7 @@ use App\Helpers\Helper; -

Dengan ini jaminan diberikan kepada pasien yang juga meruopakan tertanggung/peserta yang diasuransikan "Pasien" dengan data sebagai berikut

+

Dengan ini jaminan diberikan kepada pasien yang juga merupakan tertanggung/peserta yang diasuransikan "Pasien" dengan data sebagai berikut

@@ -240,7 +240,7 @@ use App\Helpers\Helper;

Tidak Dijamin : Full Cover

-

* Bila pasien menempati kamar perawatan di atas manfaat yang imiliki maka pasien wajib membayar selisih yang timbul dan biaya yang tidak dijamin setelah menjalani perawatan Rumah Sakit

+

* Bila pasien menempati kamar perawatan di atas manfaat yang dimiliki maka pasien wajib membayar selisih yang timbul dan biaya yang tidak dijamin setelah menjalani perawatan Rumah Sakit

From 23ce443b52ae322ca2f809d480486623bfcbc388 Mon Sep 17 00:00:00 2001 From: Tb Fajri Date: Wed, 27 Sep 2023 12:04:59 +0700 Subject: [PATCH 2/2] update input transaksi --- .../Http/Controllers/Api/MemberController.php | 93 ++++++++++++++++++ Modules/Client/Routes/api.php | 2 + .../Http/Controllers/Api/ClaimController.php | 16 +-- .../src/sections/dashboard/CardPolicy.tsx | 10 +- .../dashboard/DialogClaimSubmitMember.tsx | 28 +++++- frontend/dashboard/src/pages/Claims/List.tsx | 2 +- public/files/Benefit Usage Report.xlsx | 0 .../CorporatePlan&BenefitImportData.xlsx | Bin 6831 -> 5449 bytes 8 files changed, 137 insertions(+), 14 deletions(-) create mode 100644 Modules/Client/Http/Controllers/Api/MemberController.php create mode 100644 public/files/Benefit Usage Report.xlsx diff --git a/Modules/Client/Http/Controllers/Api/MemberController.php b/Modules/Client/Http/Controllers/Api/MemberController.php new file mode 100644 index 00000000..1c6b6fa0 --- /dev/null +++ b/Modules/Client/Http/Controllers/Api/MemberController.php @@ -0,0 +1,93 @@ +when($request->search, function ($query, $search) { + return $query->where('name', 'LIKE', '%' . $search . '%') + ->orWhere('member_id', 'LIKE', '%' . $search . '%'); + }) + ->with('currentPlan', 'currentCorporate') + ->paginate(); + } + + /** + * Show the form for creating a new resource. + * @return Renderable + */ + public function create() + { + return view('internal::create'); + } + + /** + * Store a newly created resource in storage. + * @param Request $request + * @return Renderable + */ + public function store(Request $request) + { + // + } + + /** + * Show the specified resource. + * @param int $id + * @return Renderable + */ + public function show($id) + { + return view('internal::show'); + } + + /** + * Show the form for editing the specified resource. + * @param int $id + * @return Renderable + */ + public function edit($id) + { + return view('internal::edit'); + } + + /** + * Update the specified resource in storage. + * @param Request $request + * @param int $id + * @return Renderable + */ + public function update(Request $request, $id) + { + // + } + + /** + * Remove the specified resource from storage. + * @param int $id + * @return Renderable + */ + public function destroy($id) + { + // + } + + public function benefits($member_id) + { + $member = Member::findOrFail($member_id); + + return response()->json($member->currentPlan->benefits()->select(['description', 'code', 'id'])->get()); + } +} diff --git a/Modules/Client/Routes/api.php b/Modules/Client/Routes/api.php index 856d2637..9b29e2b8 100644 --- a/Modules/Client/Routes/api.php +++ b/Modules/Client/Routes/api.php @@ -4,6 +4,7 @@ use Modules\Client\Http\Controllers\Api\AuthController; use Modules\Client\Http\Controllers\Api\CorporateDivisionController; use Modules\Client\Http\Controllers\Api\CorporateManageController; use Modules\Client\Http\Controllers\Api\CorporateMemberController; +use Modules\Client\Http\Controllers\Api\MemberController; use Modules\Client\Http\Controllers\Api\CorporatePolicyController; use Modules\Client\Http\Controllers\Api\UserController; use Modules\Client\Http\Controllers\Api\ClaimController; @@ -40,6 +41,7 @@ Route::prefix('client')->group(function () { Route::get('corporate-manage', [CorporateManageController::class, 'index']); Route::get('corporate-manage/{corporate_id}', [CorporateManageController::class, 'show']); Route::prefix('{corporate_id}')->group(function () { + Route::post('search-member', [MemberController::class, 'index']); Route::get('policy', [CorporatePolicyController::class, 'index']); Route::get('division', [CorporateDivisionController::class, 'index']); Route::get('members', [CorporateMemberController::class, 'index']); diff --git a/Modules/Internal/Http/Controllers/Api/ClaimController.php b/Modules/Internal/Http/Controllers/Api/ClaimController.php index c339e819..3a9ceaac 100644 --- a/Modules/Internal/Http/Controllers/Api/ClaimController.php +++ b/Modules/Internal/Http/Controllers/Api/ClaimController.php @@ -300,7 +300,7 @@ class ClaimController extends Controller // Membuat penulis entitas Spout $writer = WriterEntityFactory::createXLSXWriter(); // Membuka penulis untuk menulis ke file - $writer->openToFile(public_path('files/CorporatePlan&BenefitImportData.xlsx')); + $writer->openToFile(public_path('files/Benefit Usage Report.xlsx')); // Sheet 1 $writer->getCurrentSheet()->setName('Worksheet'); @@ -320,15 +320,17 @@ class ClaimController extends Controller 'plan', 'benefit', 'claimRequest', - 'claimRequest.service' + 'claimRequest.service', + 'encounters', ]) // ->latest() ->get()->toArray(); foreach ($claims as $index => $row){ + dd($row); $rowData = [ '', // Count of Usage $row['code'], // Claim Number - '', // Insurar Code + $row['member']? $row['member']['payor_id'] : '-', // Insurar Code $row['member']['current_policy']? $row['member']['current_policy']['code'] : '', // Policy no $row['member']['current_corporate']? $row['member']['current_corporate']['name'] : '', // Corporate Name $row['member']['current_plan']? $row['member']['current_plan']['code'] : '', // Plan Code @@ -339,7 +341,7 @@ class ClaimController extends Controller $row['member']['current_corporate']? $row['member']['current_corporate']['code'] : '', // Institution Code '', // Invoice Line Number $row['status'], // Claim Status - '', // Admission Date + $row['claim_request']? $row['claim_request']['submission_date'] : '-', // Admission Date '', // Discharge Date '', // Date Of Service '', // Place Of Service @@ -354,7 +356,7 @@ class ClaimController extends Controller $row['claim_request'] ? $row['claim_request']['service']['description'] : '', // ServiceDescription '', // UnitPrice '', // Quantity - '', // Tarif + $row['member']['current_policy']['latest_limit_journal'] ? abs($row['member']['current_policy']['latest_limit_journal']['total_credit']): '', // Tarif '', // Claimable amount '', // Paid by customer '', // HD Disc @@ -369,7 +371,7 @@ class ClaimController extends Controller '', // Claimable Status $row['claim_request'] ? $row['claim_request']['service']['description'] : '', // ServiceDescription, // Benefit Code ]; - + // dd($rowData); $row = WriterEntityFactory::createRowFromArray($rowData); $writer->addRow($row); } @@ -444,7 +446,7 @@ class ClaimController extends Controller return Helper::responseJson([ 'file_name' => "Data Claim Report " . date('Y-m-d h:i:s'), - "file_url" => url('files/CorporatePlan&BenefitImportData.xlsx') + "file_url" => url('files/Benefit Usage Report.xlsx') ]); } } diff --git a/frontend/client-portal/src/sections/dashboard/CardPolicy.tsx b/frontend/client-portal/src/sections/dashboard/CardPolicy.tsx index 41ba3808..53c9bad1 100644 --- a/frontend/client-portal/src/sections/dashboard/CardPolicy.tsx +++ b/frontend/client-portal/src/sections/dashboard/CardPolicy.tsx @@ -61,6 +61,10 @@ type CardPolicyProps = { }; maxTopUp: number; }; + members: { + memberId: string; + memberFullName: string; + } }; }; @@ -95,7 +99,7 @@ export default function CardPolicy(props: CardPolicyProps) { const [dialogTitle, setDialogTitle] = useState(''); const [isDialog, setIsDialog] = useState(''); - const { limit, topUpLimit } = props.data || {}; + const { limit, topUpLimit, members } = props.data || {}; if (!limit || !topUpLimit) { return null; } @@ -185,14 +189,14 @@ export default function CardPolicy(props: CardPolicyProps) { - {/* {isDialog === 'submitClaim' && ( + {isDialog === 'submitClaim' && ( - )} */} + )} {isDialog === 'topUpLimit' && ( ) => { - event.preventDefault(); - - await new Promise((resolve) => setTimeout(resolve, 500)); + // await new Promise((resolve) => setTimeout(resolve, 500)); + // setLoadingBenefit(true) + + // axios.post('/search-member', { + // search: searchText, + // }) + // .then((response) => { + // setOpenDialogBenefit(true) + // setCurrentMember(response.data.data) + // setNameMember(response.data.data.name); + // }) + // .catch(({response}) => { + // enqueueSnackbar(response.data.errors ? response.data.errors[0] : (response.data ? response.data.meta.message : 'Opps, Something went Wrong!'), {variant : "error"}) + // }) + // .then(() => { + // setLoadingBenefit(false) + // }); }; /* -------------------------------------------------------------------------- */ diff --git a/frontend/dashboard/src/pages/Claims/List.tsx b/frontend/dashboard/src/pages/Claims/List.tsx index 9e32e720..2da719bf 100644 --- a/frontend/dashboard/src/pages/Claims/List.tsx +++ b/frontend/dashboard/src/pages/Claims/List.tsx @@ -173,8 +173,8 @@ export default function List() { {open ? : } - {row.code} {row.claim_request?.code} + {row.code} {row.member?.full_name} {row.plan?.code} {row.claim_request?.service?.name} diff --git a/public/files/Benefit Usage Report.xlsx b/public/files/Benefit Usage Report.xlsx new file mode 100644 index 00000000..e69de29b diff --git a/public/files/CorporatePlan&BenefitImportData.xlsx b/public/files/CorporatePlan&BenefitImportData.xlsx index 4c003fd1ee0ae8482972e57961a325d336f7374a..523b1f62f3e853d14fb0ceaf68c1f137537bde57 100644 GIT binary patch delta 4047 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 QU(!fNcau(>(+u*Jxk{9> zd0ep=nuKFpcpxj?_PzHIq+Fv?%oQYLl$y~&Px4p8VJ>}*jjJXGB7=>8SsS1UauI#w z8trf70U);uFv0#1J=`8}-pU<5XQ^{p)ed037Ppt>bOrikFU!%2@4%$6`~xOTJJtsu zL6c__HCdZm12N*`FQ-nQ#Z}?vFB+YfOcQuNN~31!!k`07#@CSiQpv-C=|W*CU_M4u zZOOx!wN7m}8!2GdpDtiEHb27pbODdk{EoU0 zuS1k2_iTERu}|$}vIT53XCoQyW=qQSDr+{(b)F1X5QTY28zd6As6W1{&NEkdwI|S9 zLj%*3T<78LsY!?Fjp@e<0BmLRlDZx;qmWPNW-|98KbetJF@1Sj$;dy0n{GR$SVql1 zLy&HZts?NYa2`#?L-`7_W($if4f(OAbIXU4Z%;O-YY4Q<% z*~d``vo(`}&?+;GFV%NczY4pf`tkk+X7P`wos?3hK@8Q5hQpzfrajp)gj~FFtc!Iz z{Njg=cF3OO4rJ+!w~?BN6v!JSK#+Y_N0tl1dV~mtk1+s(D`_WNR z7!b&mgo6Y|op5Zat8z#&!=8?apxNn+CdM0tWanJ0zl~W>0AD=I)YX%tV0GIb_Bt0e zTj}&NLhG8}3FPB%&KF2Iu-2l3TpA=BA$Mn7n7|7%``Ce%*@cQpC?Jmb_6IWS?bjRJ zlV7+0Q{i4Pjz%xt6}GbpghY%$UHpXYT?3&1zz;wFa+UwBx?Gmga4xdk5483Wur`GZ zq2?PZYr2v<^*y)Tr`fhI{i!O2ir(uSC@f$(nWU}fPPV9dwDUTD5f?8r(cqfp{(@rW zSn!NXT7U~q7Lw=GS|V3XMDCHcDep)GsZ71h&-ai=<#HWesZW2#7!CpA)2T}hEdo4e z>_pE7b5E0Ll(Ekd6TPo$-FiEi-!^}zbqw->Ocoh~j#D_cUNMxjkkiH^Q;(F_Tg=8D zdw63J@Nxq0#L(%yKlfj{xI2{`1Z2qcdE~7chaK+$$&~*r?hnA1JK=X*Z@7EO|J3#g zEX0MlzvVy0`;xJQX<|;mU9giVJ&T{0G#^>mS}muaULU=WdPU;Q)iQ?~xkVZ;?b@}A z3=2LDsLs>CdTtshrPf*+VvB#Q?T{~kUv5@n=}?p_!B%Chfh~ee^ujh$F6t6S6FmOQ zf*px9|D=e$KlwoNF~mpemot)jD3eNB0@Nf>}ursiYiUTQfd$1{F}H_=u_5v-nFLhFWO@+?Z5fn;@!agU(?A) z1=D1QV?cu@b9|3990No?N;|z5UmP3qIX%>MP*02Jj~MhzjE5?2g-_00gf6H{x%x6T zsVQ}oWSv*~)GNEvcNk#c@Lq*YX>3~XBm+9e{uuwjFoBMA3gZqi#1SbG8sR_scL{`K z{Pe%S{I|n&*JdHUgZV#K!5bjKgzUj@_k=fO5VV+tEHYY#-yVNAU;Zt+{`P=kCU9cX z0BTBT=;9cEHx2(!ru|o?{p}!)`~PdU|BdqBqks+q(flXG-B|F3nCwp!V^<4%w>$lp z@Q57pXW7rmA?PgR35>)P34Y`Re={eJoC1A?JfWDJ{*T$nof!{B!WQ|zH;V^`uwYSw dK>rTM^*gAV5*GIF8S(G#kh|&0e``(9zW_@s^Zft-