Uat_Study
			
			
		
		
							parent
							
								
									2a8f66f360
								
							
						
					
					
						commit
						dfeb4204e7
					
				| 
						 | 
				
			
			@ -66,9 +66,9 @@ namespace IRaCIS.Core.Application.ViewModel
 | 
			
		|||
        public bool MeetRECISTPD { get; set; }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 本次访视SOD增加不小于5mm
 | 
			
		||||
        /// 本次访视SOD与触发iRECIST访视相比本次访视SOD增加不小于5mm
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public bool SODAddGreaterThan5 { get; set; }
 | 
			
		||||
        public bool SODTiggerAddGreaterThan5 { get; set; }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 比整体访视期间最低点SOD增加≥20 %
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1648,6 +1648,27 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 获取第一次转变访视任务Id
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        private async Task<Guid> GetFirstChangeTaskId(ReadingCalculateDto inDto)
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
            var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).ProjectTo<VisitTaskDto>(_mapper.ConfigurationProvider).FirstNotNullAsync();
 | 
			
		||||
            var firstChangeTaskId = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Visit &&
 | 
			
		||||
                 x.TrialReadingCriterionId == taskinfo.TrialReadingCriterionId &&
 | 
			
		||||
                 x.IsAnalysisCreate == taskinfo.IsAnalysisCreate &&
 | 
			
		||||
                  x.DoctorUserId == taskinfo.DoctorUserId &&
 | 
			
		||||
                  x.IsSelfAnalysis == taskinfo.IsSelfAnalysis &&
 | 
			
		||||
                 x.SubjectId == taskinfo.SubjectId && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ArmEnum == taskinfo.ArmEnum
 | 
			
		||||
                 && x.BeforeConvertedTaskId!=null && x.TaskState == TaskState.Effect
 | 
			
		||||
                 ).OrderBy(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync();
 | 
			
		||||
 | 
			
		||||
            return firstChangeTaskId;
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1670,7 +1691,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
 | 
			
		|||
        /// {
 | 
			
		||||
        ///     靶病灶疗效为 ICPD
 | 
			
		||||
        /// } 
 | 
			
		||||
        /// else if (上一访视评估为iUPD&&本次访视SOD增加不小于5mm)
 | 
			
		||||
        /// else if (上一访视评估为iUPD&&与触发iRECIST访视相比本次访视SOD增加不小于5mm)
 | 
			
		||||
        /// {
 | 
			
		||||
        ///     靶病灶疗效为 ICPD
 | 
			
		||||
        /// } 
 | 
			
		||||
| 
						 | 
				
			
			@ -1700,6 +1721,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
 | 
			
		|||
 | 
			
		||||
            var tableQuestion = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.TargetLesion).SelectMany(x => x.TableRowInfoList).ToList();
 | 
			
		||||
            var lastVisitTaskId = await GetLastVisitTaskId(inDto);
 | 
			
		||||
            var firstChangeTaskId = await GetFirstChangeTaskId(inDto);
 | 
			
		||||
            var targetLesionQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.TargetLesion).Select(x => x.QuestionId).FirstOrDefault();
 | 
			
		||||
 | 
			
		||||
            var sodQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SOD).Select(x => x.QuestionId).FirstOrDefault();
 | 
			
		||||
| 
						 | 
				
			
			@ -1715,8 +1737,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
 | 
			
		|||
                // 满足RECISTPD
 | 
			
		||||
                MeetRECISTPD = (await GetTargetLesionEvaluate(inDto)) == TargetAssessment.PD.GetEnumInt(),
 | 
			
		||||
 | 
			
		||||
                // 本次访视SOD增加不小于5mm
 | 
			
		||||
                SODAddGreaterThan5 = await GetSODData(inDto) - (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastVisitTaskId && x.ReadingQuestionTrialId == sodQuestionId)
 | 
			
		||||
                // 本次访视SOD与触发iRECIST访视相比本次访视SOD增加不小于5mm
 | 
			
		||||
                SODTiggerAddGreaterThan5 = firstChangeTaskId==inDto.VisitTaskId ? false : await GetSODData(inDto) - (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == firstChangeTaskId && x.ReadingQuestionTrialId == sodQuestionId)
 | 
			
		||||
                .Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0() >= 5,
 | 
			
		||||
 | 
			
		||||
                //比整体访视期间最低点SOD增加≥20 %
 | 
			
		||||
| 
						 | 
				
			
			@ -1771,8 +1793,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
 | 
			
		|||
                //     靶病灶疗效为 ICPD
 | 
			
		||||
                result = TargetAssessment.iCPD;
 | 
			
		||||
            }
 | 
			
		||||
            // else if (上一访视评估为iUPD&&本次访视SOD增加不小于5mm)
 | 
			
		||||
            else if (resultData.LastTaskTarget.EqEnum(TargetAssessment.iUPD) && resultData.SODAddGreaterThan5)
 | 
			
		||||
            // else if (上一访视评估为iUPD&&与触发iRECIST访视相比本次访视SOD增加不小于5mm)
 | 
			
		||||
            else if (resultData.LastTaskTarget.EqEnum(TargetAssessment.iUPD) && resultData.SODTiggerAddGreaterThan5)
 | 
			
		||||
            {
 | 
			
		||||
                //     靶病灶疗效为 ICPD
 | 
			
		||||
                result = TargetAssessment.iCPD;
 | 
			
		||||
| 
						 | 
				
			
			@ -2536,7 +2558,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
 | 
			
		|||
        /// 
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <remarks>
 | 
			
		||||
        /// if(上一访视整体肿瘤评估评估为iCPD && 靶病灶评估、非靶病灶评估或新病灶评估任一项为iCPD) 
 | 
			
		||||
        /// if(上一访视整体肿瘤评估评估为iCPD && 靶病灶评估、非靶病灶评估或新病灶评估任一项为iCPD或iCPD) 
 | 
			
		||||
        /// {
 | 
			
		||||
        ///    疗效为 iCPD
 | 
			
		||||
        /// }
 | 
			
		||||
| 
						 | 
				
			
			@ -2610,11 +2632,11 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
 | 
			
		|||
                LastTaskLesioniUPDOriCPD = lastTaskCalculateDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.Tumor && (x.Answer.EqEnum(OverallAssessment.iCPD) || x.Answer.EqEnum(OverallAssessment.iUPD))),
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            // if(上一访视整体肿瘤评估评估为iCPD && 靶病灶评估、非靶病灶评估或新病灶评估任一项为iCPD) 
 | 
			
		||||
            // if(上一访视整体肿瘤评估评估为iCPD && 靶病灶评估、非靶病灶评估或新病灶评估任一项为iCPD或iCPD) 
 | 
			
		||||
            if (lastTaskCalculateDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.Tumor && x.Answer.EqEnum(OverallAssessment.iCPD))
 | 
			
		||||
                && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.iCPD))
 | 
			
		||||
               || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iCPD))
 | 
			
		||||
               || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.iCPD))))
 | 
			
		||||
                && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && (x.Answer.EqEnum(TargetAssessment.iCPD)||x.Answer.EqEnum(TargetAssessment.iUPD)))
 | 
			
		||||
               || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && (x.Answer.EqEnum(NoTargetAssessment.iCPD) || x.Answer.EqEnum(NoTargetAssessment.iUPD)))
 | 
			
		||||
               || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation&& (x.Answer.EqEnum(NewLesionAssessment.iCPD) || x.Answer.EqEnum(NewLesionAssessment.iUPD)))))
 | 
			
		||||
            {
 | 
			
		||||
                //    疗效为 iCPD
 | 
			
		||||
                result = OverallAssessment.iCPD;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue