From 8358d67f3e0a227b30975dc81da0941279f9b4ae Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 4 Jul 2023 15:24:34 +0800 Subject: [PATCH] =?UTF-8?q?S-002=20=E4=B8=B4=E5=BA=8A=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ClinicalData/ClinicalAnswerService.cs | 70 ++++++++++++++----- .../Service/Reading/Dto/ClinicalAnswerDto.cs | 2 +- 2 files changed, 52 insertions(+), 20 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs index 6f7e7a5d8..902957aa5 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs @@ -405,27 +405,52 @@ namespace IRaCIS.Core.Application.Service return ResponseOutput.Ok(true); } - /// - /// 获取CRC确认列表 + /// 删除表单数据 /// /// /// + /// [HttpPost] - public async Task> GetCRCConfirmList(GetCRCConfirmListInDto inDto) + public async Task DeleteClinicalForm(DeleteClinicalFormInDto inDto) { - List result = await _readModuleRepository.Where(x => x.TrialId == inDto.TrialId) - .WhereIf(inDto.ReadModuleId!=null,x=>x.Id==inDto.ReadModuleId) - .Select(x => new GetCRCConfirmListOutDto() - { - SubjectId= x.SubjectId, - IsCRCConfirm = x.IsCRCConfirm, - LatestScanDate = x.SubjectVisit.LatestScanDate, - ReadingSetType = x.ReadingSetType, - IsPMConfirm = x.IsPMConfirm, - SubjectCode=x.Subject.Code, - ReadModuleId = x.Id, - }).OrderBy(x => x.LatestScanDate).ToListAsync(); + + if (await _readModuleCriterionFromRepository.AnyAsync(x => x.ClinicalFormId == inDto.ClinicalFormId)) + { + throw new BusinessValidationFailedException("当前表单已确认,无法删除!"); + } + + await _clinicalFormRepository.BatchDeleteNoTrackingAsync(x => x.Id == inDto.ClinicalFormId); + await _clinicalQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => x.ClinicalFormId == inDto.ClinicalFormId); + await _clinicalAnswerRowInfoRepository.BatchDeleteNoTrackingAsync(x => x.ClinicalFormId == inDto.ClinicalFormId); + await _clinicalTableAnswerRepository.BatchDeleteNoTrackingAsync(x => x.ClinicalFormId == inDto.ClinicalFormId); + return ResponseOutput.Ok(true); + } + + /// + /// 获取CRC确认列表 + /// + /// + /// + [HttpPost] + public async Task> GetCRCConfirmList(GetCRCConfirmListInDto inDto) + { + var query = _readModuleRepository.Where(x => x.TrialId == inDto.TrialId) + .WhereIf(inDto.ReadModuleId != null, x => x.Id == inDto.ReadModuleId) + .Select(x => new GetCRCConfirmListOutDto() + { + SubjectId = x.SubjectId, + IsCRCConfirm = x.IsCRCConfirm, + LatestScanDate = x.SubjectVisit.LatestScanDate, + ReadingSetType = x.ReadingSetType, + IsPMConfirm = x.IsPMConfirm, + SubjectCode = x.Subject.Code, + ReadModuleId = x.Id, + }); + + + var result = await query.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, string.IsNullOrWhiteSpace(inDto.SortField) ? nameof(GetCRCConfirmListOutDto.LatestScanDate) : inDto.SortField, inDto.Asc); + var formList = await _clinicalFormRepository.Where(x => x.TrialId == inDto.TrialId) .Where(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC) .Where(x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.ImageRead || x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.OncologyRead) @@ -435,11 +460,12 @@ namespace IRaCIS.Core.Application.Service CheckDate = x.CheckDate, ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel, ClinicalFormId = x.Id, - ClinicalDataSetName=x.ClinicalDataTrialSet.ClinicalDataSetName, + ClinicalDataTrialSetId= x.ClinicalDataTrialSet.Id, + ClinicalDataSetName =x.ClinicalDataTrialSet.ClinicalDataSetName, ClinicalDataSetEnName=x.ClinicalDataTrialSet.ClinicalDataSetEnName, }).ToListAsync(); var confirmList = await _readModuleCriterionFromRepository.Where(x => x.TrialId == inDto.TrialId).Include(x=>x.ClinicalForm).Include(x=>x.ClinicalForm.ClinicalDataTrialSet).ToListAsync(); - result.ForEach(x => + result.CurrentPageData.ForEach(x => { if (x.IsCRCConfirm) { @@ -448,6 +474,7 @@ namespace IRaCIS.Core.Application.Service ClinicalDataSetName= y.ClinicalForm.ClinicalDataTrialSet.ClinicalDataSetName, ClinicalDataSetEnName= y.ClinicalForm.ClinicalDataTrialSet.ClinicalDataSetEnName, ClinicalFormId=y.ClinicalFormId, + ClinicalDataTrialSetId=y.ClinicalForm.ClinicalDataTrialSet.Id, }).ToList(); } else @@ -461,6 +488,7 @@ namespace IRaCIS.Core.Application.Service ClinicalDataSetName = y.ClinicalDataSetName, ClinicalDataSetEnName = y.ClinicalDataSetEnName, ClinicalFormId = y.ClinicalFormId, + ClinicalDataTrialSetId = y.ClinicalDataTrialSetId, }).ToList(); } else @@ -472,6 +500,7 @@ namespace IRaCIS.Core.Application.Service ClinicalDataSetName = y.ClinicalDataSetName, ClinicalDataSetEnName = y.ClinicalDataSetEnName, ClinicalFormId = y.ClinicalFormId, + ClinicalDataTrialSetId = y.ClinicalDataTrialSetId, }).ToList(); } } @@ -490,8 +519,11 @@ namespace IRaCIS.Core.Application.Service var result = (await this.GetCRCConfirmList(new GetCRCConfirmListInDto() { ReadModuleId = inDto.ReadModuleId, - TrialId = inDto.TrialId - })).SelectMany(x => x.ClinicalFormIdList).ToList(); + TrialId = inDto.TrialId, + PageIndex=1, + PageSize=9999, + + })).CurrentPageData.SelectMany(x => x.ClinicalFormIdList).ToList(); result.ForEach(x => { diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs index bbdd38867..9609043fd 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs @@ -99,7 +99,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string Answer { get; set; } = string.Empty; } - public class GetCRCConfirmListInDto + public class GetCRCConfirmListInDto:PageInput { public Guid TrialId { get; set; }