'datetime' ]; /* * Истории со срочностью - Плановая */ public function scopePlan() { return $this->where('rf_EmerSignID', 1); } /* * Истории со срочностью - Экстренная */ public function scopeEmergency() { return $this->where('rf_EmerSignID', 2); } /* * Движения истории */ public function migrations() { return $this->hasMany(MisMigrationPatient::class, 'rf_MedicalHistoryID', 'MedicalHistoryID'); } /* * Движение по StationarBranch */ public function scopeInStationarBranch($query, $stationarBranchID) { return $this->whereHas('migrations', function ($query) use ($stationarBranchID) { $query->where('rf_StationarBranchID', $stationarBranchID); }); } /* * Истории в отделении ($departmentId) */ public function scopeInDepartment($query, $departmentId, $startDate, $endDate) { return $query->whereExists(function ($q) use ($departmentId, $startDate, $endDate) { $q->select(DB::raw(1)) ->from('stt_migrationpatient as mp') ->join('stt_stationarbranch as sb', 'sb.StationarBranchID', '=', 'mp.rf_StationarBranchID') ->whereColumn('mp.rf_MedicalHistoryID', 'stt_medicalhistory.MedicalHistoryID') ->where('sb.rf_DepartmentID', $departmentId); if ($startDate && $endDate) { $q->whereBetween('mp.DateIngoing', [$startDate, $endDate]); } }); } }