增加 替换领取人 和释放领取人,修改提交访视紧急状态修改

Uat_Study
hang 2022-05-09 16:22:56 +08:00
parent 4f69b6067a
commit d096461fda
1 changed files with 37 additions and 19 deletions

View File

@ -375,7 +375,7 @@ namespace IRaCIS.Core.Application.Image.QA
return ResponseOutput.NotOk("核查通过的数据不允许申请回退"); return ResponseOutput.NotOk("核查通过的数据不允许申请回退");
} }
await _subjectVisitRepository.UpdatePartialFromQueryAsync( subjectVisitId, u => new SubjectVisit() { RequestBackState = RequestBackStateEnum.CRC_RequestBack },true); await _subjectVisitRepository.UpdatePartialFromQueryAsync(subjectVisitId, u => new SubjectVisit() { RequestBackState = RequestBackStateEnum.CRC_RequestBack }, true);
return ResponseOutput.Ok(); return ResponseOutput.Ok();
@ -861,7 +861,7 @@ namespace IRaCIS.Core.Application.Image.QA
//提交了 但是IQC同意的时候 是可以删除的 | 普通提交后也不能删除 //提交了 但是IQC同意的时候 是可以删除的 | 普通提交后也不能删除
if (await _subjectVisitRepository.AnyAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted && if (await _subjectVisitRepository.AnyAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
(!t.QCChallengeList.Any(u => u.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))) ) (!t.QCChallengeList.Any(u => u.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))))
{ {
return ResponseOutput.NotOk("CRC Has Submited Imagecan not delete"); return ResponseOutput.NotOk("CRC Has Submited Imagecan not delete");
} }
@ -894,7 +894,7 @@ namespace IRaCIS.Core.Application.Image.QA
var success3 = await _dicomSeriesrepository.DeleteFromQueryAsync(t => t.StudyId == id,true); var success3 = await _dicomSeriesrepository.DeleteFromQueryAsync(t => t.StudyId == id, true);
var success4 = await _repository.BatchDeleteAsync<StudyMonitor>(t => t.StudyId == id); var success4 = await _repository.BatchDeleteAsync<StudyMonitor>(t => t.StudyId == id);
//删除 物理文件 //删除 物理文件
@ -946,6 +946,9 @@ namespace IRaCIS.Core.Application.Image.QA
{ {
var dbSubjectVisit = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId)).IfNullThrowException(); var dbSubjectVisit = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId)).IfNullThrowException();
await VerifyIsCanQCAsync(dbSubjectVisit);
dbSubjectVisit.IsTake = true; dbSubjectVisit.IsTake = true;
dbSubjectVisit.CurrentActionUserId = _userInfo.Id; dbSubjectVisit.CurrentActionUserId = _userInfo.Id;
@ -982,11 +985,11 @@ namespace IRaCIS.Core.Application.Image.QA
if (obtaionOrCancel) if (obtaionOrCancel)
{ {
if (await _subjectVisitRepository.AnyAsync(t => t.CurrentActionUserId != null && t.IsTake && t.Id == subjectVisitId)) if (dbSubjectVisit.CurrentActionUserId != null && dbSubjectVisit.IsTake )
{ {
//throw new BusinessValidationFailedException("当前访视已被领取,不允许领取"); //throw new BusinessValidationFailedException("当前访视已被领取,不允许领取");
return ResponseOutput.NotOk("当前访视已被领取,不允许领取",ApiResponseCodeEnum.NeedTips); return ResponseOutput.NotOk("当前访视已被领取,不允许领取", ApiResponseCodeEnum.NeedTips);
} }
@ -1003,7 +1006,6 @@ namespace IRaCIS.Core.Application.Image.QA
// )) // ))
//{ //{
// return ResponseOutput.NotOk("您已经领取了其他受试者,完成后才允许领取新的受试者"); // return ResponseOutput.NotOk("您已经领取了其他受试者,完成后才允许领取新的受试者");
//} //}
@ -1074,6 +1076,11 @@ namespace IRaCIS.Core.Application.Image.QA
} }
else else
{ {
if (dbSubjectVisit!.CurrentActionUserId != _userInfo.Id)
{
ResponseOutput.NotOk("您不是该质控任务当前领取人,没有操作权限!", ApiResponseCodeEnum.NeedTips);
}
if (trialConfig.QCProcessEnum == TrialQCProcess.NotAudit) if (trialConfig.QCProcessEnum == TrialQCProcess.NotAudit)
{ {
@ -1108,7 +1115,7 @@ namespace IRaCIS.Core.Application.Image.QA
else else
{ {
return ResponseOutput.NotOk("项目配置为复审,不满足提交状态:已提交 或者 审核状态InPrimaryQC/InSecondaryQC, 不允许释放"); return ResponseOutput.NotOk("项目配置为双审,不满足提交状态:已提交 或者 审核状态InPrimaryQC|InSecondaryQC, 不允许释放");
} }
} }
@ -1135,7 +1142,7 @@ namespace IRaCIS.Core.Application.Image.QA
{ {
var sv = dbSubjectVisitList[0]; var sv = dbSubjectVisitList[0];
var nameList = await _subjectVisitRepository.Where(t => t.SubjectId == sv.SubjectId && t.SubmitState != SubmitStateEnum.Submitted && t.VisitNum < sv.VisitNum).Select(t => t.VisitName).ToListAsync() ?? new List<string>(); var nameList = await _subjectVisitRepository.Where(t => t.SubjectId == sv.SubjectId && t.SubmitState != SubmitStateEnum.Submitted && t.VisitNum < sv.VisitNum && t.IsLostVisit ==false).Select(t => t.VisitName).ToListAsync() ?? new List<string>();
if (sv.PDState == PDStateEnum.PDProgress) if (sv.PDState == PDStateEnum.PDProgress)
{ {
@ -1228,6 +1235,17 @@ namespace IRaCIS.Core.Application.Image.QA
if (trialConfig.IsUrgent || dbSubjectVisit.Subject.IsUrgent || (dbSubjectVisit.PDState == PDStateEnum.PDProgress && !dbSubjectVisit.IsBaseLine) || (dbSubjectVisit.IsEnrollmentConfirm && dbSubjectVisit.IsBaseLine)) if (trialConfig.IsUrgent || dbSubjectVisit.Subject.IsUrgent || (dbSubjectVisit.PDState == PDStateEnum.PDProgress && !dbSubjectVisit.IsBaseLine) || (dbSubjectVisit.IsEnrollmentConfirm && dbSubjectVisit.IsBaseLine))
{ {
dbSubjectVisit.IsUrgent = true; dbSubjectVisit.IsUrgent = true;
//PD确认的紧急会把前面所有未QC完成的访视均标记为紧急
var previosSVlist = await _subjectVisitRepository.Where(t => t.SubjectId == dbSubjectVisit.SubjectId && t.VisitNum < dbSubjectVisit.VisitNum && t.IsUrgent == false && t.SubmitState == SubmitStateEnum.Submitted, true).ToListAsync();
previosSVlist.ForEach(t =>
{
t.IsUrgent = true;
});
} }