'datetime', 'completed_at' => 'datetime', 'delivered_at' => 'datetime', 'approved_at' => 'datetime', ]; } protected static function booted(): void { static::creating(function (InvestigationRequest $request) { if (! $request->uuid) { $request->uuid = (string) Str::uuid(); } }); } public function getRouteKeyName(): string { return 'uuid'; } public function investigationType(): BelongsTo { return $this->belongsTo(InvestigationType::class, 'investigation_type_id'); } public function patient(): BelongsTo { return $this->belongsTo(Patient::class, 'patient_id'); } public function visit(): BelongsTo { return $this->belongsTo(Visit::class, 'visit_id'); } public function consultation(): BelongsTo { return $this->belongsTo(Consultation::class, 'consultation_id'); } public function practitioner(): BelongsTo { return $this->belongsTo(Practitioner::class, 'practitioner_id'); } public function branch(): BelongsTo { return $this->belongsTo(Branch::class, 'branch_id'); } public function assignedMember(): BelongsTo { return $this->belongsTo(Member::class, 'assigned_member_id'); } public function result(): HasOne { return $this->hasOne(InvestigationResult::class, 'investigation_request_id'); } /** @return list */ public static function activeStatuses(): array { return [ self::STATUS_PENDING, self::STATUS_SAMPLE_COLLECTED, self::STATUS_IN_PROGRESS, self::STATUS_AWAITING_REVIEW, self::STATUS_COMPLETED, ]; } }