133 lines
5.5 KiB
PHP
Executable File
133 lines
5.5 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Modules\Internal\Transformers;
|
|
|
|
use Illuminate\Http\Resources\Json\JsonResource;
|
|
use Illuminate\Support\Str;
|
|
use App\Models\Service;
|
|
use App\Models\MemberPlan;
|
|
use App\Models\Plan;
|
|
use App\Models\Icd;
|
|
use App\Models\CorporateBenefit;
|
|
use App\Models\RequestLogBenefit;
|
|
use App\Models\CorporatePolicy;
|
|
use App\Models\RequestLogMedicine;
|
|
use App\Models\Organization;
|
|
use App\Helpers\Helper;
|
|
|
|
class ClaimRequestShowResource extends JsonResource
|
|
{
|
|
/**
|
|
* Transform the resource into an array.
|
|
*
|
|
* @param \Illuminate\Http\Request
|
|
* @return array
|
|
*/
|
|
public function toArray($request)
|
|
{
|
|
$data = parent::toArray($request);
|
|
$corporateId = $data['member']['current_plan']['corporate_id'] ?? 0;
|
|
$planMember = MemberPlan::where('member_id', $data['member_id'])->get('plan_id');
|
|
|
|
$planId = Plan::whereIn('id', $planMember)->where('service_code', $data['service_code'])->first();
|
|
$benefit = CorporateBenefit::with('benefit')->where('plan_id', $planId->id)->get()->toArray();
|
|
$benefitDetailLog = RequestLogBenefit::with('benefit')->where('request_log_id', $data['request_log_id'])->get()->toArray();
|
|
$medicineDetailLog = RequestLogMedicine::where('request_log_id', $data['request_log_id'])->get()->toArray();
|
|
|
|
$benefitData = [];
|
|
|
|
$total_amount_incurred = 0;
|
|
$total_amount_approved = 0;
|
|
$total_amount_not_approved = 0;
|
|
$total_excess_paid = 0;
|
|
|
|
if (count($benefit)){
|
|
foreach($benefit as $row){
|
|
array_push($benefitData, $row['benefit']);
|
|
}
|
|
}
|
|
|
|
if (count($benefitDetailLog)){
|
|
foreach($benefitDetailLog as $row){
|
|
$total_amount_incurred += $row['amount_incurred'];
|
|
$total_amount_approved += $row['amount_approved'];
|
|
$total_amount_not_approved += $row['amount_not_approved'];
|
|
$total_excess_paid += $row['excess_paid'];
|
|
}
|
|
}
|
|
|
|
// Policy Number
|
|
$policyNumber = CorporatePolicy::query()
|
|
->where('corporate_id', $corporateId)
|
|
->first();
|
|
|
|
$requestLogData = [
|
|
'id' => $data['request_log_id'],
|
|
'benefit' => $benefitData,
|
|
'benefit_data' => $benefitDetailLog,
|
|
'total_amount_incurred' => $total_amount_incurred,
|
|
'total_amount_approved' => $total_amount_approved,
|
|
'total_amount_not_approved' => $total_amount_not_approved,
|
|
'total_amount_incurred' => $total_amount_incurred,
|
|
'total_excess_paid' => $total_excess_paid,
|
|
];
|
|
|
|
$isReversal = false;
|
|
$isRole = auth()->user()->role_id;
|
|
if ($data['request_log']['status'] == 'approved' &&
|
|
$data['request_log']['status_final_log'] == 'approved' &&
|
|
$data['status'] == 'approved' &&
|
|
$data['status_claim_management'] == 'approved' &&
|
|
$isRole != 1 // is admin
|
|
){
|
|
$isReversal = true;
|
|
}
|
|
|
|
$icd = [];
|
|
if($data['request_log']['diagnosis']){
|
|
$diagnosis = explode(',', $data['request_log']['diagnosis']);
|
|
$icd = Icd::query()
|
|
->whereIn('code', $diagnosis)
|
|
->select('code', 'name')
|
|
->get();
|
|
}
|
|
|
|
|
|
$response = [
|
|
'id' => $data['id'],
|
|
'code' => $data['code'],
|
|
'status' => $data['status'],
|
|
'request_log_id' => $data['request_log_id'],
|
|
'request_log' => $requestLogData,
|
|
'provider' => $data['request_log']['organization']['name'],
|
|
'provider_code' => $data['request_log']['organization']['code'],
|
|
'member_id' => $data['request_log']['member']['member_id'],
|
|
'policy_number' => $policyNumber->code ? $policyNumber->code : '-',
|
|
'name' => $data['request_log']['member']['name'],
|
|
'date_of_birth' => $data['request_log']['member']['birth_date'],
|
|
'gender' => $data['request_log']['member']['gender'],
|
|
'marital_status' => $data['request_log']['member']['status_marital'],
|
|
'member_type' => Helper::memberType($data['request_log']['member']['record_type']),
|
|
'principal_id' => $data['request_log']['member']['principal_id'] ? $data['request_log']['member']['principal_id'] : '-',
|
|
'principal_name' => $data['request_log']['member']['principal_id'] ? Helper::principalName($data['request_log']['member']['principal_id']) : '-',
|
|
'relation_with_principal' => Helper::relationWithPrincipal($data['request_log']['member']['relation_with_principal']),
|
|
'submission_date' => $data['submission_date'],
|
|
'no_identitas' => $data['request_log']['member']['nric'],
|
|
'keterangan' => $data['request_log']['keterangan'],
|
|
'hak_kamar_pasien' => $data['request_log']['hak_kamar_pasien'],
|
|
'penempatan_kamar' => $data['request_log']['penempatan_kamar'],
|
|
'catatan' => $data['request_log']['catatan'],
|
|
'service_type' => Helper::serviceName( $data['request_log']['service_code']),
|
|
'claim_method' => $data['request_log']['payment_type'],
|
|
'files' => $data['request_log']['files'],
|
|
'reason_decline' => $data['reason_decline'],
|
|
'diagnosis' => $icd,
|
|
// 'benefit_data' => $benefitDetailLog,
|
|
'is_reversal' => $isReversal, // untuk penjagaan, jika true tidak bisa di edit/hapus lagi
|
|
];
|
|
|
|
|
|
return $response;
|
|
}
|
|
}
|