diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index 2f382f67a..1a9e7f4e5 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -1204,7 +1204,12 @@ namespace IRaCIS.Core.Application.Image.QA // CRC 上传的基线数据签名 - await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ReadingId == dbSubjectVisit.Id && x.IsSign==false, x => new ReadingClinicalData() + await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x => + + (x.ClinicalDataTrialSet.ClinicalDataLevel== ClinicalLevel.Subject|| x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit)&& + + + x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ReadingId == dbSubjectVisit.Id && x.IsSign==false, x => new ReadingClinicalData() { IsSign = true, ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs index eb8338e15..7edef6259 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs @@ -251,8 +251,12 @@ namespace IRaCIS.Core.Application.Service ClinicalFormIds.ForEach(x => { var dic = answers.Where(y => y.ClinicalFormId == x).ToDictionary(x => x.QuestionId.ToString(), x => x.Answer); - dic.Add("clinicalFormId", x.ToString()); - result.AnswerList.Add(dic); + dic.Add("ClinicalFormId", x.ToString()); + dic.Add("TrialId", inDto.TrialId.ToString()); + dic.Add("SubjectId", inDto.SubjectId.ToString()); + dic.Add("ClinicalDataTrialSetId", inDto.ClinicalDataTrialSetId.ToString()); + + result.AnswerList.Add(dic); }); return result; @@ -264,7 +268,7 @@ namespace IRaCIS.Core.Application.Service /// /// [HttpPost] - public async Task GetClinicalFormInfo(GetClinicalFormInfoInDto inDto) + public async Task> GetClinicalFormInfo(GetClinicalFormInfoInDto inDto) { var formInfo = await _clinicalFormRepository.Where(x => x.Id == inDto.ClinicalFormId).FirstNotNullAsync(); @@ -285,7 +289,7 @@ namespace IRaCIS.Core.Application.Service var questions = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == formInfo.ClinicalDataTrialSetId) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - var tableQuestions = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == formInfo.ClinicalDataTrialSetId) + var tableQuestions = await _trialClinicalTableQuestionRepository.Where(x => x.TrialClinicalId == formInfo.ClinicalDataTrialSetId) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); @@ -296,11 +300,7 @@ namespace IRaCIS.Core.Application.Service _iClinicalQuestionService.FindChildQuestion(x, questions, tableQuestions, questionAnswer, tableAnswer); }); - return new GetClinicalFormInfoOutDto() - { - - Question = result - }; + return result; } @@ -409,13 +409,34 @@ namespace IRaCIS.Core.Application.Service return ResponseOutput.Ok(true); } - /// - /// 获取CRC确认列表 + /// 删除表单数据 /// /// /// + /// [HttpPost] + public async Task DeleteClinicalForm(DeleteClinicalFormInDto inDto) + { + + 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) { List result = await _readModuleRepository.Where(x => x.TrialId == inDto.TrialId) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs index 4e125fd93..b8d869bb2 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs @@ -57,7 +57,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { public Guid SubjectId { get; set; } - public Guid ClinicalDataTrialSetId { get; set; } + + public Guid TrialId { get; set; } + + public Guid ClinicalDataTrialSetId { get; set; } } @@ -161,6 +164,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto } } + public class DeleteClinicalFormInDto + { + public Guid ClinicalFormId { get; set; } + } public class SubmitClinicalFormInDto { ///