From ebf0c6b08693d83c74bcd3dbc24f1f7a72e27d96 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 25 Aug 2025 15:47:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=94=B6=E8=97=8F=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 2 +- .../Service/Visit/DTO/SCUClientViewModel.cs | 2 ++ .../Service/Visit/PatientService.cs | 25 +++++++++++++++++-- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 0fcf11de6..9c1110ae6 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -18234,7 +18234,7 @@ - 修改检查课题组 1是添加 2是删除 + 修改检查课题组 1是添加 2是删除,3是更新 diff --git a/IRaCIS.Core.Application/Service/Visit/DTO/SCUClientViewModel.cs b/IRaCIS.Core.Application/Service/Visit/DTO/SCUClientViewModel.cs index d0fb17dc4..6de924f22 100644 --- a/IRaCIS.Core.Application/Service/Visit/DTO/SCUClientViewModel.cs +++ b/IRaCIS.Core.Application/Service/Visit/DTO/SCUClientViewModel.cs @@ -62,6 +62,8 @@ namespace IRaCIS.Application.Contracts public string? ModalitiesInStudy { get; set; } + public Guid? SCPStudyId { get; set; } + public List HospitalGroupList { get; set; } public List CurrentUserHospitalGroupList { get; set; } = new List(); diff --git a/IRaCIS.Core.Application/Service/Visit/PatientService.cs b/IRaCIS.Core.Application/Service/Visit/PatientService.cs index 9060f6375..8e14c36df 100644 --- a/IRaCIS.Core.Application/Service/Visit/PatientService.cs +++ b/IRaCIS.Core.Application/Service/Visit/PatientService.cs @@ -918,9 +918,25 @@ namespace IRaCIS.Application.Services [HttpDelete] public async Task DeletePatientStudy(Guid patiendId, Guid scpStudyId, [FromServices] IRepository _SeriesRepository, - [FromServices] IRepository _instanceRepository) + [FromServices] IRepository _instanceRepository, + [FromServices] IRepository _scpStudyHospitalGroupRepository) { + var existList = _scpStudyHospitalGroupRepository.Where(t => t.SCPStudyId == scpStudyId).Select(t => t.HospitalGroupId).ToList(); + + var isAdminOrOAOrGA = _userInfo.UserTypeEnumInt == (int)UserTypeEnum.Admin || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.OA + || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SuperAdmin || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.GA; + + // abc 课题组,人属于AB 课题组,删除仅仅删除这个标签 直接返回 + if (!isAdminOrOAOrGA && existList.Count > _userInfo.HospitalGroupList.Count) + { + + await _scpStudyHospitalGroupRepository.BatchDeleteNoTrackingAsync(t => t.SCPStudyId == scpStudyId && _userInfo.HospitalGroupIdList.Contains(t.HospitalGroupId)); + + return ResponseOutput.Ok(); + } + + if (_studySubjectVisitRepository.Any(t => t.SCPStudyId == scpStudyId && t.StudyId != null)) { @@ -928,11 +944,15 @@ namespace IRaCIS.Application.Services } else { + await _subjectPatientRepository.DeleteFromQueryAsync(t => t.PatientId == patiendId); await _studySubjectVisitRepository.DeleteFromQueryAsync(t => t.SCPStudyId == scpStudyId); } + + await _scpStudyHospitalGroupRepository.BatchDeleteNoTrackingAsync(t => t.SCPStudyId == scpStudyId); + await _studyRepository.BatchDeleteNoTrackingAsync(t => t.Id == scpStudyId); await _SeriesRepository.BatchDeleteNoTrackingAsync(t => t.StudyId == scpStudyId); await _instanceRepository.BatchDeleteNoTrackingAsync(t => t.StudyId == scpStudyId); @@ -3381,7 +3401,7 @@ namespace IRaCIS.Application.Services var resultInstanceUidList = result.Select(t => t.StudyInstanceUID).ToList(); var existStudyIdList = _studyRepository.Where(t => resultInstanceUidList.Contains(t.StudyInstanceUid)) - .Select(t => new { t.StudyInstanceUid, HospitalGroupList = t.HospitalGroupList.Select(t => new HospitalGroupInfo { Id = t.HospitalGroupId, Name = t.HospitalGroup.Name, Code = t.HospitalGroup.Code }).ToList() }).ToList(); + .Select(t => new { SCPStudyId = t.Id, t.StudyInstanceUid, HospitalGroupList = t.HospitalGroupList.Select(t => new HospitalGroupInfo { Id = t.HospitalGroupId, Name = t.HospitalGroup.Name, Code = t.HospitalGroup.Code }).ToList() }).ToList(); var allHospitalGroupList = _hospitalGroupRepository.Where(t => t.IsEnable).Select(t => new HospitalGroupInfo() { Name = t.Name, Id = t.Id, Code = t.Code }).ToList(); @@ -3390,6 +3410,7 @@ namespace IRaCIS.Application.Services foreach (var item in result) { + item.SCPStudyId = existStudyIdList.FirstOrDefault(t => t.StudyInstanceUid == item.StudyInstanceUID).SCPStudyId; item.IsStudyExist = existStudyIdList.Any(t => t.StudyInstanceUid == item.StudyInstanceUID); item.HospitalGroupList = existStudyIdList.FirstOrDefault(t => t.StudyInstanceUid == item.StudyInstanceUID)?.HospitalGroupList;