'datetime', 'completed_at' => 'datetime', ]; } protected static function booted(): void { static::creating(function (Assessment $assessment) { if (! $assessment->uuid) { $assessment->uuid = (string) Str::uuid(); } }); } public function getRouteKeyName(): string { return 'uuid'; } public function organization(): BelongsTo { return $this->belongsTo(Organization::class, 'organization_id'); } public function branch(): BelongsTo { return $this->belongsTo(Branch::class, 'branch_id'); } public function patient(): BelongsTo { return $this->belongsTo(Patient::class, 'patient_id'); } public function template(): BelongsTo { return $this->belongsTo(AssessmentTemplate::class, 'template_id'); } public function consultation(): BelongsTo { return $this->belongsTo(Consultation::class, 'consultation_id'); } public function visit(): BelongsTo { return $this->belongsTo(Visit::class, 'visit_id'); } public function patientPathway(): BelongsTo { return $this->belongsTo(PatientPathway::class, 'patient_pathway_id'); } public function practitioner(): BelongsTo { return $this->belongsTo(Practitioner::class, 'practitioner_id'); } public function answers(): HasMany { return $this->hasMany(AssessmentAnswer::class, 'assessment_id'); } public function score(): HasOne { return $this->hasOne(AssessmentScore::class, 'assessment_id'); } public function isDraft(): bool { return $this->status === self::STATUS_DRAFT; } public function isCompleted(): bool { return $this->status === self::STATUS_COMPLETED; } }