Merge branch 'Test_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_IRC_Net8
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
1efd41e7ac
|
@ -183,7 +183,8 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
|
|
||||||
public string TaskCode { get; set; }
|
public string TaskCode { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
//可以不查询
|
//可以不查询
|
||||||
public List<VisitTaskSimpleDTO> GlobalVisitTaskList { get; set; }
|
public List<VisitTaskSimpleDTO> GlobalVisitTaskList { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ using Medallion.Threading;
|
||||||
using IRaCIS.Core.Infrastructure.Extention;
|
using IRaCIS.Core.Infrastructure.Extention;
|
||||||
using System;
|
using System;
|
||||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||||
|
using NPOI.SS.Formula.Functions;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
@ -178,9 +179,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var list = await GetIQueryableDoctorSelfConsistentSubjectView(filterObj, doctorUserId, inCommand.SubejctIdList).ToListAsync();
|
var list = await GetIQueryableDoctorSelfConsistentSubjectView(filterObj, doctorUserId, inCommand.SubejctIdList).ToListAsync();
|
||||||
|
|
||||||
//var (group, query) = GetIQueryableDoctorSelfConsistentRuleSubjectView(filterObj, inCommand.SubejctIdList);
|
|
||||||
|
|
||||||
//var list = query.OrderByDescending(t => t.IsHaveGeneratedTask).ToList();
|
|
||||||
|
|
||||||
var @lock = _distributedLockProvider.CreateLock($"VisitTaskCode");
|
var @lock = _distributedLockProvider.CreateLock($"VisitTaskCode");
|
||||||
|
|
||||||
|
@ -552,7 +551,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var subjectQuery = _subjectRepository.Where(t => t.TrialId == trialId &&
|
var subjectQuery = _subjectRepository.Where(t => t.TrialId == trialId &&
|
||||||
t.SubjectVisitTaskList.AsQueryable().Where(visitTaskFilter).Count() >= filterObj.PlanVisitCount)
|
t.SubjectVisitTaskList.AsQueryable().Where(visitTaskFilter).Count() >= filterObj.PlanVisitCount)
|
||||||
.WhereIf(filterObj.IsHaveReadingPeriod == true, u => u.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Where(t => t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global).OrderBy(t => t.VisitTaskNum).Take(filterObj.PlanVisitCount + 1).Any(t => t.ReadingCategory == ReadingCategory.Global))
|
.WhereIf(filterObj.IsHaveReadingPeriod == true, u => u.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter)
|
||||||
|
.Where(t => t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global).Any(t => t.ReadingCategory == ReadingCategory.Global))
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
@ -596,29 +596,27 @@ namespace IRaCIS.Core.Application.Service
|
||||||
IsClinicalDataSign = c.IsClinicalDataSign,
|
IsClinicalDataSign = c.IsClinicalDataSign,
|
||||||
IsNeedClinicalDataSign = c.IsNeedClinicalDataSign,
|
IsNeedClinicalDataSign = c.IsNeedClinicalDataSign,
|
||||||
|
|
||||||
//自身一致性才有意义
|
|
||||||
//IsHaveGeneratedTask = c.Subject.SubjectVisitTaskList.Any(t => t.ConsistentAnalysisOriginalTaskId == c.Id),
|
|
||||||
|
|
||||||
GlobalVisitTaskList = c.Subject.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Where(t => t.VisitTaskNum == c.VisitTaskNum + ReadingCommon.TaskNumDic[ReadingCategory.Global]).Select(c => new VisitTaskSimpleDTO()
|
//GlobalVisitTaskList = c.Subject.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Where(t => t.VisitTaskNum == c.VisitTaskNum + ReadingCommon.TaskNumDic[ReadingCategory.Global]).Select(c => new VisitTaskSimpleDTO()
|
||||||
{
|
//{
|
||||||
Id = c.Id,
|
// Id = c.Id,
|
||||||
ReadingCategory = c.ReadingCategory,
|
// ReadingCategory = c.ReadingCategory,
|
||||||
ReadingTaskState = c.ReadingTaskState,
|
// ReadingTaskState = c.ReadingTaskState,
|
||||||
TaskBlindName = c.TaskBlindName,
|
// TaskBlindName = c.TaskBlindName,
|
||||||
TaskCode = c.TaskCode,
|
// TaskCode = c.TaskCode,
|
||||||
TaskName = c.TaskName,
|
// TaskName = c.TaskName,
|
||||||
TaskState = c.TaskState,
|
// TaskState = c.TaskState,
|
||||||
ArmEnum = c.ArmEnum,
|
// ArmEnum = c.ArmEnum,
|
||||||
SubjectId = c.SubjectId,
|
// SubjectId = c.SubjectId,
|
||||||
VisitTaskNum = c.VisitTaskNum,
|
// VisitTaskNum = c.VisitTaskNum,
|
||||||
TrialId = c.TrialId,
|
// TrialId = c.TrialId,
|
||||||
SourceSubjectVisitId = c.SourceSubjectVisitId,
|
// SourceSubjectVisitId = c.SourceSubjectVisitId,
|
||||||
SouceReadModuleId = c.SouceReadModuleId,
|
// SouceReadModuleId = c.SouceReadModuleId,
|
||||||
|
|
||||||
TrialReadingCriterionId = c.TrialReadingCriterionId,
|
// TrialReadingCriterionId = c.TrialReadingCriterionId,
|
||||||
IsClinicalDataSign = c.IsClinicalDataSign,
|
// IsClinicalDataSign = c.IsClinicalDataSign,
|
||||||
IsNeedClinicalDataSign = c.IsNeedClinicalDataSign,
|
// IsNeedClinicalDataSign = c.IsNeedClinicalDataSign,
|
||||||
}).ToList(),
|
//}).ToList(),
|
||||||
|
|
||||||
}).ToList()
|
}).ToList()
|
||||||
});
|
});
|
||||||
|
@ -795,7 +793,14 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
t.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter)
|
t.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter)
|
||||||
.Where(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && t.SignTime!.Value.AddDays(taskConsistentRule.IntervalWeeks * 7) < DateTime.Now && t.DoctorUserId == user.Id)
|
.Where(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && t.SignTime!.Value.AddDays(taskConsistentRule.IntervalWeeks * 7) < DateTime.Now && t.DoctorUserId == user.Id)
|
||||||
.Where(t => t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global).OrderBy(t => t.VisitTaskNum).Take(taskConsistentRule.PlanVisitCount + 1).Any(t => t.ReadingCategory == ReadingCategory.Global))
|
.Where(t => t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global).Any(t => t.ReadingCategory == ReadingCategory.Global)
|
||||||
|
&&
|
||||||
|
t.SubjectVisitTaskList.AsQueryable().Where(visitTaskFilter)
|
||||||
|
.Where(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && t.SignTime!.Value.AddDays(taskConsistentRule.IntervalWeeks * 7) < DateTime.Now && t.DoctorUserId == user.Id)
|
||||||
|
.Count()>= taskConsistentRule.PlanVisitCount
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
.Count(),
|
.Count(),
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1374,7 +1374,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
|
if (IsPMOrAPm())
|
||||||
{
|
{
|
||||||
if (criterionConfig.IsAutoCreate == false)
|
if (criterionConfig.IsAutoCreate == false)
|
||||||
{
|
{
|
||||||
|
@ -1634,7 +1634,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
if (criterionConfig.CriterionType == CriterionType.RECIST1Point1 && criterionConfig.IsAdditionalAssessment)
|
if (criterionConfig.CriterionType == CriterionType.RECIST1Point1 && criterionConfig.IsAdditionalAssessment)
|
||||||
{
|
{
|
||||||
// PM申请 SPM / CPM审批
|
// PM申请 SPM / CPM审批
|
||||||
if (visitTaskReReadingAppply.RequestReReadingType == RequestReReadingType.TrialGroupApply && (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM))
|
if (visitTaskReReadingAppply.RequestReReadingType == RequestReReadingType.TrialGroupApply && (IsSpmOrCPM()))
|
||||||
{
|
{
|
||||||
filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == origenalTask.TrialReadingCriterionId || t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB);
|
filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == origenalTask.TrialReadingCriterionId || t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB);
|
||||||
}
|
}
|
||||||
|
@ -1643,7 +1643,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
{
|
{
|
||||||
|
|
||||||
// 1.1 基线任务影响BM任务
|
// 1.1 基线任务影响BM任务
|
||||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && _subjectVisitRepository.Any(t => t.Id == origenalTask.SourceSubjectVisitId && t.IsBaseLine == true))
|
if ((IsPMOrAPm()) && _subjectVisitRepository.Any(t => t.Id == origenalTask.SourceSubjectVisitId && t.IsBaseLine == true))
|
||||||
{
|
{
|
||||||
|
|
||||||
isIR1Point1AdditionalAssessmentBaseline = true;
|
isIR1Point1AdditionalAssessmentBaseline = true;
|
||||||
|
@ -1666,7 +1666,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
if (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree)
|
if (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree)
|
||||||
{
|
{
|
||||||
//PM申请 SPM / CPM审批 回退访视,因此这里不生成访视任务 影响多个标准的任务
|
//PM申请 SPM / CPM审批 回退访视,因此这里不生成访视任务 影响多个标准的任务
|
||||||
if (visitTaskReReadingAppply.RequestReReadingType == RequestReReadingType.TrialGroupApply && (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM))
|
if (visitTaskReReadingAppply.RequestReReadingType == RequestReReadingType.TrialGroupApply && (IsSpmOrCPM()))
|
||||||
{
|
{
|
||||||
|
|
||||||
// 不管有序 无序 都会 回退访视
|
// 不管有序 无序 都会 回退访视
|
||||||
|
@ -1786,7 +1786,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
|
|
||||||
}
|
}
|
||||||
//IR申请 PM 审批 注意这里有一致性分析的申请同意 不会回退访视,在此要生成影响的访视任务
|
//IR申请 PM 审批 注意这里有一致性分析的申请同意 不会回退访视,在此要生成影响的访视任务
|
||||||
else if (visitTaskReReadingAppply.RequestReReadingType == RequestReReadingType.DocotorApply && (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.AIR))
|
else if (visitTaskReReadingAppply.RequestReReadingType == RequestReReadingType.DocotorApply && (IsPMOrAPm() || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.AIR))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
@ -2291,7 +2291,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
|
|
||||||
|
|
||||||
//PM 才允许操作
|
//PM 才允许操作
|
||||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
|
if (IsPMOrAPm())
|
||||||
{
|
{
|
||||||
|
|
||||||
#region 有序 无序公用流程
|
#region 有序 无序公用流程
|
||||||
|
@ -2556,6 +2556,16 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private bool IsPMOrAPm()
|
||||||
|
{
|
||||||
|
return _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsSpmOrCPM()
|
||||||
|
{
|
||||||
|
return _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 影响提示列表 重阅仅仅针对已完成的任务申请 退回针对的是未完成的(退回仅仅针对是访视类型的)
|
/// 影响提示列表 重阅仅仅针对已完成的任务申请 退回针对的是未完成的(退回仅仅针对是访视类型的)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -2587,12 +2597,12 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
{
|
{
|
||||||
|
|
||||||
// IR 申请 PM 同意
|
// IR 申请 PM 同意
|
||||||
if (((_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && applyId != null && await _visitTaskReReadingRepository.AnyAsync(t => t.Id == applyId && t.CreateUser.UserTypeEnum == UserTypeEnum.IndependentReviewer))
|
if ((( IsPMOrAPm() && applyId != null && await _visitTaskReReadingRepository.AnyAsync(t => t.Id == applyId && t.CreateUser.UserTypeEnum == UserTypeEnum.IndependentReviewer))
|
||||||
|| (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer && applyId == null)))
|
|| (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer && applyId == null)))
|
||||||
{
|
{
|
||||||
|
|
||||||
// 1.1 基线任务影响BM任务
|
// 1.1 基线任务影响BM任务
|
||||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && _subjectVisitRepository.Any(t => t.Id == filterObj.SourceSubjectVisitId && t.IsBaseLine == true))
|
if (IsPMOrAPm() && _subjectVisitRepository.Any(t => t.Id == filterObj.SourceSubjectVisitId && t.IsBaseLine == true))
|
||||||
{
|
{
|
||||||
|
|
||||||
isIR1Point1AdditionalAssessmentBaseline = true;
|
isIR1Point1AdditionalAssessmentBaseline = true;
|
||||||
|
@ -2630,7 +2640,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
|
|
||||||
//IR 申请 PM 同意 仅仅影响自己
|
//IR 申请 PM 同意 仅仅影响自己
|
||||||
|
|
||||||
if ((_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && applyId != null && await _visitTaskReReadingRepository.AnyAsync(t => t.Id == applyId && t.CreateUser.UserTypeEnum == UserTypeEnum.IndependentReviewer))
|
if ((IsPMOrAPm() && applyId != null && await _visitTaskReReadingRepository.AnyAsync(t => t.Id == applyId && t.CreateUser.UserTypeEnum == UserTypeEnum.IndependentReviewer))
|
||||||
|| (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer && applyId == null))
|
|| (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer && applyId == null))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -2748,8 +2758,9 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
}
|
}
|
||||||
//PM 影响所有阅片人 仅仅针对访视 SPM CPM 调用
|
//PM 影响所有阅片人 仅仅针对访视 SPM CPM 调用
|
||||||
|
|
||||||
else if (((_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM) && applyId != null && await _visitTaskReReadingRepository.AnyAsync(t => t.Id == applyId && t.CreateUser.UserTypeEnum == UserTypeEnum.ProjectManager) && filterObj.IsAnalysisCreate == false && filterObj.ReadingCategory == ReadingCategory.Visit)
|
else if (((IsSpmOrCPM()) && applyId != null &&
|
||||||
|| (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && applyId == null))
|
await _visitTaskReReadingRepository.AnyAsync(t => t.Id == applyId && (t.CreateUser.UserTypeEnum == UserTypeEnum.ProjectManager || t.CreateUser.UserTypeEnum == UserTypeEnum.APM)) && filterObj.IsAnalysisCreate == false && filterObj.ReadingCategory == ReadingCategory.Visit)
|
||||||
|
|| (IsPMOrAPm() && applyId == null))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
@ -2812,7 +2823,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
throw new BusinessValidationFailedException(_localizer["VisitTask_NoConsistencyReturn"]);
|
throw new BusinessValidationFailedException(_localizer["VisitTask_NoConsistencyReturn"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filterObj.ReadingCategory == ReadingCategory.Visit && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
|
if (filterObj.ReadingCategory == ReadingCategory.Visit && IsPMOrAPm())
|
||||||
{
|
{
|
||||||
//有序
|
//有序
|
||||||
if (criterionConfig.IsReadingTaskViewInOrder == ReadingOrder.InOrder)
|
if (criterionConfig.IsReadingTaskViewInOrder == ReadingOrder.InOrder)
|
||||||
|
|
Loading…
Reference in New Issue