update listing dan edit claim management
This commit is contained in:
@@ -12,9 +12,13 @@ use App\Services\ClaimService;
|
||||
use Illuminate\Contracts\Support\Renderable;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Modules\HospitalPortal\Helpers\ApiResponse;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Modules\Internal\Transformers\ClaimShowResource;
|
||||
use Modules\Internal\Transformers\ClaimEditResource;
|
||||
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
|
||||
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
|
||||
|
||||
use PDF;
|
||||
|
||||
class ClaimController extends Controller
|
||||
@@ -23,22 +27,35 @@ class ClaimController extends Controller
|
||||
* Display a listing of the resource.
|
||||
* @return Renderable
|
||||
*/
|
||||
public function index()
|
||||
public function index(Request $request)
|
||||
{
|
||||
$claims = Claim::with([
|
||||
'member',
|
||||
'diagnoses' => function ($diagnosis) {
|
||||
return $diagnosis->where('type', 'primary');
|
||||
},
|
||||
'diagnoses.icd',
|
||||
'plan',
|
||||
'benefit',
|
||||
'claimRequest',
|
||||
'claimRequest.service'
|
||||
])
|
||||
->where('status', '!=', 'requested') // penjagaan agar approve baru masuk ke claim management
|
||||
->latest()
|
||||
->paginate(10);
|
||||
'member',
|
||||
'member.currentCorporate',
|
||||
'member.currentCorporate.currentPolicy',
|
||||
'member.currentPlan',
|
||||
'diagnoses' => function ($diagnosis) {
|
||||
$diagnosis->where('type', 'primary');
|
||||
},
|
||||
'diagnoses.icd',
|
||||
'benefit',
|
||||
'claimRequest',
|
||||
'claimRequest.service',
|
||||
])
|
||||
->when($request->search, function ($q, $search) {
|
||||
$q->where(function ($subQuery) use ($search) {
|
||||
$subQuery->whereHas('claimRequest', function ($claimRequest) use ($search) {
|
||||
$claimRequest->where('code', 'LIKE', "%" . $search . "%");
|
||||
})
|
||||
->orWhereHas('member', function ($member) use ($search) {
|
||||
$member->where('name', 'LIKE', "%" . $search . "%");
|
||||
});
|
||||
});
|
||||
})
|
||||
->where('status', '!=', 'requested') // Penjagaan agar approve baru masuk ke claim management
|
||||
->latest()
|
||||
->paginate(10);
|
||||
|
||||
|
||||
return response()->json($claims);
|
||||
}
|
||||
@@ -129,7 +146,32 @@ class ClaimController extends Controller
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
return view('internal::edit');
|
||||
$claim = Claim::query()
|
||||
->with([
|
||||
'member',
|
||||
'plan',
|
||||
'member.currentPlan',
|
||||
'member.currentPlan.benefits',
|
||||
'member.currentCorporate',
|
||||
'member.currentPolicy',
|
||||
// 'diagnosis',
|
||||
'diagnoses',
|
||||
'diagnoses.icd',
|
||||
'benefit',
|
||||
'files',
|
||||
'claimRequest',
|
||||
'claimRequest.files',
|
||||
'items',
|
||||
'items.claim_itemable',
|
||||
'encounters',
|
||||
'encounters.doctors',
|
||||
'encounters.primaryDiagnoses',
|
||||
'encounters.primaryDiagnoses.diagnosis',
|
||||
'encounters.healthcare'
|
||||
])
|
||||
->findOrFail($id);
|
||||
|
||||
return Helper::responseJson(ClaimEditResource::make($claim));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -140,7 +182,42 @@ class ClaimController extends Controller
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
//
|
||||
$customMessages = [
|
||||
'required' => 'Kolom :attribute wajib diisi.',
|
||||
'numeric' => 'Kolom :attribute harus berupa angka.',
|
||||
];
|
||||
|
||||
$data = [
|
||||
'benefit_desc' => $request->benefit_desc,
|
||||
'amount_incurred' => $request->amount_incurred,
|
||||
'amount_approved' => $request->amount_approved,
|
||||
'amount_not_approved' => $request->amount_not_approved,
|
||||
'excess_paid' => $request->excess_paid,
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'benefit_desc' => 'required',
|
||||
'amount_incurred' => 'required|numeric',
|
||||
'amount_approved' => 'required|numeric',
|
||||
'amount_not_approved' => 'required|numeric',
|
||||
'excess_paid' => 'required|numeric',
|
||||
], $customMessages);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return ApiResponse::apiResponse('Bad Request', $data, $validator->errors(), 400);
|
||||
}
|
||||
|
||||
// Validasi berhasil, lanjutkan dengan pembaruan data
|
||||
$claim = Claim::findOrFail($id);
|
||||
$claim->fill([
|
||||
'benefit_desc' => $request->benefit_desc,
|
||||
'amount_incurred' => $request->amount_incurred,
|
||||
'amount_approved' => $request->amount_approved,
|
||||
'amount_not_approved' => $request->amount_not_approved,
|
||||
'excess_paid' => $request->excess_paid,
|
||||
])->save();
|
||||
|
||||
return $claim;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -15,6 +15,8 @@ use Modules\Internal\Transformers\ClaimRequestShowResource;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use App\Services\ClaimRequestService;
|
||||
use App\Exceptions\ImportRowException;
|
||||
use App\Events\ClaimRequested;
|
||||
|
||||
|
||||
use App\Models\File;
|
||||
use App\Models\FilesMcu;
|
||||
@@ -85,7 +87,7 @@ class ClaimRequestController extends Controller
|
||||
'files',
|
||||
'member',
|
||||
'claim',
|
||||
'claim.organization',
|
||||
'organization',
|
||||
]);
|
||||
|
||||
return Helper::responseJson(data: ClaimRequestShowResource::make($claimRequest));
|
||||
@@ -109,30 +111,38 @@ class ClaimRequestController extends Controller
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$claim_id = ClaimRequest::find($id)->claim_id;
|
||||
$organization_id = Organization::where('code', $request->provider_code)->first();
|
||||
if (!$organization_id) {
|
||||
$claimRequest = ClaimRequest::findOrFail($id);
|
||||
$claimRequest->load([
|
||||
'histories' => function ($history) {
|
||||
$history->latest();
|
||||
},
|
||||
'files',
|
||||
'member',
|
||||
'claim',
|
||||
'organization',
|
||||
]);
|
||||
$organization = Organization::where('code', $request->provider_code)->first();
|
||||
if (!$organization) {
|
||||
return response()->json(['error' => true, 'message' => 'Data tidak ditemukan'], 404);
|
||||
}
|
||||
|
||||
$newClaimRequest = ClaimRequestService::updateClaimRequest(code: $code, member: $member, paymentType: 'reimbursement', serviceCode: $request->service_code);
|
||||
|
||||
ClaimRequested::dispatch($newClaimRequest);
|
||||
|
||||
$updateClaimRequest = ClaimRequestService::updateClaimRequest(organization_id: $organization->id, claim_request_id: $id);
|
||||
|
||||
ClaimRequested::dispatch($updateClaimRequest);
|
||||
// Log History
|
||||
$newClaimRequest->histories()->create([
|
||||
$updateClaimRequest->histories()->create([
|
||||
'title' => 'Update Claim Requested',
|
||||
'description' => "Update Claim Requested for Member : {$member->member_id} - ({$member->full_name})",
|
||||
'type' => 'info',
|
||||
'system_origin' => 'hospital-portal'
|
||||
'description' => "Update Claim Requested for Member : {$claimRequest->member->member_id} - ({$claimRequest->member->full_name})",
|
||||
'type' => 'update',
|
||||
'system_origin' => 'prime-center'
|
||||
]);
|
||||
|
||||
if ($request->hasFile('result_files')) {
|
||||
foreach ($request->result_files as $file) {
|
||||
$pathFile = File::storeFile('claim-result', $newClaimRequest->id, $file);
|
||||
$newClaimRequest->files()->updateOrCreate([
|
||||
$pathFile = File::storeFile('claim-result', $id, $file);
|
||||
$updateClaimRequest->files()->updateOrCreate([
|
||||
'type' => 'claim-result',
|
||||
'name' => File::getFileName('claim-result', $newClaimRequest->id, $file),
|
||||
'name' => File::getFileName('claim-result', $id, $file),
|
||||
'original_name' => $file->getClientOriginalName(),
|
||||
'extension' => $file->getClientOriginalExtension(),
|
||||
'path' => $pathFile,
|
||||
@@ -144,10 +154,10 @@ class ClaimRequestController extends Controller
|
||||
|
||||
if ($request->hasFile('diagnosa_files')) {
|
||||
foreach ($request->diagnosa_files as $file) {
|
||||
$pathFile = File::storeFile('claim-diagnosis', $newClaimRequest->id, $file);
|
||||
$newClaimRequest->files()->updateOrCreate([
|
||||
$pathFile = File::storeFile('claim-diagnosis', $id, $file);
|
||||
$updateClaimRequest->files()->updateOrCreate([
|
||||
'type' => 'claim-diagnosis',
|
||||
'name' => File::getFileName('claim-diagnosis', $newClaimRequest->id, $file),
|
||||
'name' => File::getFileName('claim-diagnosis', $id, $file),
|
||||
'original_name' => $file->getClientOriginalName(),
|
||||
'extension' => $file->getClientOriginalExtension(),
|
||||
'path' => $pathFile,
|
||||
@@ -159,10 +169,10 @@ class ClaimRequestController extends Controller
|
||||
|
||||
if ($request->hasFile('kondisi_files')) {
|
||||
foreach ($request->kondisi_files as $file) {
|
||||
$pathFile = File::storeFile('claim-kondisi', $newClaimRequest->id, $file);
|
||||
$newClaimRequest->files()->updateOrCreate([
|
||||
$pathFile = File::storeFile('claim-kondisi', $id, $file);
|
||||
$updateClaimRequest->files()->updateOrCreate([
|
||||
'type' => 'claim-kondisi',
|
||||
'name' => File::getFileName('claim-kondisi', $newClaimRequest->id, $file),
|
||||
'name' => File::getFileName('claim-kondisi', $id, $file),
|
||||
'original_name' => $file->getClientOriginalName(),
|
||||
'extension' => $file->getClientOriginalExtension(),
|
||||
'path' => $pathFile,
|
||||
@@ -171,6 +181,13 @@ class ClaimRequestController extends Controller
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'error' => false,
|
||||
'message' => 'Update succses',
|
||||
'data' => $updateClaimRequest],
|
||||
200);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -308,17 +325,18 @@ class ClaimRequestController extends Controller
|
||||
'Ingest Code' => $e->getCode(),
|
||||
'Ingest Note' => $e->getMessage(),
|
||||
]), $sheet->getName());
|
||||
} catch (\Exception $e) {
|
||||
// throw new \Exception($e);
|
||||
// Write Server Error to File
|
||||
// $import->read($fileRead);
|
||||
// $import->write($fileWrite, 'xsls');
|
||||
dd($e);
|
||||
$import->addArrayToRow(array_merge($row_data, [
|
||||
'Ingest Code' => 500,
|
||||
'Ingest Note' => env('APP_DEBUG') ? $e->getMessage() : 'Server Error',
|
||||
]), $sheet->getName());
|
||||
}
|
||||
}
|
||||
// catch (\Exception $e) {
|
||||
// // throw new \Exception($e);
|
||||
// // Write Server Error to File
|
||||
// // $import->read($fileRead);
|
||||
// // $import->write($fileWrite, 'xsls');
|
||||
// dd( $e->getMessage());
|
||||
// $import->addArrayToRow(array_merge($row_data, [
|
||||
// 'Ingest Code' => 500,
|
||||
// 'Ingest Note' => env('APP_DEBUG') ? $e->getMessage() : 'Server Error',
|
||||
// ]), $sheet->getName());
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user