Uat_Study
he 2022-10-09 09:40:35 +08:00
parent e03ef0659b
commit c684760d43
3 changed files with 58 additions and 15 deletions

View File

@ -105,6 +105,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public class GetReadingReportEvaluationOutDto
{
public string TumorEvaluate { get; set; }
public string IsExistDisease { get; set; }
public ReadingTaskState ReadingTaskState { get; set; }
public List<VisitTaskInfo> VisitTaskList { get; set; }

View File

@ -247,6 +247,16 @@ namespace IRaCIS.Core.Application.Service
return await GetTumor(await GetReadingCalculateDto(visitTaskId));
}
/// <summary>
/// 获取报告是否存在疾病
/// </summary>
/// <param name="visitTaskId"></param>
/// <returns></returns>
public async Task<string> GetReportIsExistDisease(Guid visitTaskId)
{
return await GetIsExistDisease(await GetReadingCalculateDto(visitTaskId));
}
/// <summary>
/// 验证访视提交
/// </summary>
@ -523,7 +533,7 @@ namespace IRaCIS.Core.Application.Service
{
return null;
}
var decimalAnswerList = await GetVisitTaskAnswerList(inDto);
var decimalAnswerList = await GetLowSODVisit(inDto);
var minSOD = decimalAnswerList.OrderBy(x => x.SOD).Select(x => x.SOD).FirstOrDefault();
return value.NullChange0() - minSOD;
}
@ -545,7 +555,7 @@ namespace IRaCIS.Core.Application.Service
{
return null;
}
var decimalAnswerList = await GetVisitTaskAnswerList(inDto);
var decimalAnswerList = await GetLowSODVisit(inDto);
var minSOD = decimalAnswerList.OrderBy(x => x.SOD).Select(x => x.SOD).FirstOrDefault();
if (minSOD == 0)
@ -577,7 +587,7 @@ namespace IRaCIS.Core.Application.Service
return nameof(YesOrNoOrNa.NA);
}
var decimalAnswerList = await GetVisitTaskAnswerList(inDto);
var decimalAnswerList = await GetLowSODVisit(inDto);
return decimalAnswerList.OrderBy(x => x.SOD).Select(x => x.BlindName).FirstOrDefault() ?? string.Empty;
}
#endregion
@ -724,8 +734,10 @@ namespace IRaCIS.Core.Application.Service
public async Task ChangeAllLowestIncrease(ChangeAllTaskDto inDto)
{
var visitTaskList = await GetVisitTaskAnswerList(inDto.calculateDto);
var lowSod = visitTaskList.Select(x => x.SOD).OrderBy(x => x).FirstOrDefault();
foreach (var item in visitTaskList.Where(x=>x.VisitTaskId!=inDto.calculateDto.BaseLineTaskId))
var lowSod = (await GetLowSODVisit(inDto.calculateDto)).Select(x => x.SOD).OrderBy(x => x).FirstOrDefault();
foreach (var item in visitTaskList.Where(x=>x.VisitTaskId!=inDto.calculateDto.BaseLineTaskId))
{
await _readingTaskQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x => x.VisitTaskId == item.VisitTaskId && x.ReadingQuestionTrialId == inDto.QuestionId, x => new ReadingTaskQuestionAnswer()
{
@ -747,7 +759,9 @@ namespace IRaCIS.Core.Application.Service
public async Task ChangeAllLowPercent(ChangeAllTaskDto inDto)
{
var visitTaskList = await GetVisitTaskAnswerList(inDto.calculateDto);
var lowSod = visitTaskList.Select(x => x.SOD).OrderBy(x => x).FirstOrDefault();
var lowSod = (await GetLowSODVisit(inDto.calculateDto)).Select(x => x.SOD).OrderBy(x => x).FirstOrDefault();
foreach (var item in visitTaskList.Where(x => x.VisitTaskId != inDto.calculateDto.BaseLineTaskId))
{
decimal percent = 0;
@ -782,7 +796,7 @@ namespace IRaCIS.Core.Application.Service
var visitTaskIds = await _visitTaskRepository.Where(x => !x.IsAnalysisCreate && x.ReadingCategory == ReadingCategory.Visit &&
x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.DoctorUserId == inDto.calculateDto.DoctorUserId).Select(x => x.Id).ToListAsync();
var answer = (await GetLowVisit(inDto.calculateDto)).ToString();
var answer = (await GetLowSODVisit(inDto.calculateDto)).OrderBy(x=>x.SOD).Select(x=>x.BlindName).FirstOrDefault();
visitTaskIds = visitTaskIds.Where(x => x != inDto.calculateDto.BaseLineTaskId).ToList();
await this.ChangeAllVisitTaskAnswer(visitTaskIds, inDto.QuestionId, answer);
@ -834,15 +848,40 @@ namespace IRaCIS.Core.Application.Service
var baseLineSOD =(await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == baseLineTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.SOD).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
return baseLineSOD;
}
#endregion
#endregion
#region 获取访视任务信息
/// <summary>
/// 获取访视任务信息
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
public async Task<List<VisitTaskAnswerInfo>> GetVisitTaskAnswerList(ReadingCalculateDto inDto)
/// <summary>
/// 获取最低方式
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
public async Task<List<VisitTaskAnswerInfo>> GetLowSODVisit(ReadingCalculateDto inDto)
{
var taskAnswerList = await GetVisitTaskAnswerList(inDto);
taskAnswerList = taskAnswerList.Where(x => x.VisitTaskId != inDto.VisitTaskId).ToList();
var taskIds = taskAnswerList.Select(x => x.VisitTaskId).ToList();
var unableEvaluateTaskIds = await _readingTableQuestionAnswerRepository.Where(x => taskIds.Contains(x.VisitTaskId ) &&
x.ReadingTableQuestionTrial.QuestionMark== QuestionMark.State
&&x.ReadingQuestionTrial.LesionType== LesionType.TargetLesion
&&x.Answer== TargetState.UnableEvaluate.GetEnumInt()
)
.Select(x =>x.VisitTaskId).Distinct().ToListAsync();
taskAnswerList = taskAnswerList.Where(x => !unableEvaluateTaskIds.Contains(x.VisitTaskId)).ToList();
return taskAnswerList.OrderBy(x => x.SOD).ToList();
}
#region 获取访视任务信息
/// <summary>
/// 获取访视任务信息
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
public async Task<List<VisitTaskAnswerInfo>> GetVisitTaskAnswerList(ReadingCalculateDto inDto)
{
if (visitTaskAnswerList == null)
{

View File

@ -497,6 +497,7 @@ namespace IRaCIS.Application.Services
GetReadingReportEvaluationOutDto result = new GetReadingReportEvaluationOutDto();
result.TumorEvaluate = await _readingCalculateService.GetReportTumor(indto.VisitTaskId);
result.IsExistDisease= await _readingCalculateService.GetReportIsExistDisease(indto.VisitTaskId);
var visitTaskInfo = await _visitTaskRepository.Where(x => x.Id == indto.VisitTaskId).FirstNotNullAsync();
result.ReadingTaskState = visitTaskInfo.ReadingTaskState;
var taskInfoList = await _visitTaskRepository.Where(x => (x.SubjectId == visitTaskInfo.SubjectId && x.TaskState == TaskState.Effect