肿瘤学阅片
parent
4bbfacd7de
commit
35687c01ec
|
@ -40,6 +40,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
|
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
|
||||||
private readonly IRepository<ReadingTableAnswerRowInfo> _readingTableAnswerRowInfoRepository;
|
private readonly IRepository<ReadingTableAnswerRowInfo> _readingTableAnswerRowInfoRepository;
|
||||||
private readonly IRepository<ReadingTableQuestionAnswer> _readingTableQuestionAnswerRepository;
|
private readonly IRepository<ReadingTableQuestionAnswer> _readingTableQuestionAnswerRepository;
|
||||||
|
private readonly IRepository<ReadingOncologyTaskInfo> _readingOncologyTaskInfoRepository;
|
||||||
private readonly IRepository<ReadingTableQuestionTrial> _readingTableQuestionTrialRepository;
|
private readonly IRepository<ReadingTableQuestionTrial> _readingTableQuestionTrialRepository;
|
||||||
private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository;
|
private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository;
|
||||||
private readonly IMapper _mapper;
|
private readonly IMapper _mapper;
|
||||||
|
@ -60,6 +61,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository,
|
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository,
|
||||||
IRepository<ReadingTableAnswerRowInfo> readingTableAnswerRowInfoRepository,
|
IRepository<ReadingTableAnswerRowInfo> readingTableAnswerRowInfoRepository,
|
||||||
IRepository<ReadingTableQuestionAnswer> readingTableQuestionAnswerRepository,
|
IRepository<ReadingTableQuestionAnswer> readingTableQuestionAnswerRepository,
|
||||||
|
IRepository<ReadingOncologyTaskInfo> ReadingOncologyTaskInfoRepository,
|
||||||
IRepository<ReadingTableQuestionTrial> readingTableQuestionTrialRepository,
|
IRepository<ReadingTableQuestionTrial> readingTableQuestionTrialRepository,
|
||||||
IRepository<ReadingQuestionTrial> readingQuestionTrialRepository,
|
IRepository<ReadingQuestionTrial> readingQuestionTrialRepository,
|
||||||
IRepository<ReadingJudgeInfo> readingJudgeInfoRepository,
|
IRepository<ReadingJudgeInfo> readingJudgeInfoRepository,
|
||||||
|
@ -76,6 +78,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
|
this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
|
||||||
this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository;
|
this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository;
|
||||||
this._readingTableQuestionAnswerRepository = readingTableQuestionAnswerRepository;
|
this._readingTableQuestionAnswerRepository = readingTableQuestionAnswerRepository;
|
||||||
|
_readingOncologyTaskInfoRepository = ReadingOncologyTaskInfoRepository;
|
||||||
this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository;
|
this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository;
|
||||||
this._readingQuestionTrialRepository = readingQuestionTrialRepository;
|
this._readingQuestionTrialRepository = readingQuestionTrialRepository;
|
||||||
_provider = provider;
|
_provider = provider;
|
||||||
|
@ -1606,10 +1609,11 @@ namespace IRaCIS.Core.Application.Service
|
||||||
var oncologySubjectUser = await _subjectUserRepository.Where(x => x.SubjectId == item.SubjectId && x.ArmEnum == Arm.TumorArm && x.IsConfirmed && x.TrialReadingCriterionId == originalTaskInfo.TrialReadingCriterionId).FirstOrDefaultAsync();
|
var oncologySubjectUser = await _subjectUserRepository.Where(x => x.SubjectId == item.SubjectId && x.ArmEnum == Arm.TumorArm && x.IsConfirmed && x.TrialReadingCriterionId == originalTaskInfo.TrialReadingCriterionId).FirstOrDefaultAsync();
|
||||||
|
|
||||||
item.VisitNum = await _readModuleRepository.Where(x => x.Id == item.ReadModuleId).Select(x => x.SubjectVisit.VisitNum).FirstOrDefaultAsync();
|
item.VisitNum = await _readModuleRepository.Where(x => x.Id == item.ReadModuleId).Select(x => x.SubjectVisit.VisitNum).FirstOrDefaultAsync();
|
||||||
|
var id= NewId.NextGuid();
|
||||||
|
|
||||||
var singleTask = await _visitTaskRepository.AddAsync(new VisitTask()
|
var singleTask = await _visitTaskRepository.AddAsync(new VisitTask()
|
||||||
{
|
{
|
||||||
|
Id= id,
|
||||||
TrialId = trialId,
|
TrialId = trialId,
|
||||||
SubjectId = item.SubjectId,
|
SubjectId = item.SubjectId,
|
||||||
IsUrgent = originalTaskInfo.IsUrgent,
|
IsUrgent = originalTaskInfo.IsUrgent,
|
||||||
|
@ -1641,6 +1645,19 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
currentMaxCodeInt = currentMaxCodeInt + 1;
|
currentMaxCodeInt = currentMaxCodeInt + 1;
|
||||||
|
|
||||||
|
// 生成肿瘤学需要 肿瘤学阅片结果中基线,统一显示为NA
|
||||||
|
// 找到基线任务ID
|
||||||
|
var baseLineTaskId = await _visitTaskRepository.Where(x => x.TaskState == TaskState.Effect
|
||||||
|
&& x.ArmEnum == originalTaskInfo.ArmEnum && x.VisitTaskNum == 0 && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.TrialReadingCriterionId == originalTaskInfo.TrialReadingCriterionId).Select(x => x.Id).FirstNotNullAsync();
|
||||||
|
await _readingOncologyTaskInfoRepository.AddAsync(new ReadingOncologyTaskInfo()
|
||||||
|
{
|
||||||
|
EvaluationResult = "-1",
|
||||||
|
OncologyTaskId = id,
|
||||||
|
VisitTaskId = baseLineTaskId,
|
||||||
|
SubjectId = originalTaskInfo.SubjectId,
|
||||||
|
TrialId = originalTaskInfo.TrialId
|
||||||
|
});
|
||||||
|
|
||||||
_provider.Set<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt, TimeSpan.FromMinutes(30));
|
_provider.Set<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt, TimeSpan.FromMinutes(30));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -151,17 +151,54 @@ namespace IRaCIS.Application.Services
|
||||||
var oncologyReadingQuestions = await _readingOncologyTaskInfoRepository.Where(x => x.OncologyTaskId == inDto.VisitTaskId).ToListAsync();
|
var oncologyReadingQuestions = await _readingOncologyTaskInfoRepository.Where(x => x.OncologyTaskId == inDto.VisitTaskId).ToListAsync();
|
||||||
// 上一次肿瘤学阅片
|
// 上一次肿瘤学阅片
|
||||||
|
|
||||||
|
var lastOncologyTask = await _visitTaskRepository.Where(x =>
|
||||||
|
x.ReadingCategory == ReadingCategory.Oncology
|
||||||
|
&& x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId
|
||||||
|
&& x.TaskState == TaskState.Effect
|
||||||
|
&& x.ReadingTaskState == ReadingTaskState.HaveSigned
|
||||||
|
&& x.IsAnalysisCreate == taskInfo.IsAnalysisCreate
|
||||||
|
&& x.VisitTaskNum < taskInfo.VisitTaskNum
|
||||||
|
).OrderByDescending(x => x.VisitTaskNum).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
List<ReadingOncologyTaskInfo> lastOncologyAnswerList= new List<ReadingOncologyTaskInfo>();
|
||||||
|
|
||||||
|
if (lastOncologyTask != null)
|
||||||
|
{
|
||||||
|
lastOncologyAnswerList= await _readingOncologyTaskInfoRepository.Where(x => x.OncologyTaskId == lastOncologyTask.Id).ToListAsync();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
oncologyVisits.ForEach(x =>
|
oncologyVisits.ForEach(x =>
|
||||||
{
|
{
|
||||||
var oncologyData = oncologyReadingQuestions.Where(y => y.VisitTaskId == x.VisitTaskId).FirstOrDefault();
|
var oncologyData = oncologyReadingQuestions.Where(y => y.VisitTaskId == x.VisitTaskId).FirstOrDefault();
|
||||||
|
var lastOncologyData = lastOncologyAnswerList.Where(y => y.VisitTaskId == x.VisitTaskId).FirstOrDefault();
|
||||||
|
|
||||||
if (oncologyData != null)
|
var evaluationResult = string.Empty;
|
||||||
|
var evaluationReason = string.Empty;
|
||||||
|
if (oncologyData != null && !oncologyData.EvaluationResult.IsNullOrEmpty())
|
||||||
{
|
{
|
||||||
x.EvaluationResult = oncologyData.EvaluationResult;
|
evaluationResult = oncologyData.EvaluationResult;
|
||||||
x.EvaluationReason = oncologyData.EvaluationReason;
|
|
||||||
}
|
}
|
||||||
|
else if (lastOncologyData != null && !lastOncologyData.EvaluationResult.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
evaluationResult = lastOncologyData.EvaluationResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (oncologyData != null && !oncologyData.EvaluationReason.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
evaluationReason = oncologyData.EvaluationReason;
|
||||||
|
}
|
||||||
|
else if (lastOncologyData != null && !lastOncologyData.EvaluationReason.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
evaluationReason = lastOncologyData.EvaluationReason;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
x.EvaluationResult = evaluationResult;
|
||||||
|
x.EvaluationReason = evaluationReason;
|
||||||
|
|
||||||
x.QuestionList = globalTaskReadingInfo.TaskList.Where(y => x.VisitTaskId == y.VisitTaskId).SelectMany(y => y.AfterQuestionList).Where(x => x.GlobalAnswerType == GlobalAnswerType.Question)
|
x.QuestionList = globalTaskReadingInfo.TaskList.Where(y => x.VisitTaskId == y.VisitTaskId).SelectMany(y => y.AfterQuestionList).Where(x => x.GlobalAnswerType == GlobalAnswerType.Question)
|
||||||
.Select(y => new OncologyQuestion
|
.Select(y => new OncologyQuestion
|
||||||
{
|
{
|
||||||
|
@ -295,7 +332,7 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
finishReading = true;
|
finishReading = true;
|
||||||
}
|
}
|
||||||
else if (judgeVisitTaskId != null && (await _visitTaskRepository.AnyAsync(x => x.Id == judgeVisitTaskId.Value && x.ReadingTaskState == ReadingTaskState.HaveSigned)))
|
else if (judgeVisitTaskId != null && (await _visitTaskRepository.AnyAsync(x => x.Id == judgeVisitTaskId.Value&&x.JudgeResultTaskId!=null && x.ReadingTaskState == ReadingTaskState.HaveSigned)))
|
||||||
{
|
{
|
||||||
finishReading = true;
|
finishReading = true;
|
||||||
}
|
}
|
||||||
|
@ -328,9 +365,24 @@ namespace IRaCIS.Application.Services
|
||||||
ReadingCategory = ReadingCategory.Oncology,
|
ReadingCategory = ReadingCategory.Oncology,
|
||||||
});
|
});
|
||||||
|
|
||||||
var originalVisitId = await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalreadModuleId && x.TaskState == TaskState.Effect && x.ReadingCategory == ReadingCategory.Global
|
var originalVisit = await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalreadModuleId && x.TaskState == TaskState.Effect && x.ReadingCategory == ReadingCategory.Global
|
||||||
&& x.ReadingTaskState == ReadingTaskState.HaveSigned && !x.IsAnalysisCreate && x.TrialReadingCriterionId == readModuleInfo.TrialReadingCriterionId
|
&& x.ReadingTaskState == ReadingTaskState.HaveSigned && !x.IsAnalysisCreate && x.TrialReadingCriterionId == readModuleInfo.TrialReadingCriterionId
|
||||||
).Select(x => x.Id).FirstOrDefaultAsync();
|
).OrderByDescending(x => x.VisitTaskNum).ThenBy(x => x.ArmEnum).FirstNotNullAsync();
|
||||||
|
|
||||||
|
var originalVisitId = default(Guid);
|
||||||
|
|
||||||
|
if (originalVisit.JudgeVisitTaskId != null)
|
||||||
|
{
|
||||||
|
originalVisitId = (await _visitTaskRepository.Where(x => x.Id == originalVisit.JudgeVisitTaskId).Select(x => x.JudgeResultTaskId).FirstOrDefaultAsync()) ?? originalVisit.Id;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
originalVisitId = originalVisit.Id;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand()
|
await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand()
|
||||||
{
|
{
|
||||||
OriginalVisitId= originalVisitId,
|
OriginalVisitId= originalVisitId,
|
||||||
|
|
Loading…
Reference in New Issue