增加收藏功能

Test_HIR_Net8
hang 2025-08-25 15:47:19 +08:00
parent ebaa2af196
commit ebf0c6b086
3 changed files with 26 additions and 3 deletions

View File

@ -18234,7 +18234,7 @@
</member> </member>
<member name="M:IRaCIS.Application.Services.PatientService.ModifySCPStudyHospitalGroup(IRaCIS.Application.Contracts.SCPStudyHospitalGroupCommand)"> <member name="M:IRaCIS.Application.Services.PatientService.ModifySCPStudyHospitalGroup(IRaCIS.Application.Contracts.SCPStudyHospitalGroupCommand)">
<summary> <summary>
修改检查课题组 1是添加 2是删除 修改检查课题组 1是添加 2是删除3是更新
</summary> </summary>
<param name="incommand"></param> <param name="incommand"></param>
<returns></returns> <returns></returns>

View File

@ -62,6 +62,8 @@ namespace IRaCIS.Application.Contracts
public string? ModalitiesInStudy { get; set; } public string? ModalitiesInStudy { get; set; }
public Guid? SCPStudyId { get; set; }
public List<HospitalGroupInfo> HospitalGroupList { get; set; } public List<HospitalGroupInfo> HospitalGroupList { get; set; }
public List<HospitalGroupInfo> CurrentUserHospitalGroupList { get; set; } = new List<HospitalGroupInfo>(); public List<HospitalGroupInfo> CurrentUserHospitalGroupList { get; set; } = new List<HospitalGroupInfo>();

View File

@ -918,9 +918,25 @@ namespace IRaCIS.Application.Services
[HttpDelete] [HttpDelete]
public async Task<IResponseOutput> DeletePatientStudy(Guid patiendId, Guid scpStudyId, public async Task<IResponseOutput> DeletePatientStudy(Guid patiendId, Guid scpStudyId,
[FromServices] IRepository<SCPSeries> _SeriesRepository, [FromServices] IRepository<SCPSeries> _SeriesRepository,
[FromServices] IRepository<SCPInstance> _instanceRepository) [FromServices] IRepository<SCPInstance> _instanceRepository,
[FromServices] IRepository<SCPStudyHospitalGroup> _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)) if (_studySubjectVisitRepository.Any(t => t.SCPStudyId == scpStudyId && t.StudyId != null))
{ {
@ -928,11 +944,15 @@ namespace IRaCIS.Application.Services
} }
else else
{ {
await _subjectPatientRepository.DeleteFromQueryAsync(t => t.PatientId == patiendId); await _subjectPatientRepository.DeleteFromQueryAsync(t => t.PatientId == patiendId);
await _studySubjectVisitRepository.DeleteFromQueryAsync(t => t.SCPStudyId == scpStudyId); await _studySubjectVisitRepository.DeleteFromQueryAsync(t => t.SCPStudyId == scpStudyId);
} }
await _scpStudyHospitalGroupRepository.BatchDeleteNoTrackingAsync(t => t.SCPStudyId == scpStudyId);
await _studyRepository.BatchDeleteNoTrackingAsync(t => t.Id == scpStudyId); await _studyRepository.BatchDeleteNoTrackingAsync(t => t.Id == scpStudyId);
await _SeriesRepository.BatchDeleteNoTrackingAsync(t => t.StudyId == scpStudyId); await _SeriesRepository.BatchDeleteNoTrackingAsync(t => t.StudyId == scpStudyId);
await _instanceRepository.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 resultInstanceUidList = result.Select(t => t.StudyInstanceUID).ToList();
var existStudyIdList = _studyRepository.Where(t => resultInstanceUidList.Contains(t.StudyInstanceUid)) 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(); 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) 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.IsStudyExist = existStudyIdList.Any(t => t.StudyInstanceUid == item.StudyInstanceUID);
item.HospitalGroupList = existStudyIdList.FirstOrDefault(t => t.StudyInstanceUid == item.StudyInstanceUID)?.HospitalGroupList; item.HospitalGroupList = existStudyIdList.FirstOrDefault(t => t.StudyInstanceUid == item.StudyInstanceUID)?.HospitalGroupList;