修改提示
parent
e395e105cb
commit
0ca89786fd
|
@ -32,6 +32,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
|
||||
private readonly DicomFileStoreHelper _dicomFileStoreHelper;
|
||||
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
||||
private readonly IRepository<QCChallenge> _qcChallengeRepository;
|
||||
private readonly IRepository<DicomStudy> _dicomStudyRepository;
|
||||
private readonly IRepository<Dictionary> _dictionaryrepository;
|
||||
private readonly IRepository<Trial> _trialRepository;
|
||||
|
@ -43,16 +44,18 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
private readonly AsyncLock _mutex = new AsyncLock();
|
||||
|
||||
public QCOperationService(DicomFileStoreHelper dicomFileStoreHelper, IRepository<SubjectVisit> subjectVisitRepository,
|
||||
IRepository<QCChallenge> qcChallengeRepository,
|
||||
IRepository<Trial> trialRepository,
|
||||
IMediator mediator,
|
||||
IInspectionService inspectionService,
|
||||
IDictionaryService dictionaryService,
|
||||
IRepository<DicomStudy> dicomStudyRepository,
|
||||
IRepository<Dictionary> dictionaryrepository
|
||||
IRepository<Dictionary> dictionaryrepository
|
||||
)
|
||||
{
|
||||
_dicomFileStoreHelper = dicomFileStoreHelper;
|
||||
_subjectVisitRepository = subjectVisitRepository;
|
||||
_qcChallengeRepository = qcChallengeRepository;
|
||||
_dicomStudyRepository = dicomStudyRepository;
|
||||
this._dictionaryrepository = dictionaryrepository;
|
||||
_mediator = mediator;
|
||||
|
@ -69,7 +72,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
{
|
||||
if (!await _repository.AnyAsync<TrialQCQuestionAnswer>(t => t.SubjectVisitId == subjectVisitId && t.CurrentQCEnum == currentQCType))
|
||||
{
|
||||
return ResponseOutput.NotOk("必须填写审核问题,并保存,否则不允许添加质疑");
|
||||
return ResponseOutput.NotOk("请先核查图像,保存审核问题后,再发质疑。");
|
||||
}
|
||||
return ResponseOutput.Ok();
|
||||
|
||||
|
@ -91,23 +94,21 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
|
||||
if (qaQuestionCommand.Id == null)
|
||||
{
|
||||
if (await _repository.AnyAsync<QCChallenge>(t => t.IsClosed == false && t.SubjectVisitId == qaQuestionCommand.SubjectVisitId && t.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))
|
||||
if (await _qcChallengeRepository.AnyAsync(t => t.IsClosed == false && t.SubjectVisitId == qaQuestionCommand.SubjectVisitId && t.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))
|
||||
{
|
||||
throw new BusinessValidationFailedException("当前访视有未关闭的 同意CRC上传的质疑,不允许再次添加质疑");
|
||||
|
||||
}
|
||||
var trialConfig = _repository.Where<Trial>(t => t.Id == trialId).Select(t => new { TrialId = t.Id, t.QCProcessEnum, t.IsImageConsistencyVerification }).FirstOrDefault();
|
||||
|
||||
var trialConfig = (await _trialRepository.Where(t => t.Id == trialId).Select(t => new { TrialId = t.Id, t.QCProcessEnum, t.IsImageConsistencyVerification }).FirstOrDefaultAsync()).IfNullThrowException();
|
||||
|
||||
|
||||
//获取编号
|
||||
var code = _repository.Where<QCChallenge>(t => t.TrialId == trialId).Select(t => t.ChallengeCode).DefaultIfEmpty().Max();
|
||||
if (trialConfig == null)
|
||||
{
|
||||
throw new BusinessValidationFailedException("项目不存在");
|
||||
}
|
||||
|
||||
using (await _mutex.LockAsync())
|
||||
{
|
||||
//获取编号
|
||||
var code = _qcChallengeRepository.Where(t => t.TrialId == trialId).Select(t => t.ChallengeCode).DefaultIfEmpty().Max();
|
||||
|
||||
var qcChallenge = _mapper.Map<QCChallenge>(qaQuestionCommand);
|
||||
|
||||
qcChallenge.QCProcessEnum = trialConfig.QCProcessEnum;
|
||||
|
@ -117,7 +118,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
qcChallenge.ChallengeCode = code + 1;
|
||||
qcChallenge.UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt;
|
||||
|
||||
qcChallenge = await _repository.AddAsync(qcChallenge, true);
|
||||
qcChallenge = await _qcChallengeRepository.AddAsync(qcChallenge, true);
|
||||
|
||||
return qcChallenge;
|
||||
}
|
||||
|
@ -144,19 +145,22 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
/// <returns></returns>
|
||||
[HttpPost("{trialId:guid}/{qcChallengeId:guid}/{subjectVisitId:guid}/{closeEnum}/{closeReason}")]
|
||||
[TypeFilter(typeof(TrialResourceFilter))]
|
||||
[UnitOfWork]
|
||||
//[Authorize(Policy = "ImageQCPolicy")]
|
||||
public async Task<IResponseOutput> CloseQCChallenge(Guid qcChallengeId, Guid subjectVisitId, [FromRoute] QCChallengeCloseEnum closeEnum, [FromRoute] string closeReason)
|
||||
{
|
||||
|
||||
var dbQCChallenge = await _repository.FirstOrDefaultAsync<QCChallenge>(t => t.Id == qcChallengeId);
|
||||
var dbQCChallenge = (await _qcChallengeRepository.FirstOrDefaultAsync(t => t.Id == qcChallengeId)).IfNullThrowException();
|
||||
|
||||
if (dbQCChallenge == null) return Null404NotFound(dbQCChallenge);
|
||||
|
||||
if (dbQCChallenge.ReuploadEnum == QCChanllengeReuploadEnum.CRCRequestReupload || dbQCChallenge.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload)
|
||||
{
|
||||
return ResponseOutput.NotOk("CRC申请重传的/QC同意重传的质疑,在CRC设置重传完成前不允许关闭质疑");
|
||||
throw new BusinessValidationFailedException("CRC申请重传的/QC同意重传的质疑,在CRC设置重传完成前不允许关闭质疑");
|
||||
}
|
||||
|
||||
|
||||
#region 之前
|
||||
|
||||
dbQCChallenge.CloseResonEnum = closeEnum;
|
||||
|
||||
dbQCChallenge.IsClosed = true;
|
||||
|
@ -172,10 +176,36 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
TalkContent = "关闭原因: " + closeReason
|
||||
});
|
||||
|
||||
var success = await _repository.SaveChangesAsync();
|
||||
var success = await _qcChallengeRepository.SaveChangesAsync();
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
return ResponseOutput.Result(success);
|
||||
|
||||
#region 对话实体不会加入
|
||||
|
||||
//dbQCChallenge.DialogList.Add(new QCChallengeDialog()
|
||||
//{
|
||||
// SubjectVisitId = dbQCChallenge.SubjectVisitId,
|
||||
// UserTypeEnum = (UserTypeEnum)_userInfo.UserTypeEnumInt,
|
||||
// QCChallengeId = dbQCChallenge.Id,
|
||||
// TalkContent = "关闭原因: " + closeReason
|
||||
//});
|
||||
|
||||
|
||||
|
||||
//var success = await _qcChallengeRepository.PartialUpdateAsync(dbQCChallenge, u => new QCChallenge()
|
||||
//{
|
||||
// CloseResonEnum = closeEnum,
|
||||
|
||||
// IsClosed = true,
|
||||
|
||||
// ClosedTime = DateTime.Now,
|
||||
|
||||
//}, true);
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
|
||||
|
@ -198,11 +228,11 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
ResponseOutput.NotOk("this QC Challenge Has been replied ");
|
||||
}
|
||||
|
||||
var qaRecord = await _repository.FirstOrDefaultAsync<QCChallenge>(t => t.Id == qcChallengeId);
|
||||
var qaRecord = await _qcChallengeRepository.FirstOrDefaultAsync(t => t.Id == qcChallengeId);
|
||||
|
||||
if (qaRecord == null) return Null404NotFound(qaRecord);
|
||||
|
||||
await _repository.DeleteAsync(qaRecord);
|
||||
await _qcChallengeRepository.DeleteAsync(qaRecord);
|
||||
|
||||
|
||||
var success1 = await _repository.SaveChangesAsync();
|
||||
|
|
|
@ -312,15 +312,8 @@ namespace IRaCIS.Core.Infra.EFCore
|
|||
_dbSet.Remove(entity);
|
||||
|
||||
|
||||
return await SaveChangesAsync(autoSave);
|
||||
|
||||
if (autoSave)
|
||||
{
|
||||
return await SaveChangesAsync(cancellationToken);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -751,8 +744,8 @@ namespace IRaCIS.Core.Infra.EFCore
|
|||
{
|
||||
TrialId = data.Id,
|
||||
SubjectId = data.Id,
|
||||
TrialName=data.ExperimentName,
|
||||
ResearchProgramNo=data.ResearchProgramNo,
|
||||
TrialName = data.ExperimentName,
|
||||
ResearchProgramNo = data.ResearchProgramNo,
|
||||
IsSign = false,
|
||||
CreateTime = createtime,
|
||||
Identification = "Init|Trial|Status|Trial Setting-Infomation", // 初始化项目
|
||||
|
@ -815,7 +808,7 @@ namespace IRaCIS.Core.Infra.EFCore
|
|||
else if (typeof(TEntity) == typeof(NoneDicomStudyFile))
|
||||
{
|
||||
NoneDicomStudyFile data = entity as NoneDicomStudyFile;
|
||||
var subjectVisitId =await _dbContext.NoneDicomStudy.Where(x => x.Id == data.NoneDicomStudyId).Select(x => x.SubjectVisitId).FirstOrDefaultAsync();
|
||||
var subjectVisitId = await _dbContext.NoneDicomStudy.Where(x => x.Id == data.NoneDicomStudyId).Select(x => x.SubjectVisitId).FirstOrDefaultAsync();
|
||||
await UpdateSubjectVisit(subjectVisitId, SubmitStateEnum.ToSubmit, "上传非Dicom影像");
|
||||
}
|
||||
|
||||
|
@ -837,7 +830,7 @@ namespace IRaCIS.Core.Infra.EFCore
|
|||
SubjectId = subjectvisit.SubjectId,
|
||||
SubjectVisitId = subjectvisit.Id,
|
||||
Reason = reason,
|
||||
CreateTime= createtime.AddMilliseconds(100),
|
||||
CreateTime = createtime.AddMilliseconds(100),
|
||||
JsonDetail = subjectvisit.ToJcJson(),
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue