'datetime', 'discharge_datetime' => 'datetime', 'estimated_discharge' => 'datetime', 'diagnoses' => 'array', 'prescriptions' => 'array', 'need_icu' => 'boolean', 'is_referral' => 'boolean', 'is_active' => 'boolean', ]; protected $attributes = [ 'registration_type' => 'Rawat Jalan', 'patient_type' => 'Umum', 'status' => 'registered', 'payment_status' => 'unpaid', 'need_icu' => false, 'is_referral' => false, 'is_active' => true, ]; public function patient() { return $this->belongsTo(Patient::class, 'patient_id'); } public function employee() { return $this->belongsTo(Employee::class, 'employee_id'); } public function serviceRoom() { return $this->belongsTo(ServiceRoom::class, 'service_room_id'); } public function insurance() { return $this->belongsTo(Insurance::class, 'insurance_id'); } public function creator() { return $this->belongsTo(User::class, 'created_by'); } public function scopeActive($query) { return $query->where('is_active', true); } public function scopeInpatient($query) { return $query->where('registration_type', 'Rawat Inap'); } public function scopeOutpatient($query) { return $query->where('registration_type', 'Rawat Jalan'); } public function scopeEmergency($query) { return $query->where('registration_type', 'UGD'); } // Helpers public function isCompleted(): bool { return $this->status === 'completed'; } public function isPaid(): bool { return $this->payment_status === 'paid' || $this->payment_status === 'insurance_cover'; } public function getFormattedRegistrationNumber(): string { return $this->registration_number; } }