自动领取下一个质控
parent
dc63f1c735
commit
3cd37c2be6
|
@ -10759,6 +10759,20 @@
|
||||||
<member name="M:IRaCIS.Core.Application.Image.QA.QCOperationService.ReplaceQCTaskActionUser(System.Guid,System.Guid)">
|
<member name="M:IRaCIS.Core.Application.Image.QA.QCOperationService.ReplaceQCTaskActionUser(System.Guid,System.Guid)">
|
||||||
<summary>替换当前领取人 </summary>
|
<summary>替换当前领取人 </summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Image.QA.QCOperationService.CollectNextIQCQuality(IRaCIS.Core.Application.Contracts.GetNextIQCQualityInDto)">
|
||||||
|
<summary>
|
||||||
|
领取下一个质控任务
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Image.QA.QCOperationService.GetNextIQCQuality(IRaCIS.Core.Application.Contracts.GetNextIQCQualityInDto)">
|
||||||
|
<summary>
|
||||||
|
获取下一个质控任务
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Image.QA.QCOperationService.ObtainOrCancelQCTask(System.Guid,System.Guid,System.Boolean)">
|
<member name="M:IRaCIS.Core.Application.Image.QA.QCOperationService.ObtainOrCancelQCTask(System.Guid,System.Guid,System.Boolean)">
|
||||||
<summary>
|
<summary>
|
||||||
手动领取 或者取消 QC任务
|
手动领取 或者取消 QC任务
|
||||||
|
|
|
@ -60,6 +60,20 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
public Guid? HandleUserId { get; set; }
|
public Guid? HandleUserId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class GetNextIQCQualityInDto
|
||||||
|
{
|
||||||
|
[NotDefault]
|
||||||
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
public Guid SubjectId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GetNextIQCQualityOutDto
|
||||||
|
{
|
||||||
|
public Guid? SubjectId { get; set; }
|
||||||
|
|
||||||
|
public Guid? VisitId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public class CRCRequestToQCCommand
|
public class CRCRequestToQCCommand
|
||||||
{
|
{
|
||||||
|
|
|
@ -278,7 +278,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
//Expression<Func<DicomStudy, bool>> studyLambda = x => x.TrialId == visitSearchDTO.TrialId;
|
//Expression<Func<DicomStudy, bool>> studyLambda = x => x.TrialId == visitSearchDTO.TrialId;
|
||||||
////Expression<Func<VisitStage, bool>> visitPlanLambda = x => x.TrialId == subjectVisitSearch.TrialId;
|
////Expression<Func<VisitStage, bool>> visitPlanLambda = x => x.TrialId == subjectVisitSearch.TrialId;
|
||||||
|
|
||||||
//if (visitSearchDTO.SiteId != null && visitSearchDTO.SiteId != Guid.Empty)
|
//if (visitSearchDTO.SiteId != null && visitSearchDTO.SiteId != Guid.Empty)shiwu
|
||||||
//{
|
//{
|
||||||
// subjectVisitLambda = subjectVisitLambda.And(t => t.SiteId == visitSearchDTO.SiteId.Value);
|
// subjectVisitLambda = subjectVisitLambda.And(t => t.SiteId == visitSearchDTO.SiteId.Value);
|
||||||
// studyLambda = studyLambda.And(t => t.SiteId == visitSearchDTO.SiteId.Value);
|
// studyLambda = studyLambda.And(t => t.SiteId == visitSearchDTO.SiteId.Value);
|
||||||
|
|
|
@ -878,6 +878,108 @@ namespace IRaCIS.Core.Application.Image.QA
|
||||||
return ResponseOutput.Result(success);
|
return ResponseOutput.Result(success);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 领取下一个质控任务
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<GetNextIQCQualityOutDto> CollectNextIQCQuality(GetNextIQCQualityInDto inDto)
|
||||||
|
{
|
||||||
|
var nextIQCQuality = await this.GetNextIQCQuality(inDto);
|
||||||
|
|
||||||
|
if (nextIQCQuality.VisitId != null)
|
||||||
|
{
|
||||||
|
var visit = await _subjectVisitRepository.Where(x => x.Id == nextIQCQuality.VisitId).FirstOrDefaultAsync();
|
||||||
|
if (!visit.IsTake)
|
||||||
|
{
|
||||||
|
await ObtainOrCancelQCTask(inDto.TrialId, nextIQCQuality.VisitId.Value, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return nextIQCQuality;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取下一个质控任务
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<GetNextIQCQualityOutDto> GetNextIQCQuality(GetNextIQCQualityInDto inDto)
|
||||||
|
{
|
||||||
|
var trialConfig = await _trialRepository
|
||||||
|
.Select(t => new { TrialId = t.Id, t.QCProcessEnum, t.IsImageConsistencyVerification })
|
||||||
|
.FirstOrDefaultAsync(t => t.TrialId == inDto.TrialId)
|
||||||
|
.IfNullThrowException();
|
||||||
|
|
||||||
|
SubjectVisit? subjectVisit = null;
|
||||||
|
List<SubjectVisit>? visitList = null;
|
||||||
|
switch (trialConfig.QCProcessEnum)
|
||||||
|
{
|
||||||
|
case TrialQCProcess.NotAudit:
|
||||||
|
return new GetNextIQCQualityOutDto() { };
|
||||||
|
break;
|
||||||
|
case TrialQCProcess.SingleAudit:
|
||||||
|
visitList = await _subjectVisitRepository.Where(x => x.TrialId == inDto.TrialId && (x.CurrentActionUserId == _userInfo.Id || (x.AuditState != AuditStateEnum.PrimaryQCPassed &&!x.IsTake))).Include(x=>x.Subject).ToListAsync();
|
||||||
|
|
||||||
|
subjectVisit = visitList.Where(x => x.SubjectId == inDto.SubjectId).OrderBy(x=>x.VisitNum).FirstOrDefault();
|
||||||
|
if(subjectVisit!=null)
|
||||||
|
{
|
||||||
|
return new GetNextIQCQualityOutDto() {
|
||||||
|
SubjectId= subjectVisit.SubjectId,
|
||||||
|
VisitId= subjectVisit.Id
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
subjectVisit= visitList.OrderBy(x => x.Subject.Code).ThenBy(x=>x.VisitNum).FirstOrDefault();
|
||||||
|
if (subjectVisit != null)
|
||||||
|
{
|
||||||
|
return new GetNextIQCQualityOutDto()
|
||||||
|
{
|
||||||
|
SubjectId = subjectVisit.SubjectId,
|
||||||
|
VisitId = subjectVisit.Id
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return new GetNextIQCQualityOutDto() { };
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TrialQCProcess.DoubleAudit:
|
||||||
|
|
||||||
|
visitList = await _subjectVisitRepository.Where(x => x.TrialId == inDto.TrialId && (x.CurrentActionUserId == _userInfo.Id || (x.AuditState != AuditStateEnum.QCPassed))).Include(x => x.Subject).ToListAsync();
|
||||||
|
if (subjectVisit != null)
|
||||||
|
{
|
||||||
|
return new GetNextIQCQualityOutDto()
|
||||||
|
{
|
||||||
|
SubjectId = subjectVisit.SubjectId,
|
||||||
|
VisitId = subjectVisit.Id
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
subjectVisit = visitList.OrderBy(x => x.Subject.Code).ThenBy(x => x.VisitNum).FirstOrDefault();
|
||||||
|
if (subjectVisit != null)
|
||||||
|
{
|
||||||
|
return new GetNextIQCQualityOutDto()
|
||||||
|
{
|
||||||
|
SubjectId = subjectVisit.SubjectId,
|
||||||
|
VisitId = subjectVisit.Id
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return new GetNextIQCQualityOutDto() { };
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return new GetNextIQCQualityOutDto() { };
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 手动领取 或者取消 QC任务
|
/// 手动领取 或者取消 QC任务
|
||||||
|
|
Loading…
Reference in New Issue