[Clien Portal] Alarm Center - Service Monitoring
This commit is contained in:
@@ -201,15 +201,45 @@ class CorporateMemberController extends Controller
|
|||||||
|
|
||||||
public function serviceMonitoring(int $corporate_id, int $request_log_id)
|
public function serviceMonitoring(int $corporate_id, int $request_log_id)
|
||||||
{
|
{
|
||||||
// $data = Claim::where('id', $claim_id)->first();
|
|
||||||
|
|
||||||
// return $request_log_id;
|
|
||||||
|
|
||||||
$data = RequestLog::query()
|
$data = RequestLog::query()
|
||||||
->with(['member' => ['currentCorporate', 'person'], 'organization', 'requestLogBenefits' => ['benefit'], 'requestLogDailyMonitorings' => ['requestLogMedicalPlans'],])
|
->with([
|
||||||
->find($request_log_id);
|
'member:id,member_id,person_id,birth_date,email,name_prefix,name,name_suffix' => [
|
||||||
|
'currentCorporate',
|
||||||
|
'person:id,email,name_prefix,name,name_suffix,phone'
|
||||||
|
],
|
||||||
|
'organization:id,name',
|
||||||
|
'requestLogBenefits:id,request_log_id,benefit_id,amount_incurred,amount_approved,amount_not_approved,excess_paid,keterangan' => [
|
||||||
|
'benefit'
|
||||||
|
],
|
||||||
|
'requestLogDailyMonitorings:id,request_log_id,created_at,subject,body_temperature,sistole,diastole,respiration_rate,analysis,lab_date,provider,examination' => [
|
||||||
|
'requestLogMedicalPlans:request_log_daily_monitoring_id,plan,type'
|
||||||
|
],
|
||||||
|
'service:code,name',
|
||||||
|
])
|
||||||
|
->find($request_log_id, ['id', 'submission_date', 'discharge_date', 'member_id', 'service_code', 'organization_id']);
|
||||||
|
|
||||||
|
$dataBenefit = [];
|
||||||
|
if (count($data->requestLogBenefits) > 0) {
|
||||||
|
$totalIncurred = 0;
|
||||||
|
$totalApprove = 0;
|
||||||
|
$totalNotApporve = 0;
|
||||||
|
$totalExcess = 0;
|
||||||
|
|
||||||
|
foreach ($data->requestLogBenefits as $itemBenefit) {
|
||||||
|
$totalIncurred += $itemBenefit->amount_incurred;
|
||||||
|
$totalApprove += $itemBenefit->amount_approved;
|
||||||
|
$totalNotApporve += $itemBenefit->amount_not_approved;
|
||||||
|
$totalExcess += $itemBenefit->excess_paid;
|
||||||
|
}
|
||||||
|
|
||||||
|
$dataBenefit['totalIncurred'] = $totalIncurred;
|
||||||
|
$dataBenefit['totalApprove'] = $totalApprove;
|
||||||
|
$dataBenefit['totalNotApprove'] = $totalNotApporve;
|
||||||
|
$dataBenefit['totalExcess'] = $totalExcess;
|
||||||
|
}
|
||||||
|
|
||||||
|
$data->benefitTotal = $dataBenefit;
|
||||||
|
|
||||||
// return $data;
|
|
||||||
return Helper::responseJson(DataServiceMonitoring::make($data));
|
return Helper::responseJson(DataServiceMonitoring::make($data));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,8 @@
|
|||||||
|
|
||||||
namespace Modules\Client\Transformers\AlarmCenter;
|
namespace Modules\Client\Transformers\AlarmCenter;
|
||||||
|
|
||||||
use App\Helpers\Helper;
|
|
||||||
use App\Models\Service;
|
|
||||||
use Illuminate\Http\Resources\Json\JsonResource;
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
use Illuminate\Support\Carbon;
|
||||||
|
|
||||||
class DataServiceMonitoring extends JsonResource
|
class DataServiceMonitoring extends JsonResource
|
||||||
{
|
{
|
||||||
@@ -16,70 +15,89 @@ class DataServiceMonitoring extends JsonResource
|
|||||||
*/
|
*/
|
||||||
public function toArray($request)
|
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 [
|
return [
|
||||||
'companyName' => $this->member->currentCorporate->name ?? null,
|
'companyName' => $this->member->currentCorporate->name ?? null,
|
||||||
|
'serviceCode' => $this->service_code ?? null,
|
||||||
'memberId' => $this->member->member_id ?? null,
|
'memberId' => $this->member->member_id ?? null,
|
||||||
'fullName' => $this->member->full_name ?? null,
|
'fullName' => $this->member->full_name ?? null,
|
||||||
'dateOfBirth' => $this->member->birth_date ?? null,
|
'dateOfBirth' => $this->member->birth_date ?? null,
|
||||||
'dateOfBirth' => $this->member->birth_date ?? null,
|
|
||||||
'phoneNumber' => $this->person->phone ?? null,
|
'phoneNumber' => $this->person->phone ?? null,
|
||||||
'email' => $this->member->email ?? ($this->member->person->email ?? null),
|
'email' => $this->member->email ?? ($this->member->person->email ?? null),
|
||||||
'serviceName' => $serviceName,
|
'serviceName' => $this->service->name ?? ($this->service_code ?? null),
|
||||||
'benefitName' => $this->requestLogBenefit->benefit->description ?? null,
|
'benefits' => collect($this->requestLogBenefits)->map(function ($requestLogBenefit) {
|
||||||
'benefit' => $itemBenefits ?? null,
|
return [
|
||||||
'benefitTotal' => $dataBenefit ?? null,
|
'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,
|
'hospital' => $this->organization->name ?? null,
|
||||||
'admissionDate' => $this->submission_date ?? null,
|
'admissionDate' => $this->submission_date ?? null,
|
||||||
'dischargeDate' => $this->discharge_date ?? null,
|
'dischargeDate' => $this->discharge_date ?? null,
|
||||||
'dailyMonitorings' => $this->when($this->service_code === 'IP', collect($this->requesLogDailyMonitorings)->map(function ($requesLogDailyMonitoring) {
|
'dailyMonitorings' => $this->when($this->service_code === 'IP', collect($this->requestLogDailyMonitorings)
|
||||||
return [
|
->groupBy(function ($requestLogDailyMonitoring) {
|
||||||
'date' => Helper::formatDateOnly($requesLogDailyMonitoring->created_at) ?? null,
|
return $requestLogDailyMonitoring->created_at->format('d M Y');
|
||||||
'time' => Helper::formatTimeOnly($requesLogDailyMonitoring->created_at) ?? null,
|
})
|
||||||
'status' => 'Done' ?? null,
|
->map(function ($groupedItems) {
|
||||||
'subject' => $requesLogDailyMonitoring->subject ?? null,
|
return collect($groupedItems)
|
||||||
'bodyTemperature' => $requesLogDailyMonitoring->body_temperature ?? null,
|
->map(function ($requestLogDailyMonitoring) {
|
||||||
'sistole' => $requesLogDailyMonitoring->sistole . 'mm[Hg]' ?? null,
|
return [
|
||||||
'diastole' => $requesLogDailyMonitoring->diastole . 'mm[Hg]' ?? null,
|
'time' => $requestLogDailyMonitoring->created_at->format('H:i') ?? null,
|
||||||
'respirationRate' => $requesLogDailyMonitoring->respiration_rate . '/min' ?? null,
|
'status' => 'Done' ?? null,
|
||||||
'analysis' => $requesLogDailyMonitoring->analysis ?? null,
|
'subject' => $requestLogDailyMonitoring->subject ?? null,
|
||||||
'plan' => collect($requesLogDailyMonitoring->requestLogMedicalPlans)->map(function ($requestLogMedicalPlan) {
|
'bodyTemperature' => $requestLogDailyMonitoring->body_temperature ?? null,
|
||||||
return $requestLogMedicalPlan->type == 1 ? $requestLogMedicalPlan->plan : null;
|
'sistole' => $requestLogDailyMonitoring->sistole . 'mm[Hg]' ?? null,
|
||||||
})->all(),
|
'diastole' => $requestLogDailyMonitoring->diastole . 'mm[Hg]' ?? null,
|
||||||
];
|
'respirationRate' => $requestLogDailyMonitoring->respiration_rate . '/min' ?? null,
|
||||||
})->all()),
|
'analysis' => $requestLogDailyMonitoring->analysis ?? null,
|
||||||
// 'laboratoriumResults' => collect($this->dailyMonitorings)->map(function ($dailyMonitoring) {
|
'complaints' => $requestLogDailyMonitoring->complaints ?? null,
|
||||||
// $data['date'][Helper::formatDateOnly($dailyMonitoring->created_at)]
|
'plans' => $this->when($requestLogDailyMonitoring->requestLogMedicalPlans, collect($requestLogDailyMonitoring->requestLogMedicalPlans)
|
||||||
// })->all() ?? null
|
->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
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -394,22 +394,22 @@ class Member extends Model
|
|||||||
// );
|
// );
|
||||||
// }
|
// }
|
||||||
|
|
||||||
protected function corporateLogo(): Attribute
|
// protected function corporateLogo(): Attribute
|
||||||
{
|
// {
|
||||||
$avatar = null;
|
// $avatar = null;
|
||||||
|
|
||||||
if ($this->relationLoaded('currentPolicy')) {
|
// if ($this->relationLoaded('currentPolicy')) {
|
||||||
$corporateId = $this->currentPolicy->corporate->id;
|
// $corporateId = $this->currentPolicy->corporate->id;
|
||||||
$avatar = File::where(['type' => 'avatar', 'fileable_id' => $corporateId])
|
// $avatar = File::where(['type' => 'avatar', 'fileable_id' => $corporateId])
|
||||||
->orderBy('id', 'desc')
|
// ->orderBy('id', 'desc')
|
||||||
->first();
|
// ->first();
|
||||||
}
|
// }
|
||||||
|
|
||||||
$path = $avatar ? $_ENV['LMS_APP_STORAGE'] . $avatar->path : '';
|
// $path = $avatar ? $_ENV['LMS_APP_STORAGE'] . $avatar->path : '';
|
||||||
|
|
||||||
return Attribute::make(
|
// return Attribute::make(
|
||||||
get: fn () => $path
|
// get: fn () => $path
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -241,11 +241,6 @@ class RequestLog extends Model
|
|||||||
return $this->belongsTo(Service::class, 'service_code', 'code');
|
return $this->belongsTo(Service::class, 'service_code', 'code');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function requestLogBenefit()
|
|
||||||
{
|
|
||||||
return $this->hasOne(RequestLogBenefit::class, 'request_log_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function requestLogBenefits()
|
public function requestLogBenefits()
|
||||||
{
|
{
|
||||||
return $this->hasMany(RequestLogBenefit::class, 'request_log_id');
|
return $this->hasMany(RequestLogBenefit::class, 'request_log_id');
|
||||||
|
|||||||
@@ -31,6 +31,6 @@ class RequestLogBenefit extends Model
|
|||||||
|
|
||||||
public function requestLog()
|
public function requestLog()
|
||||||
{
|
{
|
||||||
return $this->belongsTo(RequestLog::class, 'aa');
|
return $this->belongsTo(RequestLog::class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
@@ -18,4 +19,13 @@ class RequestLogDailyMonitoring extends Model
|
|||||||
{
|
{
|
||||||
return $this->hasMany(RequestLogMedicalPlan::class);
|
return $this->hasMany(RequestLogMedicalPlan::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
protected function code(): Attribute
|
||||||
|
{
|
||||||
|
return Attribute::make(
|
||||||
|
get: fn ($value, $attributes) => 'RE-' . str_pad($attributes['id'], 3, '0', STR_PAD_LEFT),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ class RequestLogMedicalPlan extends Model
|
|||||||
{
|
{
|
||||||
use HasFactory;
|
use HasFactory;
|
||||||
|
|
||||||
|
protected $table = 'request_log_medical_plan';
|
||||||
|
|
||||||
public function requestLogDailyMonitoring()
|
public function requestLogDailyMonitoring()
|
||||||
{
|
{
|
||||||
return $this->belongsTo(RequestLogDailyMonitoring::class);
|
return $this->belongsTo(RequestLogDailyMonitoring::class);
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ class AppServiceProvider extends ServiceProvider
|
|||||||
{
|
{
|
||||||
Schema::defaultStringLength(191);
|
Schema::defaultStringLength(191);
|
||||||
|
|
||||||
Str::macro('initials', fn($value, $sep = ' ', $glue = '') => trim(collect(explode($sep, $value))->map(function ($segment) {
|
Str::macro('initials', fn ($value, $sep = ' ', $glue = '') => trim(collect(explode($sep, $value))->map(function ($segment) {
|
||||||
return $segment[0] ?? '';
|
return $segment[0] ?? '';
|
||||||
})->join($glue)));
|
})->join($glue)));
|
||||||
|
|
||||||
@@ -179,8 +179,6 @@ class AppServiceProvider extends ServiceProvider
|
|||||||
});
|
});
|
||||||
|
|
||||||
Sanctum::usePersonalAccessTokenModel(PersonalAccessToken::class);
|
Sanctum::usePersonalAccessTokenModel(PersonalAccessToken::class);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function logAuditTrail($model, $action)
|
private function logAuditTrail($model, $action)
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user