⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.19
Server IP:
178.33.27.10
Server:
Linux cpanel.dev-unit.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
Server Software:
Apache/2.4.57 (Unix) OpenSSL/1.0.2k-fips
PHP Version:
8.2.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
id
/
hospital.dev-unit.com
/
app
/
Models
/
View File Name :
PatientDiagnosisTest.php
<?php namespace App\Models; use App\Repositories\PatientDiagnosisTestRepository; use App\Traits\PopulateTenantID; use Carbon\Carbon; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use PDF; use Stancl\Tenancy\Database\Concerns\BelongsToTenant; use Storage; /** * App\Models\PatientDiagnosisTest * * @property int $id * @property int $patient_id * @property int $doctor_id * @property int $category_id * @property string $report_number * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property-read \App\Models\DiagnosisCategory $category * @property-read \App\Models\Doctor $doctor * @property-read \App\Models\Patient $patient * * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PatientDiagnosisTest newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PatientDiagnosisTest newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PatientDiagnosisTest query() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PatientDiagnosisTest whereCategoryId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PatientDiagnosisTest whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PatientDiagnosisTest whereDoctorId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PatientDiagnosisTest whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PatientDiagnosisTest wherePatientId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PatientDiagnosisTest whereReportNumber($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PatientDiagnosisTest whereUpdatedAt($value) * * @mixin \Eloquent * * @property-read Collection|PatientDiagnosisProperty[] $patientDiagnosisProperties * @property-read int|null $patient_diagnosis_properties_count */ class PatientDiagnosisTest extends Model { use BelongsToTenant, PopulateTenantID; protected $table = 'patient_diagnosis_tests'; public $fillable = [ 'patient_id', 'doctor_id', 'category_id', 'report_number', ]; /** * Validation rules * * @var array */ public static $rules = [ 'patient_id' => 'required|unique:patient_diagnosis_tests,patient_id', 'category_id' => 'required', ]; /** * @var string[] */ public static $messages = [ 'patient_id.unique' => 'The patient\'s name has already been taken.', ]; /** * Get the attributes that should be cast. * * @return array<string, string> */ protected function casts(): array { return [ 'id' => 'integer', 'patient_id' => 'integer', 'doctor_id' => 'integer', 'category_id' => 'integer', ]; } public function patient(): BelongsTo { return $this->belongsTo(Patient::class, 'patient_id'); } public function doctor(): BelongsTo { return $this->belongsTo(Doctor::class, 'doctor_id'); } public function category(): BelongsTo { return $this->belongsTo(DiagnosisCategory::class, 'category_id'); } public function patientDiagnosisProperties(): HasMany { return $this->hasMany(PatientDiagnosisProperty::class, 'patient_diagnosis_id'); } public function prepareDiagnosis() { return [ 'id' => $this->id, 'patient_name' => $this->patient->patientUser->full_name ?? __('messages.common.n/a'), 'patient_image' => $this->patient->patientUser->getApiImageUrlAttribute() ?? __('messages.common.n/a'), 'category' => $this->category->name ?? __('messages.common.n/a'), 'report_number' => $this->report_number ?? __('messages.common.n/a'), 'created_at' => Carbon::parse($this->created_at)->format('jS M, Y') ?? __('messages.common.n/a'), 'pdf_url' => $this->convertToPdf($this->id), ]; } public function convertToPdf($id) { $patientDiagnosisTest = PatientDiagnosisTest::find($id); $patientDiagnosisTestRepository = App()->make(patientDiagnosisTestRepository::class); $data = $patientDiagnosisTestRepository->getSettingListForPDF(); $data['patientDiagnosisTest'] = $patientDiagnosisTest; $data['patientDiagnosisTests'] = $patientDiagnosisTestRepository->getPatientDiagnosisTestProperty($patientDiagnosisTest->id); if (Storage::disk(config('app.media_disc'))->exists('diagnosis/Diagnosis-'.$this->report_number.'.pdf')) { Storage::disk(config('app.media_disc'))->delete('diagnosis/Diagnosis-'.$this->report_number.'.pdf'); } $pdf = PDF::loadView('employees.patient_diagnosis_test.diagnosis_test_pdf', $data); Storage::disk(config('app.media_disc'))->put('diagnosis/Diagnosis-'.$this->report_number.'.pdf', $pdf->output()); $url = Storage::disk(config('app.media_disc'))->url('diagnosis/Diagnosis-'.$this->report_number.'.pdf'); return $url ?? __('messages.common.n/a'); } public function prepareDiagnosisDetailForPatient() { return [ 'id' => $this->id ?? __('messages.common.n/a'), 'patient_name' => $this->doctor->doctorUser->full_name ?? __('messages.common.n/a'), 'patient_image' => $this->doctor->doctorUser->getApiImageUrlAttribute() ?? __('messages.common.n/a'), 'category' => $this->category->name ?? __('messages.common.n/a'), 'report_number' => $this->report_number ?? __('messages.common.n/a'), 'patient_diagnosis' => $this->propertiesPrepare() ?? __('messages.common.n/a'), 'created_on' => Carbon::parse($this->created_at)->diffForHumans() ?? __('messages.common.n/a'), 'pdf_url' => $this->convertToPdf($this->id) ?? __('messages.common.n/a'), ]; } public function propertiesPrepare() { $data = []; foreach ($this->patientDiagnosisProperties as $diagnosisProperty) { $data[$diagnosisProperty->property_name] = $diagnosisProperty->property_value ?? __('messages.common.n/a'); } return $data; } public function prepareDiagnosisDetailForDoctor() { return [ 'id' => $this->id ?? __('messages.common.n/a'), 'patient_name' => $this->patient->patientUser->full_name ?? __('messages.common.n/a'), 'patient_image' => $this->patient->patientUser->getApiImageUrlAttribute() ?? __('messages.common.n/a'), 'category' => $this->category->name ?? __('messages.common.n/a'), 'report_number' => $this->report_number ?? __('messages.common.n/a'), 'patient_diagnosis' => $this->propertiesPrepare() ?? __('messages.common.n/a'), 'created_on' => Carbon::parse($this->created_at)->diffForHumans() ?? __('messages.common.n/a'), 'pdf_url' => $this->convertToPdf($this->id) ?? __('messages.common.n/a'), ]; } }