修改附加评估提交
This commit is contained in:
+1
-1
@@ -35,7 +35,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public List<EvaluationInfo> FinalEvaluationList { get; set; }=new List<EvaluationInfo>();
|
||||
|
||||
|
||||
public List<EvaluationInfo> ReadingEvaluationList { get; set; }
|
||||
public List<EvaluationInfo> ReadingEvaluationList { get; set; }=new List<EvaluationInfo>();
|
||||
}
|
||||
|
||||
|
||||
|
||||
+20
@@ -19,7 +19,11 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public DateTime? UpdateTime { get; set; }
|
||||
|
||||
public Guid? Id { get; set; }
|
||||
|
||||
public Guid TrialId { get; set; }
|
||||
public Guid SubjectId { get; set; }
|
||||
|
||||
public string SubjectCode { get; set; }
|
||||
public Guid TrialReadingCriterionId { get; set; }
|
||||
public Guid SubjectVisitId { get; set; }
|
||||
|
||||
@@ -78,6 +82,22 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public List<Guid> SubjectVisitIdList { get; set; }=new List<Guid>();
|
||||
}
|
||||
|
||||
|
||||
public class CriteriaVisitBackCommand
|
||||
{
|
||||
[NotDefault]
|
||||
public Guid TrialReadingCriterionId { get; set; }
|
||||
|
||||
[NotDefault]
|
||||
public Guid TrialId { get; set; }
|
||||
|
||||
[NotDefault]
|
||||
public Guid SubjectId { get; set; }
|
||||
|
||||
[NotDefault]
|
||||
public Guid SubjectVisitId { get; set; }
|
||||
}
|
||||
|
||||
public class VisitStudyAndSeriesQuery
|
||||
{
|
||||
[NotDefault]
|
||||
|
||||
+177
-70
@@ -18,6 +18,7 @@ using Panda.DynamicWebApi.Attributes;
|
||||
using IRaCIS.Core.Domain.Share.Reading;
|
||||
using System.Runtime.InteropServices;
|
||||
using DocumentFormat.OpenXml.Bibliography;
|
||||
using System.Linq.Expressions;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
@@ -38,12 +39,15 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
private readonly IRepository<ReadingQuestionTrial> _trialReadingQuestionRepository;
|
||||
|
||||
private readonly IRepository<VisitTask> _visitTaskRepository;
|
||||
|
||||
private readonly IVisitTaskHelpeService _IVisitTaskHelpeService;
|
||||
private readonly IRepository<TaskMedicalReview> _taskMedicalReviewRepository;
|
||||
|
||||
public SubjectCriteriaEvaluationService(IRepository<SubjectCriteriaEvaluation> subjectCriteriaEvaluationRepository, IRepository<Subject> subjectRepository,
|
||||
IRepository<SubjectCriteriaEvaluationVisitFilter> subjectCriteriaEvaluationVisitFilterRepository, IRepository<SubjectVisit> subjectVisitRepository,
|
||||
IRepository<SubjectCriteriaEvaluationVisitStudyFilter> subjectCriteriaEvaluationVisitStudyFilterRepository,
|
||||
IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IVisitTaskHelpeService IVisitTaskHelpeService, IRepository<ReadingQuestionTrial> trialReadingQuestionRepository)
|
||||
IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IVisitTaskHelpeService IVisitTaskHelpeService, IRepository<ReadingQuestionTrial> trialReadingQuestionRepository, IRepository<VisitTask> visitTaskRepository, IRepository<TaskMedicalReview> taskMedicalReviewRepository)
|
||||
{
|
||||
_subjectCriteriaEvaluationRepository = subjectCriteriaEvaluationRepository;
|
||||
_subjectRepository = subjectRepository;
|
||||
@@ -55,7 +59,8 @@ namespace IRaCIS.Core.Application.Service
|
||||
_IVisitTaskHelpeService = IVisitTaskHelpeService;
|
||||
|
||||
_trialReadingQuestionRepository = trialReadingQuestionRepository;
|
||||
|
||||
_visitTaskRepository = visitTaskRepository;
|
||||
_taskMedicalReviewRepository = taskMedicalReviewRepository;
|
||||
}
|
||||
|
||||
|
||||
@@ -65,14 +70,14 @@ namespace IRaCIS.Core.Application.Service
|
||||
/// <param name="inQuery"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<(PageOutput<SubjectCriteriaEvaluationView>,object)> GetSubjectCriteriaEvaluationList(SubjectCriteriaEvaluationQuery inQuery)
|
||||
public async Task<(PageOutput<SubjectCriteriaEvaluationView>, object)> GetSubjectCriteriaEvaluationList(SubjectCriteriaEvaluationQuery inQuery)
|
||||
{
|
||||
|
||||
var trialReadingCritionList = _trialReadingCriterionRepository.Where(t => t.TrialId == inQuery.TrialId).ToList();
|
||||
|
||||
var resultTrialReadingCriterionId = Guid.Empty;
|
||||
|
||||
var resultTrialReadingCriterion = trialReadingCritionList.First();
|
||||
var resultTrialReadingCriterion = trialReadingCritionList.First();
|
||||
|
||||
var curentCriterionType = CriterionType.NoCriterion;
|
||||
|
||||
@@ -89,15 +94,15 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
var addtionalQustionInfoList = _trialReadingQuestionRepository.Where(t => t.ReadingQuestionCriterionTrialId == resultTrialReadingCriterionId && t.IsAdditional == true && t.Type != "group").IgnoreQueryFilters().Select(t => new
|
||||
{
|
||||
QuestionId= t.Id,
|
||||
QuestionId = t.Id,
|
||||
t.QuestionEnName,
|
||||
t.QuestionName
|
||||
}).ToList();
|
||||
|
||||
var questionIdList= addtionalQustionInfoList.Select(t=>t.QuestionId).ToList();
|
||||
var questionIdList = addtionalQustionInfoList.Select(t => t.QuestionId).ToList();
|
||||
|
||||
|
||||
var subjectCriteriaEvaluationQueryable = from subject in _subjectRepository.Where(t=>t.TrialId==inQuery.TrialId)
|
||||
var subjectCriteriaEvaluationQueryable = from subject in _subjectRepository.Where(t => t.TrialId == inQuery.TrialId)
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.SubjectCode), t => t.Code.Contains(inQuery.SubjectCode))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.TrialSiteCode), t => t.TrialSite.TrialSiteCode.Contains(inQuery.TrialSiteCode))
|
||||
.WhereIf(inQuery.SubjectStatus != null, t => t.Status == inQuery.SubjectStatus)
|
||||
@@ -120,25 +125,18 @@ namespace IRaCIS.Core.Application.Service
|
||||
IsJoinEvaluation = subjectCriteriaEvaluation.IsJoinEvaluation,
|
||||
|
||||
|
||||
ReadingEvaluationList= subject.ReadingTaskQuestionAnswerList
|
||||
.Where(t=>t.ReadingQuestionCriterionTrialId == resultTrialReadingCriterionId &&
|
||||
ReadingEvaluationList = subject.ReadingTaskQuestionAnswerList
|
||||
.Where(t => t.ReadingQuestionCriterionTrialId == resultTrialReadingCriterionId &&
|
||||
questionIdList.Contains(t.ReadingQuestionTrialId)
|
||||
&& t.VisitTask.TaskState==TaskState.Effect)
|
||||
.Select(u=>new EvaluationInfo()
|
||||
&& t.VisitTask.TaskState == TaskState.Effect)
|
||||
.Select(u => new EvaluationInfo()
|
||||
{
|
||||
QuestionId=u.ReadingQuestionTrialId,
|
||||
Answer=u.Answer,
|
||||
|
||||
FinalTranslateDictionaryCode=u.ReadingQuestionTrial.DictionaryCode
|
||||
QuestionId = u.ReadingQuestionTrialId,
|
||||
Answer = u.Answer,
|
||||
|
||||
FinalTranslateDictionaryCode = u.ReadingQuestionTrial.DictionaryCode
|
||||
}).ToList()
|
||||
|
||||
//EvaluationList=subject
|
||||
//.SubjectAdditionalEvaluationResult
|
||||
//.Where(t=>t.IsFinalResult && t.TrialReadingCriterionId==resultTrialReadingCriterionId)
|
||||
//.Select(u=>new EvaluationInfo()
|
||||
//{ Answer=u.Answer,FinalTranslateDictionaryCode=u.FinalTranslateDictionaryCode,QuestioName=u.TrialReadingQuestion .QuestionName,QuestioNameEn=u.TrialReadingQuestion.QuestionEnName}).ToList()
|
||||
|
||||
|
||||
};
|
||||
|
||||
var pageList = await subjectCriteriaEvaluationQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField == string.Empty ? nameof(SubjectCriteriaEvaluationView.SubjectCode) : inQuery.SortField, inQuery.Asc);
|
||||
@@ -153,33 +151,39 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
if (resultTrialReadingCriterion.ReadingType == ReadingMethod.Double)
|
||||
{
|
||||
if (item.ReadingEvaluationList.Count==2)
|
||||
if (item.ReadingEvaluationList.Count == 2)
|
||||
{
|
||||
if (item.ReadingEvaluationList.All(t => t.Answer == 1.ToString()))
|
||||
{
|
||||
item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId=item.ReadingEvaluationList.First().QuestionId, Answer = ((int)BrainMetastasisResult.Yes).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult)
|
||||
});
|
||||
item.FinalEvaluationList.Add(new EvaluationInfo()
|
||||
{
|
||||
QuestionId = item.ReadingEvaluationList.First().QuestionId,
|
||||
Answer = ((int)BrainMetastasisResult.Yes).ToString(),
|
||||
FinalTranslateDictionaryCode = nameof(BrainMetastasisResult)
|
||||
});
|
||||
}
|
||||
else if (item.ReadingEvaluationList.All(t => t.Answer == 0.ToString()))
|
||||
{
|
||||
item.FinalEvaluationList.Add(new EvaluationInfo() {
|
||||
item.FinalEvaluationList.Add(new EvaluationInfo()
|
||||
{
|
||||
QuestionId = item.ReadingEvaluationList.First().QuestionId,
|
||||
Answer = ((int)BrainMetastasisResult.No).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult)
|
||||
});
|
||||
Answer = ((int)BrainMetastasisResult.No).ToString(),
|
||||
FinalTranslateDictionaryCode = nameof(BrainMetastasisResult)
|
||||
});
|
||||
}
|
||||
else if (item.ReadingEvaluationList.First().Answer != item.ReadingEvaluationList.Last().Answer)
|
||||
{
|
||||
item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId = item.ReadingEvaluationList.First().QuestionId, Answer = ((int)BrainMetastasisResult.Maybe).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult)});
|
||||
item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId = item.ReadingEvaluationList.First().QuestionId, Answer = ((int)BrainMetastasisResult.Maybe).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult) });
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId= addtionalQustionInfoList.FirstOrDefault()?.QuestionId, Answer = ((int)BrainMetastasisResult.Unknown).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult) });
|
||||
item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId = addtionalQustionInfoList.FirstOrDefault()?.QuestionId, Answer = ((int)BrainMetastasisResult.Unknown).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult) });
|
||||
}
|
||||
}
|
||||
else if (resultTrialReadingCriterion.ReadingType == ReadingMethod.Single)
|
||||
@@ -204,7 +208,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId = addtionalQustionInfoList.FirstOrDefault()?.QuestionId, Answer = ((int)BrainMetastasisResult.Unknown).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult) });
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -216,7 +220,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -246,7 +250,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
//找到一致性核查通过的访视 并且没有 自动影像筛选的数据
|
||||
var subjectVisitIdList = await _subjectVisitRepository.Where(t => t.SubjectId == addOrEditSubjectCriteriaEvaluation.SubjectId && t.CheckState == CheckStateEnum.CVPassed
|
||||
&& !t.SubjectCriteriaEvaluationVisitFilterList.Any(t=>t.TrialReadingCriterionId==addOrEditSubjectCriteriaEvaluation.TrialReadingCriterionId && t.SubjectId==addOrEditSubjectCriteriaEvaluation.SubjectId)).Select(t => t.Id)
|
||||
&& !t.SubjectCriteriaEvaluationVisitFilterList.Any(t => t.TrialReadingCriterionId == addOrEditSubjectCriteriaEvaluation.TrialReadingCriterionId && t.SubjectId == addOrEditSubjectCriteriaEvaluation.SubjectId)).Select(t => t.Id)
|
||||
.ToListAsync();
|
||||
|
||||
|
||||
@@ -366,7 +370,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
var subjectCriteriaEvaluationVisitFilter = await _subjectCriteriaEvaluationVisitFilterRepository.AddAsync(addItem);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
foreach (var item in list)
|
||||
{
|
||||
@@ -413,15 +417,17 @@ namespace IRaCIS.Core.Application.Service
|
||||
.WhereIf(inQuery.ImageFilterState != null, t => t.ImageFilterState == inQuery.ImageFilterState)
|
||||
.WhereIf(inQuery.IsGeneratedTask != null, t => t.IsGeneratedTask == inQuery.IsGeneratedTask)
|
||||
on subjectVisit.Id equals subjectCriteriaEvaluationVisitFilter.SubjectVisitId
|
||||
|
||||
|
||||
//into d from subjectCriteriaEvaluationVisitFilter in d.DefaultIfEmpty()
|
||||
|
||||
select new SubjectCriteriaEvaluationVisitFilterView()
|
||||
{
|
||||
VisitName = subjectVisit.VisitName,
|
||||
VisitNum=subjectVisit.VisitNum,
|
||||
VisitNum = subjectVisit.VisitNum,
|
||||
SubjectVisitId = subjectVisit.Id,
|
||||
TrialId = subjectVisit.TrialId,
|
||||
SubjectId = subjectVisit.SubjectId,
|
||||
SubjectCode= subjectVisit.Subject.Code,
|
||||
TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
|
||||
LatestScanDate = subjectVisit.LatestScanDate,
|
||||
EarliestScanDate = subjectVisit.LatestScanDate,
|
||||
@@ -431,14 +437,14 @@ namespace IRaCIS.Core.Application.Service
|
||||
Id = subjectCriteriaEvaluationVisitFilter.Id,
|
||||
|
||||
CreateTime = subjectCriteriaEvaluationVisitFilter.CreateTime,
|
||||
CreateUserId=subjectCriteriaEvaluationVisitFilter.CreateUserId,
|
||||
UpdateTime= subjectCriteriaEvaluationVisitFilter.UpdateTime,
|
||||
UpdateUserId= subjectCriteriaEvaluationVisitFilter.UpdateUserId,
|
||||
CreateUserId = subjectCriteriaEvaluationVisitFilter.CreateUserId,
|
||||
UpdateTime = subjectCriteriaEvaluationVisitFilter.UpdateTime,
|
||||
UpdateUserId = subjectCriteriaEvaluationVisitFilter.UpdateUserId,
|
||||
|
||||
};
|
||||
|
||||
|
||||
return await subjectCriteriaEvaluationVisitFilterQueryable.OrderBy(t=>t.VisitNum).ToListAsync();
|
||||
return await subjectCriteriaEvaluationVisitFilterQueryable.OrderBy(t => t.VisitNum).ToListAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -467,28 +473,20 @@ namespace IRaCIS.Core.Application.Service
|
||||
&& t.TrialReadingCriterionId == batchGenerateTaskCommand.TrialReadingCriterionId
|
||||
&& batchGenerateTaskCommand.SubjectVisitIdList.Contains(t.SubjectVisitId), u => new SubjectCriteriaEvaluationVisitFilter { IsGeneratedTask = true });
|
||||
|
||||
await _IVisitTaskHelpeService.BaseCritrionGenerateVisitTask(batchGenerateTaskCommand.TrialId, batchGenerateTaskCommand.TrialReadingCriterionId, true, batchGenerateTaskCommand.SubjectVisitIdList);
|
||||
//自动生成任务
|
||||
|
||||
var idList = batchGenerateTaskCommand.SubjectVisitIdList.Select(t => (Guid?)t).ToList();
|
||||
|
||||
//存在任务的访视
|
||||
var haveGenerateVisitIdList = await _repository.Where<VisitTask>(t => idList.Contains(t.SourceSubjectVisitId) && t.TrialReadingCriterionId == batchGenerateTaskCommand.TrialReadingCriterionId && t.TaskState == TaskState.Effect)
|
||||
.Select(t => t.SourceSubjectVisitId).ToListAsync();
|
||||
|
||||
var generateVisitIdList = idList.Except(haveGenerateVisitIdList);
|
||||
|
||||
await _IVisitTaskHelpeService.BaseCritrionGenerateVisitTask(batchGenerateTaskCommand.TrialId, batchGenerateTaskCommand.TrialReadingCriterionId, true, generateVisitIdList.Select(t => (Guid)t).ToList());
|
||||
}
|
||||
|
||||
|
||||
///// <summary>
|
||||
///// 评估访视 判断结果 影像筛选状态 手动添加/编辑接口
|
||||
///// </summary>
|
||||
///// <param name="addOrEditSubjectCriteriaEvaluationVisitFilter"></param>
|
||||
///// <returns></returns>
|
||||
//public async Task<IResponseOutput> AddOrUpdateSubjectCriteriaEvaluationVisitFilter(SubjectCriteriaEvaluationVisitFilterAddOrEdit addOrEditSubjectCriteriaEvaluationVisitFilter)
|
||||
//{
|
||||
|
||||
// var entity = await _subjectCriteriaEvaluationVisitFilterRepository.InsertOrUpdateAsync(addOrEditSubjectCriteriaEvaluationVisitFilter, true);
|
||||
|
||||
// return ResponseOutput.Ok(entity.Id.ToString());
|
||||
|
||||
//}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取dicom 访视检查列表 (序列的 Id CreateTime 是否为空 代表了记录是否创建、IsConfirmed 代表 保存 确认)
|
||||
/// </summary>
|
||||
@@ -516,7 +514,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
SeriesNumber = series.SeriesNumber,
|
||||
SeriesTime = series.SeriesTime,
|
||||
|
||||
InstanceCount=series.InstanceCount,
|
||||
InstanceCount = series.InstanceCount,
|
||||
StudyTime = series.DicomStudy.StudyTime,
|
||||
StudyId = series.StudyId,
|
||||
SeriesId = series.Id,
|
||||
@@ -524,7 +522,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
|
||||
|
||||
|
||||
IsReading=visitStudyFilter.IsReading,
|
||||
IsReading = visitStudyFilter.IsReading,
|
||||
Id = visitStudyFilter.Id,
|
||||
CreateTime = visitStudyFilter.CreateTime,
|
||||
IsConfirmed = visitStudyFilter.IsConfirmed,
|
||||
@@ -567,8 +565,8 @@ namespace IRaCIS.Core.Application.Service
|
||||
u => new SubjectCriteriaEvaluationVisitFilter() { ImageFilterState = ImageFilterState.Finished });
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
await _subjectCriteriaEvaluationVisitStudyFilterRepository.SaveChangesAsync();
|
||||
return ResponseOutput.Ok();
|
||||
|
||||
@@ -576,13 +574,122 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
|
||||
|
||||
//[HttpDelete("{subjectCriteriaEvaluationId:guid}")]
|
||||
// public async Task<IResponseOutput> DeleteSubjectCriteriaEvaluation(Guid subjectCriteriaEvaluationId)
|
||||
//{
|
||||
// var success = await _subjectCriteriaEvaluationRepository.DeleteFromQueryAsync(t => t.Id == subjectCriteriaEvaluationId,true);
|
||||
// return ResponseOutput.Ok();
|
||||
//}
|
||||
/// <summary>
|
||||
/// 附加评估标准 PM 退回某一访视 影响任务列表
|
||||
/// </summary>
|
||||
/// <param name="command"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
|
||||
public async Task<List<InfluenceTaskInfo>> GetCriteriaVisitBackInfluenceTaskList(CriteriaVisitBackCommand command)
|
||||
{
|
||||
var filterExpression = await GetTaskExpressionAsync(command);
|
||||
|
||||
var list = await _visitTaskRepository.Where(filterExpression)
|
||||
|
||||
.OrderBy(t => t.VisitTaskNum).ProjectTo<InfluenceTaskInfo>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
private async Task<Expression<Func<VisitTask, bool>>> GetTaskExpressionAsync(CriteriaVisitBackCommand command)
|
||||
{
|
||||
var criterionConfig = (await _trialReadingCriterionRepository.Where(x => x.Id == command.TrialReadingCriterionId).Select(x => new { x.ReadingTool, x.IsReadingTaskViewInOrder }).FirstOrDefaultAsync()).IfNullThrowException();
|
||||
|
||||
var subjectVisit = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == command.SubjectVisitId);
|
||||
|
||||
//仅仅影响该标准自己的任务
|
||||
Expression<Func<VisitTask, bool>> filterExpression = t => t.TrialId == command.TrialId && t.SubjectId == command.SubjectId && t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated
|
||||
&& t.TrialReadingCriterionId == command.TrialReadingCriterionId;
|
||||
|
||||
//有序
|
||||
if (criterionConfig.IsReadingTaskViewInOrder)
|
||||
{
|
||||
filterExpression = filterExpression.And(t => t.VisitTaskNum >= subjectVisit.VisitNum);
|
||||
}
|
||||
else
|
||||
{
|
||||
filterExpression = filterExpression.And(t => t.VisitTaskNum == subjectVisit.VisitNum);
|
||||
}
|
||||
|
||||
return filterExpression;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 退回任务
|
||||
/// </summary>
|
||||
/// <param name="command"></param>
|
||||
/// <returns></returns>
|
||||
public async Task ConfirmBackCriteriaVisitTask(CriteriaVisitBackCommand command)
|
||||
{
|
||||
var filterExpression = await GetTaskExpressionAsync(command);
|
||||
|
||||
var influenceTaskList = await _visitTaskRepository.Where(filterExpression, true).ToListAsync();
|
||||
|
||||
var subjectVisit = await _subjectVisitRepository.FindAsync(command.SubjectVisitId);
|
||||
|
||||
foreach (var influenceTask in influenceTaskList)
|
||||
{
|
||||
|
||||
|
||||
//申请的访视 要不是重阅重置,要不就是失效 不会存在取消分配
|
||||
if (influenceTask.ReadingCategory == ReadingCategory.Visit && influenceTask.VisitTaskNum != subjectVisit.VisitNum)
|
||||
{
|
||||
//后续访视处理访视
|
||||
if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned)
|
||||
{
|
||||
influenceTask.TaskState = TaskState.HaveReturned;
|
||||
|
||||
}
|
||||
else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading)
|
||||
{
|
||||
influenceTask.TaskState = TaskState.Adbandon;
|
||||
}
|
||||
else
|
||||
{
|
||||
influenceTask.DoctorUserId = null;
|
||||
influenceTask.AllocateTime = null;
|
||||
influenceTask.SuggesteFinishedTime = null;
|
||||
influenceTask.TaskAllocationState = TaskAllocationState.NotAllocate;
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//申请的访视 全局肿瘤学
|
||||
|
||||
if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned)
|
||||
{
|
||||
influenceTask.TaskState = TaskState.HaveReturned;
|
||||
}
|
||||
else
|
||||
{
|
||||
influenceTask.TaskState = TaskState.Adbandon;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
var taskIdList = influenceTaskList.Select(t => t.Id).ToList();
|
||||
var subjectVisitIdLsit = influenceTaskList.Where(t => t.SourceSubjectVisitId != null).Select(t => t.SourceSubjectVisitId).ToList();
|
||||
|
||||
//医学审核任务失效
|
||||
await _taskMedicalReviewRepository.UpdatePartialFromQueryAsync(t => taskIdList.Contains(t.VisitTaskId) && t.AuditState != MedicalReviewAuditState.HaveSigned, u => new TaskMedicalReview() { IsInvalid = true });
|
||||
|
||||
//将筛选的访视 序列状态重置
|
||||
|
||||
//重置访视数据
|
||||
await _subjectCriteriaEvaluationVisitFilterRepository.BatchUpdateNoTrackingAsync(t => t.TrialReadingCriterionId== command.TrialReadingCriterionId && t.SubjectId == command.SubjectId && subjectVisitIdLsit.Contains(t.SubjectVisitId) ,
|
||||
t=>new SubjectCriteriaEvaluationVisitFilter()
|
||||
{
|
||||
ImageFilterState=ImageFilterState.None,
|
||||
ImageDeterminationResultState=ImageDeterminationResultState.None
|
||||
});
|
||||
|
||||
//删除序列数据
|
||||
await _subjectCriteriaEvaluationVisitStudyFilterRepository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterionId == command.TrialReadingCriterionId && subjectVisitIdLsit.Contains(t.SubjectVisitId));
|
||||
|
||||
await _visitTaskRepository.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user