From afa2b50951a1802e4d031909327b968845489e5f Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 9 Sep 2024 15:55:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=AD=9B=E9=80=89bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ImageAndDoc/DTO/UnionStudyViewDodel.cs | 10 ++++++- .../ImageAndDoc/DownloadAndUploadService.cs | 29 +++++++++++++++---- .../Service/ImageAndDoc/_MapConfig.cs | 4 +-- 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs index 25856ce22..088c77ef3 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs @@ -541,11 +541,19 @@ namespace IRaCIS.Core.Application.Contracts [NotDefault] public string SubjectCode { get; set; } - public List SubjectVisitIdList { get; set; } + public List SubjectVisitTaskList { get; set; } public List DicomStudyIdList { get; set; } public List NoneDicomStudyIdList { get; set; } } + + + public class SubjectVisitTaskInfo + { + public Guid SubjectVisitId { get; set; } + + public Guid VisitTaskId { get; set; } + } } diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs index 33e79a3f7..aa1d7fb8d 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs @@ -1,4 +1,6 @@ -using FellowOakDicom; +using Amazon.Runtime.EventStreams.Internal; +using DocumentFormat.OpenXml.EMMA; +using FellowOakDicom; using IRaCIS.Application.Contracts; using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.Contracts.Dicom.DTO; @@ -356,7 +358,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc if (studyMonitor.IsDicomReUpload == false) { //目前不考虑重传的问题,后面的直接覆盖前面的,全部删除 - if(_taskStudyRepository.Any(t=>t.VisitTaskId==visiTaskId && t.StudyInstanceUid == incommand.Study.StudyInstanceUid)) + if (_taskStudyRepository.Any(t => t.VisitTaskId == visiTaskId && t.StudyInstanceUid == incommand.Study.StudyInstanceUid)) { await _taskStudyRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visiTaskId); await _taskSeriesRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visiTaskId); @@ -559,8 +561,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc } else { - await _taskStudyRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId && t.Id== dicomStudyId); - await _taskSeriesRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId && t.Id== dicomStudyId); + await _taskStudyRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId && t.Id == dicomStudyId); + await _taskSeriesRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId && t.Id == dicomStudyId); await _taskInstanceRepository.BatchDeleteNoTrackingAsync(t => t.VisitTaskId == visitTaskId && t.Id == dicomStudyId); } } @@ -723,6 +725,16 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc var list = await query.Where(t => t.SubjectCode == inQuery.SubjectCode).ToListAsync(); + foreach (var item in list) + { + if (item.IsImageFilter) + { + item.DicomStudyList = item.DicomStudyList.Where(t => ("|" + item.CriterionModalitys + "|").Contains("|" + t.ModalityForEdit + "|")).ToList(); + item.NoneDicomStudyList = item.NoneDicomStudyList.Where(t => ("|" + item.CriterionModalitys + "|").Contains("|" + t.Modality + "|")).ToList(); + } + } + + #region 将任务级别转为检查级别 var result = new List(); @@ -783,14 +795,17 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc var isQueryDicom = inQuery.DicomStudyIdList.Count > 0; var isQueryNoneDicom = inQuery.NoneDicomStudyIdList.Count > 0; - var query = from sv in _subjectRepository.Where(t => t.Id == inQuery.SubjectId).SelectMany(t => t.SubjectVisitList.Where(t => inQuery.SubjectVisitIdList.Contains(t.Id))) + var subjectVisitIdList = inQuery.SubjectVisitTaskList.Select(t => t.SubjectVisitId).ToList(); + var query = from sv in _subjectRepository.Where(t => t.Id == inQuery.SubjectId).SelectMany(t => t.SubjectVisitList.Where(t => subjectVisitIdList.Contains(t.Id))) + join visitTask in _visitTaskRepository.Where() on sv.Id equals visitTask.SourceSubjectVisitId select new { SubjectCode = inQuery.SubjectCode, VisitName = sv.VisitName, + TaskBlindName = visitTask.TaskBlindName, StudyList = sv.StudyList.Where(t => isQueryDicom ? inQuery.DicomStudyIdList.Contains(t.Id) : false) - .Where(t=>info.IsImageFilter? ("|" + info.CriterionModalitys + "|").Contains("|" + t.ModalityForEdit + "|"):true) + .Where(t => info.IsImageFilter ? ("|" + info.CriterionModalitys + "|").Contains("|" + t.ModalityForEdit + "|") : true) .Select(u => new { u.PatientId, @@ -830,6 +845,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc var result = await query.ToListAsync(); + + return ResponseOutput.Ok(result); } diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs index 1d8c270d2..78b0c12ea 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs @@ -139,8 +139,8 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.IsImageFilter, u => u.MapFrom(s => s.TrialReadingCriterion.IsImageFilter)) .ForMember(d => d.CriterionModalitys, u => u.MapFrom(s => s.TrialReadingCriterion.CriterionModalitys)) .ForMember(d => d.SubjectCode, u => u.MapFrom(u => u.IsSelfAnalysis == true ? u.BlindSubjectCode : u.Subject.Code)) - .ForMember(d => d.DicomStudyList, u => u.MapFrom(s => s.TrialReadingCriterion.IsImageFilter? s.SourceSubjectVisit.StudyList.Where(t=> ("|" + s.TrialReadingCriterion.CriterionModalitys + "|").Contains("|" + t.ModalityForEdit + "|")) : s.SourceSubjectVisit.StudyList)) - .ForMember(d => d.NoneDicomStudyList, u => u.MapFrom(s => s.TrialReadingCriterion.IsImageFilter ? s.SourceSubjectVisit.NoneDicomStudyList.Where(t => ("|" + s.TrialReadingCriterion.CriterionModalitys + "|").Contains("|" + t.Modality + "|")) : s.SourceSubjectVisit.NoneDicomStudyList)) + .ForMember(d => d.DicomStudyList, u => u.MapFrom(s => s.SourceSubjectVisit.StudyList)) + .ForMember(d => d.NoneDicomStudyList, u => u.MapFrom(s => s.SourceSubjectVisit.NoneDicomStudyList)) ;