From a9afb9a478d3e26cb742673e77f5fdb86886d3e0 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Wed, 29 Jun 2022 11:02:05 +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 --- .../Reading/Dto/ReadingClinicalDataDto.cs | 12 ++++ .../Reading/ReadingClinicalDataService.cs | 38 +++++------- .../Service/Reading/ReadingQuestionService.cs | 62 +++++++++++++------ 3 files changed, 70 insertions(+), 42 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs index b1391b727..86c96b488 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs @@ -166,6 +166,18 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid ReadingId { get; set; } public UploadRole? UploadRole { get; set; } + + public Guid TrialId { get; set; } + + /// + /// 是否是访视 + /// + public bool IsVisit { get; set; } + + /// + /// 是否是基线 + /// + public bool IsBaseLine { get; set; } } public class GetReadingClinicalDataPDFListIndto:PageInput diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs index 1431c2ae4..f44cd9c28 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs @@ -138,14 +138,14 @@ namespace IRaCIS.Application.Services Path=x.ClinicalDataTrialSet.Path, }).ToListAsync() ; - PageOutput clinicalData = await this.GetReadingClinicalDataList(new GetReadingClinicalDataListIndto() + PageOutput clinicalData = (await this.GetReadingClinicalDataList(new GetReadingClinicalDataListIndto() { PageIndex = 1, PageSize = 9999, SubjectId = inDto.SubjectId, ReadingId = inDto.SubjectVisitId, - - }); + TrialId=inDto.TrialId, + })).Item1; var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); @@ -285,26 +285,23 @@ namespace IRaCIS.Application.Services /// /// [HttpPost] - public async Task> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto) + public async Task<(PageOutput,object)> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto) { - //var userPMTypes = new List() { - // (int)UserTypeEnum.ProjectManager, - // (int)UserTypeEnum.SPM, - // (int)UserTypeEnum.CPM, - // (int)UserTypeEnum.IndependentReviewer, - // }; + GetTrialClinicalDataSelectIndto getTrialClinicalDataSelectIndto = new GetTrialClinicalDataSelectIndto() + { + ReadingId = inDto.ReadingId, + TrialId = inDto.TrialId, + IsBaseLine = inDto.IsBaseLine, + SubjectId = inDto.SubjectId, + IsVisit = inDto.IsVisit, + }; - //if (userPMTypes.Contains(_userInfo.UserTypeEnumInt)) - //{ - // inDto.UploadRole = UploadRole.PM; - //} + var clinicalDataList = await this.GetTrialClinicalDataSelect(getTrialClinicalDataSelectIndto); - //else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.IQC) { inDto.UploadRole = UploadRole.CRC; } - 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) @@ -331,14 +328,9 @@ namespace IRaCIS.Application.Services var result=await resultQuery.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(GetReadingClinicalDataListOutDto.ClinicalDataSetName) : inDto.SortField, inDto.Asc); - - var previousHistoryList = await _previousHistoryRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); var previousOtherList = await _previousOtherRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); var previousSurgeryList = await _previousSurgeryRepository.Where(x => x.SubjectVisitId == inDto.ReadingId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - - - foreach (var item in result.CurrentPageData) { item.ClinicalTableData = new ClinicalDataTable() @@ -350,7 +342,9 @@ namespace IRaCIS.Application.Services } - return result; + return (result, new { + isCanAddClinicalData= clinicalDataList.Count()>0, + }) ; } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs index 82c810d20..bece44e0e 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs @@ -12,6 +12,7 @@ using IRaCIS.Core.Application.Service.Reading; using IRaCIS.Core.Infra.EFCore.Common; using Panda.DynamicWebApi.Attributes; using IRaCIS.Core.Application.Contracts; +using IRaCIS.Core.Infrastructure; namespace IRaCIS.Application.Services { @@ -30,6 +31,7 @@ namespace IRaCIS.Application.Services private readonly IRepository _clinicalDataTrialSetRepository; private readonly IRepository _clinicalDataSystemSetRepository; private readonly IRepository _dictionaryRepository; + private readonly IRepository _trialRepository; private readonly IReadingImageTaskService _readingImageTaskService; private readonly IRepository _readingTaskQuestionAnswer; private readonly IRepository _previousPDFRepository; @@ -43,6 +45,7 @@ namespace IRaCIS.Application.Services IRepository ClinicalDataTrialSetRepository, IRepository ClinicalDataSystemSetRepository, IRepository dictionaryRepository, + IRepository trialRepository, IReadingImageTaskService readingImageTaskService, IRepository readingTaskQuestionAnswer, IRepository previousPDFRepository @@ -56,6 +59,7 @@ namespace IRaCIS.Application.Services this._clinicalDataTrialSetRepository = ClinicalDataTrialSetRepository; this._clinicalDataSystemSetRepository = ClinicalDataSystemSetRepository; this._dictionaryRepository = dictionaryRepository; + this._trialRepository = trialRepository; this._readingImageTaskService = readingImageTaskService; this._readingTaskQuestionAnswer = readingTaskQuestionAnswer; this._previousPDFRepository = previousPDFRepository; @@ -131,28 +135,28 @@ namespace IRaCIS.Application.Services // return ResponseOutput.Ok(result); //} - /// - /// 验证系统问题是否设置裁判答案 - /// - /// - /// - public async Task VerifySystemQuestionIsSetJudgeAnswer(VerifySystemQuestionIsSetJudgeAnswerInDto inDto) - { - var result = await _readingQuestionTrialRepository.AnyAsync(x => x.ReadingQuestionSystemId == inDto.Id&&x.IsJudgeQuestion && x.JudgeType != JudgeTypeEnum.None); - return ResponseOutput.Ok(result); - } + ///// + ///// 验证系统问题是否设置裁判答案 + ///// + ///// + ///// + //public async Task VerifySystemQuestionIsSetJudgeAnswer(VerifySystemQuestionIsSetJudgeAnswerInDto inDto) + //{ + // var result = await _readingQuestionTrialRepository.AnyAsync(x => x.ReadingQuestionSystemId == inDto.Id&&x.IsJudgeQuestion && x.JudgeType != JudgeTypeEnum.None); + // return ResponseOutput.Ok(result); + //} - /// - /// 验证项目问题是否设置裁判答案 - /// - /// - /// - public async Task VerifyTrialQuestionIsSetJudgeAnswer(VerifySystemQuestionIsSetJudgeAnswerInDto inDto) - { - var result = await _readingQuestionTrialRepository.AnyAsync(x => x.Id == inDto.Id && x.IsJudgeQuestion && x.JudgeType != JudgeTypeEnum.None); - return ResponseOutput.Ok(result); - } + ///// + ///// 验证项目问题是否设置裁判答案 + ///// + ///// + ///// + //public async Task VerifyTrialQuestionIsSetJudgeAnswer(VerifySystemQuestionIsSetJudgeAnswerInDto inDto) + //{ + // var result = await _readingQuestionTrialRepository.AnyAsync(x => x.Id == inDto.Id && x.IsJudgeQuestion && x.JudgeType != JudgeTypeEnum.None); + // return ResponseOutput.Ok(result); + //} /// /// 设置系统问题标准是否完成配置 @@ -377,6 +381,17 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task AddOrUpdateReadingQuestionSystem(AddOrUpdateReadingQuestionSystemInDto indto) { + if (indto.Id != null) + { + var trialIdList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionSystemId == indto.Id && x.IsJudgeQuestion && x.JudgeType != JudgeTypeEnum.None) + .Select(x => x.TrialId).ToListAsync(); + + if (trialIdList.Count>0) + { + var trialNames = await _trialRepository.Where(x => trialIdList.Contains(x.Id)).Select(x => x.ExperimentName).ToListAsync(); + throw new BusinessValidationFailedException("当前问题在项目"+ string.Join(',', trialNames) + "设置了裁判标准了,修改失败"); + } + } var entity = await _readingQuestionSystemRepository.InsertOrUpdateAsync(indto, true); return ResponseOutput.Ok(entity.Id.ToString()); } @@ -676,6 +691,13 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task AddOrUpdateReadingQuestionTrial(AddOrUpdateReadingQuestionTrialInDto indto) { + if (indto.Id != null) + { + if (await _readingQuestionTrialRepository.AnyAsync(x => x.Id == indto.Id && x.IsJudgeQuestion && x.JudgeType != JudgeTypeEnum.None)) + { + throw new BusinessValidationFailedException("当前问题已经设置了裁判标准了,修改失败"); + } + } var entity = await _readingQuestionTrialRepository.InsertOrUpdateAsync(indto, true); return ResponseOutput.Ok(entity.Id.ToString()); }