Uat_Study
he 2023-03-24 09:09:45 +08:00
commit d311290547
3 changed files with 48 additions and 17 deletions

View File

@ -1439,7 +1439,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
visitTaskReReadingAppply.RequestReReadingRejectReason = agreeReReadingCommand.RequestReReadingRejectReason; visitTaskReReadingAppply.RequestReReadingRejectReason = agreeReReadingCommand.RequestReReadingRejectReason;
Expression<Func<VisitTask, bool>> filterExpression = t => t.TrialId == trialId && t.SubjectId == origenalTask.SubjectId && t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated; Expression<Func<VisitTask, bool>> filterExpression = t => t.TrialId == trialId && t.SubjectId == origenalTask.SubjectId && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze) && t.TaskAllocationState == TaskAllocationState.Allocated;
//是否是一致性分析任务 正常申请 会影响一致性分析任务 //是否是一致性分析任务 正常申请 会影响一致性分析任务
filterExpression = filterExpression.And(t => t.IsAnalysisCreate == origenalTask.IsAnalysisCreate); filterExpression = filterExpression.And(t => t.IsAnalysisCreate == origenalTask.IsAnalysisCreate);
@ -1733,6 +1733,8 @@ namespace IRaCIS.Core.Application.Service.Allocation
else else
{ {
var beforeTaskState = influenceTask.TaskState;
if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned)
{ {
influenceTask.TaskState = TaskState.HaveReturned; influenceTask.TaskState = TaskState.HaveReturned;
@ -1746,8 +1748,8 @@ namespace IRaCIS.Core.Application.Service.Allocation
trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Abandon }); trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Abandon });
} }
//冻结的任务不生成任务
if (/*influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned &&*/ influenceTask.ReadingCategory == ReadingCategory.Visit) if (/*influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned &&*/ influenceTask.ReadingCategory == ReadingCategory.Visit && beforeTaskState == TaskState.Effect)
{ {
await _visitTaskCommonService.AddTaskAsync(new GenerateTaskCommand() await _visitTaskCommonService.AddTaskAsync(new GenerateTaskCommand()
{ {
@ -2001,6 +2003,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
return ResponseOutput.NotOk("一致性分析的任务,不允许设置退回"); return ResponseOutput.NotOk("一致性分析的任务,不允许设置退回");
} }
Expression<Func<VisitTask, bool>> filterExpression = t => t.TrialId == trialId && t.SubjectId == task.SubjectId && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze) && t.TaskAllocationState == TaskAllocationState.Allocated;
//PM 才允许操作 //PM 才允许操作
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager) if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
{ {
@ -2019,7 +2022,9 @@ namespace IRaCIS.Core.Application.Service.Allocation
if (criterionConfig.IsReadingTaskViewInOrder) if (criterionConfig.IsReadingTaskViewInOrder)
{ {
Expression<Func<VisitTask, bool>> filterExpression = t => t.TrialId == trialId && t.SubjectId == task.SubjectId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.Allocated; //Expression<Func<VisitTask, bool>> filterExpression = t => t.TrialId == trialId && t.SubjectId == task.SubjectId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.Allocated;
filterExpression = filterExpression.And(t => t.IsAnalysisCreate == false);
//另一个阅片人的任务根据任务进度自动进入PM退回或PM申请重阅 //另一个阅片人的任务根据任务进度自动进入PM退回或PM申请重阅
@ -2230,7 +2235,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
// 申请该访视的任务 申请人失效 另外一个人重阅重置或者失效 // 申请该访视的任务 申请人失效 另外一个人重阅重置或者失效
var currentVisitList = await _visitTaskRepository.Where(t => t.SourceSubjectVisitId == task.SourceSubjectVisitId && t.ReadingCategory == ReadingCategory.Visit && t.TaskState == TaskState.Effect && t.VisitTaskNum == task.VisitTaskNum, true).ToListAsync(); var currentVisitList = await _visitTaskRepository.Where(t => t.SourceSubjectVisitId == task.SourceSubjectVisitId && t.ReadingCategory == ReadingCategory.Visit && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze) && t.VisitTaskNum == task.VisitTaskNum, true).ToListAsync();
await SetMedicalReviewInvalidAsync(currentVisitList); await SetMedicalReviewInvalidAsync(currentVisitList);
@ -2389,7 +2394,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
var criterionConfig = (await _trialReadingCriterionRepository.Where(x => x.Id == filterObj.TrialReadingCriterionId).Select(x => new { x.ReadingTool, x.IsReadingTaskViewInOrder }).FirstOrDefaultAsync()).IfNullThrowException(); var criterionConfig = (await _trialReadingCriterionRepository.Where(x => x.Id == filterObj.TrialReadingCriterionId).Select(x => new { x.ReadingTool, x.IsReadingTaskViewInOrder }).FirstOrDefaultAsync()).IfNullThrowException();
Expression<Func<VisitTask, bool>> filterExpression = t => t.TrialId == trialId && t.SubjectId == filterObj.SubjectId && t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated; Expression<Func<VisitTask, bool>> filterExpression = t => t.TrialId == trialId && t.SubjectId == filterObj.SubjectId && (t.TaskState == TaskState.Effect||t.TaskState==TaskState.Freeze) && t.TaskAllocationState == TaskAllocationState.Allocated;
//是否是一致性分析任务 (一致性分析的任务 不会产生裁判 肿瘤学 仅仅有生成的访视和全局) //是否是一致性分析任务 (一致性分析的任务 不会产生裁判 肿瘤学 仅仅有生成的访视和全局)

View File

@ -23,6 +23,8 @@ namespace IRaCIS.Core.Application.ViewModel
public Guid TrialId { get; set; } public Guid TrialId { get; set; }
public Guid SubjectId { get; set; } public Guid SubjectId { get; set; }
public Guid SiteId { get; set; }
public string SubjectCode { get; set; } public string SubjectCode { get; set; }
public Guid TrialReadingCriterionId { get; set; } public Guid TrialReadingCriterionId { get; set; }
public Guid SubjectVisitId { get; set; } public Guid SubjectVisitId { get; set; }

View File

@ -43,11 +43,12 @@ namespace IRaCIS.Core.Application.Service
private readonly IVisitTaskHelpeService _IVisitTaskHelpeService; private readonly IVisitTaskHelpeService _IVisitTaskHelpeService;
private readonly IRepository<TaskMedicalReview> _taskMedicalReviewRepository; private readonly IRepository<TaskMedicalReview> _taskMedicalReviewRepository;
private readonly IRepository<VisitTaskReReading> _visitTaskReReadingRepository;
public SubjectCriteriaEvaluationService(IRepository<SubjectCriteriaEvaluation> subjectCriteriaEvaluationRepository, IRepository<Subject> subjectRepository, public SubjectCriteriaEvaluationService(IRepository<SubjectCriteriaEvaluation> subjectCriteriaEvaluationRepository, IRepository<Subject> subjectRepository,
IRepository<SubjectCriteriaEvaluationVisitFilter> subjectCriteriaEvaluationVisitFilterRepository, IRepository<SubjectVisit> subjectVisitRepository, IRepository<SubjectCriteriaEvaluationVisitFilter> subjectCriteriaEvaluationVisitFilterRepository, IRepository<SubjectVisit> subjectVisitRepository,
IRepository<SubjectCriteriaEvaluationVisitStudyFilter> subjectCriteriaEvaluationVisitStudyFilterRepository, IRepository<SubjectCriteriaEvaluationVisitStudyFilter> subjectCriteriaEvaluationVisitStudyFilterRepository,
IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IVisitTaskHelpeService IVisitTaskHelpeService, IRepository<ReadingQuestionTrial> trialReadingQuestionRepository, IRepository<VisitTask> visitTaskRepository, IRepository<TaskMedicalReview> taskMedicalReviewRepository) IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IVisitTaskHelpeService IVisitTaskHelpeService, IRepository<ReadingQuestionTrial> trialReadingQuestionRepository, IRepository<VisitTask> visitTaskRepository, IRepository<TaskMedicalReview> taskMedicalReviewRepository, IRepository<VisitTaskReReading> visitTaskReReadingRepository)
{ {
_subjectCriteriaEvaluationRepository = subjectCriteriaEvaluationRepository; _subjectCriteriaEvaluationRepository = subjectCriteriaEvaluationRepository;
_subjectRepository = subjectRepository; _subjectRepository = subjectRepository;
@ -61,6 +62,7 @@ namespace IRaCIS.Core.Application.Service
_trialReadingQuestionRepository = trialReadingQuestionRepository; _trialReadingQuestionRepository = trialReadingQuestionRepository;
_visitTaskRepository = visitTaskRepository; _visitTaskRepository = visitTaskRepository;
_taskMedicalReviewRepository = taskMedicalReviewRepository; _taskMedicalReviewRepository = taskMedicalReviewRepository;
_visitTaskReReadingRepository = visitTaskReReadingRepository;
} }
@ -427,7 +429,8 @@ namespace IRaCIS.Core.Application.Service
SubjectVisitId = subjectVisit.Id, SubjectVisitId = subjectVisit.Id,
TrialId = subjectVisit.TrialId, TrialId = subjectVisit.TrialId,
SubjectId = subjectVisit.SubjectId, SubjectId = subjectVisit.SubjectId,
SubjectCode= subjectVisit.Subject.Code, SubjectCode = subjectVisit.Subject.Code,
SiteId=subjectVisit.SiteId,
TrialReadingCriterionId = inQuery.TrialReadingCriterionId, TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
LatestScanDate = subjectVisit.LatestScanDate, LatestScanDate = subjectVisit.LatestScanDate,
EarliestScanDate = subjectVisit.LatestScanDate, EarliestScanDate = subjectVisit.LatestScanDate,
@ -581,15 +584,26 @@ namespace IRaCIS.Core.Application.Service
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public async Task<List<InfluenceTaskInfo>> GetCriteriaVisitBackInfluenceTaskList(CriteriaVisitBackCommand command) public async Task<(List<InfluenceTaskInfo>, object)> GetCriteriaVisitBackInfluenceTaskList(CriteriaVisitBackCommand command)
{ {
var isIRAppyTaskInfluenced = false;
var filterExpression = await GetTaskExpressionAsync(command); var filterExpression = await GetTaskExpressionAsync(command);
var subjectVisit = await _subjectVisitRepository.FindAsync(command.SubjectVisitId);
if (await _visitTaskReReadingRepository.AnyAsync(t => t.RequestReReadingType == RequestReReadingType.DocotorApply && t.RequestReReadingResultEnum == RequestReReadingResult.Default &&
t.OriginalReReadingTask.VisitTaskNum >= subjectVisit.VisitNum && t.OriginalReReadingTask.SubjectId == subjectVisit.SubjectId && t.OriginalReReadingTask.TrialReadingCriterionId == command.TrialReadingCriterionId))
{
isIRAppyTaskInfluenced = true;
}
var list = await _visitTaskRepository.Where(filterExpression) var list = await _visitTaskRepository.Where(filterExpression)
.OrderBy(t => t.VisitTaskNum).ProjectTo<InfluenceTaskInfo>(_mapper.ConfigurationProvider).ToListAsync(); .OrderBy(t => t.VisitTaskNum).ProjectTo<InfluenceTaskInfo>(_mapper.ConfigurationProvider).ToListAsync();
return list; return (list, new { IsIRAppyTaskInfluenced = isIRAppyTaskInfluenced });
} }
private async Task<Expression<Func<VisitTask, bool>>> GetTaskExpressionAsync(CriteriaVisitBackCommand command) private async Task<Expression<Func<VisitTask, bool>>> GetTaskExpressionAsync(CriteriaVisitBackCommand command)
@ -622,12 +636,21 @@ namespace IRaCIS.Core.Application.Service
/// <returns></returns> /// <returns></returns>
public async Task ConfirmBackCriteriaVisitTask(CriteriaVisitBackCommand command) public async Task ConfirmBackCriteriaVisitTask(CriteriaVisitBackCommand command)
{ {
var filterExpression = await GetTaskExpressionAsync(command); var filterExpression = await GetTaskExpressionAsync(command);
var influenceTaskList = await _visitTaskRepository.Where(filterExpression, true).ToListAsync(); var influenceTaskList = await _visitTaskRepository.Where(filterExpression, true).ToListAsync();
var subjectVisit = await _subjectVisitRepository.FindAsync(command.SubjectVisitId); var subjectVisit = await _subjectVisitRepository.FindAsync(command.SubjectVisitId);
foreach (var influenceTask in influenceTaskList) foreach (var influenceTask in influenceTaskList)
{ {
@ -679,15 +702,16 @@ namespace IRaCIS.Core.Application.Service
//将筛选的访视 序列状态重置 //将筛选的访视 序列状态重置
//重置访视数据 //重置访视数据
await _subjectCriteriaEvaluationVisitFilterRepository.BatchUpdateNoTrackingAsync(t => t.TrialReadingCriterionId== command.TrialReadingCriterionId && t.SubjectId == command.SubjectId && subjectVisitIdLsit.Contains(t.SubjectVisitId) , await _subjectCriteriaEvaluationVisitFilterRepository.BatchUpdateNoTrackingAsync(t => t.TrialReadingCriterionId == command.TrialReadingCriterionId && t.SubjectId == command.SubjectId && subjectVisitIdLsit.Contains(t.SubjectVisitId),
t=>new SubjectCriteriaEvaluationVisitFilter() t => new SubjectCriteriaEvaluationVisitFilter()
{ {
ImageFilterState=ImageFilterState.None, ImageFilterState = ImageFilterState.None,
ImageDeterminationResultState=ImageDeterminationResultState.None ImageDeterminationResultState = ImageDeterminationResultState.None,
}); IsGeneratedTask=false
});
//删除序列数据 //删除序列数据
await _subjectCriteriaEvaluationVisitStudyFilterRepository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterionId == command.TrialReadingCriterionId && subjectVisitIdLsit.Contains(t.SubjectVisitId)); await _subjectCriteriaEvaluationVisitStudyFilterRepository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterionId == command.TrialReadingCriterionId && subjectVisitIdLsit.Contains(t.SubjectVisitId));
await _visitTaskRepository.SaveChangesAsync(); await _visitTaskRepository.SaveChangesAsync();
} }