Форматирование

This commit is contained in:
brusnitsyn
2026-04-24 16:46:10 +09:00
parent fd0e6ee817
commit 63daa62888
87 changed files with 1380 additions and 791 deletions

View File

@@ -11,14 +11,16 @@ use Illuminate\Support\Facades\Cache;
class PatientMigrationService
{
private const ACTIVE_DATE_OUT = '2222-01-01 00:00:00';
const DEAD_VISIT_RESULT_IDS = [5, 6, 15, 16];
const TRANSFER_VISIT_RESULT_IDS = [2, 3, 4, 12, 13, 14, 35];
const OUTCOME_VISIT_RESULT_IDS = [1, 11];
public function __construct(
protected StationarBranchService $branchService
) { }
) {}
/**
* Получить всех пациентов в отделении за период
@@ -30,7 +32,7 @@ class PatientMigrationService
startAt: $startAt,
endAt: $endAt,
cacheTag: 'migrations_in_branch',
dateFilter: fn($q) => $q->where('DateOut', '>', $startAt)->where('DateOut', '<=', $endAt),
dateFilter: fn ($q) => $q->where('DateOut', '>', $startAt)->where('DateOut', '<=', $endAt),
);
}
@@ -44,7 +46,7 @@ class PatientMigrationService
startAt: $startAt,
endAt: $endAt,
cacheTag: 'migrations_in_branch_current',
dateFilter: fn($q) => $q->where('DateOut', self::ACTIVE_DATE_OUT),
dateFilter: fn ($q) => $q->where('DateOut', self::ACTIVE_DATE_OUT),
);
}
@@ -58,12 +60,12 @@ class PatientMigrationService
startAt: $startAt,
endAt: $endAt,
cacheTag: 'migrations_in_branch_dead',
dateFilter: fn($q) => $q->where('DateOut', '>', $startAt)->where('DateOut', '<=', $endAt),
dateFilter: fn ($q) => $q->where('DateOut', '>', $startAt)->where('DateOut', '<=', $endAt),
additionalFilters: [
[
'key' => 'visit_result:dead',
'apply' => fn($q) => $q->whereIn('rf_kl_VisitResultID', self::DEAD_VISIT_RESULT_IDS)
]
'apply' => fn ($q) => $q->whereIn('rf_kl_VisitResultID', self::DEAD_VISIT_RESULT_IDS),
],
]
);
}
@@ -75,12 +77,12 @@ class PatientMigrationService
startAt: $startAt,
endAt: $endAt,
cacheTag: 'migrations_in_branch_transfer',
dateFilter: fn($q) => $q->where('DateOut', '>', $startAt)->where('DateOut', '<=', $endAt),
dateFilter: fn ($q) => $q->where('DateOut', '>', $startAt)->where('DateOut', '<=', $endAt),
additionalFilters: [
[
'key' => 'visit_result:transfer',
'apply' => fn($q) => $q->whereIn('rf_kl_VisitResultID', self::TRANSFER_VISIT_RESULT_IDS)
]
'apply' => fn ($q) => $q->whereIn('rf_kl_VisitResultID', self::TRANSFER_VISIT_RESULT_IDS),
],
]
);
}
@@ -92,12 +94,12 @@ class PatientMigrationService
startAt: $startAt,
endAt: $endAt,
cacheTag: 'migrations_in_branch_outcome',
dateFilter: fn($q) => $q->where('DateOut', '>', $startAt)->where('DateOut', '<=', $endAt),
dateFilter: fn ($q) => $q->where('DateOut', '>', $startAt)->where('DateOut', '<=', $endAt),
additionalFilters: [
[
'key' => 'visit_result:outcome',
'apply' => fn($q) => $q->whereIn('rf_kl_VisitResultID', self::OUTCOME_VISIT_RESULT_IDS)
]
'apply' => fn ($q) => $q->whereIn('rf_kl_VisitResultID', self::OUTCOME_VISIT_RESULT_IDS),
],
]
);
}
@@ -121,7 +123,7 @@ class PatientMigrationService
// Нормализованный ключ кеша
$filterKeys = array_column($additionalFilters, 'key');
$filterHash = substr(md5(implode('|', $filterKeys)), 0, 6);
$dateHash = substr(md5($startAt . '_' . $endAt), 0, 8);
$dateHash = substr(md5($startAt.'_'.$endAt), 0, 8);
$cacheKey = "{$cacheTag}_{$branchId}_{$dateHash}_f{$filterHash}";
return Cache::tags([$cacheTag, "migrations_branch_{$branchId}"])
@@ -151,28 +153,28 @@ class PatientMigrationService
->select([
'MigrationPatientID', 'DateIngoing', 'DateOut', 'BedDays', 'rf_MedicalHistoryID',
'rf_StationarBranchID', 'rf_DiagnosID', 'rf_kl_ProfitTypeID', 'rf_kl_StatCureResultID',
'rf_kl_VisitResultID', 'rf_BedProfileID', 'rf_kl_BedProfileID'
'rf_kl_VisitResultID', 'rf_BedProfileID', 'rf_kl_BedProfileID',
])
->where('rf_StationarBranchID', $branchId)
// Жадная загрузка с ограничениями
->with([
'medicalHistory' => fn($q) => $q->select('MedicalHistoryID', 'FAMILY', 'Name', 'OT', 'BD'),
'medicalHistory.operationPurpose' => fn($q) => $q
'medicalHistory' => fn ($q) => $q->select('MedicalHistoryID', 'FAMILY', 'Name', 'OT', 'BD'),
'medicalHistory.operationPurpose' => fn ($q) => $q
->where('rf_StationarBranchID', $branchId)
->select('OperationPurposeID', 'rf_MedicalHistoryID', 'Date', 'rf_OperationStatusID',
'CancelDate', 'rf_StationarBranchID', 'PhysicalExam', 'Description', 'Indications', 'EpicrisDate',
'rf_SurgicalOperationID'
),
'medicalHistory.operationPurpose.surgicalOperation' => fn($q) => $q
'medicalHistory.operationPurpose.surgicalOperation' => fn ($q) => $q
->select('SurgicalOperationID', 'DataEnd', 'Date', 'Num', 'rf_kl_ServiceMedicalID',
'rf_MedicalHistoryID', 'rf_StationarBranchID', 'Description', 'rf_OperationResultID'
),
'diagnosis' => fn($q) => $q
'diagnosis' => fn ($q) => $q
->where('rf_DiagnosTypeID', 3)
->select('DiagnosID', 'Date', 'rf_DiagnosTypeID', 'rf_MedicalHistoryID', 'rf_MKBID',
'rf_MigrationPatientID', 'Description'
),
'diagnosis.mkb' => fn($q) => $q->select(['MKBID', 'DS', 'NAME']),
'diagnosis.mkb' => fn ($q) => $q->select(['MKBID', 'DS', 'NAME']),
]);
}
}