From 2c76edd5e962c128d35e89cecb16b92d76b2aaf7 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 30 Jun 2022 14:47:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 22 +- .../DTO/TaskAllocationRuleViewModel.cs | 22 +- .../Allocation/DTO/VisitTaskViewModel.cs | 24 +- .../Allocation/VisitTaskHelpeService.cs | 28 +-- .../Service/Allocation/VisitTaskService.cs | 227 ++++++++++-------- .../Service/Allocation/_MapConfig.cs | 55 ++--- .../Allocation/AllocationRelation.cs | 24 ++ .../Allocation/TaskMedicalReview.cs | 4 +- .../Allocation/TaskMedicalReviewRule.cs | 64 +---- .../Allocation/VisitTaskReReading.cs | 4 +- 10 files changed, 232 insertions(+), 242 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 461808771..72ae08d78 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -129,7 +129,7 @@ - 获取影像阅片列表 (排除重阅的) 相比而言多了几个字段 和配置信息 + 获取影像阅片列表 相比而言多了几个字段 和配置信息 @@ -143,7 +143,14 @@ - 获取重阅影像阅片列表 + PM 重阅追踪 + + + + + + + 获取IR 重阅影像阅片列表 @@ -161,13 +168,6 @@ - - - 获取IR 重阅影像阅片列表 - - - - 批量为 多个Subject 分配医生 手动分配 IsReAssign 为true 批量删除 重新分配 @@ -202,7 +202,7 @@ - + 申请重阅 1:IR 2:PM @@ -210,7 +210,7 @@ - + 确认重阅与否 1同意 2 拒绝 diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskAllocationRuleViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskAllocationRuleViewModel.cs index f16472897..3b8cab18f 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskAllocationRuleViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskAllocationRuleViewModel.cs @@ -134,7 +134,7 @@ namespace IRaCIS.Core.Application.ViewModel //访视任务产生的时候传递 - public List VisitGenerataTaskList { get; set; }=new List(); + public List VisitGenerataTaskList { get; set; } = new List(); //裁判的时候传递 public List JudgeVisitTaskIdList { get; set; } = new List(); @@ -142,22 +142,26 @@ namespace IRaCIS.Core.Application.ViewModel /// /// 阅片期 /// - public List ReadingGenerataTaskList= new List(); + public List ReadingGenerataTaskList = new List(); //重阅 产生任务 - public ReReadingApplyGenerateTaskCommand ReReadingApplyGenerateTaskCommand { get; set; } = new ReReadingApplyGenerateTaskCommand(); + public VisitTask ReReadingTask { get; set; } + + public Action< VisitTask> Action; + + //public ReReadingApplyGenerateTaskCommand ReReadingApplyGenerateTaskCommand { get; set; } = new ReReadingApplyGenerateTaskCommand(); } - public class ReReadingApplyGenerateTaskCommand - { - public RequestReReadingType RequestReReadingType { get; set; } + //public class ReReadingApplyGenerateTaskCommand + //{ + // public RequestReReadingType RequestReReadingType { get; set; } - public string RequestReReadingReason { get; set; } + // public string RequestReReadingReason { get; set; } - public List ReReadingTaskList = new List(); - } + // public List ReReadingTaskList = new List(); + //} public class ReadingGenerataTaskDTO diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs index b7935d311..be164e8bf 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs @@ -53,8 +53,6 @@ namespace IRaCIS.Core.Application.ViewModel public class VisitTaskView : VisitTaskViewBasic { - - public string UserCode { get; set; } public string UserName { get; set; } public string FullName { get; set; } @@ -93,19 +91,26 @@ namespace IRaCIS.Core.Application.ViewModel } - public class IRReReadingTaskView: ReReadingTaskView + //public class IRReReadingTaskView: ReReadingTaskView + //{ + + //} + + public class ReReadingTaskView { - } + //重阅原始编号 + //public string ReReadingOriginalTaskCode { get; set; } + + public VisitTaskView OriginalReReadingTask { get; set; } + + public string? ReReadingNewTaskCode { get; set; } + - public class ReReadingTaskView : VisitTaskView - { public ReReadingApplyState ReReadingApplyState { get; set; } public ReadingTaskState ReadingTaskState { get; set; } - - public RequestReReadingType RequestReReadingType { get; set; } public string RequestReReadingRejectReason { get; set; } = string.Empty; @@ -128,8 +133,6 @@ namespace IRaCIS.Core.Application.ViewModel //产生重阅的根任务Id public Guid RootReReadingTaskId { get; set; } - //重阅原始编号 - public string ReReadingOriginalTaskCode { get; set; } } @@ -512,7 +515,6 @@ namespace IRaCIS.Core.Application.ViewModel public List ConfirmReReadingList { get; set; } - public string RequestReReadingRejectReason { get; set; } = string.Empty; public RequestReReadingResult RequestReReadingResultEnum { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs index 058e279d5..322578e92 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs @@ -292,8 +292,10 @@ namespace IRaCIS.Core.Application.Service break; case ReadingCategory.ReReading: - foreach (var reReadingVisitTask in generateTaskCommand.ReReadingApplyGenerateTaskCommand.ReReadingTaskList) - { + var reReadingVisitTask = generateTaskCommand.ReReadingTask; + + //foreach (var reReadingVisitTask in generateTaskCommand.ReReadingTaskList) + //{ //reReadingVisitTask.OriginalReReadingId = reReadingVisitTask.Id; //reReadingVisitTask.Id = Guid.Empty; //reReadingVisitTask.SignTime = null; @@ -323,7 +325,7 @@ namespace IRaCIS.Core.Application.Service SourceSubjectVisitId = reReadingVisitTask.SourceSubjectVisitId, IsReReadingCreate = true, - TaskState = TaskState.NotEffect, + TaskState = TaskState.Effect, Code = currentMaxCodeInt + 1, TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)), @@ -333,24 +335,10 @@ namespace IRaCIS.Core.Application.Service }); - var rootReReadingTaskId = await _visitTaskReReadingRepository.Where(t => t.NewReReadingTaskId == reReadingVisitTask.Id).Select(u => u.RootReReadingTaskId).FirstOrDefaultAsync(); + generateTaskCommand.Action(newTask); - - 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, - - }); + //await _visitTaskReReadingRepository.BatchUpdateNoTrackingAsync(t=>t.) //是否增加任务类别 @@ -358,7 +346,7 @@ namespace IRaCIS.Core.Application.Service _provider.Set($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt, TimeSpan.FromMinutes(30)); - } + //} break; case ReadingCategory.Judge: diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 2004539ad..a4c1c7ce0 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -163,7 +163,7 @@ namespace IRaCIS.Core.Application.Service /// - /// 获取影像阅片列表 (排除重阅的) 相比而言多了几个字段 和配置信息 + /// 获取影像阅片列表 相比而言多了几个字段 和配置信息 /// /// /// @@ -171,7 +171,7 @@ namespace IRaCIS.Core.Application.Service public async Task<(PageOutput, object)> GetReadingTaskList(VisitTaskQuery queryVisitTask) { var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId) - .Where(t => t.IsReReadingCreate == false && 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) @@ -231,7 +231,7 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task> GetSelfConsistentList(SelfConsistentQuery inQuery) { - var query = _visitTaskRepository.Where(t => t.TrialId == inQuery.TrialId && t.DoctorUserId == inQuery.AnalysisDoctorUserId) + var query = _visitTaskRepository.Where(t => t.TrialId == inQuery.TrialId && t.DoctorUserId == inQuery.AnalysisDoctorUserId) .Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect) .Where(t => t.SignTime!.Value.AddDays(inQuery.IntervalWeeks * 7 + 1) > DateTime.Now) //重阅产生的访视任务 要把之前的访视任务去除 @@ -256,8 +256,8 @@ namespace IRaCIS.Core.Application.Service TaskCode = c.TaskCode, TaskName = c.TaskName, TaskState = c.TaskState, - ArmEnum=c.ArmEnum, - SubjectId=c.SubjectId, + ArmEnum = c.ArmEnum, + SubjectId = c.SubjectId, TrialId = c.TrialId }).ToList(), @@ -271,7 +271,7 @@ namespace IRaCIS.Core.Application.Service /// - /// 获取重阅影像阅片列表 + /// PM 重阅追踪 /// /// /// @@ -281,23 +281,22 @@ namespace IRaCIS.Core.Application.Service var visitTaskQueryable = _visitTaskReReadingRepository - .Where(t => t.NewReReadingTask.TrialId == queryVisitTask.TrialId) - .WhereIf(queryVisitTask.RootReReadingTaskId != null, t => t.RootReReadingTaskId == queryVisitTask.RootReReadingTaskId || t.OriginalReReadingTaskId == queryVisitTask.RootReReadingTaskId) - .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskCode), t => t.OriginalReReadingTask.TaskCode.Contains(queryVisitTask.TaskCode) || t.RootReReadingTask.TaskCode.Contains(queryVisitTask.TaskCode)) - - .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)) + .Where(t => t.OriginalReReadingTask.TrialId == queryVisitTask.TrialId) + .WhereIf(queryVisitTask.RootReReadingTaskId != null, t => t.RootReReadingTaskId == queryVisitTask.RootReReadingTaskId || t.OriginalReReadingTaskId == queryVisitTask.RootReReadingTaskId) + .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskCode), t => t.OriginalReReadingTask.TaskCode.Contains(queryVisitTask.TaskCode) || t.RootReReadingTask.TaskCode.Contains(queryVisitTask.TaskCode)) + .WhereIf(queryVisitTask.SiteId != null, t => t.OriginalReReadingTask.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.SubjectId != null, t => t.OriginalReReadingTask.SubjectId == queryVisitTask.SubjectId) + .WhereIf(queryVisitTask.IsUrgent != null, t => t.OriginalReReadingTask.IsUrgent == queryVisitTask.IsUrgent) + .WhereIf(queryVisitTask.DoctorUserId != null, t => t.OriginalReReadingTask.DoctorUserId == queryVisitTask.DoctorUserId) + .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.OriginalReReadingTask.ReadingTaskState == queryVisitTask.ReadingTaskState) + .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.OriginalReReadingTask.TaskAllocationState == queryVisitTask.TaskAllocationState) + .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.OriginalReReadingTask.TaskName.Contains(queryVisitTask.TaskName) || t.OriginalReReadingTask.TaskBlindName.Contains(queryVisitTask.TaskName)) + .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.OriginalReReadingTask.Subject.Code.Contains(queryVisitTask.SubjectCode)) + .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.OriginalReReadingTask.AllocateTime > queryVisitTask.BeginAllocateDate) + .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.OriginalReReadingTask.AllocateTime < queryVisitTask.EndAllocateDate.Value.AddDays(1)) .ProjectTo(_mapper.ConfigurationProvider); - var defalutSortArray = new string[] { nameof(VisitTask.IsUrgent) + " desc", nameof(VisitTask.SubjectId) }; + var defalutSortArray = new string[] { nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.IsUrgent) + " desc", nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.SubjectId) }; var pageList = await visitTaskQueryable.ToPagedListAsync(queryVisitTask.PageIndex, queryVisitTask.PageSize, queryVisitTask.SortField, queryVisitTask.Asc, string.IsNullOrWhiteSpace(queryVisitTask.SortField), defalutSortArray); @@ -305,6 +304,45 @@ namespace IRaCIS.Core.Application.Service } + /// + /// 获取IR 重阅影像阅片列表 + /// + /// + /// + [HttpPost] + public async Task> GetIRReReadingTaskList(VisitTaskQuery queryVisitTask) + { + + var visitTaskQueryable = _visitTaskReReadingRepository + .Where(t => t.OriginalReReadingTask.DoctorUserId == _userInfo.Id) + .Where(t => t.OriginalReReadingTask.TrialId == queryVisitTask.TrialId) + .WhereIf(queryVisitTask.RootReReadingTaskId != null, t => t.RootReReadingTaskId == queryVisitTask.RootReReadingTaskId || t.OriginalReReadingTaskId == queryVisitTask.RootReReadingTaskId) + .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskCode), t => t.OriginalReReadingTask.TaskCode.Contains(queryVisitTask.TaskCode) || t.RootReReadingTask.TaskCode.Contains(queryVisitTask.TaskCode)) + .WhereIf(queryVisitTask.SiteId != null, t => t.OriginalReReadingTask.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.SubjectId != null, t => t.OriginalReReadingTask.SubjectId == queryVisitTask.SubjectId) + .WhereIf(queryVisitTask.IsUrgent != null, t => t.OriginalReReadingTask.IsUrgent == queryVisitTask.IsUrgent) + .WhereIf(queryVisitTask.DoctorUserId != null, t => t.OriginalReReadingTask.DoctorUserId == queryVisitTask.DoctorUserId) + .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.OriginalReReadingTask.ReadingTaskState == queryVisitTask.ReadingTaskState) + .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.OriginalReReadingTask.TaskAllocationState == queryVisitTask.TaskAllocationState) + .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.OriginalReReadingTask.TaskName.Contains(queryVisitTask.TaskName) || t.NewReReadingTask.TaskBlindName.Contains(queryVisitTask.TaskName)) + .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.OriginalReReadingTask.Subject.Code.Contains(queryVisitTask.SubjectCode)) + .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.OriginalReReadingTask.AllocateTime > queryVisitTask.BeginAllocateDate) + .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.OriginalReReadingTask.AllocateTime < queryVisitTask.EndAllocateDate.Value.AddDays(1)) + .ProjectTo(_mapper.ConfigurationProvider); + + + + var defalutSortArray = new string[] { nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.IsUrgent) + " desc", nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.SubjectId) }; + + var pageList = await visitTaskQueryable.ToPagedListAsync(queryVisitTask.PageIndex, queryVisitTask.PageSize, queryVisitTask.SortField, queryVisitTask.Asc, string.IsNullOrWhiteSpace(queryVisitTask.SortField), defalutSortArray); + + return pageList; + } + + + + + /// /// IR 待阅片任务列表 /// @@ -419,42 +457,6 @@ namespace IRaCIS.Core.Application.Service } - /// - /// 获取IR 重阅影像阅片列表 - /// - /// - /// - [HttpPost] - public async Task> GetIRReReadingTaskList(VisitTaskQuery queryVisitTask) - { - - var visitTaskQueryable = _visitTaskReReadingRepository - .Where(t => t.OriginalReReadingTask.DoctorUserId == _userInfo.Id) - .Where(t => t.OriginalReReadingTask.TrialId == queryVisitTask.TrialId) - .WhereIf(queryVisitTask.RootReReadingTaskId != null, t => t.RootReReadingTaskId == queryVisitTask.RootReReadingTaskId || t.OriginalReReadingTaskId == queryVisitTask.RootReReadingTaskId) - .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskCode), t => t.OriginalReReadingTask.TaskCode.Contains(queryVisitTask.TaskCode) || t.RootReReadingTask.TaskCode.Contains(queryVisitTask.TaskCode)) - .WhereIf(queryVisitTask.SiteId != null, t => t.OriginalReReadingTask.Subject.SiteId == queryVisitTask.SiteId) - .WhereIf(queryVisitTask.SubjectId != null, t => t.OriginalReReadingTask.SubjectId == queryVisitTask.SubjectId) - .WhereIf(queryVisitTask.IsUrgent != null, t => t.OriginalReReadingTask.IsUrgent == queryVisitTask.IsUrgent) - .WhereIf(queryVisitTask.DoctorUserId != null, t => t.OriginalReReadingTask.DoctorUserId == queryVisitTask.DoctorUserId) - .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.OriginalReReadingTask.ReadingTaskState == queryVisitTask.ReadingTaskState) - .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.OriginalReReadingTask.TaskAllocationState == queryVisitTask.TaskAllocationState) - .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.OriginalReReadingTask.TaskName.Contains(queryVisitTask.TaskName) || t.NewReReadingTask.TaskBlindName.Contains(queryVisitTask.TaskName)) - .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.OriginalReReadingTask.Subject.Code.Contains(queryVisitTask.SubjectCode)) - .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.OriginalReReadingTask.AllocateTime > queryVisitTask.BeginAllocateDate) - .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.OriginalReReadingTask.AllocateTime < queryVisitTask.EndAllocateDate.Value.AddDays(1)) - .ProjectTo(_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); - - return pageList; - } - - @@ -967,7 +969,7 @@ namespace IRaCIS.Core.Application.Service /// [HttpPost] [UnitOfWork] - public async Task ApplyReReading(ApplyReReadingCommand applyReReadingCommand, [FromServices] IVisitTaskHelpeService _visitTaskCommonService) + public async Task ApplyReReading(ApplyReReadingCommand applyReReadingCommand) { var taskList = await _visitTaskRepository.Where(t => applyReReadingCommand.TaskIdList.Contains(t.Id), true).Include(t => t.JudgeVisitTask).ToListAsync(); @@ -980,7 +982,7 @@ namespace IRaCIS.Core.Application.Service throw new BusinessValidationFailedException("重阅已申请,或者重阅已同意状态下不允许申请重阅"); } - if(task.ReadingCategory == ReadingCategory.Judge && task.TaskState== TaskState.HaveReturned) + if (task.ReadingCategory == ReadingCategory.Judge && task.TaskState == TaskState.HaveReturned) { throw new BusinessValidationFailedException("访视重阅导致裁判任务重置的,不能申请重阅"); } @@ -1002,24 +1004,23 @@ namespace IRaCIS.Core.Application.Service } } - } - //产生的新任务,状态保持跟申请的一直 - var reReadingTaskList = taskList.Clone(); + var rootReReadingTaskId = _visitTaskReReadingRepository.Where(t => t.NewReReadingTaskId == task.Id).Select(u => u.RootReReadingTaskId).FirstOrDefault(); - await _visitTaskCommonService.AddTaskAsync(new GenerateTaskCommand() - { - TrialId = applyReReadingCommand.TrialId, - ReadingCategory = ReadingCategory.ReReading, - - - ReReadingApplyGenerateTaskCommand = new ReReadingApplyGenerateTaskCommand() + //添加申请记录 + var visitTaskReReading = await _visitTaskReReadingRepository.AddAsync(new VisitTaskReReading() { + + RootReReadingTaskId = rootReReadingTaskId == Guid.Empty ? task.Id : rootReReadingTaskId, + + RequestReReadingTime = DateTime.Now, + RequestReReadingUserId = _userInfo.Id, RequestReReadingReason = applyReReadingCommand.RequestReReadingReason, RequestReReadingType = applyReReadingCommand.RequestReReadingType, - ReReadingTaskList = reReadingTaskList - } - }); + + }); + } + //产生新的任务 @@ -1036,53 +1037,81 @@ namespace IRaCIS.Core.Application.Service /// [HttpPost] [UnitOfWork] - public async Task ConfirmReReading(ConfirmReReadingCommand agreeReReadingCommand) + public async Task ConfirmReReading(ConfirmReReadingCommand agreeReReadingCommand, [FromServices] IVisitTaskHelpeService _visitTaskCommonService) { - + var trialId = agreeReReadingCommand.TrialId; foreach (var item in agreeReReadingCommand.ConfirmReReadingList) { + await _visitTaskRepository.UpdatePartialFromQueryAsync(t => t.Id == item.OriginalReReadingTaskId, u => new VisitTask() { ReReadingApplyState = (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree ? ReReadingApplyState.Agree : ReReadingApplyState.Reject), - TaskState = (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree ? TaskState.HaveReturned : TaskState.Effect) + TaskState = (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree ? TaskState.HaveReturned : TaskState.Effect) }); - await _visitTaskReReadingRepository.UpdatePartialFromQueryAsync(t => t.Id == item.Id, u => new VisitTaskReReading() - { - RequestReReadingConfirmUserId = _userInfo.Id, - RequestReReadingResultEnum = agreeReReadingCommand.RequestReReadingResultEnum, - RequestReReadingRejectReason = agreeReReadingCommand.RequestReReadingRejectReason - }); + if (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree) { - if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer) - { - await _visitTaskRepository.UpdatePartialFromQueryAsync(t => t.Id == item.NewReReadingTaskId, u => new VisitTask() - { - TaskState = TaskState.Effect - }); - } - //立即分配 - else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager) - { - var doctorUserId = await _visitTaskRepository.Where(t => t.Id == item.OriginalReReadingTaskId).Select(t => t.DoctorUserId).FirstOrDefaultAsync(); + var origenalTask = (await _visitTaskRepository.Where(t => item.OriginalReReadingTaskId == t.Id).FirstOrDefaultAsync()).IfNullThrowException(); - await _visitTaskRepository.UpdatePartialFromQueryAsync(t => t.Id == item.NewReReadingTaskId, u => new VisitTask() + + + + //产生的新任务,状态保持跟申请的一致 + + await _visitTaskCommonService.AddTaskAsync(new GenerateTaskCommand() + { + TrialId = trialId, + + ReadingCategory = ReadingCategory.ReReading, + + ReReadingTask = origenalTask, + + //同步才可以 + Action = (newTask) => { - TaskState = TaskState.Effect, - DoctorUserId = doctorUserId, - TaskAllocationState=TaskAllocationState.Allocated, - AllocateTime = DateTime.Now, - }); - } + + + _visitTaskReReadingRepository.UpdatePartialFromQueryAsync(t => t.Id == item.Id, u => new VisitTaskReReading() + { + RequestReReadingConfirmUserId = _userInfo.Id, + RequestReReadingResultEnum = agreeReReadingCommand.RequestReReadingResultEnum, + RequestReReadingRejectReason = agreeReReadingCommand.RequestReReadingRejectReason, + + NewReReadingTaskId = newTask.Id, + }).Wait(); + + if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer) + { + + } + + //PM 立即分配 + if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager) + { + newTask.DoctorUserId = origenalTask.DoctorUserId; + newTask.TaskAllocationState = TaskAllocationState.Allocated; + newTask.AllocateTime = DateTime.Now; + } + + } + + + + }); } + } + + + + await _visitTaskRepository.SaveChangesAsync(); diff --git a/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs b/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs index 72ab01f2c..ec74df080 100644 --- a/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs @@ -62,10 +62,6 @@ namespace IRaCIS.Core.Application.Service subjectIdList.Count == 0 ? u.Trial.VisitTaskList.Where(t => isJudgeDoctor ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Where(t => t.DoctorUserId == null).Count() : u.Trial.VisitTaskList.Where(t => isJudgeDoctor ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Where(t => t.DoctorUserId == null && subjectIdList.Contains(t.SubjectId)).Count())) - - - - ; @@ -109,43 +105,42 @@ namespace IRaCIS.Core.Application.Service - CreateMap().IncludeMembers(t => t.OriginalReReadingTask) - .ForMember(o => o.ReReadingOriginalTaskCode, t => t.MapFrom(u => u.OriginalReReadingTask.TaskCode)) - .ForMember(o => o.Id, t => t.MapFrom(u => u.Id)) + //CreateMap().IncludeMembers(t => t.OriginalReReadingTask) + // .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.OriginalReReadingTask.Subject.SiteId)) - .ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.OriginalReReadingTask.Subject.TrialSite.TrialSiteCode)) - .ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.OriginalReReadingTask.Subject.Code)) - .ForMember(o => o.UserCode, t => t.MapFrom(u => u.OriginalReReadingTask.DoctorUser.UserCode)) - .ForMember(o => o.UserName, t => t.MapFrom(u => u.OriginalReReadingTask.DoctorUser.UserName)) - .ForMember(o => o.FullName, t => t.MapFrom(u => u.OriginalReReadingTask.DoctorUser.FullName)) - .ForMember(o => o.UserTypeShortName, t => t.MapFrom(u => u.OriginalReReadingTask.DoctorUser.UserTypeRole.UserTypeShortName)); + // .ForMember(o => o.SiteId, t => t.MapFrom(u => u.OriginalReReadingTask.Subject.SiteId)) + // .ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.OriginalReReadingTask.Subject.TrialSite.TrialSiteCode)) + // .ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.OriginalReReadingTask.Subject.Code)) + // .ForMember(o => o.UserCode, t => t.MapFrom(u => u.OriginalReReadingTask.DoctorUser.UserCode)) + // .ForMember(o => o.UserName, t => t.MapFrom(u => u.OriginalReReadingTask.DoctorUser.UserName)) + // .ForMember(o => o.FullName, t => t.MapFrom(u => u.OriginalReReadingTask.DoctorUser.FullName)) + // .ForMember(o => o.UserTypeShortName, t => t.MapFrom(u => u.OriginalReReadingTask.DoctorUser.UserTypeRole.UserTypeShortName)); - CreateMap() - .ForMember(o => o.Id, t => t.Ignore()); + //CreateMap() + // .ForMember(o => o.Id, t => t.Ignore()); - CreateMap().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)) + CreateMap() + .ForMember(o => o.ReReadingNewTaskCode, t => t.MapFrom(u => u.NewReReadingTask.TaskCode)) + .ForMember(o => o.OriginalReReadingTask, t => t.MapFrom(u => u.OriginalReReadingTask)); - .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() + // .ForMember(o => o.Id, t => t.Ignore()) + // .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)); - CreateMap() - .ForMember(o => o.Id, t => t.Ignore()); CreateMap() .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.SubjectCode, t => t.MapFrom(u => u.Subject.Code)); diff --git a/IRaCIS.Core.Domain.Share/Allocation/AllocationRelation.cs b/IRaCIS.Core.Domain.Share/Allocation/AllocationRelation.cs index 47ae911a9..55cea8c3c 100644 --- a/IRaCIS.Core.Domain.Share/Allocation/AllocationRelation.cs +++ b/IRaCIS.Core.Domain.Share/Allocation/AllocationRelation.cs @@ -40,6 +40,30 @@ namespace IRaCIS.Core.Domain.Share } + + public enum MedicalReviewAuditState + { + //待审核 + WaitAudit=0, + + //审核中 + Auditing=1, + + HaveSigned=2 + } + + + + + public enum MedicalReviewDoctorUserIdea + { + defalut=0, + + Agree=1, + + NotAgree=2 + } + public enum Arm { SingleReadingArm = 0, diff --git a/IRaCIS.Core.Domain/Allocation/TaskMedicalReview.cs b/IRaCIS.Core.Domain/Allocation/TaskMedicalReview.cs index 89b52a26b..045faa5c6 100644 --- a/IRaCIS.Core.Domain/Allocation/TaskMedicalReview.cs +++ b/IRaCIS.Core.Domain/Allocation/TaskMedicalReview.cs @@ -50,7 +50,7 @@ namespace IRaCIS.Core.Domain.Models /// AuditState /// [Required] - public int AuditState { get; set; } + public MedicalReviewAuditState AuditState { get; set; } /// /// AuditSuggestion @@ -66,7 +66,7 @@ namespace IRaCIS.Core.Domain.Models /// /// DoctorUserIdeaEnum /// - public int DoctorUserIdeaEnum { get; set; } + public MedicalReviewDoctorUserIdea DoctorUserIdeaEnum { get; set; } /// /// MedicalManagerUserId diff --git a/IRaCIS.Core.Domain/Allocation/TaskMedicalReviewRule.cs b/IRaCIS.Core.Domain/Allocation/TaskMedicalReviewRule.cs index 5dd76f410..0143b6d64 100644 --- a/IRaCIS.Core.Domain/Allocation/TaskMedicalReviewRule.cs +++ b/IRaCIS.Core.Domain/Allocation/TaskMedicalReviewRule.cs @@ -18,84 +18,32 @@ namespace IRaCIS.Core.Domain.Models public class TaskMedicalReviewRule : Entity, IAuditUpdate, IAuditAdd { - - - /// - /// CreateUserId - /// - [Required] public Guid CreateUserId { get; set; } - /// - /// CreateTime - /// - [Required] public DateTime CreateTime { get; set; } - /// - /// UpdateTime - /// - [Required] public DateTime UpdateTime { get; set; } - - /// - /// UpdateUserId - /// - [Required] + public Guid UpdateUserId { get; set; } - - /// - /// DoctorUserId - /// - [Required] + public Guid DoctorUserId { get; set; } - /// - /// IsEnable - /// - [Required] public bool IsEnable { get; set; } - /// - /// Note - /// - [Required] public string Note { get; set; } - - /// - /// TrialId - /// - [Required] - public Guid TrialId { get; set; } - - /// - /// PlanVisitCount - /// - [Required] + + public Guid TrialId { get; set; } + public int PlanVisitCount { get; set; } - - /// - /// PlanJudgeCount - /// - [Required] + public int PlanJudgeCount { get; set; } - /// - /// PlanGlobalCount - /// - [Required] public int PlanGlobalCount { get; set; } - /// - /// PlanTumorCount - /// DoctorVisitTaskList { get; set; } public List TaskMedicalReviewList { get; set; } diff --git a/IRaCIS.Core.Domain/Allocation/VisitTaskReReading.cs b/IRaCIS.Core.Domain/Allocation/VisitTaskReReading.cs index a0318cdcf..04dcfb2a8 100644 --- a/IRaCIS.Core.Domain/Allocation/VisitTaskReReading.cs +++ b/IRaCIS.Core.Domain/Allocation/VisitTaskReReading.cs @@ -24,10 +24,10 @@ namespace IRaCIS.Core.Domain.Models //产生重阅的根任务Id - public Guid RootReReadingTaskId { get; set; } + public Guid? RootReReadingTaskId { get; set; } //重阅申请 产生的新任务Id - public Guid NewReReadingTaskId { get; set; } + public Guid? NewReReadingTaskId { get; set; } public Guid RequestReReadingUserId { get; set; }