'date']; } protected static function booted(): void { static::creating(function (Patient $patient) { if (! $patient->uuid) { $patient->uuid = (string) Str::uuid(); } }); } public function getRouteKeyName(): string { return 'uuid'; } public function fullName(): string { return trim(implode(' ', array_filter([ $this->first_name, $this->other_names, $this->last_name, ]))); } public function organization(): BelongsTo { return $this->belongsTo(Organization::class, 'organization_id'); } public function branch(): BelongsTo { return $this->belongsTo(Branch::class, 'branch_id'); } public function allergies(): HasMany { return $this->hasMany(PatientAllergy::class, 'patient_id'); } public function conditions(): HasMany { return $this->hasMany(PatientCondition::class, 'patient_id'); } public function familyHistory(): HasMany { return $this->hasMany(PatientFamilyHistory::class, 'patient_id'); } public function emergencyContacts(): HasMany { return $this->hasMany(EmergencyContact::class, 'patient_id'); } public function insurancePolicies(): HasMany { return $this->hasMany(InsurancePolicy::class, 'patient_id'); } public function attachments(): HasMany { return $this->hasMany(PatientAttachment::class, 'patient_id'); } public function appointments(): HasMany { return $this->hasMany(Appointment::class, 'patient_id'); } public function visits(): HasMany { return $this->hasMany(Visit::class, 'patient_id'); } public function investigationRequests(): HasMany { return $this->hasMany(InvestigationRequest::class, 'patient_id'); } public function prescriptions(): HasMany { return $this->hasMany(Prescription::class, 'patient_id'); } public function bills(): HasMany { return $this->hasMany(Bill::class, 'patient_id'); } }