[Clien Portal] Alarm Center - Service Monitoring
This commit is contained in:
@@ -2,9 +2,8 @@
|
||||
|
||||
namespace Modules\Client\Transformers\AlarmCenter;
|
||||
|
||||
use App\Helpers\Helper;
|
||||
use App\Models\Service;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
use Illuminate\Support\Carbon;
|
||||
|
||||
class DataServiceMonitoring extends JsonResource
|
||||
{
|
||||
@@ -16,70 +15,89 @@ class DataServiceMonitoring extends JsonResource
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$serviceData = Service::where('code', $this->service_code)->first();
|
||||
if ($serviceData) {
|
||||
$serviceName = $serviceData->name;
|
||||
} else {
|
||||
$serviceName = $this->service_cod;
|
||||
}
|
||||
|
||||
$itemBenefits = $this->requestLogBenefits;
|
||||
$dataBenefit = [];
|
||||
if (count($itemBenefits)> 0){
|
||||
$totalIncurred = 0;
|
||||
$totalApprove = 0;
|
||||
$totalNotApporve = 0;
|
||||
$totalExcess = 0;
|
||||
foreach($itemBenefits as $itemBenefit){
|
||||
$totalIncurred += $itemBenefit->amount_incurred;
|
||||
$totalApprove += $itemBenefit->amount_approved;
|
||||
$totalNotApporve += $itemBenefit->amount_not_approved;
|
||||
$totalExcess += $itemBenefit->excess_paid;
|
||||
|
||||
}
|
||||
// array_push($dataBenefit, $itemBenefits);
|
||||
|
||||
$dataBenefit['total_incurred'] = $totalIncurred;
|
||||
$dataBenefit['total_approve'] = $totalApprove;
|
||||
$dataBenefit['total_not_approve'] = $totalNotApporve;
|
||||
$dataBenefit['total_excess'] = $totalExcess;
|
||||
|
||||
}
|
||||
|
||||
return [
|
||||
'companyName' => $this->member->currentCorporate->name ?? null,
|
||||
'serviceCode' => $this->service_code ?? null,
|
||||
'memberId' => $this->member->member_id ?? null,
|
||||
'fullName' => $this->member->full_name ?? null,
|
||||
'dateOfBirth' => $this->member->birth_date ?? null,
|
||||
'dateOfBirth' => $this->member->birth_date ?? null,
|
||||
'phoneNumber' => $this->person->phone ?? null,
|
||||
'email' => $this->member->email ?? ($this->member->person->email ?? null),
|
||||
'serviceName' => $serviceName,
|
||||
'benefitName' => $this->requestLogBenefit->benefit->description ?? null,
|
||||
'benefit' => $itemBenefits ?? null,
|
||||
'benefitTotal' => $dataBenefit ?? null,
|
||||
'serviceName' => $this->service->name ?? ($this->service_code ?? null),
|
||||
'benefits' => collect($this->requestLogBenefits)->map(function ($requestLogBenefit) {
|
||||
return [
|
||||
'amountIncurred' => $requestLogBenefit->amount_incurred,
|
||||
'amountApproved' => $requestLogBenefit->amount_approved,
|
||||
'amountNotAprroved' => $requestLogBenefit->amount_not_approved,
|
||||
'excessPaid' => $requestLogBenefit->excess_paid,
|
||||
'description' => $requestLogBenefit->keterangan,
|
||||
'name' => $requestLogBenefit->benefit->description,
|
||||
];
|
||||
})->all() ?? null,
|
||||
'benefitTotal' => $this->benefitTotal ?? null,
|
||||
'hospital' => $this->organization->name ?? null,
|
||||
'admissionDate' => $this->submission_date ?? null,
|
||||
'dischargeDate' => $this->discharge_date ?? null,
|
||||
'dailyMonitorings' => $this->when($this->service_code === 'IP', collect($this->requesLogDailyMonitorings)->map(function ($requesLogDailyMonitoring) {
|
||||
return [
|
||||
'date' => Helper::formatDateOnly($requesLogDailyMonitoring->created_at) ?? null,
|
||||
'time' => Helper::formatTimeOnly($requesLogDailyMonitoring->created_at) ?? null,
|
||||
'status' => 'Done' ?? null,
|
||||
'subject' => $requesLogDailyMonitoring->subject ?? null,
|
||||
'bodyTemperature' => $requesLogDailyMonitoring->body_temperature ?? null,
|
||||
'sistole' => $requesLogDailyMonitoring->sistole . 'mm[Hg]' ?? null,
|
||||
'diastole' => $requesLogDailyMonitoring->diastole . 'mm[Hg]' ?? null,
|
||||
'respirationRate' => $requesLogDailyMonitoring->respiration_rate . '/min' ?? null,
|
||||
'analysis' => $requesLogDailyMonitoring->analysis ?? null,
|
||||
'plan' => collect($requesLogDailyMonitoring->requestLogMedicalPlans)->map(function ($requestLogMedicalPlan) {
|
||||
return $requestLogMedicalPlan->type == 1 ? $requestLogMedicalPlan->plan : null;
|
||||
})->all(),
|
||||
];
|
||||
})->all()),
|
||||
// 'laboratoriumResults' => collect($this->dailyMonitorings)->map(function ($dailyMonitoring) {
|
||||
// $data['date'][Helper::formatDateOnly($dailyMonitoring->created_at)]
|
||||
// })->all() ?? null
|
||||
'dailyMonitorings' => $this->when($this->service_code === 'IP', collect($this->requestLogDailyMonitorings)
|
||||
->groupBy(function ($requestLogDailyMonitoring) {
|
||||
return $requestLogDailyMonitoring->created_at->format('d M Y');
|
||||
})
|
||||
->map(function ($groupedItems) {
|
||||
return collect($groupedItems)
|
||||
->map(function ($requestLogDailyMonitoring) {
|
||||
return [
|
||||
'time' => $requestLogDailyMonitoring->created_at->format('H:i') ?? null,
|
||||
'status' => 'Done' ?? null,
|
||||
'subject' => $requestLogDailyMonitoring->subject ?? null,
|
||||
'bodyTemperature' => $requestLogDailyMonitoring->body_temperature ?? null,
|
||||
'sistole' => $requestLogDailyMonitoring->sistole . 'mm[Hg]' ?? null,
|
||||
'diastole' => $requestLogDailyMonitoring->diastole . 'mm[Hg]' ?? null,
|
||||
'respirationRate' => $requestLogDailyMonitoring->respiration_rate . '/min' ?? null,
|
||||
'analysis' => $requestLogDailyMonitoring->analysis ?? null,
|
||||
'complaints' => $requestLogDailyMonitoring->complaints ?? null,
|
||||
'plans' => $this->when($requestLogDailyMonitoring->requestLogMedicalPlans, collect($requestLogDailyMonitoring->requestLogMedicalPlans)
|
||||
->map(function ($requestLogMedicalPlan) {
|
||||
return [
|
||||
'type' => $requestLogMedicalPlan->type,
|
||||
'plan' => $requestLogMedicalPlan->plan
|
||||
];
|
||||
})
|
||||
->sortBy('type')
|
||||
->all()) ?? null,
|
||||
];
|
||||
})
|
||||
->sortByDesc(function ($item) {
|
||||
return $item['time'];
|
||||
})
|
||||
->values();
|
||||
})
|
||||
->sortByDesc(function ($groupedItems, $date) {
|
||||
return Carbon::createFromFormat('d M Y', $date)->format('Y-m-d');
|
||||
})
|
||||
->all()) ?? null,
|
||||
'laboratoriumResults' => $this->whenLoaded('requestLogDailyMonitorings', collect($this->requestLogDailyMonitorings)
|
||||
->groupBy(function ($requestLogDailyMonitoring) {
|
||||
return Carbon::parse($requestLogDailyMonitoring->lab_date)->format('d M Y');
|
||||
})
|
||||
->map(function ($groupedItems) {
|
||||
return collect($groupedItems)
|
||||
->map(function ($requestLogDailyMonitoring) {
|
||||
return [
|
||||
'code' => $requestLogDailyMonitoring->code,
|
||||
'date' => Carbon::parse($requestLogDailyMonitoring->lab_date)->format('d M Y') ?? null,
|
||||
'examination' => $requestLogDailyMonitoring->examination ?? null,
|
||||
'location' => $requestLogDailyMonitoring->provider ?? null,
|
||||
];
|
||||
})
|
||||
->sortByDesc(function ($item) {
|
||||
return $item['code'];
|
||||
})
|
||||
->values();
|
||||
})
|
||||
->sortByDesc(function ($groupedItems, $date) {
|
||||
return Carbon::createFromFormat('d M Y', $date)->format('Y-m-d');
|
||||
})
|
||||
->all()) ?? null
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user