getPlanPatientsQuery($branchId, $dateRange); break; case 'emergency': $query = $this->getEmergencyPatientsQuery($branchId, $dateRange); break; } } /** * Получение текущих пациентов по MigrationPatient */ public function getInStationarPatients(string $status, $branchId, string|array $dateRange) { $emerSign = $status === 'plan' ? 1 : [2,4]; $query = MisMedicalHistory::query(); $query->when(isset($branchId), function ($query) use ($branchId, $dateRange) { $query->with(['migrations', 'surgicalOperations']) ->whereHas('migrations', function ($q) use ($branchId, $dateRange) { $q->where('rf_StationarBranchID', $branchId) ->whereDate('DateRecipient', '<', is_array($dateRange) ? $dateRange[1] : $dateRange) ->whereDate('DateOut', '=', '2222-01-01 00:00:00.000') ->where('rf_kl_StatCureResultID', 0) ->where('rf_kl_VisitResultID', 0); }); }) ->where('rf_EmerSignID', $emerSign) ->where('MedicalHistoryID', '<>', 0); return $query; } /** * Получение запроса плановых пациентов по MigrationPatient */ public function getPlanPatientsQuery($branchId, $dateRange) { $query = MisMedicalHistory::query(); $query->when(isset($branchId), function ($query) use ($branchId, $dateRange) { $query->with('migrations') ->whereHas('migrations', function ($q) use ($branchId, $dateRange) { $q->where('rf_StationarBranchID', $branchId) ->whereDate('DateRecipient', '<', $dateRange[1]); }); }) ->where('rf_EmerSignID', 1) ->where('MedicalHistoryID', '<>', 0); return $query; } /** * Получение запроса экстренных + неотложных пациентов по MedicalHistory */ public function getEmergencyPatientsQuery($branchId, $dateRange) { $query = MisMedicalHistory::query(); $query->when(isset($branchId), function ($query) use ($branchId, $dateRange) { $query->with('migrations') ->whereHas('migrations', function ($q) use ($branchId, $dateRange) { $q->where('rf_StationarBranchID', $branchId) ->whereBetween('DateIngoing', $dateRange); }); }) ->whereIn('rf_EmerSignID', [2, 4]) ->where('MedicalHistoryID', '<>', 0); return $query; } /** * Получение запроса пациентов которые попали в отделение в определенную дату * @param int $branchId Индентификатор ветки стационара * @param array $dateRange Массив дат (0 - начальная дата, 1 - конечная дата) * @return \Illuminate\Database\Eloquent\Builder */ public function getRecipientPatientsQuery(int $branchId, array $dateRange): \Illuminate\Database\Eloquent\Builder { $query = MisMedicalHistory::query(); $query->with('migrations') ->whereHas('migrations', function ($q) use ($branchId, $dateRange) { $q->where('rf_StationarBranchID', $branchId) ->whereBetween('DateIngoing', $dateRange); })->where('MedicalHistoryID', '<>', 0); return $query; } }