%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/klinisol/klinisol-api/app/Transformers/App/
Upload File :
Create Path :
Current File : /var/www/html/klinisol/klinisol-api/app/Transformers/App/PatientTransformer.php

<?php

namespace App\Transformers\App;

use App\Models\BaseModel;
use App\Models\Enrollment;
use App\Models\IcdSubmission;
use App\Models\Submission;
use App\Transformers\BaseTransformer;
use Spatie\MediaLibrary\MediaCollections\Models\Media;

class PatientTransformer extends BaseTransformer
{
    protected $availableIncludes = [];

    protected $defaultIncludes = [];

    public function transform($item)
    {
        $hasCompletedIcd = (boolean)$item->has_completed_icd;
        $hasSignedIcd = (boolean)$item->has_signed_icd;
        $hasCompletedIncExc = (boolean)$item->has_completed_inc_exc;
        $hasSignedIncExc = (boolean)$item->has_signed_inc_exc;
        $hasCompletedIncEnrollment = (boolean)$item->has_completed_enrollment;
        $hasSignedEnrollment = (boolean)$item->has_signed_enrollment;

        $data = [
            'id'                       => $item->patient_id,
            'code'                     => $item->code,
            'status'                   => $item->status,
            'signed_at'                => $item->patient_signed_at,
            'has_completed_icd'        => $hasCompletedIcd,
            'has_signed_icd'           => $hasSignedIcd,
            'has_completed_inc_exc'    => $hasCompletedIncExc,
            'has_signed_inc_exc'       => $hasSignedIncExc,
            'has_completed_enrollment' => $hasCompletedIncEnrollment,
            'has_signed_enrollment'    => $hasSignedEnrollment,
        ];

        if ($hasCompletedIncExc) {
            /** @var Media $media */
            $media = Media::query()
                          ->where('model_type', Submission::class)
                          ->where('model_id', $item->submission_id)
                          ->first();
            if ($media) {
                $data['inc_exc_preview'] = base64_encode(file_get_contents(BaseModel::getMediaFinalUrl($media)));

            }
        }

        if ($hasCompletedIcd) {
            /** @var Media $media */
            $media = Media::query()
                          ->where('model_type', IcdSubmission::class)
                          ->where('model_id', $item->icd_id)
                          ->first();
            if ($media) {
                $data['icd_preview'] = base64_encode(file_get_contents(BaseModel::getMediaFinalUrl($media)));
            }
        }

        if ($hasCompletedIncEnrollment) {
            /** @var Media $media */
            $media = Media::query()
                          ->where('model_type', Enrollment::class)
                          ->where('model_id', $item->enrollment_id)
                          ->first();
            if ($media) {
                $data['enrollment_preview'] = base64_encode(file_get_contents(BaseModel::getMediaFinalUrl($media)));
            }
        }

        return $data;
    }
}

Zerion Mini Shell 1.0