修改稽查
parent
ffa27cba35
commit
f1d9f67b6e
|
@ -80,14 +80,14 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
|
||||
//基于标准签名 产生任务
|
||||
public async Task BaseCritrionGenerateVisitTask(Guid trialId, Guid confirmedTrialReadingCriterionId)
|
||||
public async Task BaseCritrionGenerateVisitTask(Guid trialId, Guid confirmedTrialReadingCriterionId)
|
||||
{
|
||||
//找到一致性核查通过且没有产生任务的访视
|
||||
var needGenerateVisit = await _subjectVisitRepository.Where(t => t.TrialId == trialId && t.CheckState == CheckStateEnum.CVPassed &&
|
||||
!t.VisitTaskList.Any(u=>u.TrialReadingCriterionId== confirmedTrialReadingCriterionId &&u.SourceSubjectVisitId==t.Id)).ToListAsync();
|
||||
!t.VisitTaskList.Any(u => u.TrialReadingCriterionId == confirmedTrialReadingCriterionId && u.SourceSubjectVisitId == t.Id)).ToListAsync();
|
||||
|
||||
|
||||
var trialReadingCriterionConfig = await _trialReadingCriterionRepository.Where(t => t.Id == confirmedTrialReadingCriterionId).Select(t => new { TrialReadingCriterionId = t.Id, t.ReadingTool, t.ReadingType, t.IsReadingTaskViewInOrder, t.IsFollowVisitAutoAssign, t.IsFollowGlobalVisitAutoAssign, t.FollowGlobalVisitAutoAssignDefaultState, t.FollowVisitAutoAssignDefaultState, t.TaskAllocateObjEnum }).FirstOrDefaultAsync();
|
||||
var trialReadingCriterionConfig = await _trialReadingCriterionRepository.Where(t => t.Id == confirmedTrialReadingCriterionId).Select(t => new { TrialReadingCriterionId = t.Id, t.ReadingTool, t.ReadingType, t.IsReadingTaskViewInOrder, t.IsFollowVisitAutoAssign, t.IsFollowGlobalVisitAutoAssign, t.FollowGlobalVisitAutoAssignDefaultState, t.FollowVisitAutoAssignDefaultState, t.TaskAllocateObjEnum }).FirstOrDefaultAsync();
|
||||
|
||||
var visitBlindConfig = _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.BlindBaseLineName, t.BlindFollowUpPrefix }).FirstOrDefault();
|
||||
|
||||
|
@ -99,14 +99,14 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
|
||||
|
||||
foreach (var subjectGroup in needGenerateVisit.GroupBy(t=>t.SubjectId).Select(g=> new { SubjectId= g.Key, SubjectVisitList= g.ToList() }))
|
||||
foreach (var subjectGroup in needGenerateVisit.GroupBy(t => t.SubjectId).Select(g => new { SubjectId = g.Key, SubjectVisitList = g.ToList() }))
|
||||
{
|
||||
var assignConfigList = await _subjectUserRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == trialReadingCriterionConfig.TrialReadingCriterionId && t.SubjectId == subjectGroup.SubjectId && t.OrignalSubjectUserId == null && t.IsConfirmed).Select(u => new { u.DoctorUserId, u.ArmEnum }).ToListAsync();
|
||||
|
||||
|
||||
|
||||
var visitNumList = _subjectVisitRepository.Where(t => t.SubjectId == subjectGroup.SubjectId && t.IsLostVisit == false ).OrderBy(t=>t.VisitNum).Select(t=>t.VisitNum).ToList();
|
||||
|
||||
var visitNumList = _subjectVisitRepository.Where(t => t.SubjectId == subjectGroup.SubjectId && t.IsLostVisit == false).OrderBy(t => t.VisitNum).Select(t => t.VisitNum).ToList();
|
||||
|
||||
foreach (var subjectVisit in subjectGroup.SubjectVisitList)
|
||||
{
|
||||
var blindTaskName = string.Empty;
|
||||
|
@ -121,14 +121,14 @@ namespace IRaCIS.Core.Application.Service
|
|||
{
|
||||
if (trialReadingCriterionConfig.IsReadingTaskViewInOrder)
|
||||
{
|
||||
blindTaskName = visitBlindConfig.BlindFollowUpPrefix+" " + visitNumList.IndexOf(subjectVisit.VisitNum);
|
||||
blindTaskName = visitBlindConfig.BlindFollowUpPrefix + " " + visitNumList.IndexOf(subjectVisit.VisitNum);
|
||||
}
|
||||
else
|
||||
{
|
||||
blindTaskName = visitBlindConfig.BlindFollowUpPrefix;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (trialReadingCriterionConfig.ReadingType == ReadingMethod.Double)
|
||||
{
|
||||
|
@ -258,7 +258,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
var trialId = generateTaskCommand.TrialId;
|
||||
var isAssignSubjectToDoctor = generateTaskCommand.IsAssignSubjectToDoctor;
|
||||
|
||||
var trialReadingCriterionConfigList = _trialReadingCriterionRepository.Where(t => t.TrialId == trialId && t.ReadingInfoSignTime !=null).Select(t => new { TrialReadingCriterionId= t.Id ,t.ReadingTool,t.ReadingType, t.IsReadingTaskViewInOrder, t.IsFollowVisitAutoAssign, t.IsFollowGlobalVisitAutoAssign, t.FollowGlobalVisitAutoAssignDefaultState, t.FollowVisitAutoAssignDefaultState,t.TaskAllocateObjEnum } ).ToList();
|
||||
var trialReadingCriterionConfigList = _trialReadingCriterionRepository.Where(t => t.TrialId == trialId && t.ReadingInfoSignTime != null).Select(t => new { TrialReadingCriterionId = t.Id, t.ReadingTool, t.ReadingType, t.IsReadingTaskViewInOrder, t.IsFollowVisitAutoAssign, t.IsFollowGlobalVisitAutoAssign, t.FollowGlobalVisitAutoAssignDefaultState, t.FollowVisitAutoAssignDefaultState, t.TaskAllocateObjEnum }).ToList();
|
||||
|
||||
var visitBlindConfig = _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.BlindBaseLineName, t.BlindFollowUpPrefix }).FirstOrDefault();
|
||||
|
||||
|
@ -275,13 +275,13 @@ namespace IRaCIS.Core.Application.Service
|
|||
//每个Subject 的每个访视 都要根据每个标准进行任务的生成 和分配(考虑回退后 的分配)
|
||||
|
||||
|
||||
foreach (var subjectGroup in generateTaskCommand.VisitGenerataTaskList.GroupBy(t=>t.SubjectId).Select(g=>new {SubjectId=g.Key,SubjectVisitList=g.ToList()}))
|
||||
foreach (var subjectGroup in generateTaskCommand.VisitGenerataTaskList.GroupBy(t => t.SubjectId).Select(g => new { SubjectId = g.Key, SubjectVisitList = g.ToList() }))
|
||||
{
|
||||
|
||||
|
||||
foreach (var subjectVisit in subjectGroup.SubjectVisitList)
|
||||
{
|
||||
var visitNumList = _subjectVisitRepository.Where(t => t.SubjectId == subjectGroup.SubjectId && t.IsLostVisit==false).OrderBy(t => t.VisitNum).Select(t => t.VisitNum).ToList();
|
||||
var visitNumList = _subjectVisitRepository.Where(t => t.SubjectId == subjectGroup.SubjectId && t.IsLostVisit == false).OrderBy(t => t.VisitNum).Select(t => t.VisitNum).ToList();
|
||||
|
||||
|
||||
foreach (var trialReadingCriterionConfig in trialReadingCriterionConfigList)
|
||||
|
@ -301,7 +301,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
{
|
||||
if (trialReadingCriterionConfig.IsReadingTaskViewInOrder)
|
||||
{
|
||||
blindTaskName = visitBlindConfig.BlindFollowUpPrefix+" " + visitNumList.IndexOf(subjectVisit.VisitNum);
|
||||
blindTaskName = visitBlindConfig.BlindFollowUpPrefix + " " + visitNumList.IndexOf(subjectVisit.VisitNum);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -309,7 +309,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (trialReadingCriterionConfig.ReadingType == ReadingMethod.Double)
|
||||
|
@ -421,7 +421,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
}
|
||||
|
||||
//后续最近的未一致性核查通过的访视任务
|
||||
var followBackVisitTask = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == trialReadingCriterionConfig.TrialReadingCriterionId && t.SubjectId == subjectVisit.SubjectId && t.VisitTaskNum > subjectVisit.VisitNum && t.ReadingCategory == ReadingCategory.Visit && t.SourceSubjectVisit.CheckState != CheckStateEnum.CVPassed && t.SourceSubjectVisit.IsLostVisit==false).OrderBy(t => t.VisitTaskNum).FirstOrDefaultAsync();
|
||||
var followBackVisitTask = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == trialReadingCriterionConfig.TrialReadingCriterionId && t.SubjectId == subjectVisit.SubjectId && t.VisitTaskNum > subjectVisit.VisitNum && t.ReadingCategory == ReadingCategory.Visit && t.SourceSubjectVisit.CheckState != CheckStateEnum.CVPassed && t.SourceSubjectVisit.IsLostVisit == false).OrderBy(t => t.VisitTaskNum).FirstOrDefaultAsync();
|
||||
|
||||
//大于当前访视 同时小于最近的未一致性核查通过的访视任务分配 或者生成
|
||||
|
||||
|
@ -433,98 +433,115 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
var followVisitGroup = followVisitTaskList.GroupBy(t => t.VisitTaskNum);
|
||||
|
||||
//每个访视去判断 是分配还是生成(因为影响哪里有些是取消分配,有些是重阅重置)
|
||||
//每个访视去判断 是分配还是生成(因为影响哪里有些是取消分配,有些是重阅重置需要重新生成)
|
||||
foreach (var visitGroup in followVisitGroup)
|
||||
{
|
||||
|
||||
var arm1 = visitGroup.FirstOrDefault(t => t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.NotAllocate && t.DoctorUserId == null && t.ArmEnum == Arm.DoubleReadingArm1);
|
||||
if (arm1 != null)
|
||||
//如果后续访视已分配有效 就不用处理
|
||||
if (visitGroup.Any(t => t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated && t.ArmEnum == Arm.DoubleReadingArm1))
|
||||
{
|
||||
arm1.TaskAllocationState = TaskAllocationState.Allocated;
|
||||
arm1.AllocateTime = DateTime.Now;
|
||||
arm1.DoctorUserId = task1.DoctorUserId;
|
||||
arm1.SuggesteFinishedTime = DateTime.Now.AddDays(7);
|
||||
//不做处理
|
||||
}
|
||||
else
|
||||
{
|
||||
var latestTask = visitGroup.Where(t => t.ArmEnum == Arm.DoubleReadingArm1).OrderByDescending(t => t.CreateTime).First();
|
||||
|
||||
var taskOne = await _visitTaskRepository.AddAsync(new VisitTask()
|
||||
var arm1 = visitGroup.FirstOrDefault(t => t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.NotAllocate && t.DoctorUserId == null && t.ArmEnum == Arm.DoubleReadingArm1);
|
||||
if (arm1 != null)
|
||||
{
|
||||
TrialId = trialId,
|
||||
SubjectId = subjectVisit.SubjectId,
|
||||
IsUrgent = subjectVisit.IsUrgent,
|
||||
ArmEnum = Arm.DoubleReadingArm1,//特殊
|
||||
Code = currentMaxCodeInt + 1,
|
||||
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
|
||||
ReadingCategory = ReadingCategory.Visit,
|
||||
arm1.TaskAllocationState = TaskAllocationState.Allocated;
|
||||
arm1.AllocateTime = DateTime.Now;
|
||||
arm1.DoctorUserId = task1.DoctorUserId;
|
||||
arm1.SuggesteFinishedTime = DateTime.Now.AddDays(7);
|
||||
}
|
||||
else
|
||||
{
|
||||
var latestTask = visitGroup.Where(t => t.ArmEnum == Arm.DoubleReadingArm1).OrderByDescending(t => t.CreateTime).First();
|
||||
|
||||
SourceSubjectVisitId = latestTask.SourceSubjectVisitId,
|
||||
VisitTaskNum = latestTask.VisitTaskNum,
|
||||
TaskBlindName = visitBlindConfig.BlindFollowUpPrefix+" " + visitNumList.IndexOf(latestTask.VisitTaskNum) ,
|
||||
TaskName = latestTask.TaskName,
|
||||
var taskOne = await _visitTaskRepository.AddAsync(new VisitTask()
|
||||
{
|
||||
TrialId = trialId,
|
||||
SubjectId = subjectVisit.SubjectId,
|
||||
IsUrgent = subjectVisit.IsUrgent,
|
||||
ArmEnum = Arm.DoubleReadingArm1,//特殊
|
||||
Code = currentMaxCodeInt + 1,
|
||||
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
|
||||
ReadingCategory = ReadingCategory.Visit,
|
||||
|
||||
BlindSubjectCode = latestTask.BlindSubjectCode,
|
||||
BlindTrialSiteCode = latestTask.BlindTrialSiteCode,
|
||||
IsAnalysisCreate = latestTask.IsAnalysisCreate,
|
||||
IsSelfAnalysis = latestTask.IsSelfAnalysis,
|
||||
TaskAllocationState = TaskAllocationState.Allocated,
|
||||
AllocateTime = DateTime.Now,
|
||||
DoctorUserId = task1.DoctorUserId,
|
||||
SuggesteFinishedTime = DateTime.Now.AddDays(7),
|
||||
TrialReadingCriterionId = latestTask.TrialReadingCriterionId
|
||||
});
|
||||
SourceSubjectVisitId = latestTask.SourceSubjectVisitId,
|
||||
VisitTaskNum = latestTask.VisitTaskNum,
|
||||
TaskBlindName = visitBlindConfig.BlindFollowUpPrefix + " " + visitNumList.IndexOf(latestTask.VisitTaskNum),
|
||||
TaskName = latestTask.TaskName,
|
||||
|
||||
currentMaxCodeInt = currentMaxCodeInt + 1;
|
||||
BlindSubjectCode = latestTask.BlindSubjectCode,
|
||||
BlindTrialSiteCode = latestTask.BlindTrialSiteCode,
|
||||
IsAnalysisCreate = latestTask.IsAnalysisCreate,
|
||||
IsSelfAnalysis = latestTask.IsSelfAnalysis,
|
||||
TaskAllocationState = TaskAllocationState.Allocated,
|
||||
AllocateTime = DateTime.Now,
|
||||
DoctorUserId = task1.DoctorUserId,
|
||||
SuggesteFinishedTime = DateTime.Now.AddDays(7),
|
||||
TrialReadingCriterionId = latestTask.TrialReadingCriterionId
|
||||
});
|
||||
|
||||
currentMaxCodeInt = currentMaxCodeInt + 1;
|
||||
|
||||
_provider.Set<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt, TimeSpan.FromMinutes(30));
|
||||
}
|
||||
|
||||
_provider.Set<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt, TimeSpan.FromMinutes(30));
|
||||
}
|
||||
|
||||
var arm2 = visitGroup.FirstOrDefault(t => t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.NotAllocate && t.DoctorUserId == null && t.ArmEnum == Arm.DoubleReadingArm2);
|
||||
if (arm2 != null)
|
||||
//如果后续访视已分配有效 就不用处理
|
||||
if (visitGroup.Any(t => t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated && t.ArmEnum == Arm.DoubleReadingArm2))
|
||||
{
|
||||
arm2.TaskAllocationState = TaskAllocationState.Allocated;
|
||||
arm2.AllocateTime = DateTime.Now;
|
||||
arm2.DoctorUserId = task2.DoctorUserId;
|
||||
arm2.SuggesteFinishedTime = DateTime.Now.AddDays(7);
|
||||
//不做处理
|
||||
}
|
||||
else
|
||||
{
|
||||
var latestTask = visitGroup.Where(t => t.ArmEnum == Arm.DoubleReadingArm2).OrderByDescending(t => t.CreateTime).First();
|
||||
|
||||
var taskTwo = await _visitTaskRepository.AddAsync(new VisitTask()
|
||||
var arm2 = visitGroup.FirstOrDefault(t => t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.NotAllocate && t.DoctorUserId == null && t.ArmEnum == Arm.DoubleReadingArm2);
|
||||
if (arm2 != null)
|
||||
{
|
||||
TrialId = trialId,
|
||||
SubjectId = subjectVisit.SubjectId,
|
||||
IsUrgent = subjectVisit.IsUrgent,
|
||||
arm2.TaskAllocationState = TaskAllocationState.Allocated;
|
||||
arm2.AllocateTime = DateTime.Now;
|
||||
arm2.DoctorUserId = task2.DoctorUserId;
|
||||
arm2.SuggesteFinishedTime = DateTime.Now.AddDays(7);
|
||||
}
|
||||
else
|
||||
{
|
||||
var latestTask = visitGroup.Where(t => t.ArmEnum == Arm.DoubleReadingArm2).OrderByDescending(t => t.CreateTime).First();
|
||||
|
||||
//CheckPassedTime = subjectVisit.CheckPassedTime,
|
||||
ArmEnum = Arm.DoubleReadingArm2,//特殊
|
||||
Code = currentMaxCodeInt + 1,
|
||||
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
|
||||
ReadingCategory = ReadingCategory.Visit,
|
||||
var taskTwo = await _visitTaskRepository.AddAsync(new VisitTask()
|
||||
{
|
||||
TrialId = trialId,
|
||||
SubjectId = subjectVisit.SubjectId,
|
||||
IsUrgent = subjectVisit.IsUrgent,
|
||||
|
||||
SourceSubjectVisitId = latestTask.SourceSubjectVisitId,
|
||||
VisitTaskNum = latestTask.VisitTaskNum,
|
||||
TaskBlindName = visitBlindConfig.BlindFollowUpPrefix+" " + visitNumList.IndexOf(latestTask.VisitTaskNum),
|
||||
TaskName = latestTask.TaskName,
|
||||
//CheckPassedTime = subjectVisit.CheckPassedTime,
|
||||
ArmEnum = Arm.DoubleReadingArm2,//特殊
|
||||
Code = currentMaxCodeInt + 1,
|
||||
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
|
||||
ReadingCategory = ReadingCategory.Visit,
|
||||
|
||||
BlindSubjectCode = latestTask.BlindSubjectCode,
|
||||
BlindTrialSiteCode = latestTask.BlindTrialSiteCode,
|
||||
IsAnalysisCreate = latestTask.IsAnalysisCreate,
|
||||
IsSelfAnalysis = latestTask.IsSelfAnalysis,
|
||||
TaskAllocationState = TaskAllocationState.Allocated,
|
||||
AllocateTime = DateTime.Now,
|
||||
DoctorUserId = task2.DoctorUserId,
|
||||
SuggesteFinishedTime = DateTime.Now.AddDays(7),
|
||||
SourceSubjectVisitId = latestTask.SourceSubjectVisitId,
|
||||
VisitTaskNum = latestTask.VisitTaskNum,
|
||||
TaskBlindName = visitBlindConfig.BlindFollowUpPrefix + " " + visitNumList.IndexOf(latestTask.VisitTaskNum),
|
||||
TaskName = latestTask.TaskName,
|
||||
|
||||
TrialReadingCriterionId = latestTask.TrialReadingCriterionId
|
||||
});
|
||||
BlindSubjectCode = latestTask.BlindSubjectCode,
|
||||
BlindTrialSiteCode = latestTask.BlindTrialSiteCode,
|
||||
IsAnalysisCreate = latestTask.IsAnalysisCreate,
|
||||
IsSelfAnalysis = latestTask.IsSelfAnalysis,
|
||||
TaskAllocationState = TaskAllocationState.Allocated,
|
||||
AllocateTime = DateTime.Now,
|
||||
DoctorUserId = task2.DoctorUserId,
|
||||
SuggesteFinishedTime = DateTime.Now.AddDays(7),
|
||||
|
||||
currentMaxCodeInt = currentMaxCodeInt + 1;
|
||||
TrialReadingCriterionId = latestTask.TrialReadingCriterionId
|
||||
});
|
||||
|
||||
_provider.Set<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt, TimeSpan.FromMinutes(30));
|
||||
currentMaxCodeInt = currentMaxCodeInt + 1;
|
||||
|
||||
_provider.Set<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt, TimeSpan.FromMinutes(30));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -634,7 +651,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
if (trialReadingCriterionConfig.IsReadingTaskViewInOrder)
|
||||
{
|
||||
//之前有回退到影像上传的访视 那么当前访视一致性核查通过的时候,当前访视生成但是不分配出去(排除失访的)
|
||||
var beforeBackVisitTask = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId && t.VisitTaskNum < subjectVisit.VisitNum && t.ReadingCategory == ReadingCategory.Visit && t.SourceSubjectVisit.CheckState != CheckStateEnum.CVPassed && t.SourceSubjectVisit.IsLostVisit==false).OrderBy(t => t.VisitTaskNum).FirstOrDefaultAsync();
|
||||
var beforeBackVisitTask = await _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId && t.VisitTaskNum < subjectVisit.VisitNum && t.ReadingCategory == ReadingCategory.Visit && t.SourceSubjectVisit.CheckState != CheckStateEnum.CVPassed && t.SourceSubjectVisit.IsLostVisit == false).OrderBy(t => t.VisitTaskNum).FirstOrDefaultAsync();
|
||||
|
||||
|
||||
if (beforeBackVisitTask == null)
|
||||
|
@ -674,48 +691,57 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
foreach (var visitGroup in followVisitGroup)
|
||||
{
|
||||
|
||||
var arm = visitGroup.FirstOrDefault(t => t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.NotAllocate && t.DoctorUserId == null && t.ArmEnum == Arm.SingleReadingArm);
|
||||
if (arm != null)
|
||||
//如果后续访视已分配有效 就不用处理
|
||||
if (visitGroup.Any(t => t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated && t.ArmEnum == Arm.SingleReadingArm))
|
||||
{
|
||||
arm.TaskAllocationState = TaskAllocationState.Allocated;
|
||||
arm.AllocateTime = DateTime.Now;
|
||||
arm.DoctorUserId = singleTask.DoctorUserId;
|
||||
arm.SuggesteFinishedTime = DateTime.Now.AddDays(7);
|
||||
//不做处理
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
var latestTask = visitGroup.Where(t => t.ArmEnum == Arm.SingleReadingArm).OrderByDescending(t => t.CreateTime).First();
|
||||
|
||||
var taskOne = await _visitTaskRepository.AddAsync(new VisitTask()
|
||||
var arm = visitGroup.FirstOrDefault(t => t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.NotAllocate && t.DoctorUserId == null && t.ArmEnum == Arm.SingleReadingArm);
|
||||
if (arm != null)
|
||||
{
|
||||
TrialId = trialId,
|
||||
SubjectId = subjectVisit.SubjectId,
|
||||
IsUrgent = subjectVisit.IsUrgent,
|
||||
ArmEnum = Arm.SingleReadingArm,//特殊
|
||||
Code = currentMaxCodeInt + 1,
|
||||
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
|
||||
ReadingCategory = ReadingCategory.Visit,
|
||||
arm.TaskAllocationState = TaskAllocationState.Allocated;
|
||||
arm.AllocateTime = DateTime.Now;
|
||||
arm.DoctorUserId = singleTask.DoctorUserId;
|
||||
arm.SuggesteFinishedTime = DateTime.Now.AddDays(7);
|
||||
}
|
||||
else
|
||||
{
|
||||
var latestTask = visitGroup.Where(t => t.ArmEnum == Arm.SingleReadingArm).OrderByDescending(t => t.CreateTime).First();
|
||||
|
||||
SourceSubjectVisitId = latestTask.SourceSubjectVisitId,
|
||||
VisitTaskNum = latestTask.VisitTaskNum,
|
||||
TaskBlindName = visitBlindConfig.BlindFollowUpPrefix+" " + visitNumList.IndexOf(latestTask.VisitTaskNum),
|
||||
TaskName = latestTask.TaskName,
|
||||
var taskOne = await _visitTaskRepository.AddAsync(new VisitTask()
|
||||
{
|
||||
TrialId = trialId,
|
||||
SubjectId = subjectVisit.SubjectId,
|
||||
IsUrgent = subjectVisit.IsUrgent,
|
||||
ArmEnum = Arm.SingleReadingArm,//特殊
|
||||
Code = currentMaxCodeInt + 1,
|
||||
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
|
||||
ReadingCategory = ReadingCategory.Visit,
|
||||
|
||||
BlindSubjectCode = latestTask.BlindSubjectCode,
|
||||
BlindTrialSiteCode = latestTask.BlindTrialSiteCode,
|
||||
IsAnalysisCreate = latestTask.IsAnalysisCreate,
|
||||
IsSelfAnalysis = latestTask.IsSelfAnalysis,
|
||||
TaskAllocationState = TaskAllocationState.Allocated,
|
||||
AllocateTime = DateTime.Now,
|
||||
DoctorUserId = singleTask.DoctorUserId
|
||||
});
|
||||
SourceSubjectVisitId = latestTask.SourceSubjectVisitId,
|
||||
VisitTaskNum = latestTask.VisitTaskNum,
|
||||
TaskBlindName = visitBlindConfig.BlindFollowUpPrefix + " " + visitNumList.IndexOf(latestTask.VisitTaskNum),
|
||||
TaskName = latestTask.TaskName,
|
||||
|
||||
currentMaxCodeInt = currentMaxCodeInt + 1;
|
||||
BlindSubjectCode = latestTask.BlindSubjectCode,
|
||||
BlindTrialSiteCode = latestTask.BlindTrialSiteCode,
|
||||
IsAnalysisCreate = latestTask.IsAnalysisCreate,
|
||||
IsSelfAnalysis = latestTask.IsSelfAnalysis,
|
||||
TaskAllocationState = TaskAllocationState.Allocated,
|
||||
AllocateTime = DateTime.Now,
|
||||
DoctorUserId = singleTask.DoctorUserId
|
||||
});
|
||||
|
||||
_provider.Set<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt, TimeSpan.FromMinutes(30));
|
||||
currentMaxCodeInt = currentMaxCodeInt + 1;
|
||||
|
||||
_provider.Set<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt, TimeSpan.FromMinutes(30));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -952,7 +978,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
case GenerateTaskCategory.Judge:
|
||||
var firstTask = await _visitTaskRepository.Where(x => generateTaskCommand.JudgeVisitTaskIdList.Contains(x.Id)).FirstOrDefaultAsync();
|
||||
|
||||
var subjectUser = await _subjectUserRepository.Where(x => x.SubjectId == firstTask.SubjectId && x.ArmEnum == Arm.JudgeArm && x.IsConfirmed &&x.TrialReadingCriterionId==firstTask.TrialReadingCriterionId).FirstOrDefaultAsync();
|
||||
var subjectUser = await _subjectUserRepository.Where(x => x.SubjectId == firstTask.SubjectId && x.ArmEnum == Arm.JudgeArm && x.IsConfirmed && x.TrialReadingCriterionId == firstTask.TrialReadingCriterionId).FirstOrDefaultAsync();
|
||||
|
||||
VisitTask visitTask = new VisitTask()
|
||||
{
|
||||
|
@ -1002,8 +1028,8 @@ namespace IRaCIS.Core.Application.Service
|
|||
//case ReadingCategory.ReadingPeriod:
|
||||
case GenerateTaskCategory.Global:
|
||||
|
||||
|
||||
var originalTaskInfo = await _visitTaskRepository.Where(x => x.Id == generateTaskCommand.OriginalVisitId).Include(x=>x.TrialReadingCriterion).FirstNotNullAsync();
|
||||
|
||||
var originalTaskInfo = await _visitTaskRepository.Where(x => x.Id == generateTaskCommand.OriginalVisitId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
|
||||
|
||||
// 需要添加全局任务再添加
|
||||
if (originalTaskInfo.TrialReadingCriterion.IsGlobalTask)
|
||||
|
@ -1038,24 +1064,24 @@ namespace IRaCIS.Core.Application.Service
|
|||
_provider.Set<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt, TimeSpan.FromMinutes(30));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
break;
|
||||
case GenerateTaskCategory.Oncology:
|
||||
|
||||
originalTaskInfo = await _visitTaskRepository.Where(x => x.Id == generateTaskCommand.OriginalVisitId).FirstNotNullAsync();
|
||||
originalTaskInfo = await _visitTaskRepository.Where(x => x.Id == generateTaskCommand.OriginalVisitId).FirstNotNullAsync();
|
||||
|
||||
|
||||
|
||||
foreach (var item in generateTaskCommand.ReadingGenerataTaskList)
|
||||
{
|
||||
//需要 根据标准筛选
|
||||
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();
|
||||
|
||||
|
||||
var singleTask = await _visitTaskRepository.AddAsync(new VisitTask()
|
||||
var singleTask = await _visitTaskRepository.AddAsync(new VisitTask()
|
||||
{
|
||||
TrialId = trialId,
|
||||
SubjectId = item.SubjectId,
|
||||
|
|
|
@ -94,7 +94,7 @@ namespace IRaCIS.Core.Application.Service.Inspection
|
|||
CreateTime = data.CreateTime,
|
||||
CreateUserId = data.CreateUserId,
|
||||
ModuleTypeId = leftmoduleTypec.Id,
|
||||
BlindName = leftsubjectVisit.BlindName,
|
||||
BlindName = data.VisitTask.TaskBlindName,
|
||||
TrialId = data.TrialId,
|
||||
SiteId = data.SiteId,
|
||||
SubjectId = data.SubjectId,
|
||||
|
|
|
@ -196,7 +196,7 @@ namespace IRaCIS.Application.Services
|
|||
[HttpPost]
|
||||
public async Task<List<string>> GetSystemGroupNameList(GetTrialGroupNameListInDto inDto)
|
||||
{
|
||||
var result = await _readingQuestionSystemRepository.Where(x => x.ReadingQuestionCriterionSystemId == inDto.CriterionId && x.Type == ReadingQestionType.Group)
|
||||
var result = await _readingQuestionSystemRepository.Where(x => x.ReadingQuestionCriterionSystemId == inDto.CriterionId && x.Type == ReadingQestionType.Group).OrderBy(t=>t.ShowOrder)
|
||||
.Select(x => x.GroupName).ToListAsync();
|
||||
return result;
|
||||
|
||||
|
@ -576,7 +576,7 @@ namespace IRaCIS.Application.Services
|
|||
public async Task<List<string>> GetTrialGroupNameList(GetTrialGroupNameListInDto inDto)
|
||||
{
|
||||
var result = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == inDto.CriterionId && x.Type == ReadingQestionType.Group)
|
||||
.Where(x => x.ReadingCriterionPageId == inDto.ReadingCriterionPageId)
|
||||
.Where(x => x.ReadingCriterionPageId == inDto.ReadingCriterionPageId).OrderBy(t => t.ShowOrder)
|
||||
.Select(x => x.GroupName).ToListAsync();
|
||||
|
||||
return result;
|
||||
|
|
|
@ -49,6 +49,9 @@ namespace IRaCIS.Core.Domain.Models
|
|||
public Guid? SubjectVisitId { get; set; }
|
||||
|
||||
|
||||
public Guid? VisitTaskId { get; set; }
|
||||
|
||||
public VisitTask VisitTask { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// IP地址
|
||||
|
|
|
@ -150,8 +150,6 @@ namespace IRaCIS.Core.Infra.EFCore.Common.Dto
|
|||
//标识操作 是否区分接口
|
||||
public bool IsDistinctionInterface=true;
|
||||
|
||||
public Guid? VisitTaskId { get; set; }
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue