Uat_Study
			
			
		
		
							parent
							
								
									2441a6ae3b
								
							
						
					
					
						commit
						6fcd163988
					
				| 
						 | 
					@ -254,25 +254,108 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
 | 
				
			||||||
        #endregion
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// 将上一次的病灶信息添加到这一次
 | 
					        /// 将上一次的访视病灶添加到这一次
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        /// <param name="inDto"></param>
 | 
					        /// <param name="inDto"></param>
 | 
				
			||||||
        /// <returns></returns>
 | 
					        /// <returns></returns>
 | 
				
			||||||
        public async Task<AddTaskLesionAnswerFromLastTaskOutDto> AddTaskLesionAnswerFromLastTask(AddTaskLesionAnswerFromLastTaskInDto inDto)
 | 
					        public async Task<AddTaskLesionAnswerFromLastTaskOutDto> AddTaskLesionAnswerFromLastTask(AddTaskLesionAnswerFromLastTaskInDto inDto)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					 | 
				
			||||||
            var visitTaskId = inDto.VisitTaskId;
 | 
					            var visitTaskId = inDto.VisitTaskId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync();
 | 
					            var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var baseLineVisitId = await _subjectVisitRepository.Where(x => x.SubjectId == taskinfo.SubjectId && x.IsBaseLine).Select(x => x.Id).FirstOrDefaultAsync();
 | 
					            var baseLineVisitId = await _subjectVisitRepository.Where(x => x.SubjectId == taskinfo.SubjectId && x.IsBaseLine).Select(x => x.Id).FirstOrDefaultAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // 判断当前任务是否是基线
 | 
				
			||||||
 | 
					            if (taskinfo.SourceSubjectVisitId != baseLineVisitId)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // 判断当前任务是是否有表格问题答案
 | 
				
			||||||
 | 
					                if (!(await _readingTableQuestionAnswerRepository.AnyAsync(x => x.VisitTaskId == visitTaskId)))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    var LastVisitTaskId = 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.VisitTaskNum < taskinfo.VisitTaskNum && x.TaskState == TaskState.Effect && x.ArmEnum == taskinfo.ArmEnum
 | 
				
			||||||
 | 
					                    ).OrderByDescending(x => x.VisitTaskNum).Select(x => x.Id).FirstOrDefaultAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    var copyTableAnswers = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == LastVisitTaskId).Select(x => new CopyTableAnswerDto()
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        Answer = x.Answer,
 | 
				
			||||||
 | 
					                        QuestionId = x.QuestionId,
 | 
				
			||||||
 | 
					                        RowId = x.RowId,
 | 
				
			||||||
 | 
					                        QuestionMark = x.ReadingTableQuestionTrial.QuestionMark,
 | 
				
			||||||
 | 
					                        TableQuestionId = x.TableQuestionId,
 | 
				
			||||||
 | 
					                        RowIndex = x.RowIndex,
 | 
				
			||||||
 | 
					                        TrialId = x.TrialId
 | 
				
			||||||
 | 
					                    }).ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    var tableRowAnswers = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == LastVisitTaskId).ProjectTo<CopyTableAnswerRowInfo>(_mapper.ConfigurationProvider).ToListAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    tableRowAnswers.ForEach(x =>
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        x.VisitTaskId = visitTaskId;
 | 
				
			||||||
 | 
					                        x.IsCurrentTaskAdd = false;
 | 
				
			||||||
 | 
					                        x.Id = NewId.NextGuid();
 | 
				
			||||||
 | 
					                        x.SeriesId = null;
 | 
				
			||||||
 | 
					                        x.InstanceId = null;
 | 
				
			||||||
 | 
					                        x.MeasureData = string.Empty;
 | 
				
			||||||
 | 
					                        x.PicturePath = string.Empty;
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    tableRowAnswers.ForEach(x =>
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        x.SplitRowId = tableRowAnswers.Where(y => y.OriginalId == x.SplitRowId).Select(y => y.Id).FirstOrDefault();
 | 
				
			||||||
 | 
					                        x.MergeRowId = tableRowAnswers.Where(y => y.OriginalId == x.MergeRowId).Select(y => y.Id).FirstOrDefault();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    List<QuestionMark?> notNeedCopyMarks = new List<QuestionMark?>()
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                         QuestionMark.MajorAxis,
 | 
				
			||||||
 | 
					                         QuestionMark.ShortAxis,
 | 
				
			||||||
 | 
					                         QuestionMark.State,
 | 
				
			||||||
 | 
					                    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    var tableAnswers = copyTableAnswers.Select(x => new ReadingTableQuestionAnswer
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        Id = NewId.NextGuid(),
 | 
				
			||||||
 | 
					                        Answer = notNeedCopyMarks.Contains(x.QuestionMark) ? string.Empty : x.Answer,
 | 
				
			||||||
 | 
					                        QuestionId = x.QuestionId,
 | 
				
			||||||
 | 
					                        RowIndex = x.RowIndex,
 | 
				
			||||||
 | 
					                        RowId = tableRowAnswers.Where(y => y.OriginalId == x.RowId).Select(x => x.Id).FirstOrDefault(),
 | 
				
			||||||
 | 
					                        TableQuestionId = x.TableQuestionId,
 | 
				
			||||||
 | 
					                        TrialId = x.TrialId,
 | 
				
			||||||
 | 
					                        VisitTaskId = visitTaskId,
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    await _visitTaskRepository.UpdatePartialFromQueryAsync(visitTaskId, x => new VisitTask()
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        ReadingTaskState = ReadingTaskState.Reading,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    var addList = _mapper.Map<List<ReadingTableAnswerRowInfo>>(tableRowAnswers);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    await _readingTableAnswerRowInfoRepository.AddRangeAsync(addList);
 | 
				
			||||||
 | 
					                    await _readingTableQuestionAnswerRepository.AddRangeAsync(tableAnswers);
 | 
				
			||||||
 | 
					                    await _readingTableQuestionAnswerRepository.SaveChangesAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return new AddTaskLesionAnswerFromLastTaskOutDto()
 | 
					            return new AddTaskLesionAnswerFromLastTaskOutDto()
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                IsBaseLine = taskinfo.SourceSubjectVisitId == baseLineVisitId,
 | 
					                IsBaseLine = taskinfo.SourceSubjectVisitId == baseLineVisitId,
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue