From 8f0f46194cc2506dd2ebb37de587fb58a1695b2e Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 28 Jun 2022 17:57:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Reading/ClinicalDataSetService.cs | 93 +++++++++++-------- IRaCIS.Core.Domain/Trial/Trial.cs | 6 ++ 2 files changed, 58 insertions(+), 41 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs index f5bd8e64e..bb53bd225 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs @@ -24,12 +24,14 @@ namespace IRaCIS.Application.Services private readonly IRepository _clinicalDataTrialSetRepository; private readonly IRepository _clinicalDataSystemSetRepository; private readonly IRepository _previousPDFRepository; + private readonly IRepository _trialRepository; public ClinicalDataSetService(IRepository subjectVisitRepository, IRepository ClinicalDataTrialSetRepository, - IRepository ClinicalDataSystemSetRepository, - IRepository previousPDFRepository + IRepository ClinicalDataSystemSetRepository, + IRepository previousPDFRepository, + IRepository trialRepository ) { _subjectVisitRepository = subjectVisitRepository; @@ -37,6 +39,7 @@ namespace IRaCIS.Application.Services _clinicalDataTrialSetRepository = ClinicalDataTrialSetRepository; _clinicalDataSystemSetRepository = ClinicalDataSystemSetRepository; this._previousPDFRepository = previousPDFRepository; + this._trialRepository = trialRepository; } @@ -107,49 +110,57 @@ namespace IRaCIS.Application.Services /// /// - private async Task AddTrialClinicalDataTrialSet(Guid trialId) + private async Task AddTrialClinicalDataTrialSet(Guid trialId) { - var systemClinicalDataList = await _clinicalDataSystemSetRepository.AsQueryable().ToListAsync(); - var systemIds = systemClinicalDataList.Select(x => x.Id).ToList(); - var trialSystemIds =await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null).Select(x => x.SystemClinicalDataSetId.Value).ToListAsync(); - //var needUpdateIds = systemIds.Intersect(trialSystemIds).ToList(); - - var needAddids = systemIds.Except(trialSystemIds).ToList(); - var systemDataList = systemClinicalDataList.Where(x => needAddids.Contains(x.Id)).ToList(); - List dataSets = systemDataList.Select(x => new ClinicalDataTrialSet() + var syncClinicalDataTime = await _trialRepository.Where(x => x.Id == trialId).Select(x => x.SyncClinicalDataTime).FirstOrDefaultAsync(); + if (syncClinicalDataTime != null) { - Id= NewId.NextGuid(), - SystemClinicalDataSetId=x.Id, - ClinicalDataSetName=x.ClinicalDataSetName, - ClinicalDataLevel=x.ClinicalDataLevel, - ClinicalUploadType=x.ClinicalUploadType, - UploadRole=x.UploadRole, - FileName=x.FileName, - Path=x.Path, - TrialId= trialId, + var systemClinicalDataList = await _clinicalDataSystemSetRepository.AsQueryable().ToListAsync(); + var systemIds = systemClinicalDataList.Select(x => x.Id).ToList(); + var trialSystemIds = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null).Select(x => x.SystemClinicalDataSetId.Value).ToListAsync(); + //var needUpdateIds = systemIds.Intersect(trialSystemIds).ToList(); + + var needAddids = systemIds.Except(trialSystemIds).ToList(); + var systemDataList = systemClinicalDataList.Where(x => needAddids.Contains(x.Id)).ToList(); + List dataSets = systemDataList.Select(x => new ClinicalDataTrialSet() + { + Id = NewId.NextGuid(), + SystemClinicalDataSetId = x.Id, + ClinicalDataSetName = x.ClinicalDataSetName, + ClinicalDataLevel = x.ClinicalDataLevel, + ClinicalUploadType = x.ClinicalUploadType, + UploadRole = x.UploadRole, + FileName = x.FileName, + Path = x.Path, + TrialId = trialId, + + }).ToList(); + + await _clinicalDataTrialSetRepository.AddRangeAsync(dataSets); + + //var needUpdateitemList = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialId && needUpdateIds.Contains(x.SystemClinicalDataSetId.Value)).ToListAsync(); + //foreach (var item in needUpdateitemList) + //{ + // var systemData = systemClinicalDataList.FirstOrDefault(x => x.Id == item.SystemClinicalDataSetId); + // await _clinicalDataTrialSetRepository.UpdatePartialNoQueryAsync(item.Id,x=>new ClinicalDataTrialSet() { + + // ClinicalDataSetName = systemData.ClinicalDataSetName, + // ClinicalDataLevel = systemData.ClinicalDataLevel, + // ClinicalUploadType = systemData.ClinicalUploadType, + // UploadRole = systemData.UploadRole, + // FileName = systemData.FileName, + // Path = systemData.Path, + // }); + //} + + await _trialRepository.BatchUpdateNoTrackingAsync(x => x.Id == trialId, x => new Trial() + { + SyncClinicalDataTime = DateTime.Now, + }); + var result = await _clinicalDataTrialSetRepository.SaveChangesAsync(); - }).ToList(); + } - await _clinicalDataTrialSetRepository.AddRangeAsync(dataSets); - - //var needUpdateitemList = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialId && needUpdateIds.Contains(x.SystemClinicalDataSetId.Value)).ToListAsync(); - //foreach (var item in needUpdateitemList) - //{ - // var systemData = systemClinicalDataList.FirstOrDefault(x => x.Id == item.SystemClinicalDataSetId); - // await _clinicalDataTrialSetRepository.UpdatePartialNoQueryAsync(item.Id,x=>new ClinicalDataTrialSet() { - - // ClinicalDataSetName = systemData.ClinicalDataSetName, - // ClinicalDataLevel = systemData.ClinicalDataLevel, - // ClinicalUploadType = systemData.ClinicalUploadType, - // UploadRole = systemData.UploadRole, - // FileName = systemData.FileName, - // Path = systemData.Path, - // }); - //} - - - var result= await _clinicalDataTrialSetRepository.SaveChangesAsync(); - return ResponseOutput.Ok(result); } /// diff --git a/IRaCIS.Core.Domain/Trial/Trial.cs b/IRaCIS.Core.Domain/Trial/Trial.cs index 472ee1236..18bf74e4c 100644 --- a/IRaCIS.Core.Domain/Trial/Trial.cs +++ b/IRaCIS.Core.Domain/Trial/Trial.cs @@ -356,6 +356,12 @@ namespace IRaCIS.Core.Domain.Models public bool IsReadingShowPreviousResults { get; set; } = false; + /// + /// 同步临床数据时间 + /// + public DateTime? SyncClinicalDataTime { get; set; } + + //public Guid? ReviewTypeId { get; set; } = Guid.Empty; //[ForeignKey("ReviewTypeId")]