修改领取逻辑
parent
89a96fd7d6
commit
963f093ce4
|
@ -327,7 +327,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||
[UnitOfWork]
|
||||
public async Task<IResponseOutput> UpdateModality(DataInspectionDto<UpdateModalityDto> opt)
|
||||
{
|
||||
var fun =await _qCOperationService.UpdateModality(opt.OptCommand.id, opt.OptCommand.type, opt.OptCommand.modality, opt.OptCommand.bodyPart);
|
||||
var fun = await _qCOperationService.UpdateModality(opt.OptCommand.id, (Guid)opt.AuditInfo.SubjectVisitId, opt.OptCommand.type, opt.OptCommand.modality, opt.OptCommand.bodyPart);
|
||||
return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, null, fun);
|
||||
}
|
||||
|
||||
|
@ -825,7 +825,8 @@ namespace IRaCIS.Core.API.Controllers
|
|||
return ResponseOutput.NotOk(data.ErrorMessage);
|
||||
}
|
||||
var fun = _trialConfigService.TrialConfigSignatureConfirm;
|
||||
return await _inspectionService.Enforcement(new SignConfirmDTO() {
|
||||
return await _inspectionService.Enforcement(new SignConfirmDTO()
|
||||
{
|
||||
TrialId = opt.OptCommand.TrialId,
|
||||
SignCode = opt.OptCommand.SignCode
|
||||
}, opt.AuditInfo, opt.SignInfo, fun);
|
||||
|
|
|
@ -1551,7 +1551,7 @@
|
|||
<param name="state"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Image.QA.QCOperationService.UpdateModality(System.Guid,System.Int32,System.String,System.String)">
|
||||
<member name="M:IRaCIS.Core.Application.Image.QA.QCOperationService.UpdateModality(System.Guid,System.Guid,System.Int32,System.String,System.String)">
|
||||
<summary>
|
||||
type 1 :study 2: series 3:非dicom QC修改检查部位和 拍片类型
|
||||
</summary>
|
||||
|
|
|
@ -34,7 +34,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
Task<IResponseOutput> SetReuploadFinished(CRCReuploadFinishedCommand cRCReuploadFinishedCommand);
|
||||
Task<IResponseOutput> SetSeriesState(Guid subjectVisitId, Guid studyId, Guid seriesId, int state);
|
||||
Task<IResponseOutput> SetVisitUrgent(Guid trialId, Guid subjectVisitId, bool setOrCancel);
|
||||
Task<IResponseOutput> UpdateModality(Guid id, int type, [FromQuery] string modality, [FromQuery] string bodyPart);
|
||||
Task<IResponseOutput> UpdateModality(Guid id, Guid subjectVisitId, int type, [FromQuery] string modality, [FromQuery] string bodyPart);
|
||||
Task<IResponseOutput> UpdateSubjectAndSVInfo(UploadSubjectAndVisitCommand command);
|
||||
Task<IResponseOutput> UploadVisitCheckExcel(IFormFile file, Guid trialId);
|
||||
Task<IResponseOutput> VerifyCanQCPassedOrFailed(Guid subjectVisitId);
|
||||
|
|
|
@ -70,6 +70,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
[TypeFilter(typeof(TrialResourceFilter))]
|
||||
public async Task<IResponseOutput> VerifyQCCanAddChallenge(Guid subjectVisitId, [FromRoute] CurrentQC currentQCType)
|
||||
{
|
||||
VerifyIsCanQC(null, subjectVisitId);
|
||||
if (!await _repository.AnyAsync<TrialQCQuestionAnswer>(t => t.SubjectVisitId == subjectVisitId && t.CurrentQCEnum == currentQCType))
|
||||
{
|
||||
return ResponseOutput.NotOk("请先核查图像,保存审核问题后,再发质疑。");
|
||||
|
@ -91,6 +92,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
[Authorize(Policy = "ImageQCPolicy")]
|
||||
public async Task<QCChallenge> AddOrUpdateQCChallenge(QCChallengeCommand qaQuestionCommand, Guid trialId, [FromRoute] TrialQCProcess trialQCProcess, [FromRoute] CurrentQC currentQCType)
|
||||
{
|
||||
VerifyIsCanQC(null, qaQuestionCommand.SubjectVisitId);
|
||||
|
||||
if (qaQuestionCommand.Id == null)
|
||||
{
|
||||
|
@ -288,17 +290,20 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
[Authorize(Policy = "ImageCheckPolicy")]
|
||||
public async Task<IResponseOutput<CheckChallengeDialog>> AddCheckChallengeReply(CheckChallengeDialogCommand checkDialogCommand)
|
||||
{
|
||||
var qaReply = _mapper.Map<CheckChallengeDialog>(checkDialogCommand);
|
||||
|
||||
|
||||
qaReply.UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt;
|
||||
|
||||
await _repository.AddAsync(qaReply);
|
||||
|
||||
//修改一致性核查 质疑状态
|
||||
var sv = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == checkDialogCommand.SubjectVisitId);
|
||||
|
||||
|
||||
|
||||
var qaReply = _mapper.Map<CheckChallengeDialog>(checkDialogCommand);
|
||||
|
||||
qaReply.UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt;
|
||||
|
||||
await _repository.AddAsync(qaReply);
|
||||
|
||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator)
|
||||
{
|
||||
sv.CheckChallengeState = CheckChanllengeTypeEnum.CRCWaitPMReply;
|
||||
|
@ -327,9 +332,9 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
public async Task<IResponseOutput> CloseCheckChallenge(CloseCheckChallengeDto input)
|
||||
{
|
||||
|
||||
var sv = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == input.subjectVisitId);
|
||||
var sv = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == input.subjectVisitId)).IfNullThrowException();
|
||||
|
||||
|
||||
if (sv == null) return Null404NotFound(sv);
|
||||
|
||||
if (sv.RequestBackState == RequestBackStateEnum.PM_AgressBack)
|
||||
{
|
||||
|
@ -689,12 +694,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
public async Task<IResponseOutput> AddOrUpdateQCQuestionAnswerList(QCQuestionAnswerCommand[] qcQuestionAnswerCommands, Guid trialId, Guid subjectVisitId, [FromRoute] TrialQCProcess trialQCProcess, [FromRoute] CurrentQC currentQCType)
|
||||
{
|
||||
//验证是否能操作
|
||||
var verifyResult = await VerifyQCCanOpt(subjectVisitId);
|
||||
|
||||
if (!verifyResult.IsSuccess)
|
||||
{
|
||||
return verifyResult;
|
||||
}
|
||||
VerifyIsCanQC(null, subjectVisitId);
|
||||
|
||||
//更新
|
||||
if (qcQuestionAnswerCommands.Any(t => t.Id != null))
|
||||
|
@ -763,13 +763,9 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
[TypeFilter(typeof(TrialResourceFilter))]
|
||||
public async Task<IResponseOutput> SetSeriesState(Guid subjectVisitId, Guid studyId, Guid seriesId, int state)
|
||||
{
|
||||
//验证是否能操作
|
||||
var verifyResult = await VerifyQCCanOpt(subjectVisitId);
|
||||
|
||||
if (!verifyResult.IsSuccess)
|
||||
{
|
||||
return verifyResult;
|
||||
}
|
||||
VerifyIsCanQC(null, subjectVisitId);
|
||||
|
||||
|
||||
var series = await _repository.Where<DicomSeries>(t => t.Id == seriesId, true).IgnoreQueryFilters().FirstOrDefaultAsync();
|
||||
|
||||
|
@ -838,9 +834,9 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
/// <param name="modality"></param>
|
||||
/// <param name="bodyPart"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPut("{trialId:guid}/{id:guid}/{type:int}")]
|
||||
[HttpPut("{trialId:guid}/{subjectVisitId:guid}/{id:guid}/{type:int}")]
|
||||
[TypeFilter(typeof(TrialResourceFilter))]
|
||||
public async Task<IResponseOutput> UpdateModality(Guid id, int type, [FromQuery] string modality, [FromQuery] string bodyPart)
|
||||
public async Task<IResponseOutput> UpdateModality(Guid id, Guid subjectVisitId, int type, [FromQuery] string modality, [FromQuery] string bodyPart)
|
||||
{
|
||||
|
||||
var DicomSeriesdata = await _repository.GetQueryable<DicomSeries>().Where(x => x.StudyId == id).ToListAsync();
|
||||
|
@ -934,6 +930,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
[HttpGet("{subjectVisitId:guid}")]
|
||||
public async Task<IResponseOutput> VerifyCanQCPassedOrFailed(Guid subjectVisitId)
|
||||
{
|
||||
VerifyIsCanQC(null, subjectVisitId);
|
||||
|
||||
if (await _repository.AnyAsync<QCChallenge>(t => t.SubjectVisitId == subjectVisitId && t.IsClosed == false))
|
||||
{
|
||||
|
@ -957,6 +954,8 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
[UnitOfWork]
|
||||
public async Task<IResponseOutput> DeleteStudyList(Guid[] ids, Guid subjectVisitId, Guid trialId)
|
||||
{
|
||||
|
||||
|
||||
//提交了 但是IQC同意的时候 是可以删除的
|
||||
if (await _subjectVisitRepository.AnyAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
|
||||
(!t.QCChallengeList.Any(u => u.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))))
|
||||
|
@ -1078,6 +1077,23 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
#endregion
|
||||
|
||||
|
||||
public void VerifyIsCanQC(SubjectVisit? subjectVisit, Guid? sujectVisitId = null)
|
||||
{
|
||||
if (sujectVisitId != null)
|
||||
{
|
||||
subjectVisit = _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == sujectVisitId).Result.IfNullThrowException();
|
||||
}
|
||||
|
||||
if (subjectVisit.PreliminaryAuditUserId != null)
|
||||
{
|
||||
throw new BusinessValidationFailedException("当前访视已审核通过,不允许操作");
|
||||
}
|
||||
|
||||
if (subjectVisit.CurrentActionUserId != _userInfo.Id)
|
||||
{
|
||||
throw new BusinessValidationFailedException("当前领取人已不是自己,不允许操作");
|
||||
}
|
||||
}
|
||||
|
||||
#region 临床数据签名 领取、 设置紧急、RequestToQC QC通过、不通过
|
||||
|
||||
|
@ -1094,9 +1110,9 @@ 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);
|
||||
var dbSubjectVisit = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId)).IfNullThrowException();
|
||||
|
||||
if (dbSubjectVisit == null) return Null404NotFound(dbSubjectVisit);
|
||||
VerifyIsCanQC(dbSubjectVisit);
|
||||
|
||||
var trialConfig = await _trialRepository
|
||||
.Select(t => new { TrialId = t.Id, t.QCProcessEnum, t.IsImageConsistencyVerification })
|
||||
|
|
Loading…
Reference in New Issue