From caffff259eaecbe2d11c247b430df4cc394aab06 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Tue, 19 May 2026 10:10:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=A3=80=E6=9F=A5=E4=B8=8D?= =?UTF-8?q?=E5=88=A0=E9=99=A4pacs=E6=8E=A8=E9=80=81=E8=BF=87=E6=9D=A5?= =?UTF-8?q?=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRC.Core.SCP/Service/CStoreSCPService.cs | 5 +++-- .../Service/QC/QCOperationService.cs | 16 ++++++++-------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/IRC.Core.SCP/Service/CStoreSCPService.cs b/IRC.Core.SCP/Service/CStoreSCPService.cs index 9c1fecab5..e7c4f18f9 100644 --- a/IRC.Core.SCP/Service/CStoreSCPService.cs +++ b/IRC.Core.SCP/Service/CStoreSCPService.cs @@ -8,6 +8,7 @@ using IRaCIS.Core.Infra.EFCore; using IRaCIS.Core.Infrastructure; using IRaCIS.Core.Infrastructure.Extention; using IRaCIS.Core.SCP.Service; +using MassTransit; using Medallion.Threading; using Microsoft.EntityFrameworkCore.Storage.ValueConversion.Internal; using Microsoft.Extensions.DependencyInjection; @@ -95,7 +96,7 @@ namespace IRaCIS.Core.SCP.Service public Task OnReceiveAssociationRequestAsync(DicomAssociation association) { - _upload = new SCPImageUpload() { StartTime = DateTime.Now, CallingAE = association.CallingAE, CalledAE = association.CalledAE, CallingAEIP = association.RemoteHost }; + _upload = new SCPImageUpload() { Id = NewId.NextSequentialGuid(), StartTime = DateTime.Now, CallingAE = association.CallingAE, CalledAE = association.CalledAE, CallingAEIP = association.RemoteHost }; Log.Logger.Warning($"接收到来自{association.CallingAE}的连接"); @@ -644,7 +645,7 @@ namespace IRaCIS.Core.SCP.Service ms.Position = 0; //irc 从路径最后一截取Guid - storeRelativePath = await ossService.UploadToOSSAsync(ms, ossFolderPath, instanceId.ToString(), false, uploadInfo: new FileUploadRecordAddOrEdit() { TrialId = _trialId, BatchDataType = BatchDataType.PACSReceive }); + storeRelativePath = await ossService.UploadToOSSAsync(ms, ossFolderPath, instanceId.ToString(), false, uploadInfo: new FileUploadRecordAddOrEdit() { TrialId = _trialId, BatchDataType = BatchDataType.PACSReceive, UploadBatchId = _upload.Id.ToString() }); fileSize = ms.Length; diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index b4c2e1982..023e3f15c 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -1111,12 +1111,12 @@ namespace IRaCIS.Core.Application.Image.QA var visit = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId); - var isExistStudyClinicalData = await _clinicalDataTrialSetRepository.AnyAsync(t => t.TrialId == visit.TrialId && t.ClinicalDataLevel == ClinicalLevel.Study&&t.IsConfirm&&t.IsApply); - if(isExistStudyClinicalData) + var isExistStudyClinicalData = await _clinicalDataTrialSetRepository.AnyAsync(t => t.TrialId == visit.TrialId && t.ClinicalDataLevel == ClinicalLevel.Study && t.IsConfirm && t.IsApply); + if (isExistStudyClinicalData) { List modalitieTypes = new List() { "PT、CT", "CT、PT", "PET-CT" }; - var studyList=await _dicomStudyRepository.Where(t => t.SubjectVisitId == subjectVisitId&& modalitieTypes.Contains(t.Modalities)).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + var studyList = await _dicomStudyRepository.Where(t => t.SubjectVisitId == subjectVisitId && modalitieTypes.Contains(t.Modalities)).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); if (studyList.Any(x => x.IsHasEmptyPatientInfo)) { return ResponseOutput.NotOk(_localizer["QCOperation_IsHasEmptyPatientInfo"]); @@ -1189,7 +1189,7 @@ namespace IRaCIS.Core.Application.Image.QA await _scpStudyRepository.BatchUpdateNoTrackingAsync(t => t.Id == id, u => new SCPStudy() { SubjectVisitId = null }); - if (fisrtPath.IsNotNullOrEmpty()) + if (fisrtPath.IsNotNullOrEmpty() && study.IsFromPACS == false) { var prefix = fisrtPath.Substring(1, fisrtPath.LastIndexOf('/') - 1); @@ -1230,7 +1230,7 @@ namespace IRaCIS.Core.Application.Image.QA string cacheKey = CacheKeys.UserQCSkipTask(_userInfo.UserRoleId); - + await _fusionCache.SetAsync(cacheKey, new List(), TimeSpan.FromMinutes(60)); return ResponseOutput.Ok(); @@ -1393,12 +1393,12 @@ namespace IRaCIS.Core.Application.Image.QA // 获取当前缓存中的访视Id集合(如果没有则创建空集合) - var skippedVisits = await _fusionCache.GetOrDefaultAsync>(CacheKeys.UserQCSkipTask(_userInfo.UserRoleId), new List() { }); + var skippedVisits = await _fusionCache.GetOrDefaultAsync>(CacheKeys.UserQCSkipTask(_userInfo.UserRoleId), new List() { }); //跳过当前访视 if (inDto.IsSkipCurrentVisit) { skippedVisits.Add(inDto.SubjectVisitId); - + currentActionList = currentActionList.Where(t => !skippedVisits.Contains(t.SubjectVisitId)).ToList(); } @@ -1449,7 +1449,7 @@ namespace IRaCIS.Core.Application.Image.QA //跳过当前访视 if (inDto.IsSkipCurrentVisit) - { + { visitList = visitList.Where(t => !skippedVisits.Contains(t.SubjectVisitId)).ToList(); }