修改查询接口

Uat_Study
hang 2022-06-29 15:54:18 +08:00
parent b2d06f2175
commit 5681f06b1f
9 changed files with 185 additions and 39 deletions

View File

@ -53,6 +53,11 @@
<param name="_enrollRepository"></param>
<returns></returns>
</member>
<member name="T:IRaCIS.Core.Application.Service.TaskMedicalReviewRuleService">
<summary>
医学审核生成规则
</summary>
</member>
<member name="T:IRaCIS.Core.Application.Service.TaskMedicalReviewService">
<summary>
任务医学审核
@ -65,6 +70,12 @@
<param name="inQuery"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.TaskMedicalReviewService.GenerateMedicalReviewTask(IRaCIS.Core.Application.ViewModel.GenerateMedicalReviewTaskCommand)">
<summary>
产生医学审核任务
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.TaskMedicalReviewService.GetMIMMedicalReviewTaskList(IRaCIS.Core.Application.ViewModel.TaskMedicalReviewQuery)">
<summary>
MIM 医学审核
@ -79,17 +90,12 @@
<param name="command"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.TaskMedicalReviewService.GetMIMUserList">
<member name="M:IRaCIS.Core.Application.Service.TaskMedicalReviewService.GetMIMUserList(System.Guid)">
<summary>
获取医学经理列表
</summary>
<returns></returns>
</member>
<member name="T:IRaCIS.Core.Application.Service.TaskMedicalReviewRuleService">
<summary>
医学审核生成规则
</summary>
</member>
<member name="T:IRaCIS.Core.Application.Service.VisitTaskHelpeService">
<summary>
访视读片任务

View File

@ -24,42 +24,49 @@ namespace IRaCIS.Core.Application.ViewModel
[JsonIgnore]
public List<Guid> ActualVisitTaskIdList { get; set; }
public List<TaskBasicIdView> ActualVisitTaskList { get; set; }
[JsonIgnore]
public List<Guid> ActualJudgeTaskIdList { get; set; }
public List<TaskBasicIdView> ActualJudgeTaskList { get; set; }
[JsonIgnore]
public List<Guid> ActualGlobalTaskIdList { get; set; }
public List<TaskBasicIdView> ActualGlobalTaskList { get; set; }
[JsonIgnore]
public List<Guid> ActualTumorTaskIdList { get; set; }
public List<TaskBasicIdView> ActualTumorTaskList { get; set; }
[JsonIgnore]
public List<Guid> GeneratedVisitTaskIdList { get; set; }
public List<TaskBasicIdView> GeneratedVisitTaskList { get; set; }
[JsonIgnore]
public List<Guid> GeneratedJudgeTaskIdList { get; set; }
public List<TaskBasicIdView> GeneratedJudgeTaskList { get; set; }
[JsonIgnore]
public List<Guid> GeneratedGlobalTaskIdList { get; set; }
public List<TaskBasicIdView> GeneratedGlobalTaskList { get; set; }
[JsonIgnore]
public List<Guid> GeneratedTumorTaskIdList { get; set; }
public List<TaskBasicIdView> GeneratedTumorTaskList { get; set; }
public int GeneratedVisitCount => GeneratedVisitTaskIdList.Count;
public int GeneratedJudgeCount => GeneratedJudgeTaskIdList.Count;
public int GeneratedGlobalCount => GeneratedGlobalTaskIdList.Count;
public int GeneratedTumorCount => GeneratedTumorTaskIdList.Count;
public int GeneratedVisitCount => GeneratedVisitTaskList.Count;
public int GeneratedJudgeCount => GeneratedJudgeTaskList.Count;
public int GeneratedGlobalCount => GeneratedGlobalTaskList.Count;
public int GeneratedTumorCount => GeneratedTumorTaskList.Count;
public int ActualVisitCount => ActualVisitTaskIdList.Count;
public int ActualJudgeCount => ActualJudgeTaskIdList.Count;
public int ActualGlobalCount => ActualGlobalTaskIdList.Count;
public int ActualTumorCount => ActualTumorTaskIdList.Count;
public int ActualVisitCount => ActualVisitTaskList.Count;
public int ActualJudgeCount => ActualJudgeTaskList.Count;
public int ActualGlobalCount => ActualGlobalTaskList.Count;
public int ActualTumorCount => ActualTumorTaskList.Count;
}
public class TaskBasicIdView
{
public Guid TaskId { get; set; }
public Guid TrialId { get; set; }
public Guid? DoctorUserId { get; set; }
}
///<summary>TaskTaskMedicalReviewRuleQuery 列表查询参数模型</summary>
public class TaskMedicalReviewRuleQuery
{

View File

@ -53,6 +53,14 @@ namespace IRaCIS.Core.Application.ViewModel
}
public class GenerateMedicalReviewTaskCommand
{
public Guid TrialId { get; set; }
}
public class AssignMedicalReviewTaskCommand
{

View File

@ -67,6 +67,7 @@ namespace IRaCIS.Core.Application.ViewModel
public class UserSimpleInfo
{
public Guid UserId { get; set; }
public string UserCode { get; set; }
public string UserName { get; set; }
public string FullName { get; set; }
@ -213,6 +214,8 @@ namespace IRaCIS.Core.Application.ViewModel
public DateTime? EndAllocateDate { get; set; }
public Guid? RootReReadingTaskId { get; set; }
public string TaskCode { get; set; }
}

View File

@ -33,7 +33,7 @@ namespace IRaCIS.Core.Application.Service
var taskTaskMedicalReviewRuleQueryable = _taskMedicalReviewRuleRepository.Where(t => t.TrialId == inQuery.TrialId)
.ProjectTo<TaskMedicalReviewRuleView>(_mapper.ConfigurationProvider);
var isHaveMIM = await _repository.AnyAsync<TrialUser>(t => t.User.UserTypeEnum == Domain.Share.UserTypeEnum.MIM);
var isHaveMIM = await _repository.AnyAsync<TrialUser>(t => t.User.UserTypeEnum == Domain.Share.UserTypeEnum.MIM && t.TrialId==inQuery.TrialId);
return (await taskTaskMedicalReviewRuleQueryable.ToListAsync(),new {IsHaveMIM=isHaveMIM});
}

View File

@ -60,6 +60,122 @@ namespace IRaCIS.Core.Application.Service
/// <summary>
/// 产生医学审核任务
/// </summary>
/// <returns></returns>
public async Task<IResponseOutput> GenerateMedicalReviewTask(GenerateMedicalReviewTaskCommand generateCommand)
{
var trialId = generateCommand.TrialId;
var mimUserList = await _trialUserRepository.Where(t => t.User.UserTypeEnum == Domain.Share.UserTypeEnum.MIM && t.TrialId == trialId).Select(t => t.User).ProjectTo<UserSimpleInfo>(_mapper.ConfigurationProvider).ToListAsync();
if (mimUserList.Count == 0)
{
return ResponseOutput.NotOk("没有MIM");
}
var defalutMIMUserId = mimUserList.FirstOrDefault().UserId;
//获取当前医生数据 已经生成的,和配置的数量
var taskTaskMedicalReviewRuleList = await _taskMedicalReviewRuleRepository.Where(t => t.TrialId == trialId).ProjectTo<TaskMedicalReviewRuleView>(_mapper.ConfigurationProvider).ToListAsync();
foreach (var item in taskTaskMedicalReviewRuleList)
{
if (item.IsEnable)
{
if (item.PlanGlobalCount > item.GeneratedGlobalCount)
{
var needGenerateCount = item.PlanGlobalCount - item.GeneratedGlobalCount;
var canGenerateCount = item.ActualGlobalCount - item.GeneratedGlobalCount;
var toGenerateCount = canGenerateCount > needGenerateCount ? needGenerateCount : canGenerateCount;
//分配给MIM
if (toGenerateCount > 0)
{
var toGenerateTaskList = item.ActualGlobalTaskList.Except(item.GeneratedGlobalTaskList).Take(toGenerateCount).ToList();
foreach (var toGenerateTask in toGenerateTaskList)
{
await _taskMedicalReviewRepository.AddAsync(new TaskMedicalReview() { DoctorUserId = (Guid)toGenerateTask.DoctorUserId, TrialId = toGenerateTask.TrialId, VisitTaskId = toGenerateTask.TaskId ,MedicalManagerUserId= defalutMIMUserId });
}
}
}
if (item.PlanJudgeCount > item.GeneratedJudgeCount)
{
var needGenerateCount = item.PlanJudgeCount - item.GeneratedJudgeCount;
var canGenerateCount = item.ActualJudgeCount - item.GeneratedGlobalCount;
var toGenerateCount = canGenerateCount > needGenerateCount ? needGenerateCount : canGenerateCount;
if (toGenerateCount > 0)
{
var toGenerateTaskList = item.ActualJudgeTaskList.Except(item.GeneratedJudgeTaskList).Take(toGenerateCount).ToList();
foreach (var toGenerateTask in toGenerateTaskList)
{
await _taskMedicalReviewRepository.AddAsync(new TaskMedicalReview() { DoctorUserId = (Guid)toGenerateTask.DoctorUserId, TrialId = toGenerateTask.TrialId, VisitTaskId = toGenerateTask.TaskId, MedicalManagerUserId = defalutMIMUserId });
}
}
}
if (item.PlanTumorCount > item.GeneratedTumorCount)
{
var needGenerateCount = item.PlanTumorCount - item.GeneratedTumorCount;
var canGenerateCount = item.ActualTumorCount - item.GeneratedGlobalCount;
var toGenerateCount = canGenerateCount > needGenerateCount ? needGenerateCount : canGenerateCount;
if (toGenerateCount > 0)
{
var toGenerateTaskList = item.ActualTumorTaskList.Except(item.GeneratedTumorTaskList).Take(toGenerateCount).ToList();
foreach (var toGenerateTask in toGenerateTaskList)
{
await _taskMedicalReviewRepository.AddAsync(new TaskMedicalReview() { DoctorUserId = (Guid)toGenerateTask.DoctorUserId, TrialId = toGenerateTask.TrialId, VisitTaskId = toGenerateTask.TaskId, MedicalManagerUserId = defalutMIMUserId });
}
}
}
if (item.PlanVisitCount > item.GeneratedVisitCount)
{
var needGenerateCount = item.PlanVisitCount - item.GeneratedVisitCount;
var canGenerateCount = item.ActualVisitCount - item.GeneratedGlobalCount;
var toGenerateCount = canGenerateCount > needGenerateCount ? needGenerateCount : canGenerateCount;
if (toGenerateCount > 0)
{
var toGenerateTaskList = item.ActualVisitTaskList.Except(item.GeneratedVisitTaskList).Take(toGenerateCount).ToList();
foreach (var toGenerateTask in toGenerateTaskList)
{
await _taskMedicalReviewRepository.AddAsync(new TaskMedicalReview() { DoctorUserId = (Guid)toGenerateTask.DoctorUserId, TrialId = toGenerateTask.TrialId, VisitTaskId = toGenerateTask.TaskId, MedicalManagerUserId = defalutMIMUserId });
}
}
}
}
}
return ResponseOutput.Ok();
}
/// <summary>

View File

@ -283,6 +283,7 @@ 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)
@ -431,6 +432,7 @@ namespace IRaCIS.Core.Application.Service
.Where(t => t.OriginalReReadingTask.DoctorUserId == _userInfo.Id)
.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)

View File

@ -171,6 +171,8 @@ namespace IRaCIS.Core.Application.Service
CreateMap<VisitTask, TaskMedicalReviewView>();
CreateMap<User, UserSimpleInfo>()
.ForMember(o => o.UserId, t => t.MapFrom(u => u.Id))
.ForMember(o => o.UserCode, t => t.MapFrom(u => u.UserCode))
.ForMember(o => o.UserName, t => t.MapFrom(u => u.UserName))
.ForMember(o => o.FullName, t => t.MapFrom(u => u.FullName))
@ -180,18 +182,18 @@ namespace IRaCIS.Core.Application.Service
CreateMap<TaskMedicalReviewRule, TaskMedicalReviewRuleView>()
.ForMember(o => o.DoctorUser, t => t.MapFrom(u => u.DoctorUser))
.ForMember(o => o.ActualVisitTaskIdList, t => t.MapFrom(u => u.DoctorVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Visit && t.TaskState == TaskState.Effect && t.ReadingTaskState==ReadingTaskState.HaveSigned).OrderBy(t=>t.SignTime).Select(t=>t.Id)))
.ForMember(o => o.ActualJudgeTaskIdList, t => t.MapFrom(u => u.DoctorVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Judge && t.TaskState == TaskState.Effect &&
t.ReadingTaskState == ReadingTaskState.HaveSigned).OrderBy(t => t.SignTime).Select(t => t.Id)))
.ForMember(o => o.ActualGlobalTaskIdList, t => t.MapFrom(u => u.DoctorVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Global && t.TaskState == TaskState.Effect &&
t.ReadingTaskState == ReadingTaskState.HaveSigned).OrderBy(t => t.SignTime).Select(t => t.Id)))
.ForMember(o => o.ActualTumorTaskIdList, t => t.MapFrom(u => u.DoctorVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Oncology && t.TaskState == TaskState.Effect &&
t.ReadingTaskState == ReadingTaskState.HaveSigned).OrderBy(t => t.SignTime).Select(t => t.Id)))
.ForMember(o => o.ActualVisitTaskList, t => t.MapFrom(u => u.DoctorVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Visit && t.TaskState == TaskState.Effect && t.ReadingTaskState == ReadingTaskState.HaveSigned).OrderBy(t => t.SignTime).Select(t => new TaskBasicIdView() { TaskId = t.Id, TrialId = t.TrialId, DoctorUserId = t.DoctorUserId })))
.ForMember(o => o.ActualJudgeTaskList, t => t.MapFrom(u => u.DoctorVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Judge && t.TaskState == TaskState.Effect &&
t.ReadingTaskState == ReadingTaskState.HaveSigned).OrderBy(t => t.SignTime).Select(t => new TaskBasicIdView() { TaskId = t.Id, TrialId = t.TrialId, DoctorUserId = t.DoctorUserId })))
.ForMember(o => o.ActualGlobalTaskList, t => t.MapFrom(u => u.DoctorVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Global && t.TaskState == TaskState.Effect &&
t.ReadingTaskState == ReadingTaskState.HaveSigned).OrderBy(t => t.SignTime).Select(t => new TaskBasicIdView() { TaskId = t.Id, TrialId = t.TrialId, DoctorUserId = t.DoctorUserId })))
.ForMember(o => o.ActualTumorTaskList, t => t.MapFrom(u => u.DoctorVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Oncology && t.TaskState == TaskState.Effect &&
t.ReadingTaskState == ReadingTaskState.HaveSigned).OrderBy(t => t.SignTime).Select(t => new TaskBasicIdView() { TaskId = t.Id, TrialId = t.TrialId, DoctorUserId = t.DoctorUserId })))
.ForMember(o => o.GeneratedGlobalTaskIdList, t => t.MapFrom(u => u.TaskMedicalReviewList.Where(t => t.VisitTask.ReadingCategory == ReadingCategory.Global && t.VisitTask.TaskState == TaskState.Effect && t.VisitTask.ReadingTaskState == ReadingTaskState.HaveSigned).OrderBy(t => t.VisitTask.SignTime).Select(t=>t.VisitTaskId)))
.ForMember(o => o.GeneratedJudgeTaskIdList, t => t.MapFrom(u => u.TaskMedicalReviewList.Where(t => t.VisitTask.ReadingCategory == ReadingCategory.Judge && t.VisitTask.TaskState == TaskState.Effect && t.VisitTask.ReadingTaskState == ReadingTaskState.HaveSigned).OrderBy(t => t.VisitTask.SignTime).Select(t => t.VisitTaskId)))
.ForMember(o => o.GeneratedTumorTaskIdList, t => t.MapFrom(u => u.TaskMedicalReviewList.Where(t => t.VisitTask.ReadingCategory == ReadingCategory.Oncology && t.VisitTask.TaskState == TaskState.Effect && t.VisitTask.ReadingTaskState == ReadingTaskState.HaveSigned).OrderBy(t => t.VisitTask.SignTime).Select(t => t.VisitTaskId)))
.ForMember(o => o.GeneratedVisitTaskIdList, t => t.MapFrom(u => u.TaskMedicalReviewList.Where(t => t.VisitTask.ReadingCategory == ReadingCategory.Visit && t.VisitTask.TaskState == TaskState.Effect && t.VisitTask.ReadingTaskState == ReadingTaskState.HaveSigned).OrderBy(t => t.VisitTask.SignTime).Select(t => t.VisitTaskId)));
.ForMember(o => o.GeneratedGlobalTaskList, t => t.MapFrom(u => u.TaskMedicalReviewList.Where(t => t.VisitTask.ReadingCategory == ReadingCategory.Global && t.VisitTask.TaskState == TaskState.Effect && t.VisitTask.ReadingTaskState == ReadingTaskState.HaveSigned).OrderBy(t => t.VisitTask.SignTime).Select(t => new TaskBasicIdView() { TaskId = t.VisitTaskId, TrialId = t.TrialId, DoctorUserId = t.DoctorUserId })))
.ForMember(o => o.GeneratedJudgeTaskList, t => t.MapFrom(u => u.TaskMedicalReviewList.Where(t => t.VisitTask.ReadingCategory == ReadingCategory.Judge && t.VisitTask.TaskState == TaskState.Effect && t.VisitTask.ReadingTaskState == ReadingTaskState.HaveSigned).OrderBy(t => t.VisitTask.SignTime).Select(t => new TaskBasicIdView() { TaskId = t.VisitTaskId, TrialId = t.TrialId, DoctorUserId = t.DoctorUserId })))
.ForMember(o => o.GeneratedTumorTaskList, t => t.MapFrom(u => u.TaskMedicalReviewList.Where(t => t.VisitTask.ReadingCategory == ReadingCategory.Oncology && t.VisitTask.TaskState == TaskState.Effect && t.VisitTask.ReadingTaskState == ReadingTaskState.HaveSigned).OrderBy(t => t.VisitTask.SignTime).Select(t => new TaskBasicIdView() {TaskId = t.VisitTaskId,TrialId=t.TrialId,DoctorUserId=t.DoctorUserId })))
.ForMember(o => o.GeneratedVisitTaskList, t => t.MapFrom(u => u.TaskMedicalReviewList.Where(t => t.VisitTask.ReadingCategory == ReadingCategory.Visit && t.VisitTask.TaskState == TaskState.Effect && t.VisitTask.ReadingTaskState == ReadingTaskState.HaveSigned).OrderBy(t => t.VisitTask.SignTime).Select(t => new TaskBasicIdView() { TaskId = t.VisitTaskId, TrialId = t.TrialId, DoctorUserId = t.DoctorUserId })));
CreateMap<TaskMedicalReviewRuleAddOrEdit, TaskMedicalReviewRule>();

View File

@ -37,6 +37,8 @@ namespace IRaCIS.Core.Domain.Models
public VisitTask NewReReadingTask { get; set; }
public VisitTask RootReReadingTask { get; set; }
public VisitTask OriginalReReadingTask { get; set; }
//申请回退类型