si-klinik/sk-klinik.my.id/app/Models/Patient.php

64 lines
1.6 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Patient extends Model
{
protected $fillable = [
'medical_record_number',
'user_id',
'nik',
'place_of_birth',
'date_of_birth',
'gender',
'blood_type',
'phone',
'address',
'emergency_contact_name',
'emergency_contact_phone',
'emergency_contact_relation',
'insurance_type',
'insurance_number',
];
public function user()
{
return $this->belongsTo(User::class, 'user_id', 'id');
}
public function medicalRecords()
{
return $this->hasMany(MedicalRecord::class);
}
protected static function booted()
{
static::deleting(function ($patient) {
// Hapus user yang terhubung dengan patient ini
if ($patient->user) {
$patient->user->delete();
}
});
static::creating(function ($patient) {
if (empty($patient->medical_record_number)) {
$prefix = 'RM' . now()->format('ym');
$latestNumber = static::where('medical_record_number', 'like', $prefix . '%')
->orderByDesc('medical_record_number')
->value('medical_record_number');
if ($latestNumber) {
$nextNumber = ((int) substr($latestNumber, -4)) + 1;
} else {
$nextNumber = 1;
}
$patient->medical_record_number = $prefix . str_pad($nextNumber, 4, '0', STR_PAD_LEFT);
}
});
}
}