'datetime' ]; public function observationPatient() { return $this->hasMany(ObservationPatient::class, 'rf_medicalhistory_id', 'MedicalHistoryID'); } public function surgicalOperations() { return $this->hasMany(MisSurgicalOperation::class, 'rf_MedicalHistoryID', 'MedicalHistoryID'); } public function scopeOperationOnBranch($query, $branchId, $startDate, $endDate) { return $this->surgicalOperations()->where('rf_StationarBranchID', $branchId) ->whereBetween('Date', [$startDate, $endDate]); } public function scopeCurrentlyHospitalized($query) { return $query->whereDate('DateExtract', '1900-01-01') ->where('MedicalHistoryID', '<>', 0); } /* * Истории со срочностью - Плановая */ public function scopePlan($query) { return $query->where('rf_EmerSignID', 1); } /* * Истории со срочностью - Экстренная */ public function scopeEmergency($query) { return $query->where('rf_EmerSignID', 2); } /* * Истории с результатом - Умер */ public function scopeDeceased($query) { return $query->where('rf_kl_VisitResultID', 5); } /* * Движения истории */ 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]); } }); } }