任务阅片修改

This commit is contained in:
2023-08-07 12:22:17 +08:00
parent 228254db09
commit 56e3bf64f2
5 changed files with 99 additions and 71 deletions
@@ -178,7 +178,7 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task<List<ReadingCustomTagDto>> GetCustomTag(GetCustomTagInDto inQuery)
{
var result= await _readingCustomTagRepository.Where(x => x.VisitTaskId == inQuery.VisitTaskId).ProjectTo<ReadingCustomTagDto>(_mapper.ConfigurationProvider).ToListAsync();
var result = await _readingCustomTagRepository.Where(x => x.VisitTaskId == inQuery.VisitTaskId).ProjectTo<ReadingCustomTagDto>(_mapper.ConfigurationProvider).ToListAsync();
return result;
}
@@ -664,7 +664,7 @@ namespace IRaCIS.Application.Services
throw new BusinessValidationFailedException(_localizer["ReadingImage_BeSigned"]);
}
if(await _visitTaskRepository.AnyAsync(x=> x.Id == visitTaskid && x.DoctorUserId != _userInfo.Id && x.SubjectCriterionClaimUserId != _userInfo.Id))
if (await _visitTaskRepository.AnyAsync(x => x.Id == visitTaskid && x.DoctorUserId != _userInfo.Id && x.SubjectCriterionClaimUserId != _userInfo.Id))
{
throw new BusinessValidationFailedException("当前任务领取人不是你,不允许提交签名");
}
@@ -2111,7 +2111,7 @@ namespace IRaCIS.Application.Services
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
public async Task<IResponseOutput> SubmitDicomVisitTask(SubmitDicomVisitTaskInDto inDto)
{
await this.SubmitTaskChangeState(inDto.VisitTaskId);
return ResponseOutput.Ok(true);
}
@@ -2209,7 +2209,7 @@ namespace IRaCIS.Application.Services
SubjectId = taskInfo.SubjectId,
TrialId = taskInfo.TrialId,
VisitTaskId = taskInfo.Id,
});
var isBaseLine = false;
@@ -2330,16 +2330,37 @@ namespace IRaCIS.Application.Services
if (task != null)
{
// 有序 自动领取该Subject
await ClaimOrCancelSubjectAsync(new ClaimSubjectDto() { IsClaim = true, SubejctId = task.SubjectId, TrialReadingCriterionId=task.TrialReadingCriterionId, VisitTaskId=task.VisitTaskId, IsInOrder = true });
await ClaimOrCancelSubjectAsync(new ClaimSubjectDto() { IsClaim = true, SubejctId = task.SubjectId, TrialReadingCriterionId = task.TrialReadingCriterionId, VisitTaskId = task.VisitTaskId, IsInOrder = true });
}
}
else
{
//无序取数据
task = await _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == trialReadingCriterionId && x.ReadingTaskState != ReadingTaskState.HaveSigned /*&& x.DoctorUserId == _userInfo.Id*/
&& x.TrialReadingCriterionId == trialReadingCriterionId
&& x.TaskState == TaskState.Effect)
.Where(x => (x.IsNeedClinicalDataSign && x.IsClinicalDataSign) || !x.IsNeedClinicalDataSign)
#region
////无序取数据
//task = await _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == trialReadingCriterionId && x.ReadingTaskState != ReadingTaskState.HaveSigned /*&& x.DoctorUserId == _userInfo.Id*/
//&& x.TrialReadingCriterionId == trialReadingCriterionId
//&& x.TaskState == TaskState.Effect)
// .Where(x => (x.IsNeedClinicalDataSign && x.IsClinicalDataSign) || !x.IsNeedClinicalDataSign)
// .Select(x => new GetReadingTaskDto()
// {
// VisitTaskId = x.Id,
// ArmEnum = x.ArmEnum,
// TaskBlindName = x.TaskBlindName,
// ReadingCategory = x.ReadingCategory,
// VisistId = x.SourceSubjectVisitId != null ? x.SourceSubjectVisitId.Value : x.ReadModule == null ? default(Guid) : x.ReadModule.SubjectVisitId,
// VisitNum = x.VisitTaskNum,
// SubjectId = x.SubjectId,
// SubjectCode = x.Subject.Code,
// TrialReadingCriterionId = x.TrialReadingCriterionId,
// }).OrderByDescending(t => t.TaskBlindName).FirstOrDefaultAsync();
#endregion
var taskQuery = await _visitTaskService.GetNotOrderReadingQueryableAsync(inDto.TrialId,(Guid) trialReadingCriterionId);
var list = taskQuery.ToList();
task = await taskQuery.OrderByDescending(t => t.TaskBlindName)
.Select(x => new GetReadingTaskDto()
{
VisitTaskId = x.Id,
@@ -2351,12 +2372,12 @@ namespace IRaCIS.Application.Services
SubjectId = x.SubjectId,
SubjectCode = x.Subject.Code,
TrialReadingCriterionId = x.TrialReadingCriterionId,
}).OrderByDescending(t => t.TaskBlindName).FirstOrDefaultAsync();
}).OrderByDescending(t => t.TaskBlindName).FirstOrDefaultAsync();
if (task != null)
{
// 无序
await ClaimOrCancelSubjectAsync(new ClaimSubjectDto() { IsClaim = true, VisitTaskId = task.VisitTaskId, IsInOrder = false });
await ClaimOrCancelSubjectAsync(new ClaimSubjectDto() { IsClaim = true, VisitTaskId = task.VisitTaskId, IsInOrder = false });
}
}
@@ -2506,14 +2527,14 @@ namespace IRaCIS.Application.Services
if (claimSubjectDto.IsClaim)
{
//每个subject 每个标准的领取放在 任务上 免得加表
if(_visitTaskRepository.Any(t=>t.Id== claimSubjectDto.SubejctId && t.TrialReadingCriterionId==claimSubjectDto.TrialReadingCriterionId
if (_visitTaskRepository.Any(t => t.Id == claimSubjectDto.SubejctId && t.TrialReadingCriterionId == claimSubjectDto.TrialReadingCriterionId
&& t.SubjectCriterionClaimUserId != _userInfo.Id && t.SubjectCriterionClaimUserId != null))
{
throw new BusinessValidationFailedException("当前任务已被其他人领取,请进行其他的阅片任务");
}
else
{
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == claimSubjectDto.SubejctId && t.TrialReadingCriterionId == claimSubjectDto.TrialReadingCriterionId , u => new VisitTask() { SubjectCriterionClaimUserId = _userInfo.Id });
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == claimSubjectDto.SubejctId && t.TrialReadingCriterionId == claimSubjectDto.TrialReadingCriterionId, u => new VisitTask() { SubjectCriterionClaimUserId = _userInfo.Id });
//列表可以看到当前阅片人是谁
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.Id == claimSubjectDto.VisitTaskId, u => new VisitTask() { DoctorUserId = _userInfo.Id });
@@ -2524,7 +2545,7 @@ namespace IRaCIS.Application.Services
// 创建一个任务
IJobDetail job = JobBuilder.Create<CancelTaskQuartZJob>()
.UsingJobData("SubjectId", claimSubjectDto.SubejctId) // 传递GUID参数给任务
.UsingJobData("TrialReadingCriterionId", claimSubjectDto.TrialReadingCriterionId)
.UsingJobData("IsInOrder", claimSubjectDto.IsInOrder)
@@ -2543,7 +2564,7 @@ namespace IRaCIS.Application.Services
}
else
{
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == claimSubjectDto.SubejctId && t.TrialReadingCriterionId == claimSubjectDto.TrialReadingCriterionId , u => new VisitTask() { SubjectCriterionClaimUserId = null });
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == claimSubjectDto.SubejctId && t.TrialReadingCriterionId == claimSubjectDto.TrialReadingCriterionId, u => new VisitTask() { SubjectCriterionClaimUserId = null });
}
}
//无序 直接用DoctorUserId 当做领取人
@@ -2563,7 +2584,7 @@ namespace IRaCIS.Application.Services
IJobDetail job = JobBuilder.Create<CancelTaskQuartZJob>()
.UsingJobData("VisitTaskId",(Guid) claimSubjectDto.VisitTaskId) // 传递GUID参数给任务
.UsingJobData("VisitTaskId", (Guid)claimSubjectDto.VisitTaskId) // 传递GUID参数给任务
.UsingJobData("IsInOrder", claimSubjectDto.IsInOrder).Build();
// 创建一个触发器,设置任务执行时间为24小时后
@@ -2590,7 +2611,7 @@ namespace IRaCIS.Application.Services
await VerifyTaskIsSign(visitTaskId);
await _visitTaskRepository.UpdatePartialFromQueryAsync(visitTaskId, x => new VisitTask()
{
DoctorUserId=_userInfo.Id,
DoctorUserId = _userInfo.Id,
ReadingTaskState = ReadingTaskState.HaveSigned,
SignTime = DateTime.Now,
});