Update Claim, Final LOG, Request LOG

This commit is contained in:
ivan-sim
2023-12-20 16:27:57 +07:00
parent 40371bd53a
commit 4defd4fa2f
28 changed files with 2779 additions and 216 deletions

View File

@@ -18,6 +18,7 @@ use Modules\HospitalPortal\Transformers\ClaimRequestShowResource;
use PDF;
use Illuminate\Support\Facades\DB;
use Modules\HospitalPortal\Helpers\ApiResponse;
use Illuminate\Support\Facades\Validator;
class ClaimRequestController extends Controller
{
@@ -63,90 +64,93 @@ class ClaimRequestController extends Controller
*/
public function store(Request $request)
{
$request->validate([
$data = [
'request_logs_id' => $request->request_logs_id,
'member_id' => $request->member_id,
'service_code' => $request->service_code
];
$validator = Validator::make($request->all(), [
'request_logs_id' => 'required',
'member_id' => 'required',
'service_code' => 'required'
], [
'request_logs_id.required' => trans('Validation.required',['attribute' => 'Request Log ID']),
'member_id.required' => trans('Validation.required',['attribute' => 'Member ID']),
'service_code.required' => trans('Validation.required',['attribute' => 'Service Code'])
]);
$code = $this->getNextCode();
$member = Member::find($request->member_id);
$newClaimRequest = ClaimRequestService::storeClaimRequest(
row: [],
code: $code,
member: $member,
paymentType: 'reimbursement',
serviceCode: $request->service_code
);
ClaimRequested::dispatch($newClaimRequest);
// Log History
$newClaimRequest->histories()->create([
'title' => 'New Claim Requested',
'description' => "Claim Requested for Member : {$member->member_id} - ({$member->full_name})",
'type' => 'info',
'system_origin' => 'hospital-portal'
]);
// Claim Log
DB::table('claim_logs')
->insert([
'claim_request_id' => $newClaimRequest->id,
'status' => 'requested',
'date' => date('Y-m-d H:i:s'),
'description' => "Claim Requested for Member : {$member->member_id} - ({$member->full_name})",
'system_origin' => 'hospital-portal',
'created_by' => auth()->user()->id,
'created_at' => date('Y-m-d H:i:s'),
'updated_at'=> date('Y-m-d H:i:s'),
]);
if ($request->hasFile('result_files')) {
foreach ($request->result_files as $file) {
$pathFile = File::storeFile('claim-result', $newClaimRequest->id, $file);
$newClaimRequest->files()->updateOrCreate([
'type' => 'claim-result',
'name' => File::getFileName('claim-result', $newClaimRequest->id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
}
if ($validator->fails())
{
return ApiResponse::apiResponse('Bad Request', $data, $validator->errors(), 400);
}
if ($request->hasFile('diagnosa_files')) {
foreach ($request->diagnosa_files as $file) {
$pathFile = File::storeFile('claim-diagnosis', $newClaimRequest->id, $file);
$newClaimRequest->files()->updateOrCreate([
'type' => 'claim-diagnosis',
'name' => File::getFileName('claim-diagnosis', $newClaimRequest->id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
else
{
$check_claim_requests = DB::table('claim_requests')
->where('claim_requests.request_log_id', '=', $request->request_logs_id)
->first();
if(!$check_claim_requests)
{
try {
DB::beginTransaction();
$code = $this->getNextCode();
$member = Member::find($request->member_id);
$newClaimRequest = ClaimRequestService::storeClaimRequest(
row: [],
code: $code,
member: $member,
paymentType: 'reimbursement',
serviceCode: $request->service_code,
requestLogID: $request->request_logs_id,
);
// Log History
$newClaimRequest->histories()->create([
'title' => 'New Claim Requested',
'description' => "Claim Requested for Member : {$member->member_id} - ({$member->full_name})",
'type' => 'info',
'system_origin' => 'hospital-portal'
]);
// Claim Log
DB::table('claim_logs')
->insert([
'claim_request_id' => $newClaimRequest->id,
'status' => 'requested',
'date' => date('Y-m-d H:i:s'),
'description' => "Claim Requested for Member : {$member->member_id} - ({$member->full_name})",
'system_origin' => 'hospital-portal',
'created_by' => auth()->user()->id,
'created_at' => date('Y-m-d H:i:s'),
'updated_at'=> date('Y-m-d H:i:s'),
]);
if ($request->hasFile('additional_files')) {
foreach ($request->additional_files as $file) {
$pathFile = File::storeFile('additional-files', $newClaimRequest->id, $file);
$newClaimRequest->files()->updateOrCreate([
'type' => 'additional-files',
'name' => File::getFileName('additional-files', $newClaimRequest->id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
}
}
DB::commit();
return ApiResponse::apiResponse('Success', $data, trans('Message.success'), 200);
}
catch (\Exception $e) {
DB::rollback();
return ApiResponse::apiResponse("Error", $data, $e->getMessage(), 500);
}
}
}
if ($request->hasFile('kondisi_files')) {
foreach ($request->kondisi_files as $file) {
$pathFile = File::storeFile('claim-kondisi', $newClaimRequest->id, $file);
$newClaimRequest->files()->updateOrCreate([
'type' => 'claim-kondisi',
'name' => File::getFileName('claim-kondisi', $newClaimRequest->id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
else
{
return ApiResponse::apiResponse("Error", $data, trans('Message.already_exists'), 409);
}
}
return ApiResponse::apiResponse("Success", [], trans('message.success'), 200);
}
/**
@@ -253,12 +257,13 @@ class ClaimRequestController extends Controller
->leftJoin('corporate_divisions', 'corporate_employees.division_id', '=', 'corporate_divisions.id')
->when($request->input('search'), function ($query, $search) {
$query->where(function ($query) use ($search) {
$query->orWhere('claim_requests.code', 'like', "%" . $search . "%")
$query->orWhere('claim_requests.code', 'like', "%" . ($search == 'outpatient' || $search == 'Outpatient' ? 'OP' : 'IP') . "%")
->orWhere('members.member_id', 'like', "%" . $search . "%")
->orWhere('members.name', 'like', "%" . $search . "%")
->orWhere('corporate_divisions.name', 'like', "%" . $search . "%")
->orWhere('claim_requests.status', 'like', "%" . $search . "%")
->orWhere('claim_requests.submission_date', 'like', "%" . $search . "%");
->orWhere('claim_requests.submission_date', 'like', "%" . $search . "%")
->orWhere('claims.status', 'like', "%" . $search . "%");
});
})
->when($request->has('orderBy'), function ($query) use ($request) {
@@ -296,7 +301,12 @@ class ClaimRequestController extends Controller
});
})
->select('members.id', 'claim_requests.code','members.member_id', 'members.name as full_name', 'corporate_divisions.name AS division_name',
->select(
'members.id',
'claim_requests.code',
'members.member_id',
'members.name as full_name',
'corporate_divisions.name AS division_name',
DB::raw('
CASE
WHEN claim_requests.status = "requested" THEN "requested"
@@ -308,7 +318,16 @@ class ClaimRequestController extends Controller
ELSE ""
END AS status
'),
'claim_requests.id AS claim_request_id', 'claim_requests.submission_date')
'claim_requests.id AS claim_request_id',
'claim_requests.submission_date',
DB::raw('
CASE
WHEN service_code = "OP" THEN "Outpatient"
WHEN service_code = "IP" THEN "Inpatient"
ELSE ""
END AS service_type
')
)
->paginate($limit);
return response()->json(Helper::paginateResources($results));
}