From 83480730f032e68b25fc6e16b2b7f76340291192 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Fri, 24 Jun 2022 11:29:30 +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 --- .../IRaCIS.Core.Application.xml | 30 ++++++++ .../Service/Reading/ClinicalDataSetService.cs | 10 --- .../Reading/Dto/ReadingClinicalDataDto.cs | 7 ++ .../Reading/Dto/ReadingImageTaskViewModel.cs | 4 + .../Reading/ReadingClinicalDataService.cs | 67 +++++++---------- .../Reading/ReadingImageTaskService.cs | 13 +++- .../Service/Reading/_MapConfig.cs | 2 +- .../Reading/View/ReadingClinicalDataView.cs | 73 +++++++++---------- .../Context/IRaCISDBContext.cs | 2 +- 9 files changed, 117 insertions(+), 91 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 9bc48e34b..19f5610d5 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -580,6 +580,11 @@ 上传方式 + + + 上传角色 + + 是否启用 @@ -610,6 +615,11 @@ 临床级别 + + + 上传角色 + + 上传方式 @@ -645,6 +655,11 @@ 创建人 + + + 上传角色 + + 项目ID @@ -690,6 +705,11 @@ 上传方式 + + + 上传角色 + + 创建时间 @@ -1085,6 +1105,11 @@ 临床级别 + + + 上传角色 + + 上传方式 @@ -1155,6 +1180,11 @@ 是否是基线 + + + 上传角色 + + 名称 diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs index b0eed3be0..505d5ec79 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs @@ -96,16 +96,6 @@ namespace IRaCIS.Application.Services .WhereIf(inDto.ClinicalUploadType != null, x => x.ClinicalUploadType == inDto.ClinicalUploadType) .WhereIf(inDto.ClinicalDataSetName != String.Empty, x => x.ClinicalDataSetName.Contains(inDto.ClinicalDataSetName)) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - - var crcClinicalData = await _previousPDFRepository.AnyAsync(x => x.TrialId == inDto.TrialId); - - trialClinicalDataList.ForEach(x => - { - if (x.ClinicalDataSetName == "既往局部治疗史") - { - x.IsUsed = crcClinicalData; - } - }); return trialClinicalDataList; } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs index 5335d94ea..1239d99dc 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs @@ -93,6 +93,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto [Required(ErrorMessage = "ReadingId为null")] public Guid ReadingId { get; set; } + + public UploadRole UploadRole { get; set; } } public class GetReadingClinicalDataPDFListIndto:PageInput @@ -211,6 +213,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public ClinicalLevel ClinicalDataLevel { get; set; } + /// + /// 上传角色 + /// + public UploadRole UploadRole { get; set; } + public Guid SubjectId { get; set; } /// diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index 1dd5e0fcf..2d220394e 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -148,7 +148,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public class GetReadingPastResultListInDto { + [NotDefault] public Guid TrialId { get; set; } + + [NotDefault] + public Guid SubjectId { get; set; } } public class SaveJudgeVisitTaskResult diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs index 3184580b1..359f1b2bc 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs @@ -25,14 +25,13 @@ namespace IRaCIS.Application.Services { private readonly IRepository _readingClinicalDataRepository; private readonly IRepository _clinicalDataTrialSetRepository; - private readonly IRepository _readingClinicalDataViewRepository; + private readonly IRepository _previousPDFRepository; private readonly IRepository _subjectVisitRepository; private readonly IRepository _readingClinicalDataPDFRepository; public ReadingClinicalDataService(IRepository readingClinicalDataRepository, IRepository clinicalDataTrialSetRepository, - IRepository readingClinicalDataViewRepository, IRepository previousPDFRepository, IRepository subjectVisitRepository, IRepository readingClinicalDataPDFRepository @@ -40,7 +39,6 @@ namespace IRaCIS.Application.Services { this._readingClinicalDataRepository = readingClinicalDataRepository; this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository; - this._readingClinicalDataViewRepository = readingClinicalDataViewRepository; this._previousPDFRepository = previousPDFRepository; this._subjectVisitRepository = subjectVisitRepository; this._readingClinicalDataPDFRepository = readingClinicalDataPDFRepository; @@ -194,48 +192,35 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto) { - var isBaseLine = await _subjectVisitRepository.AnyAsync(x => x.Id == inDto.ReadingId && x.VisitNum == 0); - var result = await _readingClinicalDataViewRepository.Where(x=>x.SubjectId==inDto.SubjectId) - .Where(x=>x.ReadingId==inDto.ReadingId||x.ReadingId==null) - .WhereIf(!isBaseLine,x=>x.IsCRCUpload==false).ProjectTo(_mapper.ConfigurationProvider).ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(GetReadingClinicalDataListOutDto.ClinicalDataSetName) : inDto.SortField, - inDto.Asc); - foreach (var item in result.CurrentPageData) - { - item.ClinicalDataLevelName = item.ClinicalDataLevel.GetDisplayName(); - item.ClinicalUploadTypeName = item.ClinicalUploadType.GetDisplayName(); - - if (item.IsCRCUpload) - { - item.FileList = await _previousPDFRepository.Where(x => x.SubjectId == inDto.SubjectId).Select(y => new GetFileDto() + var isBaseLine = await _subjectVisitRepository.AnyAsync(x => x.Id == inDto.ReadingId && x.IsBaseLine); + var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId) + .Where(x => x.ReadingId == inDto.ReadingId) + .WhereIf(inDto.UploadRole == UploadRole.CRC, x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC) + .WhereIf(inDto.UploadRole == UploadRole.PM && !isBaseLine, x => x.ClinicalDataTrialSet.UploadRole == UploadRole.PM) + .Select(x => new GetReadingClinicalDataListOutDto() { + ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel, + SubjectId = x.SubjectId, + ClinicalDataSetName = x.ClinicalDataTrialSet.ClinicalDataSetName, + ClinicalDataTrialSetId = x.ClinicalDataTrialSetId, + IsSign = x.IsSign, + ClinicalUploadType = x.ClinicalDataTrialSet.ClinicalUploadType, + Id = x.Id, + UploadRole=x.ClinicalDataTrialSet.UploadRole, + IsCRCUpload = x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC, + FileList = x.ReadingClinicalDataPDFList.Select(y => new GetFileDto() { Id = y.Id, FileName = y.FileName, Path = y.Path - }).ToListAsync(); - } - else - { - if (item.ClinicalDataLevel != ClinicalLevel.Subject) - { - item.FileList = await _readingClinicalDataPDFRepository.Where(y => y.ReadingClinicalDataId == item.Id).Select(y => new GetFileDto() - { - Id = y.Id, - FileName = y.FileName, - Path = y.Path - }).ToListAsync(); - } - else - { - item.FileList = await _readingClinicalDataPDFRepository.Where(y => y.SubjectId == item.SubjectId).Select(y => new GetFileDto() - { - Id = y.Id, - FileName = y.FileName, - Path = y.Path - }).ToListAsync(); - } - } - - } + }).ToList() + }); + + + + + var result=await resultQuery.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(GetReadingClinicalDataListOutDto.ClinicalDataSetName) : inDto.SortField, + inDto.Asc); + diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs index 7e182a143..e5d387306 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs @@ -29,6 +29,7 @@ namespace IRaCIS.Application.Services private readonly IRepository _noneDicomStudyRepository; private readonly IRepository _visitTaskRepository; + private readonly IRepository _trialRepository; private readonly IVisitTaskHelpeService _visitTaskHelpeService; private readonly IRepository _subjectVisitRepository; private readonly IRepository _subjectRepository; @@ -42,6 +43,7 @@ namespace IRaCIS.Application.Services IMapper mapper, IRepository noneDicomStudyRepository, IRepository visitTaskRepository, + IRepository TrialRepository, IVisitTaskHelpeService visitTaskHelpeService, IRepository subjectVisitRepository, IRepository subjectRepository, @@ -54,6 +56,7 @@ namespace IRaCIS.Application.Services base._mapper = mapper; this._noneDicomStudyRepository = noneDicomStudyRepository; this._visitTaskRepository = visitTaskRepository; + this._trialRepository = TrialRepository; this._visitTaskHelpeService = visitTaskHelpeService; this._subjectVisitRepository = subjectVisitRepository; this._subjectRepository = subjectRepository; @@ -171,11 +174,19 @@ namespace IRaCIS.Application.Services } List result=await _noneDicomStudyRepository.Where(t => visitIds.Contains(t.SubjectVisitId)) .ProjectTo(_mapper.ConfigurationProvider, new { token = _userInfo.UserToken }).ToListAsync(); + + var trialInfo = await _trialRepository.Where(x => x.Id == inDto.TrialId).Select(x => new + { + x.IsReadingShowPreviousResults, + x.IsReadingShowSubjectInfo, + }).FirstOrDefaultAsync(); return (result, new { VisitTaskId= task.VisistTaskId, SubjectId=task.SubjectId, SubjectCode=task.SubjectCode, ReadingCategory= task.ReadingCategory, + IsReadingShowPreviousResults= trialInfo.IsReadingShowPreviousResults, + IsReadingShowSubjectInfo=trialInfo.IsReadingShowSubjectInfo, }); } @@ -388,7 +399,7 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task> GetReadingPastResultList(GetReadingPastResultListInDto inDto) { - var readingPastResultList =await _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.DoctorUserId == _userInfo.Id) + var readingPastResultList =await _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId&&x.SubjectId==inDto.SubjectId && x.DoctorUserId == _userInfo.Id) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); return readingPastResultList; } diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs index 9b2107ab4..32f6c6125 100644 --- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs @@ -20,7 +20,7 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.SiteCodes, u => u.MapFrom(s => s.ReadingPeriodSites.Select(x => x.TrialSite.TrialSiteCode))) .ForMember(d => d.PlanCount, u => u.MapFrom(s => s.ReadingPeriodPlanList.Count)); - CreateMap(); + //CreateMap(); // CreateMap() //.ForMember(d => d.ClinicalDataLevel, u => u.MapFrom(s => s.ClinicalDataTrialSet.ClinicalDataLevel)) //.ForMember(d => d.ClinicalDataLevelName, u => u.MapFrom(s => s.ClinicalDataTrialSet.ClinicalDataSetName)) diff --git a/IRaCIS.Core.Domain/Reading/View/ReadingClinicalDataView.cs b/IRaCIS.Core.Domain/Reading/View/ReadingClinicalDataView.cs index b50053ed7..ae0dcb095 100644 --- a/IRaCIS.Core.Domain/Reading/View/ReadingClinicalDataView.cs +++ b/IRaCIS.Core.Domain/Reading/View/ReadingClinicalDataView.cs @@ -1,5 +1,4 @@ using IRaCIS.Core.Domain.Share; -using IRaCIS.Core.Domain.Share; using System; using System.Collections.Generic; using System.Linq; @@ -8,54 +7,54 @@ using System.Threading.Tasks; namespace IRaCIS.Core.Domain.Models { - public class ReadingClinicalDataView : Entity - { + //public class ReadingClinicalDataView : Entity + //{ - /// - /// 项目ID - /// - public Guid TrialId { get; set; } + // /// + // /// 项目ID + // /// + // public Guid TrialId { get; set; } - /// - /// 受试者ID - /// - public Guid SubjectId { get; set; } + // /// + // /// 受试者ID + // /// + // public Guid SubjectId { get; set; } - /// - /// 阅片 - /// - public Guid? ReadingId { get; set; } + // /// + // /// 阅片 + // /// + // public Guid? ReadingId { get; set; } - /// - /// 项目配置临床类型ID - /// - public Guid ClinicalDataTrialSetId { get; set; } + // /// + // /// 项目配置临床类型ID + // /// + // public Guid ClinicalDataTrialSetId { get; set; } - /// - /// 项目配置临床类型Name - /// - public string ClinicalDataSetName { get; set; } + // /// + // /// 项目配置临床类型Name + // /// + // public string ClinicalDataSetName { get; set; } - public ClinicalUploadType ClinicalUploadType { get; set; } + // public ClinicalUploadType ClinicalUploadType { get; set; } - /// - /// 临床数据级别 - /// - public ClinicalLevel ClinicalDataLevel { get; set; } + // /// + // /// 临床数据级别 + // /// + // public ClinicalLevel ClinicalDataLevel { get; set; } - /// - /// 是否为CRC上传 - /// - public bool IsCRCUpload { get; set; } + // /// + // /// 是否为CRC上传 + // /// + // public bool IsCRCUpload { get; set; } - /// - /// 是否签名 - /// - public bool IsSign { get; set; } + // /// + // /// 是否签名 + // /// + // public bool IsSign { get; set; } - } + //} } diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs index 8dee5b6e3..908a1bc50 100644 --- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs +++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs @@ -194,7 +194,7 @@ namespace IRaCIS.Core.Infra.EFCore public virtual DbSet ReadingQuestionTrial { get; set; } - public virtual DbSet ReadingClinicalDataView { get; set; } + //public virtual DbSet ReadingClinicalDataView { get; set; } public virtual DbSet ReadingClinicalDataPDF { get; set; }