修改重阅申请

This commit is contained in:
2022-06-24 15:03:44 +08:00
parent 1205cb2395
commit f5f38936e6
13 changed files with 289 additions and 145 deletions
@@ -145,7 +145,16 @@ namespace IRaCIS.Core.Application.ViewModel
public List<ReadingGenerataTaskDTO> ReadingGenerataTaskList= new List<ReadingGenerataTaskDTO>();
//重阅 产生任务
//重阅 产生任务
public ReReadingApplyGenerateTaskCommand ReReadingApplyGenerateTaskCommand { get; set; } = new ReReadingApplyGenerateTaskCommand();
}
public class ReReadingApplyGenerateTaskCommand
{
public RequestReReadingType RequestReReadingType { get; set; }
public string RequestReReadingReason { get; set; }
public List<VisitTask> ReReadingTaskList = new List<VisitTask>();
}
@@ -82,7 +82,7 @@ namespace IRaCIS.Core.Application.ViewModel
//是否回退过
public bool IsReturned { get; set; }
public RequestReReadingResult RequestReReadingResultEnum { get; set; }
//是否 重阅
public bool IsReReading { get; set; }
@@ -98,11 +98,6 @@ namespace IRaCIS.Core.Application.ViewModel
public DateTime? SignTime { get; set; }
//重阅原始编号
public string ReReadingOriginalTaskCode { get; set; }
public RequestReReadingType RequestReReadingType { get; set; }
public DateTime? RequestReReadingTime { get; set; }
@@ -113,9 +108,18 @@ namespace IRaCIS.Core.Application.ViewModel
public RequestReReadingResult RequestReReadingResultEnum { get; set; }
//重阅原始任务Id 重阅会产生新的任务
public Guid OriginalReReadingTaskId { get; set; }
//重阅申请 产生的新任务Id
public Guid NewReReadingTaskId { get; set; }
//产生重阅的根任务Id
public Guid RootReReadingTaskId { get; set; }
//重阅原始编号
public string ReReadingOriginalTaskCode { get; set; }
}
@@ -196,7 +200,7 @@ namespace IRaCIS.Core.Application.ViewModel
public DateTime? EndAllocateDate { get; set; }
public Guid? OriginalReReadingId { get; set; }
public Guid? RootReReadingTaskId { get; set; }
}
public class IRUnReadSubjectQuery : PageInput
@@ -431,13 +435,26 @@ namespace IRaCIS.Core.Application.ViewModel
public class ConfirmReReadingCommand
{
public List<Guid> TaskIdList { get; set; }
public Guid TrialId { get; set; }
public List<ConfirmReReadingDTO> ConfirmReReadingList { get; set; }
public RequestReReadingResult RequestReReadingResultEnum { get; set; }
}
public class ConfirmReReadingDTO
{
public Guid Id { get; set; }
//重阅原始任务Id 重阅会产生新的任务
public Guid OriginalReReadingTaskId { get; set; }
//重阅申请 产生的新任务Id
public Guid NewReReadingTaskId { get; set; }
}
public enum TaskOptType
{
@@ -31,10 +31,12 @@ namespace IRaCIS.Core.Application.Service
private readonly IRepository<SubjectUser> _subjectUserRepository;
private readonly IMapper _mapper;
private readonly IUserInfo _userInfo;
private readonly IRepository<VisitTaskReReading> _visitTaskReReadingRepository;
public VisitTaskHelpeService(IRepository<VisitTask> visitTaskRepository, IRepository<SubjectUser> subjectUserRepository, IRepository<Trial> trialRepository, IEasyCachingProvider provider,
IRepository<SubjectVisit> subjectVisitRepository, IRepository<TaskAllocationRule> taskAllocationRuleRepository, IMapper mapper)
IRepository<SubjectVisit> subjectVisitRepository, IRepository<TaskAllocationRule> taskAllocationRuleRepository, IMapper mapper, IUserInfo userInfo, IRepository<VisitTaskReReading> visitTaskReReadingRepository)
{
_visitTaskRepository = visitTaskRepository;
_trialRepository = trialRepository;
@@ -43,6 +45,8 @@ namespace IRaCIS.Core.Application.Service
_taskAllocationRuleRepository = taskAllocationRuleRepository;
_subjectUserRepository = subjectUserRepository;
_mapper = mapper;
_userInfo = userInfo;
_visitTaskReReadingRepository = visitTaskReReadingRepository;
}
//查询列表的时候,一致性核查通过未产生任务的 自动产生任务 如果是一致性核查,那么还会自动分配
@@ -57,7 +61,7 @@ namespace IRaCIS.Core.Application.Service
var subjectVisitList = _subjectVisitRepository.Where(t => subjectVisitIdList.Contains(t.Id)).ProjectTo<VisitGenerataTaskDTO>(_mapper.ConfigurationProvider).Distinct().ToList();
await AddTaskAsync(new GenerateTaskCommand() { TrialId = trialId, IsAssignSubjectToDoctor = isAssignSubjectToDoctor, VisitGenerataTaskList = subjectVisitList, ReadingCategory= ReadingCategory.Visit });
await AddTaskAsync(new GenerateTaskCommand() { TrialId = trialId, IsAssignSubjectToDoctor = isAssignSubjectToDoctor, VisitGenerataTaskList = subjectVisitList, ReadingCategory = ReadingCategory.Visit });
}
@@ -74,7 +78,7 @@ namespace IRaCIS.Core.Application.Service
var dbMaxCode = _visitTaskRepository.Where(t => t.TrialId == trialId).Select(t => t.Code).DefaultIfEmpty().Max();
var cacheMaxCodeInt = _provider.Get<int>($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}").Value;
var cacheMaxCodeInt = _provider.Get<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}").Value;
int currentMaxCodeInt = cacheMaxCodeInt > dbMaxCode ? cacheMaxCodeInt : dbMaxCode;
@@ -83,7 +87,7 @@ namespace IRaCIS.Core.Application.Service
case ReadingCategory.Visit:
foreach (var subjectVisit in generateTaskCommand.VisitGenerataTaskList)
{
var assignConfigList = await _subjectUserRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId && t.OrignalSubjectUserId== null && t.IsConfirmed).Select(u => new { u.DoctorUserId, u.ArmEnum }).ToListAsync();
var assignConfigList = await _subjectUserRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId && t.OrignalSubjectUserId == null && t.IsConfirmed).Select(u => new { u.DoctorUserId, u.ArmEnum }).ToListAsync();
if (trialConfig.ReadingType == ReadingMethod.Double)
@@ -121,7 +125,7 @@ namespace IRaCIS.Core.Application.Service
currentMaxCodeInt = currentMaxCodeInt + 2;
_provider.Set<int>($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 2, TimeSpan.FromMinutes(30));
_provider.Set<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 2, TimeSpan.FromMinutes(30));
#region
@@ -222,7 +226,7 @@ namespace IRaCIS.Core.Application.Service
currentMaxCodeInt = currentMaxCodeInt + 1;
_provider.Set<int>($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30));
_provider.Set<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30));
#region
@@ -284,32 +288,67 @@ namespace IRaCIS.Core.Application.Service
break;
case ReadingCategory.ReReading:
foreach (var reReadingVisitTask in generateTaskCommand.ReReadingTaskList)
foreach (var reReadingVisitTask in generateTaskCommand.ReReadingApplyGenerateTaskCommand.ReReadingTaskList)
{
//reReadingVisitTask.OriginalReReadingId = reReadingVisitTask.Id;
//reReadingVisitTask.Id = Guid.Empty;
//reReadingVisitTask. Code = currentMaxCodeInt + 1;
//reReadingVisitTask.SignTime = null;
//reReadingVisitTask.AllocateTime = null;
//reReadingVisitTask.RequestReReadingReason = generateTaskCommand.ReReadingApplyGenerateTaskCommand.RequestReReadingReason;
//reReadingVisitTask.RequestReReadingType = generateTaskCommand.ReReadingApplyGenerateTaskCommand.RequestReReadingType;
//reReadingVisitTask.RequestReReadingUserId = _userInfo.Id;
//reReadingVisitTask.Code = currentMaxCodeInt + 1;
//reReadingVisitTask.TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask));
await _visitTaskRepository.AddAsync(new VisitTask()
// await _visitTaskRepository.AddAsync(reReadingVisitTask);
var newTask = await _visitTaskRepository.AddAsync(new VisitTask()
{
OriginalReReadingId = reReadingVisitTask.Id,
TrialId = reReadingVisitTask.TrialId,
SubjectId = reReadingVisitTask.SubjectId,
ArmEnum= reReadingVisitTask.ArmEnum,
TaskName= reReadingVisitTask.TaskName,
ArmEnum = reReadingVisitTask.ArmEnum,
TaskName = reReadingVisitTask.TaskName,
TaskBlindName = reReadingVisitTask.TaskBlindName,
TaskAllocationState= reReadingVisitTask.TaskAllocationState,
TaskAllocationState = reReadingVisitTask.TaskAllocationState,
ReadingCategory = reReadingVisitTask.ReadingCategory,
SourceSubjectVisitId = reReadingVisitTask.SourceSubjectVisitId,
IsReReadingCreate = true,
TaskState = TaskState.NotEffect,
Code = currentMaxCodeInt + 1,
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
AllocateTime=DateTime.Now,
DoctorUserId= reReadingVisitTask.DoctorUserId
AllocateTime = DateTime.Now,
DoctorUserId = reReadingVisitTask.DoctorUserId,
});
var rootReReadingTaskId = await _visitTaskReReadingRepository.Where(t => t.OriginalReReadingTaskId == reReadingVisitTask.Id).Select(u => u.RootReReadingTaskId).FirstOrDefaultAsync();
var visitTaskReReading = await _visitTaskReReadingRepository.AddAsync(new VisitTaskReReading()
{
RootReReadingTaskId = rootReReadingTaskId == Guid.Empty ? reReadingVisitTask.Id : rootReReadingTaskId,
OriginalReReadingTaskId = reReadingVisitTask.Id,
NewReReadingTaskId = newTask.Id,
RequestReReadingTime = DateTime.Now,
RequestReReadingUserId = _userInfo.Id,
RequestReReadingReason = generateTaskCommand.ReReadingApplyGenerateTaskCommand.RequestReReadingReason,
RequestReReadingType = generateTaskCommand.ReReadingApplyGenerateTaskCommand.RequestReReadingType,
});
//是否增加任务类别
@@ -333,15 +372,15 @@ namespace IRaCIS.Core.Application.Service
ReadingCategory = ReadingCategory.Judge,
TrialId = firstTask.TrialId,
Code = currentMaxCodeInt + 1,
SourceSubjectVisitId= firstTask.SourceSubjectVisitId,
SouceReadModuleId=firstTask.SouceReadModuleId,
SourceSubjectVisitId = firstTask.SourceSubjectVisitId,
SouceReadModuleId = firstTask.SouceReadModuleId,
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
};
await _visitTaskRepository.AddAsync(visitTask);
currentMaxCodeInt = currentMaxCodeInt + 1;
_provider.Set<int>($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30));
_provider.Set<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30));
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => generateTaskCommand.JudgeVisitTaskIdList.Contains(x.Id), x => new VisitTask()
{
@@ -384,7 +423,7 @@ namespace IRaCIS.Core.Application.Service
ReadingCategory = item.ReadingCategory
});
currentMaxCodeInt = currentMaxCodeInt + 2;
_provider.Set<int>($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 2, TimeSpan.FromMinutes(30));
_provider.Set<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 2, TimeSpan.FromMinutes(30));
}
}
else
@@ -409,13 +448,13 @@ namespace IRaCIS.Core.Application.Service
currentMaxCodeInt = currentMaxCodeInt + 1;
_provider.Set<int>($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30));
_provider.Set<int>($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30));
}
}
break;
}
await _visitTaskRepository.SaveChangesAsync();
}
@@ -30,9 +30,12 @@ namespace IRaCIS.Core.Application.Service
private readonly IRepository<ReadModule> _readModuleRepository;
private readonly IRepository<VisitTaskReReading> _visitTaskReReadingRepository;
public VisitTaskService(IRepository<VisitTask> visitTaskRepository, IRepository<Trial> trialRepository, IRepository<SubjectVisit> subjectVisitRepository,
IRepository<Subject> subjectRepository, IRepository<SubjectUser> subjectUserRepository, IRepository<TaskAllocationRule> taskAllocationRuleRepository, IRepository<ReadModule> readModuleRepository
IRepository<Subject> subjectRepository, IRepository<SubjectUser> subjectUserRepository, IRepository<TaskAllocationRule> taskAllocationRuleRepository,
IRepository<ReadModule> readModuleRepository, IRepository<VisitTaskReReading> visitTaskReReadingRepository
)
{
_taskAllocationRuleRepository = taskAllocationRuleRepository;
@@ -42,6 +45,7 @@ namespace IRaCIS.Core.Application.Service
_subjectRepository = subjectRepository;
_subjectUserRepository = subjectUserRepository;
_readModuleRepository = readModuleRepository;
_visitTaskReReadingRepository = visitTaskReReadingRepository;
}
@@ -167,7 +171,7 @@ namespace IRaCIS.Core.Application.Service
public async Task<(PageOutput<ReadingTaskView>, object)> GetReadingTaskList(VisitTaskQuery queryVisitTask)
{
var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId)
.Where(t => t.OriginalReReadingId == null && t.DoctorUserId != null)
.Where(t => t.IsReReadingCreate == false && t.DoctorUserId != null)
.WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
@@ -201,20 +205,20 @@ namespace IRaCIS.Core.Application.Service
{
var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId)
.WhereIf(queryVisitTask.OriginalReReadingId != null, t => t.OriginalReReadingId == queryVisitTask.OriginalReReadingId)
.WhereIf(queryVisitTask.OriginalReReadingId == null, t => t.OriginalReReadingId != null)
var visitTaskQueryable = _visitTaskReReadingRepository
.Where(t => t.NewReReadingTask.TrialId == queryVisitTask.TrialId)
.WhereIf(queryVisitTask.RootReReadingTaskId != null, t => t.RootReReadingTaskId == queryVisitTask.RootReReadingTaskId)
.WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
.WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
.WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId)
.WhereIf(queryVisitTask.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState)
.WhereIf(queryVisitTask.TaskAllocationState != null, t => t.TaskAllocationState == queryVisitTask.TaskAllocationState)
.WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName))
.WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode))
.WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate)
.WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate.Value.AddDays(1))
.WhereIf(queryVisitTask.SiteId != null, t => t.NewReReadingTask.Subject.SiteId == queryVisitTask.SiteId)
.WhereIf(queryVisitTask.SubjectId != null, t => t.NewReReadingTask.SubjectId == queryVisitTask.SubjectId)
.WhereIf(queryVisitTask.IsUrgent != null, t => t.NewReReadingTask.IsUrgent == queryVisitTask.IsUrgent)
.WhereIf(queryVisitTask.DoctorUserId != null, t => t.NewReReadingTask.DoctorUserId == queryVisitTask.DoctorUserId)
.WhereIf(queryVisitTask.ReadingTaskState != null, t => t.NewReReadingTask.ReadingTaskState == queryVisitTask.ReadingTaskState)
.WhereIf(queryVisitTask.TaskAllocationState != null, t => t.NewReReadingTask.TaskAllocationState == queryVisitTask.TaskAllocationState)
.WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.NewReReadingTask.TaskName.Contains(queryVisitTask.TaskName) || t.NewReReadingTask.TaskBlindName.Contains(queryVisitTask.TaskName))
.WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.NewReReadingTask.Subject.Code.Contains(queryVisitTask.SubjectCode))
.WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.NewReReadingTask.AllocateTime > queryVisitTask.BeginAllocateDate)
.WhereIf(queryVisitTask.EndAllocateDate != null, t => t.NewReReadingTask.AllocateTime < queryVisitTask.EndAllocateDate.Value.AddDays(1))
.ProjectTo<ReReadingTaskView>(_mapper.ConfigurationProvider);
var defalutSortArray = new string[] { nameof(VisitTask.IsUrgent) + " desc", nameof(VisitTask.SubjectId) };
@@ -347,24 +351,24 @@ namespace IRaCIS.Core.Application.Service
public async Task<PageOutput<ReReadingTaskView>> GetIRReReadingTaskList(VisitTaskQuery queryVisitTask)
{
var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId)
.Where(t => t.DoctorUserId == _userInfo.Id)
.WhereIf(queryVisitTask.OriginalReReadingId != null, t => t.OriginalReReadingId == queryVisitTask.OriginalReReadingId)
.WhereIf(queryVisitTask.OriginalReReadingId == null, t => t.OriginalReReadingId != null)
.WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
.WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
.WhereIf(queryVisitTask.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState)
.WhereIf(queryVisitTask.TaskAllocationState != null, t => t.TaskAllocationState == queryVisitTask.TaskAllocationState)
.WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName))
.WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode))
.WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate)
.WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate.Value.AddDays(1))
var visitTaskQueryable = _visitTaskReReadingRepository
.Where(t => t.NewReReadingTask.DoctorUserId == _userInfo.Id)
.Where(t => t.NewReReadingTask.TrialId == queryVisitTask.TrialId)
.WhereIf(queryVisitTask.RootReReadingTaskId != null, t => t.RootReReadingTaskId == queryVisitTask.RootReReadingTaskId)
.WhereIf(queryVisitTask.SiteId != null, t => t.NewReReadingTask.Subject.SiteId == queryVisitTask.SiteId)
.WhereIf(queryVisitTask.SubjectId != null, t => t.NewReReadingTask.SubjectId == queryVisitTask.SubjectId)
.WhereIf(queryVisitTask.IsUrgent != null, t => t.NewReReadingTask.IsUrgent == queryVisitTask.IsUrgent)
.WhereIf(queryVisitTask.DoctorUserId != null, t => t.NewReReadingTask.DoctorUserId == queryVisitTask.DoctorUserId)
.WhereIf(queryVisitTask.ReadingTaskState != null, t => t.NewReReadingTask.ReadingTaskState == queryVisitTask.ReadingTaskState)
.WhereIf(queryVisitTask.TaskAllocationState != null, t => t.NewReReadingTask.TaskAllocationState == queryVisitTask.TaskAllocationState)
.WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.NewReReadingTask.TaskName.Contains(queryVisitTask.TaskName) || t.NewReReadingTask.TaskBlindName.Contains(queryVisitTask.TaskName))
.WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.NewReReadingTask.Subject.Code.Contains(queryVisitTask.SubjectCode))
.WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.NewReReadingTask.AllocateTime > queryVisitTask.BeginAllocateDate)
.WhereIf(queryVisitTask.EndAllocateDate != null, t => t.NewReReadingTask.AllocateTime < queryVisitTask.EndAllocateDate.Value.AddDays(1))
.ProjectTo<ReReadingTaskView>(_mapper.ConfigurationProvider);
var defalutSortArray = new string[] { nameof(VisitTask.IsUrgent) + " desc", nameof(VisitTask.SubjectId) };
var pageList = await visitTaskQueryable.ToPagedListAsync(queryVisitTask.PageIndex, queryVisitTask.PageSize, queryVisitTask.SortField, queryVisitTask.Asc, string.IsNullOrWhiteSpace(queryVisitTask.SortField), defalutSortArray);
@@ -430,12 +434,12 @@ namespace IRaCIS.Core.Application.Service
var armEnum = assginSubjectDoctorCommand.DoctorUserIdArmList.Where(t => t.DoctorUserId == doctorUserId).First().ArmEnum;
if (await _subjectUserRepository.AnyAsync(t => t.TrialId == trialId && t.SubjectId == subjectId && t.DoctorUserId == doctorUserId && t.ArmEnum != armEnum && t.OrignalSubjectUserId==null))
if (await _subjectUserRepository.AnyAsync(t => t.TrialId == trialId && t.SubjectId == subjectId && t.DoctorUserId == doctorUserId && t.ArmEnum != armEnum && t.OrignalSubjectUserId == null))
{
throw new BusinessValidationFailedException("有Subject 在其他Arm组已有该医生,不允许在新的组添加该医生");
}
if (await _subjectUserRepository.AnyAsync(t => t.TrialId == trialId && t.SubjectId == subjectId && t.DoctorUserId == doctorUserId && t.ArmEnum == armEnum && t.OrignalSubjectUserId == null))
if (await _subjectUserRepository.AnyAsync(t => t.TrialId == trialId && t.SubjectId == subjectId && t.DoctorUserId == doctorUserId && t.ArmEnum == armEnum && t.OrignalSubjectUserId == null))
{
throw new BusinessValidationFailedException("有Subject 已有该Arm组的医生,不允许继续分配,请刷新页面,确认页面数据是否过期");
}
@@ -466,7 +470,7 @@ namespace IRaCIS.Core.Application.Service
{
foreach (var subjectId in cancelSubjectAssignCommand.SubjectIdList)
{
if (await _visitTaskRepository.AnyAsync(t => t.SubjectId == subjectId && t.DoctorUserId != null && t.ArmEnum == Arm.JudgeArm ))
if (await _visitTaskRepository.AnyAsync(t => t.SubjectId == subjectId && t.DoctorUserId != null && t.ArmEnum == Arm.JudgeArm))
{
throw new BusinessValidationFailedException("有Subject任务已应用,不允许取消分配");
}
@@ -540,7 +544,7 @@ namespace IRaCIS.Core.Application.Service
if (assignConfirmCommand.SubjectDoctorUserList.Count == 0)
{
subjectDoctorIdArmList = _subjectUserRepository.Where(t => t.SubjectId == subjectId && t.OrignalSubjectUserId == null).Select(t => new DoctorArm() { DoctorUserId = t.DoctorUserId, ArmEnum = t.ArmEnum }).ToList();
subjectDoctorIdArmList = _subjectUserRepository.Where(t => t.SubjectId == subjectId && t.OrignalSubjectUserId == null).Select(t => new DoctorArm() { DoctorUserId = t.DoctorUserId, ArmEnum = t.ArmEnum }).ToList();
}
@@ -617,8 +621,8 @@ namespace IRaCIS.Core.Application.Service
SubjectId = t.Id,
//给Subject分配医生的时候, 未确认绑定关系的
DoctorUserList = t.SubjectDoctorList.Where(t => isJudge ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Where(t=> t.OrignalSubjectUserId==null).Select(t => new { t.DoctorUserId, t.ArmEnum }),
IsApplyed = t.SubjectDoctorList.Where(t => isJudge ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Where(t => t.OrignalSubjectUserId == null).SelectMany(t => t.SubjectArmVisitTaskList).Any(c => c.DoctorUserId != null)
DoctorUserList = t.SubjectDoctorList.Where(t => isJudge ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Where(t => t.OrignalSubjectUserId == null).Select(t => new { t.DoctorUserId, t.ArmEnum }),
IsApplyed = t.SubjectDoctorList.Where(t => isJudge ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Where(t => t.OrignalSubjectUserId == null).SelectMany(t => t.SubjectArmVisitTaskList).Any(c => c.DoctorUserId != null)
}).ToList();
//已产生任务的Subject数量(裁判情况下,就是产生裁判任务Subject 的数量)
@@ -889,27 +893,22 @@ namespace IRaCIS.Core.Application.Service
{
var taskList = await _visitTaskRepository.Where(t => applyReReadingCommand.TaskIdList.Contains(t.Id), true).Include(t => t.JudgeVisitTask).ToListAsync();
var reReadingTaskList = taskList.Clone();
foreach (var task in taskList)
{
if(await _visitTaskRepository.AnyAsync(t=>t.OriginalReReadingId==task.Id))
if (task.ReReadingApplyState == ReReadingApplyState.HaveApplyed || task.ReReadingApplyState == ReReadingApplyState.Agree)
{
throw new BusinessValidationFailedException("已产生重阅任务,不允许再次申请");
throw new BusinessValidationFailedException("已申请,或者同意状态不允许再次申请重阅");
}
task.RequestReReadingReason = applyReReadingCommand.RequestReReadingReason;
task.RequestReReadingType = applyReReadingCommand.RequestReReadingType;
task.RequestReReadingTime = DateTime.Now;
task.RequestReReadingUserId = _userInfo.Id;
//产生了裁判
if (task.JudgeVisitTaskId != null)
{
if (task.ReadingTaskState == ReadingTaskState.WaitReading || task.ReadingTaskState == ReadingTaskState.Reading)
{
task.JudgeVisitTask.TaskState = TaskState.HaveCanceled;
task.JudgeVisitTask.TaskState = TaskState.Adbandon;
}
else
{
@@ -921,11 +920,21 @@ namespace IRaCIS.Core.Application.Service
}
}
//产生的新任务,状态保持很申请的一直
var reReadingTaskList = taskList.Clone();
await _visitTaskCommonService.AddTaskAsync(new GenerateTaskCommand()
{
TrialId = applyReReadingCommand.TrialId,
ReadingCategory = ReadingCategory.ReReading,
ReReadingTaskList = reReadingTaskList
ReReadingApplyGenerateTaskCommand = new ReReadingApplyGenerateTaskCommand()
{
RequestReReadingReason = applyReReadingCommand.RequestReReadingReason,
RequestReReadingType = applyReReadingCommand.RequestReReadingType,
ReReadingTaskList = reReadingTaskList
}
});
//产生新的任务
@@ -945,22 +954,33 @@ namespace IRaCIS.Core.Application.Service
[UnitOfWork]
public async Task<IResponseOutput> ConfirmReReading(ConfirmReReadingCommand agreeReReadingCommand)
{
//var taskList = await _visitTaskRepository.Where(t => agreeReReadingCommand.TaskIdList.Contains(t.Id), true).ToListAsync();
//foreach (var task in taskList)
//{
// task.RequestReReadingResultEnum = agreeReReadingCommand.RequestReReadingResultEnum;
// task.RequestReReadingConfirmUserId = _userInfo.Id;
//}
//await _visitTaskRepository.SaveChangesAsync();
await _visitTaskRepository.UpdatePartialFromQueryAsync(t => agreeReReadingCommand.TaskIdList.Contains(t.Id), u => new VisitTask()
foreach (var item in agreeReReadingCommand.ConfirmReReadingList)
{
IsReReading = true,
RequestReReadingResultEnum = agreeReReadingCommand.RequestReReadingResultEnum,
RequestReReadingConfirmUserId = _userInfo.Id
}, true);
await _visitTaskRepository.UpdatePartialFromQueryAsync(t => t.Id == item.OriginalReReadingTaskId, u => new VisitTask()
{
ReReadingApplyState = (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree ? ReReadingApplyState.Agree : ReReadingApplyState.Reject),
IsReReading=true
});
await _visitTaskReReadingRepository.UpdatePartialFromQueryAsync(t => t.Id == item.Id, u => new VisitTaskReReading()
{
RequestReReadingConfirmUserId=_userInfo.Id,
RequestReReadingResultEnum= agreeReReadingCommand.RequestReReadingResultEnum,
});
await _visitTaskRepository.UpdatePartialFromQueryAsync(t => t.Id == item.NewReReadingTaskId, u => new VisitTask()
{
TaskState = TaskState.Effect
});
}
await _visitTaskRepository.SaveChangesAsync();
return ResponseOutput.Ok();
}
@@ -107,16 +107,20 @@ namespace IRaCIS.Core.Application.Service
.ForMember(o => o.FullName, t => t.MapFrom(u => u.DoctorUser.FullName))
.ForMember(o => o.UserTypeShortName, t => t.MapFrom(u => u.DoctorUser.UserTypeRole.UserTypeShortName));
CreateMap<VisitTask, ReReadingTaskView>()
CreateMap<VisitTaskReReading, ReReadingTaskView>().IncludeMembers(t=>t.NewReReadingTask)
.ForMember(o => o.ReReadingOriginalTaskCode, t => t.MapFrom(u => u.OriginalReReadingTask.TaskCode))
.ForMember(o => o.Id, t => t.MapFrom(u => u.Id))
.ForMember(o => o.SiteId, t => t.MapFrom(u => u.Subject.SiteId))
.ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.Subject.TrialSite.TrialSiteCode))
.ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.Subject.Code))
.ForMember(o => o.UserCode, t => t.MapFrom(u => u.DoctorUser.UserCode))
.ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName))
.ForMember(o => o.FullName, t => t.MapFrom(u => u.DoctorUser.FullName))
.ForMember(o => o.UserTypeShortName, t => t.MapFrom(u => u.DoctorUser.UserTypeRole.UserTypeShortName));
.ForMember(o => o.SiteId, t => t.MapFrom(u => u.NewReReadingTask.Subject.SiteId))
.ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.NewReReadingTask.Subject.TrialSite.TrialSiteCode))
.ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.NewReReadingTask.Subject.Code))
.ForMember(o => o.UserCode, t => t.MapFrom(u => u.NewReReadingTask.DoctorUser.UserCode))
.ForMember(o => o.UserName, t => t.MapFrom(u => u.NewReReadingTask.DoctorUser.UserName))
.ForMember(o => o.FullName, t => t.MapFrom(u => u.NewReReadingTask.DoctorUser.FullName))
.ForMember(o => o.UserTypeShortName, t => t.MapFrom(u => u.NewReReadingTask.DoctorUser.UserTypeRole.UserTypeShortName));
CreateMap<VisitTask, ReReadingTaskView>()
.ForMember(o => o.Id, t => t.Ignore());
CreateMap<VisitTask, IRHaveReadView>()
.ForMember(o => o.SiteId, t => t.MapFrom(u => u.Subject.SiteId))