修改随机阅片逻辑
continuous-integration/drone/push Build is passing Details

IRC_NewDev
hang 2024-06-07 15:04:41 +08:00
parent cac0652120
commit 43ec332f61
1 changed files with 29 additions and 28 deletions

View File

@ -40,8 +40,8 @@ namespace IRaCIS.Core.Application.Service
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository; private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
private readonly IRepository<ReadingTableAnswerRowInfo> _readingTableAnswerRowInfoRepository; private readonly IRepository<ReadingTableAnswerRowInfo> _readingTableAnswerRowInfoRepository;
private readonly IRepository<ReadingTableQuestionAnswer> _readingTableQuestionAnswerRepository; private readonly IRepository<ReadingTableQuestionAnswer> _readingTableQuestionAnswerRepository;
private readonly IRepository<ReadingOncologyTaskInfo> _readingOncologyTaskInfoRepository; private readonly IRepository<ReadingOncologyTaskInfo> _readingOncologyTaskInfoRepository;
private readonly IRepository<ReadingTableQuestionTrial> _readingTableQuestionTrialRepository; private readonly IRepository<ReadingTableQuestionTrial> _readingTableQuestionTrialRepository;
private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository; private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository;
private readonly IMapper _mapper; private readonly IMapper _mapper;
private readonly IUserInfo _userInfo; private readonly IUserInfo _userInfo;
@ -61,8 +61,8 @@ namespace IRaCIS.Core.Application.Service
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository, IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository,
IRepository<ReadingTableAnswerRowInfo> readingTableAnswerRowInfoRepository, IRepository<ReadingTableAnswerRowInfo> readingTableAnswerRowInfoRepository,
IRepository<ReadingTableQuestionAnswer> readingTableQuestionAnswerRepository, IRepository<ReadingTableQuestionAnswer> readingTableQuestionAnswerRepository,
IRepository<ReadingOncologyTaskInfo> ReadingOncologyTaskInfoRepository, IRepository<ReadingOncologyTaskInfo> ReadingOncologyTaskInfoRepository,
IRepository<ReadingTableQuestionTrial> readingTableQuestionTrialRepository, IRepository<ReadingTableQuestionTrial> readingTableQuestionTrialRepository,
IRepository<ReadingQuestionTrial> readingQuestionTrialRepository, IRepository<ReadingQuestionTrial> readingQuestionTrialRepository,
IRepository<ReadingJudgeInfo> readingJudgeInfoRepository, IRepository<ReadingJudgeInfo> readingJudgeInfoRepository,
IRepository<TaskAllocationRule> taskAllocationRuleRepository, IMapper mapper, IUserInfo userInfo, IRepository<VisitTaskReReading> visitTaskReReadingRepository, IRepository<TaskAllocationRule> taskAllocationRuleRepository, IMapper mapper, IUserInfo userInfo, IRepository<VisitTaskReReading> visitTaskReReadingRepository,
@ -78,8 +78,8 @@ namespace IRaCIS.Core.Application.Service
this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository; this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository; this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository;
this._readingTableQuestionAnswerRepository = readingTableQuestionAnswerRepository; this._readingTableQuestionAnswerRepository = readingTableQuestionAnswerRepository;
_readingOncologyTaskInfoRepository = ReadingOncologyTaskInfoRepository; _readingOncologyTaskInfoRepository = ReadingOncologyTaskInfoRepository;
this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository; this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository;
this._readingQuestionTrialRepository = readingQuestionTrialRepository; this._readingQuestionTrialRepository = readingQuestionTrialRepository;
_provider = provider; _provider = provider;
_subjectVisitRepository = subjectVisitRepository; _subjectVisitRepository = subjectVisitRepository;
@ -464,11 +464,11 @@ namespace IRaCIS.Core.Application.Service
.Where(t => t.TrialId == trialId && t.IsSign && t.ReadingClinicalDataState == ReadingClinicalDataStatus.HaveSigned && t.ReadingId == readingId && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM).Count(); .Where(t => t.TrialId == trialId && t.IsSign && t.ReadingClinicalDataState == ReadingClinicalDataStatus.HaveSigned && t.ReadingId == readingId && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM).Count();
var readModule = _readModuleRepository.Where(t => t.Id == readingId).FirstOrDefault(); var readModule = _readModuleRepository.Where(t => t.Id == readingId).FirstOrDefault();
//CRC 阅片期自定义结构化录入是否签名 //CRC 阅片期自定义结构化录入是否签名
bool crcReadModuleSign = true; bool crcReadModuleSign = true;
//访视 //访视
if (readingCategory == ReadingCategory.Visit) if (readingCategory == ReadingCategory.Visit)
@ -509,7 +509,7 @@ namespace IRaCIS.Core.Application.Service
// 肿瘤学 // 肿瘤学
else if (readingCategory == ReadingCategory.Oncology) else if (readingCategory == ReadingCategory.Oncology)
{ {
needSignCount= trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead && t.UploadRole == UploadRole.PM).Count(); needSignCount = trialClinicalDataSetList.Where(t => t.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == trialReadingCriterionId) && t.ClinicalDataLevel == ClinicalLevel.OncologyRead && t.UploadRole == UploadRole.PM).Count();
if (readModule != null) if (readModule != null)
{ {
// 不存在需要CRC上传的临床数据 或者 PM已确认 // 不存在需要CRC上传的临床数据 或者 PM已确认
@ -527,7 +527,7 @@ namespace IRaCIS.Core.Application.Service
} }
//可能仅仅CRC 基线 没有PM //可能仅仅CRC 基线 没有PM
if (needSignCount == haveSignedCount && crcReadModuleSign ) if (needSignCount == haveSignedCount && crcReadModuleSign)
{ {
isClinicalDataSign = true; isClinicalDataSign = true;
@ -669,21 +669,22 @@ namespace IRaCIS.Core.Application.Service
var isFrontTaskNeedSignButNotSign = await _visitTaskRepository.AnyAsync(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.SubjectId == subjectVisit.SubjectId && t.TaskState == TaskState.Effect && t.VisitTaskNum < subjectVisit.VisitNum && t.IsNeedClinicalDataSign == true && t.IsClinicalDataSign == false); var isFrontTaskNeedSignButNotSign = await _visitTaskRepository.AnyAsync(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.SubjectId == subjectVisit.SubjectId && t.TaskState == TaskState.Effect && t.VisitTaskNum < subjectVisit.VisitNum && t.IsNeedClinicalDataSign == true && t.IsClinicalDataSign == false);
if (visitNumList.IndexOf(subjectVisit.VisitNum) == 0) if (trialReadingCriterionConfig.IsReadingTaskViewInOrder == ReadingOrder.InOrder)
{ {
blindTaskName = visitBlindConfig.BlindBaseLineName; if (visitNumList.IndexOf(subjectVisit.VisitNum) == 0)
}
else
{
if (trialReadingCriterionConfig.IsReadingTaskViewInOrder == ReadingOrder.InOrder)
{ {
blindTaskName = visitBlindConfig.BlindFollowUpPrefix + " " + visitNumList.IndexOf(subjectVisit.VisitNum); blindTaskName = visitBlindConfig.BlindBaseLineName;
} }
else else
{ {
blindTaskName = visitBlindConfig.BlindFollowUpPrefix; blindTaskName = visitBlindConfig.BlindFollowUpPrefix + " " + visitNumList.IndexOf(subjectVisit.VisitNum);
} }
} }
else
{
blindTaskName = visitBlindConfig.BlindFollowUpPrefix;
}
//每个访视 根据项目配置生成任务 双审生成两个 //每个访视 根据项目配置生成任务 双审生成两个
@ -1076,7 +1077,7 @@ namespace IRaCIS.Core.Application.Service
TrialReadingCriterionId = trialReadingCriterionConfig.TrialReadingCriterionId, TrialReadingCriterionId = trialReadingCriterionConfig.TrialReadingCriterionId,
IsNeedClinicalDataSign = isNeedClinicalDataSign, IsNeedClinicalDataSign = isNeedClinicalDataSign,
IsClinicalDataSign = isClinicalDataSign, IsClinicalDataSign = isClinicalDataSign,
IsFrontTaskNeedSignButNotSign= isFrontTaskNeedSignButNotSign IsFrontTaskNeedSignButNotSign = isFrontTaskNeedSignButNotSign
}); });
@ -1610,12 +1611,12 @@ namespace IRaCIS.Core.Application.Service
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(); item.VisitNum = await _readModuleRepository.Where(x => x.Id == item.ReadModuleId).Select(x => x.SubjectVisit.VisitNum).FirstOrDefaultAsync();
var id= NewId.NextGuid(); var id = NewId.NextGuid();
var singleTask = await _visitTaskRepository.AddAsync(new VisitTask() var singleTask = await _visitTaskRepository.AddAsync(new VisitTask()
{ {
Id= id, Id = id,
TrialId = trialId, TrialId = trialId,
SubjectId = item.SubjectId, SubjectId = item.SubjectId,
IsUrgent = originalTaskInfo.IsUrgent, IsUrgent = originalTaskInfo.IsUrgent,
TaskName = item.ReadingName, TaskName = item.ReadingName,
@ -1649,20 +1650,20 @@ namespace IRaCIS.Core.Application.Service
// 生成肿瘤学需要 肿瘤学阅片结果中基线统一显示为NA // 生成肿瘤学需要 肿瘤学阅片结果中基线统一显示为NA
// 找到基线任务ID // 找到基线任务ID
var baseLineTaskId = await _visitTaskRepository.Where(x => x.TaskState == TaskState.Effect var baseLineTaskId = await _visitTaskRepository.Where(x => x.TaskState == TaskState.Effect
&& x.ArmEnum == originalTaskInfo.ArmEnum && x.VisitTaskNum == 0 && x.ArmEnum == originalTaskInfo.ArmEnum && x.VisitTaskNum == 0
&& x.SubjectId== originalTaskInfo.SubjectId && x.SubjectId == originalTaskInfo.SubjectId
&& x.ReadingTaskState == ReadingTaskState.HaveSigned && x.TrialReadingCriterionId == originalTaskInfo.TrialReadingCriterionId).Select(x => x.Id).FirstNotNullAsync(); && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.TrialReadingCriterionId == originalTaskInfo.TrialReadingCriterionId).Select(x => x.Id).FirstNotNullAsync();
await _readingOncologyTaskInfoRepository.AddAsync(new ReadingOncologyTaskInfo() await _readingOncologyTaskInfoRepository.AddAsync(new ReadingOncologyTaskInfo()
{ {
EvaluationResult = "-1", EvaluationResult = "-1",
EvaluationReason=string.Empty, EvaluationReason = string.Empty,
OncologyTaskId = id, OncologyTaskId = id,
VisitTaskId = baseLineTaskId, VisitTaskId = baseLineTaskId,
SubjectId = originalTaskInfo.SubjectId, SubjectId = originalTaskInfo.SubjectId,
TrialId = originalTaskInfo.TrialId TrialId = originalTaskInfo.TrialId
}); });
_provider.Set<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt, TimeSpan.FromMinutes(30)); _provider.Set<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt, TimeSpan.FromMinutes(30));
} }
break; break;
} }