重阅跟踪修改
parent
0797b8b262
commit
088aa83fea
|
@ -60,6 +60,8 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||
|
||||
public bool IsPMSetBack { get; set; }
|
||||
|
||||
public PIAuditState PIAuditState { get; set; }
|
||||
|
||||
#region 标准配置
|
||||
public Guid TrialReadingCriterionId { get; set; }
|
||||
|
||||
|
@ -380,6 +382,8 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||
|
||||
public RequestReReadingResult? RequestReReadingResultEnum { get; set; }
|
||||
|
||||
public PIAuditState? PIAuditState { get; set; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -748,6 +748,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
|||
.WhereIf(queryVisitTask.TaskAllocationState != null, t => t.TaskAllocationState == queryVisitTask.TaskAllocationState)
|
||||
.WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
|
||||
.WhereIf(queryVisitTask.ReReadingApplyState != null, t => t.ReReadingApplyState == queryVisitTask.ReReadingApplyState)
|
||||
.WhereIf(queryVisitTask.PIAuditState != null, t => t.PIAuditState == queryVisitTask.PIAuditState)
|
||||
|
||||
.WhereIf(queryVisitTask.CompleteClinicalDataEnum == CompleteClinicalDataEnum.Complete, t => t.IsClinicalDataSign && t.IsNeedClinicalDataSign == true)
|
||||
.WhereIf(queryVisitTask.CompleteClinicalDataEnum == CompleteClinicalDataEnum.NotComplete, t => t.IsClinicalDataSign == false && t.IsNeedClinicalDataSign == true)
|
||||
|
@ -797,7 +798,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
|||
|
||||
.WhereIf(queryVisitTask.RequestReReadingResultEnum != null, t => t.RequestReReadingResultEnum == queryVisitTask.RequestReReadingResultEnum)
|
||||
|
||||
|
||||
.WhereIf(queryVisitTask.PIAuditState != null, t => t.OriginalReReadingTask.PIAuditState == queryVisitTask.PIAuditState)
|
||||
.WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.OriginalReReadingTask.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.OriginalReReadingTask.IsAnalysisCreate) || (t.OriginalReReadingTask.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.OriginalReReadingTask.IsAnalysisCreate == false))
|
||||
.WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.OriginalReReadingTask.TaskName.Contains(queryVisitTask.TaskName) || t.OriginalReReadingTask.TaskBlindName.Contains(queryVisitTask.TaskName))
|
||||
.WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => (t.OriginalReReadingTask.Subject.Code.Contains(queryVisitTask.SubjectCode) && t.OriginalReReadingTask.IsAnalysisCreate == false) || (t.OriginalReReadingTask.BlindSubjectCode.Contains(queryVisitTask.SubjectCode) && t.OriginalReReadingTask.IsAnalysisCreate))
|
||||
|
@ -1078,21 +1079,43 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
|||
|
||||
var critrion = await _trialReadingCriterionRepository.FindAsync(trialReadingCriterionId);
|
||||
|
||||
var readingDivisionEnum = critrion.ReadingDivisionEnum;
|
||||
|
||||
var visitQuery = _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.DoctorUserId == _userInfo.Id
|
||||
&& x.TaskState == TaskState.Effect /*&& x.TrialReadingCriterionId== inDto.TrialReadingCriterionId*/)
|
||||
var piReadingScopenEnum= critrion.PIReadingScopenEnum;
|
||||
|
||||
var visitQuery = _visitTaskRepository
|
||||
.Where(x => x.TrialId == inDto.TrialId && x.TaskState == TaskState.Effect)
|
||||
|
||||
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR, t => t.Subject.TrialSite.CRCUserList.Any(u => u.UserId == _userInfo.Id))
|
||||
// 仅仅SR阅片 PI 没有任务列表
|
||||
.WhereIf( readingDivisionEnum== ReadingDivisionEnum.OnlySR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI , t=>t.TrialId==Guid.Empty)
|
||||
|
||||
|
||||
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI && piReadingScopenEnum== PIReadingScopenEnum.AllBaseline,
|
||||
t => t.SourceSubjectVisit.IsBaseLine ==true)
|
||||
|
||||
//PI 阅片所有
|
||||
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI && piReadingScopenEnum == PIReadingScopenEnum.AllBaselineandVisit,
|
||||
t => true)
|
||||
|
||||
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI && piReadingScopenEnum == PIReadingScopenEnum.AllVisit,
|
||||
t => t.SourceSubjectVisit.IsBaseLine == false)
|
||||
|
||||
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR && piReadingScopenEnum == PIReadingScopenEnum.AllBaseline,
|
||||
t => t.SourceSubjectVisit.IsBaseLine == false)
|
||||
|
||||
//SR 不阅片
|
||||
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR && piReadingScopenEnum == PIReadingScopenEnum.AllBaselineandVisit,
|
||||
t => t.TrialId == Guid.Empty)
|
||||
|
||||
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR && piReadingScopenEnum == PIReadingScopenEnum.AllVisit,
|
||||
t => t.SourceSubjectVisit.IsBaseLine == true)
|
||||
|
||||
//前序 不存在 未生成任务的访视
|
||||
.WhereIf(critrion.IsAutoCreate == false, t => !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum) )
|
||||
|
||||
// 前序 不存在 未一致性核查未通过的
|
||||
.Where( t=>! t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum > sv.VisitNum))
|
||||
//.WhereIf(critrion.IsAutoCreate == false, t => t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(t => t.IsGeneratedTask == false) ?
|
||||
//t.VisitTaskNum <= t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.IsGeneratedTask == false).Min(t => t.SubjectVisit.VisitNum) : true)
|
||||
//.Where(t => t.Subject.SubjectVisitList.Any(t => t.CheckState != CheckStateEnum.CVPassed) ? t.VisitTaskNum <= t.Subject.SubjectVisitList.Where(t => t.CheckState != CheckStateEnum.CVPassed).Min(t => t.VisitNum) : true)
|
||||
//满足前序访视不存在 需要签署但是未签署 sql 相当复杂 同时想查询所有未读的统计数字 就无法统计 byzhouhang
|
||||
//但是加字段 IsFrontTaskNeedSignButNotSign 那么签名临床数据的时候,要对该subject 该标准的有效的任务 这个字段需要在签名的时候维护 采取这种方式 统计数字灵活
|
||||
//.Where(t => t.Subject.SubjectVisitTaskList.AsQueryable().Where(visitTaskLambda).Any(c => c.IsNeedClinicalDataSign == true && c.IsClinicalDataSign == false && c.VisitTaskNum < t.VisitTaskNum))
|
||||
.WhereIf(!string.IsNullOrEmpty(inDto.SubjectCode), t => (t.Subject.Code.Contains(inDto.SubjectCode) && t.IsAnalysisCreate == false) || (t.BlindSubjectCode.Contains(inDto.SubjectCode) && t.IsAnalysisCreate));
|
||||
|
||||
|
||||
|
@ -1110,8 +1133,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
|||
|
||||
//未读 里可读任务量
|
||||
UnReadCanReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned && y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true)
|
||||
//不能对包含聚合或子查询的表达式执行聚合函数
|
||||
//&& !x.Any(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.IsNeedClinicalDataSign == true && t.IsClinicalDataSign == false && t.VisitTaskNum<y.VisitTaskNum )
|
||||
|
||||
).Count(),
|
||||
|
||||
|
||||
|
|
|
@ -376,7 +376,7 @@ namespace IRaCIS.Core.Domain.Models
|
|||
public Trial Trial { get; set; }
|
||||
|
||||
|
||||
|
||||
public PIAuditState PIAuditState { get; set; }
|
||||
|
||||
|
||||
//影像质量 等等第一层级问题答案
|
||||
|
@ -427,4 +427,26 @@ namespace IRaCIS.Core.Domain.Models
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// PI 审核状态
|
||||
/// </summary>
|
||||
public enum PIAuditState
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// PI未审核
|
||||
/// </summary>
|
||||
PInotAutit = 0,
|
||||
|
||||
/// <summary>
|
||||
/// PI不认同
|
||||
/// </summary>
|
||||
PIAgree = 1,
|
||||
|
||||
/// <summary>
|
||||
/// PI认同
|
||||
/// </summary>
|
||||
PINotAgree = 2
|
||||
}
|
||||
}
|
||||
|
|
|
@ -126,9 +126,9 @@ namespace IRaCIS.Core.Domain.Models
|
|||
public bool IseCRFShowInDicomReading { get; set; } = false;
|
||||
|
||||
|
||||
public int ReadingDivisionEnum { get; set; }
|
||||
public ReadingDivisionEnum ReadingDivisionEnum { get; set; }
|
||||
|
||||
public int PIReadingScopenEnum { get; set; }
|
||||
public PIReadingScopenEnum PIReadingScopenEnum { get; set; }
|
||||
|
||||
|
||||
#region 阅片单元配置 新加
|
||||
|
@ -277,6 +277,43 @@ namespace IRaCIS.Core.Domain.Models
|
|||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 阅片分工
|
||||
/// </summary>
|
||||
public enum ReadingDivisionEnum
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 仅SR阅片
|
||||
/// </summary>
|
||||
OnlySR = 1,
|
||||
|
||||
/// <summary>
|
||||
/// PI和SR
|
||||
/// </summary>
|
||||
PIandSR = 2
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// PI阅片范围
|
||||
/// </summary>
|
||||
public enum PIReadingScopenEnum
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 全部基线
|
||||
/// </summary>
|
||||
AllBaseline = 1,
|
||||
|
||||
/// <summary>
|
||||
/// 全部随访
|
||||
/// </summary>
|
||||
AllVisit = 2,
|
||||
|
||||
/// <summary>
|
||||
/// 全部基线和随访
|
||||
/// </summary>
|
||||
AllBaselineandVisit = 3
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue