Merge branch 'master' of http://192.168.1.2:8033/IRaCIS_Core_Api
commit
20d7ca22b5
|
@ -14,6 +14,9 @@ using Nito.AsyncEx;
|
|||
using System.ComponentModel.DataAnnotations;
|
||||
using IRaCIS.Core.Application.Auth;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using IRaCIS.Core.Application.Service;
|
||||
|
||||
namespace IRaCIS.Core.Application.Image.QA
|
||||
{
|
||||
|
@ -31,6 +34,9 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
private readonly IRepository<CheckChallengeDialog> _checkChallengeDialogrepository;
|
||||
private readonly IRepository<Trial> _trialRepository;
|
||||
|
||||
|
||||
private readonly IVisitTaskHelpeService _IVisitTaskHelpeService;
|
||||
|
||||
private readonly AsyncLock _mutex = new AsyncLock();
|
||||
|
||||
public QCOperationService(IRepository<SubjectVisit> subjectVisitRepository,
|
||||
|
@ -41,7 +47,8 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
IRepository<Subject> subjectRepository,
|
||||
IRepository<ReadingClinicalData> readingClinicalDataRepository,
|
||||
IRepository<QCChallengeDialog> qCChallengeDialogrepository,
|
||||
IRepository<CheckChallengeDialog> checkChallengeDialogrepository
|
||||
IRepository<CheckChallengeDialog> checkChallengeDialogrepository,
|
||||
IVisitTaskHelpeService visitTaskHelpeService
|
||||
)
|
||||
{
|
||||
_subjectVisitRepository = subjectVisitRepository;
|
||||
|
@ -53,6 +60,8 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
this._qCChallengeDialogrepository = qCChallengeDialogrepository;
|
||||
this._checkChallengeDialogrepository = checkChallengeDialogrepository;
|
||||
_trialRepository = trialRepository;
|
||||
|
||||
_IVisitTaskHelpeService= visitTaskHelpeService;
|
||||
}
|
||||
|
||||
#region QC质疑 以及回复 关闭
|
||||
|
@ -1284,8 +1293,8 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
dbSubjectVisit.AuditState = AuditStateEnum.ToAudit;
|
||||
}
|
||||
|
||||
//非基线设置为PD的话 根据配置自动生成阅片期
|
||||
if (!dbSubjectVisit.IsBaseLine && dbSubjectVisit.PDState == PDStateEnum.PDProgress)
|
||||
//非基线设置为PD的话 或者设置为末次访视 根据配置自动生成阅片期
|
||||
if (!dbSubjectVisit.IsBaseLine && dbSubjectVisit.PDState == PDStateEnum.PDProgress && dbSubjectVisit.IsFinalVisit)
|
||||
{
|
||||
//该标准需要添加阅片期
|
||||
foreach (var trialReadingCriterionId in trialReadingCriterionIdList)
|
||||
|
@ -1294,7 +1303,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
if (!await _repository.Where<ReadModule>(t => t.SubjectVisitId == dbSubjectVisit.Id && t.ReadingSetType == ReadingSetType.ImageReading && t.TrialReadingCriterionId == trialReadingCriterionId).AnyAsync())
|
||||
{
|
||||
|
||||
await _repository.AddAsync(new ReadModule()
|
||||
var newReadModule = await _repository.AddAsync(new ReadModule()
|
||||
{
|
||||
TrialReadingCriterionId = trialReadingCriterionId,
|
||||
ReadingSetType = ReadingSetType.ImageReading,
|
||||
|
@ -1895,8 +1904,8 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
{
|
||||
session.CreateDirectory(targetPath);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
foreach (var studyFolder in studyFolders)
|
||||
{
|
||||
var targetFolder = Path.Combine(targetPath, studyFolder.Name);
|
||||
|
|
|
@ -55,6 +55,14 @@ namespace IRaCIS.Core.Application.Triggers
|
|||
if (subjectVisit.IsFinalVisit)
|
||||
{
|
||||
await VerifyDealFinalVisitAsync(subjectVisit);
|
||||
|
||||
await _subjectRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisit.SubjectId,
|
||||
u => new Subject() { Status = SubjectStatus.OutOfVisit, FinalSubjectVisitId = subjectVisit.Id });
|
||||
|
||||
|
||||
//末次访视后的 访视设置为不可用
|
||||
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum &&
|
||||
t.VisitExecuted == VisitExecutedEnum.UnExecuted, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable });
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -65,19 +73,16 @@ namespace IRaCIS.Core.Application.Triggers
|
|||
|
||||
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitExecuted == VisitExecutedEnum.Unavailable, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.UnExecuted });
|
||||
|
||||
var readingPeriodSet =await _readingPeriodSetRepository.Where(x => x.TrialId == subjectVisit.TrialId && x.IsGlobal).FirstOrDefaultAsync();
|
||||
//var readingPeriodSet =await _readingPeriodSetRepository.Where(x => x.TrialId == subjectVisit.TrialId && x.IsGlobal).FirstOrDefaultAsync();
|
||||
|
||||
if (readingPeriodSet != null)
|
||||
{
|
||||
await _readingPeriodPlanRepository.DeleteFromQueryAsync(x => x.ReadingPeriodSetId == readingPeriodSet.Id && x.SubjectVisitId == subjectVisit.Id);
|
||||
await _readModuleRepository.UpdatePartialFromQueryAsync(x => x.SubjectVisitId == subjectVisit.Id && x.ReadingPeriodSetId == readingPeriodSet.Id,x=> new ReadModule() {
|
||||
IsDeleted = true
|
||||
|
||||
});
|
||||
|
||||
await _readModuleRepository.SaveChangesAsync();
|
||||
|
||||
}
|
||||
//if (readingPeriodSet != null)
|
||||
//{
|
||||
// await _readingPeriodPlanRepository.DeleteFromQueryAsync(x => x.ReadingPeriodSetId == readingPeriodSet.Id && x.SubjectVisitId == subjectVisit.Id);
|
||||
// await _readModuleRepository.UpdatePartialFromQueryAsync(x => x.SubjectVisitId == subjectVisit.Id && x.ReadingPeriodSetId == readingPeriodSet.Id,x=> new ReadModule() {
|
||||
// IsDeleted = true
|
||||
// });
|
||||
// await _readModuleRepository.SaveChangesAsync();
|
||||
//}
|
||||
|
||||
|
||||
|
||||
|
@ -99,27 +104,21 @@ namespace IRaCIS.Core.Application.Triggers
|
|||
throw new BusinessValidationFailedException("该受试者已有后续访视已上传影像或已提交,当前访视不允许设置为末次访视。");
|
||||
}
|
||||
|
||||
await _subjectRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisit.SubjectId,
|
||||
u => new Subject() { Status = SubjectStatus.OutOfVisit, FinalSubjectVisitId = subjectVisit.Id });
|
||||
|
||||
|
||||
//末次访视后的 访视设置为不可用
|
||||
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum &&
|
||||
t.VisitExecuted == VisitExecutedEnum.UnExecuted, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable });
|
||||
#region 末次访视生成阅片器和任务 更换位置 废弃
|
||||
|
||||
|
||||
var trialId = subjectVisit.TrialId;
|
||||
var subjectVisitId= subjectVisit.Id;
|
||||
var subjectVisitId = subjectVisit.Id;
|
||||
// 是否全局阅片
|
||||
|
||||
|
||||
var trial = await _repository.Where<Trial>(x => x.Id == trialId).FirstNotNullAsync();
|
||||
|
||||
|
||||
|
||||
if (!subjectVisit.IsBaseLine)
|
||||
if (!subjectVisit.IsBaseLine && subjectVisit.SubmitState == SubmitStateEnum.Submitted)
|
||||
{
|
||||
var criterionList = await _repository.Where<ReadingQuestionCriterionTrial>(x => x.TrialId == trialId&&x.ReadingInfoSignTime!=null && x.IsConfirm && x.IsReadingPeriod && x.IsReadingTaskViewInOrder).ToListAsync();
|
||||
var criterionList = await _repository.Where<ReadingQuestionCriterionTrial>(x => x.TrialId == trialId && x.ReadingInfoSignTime != null && x.IsConfirm && x.IsReadingPeriod && x.IsReadingTaskViewInOrder).ToListAsync();
|
||||
foreach (var item in criterionList)
|
||||
{
|
||||
//ReadingPeriodSet? readingPeriodSet = await _readingPeriodSetRepository.FirstOrDefaultNoTrackingAsync(x => x.TrialId == trialId && x.IsGlobal && x.TrialReadingCriterionId == item.Id);
|
||||
|
@ -160,7 +159,7 @@ namespace IRaCIS.Core.Application.Triggers
|
|||
ReadModule newReadModule = new ReadModule()
|
||||
{
|
||||
//ReadingPeriodSetId = readingPeriodSet.Id,
|
||||
Id= NewId.NextGuid(),
|
||||
Id = NewId.NextGuid(),
|
||||
IsUrgent = subjectVisit.IsUrgent,
|
||||
SubjectVisitId = subjectVisitId,
|
||||
ReadingStatus = ReadingStatusEnum.TaskAllocate,
|
||||
|
@ -173,43 +172,43 @@ namespace IRaCIS.Core.Application.Triggers
|
|||
TrialReadingCriterionId = item.Id,
|
||||
};
|
||||
|
||||
await _readModuleRepository.AddAsync(newReadModule);
|
||||
readModule = await _readModuleRepository.AddAsync(newReadModule);
|
||||
}
|
||||
|
||||
var visitTaskList = await _visitTaskRepository.Where(x => x.TrialReadingCriterionId == item.Id && x.SourceSubjectVisitId == subjectVisitId && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned).ToListAsync();
|
||||
var visitTaskList = await _visitTaskRepository.Where(x => x.TrialReadingCriterionId == item.Id && x.SourceSubjectVisitId == subjectVisitId && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned).ToListAsync();
|
||||
|
||||
foreach (var visitTask in visitTaskList)
|
||||
foreach (var visitTask in visitTaskList)
|
||||
{
|
||||
await _ivisitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand()
|
||||
{
|
||||
await _ivisitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand()
|
||||
{
|
||||
OriginalVisitId = visitTask.Id,
|
||||
ReadingCategory = GenerateTaskCategory.Global,
|
||||
TrialId = subjectVisit.TrialId,
|
||||
OriginalVisitId = visitTask.Id,
|
||||
ReadingCategory = GenerateTaskCategory.Global,
|
||||
TrialId = subjectVisit.TrialId,
|
||||
|
||||
ReadingGenerataTaskList = new List<ReadingGenerataTaskDTO>() {
|
||||
ReadingGenerataTaskList = new List<ReadingGenerataTaskDTO>() {
|
||||
|
||||
new ReadingGenerataTaskDTO (){
|
||||
IsUrgent=subjectVisit.IsUrgent,
|
||||
ReadingCategory=ReadingCategory.Global,
|
||||
ReadingName=newReadModule.ModuleName,
|
||||
ReadModuleId=newReadModule.Id,
|
||||
ReadingName=readModule.ModuleName,
|
||||
ReadModuleId=readModule.Id,
|
||||
SubjectId=subjectVisit.SubjectId,
|
||||
VisitNum=visitTask.VisitTaskNum,
|
||||
},
|
||||
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
await _readModuleRepository.SaveChangesAsync();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue