diff --git a/Modules/Client/Transformers/Dashboard/MemberResources.php b/Modules/Client/Transformers/Dashboard/MemberResources.php
index b5fbd836..d53d88ea 100644
--- a/Modules/Client/Transformers/Dashboard/MemberResources.php
+++ b/Modules/Client/Transformers/Dashboard/MemberResources.php
@@ -14,6 +14,7 @@ class MemberResources extends JsonResource
*/
public function toArray($request)
{
+ // dd($this->currentPlans);
return [
'id' => $this->id,
'memberId' => $this->member_id,
@@ -25,6 +26,7 @@ class MemberResources extends JsonResource
'percentage' => (!empty($this->currentPlan->limit_rules ?? 0)) ? (($this->claims_sum_total_claim / $this->currentPlan->limit_rules) * 100) : 0
],
'status' => $this->active,
+ 'service_type' => $this->currentPlans,
];
}
}
diff --git a/Modules/HospitalPortal/Http/Controllers/Api/ClaimRequestController.php b/Modules/HospitalPortal/Http/Controllers/Api/ClaimRequestController.php
index 3a607540..8d37763a 100644
--- a/Modules/HospitalPortal/Http/Controllers/Api/ClaimRequestController.php
+++ b/Modules/HospitalPortal/Http/Controllers/Api/ClaimRequestController.php
@@ -201,12 +201,21 @@ class ClaimRequestController extends Controller
{
$claimRequest = ClaimRequest::findOrFail($claim_request_id);
+ $service_code = $claimRequest->service_code;
if ($claimRequest->status != 'approved') {
throw new Exception("Belum Teverifikasi", 1);
}
$member = Member::findOrFail($claimRequest->member_id)
- ->load(['currentPlan', 'currentPolicy', 'currentPlan.corporateBenefits', 'currentPlan.corporateBenefits.benefit']);
+ ->load([
+ // 'currentPlan',
+ 'currentPlan' => function ($plan) use ($claim_request_id, $service_code) {
+ $plan->where('plans.service_code', $service_code);
+ },
+ 'currentPolicy',
+ 'currentPlan.corporateBenefits',
+ 'currentPlan.corporateBenefits.benefit'
+ ]);
$pdf = PDF::loadView('pdf.guaranted_leter', compact('member', 'claimRequest'));
return $pdf->download('Guaranted Letter - '.$member->full_name.'.pdf');
diff --git a/Modules/Internal/Http/Controllers/Api/ClaimController.php b/Modules/Internal/Http/Controllers/Api/ClaimController.php
index 1efbc506..eb300347 100644
--- a/Modules/Internal/Http/Controllers/Api/ClaimController.php
+++ b/Modules/Internal/Http/Controllers/Api/ClaimController.php
@@ -33,11 +33,17 @@ class ClaimController extends Controller
*/
public function index(Request $request)
{
+ $serviceCode = 'IP';
$claims = Claim::with([
'member',
'member.currentCorporate',
'member.currentCorporate.currentPolicy',
- 'member.currentPlan',
+ // 'member.currentPlan' => function($memberPlan) use ($serviceCode) {
+ // $memberPlan->where('plans.service_code', $serviceCode);
+ // },
+ 'member.currentPlan' => function($memberPlan) {
+ $memberPlan->join('claim_requests', 'claim_requests.service_code', '=', 'plans.service_code');
+ },
'diagnoses' => function ($diagnosis) {
$diagnosis->where('type', 'primary');
},
diff --git a/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php b/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php
index 69c7f0fa..20376706 100644
--- a/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php
+++ b/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php
@@ -380,7 +380,7 @@ class ClaimRequestController extends Controller
]);
} catch (\Exception $e) {
- return $e->getMessage();;
+ return $e->getMessage();
}
return $claimRequest;
@@ -643,20 +643,47 @@ class ClaimRequestController extends Controller
$memberList = DB::table('members')
->select('id','member_id','name')
->where("name", "like", "%$keyword%")
+ ->orWhere("member_id", "like", "%$keyword%")
->orderBy('created_at', 'asc')
->offset($offset)
->limit($limit)
->get();
+
+ $data = [];
+ if(count($memberList)>0){
+ $temp = [];
+ foreach($memberList as $d){
+ $serviceType = $this->getServiceMember($d->id);
+ $temp['id'] = $d->id;
+ $temp['member_id'] = $d->member_id;
+ $temp['name'] = $d->name;
+ $temp['service_type'] = $serviceType;
+
+ array_push($data, $temp);
+ }
+
+ }
return response()->json([
'error' => false,
'message' => "success",
'data' => [
- 'member_list'=> $memberList,
+ 'member_list'=> $data,
]
],200);
}
+ public function getServiceMember($id){
+ $service = DB::table('member_plans')
+ ->select('plans.service_code as code', 'services.name')
+ ->join('plans', 'member_plans.plan_id', '=', 'plans.id')
+ ->join('services', 'plans.service_code', '=', 'services.code')
+ ->where('member_id', $id)
+ ->get()
+ ->toArray();
+ return $service;
+ }
+
public static function getNextCode()
{
// $last_number = ClaimRequest::max('code');
diff --git a/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php b/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php
index 25f1a833..19fc5583 100644
--- a/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php
+++ b/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php
@@ -31,7 +31,7 @@ class CorporateMemberController extends Controller
* Display a listing of the resource.
* @return Renderable
*/
- public function index(Request $request, $corporate_id)
+ public function index(Request $request, $corporate_id )
{
$members = Member::query()
->joinCorporateEmployees('left')
@@ -44,7 +44,13 @@ class CorporateMemberController extends Controller
// return $claim->whereBetween('requested_at', [now()->startOfYear(), now()->endOfYear()]);
// return $claim->used(now()->startOfYear(), now()->endOfYear());
},
+ 'currentPlans',
'currentPlan',
+ // 'currentPlan' => function ($currentPlan) use ($service_code){
+ // return $currentPlan->where([
+ // 'plans.service_code' => $service_code
+ // ]);
+ // },
'currentPlan.benefits' => function ($benefit) use ($corporate_id){
return $benefit->where([
'corporate_benefits.active' => 1,
diff --git a/Modules/Internal/Routes/api.php b/Modules/Internal/Routes/api.php
index 43365856..39c74d75 100644
--- a/Modules/Internal/Routes/api.php
+++ b/Modules/Internal/Routes/api.php
@@ -273,6 +273,10 @@ Route::prefix('internal')->group(function () {
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/service/{id}', [ClaimRequestController::class, 'getServiceMember']);
+
+
});
Route::get('province', [ProvinceController::class, 'index']);
diff --git a/Modules/Internal/Services/MemberEnrollmentService.php b/Modules/Internal/Services/MemberEnrollmentService.php
index 2a57f484..a42dbd15 100644
--- a/Modules/Internal/Services/MemberEnrollmentService.php
+++ b/Modules/Internal/Services/MemberEnrollmentService.php
@@ -732,12 +732,25 @@ class MemberEnrollmentService
// Validate If Plan Exist
// TODO validate corporate plan
- $plan = Plan::query()
- ->where('code', $row['plan_id'])
- ->where('corporate_id', $corporate->id)
- ->first();
- if (!$plan) {
- throw new ImportRowException(__('enrollment.PLAN_NOT_FOUND'), 0, null, $row);
+ $plans = explode(",",$row['plan_id']);
+ if (count($plans) > 0) {
+ foreach($plans as $d){
+ $plan = Plan::query()
+ ->where('code', $d)
+ ->where('corporate_id', $corporate->id)
+ ->first();
+ if (!$plan) {
+ throw new ImportRowException(__('enrollment.PLAN_NOT_FOUND'), 0, null, $row);
+ }
+ }
+ } else {
+ $plan = Plan::query()
+ ->where('code', $row['plan_id'])
+ ->where('corporate_id', $corporate->id)
+ ->first();
+ if (!$plan) {
+ throw new ImportRowException(__('enrollment.PLAN_NOT_FOUND'), 0, null, $row);
+ }
}
try {
@@ -788,12 +801,40 @@ class MemberEnrollmentService
'status' => $row['employment_status']
]);
// Bisa disini penyebab data dobel
- $member->memberPlans()->create([
- 'plan_id' => $plan->id,
- 'status' => 'active',
- 'start' => $this->dateParser($row['member_effective_date']),
- 'end' => $this->dateParser($row['member_expiry_date']),
- ]);
+
+ $plans = explode(",",$row['plan_id']);
+ if (count($plans) > 0) {
+ foreach($plans as $d){
+ $plan = Plan::query()
+ ->where('code', $d)
+ ->where('corporate_id', $corporate->id)
+ ->first();
+ if (!$plan) {
+ throw new ImportRowException(__('enrollment.PLAN_NOT_FOUND'), 0, null, $row);
+ }
+ $member->memberPlans()->create([
+ 'plan_id' => $plan->id,
+ 'status' => 'active',
+ 'start' => $this->dateParser($row['member_effective_date']),
+ 'end' => $this->dateParser($row['member_expiry_date']),
+ ]);
+ }
+ } else {
+ $plan = Plan::query()
+ ->where('code', $row['plan_id'])
+ ->where('corporate_id', $corporate->id)
+ ->first();
+ if (!$plan) {
+ throw new ImportRowException(__('enrollment.PLAN_NOT_FOUND'), 0, null, $row);
+ }
+ $member->memberPlans()->create([
+ 'plan_id' => $plan->id,
+ 'status' => 'active',
+ 'start' => $this->dateParser($row['member_effective_date']),
+ 'end' => $this->dateParser($row['member_expiry_date']),
+ ]);
+ }
+
}
DB::commit();
} catch (\Exception $e) {
diff --git a/app/Models/Member.php b/app/Models/Member.php
index 6e8cba42..5b5363ed 100644
--- a/app/Models/Member.php
+++ b/app/Models/Member.php
@@ -148,18 +148,35 @@ class Member extends Model
return $this->hasManyThrough(Plan::class, MemberPlan::class, 'member_id', 'id', 'id', 'plan_id');
}
- public function currentPlan()
+ public function currentPlans()
{
return $this->hasManyThrough(Plan::class, MemberPlan::class, 'member_id', 'id', 'id', 'plan_id');
// ->latest(); // TODO Fix This
}
+ public function currentPlan()
+ {
+ return $this->hasOneThrough(Plan::class, MemberPlan::class, 'member_id', 'id', 'id', 'plan_id', )
+ ->latest();
+ // ->where('plans.service_code', $this->claimRequest->service_code); // TODO Fix This
+ }
+
// public function currentPlan()
// {
- // return $this->hasOneThrough(Plan::class, MemberPlan::class, 'member_id', 'id', 'id', 'plan_id')
- // ->latest(); // TODO Fix This
+ // return $this->hasOneThrough(
+ // Plan::class,
+ // MemberPlan::class,
+ // 'member_id',
+ // 'id',
+ // 'id',
+ // 'plan_id'
+ // )
+ // ->join('claim_requests', 'claim_requests.service_code', '=', 'plans.service_code')
+ // ->latest('claim_requests.created_at') // Atau sesuaikan dengan kolom timestamp yang sesuai
+ // ->select('plans.*');
// }
+
public function currentEmployeds()
{
return $this->hasOneThrough(CorporateEmployee::class, Person::class, 'nik', 'id', 'id', 'nik')
diff --git a/app/Services/CorporateMemberService.php b/app/Services/CorporateMemberService.php
index e026124a..1a7c65c7 100644
--- a/app/Services/CorporateMemberService.php
+++ b/app/Services/CorporateMemberService.php
@@ -95,7 +95,7 @@ class CorporateMemberService
// ->joinClaimRequests('right')
->joinCorporateEmployees('left')
->joinCorporateDivisions('left')
- ->with('currentPlan')
+ ->with('currentPlans')
->withSum('claims', 'total_claim')
->whereHas('employeds', function (Builder $corporateEmployee) use ($corporateId) {
$corporateEmployee->where('corporate_id', $corporateId);
@@ -125,7 +125,7 @@ class CorporateMemberService
}
})
// ->select(['members.id', 'members.person_id', 'members.member_id', 'members.name', 'corporate_divisions.name AS division_name', 'members.active', 'claim_requests.id', 'claim_requests.member_id', 'claim_requests.submission_date'])
- ->select(['members.id', 'members.person_id', 'members.member_id', 'members.name', 'corporate_divisions.name AS division_name', 'members.active'])
+ ->select(['members.id', 'members.person_id', 'members.member_id', 'members.name', 'corporate_divisions.name AS division_name', 'members.active', ])
->paginate($limit);
}
@@ -174,7 +174,7 @@ class CorporateMemberService
$query->getQuery()->orderBy($orderBy, $request->order);
})
- ->select(['members.id', 'members.person_id', 'members.member_id', 'members.name', 'member_plans.start AS start_date', 'member_plans.end AS end_date', 'plans.active', 'plans.service_code'])
+ ->select(['members.id', 'members.person_id', 'members.member_id', 'members.name', 'members.members_effective_date AS start_date', 'members.members_expire_date AS end_date', 'plans.active', 'plans.service_code'])
->selectRaw("(select sum(`claims`.`total_claim`) from `claims` where `members`.`id` = `claims`.`member_id` AND `claims`.`deleted_at` IS NULL) AS `claims_sum_total_claim`")
->paginate($limit);
}
diff --git a/frontend/client-portal/src/pages/ClaimSubmit/DialogDetailClaim.tsx b/frontend/client-portal/src/pages/ClaimSubmit/DialogDetailClaim.tsx
index a11e85d7..12941722 100644
--- a/frontend/client-portal/src/pages/ClaimSubmit/DialogDetailClaim.tsx
+++ b/frontend/client-portal/src/pages/ClaimSubmit/DialogDetailClaim.tsx
@@ -116,6 +116,7 @@ const DialogDetailClaim = ({ title, openDialog, setOpenDialog, data }: MuiDialog
personID: item.memberId,
personName: item.fullName,
typePatient: 'IP',
+ service_type: item.service_type,
anotherDocument: [],
fileRealInvoice: [],
laboratoryResult: [],
@@ -275,71 +276,46 @@ const DialogDetailClaim = ({ title, openDialog, setOpenDialog, data }: MuiDialog
+
-
-
-
-
-
-
-
-
-
- {row.personName}
-
- {row.personID}
-
+ {row.service_type.map((r, i) => {
+ return(
+
+
+ )
+ })}
+ {/* */}
- {/*
-
- Total Limit
-
-
-
- {fCurrency(8000000)} / {fCurrency(100000)}
-
- */}
-
-
-
-
+
{/* REAL INVOICE */}
diff --git a/frontend/client-portal/src/sections/alarm-center/user-profile/CardFamilyInformation.tsx b/frontend/client-portal/src/sections/alarm-center/user-profile/CardFamilyInformation.tsx
index a0803051..57b85db2 100644
--- a/frontend/client-portal/src/sections/alarm-center/user-profile/CardFamilyInformation.tsx
+++ b/frontend/client-portal/src/sections/alarm-center/user-profile/CardFamilyInformation.tsx
@@ -168,7 +168,7 @@ export default function CardFamilyInformation({ data }) {
Date of Birth
- {familyMember?.birth_date ? fDate(familyMember?.birth_date) : ''}
+ {familyMember?.birth_date != '0000-00-00' ? fDate(familyMember?.birth_date) : '-'}
{
if (row.patien_type == undefined) {
return true
@@ -251,34 +253,26 @@ export default function FormCreate() {
-
{/* Patien Type */}
-
-
-
-
-
-
+ {row.service_type.map((r,i) => {
+ const code = r.code
+ return (
+
+
+
+ )
+ })}
diff --git a/frontend/dashboard/src/pages/ClaimRequests/Components/FormCreateBtnUpload.tsx b/frontend/dashboard/src/pages/ClaimRequests/Components/FormCreateBtnUpload.tsx
index ac40b098..23df5ed5 100644
--- a/frontend/dashboard/src/pages/ClaimRequests/Components/FormCreateBtnUpload.tsx
+++ b/frontend/dashboard/src/pages/ClaimRequests/Components/FormCreateBtnUpload.tsx
@@ -32,7 +32,7 @@ export default function FormCreateBtnUpload ({handleChangeInputProp}: Props) {
style={{ display: 'none' }}
multiple
onChange={(event) => handleChangeInputProp(event.target.files ? event.target.files[0] : {})}
- accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel, text/plain, application/pdf"
+ accept="application/pdf"
/>
)
diff --git a/frontend/dashboard/src/pages/ClaimRequests/Detail.tsx b/frontend/dashboard/src/pages/ClaimRequests/Detail.tsx
index 6b4cac54..39aa66ab 100644
--- a/frontend/dashboard/src/pages/ClaimRequests/Detail.tsx
+++ b/frontend/dashboard/src/pages/ClaimRequests/Detail.tsx
@@ -92,17 +92,17 @@ export default function Detail() {
setOpenDialogSubmit(false);
}
const handleSubmitData = () => {
- if(fileInvoices.length > 0)
- {
+ // if(fileInvoices.length > 0)
+ // {
//submit data
axios
.post('claim-requests/'+id+'/approve')
.then((response) => {
- enqueueSnackbar('Success Submit Claim Request', { variant: 'success' });
- setOpenDialogSubmit(false);
+ enqueueSnackbar('Success Submit Claim Request', { variant: 'success' });
+ setOpenDialogSubmit(false);
})
.catch(({ response }) => {
- enqueueSnackbar(response.data.message ?? 'Something went wrong!', { variant: 'error' });
+ enqueueSnackbar(response.data.message ?? 'Something went wrong!', { variant: 'error' });
});
//Upload file invoices
const formData = makeFormData({
@@ -117,11 +117,11 @@ export default function Detail() {
.catch(({ response }) => {
enqueueSnackbar(response.data.message ?? 'Something Went Wrong', { variant: 'error' });
});
- }
- else
- {
- enqueueSnackbar('Please upload file invoice, before submit', { variant: 'warning' });
- }
+ // }
+ // else
+ // {
+ // enqueueSnackbar('Please upload file invoice, before submit', { variant: 'warning' });
+ // }
setTimeout(() =>
{
@@ -158,7 +158,7 @@ export default function Detail() {
- {!check_invoice ? (
+ {check_invoice ? (
Request Claim
@@ -231,7 +231,7 @@ export default function Detail() {
style={{ display: 'none' }}
multiple
onChange={handleInvoiceInputChange}
- accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel, text/plain, application/pdf"
+ accept="application/pdf"
/>
diff --git a/frontend/dashboard/src/pages/ClaimRequests/Model/Types.tsx b/frontend/dashboard/src/pages/ClaimRequests/Model/Types.tsx
index 41b4d18c..81b7da49 100644
--- a/frontend/dashboard/src/pages/ClaimRequests/Model/Types.tsx
+++ b/frontend/dashboard/src/pages/ClaimRequests/Model/Types.tsx
@@ -12,8 +12,14 @@ export type MemberListType = {
id : string,
member_id : string,
name : string,
+ service_type : ServiceType[],
patien_type? : string,
file_kondisi? : any[],
file_diagnosa? : any[],
- file_penunjang? : any[]
+ file_penunjang? : any[],
+}
+
+export type ServiceType = {
+ code : string
+ name : string
}
diff --git a/frontend/dashboard/src/pages/Claims/Detail.tsx b/frontend/dashboard/src/pages/Claims/Detail.tsx
index d4913a06..64af0228 100644
--- a/frontend/dashboard/src/pages/Claims/Detail.tsx
+++ b/frontend/dashboard/src/pages/Claims/Detail.tsx
@@ -353,7 +353,7 @@ export default function Detail() {
const defaultValues = useMemo(
() => ({
- service_code: 'OP',
+ service_code: claim?.service_code,
secondary_diagnosis_id: [{
value: {
name: "",
diff --git a/frontend/dashboard/src/pages/Corporates/Member/List.tsx b/frontend/dashboard/src/pages/Corporates/Member/List.tsx
index 9b6114ec..b2e0c17e 100644
--- a/frontend/dashboard/src/pages/Corporates/Member/List.tsx
+++ b/frontend/dashboard/src/pages/Corporates/Member/List.tsx
@@ -484,7 +484,18 @@ export default function CorporatePlanList({handleSubmitSuccess}) {
{row.name ? row.name : '-'}
- {row.current_plan?.code}
+
+ {/* {row.current_plan?.code} */}
+ {row.current_plans
+ ? row.current_plans.map((plan, index) => (
+ <>
+ {plan.code}
+ {index < row.current_plans.length - 1 && ', '}
+ >
+ ))
+ : '-'}
+
+
{row.activation_date ? row.activation_date : '-'}