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

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

@ -85,7 +85,7 @@ namespace IRaCIS.Core.Application.Image.QA
[HttpPost("{trialId:guid}/{trialQCProcess:int}/{currentQCType:int}")]
[TypeFilter(typeof(TrialResourceFilter))]
[Authorize(Policy = "ImageQCPolicy")]
public async Task<IResponseOutput> AddOrUpdateQCChallenge(QCChallengeCommand qaQuestionCommand, Guid trialId, [FromRoute] TrialQCProcess trialQCProcess, [FromRoute] CurrentQC currentQCType)
public async Task<IResponseOutput> AddOrUpdateQCChallenge(QCChallengeCommand qaQuestionCommand, Guid trialId, [FromRoute] TrialQCProcess trialQCProcess, [FromRoute] CurrentQC currentQCType)
{
await VerifyIsCanQCAsync(null, qaQuestionCommand.SubjectVisitId);
@ -124,7 +124,7 @@ namespace IRaCIS.Core.Application.Image.QA
else
{
await _repository.UpdateFromDTOAsync<QCChallenge, QCChallengeCommand>(qaQuestionCommand, true);
await _repository.UpdateFromDTOAsync<QCChallenge, QCChallengeCommand>(qaQuestionCommand, true);
return ResponseOutput.Ok();
@ -375,7 +375,7 @@ namespace IRaCIS.Core.Application.Image.QA
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();
@ -729,7 +729,7 @@ namespace IRaCIS.Core.Application.Image.QA
var series = (await _repository.Where<DicomSeries>(t => t.Id == seriesId, true).IgnoreQueryFilters().FirstOrDefaultAsync()).IfNullThrowException();
if (state == 1)
{
series.IsReading = false;
@ -794,7 +794,7 @@ namespace IRaCIS.Core.Application.Image.QA
await VerifyIsCanQCAsync(null, updateModalityCommand.SubjectVisitId);
DateTime time = DateTime.Now.AddMilliseconds(500);
if (updateModalityCommand.Type == 1)
{
@ -861,7 +861,7 @@ namespace IRaCIS.Core.Application.Image.QA
//提交了 但是IQC同意的时候 是可以删除的 | 普通提交后也不能删除
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");
}
@ -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);
//删除 物理文件
@ -946,6 +946,9 @@ namespace IRaCIS.Core.Application.Image.QA
{
var dbSubjectVisit = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId)).IfNullThrowException();
await VerifyIsCanQCAsync(dbSubjectVisit);
dbSubjectVisit.IsTake = true;
dbSubjectVisit.CurrentActionUserId = _userInfo.Id;
@ -970,7 +973,7 @@ namespace IRaCIS.Core.Application.Image.QA
public async Task<IResponseOutput> ObtainOrCancelQCTask(Guid trialId, Guid subjectVisitId, bool obtaionOrCancel)
{
var dbSubjectVisit = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId)).IfNullThrowException();
@ -982,11 +985,11 @@ namespace IRaCIS.Core.Application.Image.QA
if (obtaionOrCancel)
{
if (await _subjectVisitRepository.AnyAsync(t => t.CurrentActionUserId != null && t.IsTake && t.Id == subjectVisitId))
if (dbSubjectVisit.CurrentActionUserId != null && dbSubjectVisit.IsTake )
{
//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("您已经领取了其他受试者,完成后才允许领取新的受试者");
//}
@ -1074,6 +1076,11 @@ namespace IRaCIS.Core.Application.Image.QA
}
else
{
if (dbSubjectVisit!.CurrentActionUserId != _userInfo.Id)
{
ResponseOutput.NotOk("您不是该质控任务当前领取人,没有操作权限!", ApiResponseCodeEnum.NeedTips);
}
if (trialConfig.QCProcessEnum == TrialQCProcess.NotAudit)
{
@ -1108,7 +1115,7 @@ namespace IRaCIS.Core.Application.Image.QA
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 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)
{
@ -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))
{
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;
});
}
@ -1755,15 +1773,15 @@ namespace IRaCIS.Core.Application.Image.QA
{
bool isSuccess = false;
foreach (var subjectVisitId in subjectVisitIdList)
{
var info = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).ProjectTo<DicomTrialSiteSubjectInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
var targetPath = "/IMPORT-IMAGES/" + info.TrialCode + "_" + info.SubjectCode + "_" + info.VisitName;
var path = _dicomFileStoreHelper.GetSubjectVisitPath(info.TrialId, info.SiteId, info.SubjectId, info.SubjectVisitId);
@ -1826,14 +1844,14 @@ namespace IRaCIS.Core.Application.Image.QA
u => new SubjectVisit() { ForwardState = ForwardStateEnum.Forwarded, ForwardUserId = _userInfo.Id, ForwardTime = DateTime.Now });
isSuccess = true;
}
catch (Exception e)
{
await _subjectVisitRepository.UpdatePartialFromQueryAsync(t => t.Id == subjectVisitId,
u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed });
return ResponseOutput.NotOk("转发失败 " + e.Message);
}
@ -1841,7 +1859,7 @@ namespace IRaCIS.Core.Application.Image.QA
}
await _subjectVisitRepository.SaveChangesAsync();