修改一致性分析

Uat_Study
hang 2022-09-30 09:52:34 +08:00
parent e73a27b619
commit e5a3dce331
5 changed files with 44 additions and 16 deletions

View File

@ -41,6 +41,9 @@ namespace IRaCIS.Core.Application.ViewModel
[NotDefault]
public Guid TaskConsistentRuleId { get; set; }
//[NotDefault]
//public Guid TrialReadingCriterionId { get; set; }
}
public class GroupConsistentQuery : PageInput
@ -264,10 +267,15 @@ namespace IRaCIS.Core.Application.ViewModel
///<summary>TaskConsistentRuleQuery 列表查询参数模型</summary>
public class TaskConsistentRuleQuery
{
[NotDefault]
public Guid TrialId { get; set; }
public bool IsSelfAnalysis { get; set; }
[NotDefault]
public Guid TrialReadingCriterionId { get; set; }
}
///<summary> TaskConsistentRuleAddOrEdit 列表查询参数模型</summary>
@ -287,6 +295,8 @@ namespace IRaCIS.Core.Application.ViewModel
public int BlindSubjectNumberOfPlaces { get; set; }
public string BlindTrialSiteCode { get; set; } = string.Empty;
[NotDefault]
public Guid TrialReadingCriterionId { get; set; }
}

View File

@ -72,6 +72,8 @@ namespace IRaCIS.Core.Application.Service
var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId)
.Where(t => t.IsAnalysisCreate)
.WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
.WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
@ -386,9 +388,11 @@ namespace IRaCIS.Core.Application.Service
{
var trialId = filterObj.TrialId;
var trialReadingCriterionId = filterObj.TrialReadingCriterionId;
#region Subejct 维度
Expression<Func<VisitTask, bool>> comonTaskFilter = u => u.TrialId == trialId && u.IsAnalysisCreate == false && u.TaskState == TaskState.Effect && u.ReadingTaskState == ReadingTaskState.HaveSigned &&
Expression<Func<VisitTask, bool>> comonTaskFilter = u => u.TrialId == trialId && u.IsAnalysisCreate == false && u.TaskState == TaskState.Effect && u.ReadingTaskState == ReadingTaskState.HaveSigned && u.TrialReadingCriterionId== trialReadingCriterionId &&
u.SignTime!.Value.AddDays(filterObj.IntervalWeeks * 7) < DateTime.Now && (u.ReReadingApplyState == ReReadingApplyState.Default || u.ReReadingApplyState == ReReadingApplyState.Reject) && u.DoctorUserId == doctorUserId;
@ -426,9 +430,9 @@ namespace IRaCIS.Core.Application.Service
TrialSiteCode = t.TrialSite.TrialSiteCode,
SubjectId = t.Id,
BlindSubjectCode = t.SubjectVisitTaskList.Where(t => t.IsAnalysisCreate).OrderByDescending(t => t.BlindSubjectCode).Select(t => t.BlindSubjectCode).FirstOrDefault(),
BlindSubjectCode = t.SubjectVisitTaskList.Where(t => t.IsAnalysisCreate && t.TrialReadingCriterionId == trialReadingCriterionId).OrderByDescending(t => t.BlindSubjectCode).Select(t => t.BlindSubjectCode).FirstOrDefault(),
IsHaveGeneratedTask = t.SubjectVisitTaskList.Any(c => c.DoctorUserId == doctorUserId && c.IsSelfAnalysis == true),
IsHaveGeneratedTask = t.SubjectVisitTaskList.Any(c => c.DoctorUserId == doctorUserId && c.IsSelfAnalysis == true && c.TrialReadingCriterionId==trialReadingCriterionId),
ValidVisitCount = t.SubjectVisitTaskList.AsQueryable().Where(visitTaskFilter).Count(),
@ -484,11 +488,13 @@ namespace IRaCIS.Core.Application.Service
{
var trialId = filterObj.TrialId;
var trialReadingCriterionId = filterObj.TrialReadingCriterionId;
var trialConfig = (await _repository.Where<Trial>(t => t.Id == trialId).Select(t => new { TrialId = t.Id, t.ReadingType, t.IsReadingTaskViewInOrder }).FirstOrDefaultAsync()).IfNullThrowException();
Expression<Func<VisitTask, bool>> comonTaskFilter = u => u.TrialId == trialId && u.IsAnalysisCreate == false && u.TaskState == TaskState.Effect && u.ReadingTaskState == ReadingTaskState.HaveSigned
Expression<Func<VisitTask, bool>> comonTaskFilter = u => u.TrialId == trialId && u.IsAnalysisCreate == false && u.TaskState == TaskState.Effect && u.ReadingTaskState == ReadingTaskState.HaveSigned && u.TrialReadingCriterionId == trialReadingCriterionId
&& (u.ReReadingApplyState == ReReadingApplyState.Default || u.ReReadingApplyState == ReReadingApplyState.Reject);
@ -572,7 +578,7 @@ namespace IRaCIS.Core.Application.Service
[HttpPost]
public async Task<TaskConsistentRuleBasic?> GetConsistentRule(TaskConsistentRuleQuery inQuery)
{
return await _taskConsistentRuleRepository.Where(t => t.TrialId == inQuery.TrialId && t.IsSelfAnalysis == inQuery.IsSelfAnalysis).ProjectTo<TaskConsistentRuleBasic>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
return await _taskConsistentRuleRepository.Where(t => t.TrialId == inQuery.TrialId && t.IsSelfAnalysis == inQuery.IsSelfAnalysis && t.TrialReadingCriterionId==inQuery.TrialReadingCriterionId).ProjectTo<TaskConsistentRuleBasic>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
}
/// <summary>
@ -645,13 +651,13 @@ namespace IRaCIS.Core.Application.Service
var verifyExp1 = new EntityVerifyExp<TaskConsistentRule>()
{
VerifyExp = t => t.TrialId == addOrEditTaskConsistentRule.TrialId && t.IsSelfAnalysis == addOrEditTaskConsistentRule.IsSelfAnalysis,
VerifyExp = t => t.TrialId == addOrEditTaskConsistentRule.TrialId && t.IsSelfAnalysis == addOrEditTaskConsistentRule.IsSelfAnalysis && t.TrialReadingCriterionId==addOrEditTaskConsistentRule.TrialReadingCriterionId,
VerifyMsg = "已有该项目配置,不允许继续增加"
};
if (await _visitTaskRepository.AnyAsync(t => t.IsSelfAnalysis == addOrEditTaskConsistentRule.IsSelfAnalysis && t.TrialId == addOrEditTaskConsistentRule.TrialId))
if (await _visitTaskRepository.AnyAsync(t => t.IsSelfAnalysis == addOrEditTaskConsistentRule.IsSelfAnalysis && t.TrialId == addOrEditTaskConsistentRule.TrialId && t.TrialReadingCriterionId == addOrEditTaskConsistentRule.TrialReadingCriterionId))
{
return ResponseOutput.NotOk("已有Subject 生成了任务,不允许修改配置");
return ResponseOutput.NotOk("该标准已有Subject 生成了任务,不允许修改配置");
}
var entity = await _taskConsistentRuleRepository.InsertOrUpdateAsync(addOrEditTaskConsistentRule, true, verifyExp1);
@ -667,9 +673,9 @@ namespace IRaCIS.Core.Application.Service
var config = await _taskConsistentRuleRepository.FirstOrDefaultAsync(t => t.Id == taskConsistentRuleId);
if (await _visitTaskRepository.AnyAsync(t => t.IsAnalysisCreate && t.TrialId == config.TrialId && t.IsSelfAnalysis == config.IsSelfAnalysis))
if (await _visitTaskRepository.AnyAsync(t => t.IsAnalysisCreate && t.TrialId == config.TrialId && t.IsSelfAnalysis == config.IsSelfAnalysis && t.TrialReadingCriterionId==config.TrialReadingCriterionId))
{
throw new BusinessValidationFailedException("已产生一致性分析任务,不允许删除");
throw new BusinessValidationFailedException("该标准已产生一致性分析任务,不允许删除");
}

View File

@ -2562,7 +2562,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
var list = await _visitTaskRepository.Where(filterExpression)
//IR 申请的时候,仅仅看到影响自己的
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer, t => t.DoctorUserId == _userInfo.Id)
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer, t => t.DoctorUserId == _userInfo.Id
.OrderBy(t => t.VisitTaskNum).ProjectTo<InfluenceTaskInfo>(_mapper.ConfigurationProvider).ToListAsync();
#region 影响后的操作
@ -2582,14 +2582,18 @@ namespace IRaCIS.Core.Application.Service.Allocation
{
influenceTask.OptType = ReReadingOrBackOptType.Return;
}
else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading)
else
{
influenceTask.OptType = ReReadingOrBackOptType.Abandon;
}
else
{
throw new BusinessValidationFailedException("IR 申请重阅,不会影响到后续未读的任务,当前影响列表有未读的任务,请核查");
}
//else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading)
//{
// influenceTask.OptType = ReReadingOrBackOptType.Abandon;
//}
//else
//{
// throw new BusinessValidationFailedException("IR 申请重阅,不会影响到后续未读的任务,当前影响列表有未读的任务,请核查");
//}
}
else
{

View File

@ -62,6 +62,13 @@ namespace IRaCIS.Core.Domain.Models
public string Note { get; set; }
public Guid TrialReadingCriterionId { get; set; }
[JsonIgnore]
[ForeignKey("TrialReadingCriterionId")]
public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }
//[Projectable]
//public List<VisitTask> DoctorConsistentTaskList => DoctorVisitTaskList.Where(t => t.IsAnalysisCreate && t.TaskConsistentRuleId == Id).ToList();
}

View File

@ -80,6 +80,7 @@ namespace IRaCIS.Core.Domain.Models
public Guid TrialReadingCriterionId { get; set; }
[JsonIgnore]
[ForeignKey("TrialReadingCriterionId")]
public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }