Uat_Study
hang 2023-03-22 11:38:35 +08:00
commit bf8938ea31
1 changed files with 46 additions and 34 deletions

View File

@ -8,7 +8,7 @@ using IRaCIS.Core.Application.ViewModel;
namespace IRaCIS.Core.Application.Service.ReadingCalculate namespace IRaCIS.Core.Application.Service.ReadingCalculate
{ {
[ApiExplorerSettings(GroupName = "Image")] [ApiExplorerSettings(GroupName = "Image")]
public class ReadingCalculateService: BaseService, IReadingCalculateService public class ReadingCalculateService : BaseService, IReadingCalculateService
{ {
/// <summary> /// <summary>
@ -23,13 +23,13 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{CriterionType.IRECIST1Point1,typeof(IRECIST1Point1CalculateService) } {CriterionType.IRECIST1Point1,typeof(IRECIST1Point1CalculateService) }
}; };
private readonly IEnumerable<ICriterionCalculateService> _criterionServices; private readonly IEnumerable<ICriterionCalculateService> _criterionServices;
private readonly IRepository<VisitTask> _visitTaskRepository; private readonly IRepository<VisitTask> _visitTaskRepository;
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository; private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository;
private ICriterionCalculateService _useCriterion; private ICriterionCalculateService _useCriterion;
public ReadingCalculateService(IEnumerable<ICriterionCalculateService> criterionServices, public ReadingCalculateService(IEnumerable<ICriterionCalculateService> criterionServices,
IRepository<VisitTask> visitTaskRepository, IRepository<VisitTask> visitTaskRepository,
@ -39,7 +39,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{ {
_criterionServices = criterionServices; _criterionServices = criterionServices;
this._visitTaskRepository = visitTaskRepository; this._visitTaskRepository = visitTaskRepository;
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository; this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
} }
@ -63,11 +63,11 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
try try
{ {
CriterionType thisCriterionType = criterionType; CriterionType thisCriterionType = criterionType;
Type thisServiceType = CalculateServiceDic[thisCriterionType]; Type thisServiceType = CalculateServiceDic[thisCriterionType];
_useCriterion = _criterionServices.FirstOrDefault(x => x.GetType().Name == thisServiceType.Name + "Proxy"); _useCriterion = _criterionServices.FirstOrDefault(x => x.GetType().Name == thisServiceType.Name + "Proxy");
} }
catch (Exception) catch (Exception)
@ -91,7 +91,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
/// </summary> /// </summary>
/// <param name="inDto"></param> /// <param name="inDto"></param>
/// <returns></returns> /// <returns></returns>
public async Task CalculateTask(CalculateTaskInDto inDto) public async Task CalculateTask(CalculateTaskInDto inDto)
{ {
var service = await this.GetService(inDto.VisitTaskId); var service = await this.GetService(inDto.VisitTaskId);
@ -99,7 +99,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{ {
await service.CalculateTask(inDto); await service.CalculateTask(inDto);
} }
} }
/// <summary> /// <summary>
@ -114,7 +114,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{ {
await service.VerifyVisitTaskQuestions(inDto); await service.VerifyVisitTaskQuestions(inDto);
} }
} }
/// <summary> /// <summary>
@ -126,26 +126,26 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{ {
var service = await this.GetService(inDto.VisitTaskId); var service = await this.GetService(inDto.VisitTaskId);
var visitTaskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync(); var visitTaskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
if (service != null&& visitTaskInfo.SourceSubjectVisitId!=null) if (service != null && visitTaskInfo.SourceSubjectVisitId != null)
{ {
var readingTaskState = visitTaskInfo.ReadingTaskState; var readingTaskState = visitTaskInfo.ReadingTaskState;
var result = new AddTaskLesionAnswerFromLastTaskOutDto(); var result = new AddTaskLesionAnswerFromLastTaskOutDto();
if (readingTaskState == ReadingTaskState.WaitReading) if (readingTaskState == ReadingTaskState.WaitReading)
{ {
result= await service.AddTaskLesionAnswerFromLastTask(inDto); result = await service.AddTaskLesionAnswerFromLastTask(inDto);
await service.CalculateTask(new CalculateTaskInDto() await service.CalculateTask(new CalculateTaskInDto()
{ {
IsChangeOtherTask = false, IsChangeOtherTask = false,
VisitTaskId = inDto.VisitTaskId, VisitTaskId = inDto.VisitTaskId,
}); });
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x=>x.Id==inDto.VisitTaskId, x => new VisitTask() await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => x.Id == inDto.VisitTaskId, x => new VisitTask()
{ {
ReadingTaskState = ReadingTaskState.Reading, ReadingTaskState = ReadingTaskState.Reading,
}); });
} }
return result; return result;
@ -154,7 +154,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{ {
return new AddTaskLesionAnswerFromLastTaskOutDto(); return new AddTaskLesionAnswerFromLastTaskOutDto();
} }
} }
/// <summary> /// <summary>
@ -164,7 +164,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
/// <returns></returns> /// <returns></returns>
public async Task<object> GetReportVerify(GetReportVerifyInDto inDto) public async Task<object> GetReportVerify(GetReportVerifyInDto inDto)
{ {
var service = await this.GetService(inDto.VisitTaskId); var service = await this.GetService(inDto.VisitTaskId);
if (service != null) if (service != null)
@ -175,7 +175,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{ {
return new { }; return new { };
} }
} }
/// <summary> /// <summary>
@ -191,7 +191,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{ {
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync(); var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
if (taskInfo.ReadingTaskState != ReadingTaskState.HaveSigned&&inDto.IsCalculate) if (taskInfo.ReadingTaskState != ReadingTaskState.HaveSigned && inDto.IsCalculate)
{ {
await service.CalculateTask(new CalculateTaskInDto() await service.CalculateTask(new CalculateTaskInDto()
{ {
@ -199,29 +199,17 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
VisitTaskId = inDto.VisitTaskId VisitTaskId = inDto.VisitTaskId
}); });
} }
var result = await service.GetReadingReportEvaluation(inDto); var result = await service.GetReadingReportEvaluation(inDto);
// 这里统一处理字典 // 这里统一处理字典
var dictionaryGroup = result.VisitTaskList.ToDictionary(x => x.VisitTaskId, x => x.CrterionDictionaryGroup); Dictionary<Guid,List<CrterionDictionaryGroup>> dictionaryGroup = result.VisitTaskList.ToDictionary(x => x.VisitTaskId, x => x.CrterionDictionaryGroup);
result.TaskQuestions.ForEach(y => result.TaskQuestions.ForEach(y =>
{ {
SetCrterionDictionaryGroup(y, dictionaryGroup);
y.Answer.ForEach(z =>
{
try
{
z.CrterionDictionaryGroup = dictionaryGroup[z.VisitTaskId];
}
catch (Exception)
{
}
});
}); });
@ -234,6 +222,30 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
} }
public void SetCrterionDictionaryGroup(ReadingReportDto item, Dictionary<Guid, List<CrterionDictionaryGroup>> dictionaryGroup)
{
item.Answer.ForEach(z =>
{
try
{
z.CrterionDictionaryGroup = dictionaryGroup[z.VisitTaskId];
}
catch (Exception)
{
}
});
item.Childrens.ForEach(x => {
SetCrterionDictionaryGroup(x, dictionaryGroup);
});
}
/// <summary> /// <summary>
/// 删除病灶获取起始病灶序号 /// 删除病灶获取起始病灶序号
/// </summary> /// </summary>