From 39f14c8d1189389d4ce85f9b30b221d3826f6cdc Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Sat, 6 May 2023 09:30:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ImageAndDoc/DTO/UnionStudyViewDodel.cs | 8 ++- .../Service/ImageAndDoc/StudyService.cs | 71 +++++++++---------- 2 files changed, 41 insertions(+), 38 deletions(-) diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs index 3dd2e1d52..ae3b4fa9b 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs @@ -187,9 +187,13 @@ namespace IRaCIS.Core.Application.Contracts [NotDefault] public Guid SubjectVisitId { get; set; } - public int FailedFileCount { get; set; } + public decimal FileSize { get; set; } + public bool IsDicomReUpload { get; set; } + + + public int FileCount { get; set; } } @@ -207,7 +211,7 @@ namespace IRaCIS.Core.Application.Contracts [NotDefault] public Guid StudyMonitorId { get; set; } - public bool IsAdd { get; set; } + public int FailedFileCount { get; set; } public AddOrUpdateStudyDto Study { get; set; } diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs index 0fc72cb22..af35c3694 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs @@ -107,9 +107,10 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc IsDicom = true, IP = _userInfo.IP, + IsDicomReUpload = preArchiveStudyCommand.IsDicomReUpload, FileSize = preArchiveStudyCommand.FileSize, FileCount = preArchiveStudyCommand.FileCount, - FailedFileCount = preArchiveStudyCommand.FailedFileCount, + //FailedFileCount = preArchiveStudyCommand.FailedFileCount, }; @@ -130,10 +131,11 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc var studyMonitor = await _studyMonitorRepository.FirstOrDefaultAsync(t => t.Id == incommand.StudyMonitorId); studyMonitor.UploadFinishedTime = DateTime.Now; studyMonitor.ArchiveFinishedTime = DateTime.Now; - studyMonitor.IsDicomReUpload = !incommand.IsAdd; + studyMonitor.FailedFileCount = incommand.FailedFileCount; studyMonitor.IsSuccess = true; - if (incommand.IsAdd) + //上传 + if (studyMonitor.IsDicomReUpload == false) { var study = _mapper.Map(incommand.Study); @@ -154,25 +156,27 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc _provider.Set($"{trialId}_{StaticData.CacheKey.StudyMaxCode}", study.Code, TimeSpan.FromMinutes(30)); + + + study.Id = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString()); + study.TrialId = incommand.TrialId; + study.SiteId = incommand.SiteId; + study.SubjectId = incommand.SubjectId; + study.SubjectVisitId = incommand.SubjectVisitId; + + + //特殊处理逻辑 + study.Modalities = string.Join("、", incommand.Study.SeriesList.Select(t => t.Modality).Distinct()); + SpecialArchiveStudyDeal(study); + + await _dicomstudyRepository.AddAsync(study); + + + studyMonitor.StudyId = study.Id; + studyMonitor.StudyCode = study.StudyCode; } - study.Id = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString()); - study.TrialId = incommand.TrialId; - study.SiteId = incommand.SiteId; - study.SubjectId = incommand.SubjectId; - study.SubjectVisitId = incommand.SubjectVisitId; - - - //特殊处理逻辑 - study.Modalities = string.Join("、", incommand.Study.SeriesList.Select(t => t.Modality).Distinct()); - SpecialArchiveStudyDeal(study); - - - - await _dicomstudyRepository.AddAsync(study); - - foreach (var seriesItem in incommand.Study.SeriesList) { var series = _mapper.Map(seriesItem); @@ -204,20 +208,19 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc - studyMonitor.StudyId = study.Id; - studyMonitor.StudyCode = study.StudyCode; + } else { - var studyId = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString());; + var studyId = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString()); ; var study = await _dicomstudyRepository.FirstOrDefaultAsync(t => t.Id == studyId); //_mapper.Map(incommand.Study, study); //特殊处理逻辑 - study.Modalities = string.Join("、", incommand.Study.SeriesList.Select(t => t.Modality).Union(study.Modalities.Split("、",StringSplitOptions.RemoveEmptyEntries)).Distinct()); + study.Modalities = string.Join("、", incommand.Study.SeriesList.Select(t => t.Modality).Union(study.Modalities.Split("、", StringSplitOptions.RemoveEmptyEntries)).Distinct()); SpecialArchiveStudyDeal(study); @@ -229,13 +232,11 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc { var seriesId = IdentifierHelper.CreateGuid(seriesItem.StudyInstanceUid, seriesItem.SeriesInstanceUid, trialId.ToString()); - DicomSeries dicomSeries = await _dicomSeriesRepository.FirstOrDefaultAsync(t=>t.Id==seriesId); + DicomSeries dicomSeries = await _dicomSeriesRepository.FirstOrDefaultAsync(t => t.Id == seriesId); //判断重复 if (dicomSeries == null) { - - var series = _mapper.Map(seriesItem); series.Id = seriesId; @@ -247,18 +248,18 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc series.SubjectVisitId = incommand.SubjectVisitId; - dicomSeries= await _dicomSeriesRepository.AddAsync(series); + dicomSeries = await _dicomSeriesRepository.AddAsync(series); //新的序列 那么 检查的序列数量+1 - study.SeriesCount += 1; + study.SeriesCount += 1; } else { //该序列掉了instance dicomSeries.InstanceCount += seriesItem.InstanceCount; } - - + + foreach (var instanceItem in seriesItem.InstanceList) { var insntance = _mapper.Map(instanceItem); @@ -283,11 +284,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc } - using (await _mutex.LockAsync()) - { - await _dicomstudyRepository.SaveChangesAsync(); - } + await _dicomstudyRepository.SaveChangesAsync(); + return ResponseOutput.Ok(); } @@ -709,7 +708,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc var systemAnonymizationList = _repository.Where(t => t.IsEnable).ToList(); - return ResponseOutput.Ok>(result, new + return ResponseOutput.Ok>(result, new { DicomStoreInfo = otherData, AnonymizeFixedList = systemAnonymizationList.Where(t => t.IsFixed).ToList(), @@ -769,7 +768,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc result.AllowReUpload = true; result.UploadedSeriesList = _repository.Where(t => t.StudyId == verifyStudyInfo.Id).Select(t => new UploadedSeries() - { SeriesId=t.Id, SeriesInstanceUid = t.SeriesInstanceUid, SOPInstanceUIDList = t.DicomInstanceList.Select(c => c.SopInstanceUid).ToList() }).ToList(); + { SeriesId = t.Id, SeriesInstanceUid = t.SeriesInstanceUid, SOPInstanceUIDList = t.DicomInstanceList.Select(c => c.SopInstanceUid).ToList() }).ToList(); } //不是同一个受试者 else