Merge remote-tracking branch 'origin/staging'
This commit is contained in:
0
Modules/Internal/Http/Controllers/.gitkeep
Normal file → Executable file
0
Modules/Internal/Http/Controllers/.gitkeep
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/AppointmentController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/AppointmentController.php
Normal file → Executable file
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Internal\Http\Controllers\Api;
|
||||
|
||||
use App\Helpers\Helper;
|
||||
use App\Models\AuditTrail;
|
||||
use Illuminate\Contracts\Support\Renderable;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Modules\Internal\Transformers\AuditTrailResource;
|
||||
|
||||
class AuditTrailController extends Controller {
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
* @return Renderable
|
||||
*/
|
||||
public function index(Request $request, $id)
|
||||
{
|
||||
$audittrails = AuditTrail::query()
|
||||
->where('model', '=', $request->model)
|
||||
->where('model_id', '=', $id)
|
||||
// ->latest()
|
||||
->paginate(1000);
|
||||
return response()->json(Helper::paginateResources(AuditTrailResource::collection($audittrails)));
|
||||
}
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
$appointments = Appointment::query()
|
||||
->with('doctor.user', 'doctor.speciality', 'appointmentDetail', 'healthCare')
|
||||
->where('nID', $id)
|
||||
->first();
|
||||
return response()->json(new AppointmentResource($appointments));
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
?>
|
||||
0
Modules/Internal/Http/Controllers/Api/AuthController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/AuthController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/BenefitController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/BenefitController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/CityController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/CityController.php
Normal file → Executable file
162
Modules/Internal/Http/Controllers/Api/ClaimController.php
Normal file → Executable file
162
Modules/Internal/Http/Controllers/Api/ClaimController.php
Normal file → Executable file
@@ -13,6 +13,8 @@ use Illuminate\Contracts\Support\Renderable;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Modules\Internal\Transformers\ClaimShowResource;
|
||||
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
|
||||
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
|
||||
use PDF;
|
||||
|
||||
class ClaimController extends Controller
|
||||
@@ -177,6 +179,7 @@ class ClaimController extends Controller
|
||||
$order = 1;
|
||||
$data = [];
|
||||
$claim->items()->forceDelete();
|
||||
$totalClaim = 0;
|
||||
foreach ($request->benefit_items as $benefitItem) {
|
||||
$benefit = Benefit::find($benefitItem['id']);
|
||||
if ($benefit) {
|
||||
@@ -189,10 +192,16 @@ class ClaimController extends Controller
|
||||
'nominal_dicover' => $benefitItem['biaya_disetujui'] ?? 0,
|
||||
'nominal_total' => $benefitItem['biaya_disetujui'] ?? 0,
|
||||
]);
|
||||
$totalClaim += $benefitItem['biaya_disetujui'];
|
||||
}
|
||||
|
||||
$order++;
|
||||
}
|
||||
|
||||
// Update total
|
||||
$claim->total_claim = $totalClaim;
|
||||
$claim->save();
|
||||
|
||||
return Helper::responseJson([], message: "Item Claim berhasil di update");
|
||||
}
|
||||
|
||||
@@ -285,4 +294,157 @@ class ClaimController extends Controller
|
||||
|
||||
return $view;
|
||||
}
|
||||
|
||||
public function dataClaimReport(Request $request){
|
||||
$file_name = 'Data Claim Report';
|
||||
// Membuat penulis entitas Spout
|
||||
$writer = WriterEntityFactory::createXLSXWriter();
|
||||
// Membuka penulis untuk menulis ke file
|
||||
$writer->openToFile(public_path('files/CorporatePlan&BenefitImportData.xlsx'));
|
||||
|
||||
// Sheet 1
|
||||
$writer->getCurrentSheet()->setName('Worksheet');
|
||||
$headers_map_to_table_fields = Claim::$listing_doc_headers;
|
||||
$headerRow = WriterEntityFactory::createRowFromArray($headers_map_to_table_fields);
|
||||
$writer->addRow($headerRow);
|
||||
|
||||
$claims = Claim::with([
|
||||
'member',
|
||||
'member.currentPolicy',
|
||||
'member.currentPlan',
|
||||
'member.currentCorporate',
|
||||
'diagnoses' => function ($diagnosis) {
|
||||
return $diagnosis->where('type', 'primary');
|
||||
},
|
||||
'diagnoses.icd',
|
||||
'plan',
|
||||
'benefit',
|
||||
'claimRequest',
|
||||
'claimRequest.service'
|
||||
])
|
||||
// ->latest()
|
||||
->get()->toArray();
|
||||
foreach ($claims as $index => $row){
|
||||
$rowData = [
|
||||
'', // Count of Usage
|
||||
$row['code'], // Claim Number
|
||||
'', // 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
|
||||
$row['member']['name'], // Member Name
|
||||
$row['member']['record_type'], // Member Status
|
||||
$row['member']['birth_date'], // Date of brith
|
||||
$row['member']['member_id'], // Member Number
|
||||
$row['member']['current_corporate']? $row['member']['current_corporate']['code'] : '', // Institution Code
|
||||
'', // Invoice Line Number
|
||||
$row['status'], // Claim Status
|
||||
'', // Admission Date
|
||||
'', // Discharge Date
|
||||
'', // Date Of Service
|
||||
'', // Place Of Service
|
||||
'', // Los
|
||||
'', // Provider code
|
||||
'', // Treating Doctor Code
|
||||
'', // Treating Doctor Name
|
||||
'', // Doctor Title
|
||||
$row['diagnoses']?$row['diagnoses'][0]['icd']['name']: '-', // Diagnosis
|
||||
$row['plan']?$row['plan']['service_code']: '', // Service Code
|
||||
$row['plan']?$row['plan']['type'] : '', // ServiceType
|
||||
$row['claim_request'] ? $row['claim_request']['service']['description'] : '', // ServiceDescription
|
||||
'', // UnitPrice
|
||||
'', // Quantity
|
||||
'', // Tarif
|
||||
'', // Claimable amount
|
||||
'', // Paid by customer
|
||||
'', // HD Disc
|
||||
'', // Doctor Notes
|
||||
'', // ConsultationID Date
|
||||
'', // Pharmacy Code
|
||||
'', // Pharmacy Name
|
||||
'', // Pharmacy Permit Number
|
||||
'', // Pharmacy Address
|
||||
'', // Pharmacy Phone number
|
||||
'', // Delivery Address
|
||||
'', // Claimable Status
|
||||
$row['claim_request'] ? $row['claim_request']['service']['description'] : '', // ServiceDescription, // Benefit Code
|
||||
];
|
||||
|
||||
$row = WriterEntityFactory::createRowFromArray($rowData);
|
||||
$writer->addRow($row);
|
||||
}
|
||||
|
||||
// $dataClaim = Claim::query
|
||||
// $dataPlans = Claim::query()
|
||||
// ->filter($request->all())
|
||||
// ->where('corporate_id', $corporate_id)
|
||||
// // ->whereHas('corporatePlan', function ($corporatePlan) use ($corporate_id) {
|
||||
// // $corporatePlan->where('corporate_id', $corporate_id);
|
||||
// // })
|
||||
// // ->with('corporatePlan')
|
||||
// ->orderBy('corporate_plan_id', 'asc')
|
||||
// ->get()->toArray();
|
||||
// foreach ($dataPlans as $index => $row){
|
||||
// $rowData = [
|
||||
// $row['service_code'], // Service
|
||||
// $row['corporate_plan_id'], // Plan
|
||||
// $row['code'], // Customer plans
|
||||
// $row['type'], // Plan Type
|
||||
// $row['start'], // Start Date of Plan
|
||||
// $row['end'], // End Date of Plan
|
||||
// $row['require_referral'], // Referral
|
||||
// $row['referral_source'], // Referral Source
|
||||
// $row['referral_duration'], // Referral Duration
|
||||
// $row['family_plan'], // Family Plan
|
||||
// $row['family_plan_share_rules'], // Family Sharing Overflow
|
||||
// $row['limit_rules'], // Plan Limit
|
||||
// $row['layer'], // Layer ID
|
||||
// $row['layer_conditions'], // Layer Condition
|
||||
// $row['budget_type'], // Budget Type
|
||||
// $row['budget_code'], // Budget Code
|
||||
// $row['budget_conditions'], // Budget Condition
|
||||
// $row['surgery_limit'], // Surgery
|
||||
// $row['non_surgery_limit'], // Non Surgery
|
||||
// $row['max_claim_limit'], // Max/Claim
|
||||
// $row['max_claim_count'], // Max Count of Claim
|
||||
// $row['area_limit'], // Area
|
||||
// $row['limit_shared_plans'], // Shared Plan
|
||||
// $row['limit_shared_plan_type'], // Shared Plan Type
|
||||
// $row['cashless_percentage'], // Cashless(%)
|
||||
// $row['reimbursement_percentage'], // Reimbursement(%)
|
||||
// $row['digital_percentage'], // Digital(%)
|
||||
// $row['co_share_m_percentage'], // CoShareM(%)
|
||||
// $row['co_share_s_percentage'], // CoShareS(%)
|
||||
// $row['co_share_c_percentage'], // CoShareC(%)
|
||||
// $row['cashless_deductible'], // Cashless Deductible
|
||||
// $row['cashless_deductible'], // Reimbursement Deductible
|
||||
// $row['digital_deductible'], // Digital Deductible
|
||||
// $row['co_share_m_deductible'], // DeductibleM
|
||||
// $row['co_share_s_deductible'], // DeductibleS
|
||||
// $row['co_share_c_deductible'], // DeductibleC
|
||||
// $row['co_share_deductible_condition'], // Co-share & Deductible Condition
|
||||
// $row['msc'], // MSC
|
||||
// $row['genders'], // Gender
|
||||
// $row['min_age'], // Min Age
|
||||
// $row['max_age'], // Max Age
|
||||
// $row['rule_of_excess'], // Rule of Excess
|
||||
// $row['max_excess_covered'], // Max Excess Covered
|
||||
// $row['prorate_type'], // Prorate Type
|
||||
// $row['prorate_lookup'], // Prorate Lookup
|
||||
// $row['currency'], // Currency
|
||||
// $row['max_surgery_reinstatement_days'], // Reinstatement days for Surgery NonSurgery
|
||||
// $row['max_surgery_periode_days'], // Max Periode of Surgery Non Surgery
|
||||
// ];
|
||||
// $row = WriterEntityFactory::createRowFromArray($rowData);
|
||||
// $writer->addRow($row);
|
||||
|
||||
// }
|
||||
|
||||
$writer->close();
|
||||
|
||||
return Helper::responseJson([
|
||||
'file_name' => "Data Claim Report " . date('Y-m-d h:i:s'),
|
||||
"file_url" => url('files/CorporatePlan&BenefitImportData.xlsx')
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
0
Modules/Internal/Http/Controllers/Api/ClaimRequestController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/ClaimRequestController.php
Normal file → Executable file
1
Modules/Internal/Http/Controllers/Api/CorporateBenefitController.php
Normal file → Executable file
1
Modules/Internal/Http/Controllers/Api/CorporateBenefitController.php
Normal file → Executable file
@@ -34,6 +34,7 @@ class CorporateBenefitController extends Controller
|
||||
|
||||
$benefit = CorporateBenefit::findOrFail($benefit_id);
|
||||
$benefit->active = $request->active == '1';
|
||||
$benefit->reason = $request->reason;
|
||||
|
||||
if ($benefit->save()) {
|
||||
return response()->json([
|
||||
|
||||
192
Modules/Internal/Http/Controllers/Api/CorporateController.php
Normal file → Executable file
192
Modules/Internal/Http/Controllers/Api/CorporateController.php
Normal file → Executable file
@@ -19,6 +19,7 @@ use Illuminate\Http\Request;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
|
||||
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
|
||||
use App\Models\File;
|
||||
use Illuminate\Support\Facades\File as FacadesFile;
|
||||
use Illuminate\Support\Facades\Response;
|
||||
@@ -81,6 +82,7 @@ class CorporateController extends Controller
|
||||
$request->validate([
|
||||
'code' => 'required|regex:/^[a-zA-Z0-9]+$/',
|
||||
'name' => 'required',
|
||||
'payor_id' => 'required',
|
||||
// 'logo' => 'required',
|
||||
'policy_code' => 'required_with:policy_id',
|
||||
'policy_total_premi' => 'required_with:policy_code',
|
||||
@@ -100,6 +102,7 @@ class CorporateController extends Controller
|
||||
if ($request->has('policy_code') && !empty($request->policy_code)) {
|
||||
$newCorporate->policies()->create([
|
||||
'code' => $request->policy_code ?? NULL,
|
||||
'payor_id' => $request->payor_id ?? NULL,
|
||||
'total_premi' => $request->policy_total_premi ?? NULL,
|
||||
'minimal_deposit_percentage' => $request->policy_minimal_deposit_percentage ?? NULL,
|
||||
'minimal_deposit_net' => $request->policy_minimal_deposit_net ?? NULL,
|
||||
@@ -301,6 +304,7 @@ class CorporateController extends Controller
|
||||
{
|
||||
$request->validate([
|
||||
'code' => 'required|regex:/^[a-zA-Z0-9]+$/',
|
||||
'payor_id' => 'required',
|
||||
'name' => 'required',
|
||||
'policy_code' => 'required_with:policy_id',
|
||||
'policy_total_premi' => 'required_with:policy_code',
|
||||
@@ -327,6 +331,7 @@ class CorporateController extends Controller
|
||||
['id' => $request->policy_id],
|
||||
[
|
||||
'code' => $request->policy_code ?? NULL,
|
||||
'payor_id' => $request->payor_id ?? NULL,
|
||||
'total_premi' => $request->policy_total_premi ?? NULL,
|
||||
'minimal_deposit_percentage' => $request->policy_minimal_deposit_percentage ?? NULL,
|
||||
'minimal_deposit_net' => $request->policy_minimal_deposit_net ?? NULL,
|
||||
@@ -455,7 +460,6 @@ class CorporateController extends Controller
|
||||
} else if ($sheet->getName() == 'Benefit') {
|
||||
$corporateService->handleBenefitRow($corporate, $row_data);
|
||||
}
|
||||
|
||||
// Write Success Result to File
|
||||
$import->addArrayToRow(array_merge($row_data, [
|
||||
'Ingest Code' => 200,
|
||||
@@ -519,5 +523,191 @@ class CorporateController extends Controller
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function dataPlanBenefit(Request $request, $corporate_id){
|
||||
|
||||
$file_name = 'Corporate Plan and Benefit';
|
||||
// Membuat penulis entitas Spout
|
||||
$writer = WriterEntityFactory::createXLSXWriter();
|
||||
// Membuka penulis untuk menulis ke file
|
||||
$writer->openToFile(public_path('files/CorporatePlan&BenefitImportData.xlsx'));
|
||||
|
||||
// Sheet 1
|
||||
$writer->getCurrentSheet()->setName('Plans');
|
||||
$headers_map_to_table_fields = Plan::$listing_doc_headers;
|
||||
$headerRow = WriterEntityFactory::createRowFromArray($headers_map_to_table_fields);
|
||||
$writer->addRow($headerRow);
|
||||
|
||||
$dataPlans = Plan::query()
|
||||
->filter($request->all())
|
||||
->where('corporate_id', $corporate_id)
|
||||
// ->whereHas('corporatePlan', function ($corporatePlan) use ($corporate_id) {
|
||||
// $corporatePlan->where('corporate_id', $corporate_id);
|
||||
// })
|
||||
// ->with('corporatePlan')
|
||||
->orderBy('corporate_plan_id', 'asc')
|
||||
->get()->toArray();
|
||||
foreach ($dataPlans as $index => $row){
|
||||
$rowData = [
|
||||
$row['service_code'], // Service
|
||||
$row['corporate_plan_id'], // Plan
|
||||
$row['code'], // Customer plans
|
||||
$row['type'], // Plan Type
|
||||
$row['start'], // Start Date of Plan
|
||||
$row['end'], // End Date of Plan
|
||||
$row['require_referral'], // Referral
|
||||
$row['referral_source'], // Referral Source
|
||||
$row['referral_duration'], // Referral Duration
|
||||
$row['family_plan'], // Family Plan
|
||||
$row['family_plan_share_rules'], // Family Sharing Overflow
|
||||
$row['limit_rules'], // Plan Limit
|
||||
$row['layer'], // Layer ID
|
||||
$row['layer_conditions'], // Layer Condition
|
||||
$row['budget_type'], // Budget Type
|
||||
$row['budget_code'], // Budget Code
|
||||
$row['budget_conditions'], // Budget Condition
|
||||
$row['surgery_limit'], // Surgery
|
||||
$row['non_surgery_limit'], // Non Surgery
|
||||
$row['max_claim_limit'], // Max/Claim
|
||||
$row['max_claim_count'], // Max Count of Claim
|
||||
$row['area_limit'], // Area
|
||||
$row['limit_shared_plans'], // Shared Plan
|
||||
$row['limit_shared_plan_type'], // Shared Plan Type
|
||||
$row['cashless_percentage'], // Cashless(%)
|
||||
$row['reimbursement_percentage'], // Reimbursement(%)
|
||||
$row['digital_percentage'], // Digital(%)
|
||||
$row['co_share_m_percentage'], // CoShareM(%)
|
||||
$row['co_share_s_percentage'], // CoShareS(%)
|
||||
$row['co_share_c_percentage'], // CoShareC(%)
|
||||
$row['cashless_deductible'], // Cashless Deductible
|
||||
$row['cashless_deductible'], // Reimbursement Deductible
|
||||
$row['digital_deductible'], // Digital Deductible
|
||||
$row['co_share_m_deductible'], // DeductibleM
|
||||
$row['co_share_s_deductible'], // DeductibleS
|
||||
$row['co_share_c_deductible'], // DeductibleC
|
||||
$row['co_share_deductible_condition'], // Co-share & Deductible Condition
|
||||
$row['msc'], // MSC
|
||||
$row['genders'], // Gender
|
||||
$row['min_age'], // Min Age
|
||||
$row['max_age'], // Max Age
|
||||
$row['rule_of_excess'], // Rule of Excess
|
||||
$row['max_excess_covered'], // Max Excess Covered
|
||||
$row['prorate_type'], // Prorate Type
|
||||
$row['prorate_lookup'], // Prorate Lookup
|
||||
$row['currency'], // Currency
|
||||
$row['max_surgery_reinstatement_days'], // Reinstatement days for Surgery NonSurgery
|
||||
$row['max_surgery_periode_days'], // Max Periode of Surgery Non Surgery
|
||||
];
|
||||
$row = WriterEntityFactory::createRowFromArray($rowData);
|
||||
$writer->addRow($row);
|
||||
}
|
||||
|
||||
// Menutup penulis
|
||||
|
||||
// Sheet 2
|
||||
$writer->addNewSheetAndMakeItCurrent();
|
||||
$writer->getCurrentSheet()->setName('Benefit');
|
||||
$headers_map_to_table_fields = CorporateBenefit::$listing_doc_headers;
|
||||
$headerRow = WriterEntityFactory::createRowFromArray($headers_map_to_table_fields);
|
||||
$writer->addRow($headerRow);
|
||||
|
||||
$dataBenfit = CorporateBenefit::query()
|
||||
->where('corporate_id', $corporate_id)
|
||||
->with('benefit', 'plan')
|
||||
->orderBy('plan_id', 'asc')
|
||||
->get()->toArray();
|
||||
// dd($dataBenfit);
|
||||
foreach($dataBenfit as $index => $row){
|
||||
$rowData = [
|
||||
$row['benefit']['service_code'] ?? NULL, // "Service",
|
||||
$row['plan']['type'] ?? NULL, // "Plan",
|
||||
$row['benefit']['code'] ?? NULL, // "Benefit Code",
|
||||
$row['benefit']['code'] ?? NULL, // "Customer Benefit Code",
|
||||
$row['benefit']['description'] ?? NULL, // "Detail Benefit",
|
||||
$row['budget'], // "ASO/Budget",
|
||||
$row['budget_conditions'], // "Budget Condition",
|
||||
$row['budget_code'], // "Budget Code",
|
||||
$row['primary_benefit_code'], // "Primary benefit",
|
||||
$row['benefit_mode'], // "Benefit Mode",
|
||||
$row['room_class_coverage'], // "Room Class",
|
||||
$row['max_bed_coverage'], // "Max Bed",
|
||||
$row['tolerance_parameter'], // "Tolerance Paramater",
|
||||
$row['max_room_class'], // "Max. Room Class",
|
||||
$row['limit_amount'], // "Limit Value",
|
||||
$row['area_limit'], // "Area",
|
||||
$row['shared_benefit'], // "Shared Benefit With",
|
||||
$row['shared_benefit_type'], // "Shared Benefit Type",
|
||||
$row['msc'], // "MSC",
|
||||
$row['genders'], // "Gender",
|
||||
$row['min_age'], // "Min Age",
|
||||
$row['max_age'], // "Max Age",
|
||||
$row['max_frequency_period'], // "Freq. Period",
|
||||
$row['daily_frequency'], // "Daily Frequency",
|
||||
$row['weekly_frequency'], // "Weekly Frequency",
|
||||
$row['monthly_frequency'], // "Monthly Frequency",
|
||||
$row['yearly_frequency'], // "Yearly Frequency",
|
||||
$row['custom_frequency_days'], // "Custom Duration",
|
||||
$row['custom_duration_value'], // "Custom Duration Value",
|
||||
NULL, // "Cashless, Reimbursement",
|
||||
$row['high_plan_factor'], // "High Plan Factor",
|
||||
$row['pre_post_treatment'], // "Pre Post Treatment",
|
||||
$row['pre_treatment_days'], // "Pre Treatment",
|
||||
$row['post_treatment_days'], // "Post Treatment",
|
||||
$row['layer_type_1'], // "Layer Type 1",
|
||||
$row['layer_value_1'], // "Layer Value 1",
|
||||
$row['layer_type_2'], // "Layer Type 2",
|
||||
$row['layer_value_2'], // "Layer Value 2",
|
||||
$row['cashless_percentage'], // "Cashless (%)",
|
||||
$row['reimbursement_percentage'], // "Reimburse (%)",
|
||||
$row['digital_percentage'], // "Digital (%)",
|
||||
$row['co_share_m_percentage'], // "CoShareM (%)",
|
||||
$row['co_share_s_percentage'], // "CoShareS (%)",
|
||||
$row['co_share_c_deductible'], // "CoShareC (%)",
|
||||
$row['cashless_deductible'], // "Cashless Deductible",
|
||||
$row['reimbursement_deductible'], // "Reimbursement Deductible",
|
||||
$row['digital_deductible'], // "Digital Deductible",
|
||||
$row['co_share_m_deductible'], // "DeductibleM",
|
||||
$row['co_share_s_deductible'], // "DeductibleS",
|
||||
$row['co_share_c_deductible'], // "DeductibleC",
|
||||
$row['prorate_type'], // "Prorate Type",
|
||||
$row['prorate_lookup'], // "Prorate Lookup",
|
||||
$row['max_days_for_disability'], // "Max Days for Disability",
|
||||
$row['max_period_for_disability'], // "Max Periode of Disability",
|
||||
$row['currency'], // "Currency",
|
||||
$row['show_benefit_item'], // "Show Benefit Item",
|
||||
$row['show_benefit_value'], // "Show Benefit Value",
|
||||
];
|
||||
$row = WriterEntityFactory::createRowFromArray($rowData);
|
||||
$writer->addRow($row);
|
||||
}
|
||||
|
||||
$writer->close();
|
||||
|
||||
return Helper::responseJson([
|
||||
'file_name' => "Data Corporate Plan & Benefit List " . date('Y-m-d h:i:s'),
|
||||
"file_url" => url('files/CorporatePlan&BenefitImportData.xlsx')
|
||||
]);
|
||||
}
|
||||
|
||||
public function corporateCode(Request $request){
|
||||
$corporates = Corporate::query()
|
||||
->when($request->search, function ($query, $search) {
|
||||
return $query->where('name', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('code', 'LIKE', '%' . $search . '%');
|
||||
})
|
||||
->with('currentPolicy', 'subCorporates')
|
||||
->withCount([
|
||||
'employees',
|
||||
'corporateBenefits',
|
||||
'corporatePlans',
|
||||
|
||||
// 'claims'
|
||||
])
|
||||
->where('active', 1)
|
||||
->get()
|
||||
->pluck('code');
|
||||
|
||||
return $corporates;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
0
Modules/Internal/Http/Controllers/Api/CorporateFormulariumController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/CorporateFormulariumController.php
Normal file → Executable file
162
Modules/Internal/Http/Controllers/Api/CorporateMemberController.php
Normal file → Executable file
162
Modules/Internal/Http/Controllers/Api/CorporateMemberController.php
Normal file → Executable file
@@ -6,6 +6,7 @@ use App\Exceptions\ImportRowException;
|
||||
use App\Helpers\Helper;
|
||||
use App\Http\Resources\MemberDataTableResource;
|
||||
use App\Models\Corporate;
|
||||
use App\Models\CorporateEmployee;
|
||||
use App\Models\Member;
|
||||
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
|
||||
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
|
||||
@@ -45,11 +46,16 @@ class CorporateMemberController extends Controller
|
||||
// return $claim->used(now()->startOfYear(), now()->endOfYear());
|
||||
},
|
||||
'currentPlan',
|
||||
'currentPlan.benefits'
|
||||
'currentPlan.benefits' => function ($benefit) use ($corporate_id){
|
||||
return $benefit->where([
|
||||
'corporate_benefits.active' => 1,
|
||||
'corporate_benefits.corporate_id' => $corporate_id,
|
||||
// 'corporate_benefits.plan_id' => $corporate_id,
|
||||
]);
|
||||
}
|
||||
])
|
||||
->paginate()
|
||||
->appends($request->all());
|
||||
|
||||
return Helper::paginateResources(MemberDataTableResource::collection($members));
|
||||
}
|
||||
|
||||
@@ -63,6 +69,7 @@ class CorporateMemberController extends Controller
|
||||
|
||||
$member = Member::findOrFail($member_id);
|
||||
$member->active = $request->active == '1';
|
||||
$member->reason = $request->reason;
|
||||
|
||||
if ($member->save()) {
|
||||
return response()->json([
|
||||
@@ -179,11 +186,9 @@ class CorporateMemberController extends Controller
|
||||
$new_member_data[$headers_map_to_table_fields[$doc_headers_indexes[$header_index]]] = $cell->getValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
|
||||
$rowResponse = $this->memberEnrollmentService->handleImportRow($corporate, $new_member_data);
|
||||
|
||||
// Write Success Result to File
|
||||
$singleRow = WriterEntityFactory::createRow($this->memberEnrollmentService->makeResultRowWithResultFormat($rowResponse));
|
||||
$writer->addRow($singleRow);
|
||||
@@ -219,7 +224,6 @@ class CorporateMemberController extends Controller
|
||||
$writer->close();
|
||||
Storage::delete('temp/' . $file_name);
|
||||
// throw(404);
|
||||
|
||||
return [
|
||||
'total_success_row' => $imported_member_data,
|
||||
'total_failed_row' => count($failed_member_data),
|
||||
@@ -234,21 +238,145 @@ class CorporateMemberController extends Controller
|
||||
|
||||
public function generateLog(Request $request, $member_id)
|
||||
{
|
||||
$member = Member::findOrFail($member_id)
|
||||
->load([
|
||||
'currentPlan',
|
||||
'currentPolicy',
|
||||
'currentPlan.corporateBenefits' => function ($benefit) use ($request) {
|
||||
return $benefit->when($request->benefit_ids, function ($q, $ids) {
|
||||
return $q->whereIn('benefit_id', $ids);
|
||||
});
|
||||
},
|
||||
'currentPlan.corporateBenefits.benefit']);
|
||||
|
||||
$corporate_id = CorporateEmployee::where('member_id', $member_id)->value('corporate_id');
|
||||
// $member = Member::findOrFail($member_id)
|
||||
// ->load([
|
||||
// 'currentPlan',
|
||||
// 'currentPolicy',
|
||||
// 'currentPlan.corporateBenefits' => function ($benefit) use ($request) {
|
||||
// return $benefit->when($request->benefit_ids, function ($q, $ids) {
|
||||
|
||||
// $q->whereIn('benefit_id', $ids)
|
||||
// ->where([
|
||||
// 'corporate_benefits.active' => 1,
|
||||
// 'corporate_benefits.corporate_id' => $corporate_id,
|
||||
// ]);
|
||||
// });
|
||||
// },
|
||||
// // 'currentPlan.corporateBenefits.benefit'
|
||||
// ]);
|
||||
$member = Member::with([
|
||||
'currentPlan',
|
||||
'currentPolicy',
|
||||
'currentPlan.corporateBenefits' => function ($query) use ($request, $corporate_id) {
|
||||
$query->when($request->benefit_ids, function ($q, $ids) use ($corporate_id) {
|
||||
$q->whereIn('benefit_id', $ids)
|
||||
->where('active', 1)
|
||||
->where('corporate_id', $corporate_id);
|
||||
});
|
||||
},
|
||||
// 'currentPlan.corporateBenefits.benefit'
|
||||
])->findOrFail($member_id);
|
||||
|
||||
$dateOfAdmission = $request->date_of_admission ? Carbon::parse($request->date_of_admission) : now();
|
||||
|
||||
// return view('pdf.guaranted_leter', compact('member'));
|
||||
$pdf = PDF::loadView('pdf.guaranted_leter', compact(['member', 'dateOfAdmission']));
|
||||
return $pdf->download('Guaranted Letter - '.$member->full_name.'.pdf');
|
||||
}
|
||||
|
||||
public function generateMemberList(Request $request, $corporate_id){
|
||||
// Mendapatkan data yang akan diekspor (misalnya, dari database)
|
||||
$data = Member::with(['currentPlan', 'currentCorporate', 'division', 'employeds', 'currentPolicy'])
|
||||
// ->filter($request->all())
|
||||
// ->where('corporate_id', $corporate_id)
|
||||
->whereHas('employeds', function ($employeds) use ($corporate_id) {
|
||||
$employeds->where('corporate_id', $corporate_id);
|
||||
})->get()->toArray();
|
||||
// Membuat penulis entitas Spout
|
||||
$writer = WriterEntityFactory::createXLSXWriter();
|
||||
|
||||
// Membuka penulis untuk menulis ke file
|
||||
$writer->openToFile(public_path('files/CorporateMembershipList.xlsx'));
|
||||
// Menulis header kolom
|
||||
$headers_map_to_table_fields = $this->memberEnrollmentService->listing_doc_headers;
|
||||
$headerRow = WriterEntityFactory::createRowFromArray($headers_map_to_table_fields);
|
||||
|
||||
$writer->addRow($headerRow);
|
||||
// dd('test');
|
||||
// Menulis data
|
||||
if (!empty($data)) {
|
||||
foreach ($data as $item) {
|
||||
$rowData = [ $item['record_mode'], // Recode Mode
|
||||
$item['record_type'], // Recode Type
|
||||
$item['payor_id'], // Payor ID
|
||||
$item['member_id'], // Member ID
|
||||
$item['principal_id'], // Mapping ID
|
||||
NULL, // Link Medis Member ID
|
||||
$item['current_corporate']['code'] ?? null, // Corporate ID
|
||||
$item['employeds'][0]['nik'] ?? null, // NIK
|
||||
$item['division']['code'] ?? null, // Devision
|
||||
$item['employeds'][0]['branch_code'] ?? null, // Branch Code
|
||||
$item['bank_info'], // Bank Info
|
||||
$item['language'], // Language
|
||||
null, // Type of Work
|
||||
$item['race'], // Race
|
||||
$item['current_policy']['code'] ?? null, // Policy Number
|
||||
$item['marital_status'], // Marital Status
|
||||
$item['relation_with_principal'], // Relationship
|
||||
str_replace('-', '',$item['members_effective_date']), // Member effective date
|
||||
str_replace('-', '',$item['members_expire_date']), // Member expiry date
|
||||
NULL, // Faskes FKTP (First Level Provider) or Individual preferred provider
|
||||
NULL, // Faskes FKRTL (Next Level Provider) or Individual group preferred provider
|
||||
$item['bpjs_class'], // The Right Classes Room of BPJS Participants
|
||||
NULL, // Name of Faskes
|
||||
NULL, // Rule BPJSK
|
||||
NULL, // Internal Use
|
||||
$item['full_name'], // Member Name
|
||||
$item['address1'], // Address1
|
||||
$item['address2'], // Address2
|
||||
$item['address3'], // Address3
|
||||
$item['address4'], // Address4
|
||||
$item['city'], // City
|
||||
NULL, // State
|
||||
$item['postal_code'], // Post Code
|
||||
NULL, // Telephone - Mobile
|
||||
NULL, // Telephone - Res
|
||||
NULL, // Telephone - Office
|
||||
$item['nric'], // NRIC
|
||||
$item['passport_no'], // Passport No
|
||||
$item['passport_country'], // Passport Country
|
||||
$item['email'], // Email
|
||||
$item['identification_code'], // Identification Code
|
||||
$item['birth_date'], // Date of Birth
|
||||
$item['gender_code'], // Sex
|
||||
NULL, // Internal Use
|
||||
$item['current_plan']['code'] ?? null, // Plan-ID
|
||||
NULL, // Employment-Status
|
||||
NULL, // Internal Use
|
||||
NULL, // Internal Use
|
||||
NULL,// Internal Use
|
||||
str_replace('-', '',$item['terminated_date']), // Date Terminated
|
||||
$item['pre_existing'], // Pre Existing
|
||||
$item['bpjs_id'], // BPJS ID
|
||||
$item['endorsement_date'], // Endorsement Date
|
||||
$item['remarks'], // Remarks
|
||||
NULL, // Internal Use
|
||||
NULL,// Member Since
|
||||
NULL,// Internal Use
|
||||
$item['policy_in_force'], // Policy Inforce
|
||||
NULL, // Member Suspended
|
||||
str_replace('-', '',$item['activation_date']), // Activation Date
|
||||
NULL, // Internal Use
|
||||
$item['start_no_claim'], // StartNoClaim
|
||||
$item['end_no_claim'], // EndNoClaim
|
||||
NULL, // Option Mode
|
||||
];
|
||||
$row = WriterEntityFactory::createRowFromArray($rowData);
|
||||
$writer->addRow($row);
|
||||
}
|
||||
}
|
||||
|
||||
// Menutup penulis
|
||||
$writer->close();
|
||||
// dd('test');
|
||||
// Mengembalikan response untuk mengunduh file
|
||||
$filePath = public_path('files/CorporateMembershipList.xlsx');
|
||||
// dd($filePath);
|
||||
// Mengembalikan response untuk mengunduh file
|
||||
return Helper::responseJson([
|
||||
'file_name' => "Corporate Plan & Benefit List " . date('Y-m-d h:i:s'),
|
||||
"file_url" => url('files/CorporateMembershipList.xlsx')
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
1
Modules/Internal/Http/Controllers/Api/CorporatePlanController.php
Normal file → Executable file
1
Modules/Internal/Http/Controllers/Api/CorporatePlanController.php
Normal file → Executable file
@@ -35,6 +35,7 @@ class CorporatePlanController extends Controller
|
||||
|
||||
$plan = CorporatePlan::findOrFail($plan_id);
|
||||
$plan->active = $request->active == '1';
|
||||
$plan->reason = $request->reason;
|
||||
|
||||
if ($plan->save()) {
|
||||
return response()->json([
|
||||
|
||||
4
Modules/Internal/Http/Controllers/Api/CorporateServiceController.php
Normal file → Executable file
4
Modules/Internal/Http/Controllers/Api/CorporateServiceController.php
Normal file → Executable file
@@ -136,6 +136,7 @@ class CorporateServiceController extends Controller
|
||||
|
||||
public function corporateServiceUpdate(Request $request, $corporate_id, $service_code)
|
||||
{
|
||||
// dd($request->all);
|
||||
// $corporate = Corporate::findOrFail($corporate_id);
|
||||
$corporateService = CorporateService::query()
|
||||
->where('corporate_id', $corporate_id)
|
||||
@@ -143,7 +144,8 @@ class CorporateServiceController extends Controller
|
||||
// ->with('configs', 'service')
|
||||
->first();
|
||||
$corporateService->fill([
|
||||
'status' => $request->status == 'active' ? 'active' : 'inactive'
|
||||
'status' => $request->status == 'active' ? 'active' : 'inactive',
|
||||
'reason' => $request->reason
|
||||
]);
|
||||
$corporateService->save();
|
||||
|
||||
|
||||
0
Modules/Internal/Http/Controllers/Api/DiagnosisController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DiagnosisController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DiagnosisExclusionController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DiagnosisExclusionController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DistrictController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DistrictController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DivisionController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DivisionController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DoctorController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DoctorController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DrugController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/DrugController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/FormulariumController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/FormulariumController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/Linksehat/PaymentController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/Linksehat/PaymentController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/LivechatController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/LivechatController.php
Normal file → Executable file
8
Modules/Internal/Http/Controllers/Api/MemberController.php
Normal file → Executable file
8
Modules/Internal/Http/Controllers/Api/MemberController.php
Normal file → Executable file
@@ -13,10 +13,14 @@ class MemberController extends Controller
|
||||
* Display a listing of the resource.
|
||||
* @return Renderable
|
||||
*/
|
||||
public function index()
|
||||
public function index(Request $request)
|
||||
{
|
||||
return Member::query()
|
||||
->with('currentPlan')
|
||||
->when($request->search, function ($query, $search) {
|
||||
return $query->where('name', 'LIKE', '%' . $search . '%')
|
||||
->orWhere('member_id', 'LIKE', '%' . $search . '%');
|
||||
})
|
||||
->with('currentPlan', 'currentCorporate')
|
||||
->paginate();
|
||||
}
|
||||
|
||||
|
||||
0
Modules/Internal/Http/Controllers/Api/OptionController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/OptionController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/OrganizationController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/OrganizationController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/PlanController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/PlanController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/ProvinceController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/ProvinceController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/SpecialityController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/SpecialityController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/VillageController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/Api/VillageController.php
Normal file → Executable file
24
Modules/Internal/Http/Controllers/ClaimEncounterController.php
Normal file → Executable file
24
Modules/Internal/Http/Controllers/ClaimEncounterController.php
Normal file → Executable file
@@ -12,6 +12,7 @@ use Illuminate\Routing\Controller;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Modules\Internal\Transformers\EncounterResource;
|
||||
|
||||
|
||||
class ClaimEncounterController extends Controller
|
||||
{
|
||||
/**
|
||||
@@ -31,6 +32,13 @@ class ClaimEncounterController extends Controller
|
||||
{
|
||||
return view('internal::create');
|
||||
}
|
||||
public function getAllData()
|
||||
{
|
||||
$encounters = Encounter::with('claim.member')->get();
|
||||
|
||||
return Helper::responseJson(data: EncounterResource::collection($encounters), message: 'Data berhasil diambil');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
@@ -255,6 +263,22 @@ class ClaimEncounterController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
public function x`counters($claim_id)
|
||||
{
|
||||
$claim = Claim::findOrFail($claim_id);
|
||||
$encounters = $claim->encounters()->get();
|
||||
return response()->json($encounters);
|
||||
}
|
||||
|
||||
public function getEncounterData($encounter_id)
|
||||
{
|
||||
$encounter = Encounter::with('claim.member')->findOrFail($encounter_id);
|
||||
|
||||
return Helper::responseJson(data: EncounterResource::make($encounter), message: 'Data berhasil diambil');
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
* @param int $id
|
||||
|
||||
0
Modules/Internal/Http/Controllers/InternalController.php
Normal file → Executable file
0
Modules/Internal/Http/Controllers/InternalController.php
Normal file → Executable file
Reference in New Issue
Block a user