* переписал функции прототипов в сервисы
* оптимизация доставки контента до клиента * переписал запросы выборок * убрал из подсчета переведенных * добавил сохранение метрикам для вывода в дашборд
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Services\DateRange;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Carbon;
|
||||
|
||||
@@ -25,20 +26,29 @@ class MisMigrationPatient extends Model
|
||||
return $this->hasOne(MisMKB::class, 'MKBID', 'rf_MKBID');
|
||||
}
|
||||
|
||||
public function medicalHistory()
|
||||
{
|
||||
return $this->belongsTo(MisMedicalHistory::class, 'rf_MedicalHistoryID', 'MedicalHistoryID');
|
||||
}
|
||||
|
||||
/**
|
||||
* Находятся на лечении
|
||||
*/
|
||||
public function scopeCurrentlyInTreatment($query, $branchId = null, $startDate = null, $endDate = null)
|
||||
public function scopeCurrentlyInTreatment($query, $branchId = null, DateRange $dateRange = null)
|
||||
{
|
||||
$query->where('rf_kl_VisitResultID', 0)
|
||||
->where('rf_kl_StatCureResultID', 0)
|
||||
->whereHas('medicalHistory', function ($query) use ($branchId, $dateRange) {
|
||||
$query->whereDate('DateExtract', '1900-01-01');
|
||||
})
|
||||
->where('rf_MedicalHistoryID', '<>', 0);
|
||||
|
||||
if ($branchId) {
|
||||
$query->where('rf_StationarBranchID', $branchId);
|
||||
}
|
||||
|
||||
if ($startDate && $endDate) {
|
||||
$query->whereBetween('DateIngoing', [$startDate, $endDate]);
|
||||
if ($dateRange) {
|
||||
$query->whereBetween('DateIngoing', [$dateRange->startSql(), $dateRange->endSql()]);
|
||||
}
|
||||
|
||||
return $query;
|
||||
@@ -58,7 +68,7 @@ class MisMigrationPatient extends Model
|
||||
/**
|
||||
* Выбывшие пациенты (все исходы)
|
||||
*/
|
||||
public function scopeOutcomePatients($query, $branchId = null, $startDate = null, $endDate = null)
|
||||
public function scopeOutcomePatients($query, $branchId = null, DateRange $dateRange = null)
|
||||
{
|
||||
$query->where('rf_kl_VisitResultID', '<>', 0) // не активное лечение
|
||||
->whereDate('DateOut', '<>', '1900-01-01') // есть дата выбытия
|
||||
@@ -68,8 +78,8 @@ class MisMigrationPatient extends Model
|
||||
$query->where('rf_StationarBranchID', $branchId);
|
||||
}
|
||||
|
||||
if ($startDate && $endDate) {
|
||||
$query->whereBetween('DateOut', [$startDate, $endDate]);
|
||||
if ($dateRange) {
|
||||
$query->whereBetween('DateOut', [$dateRange->startSql(), $dateRange->endSql()]);
|
||||
}
|
||||
|
||||
return $query;
|
||||
@@ -78,7 +88,7 @@ class MisMigrationPatient extends Model
|
||||
/**
|
||||
* Выписанные пациенты
|
||||
*/
|
||||
public function scopeDischarged($query, $branchId = null, $startDate = null, $endDate = null)
|
||||
public function scopeDischarged($query, $branchId = null, DateRange $dateRange = null)
|
||||
{
|
||||
// ID выписки
|
||||
$dischargeCodes = [1, 7, 8, 9, 10, 11, 48, 49, 124];
|
||||
@@ -91,8 +101,8 @@ class MisMigrationPatient extends Model
|
||||
$query->where('rf_StationarBranchID', $branchId);
|
||||
}
|
||||
|
||||
if ($startDate && $endDate) {
|
||||
$query->whereBetween('DateOut', [$startDate, $endDate]);
|
||||
if ($dateRange) {
|
||||
$query->whereBetween('DateOut', [$dateRange->startSql(), $dateRange->endSql()]);
|
||||
}
|
||||
|
||||
return $query;
|
||||
@@ -101,7 +111,7 @@ class MisMigrationPatient extends Model
|
||||
/**
|
||||
* Перевод в другое отделение
|
||||
*/
|
||||
public function scopeTransferred($query, $branchId = null, $startDate = null, $endDate = null)
|
||||
public function scopeTransferred($query, $branchId = null, DateRange $dateRange = null)
|
||||
{
|
||||
// ID перевода
|
||||
$transferCodes = [2, 3, 4, 12, 13, 14];
|
||||
@@ -114,8 +124,8 @@ class MisMigrationPatient extends Model
|
||||
$query->where('rf_StationarBranchID', $branchId);
|
||||
}
|
||||
|
||||
if ($startDate && $endDate) {
|
||||
$query->whereBetween('DateOut', [$startDate, $endDate]);
|
||||
if ($dateRange) {
|
||||
$query->whereBetween('DateOut', [$dateRange->startSql(), $dateRange->endSql()]);
|
||||
}
|
||||
|
||||
return $query;
|
||||
@@ -124,7 +134,7 @@ class MisMigrationPatient extends Model
|
||||
/**
|
||||
* Умершие пациенты
|
||||
*/
|
||||
public function scopeDeceasedOutcome($query, $branchId = null, $startDate = null, $endDate = null)
|
||||
public function scopeDeceasedOutcome($query, $branchId = null, DateRange $dateRange = null)
|
||||
{
|
||||
// ID умершего
|
||||
$deceasedCodes = [5, 6, 15, 16];
|
||||
@@ -137,22 +147,22 @@ class MisMigrationPatient extends Model
|
||||
$query->where('rf_StationarBranchID', $branchId);
|
||||
}
|
||||
|
||||
if ($startDate && $endDate) {
|
||||
$query->whereBetween('DateOut', [$startDate, $endDate]);
|
||||
if ($dateRange) {
|
||||
$query->whereBetween('DateOut', [$dateRange->startSql(), $dateRange->endSql()]);
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
public function scopeExtractedToday($query, $branchId = null, $startDate = null, $endDate = null)
|
||||
public function scopeExtractedToday($query, $branchId = null, DateRange $dateRange = null)
|
||||
{
|
||||
if (is_null($startDate)) $startDate = Carbon::now()->addDays(-1)->format('Y-m-d');
|
||||
if (is_null($endDate)) $endDate = Carbon::now()->format('Y-m-d');
|
||||
// if (is_null($startDate)) $startDate = Carbon::now()->addDays(-1)->format('Y-m-d');
|
||||
// if (is_null($endDate)) $endDate = Carbon::now()->format('Y-m-d');
|
||||
|
||||
$query->where('rf_kl_VisitResultID', '<>', 0)
|
||||
->where('rf_MedicalHistoryID', '<>', 0)
|
||||
->when($startDate && $endDate, function($query) use ($startDate, $endDate) {
|
||||
return $query->whereBetween('DateOut', [$startDate, $endDate]);
|
||||
->when($dateRange, function($query) use ($dateRange) {
|
||||
return $query->whereBetween('DateOut', [$dateRange->startSql(), $dateRange->endSql()]);
|
||||
});
|
||||
|
||||
if ($branchId) {
|
||||
|
||||
Reference in New Issue
Block a user