Uat_Study
hang 2022-06-29 14:59:10 +08:00
parent 9469532496
commit 7a61ede334
10 changed files with 145 additions and 47 deletions

View File

@ -79,6 +79,12 @@
<param name="command"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.TaskMedicalReviewService.GetMIMUserList">
<summary>
获取医学经理列表
</summary>
<returns></returns>
</member>
<member name="T:IRaCIS.Core.Application.Service.TaskMedicalReviewRuleService">
<summary>
医学审核生成规则
@ -1123,6 +1129,16 @@
获取访视列表
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListIndto.IsVisit">
<summary>
是否是访视
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListIndto.IsBaseLine">
<summary>
是否是基线
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataPDFListOutDto.TrialId">
<summary>
项目ID
@ -4706,20 +4722,6 @@
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Application.Services.ReadingQuestionService.VerifySystemQuestionIsSetJudgeAnswer(IRaCIS.Core.Application.Service.Reading.Dto.VerifySystemQuestionIsSetJudgeAnswerInDto)">
<summary>
验证系统问题是否设置裁片答案
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Application.Services.ReadingQuestionService.VerifyTrialQuestionIsSetJudgeAnswer(IRaCIS.Core.Application.Service.Reading.Dto.VerifySystemQuestionIsSetJudgeAnswerInDto)">
<summary>
验证项目问题是否设置裁片答案
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Application.Services.ReadingQuestionService.SetSystemReadingQuestionCriterionIsCompleteConfig(IRaCIS.Core.Application.Service.Reading.Dto.SetSystemReadingQuestionCriterionIsIsCompleteConfig)">
<summary>
设置系统问题标准是否完成配置

View File

@ -7,6 +7,7 @@ using System;
using IRaCIS.Core.Domain.Share;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json;
namespace IRaCIS.Core.Application.ViewModel
{
@ -20,6 +21,43 @@ namespace IRaCIS.Core.Application.ViewModel
public UserSimpleInfo DoctorUser { get; set; }
[JsonIgnore]
public List<Guid> ActualVisitTaskIdList { get; set; }
[JsonIgnore]
public List<Guid> ActualJudgeTaskIdList { get; set; }
[JsonIgnore]
public List<Guid> ActualGlobalTaskIdList { get; set; }
[JsonIgnore]
public List<Guid> ActualTumorTaskIdList { get; set; }
[JsonIgnore]
public List<Guid> GeneratedVisitTaskIdList { get; set; }
[JsonIgnore]
public List<Guid> GeneratedJudgeTaskIdList { get; set; }
[JsonIgnore]
public List<Guid> GeneratedGlobalTaskIdList { get; set; }
[JsonIgnore]
public List<Guid> GeneratedTumorTaskIdList { get; set; }
public int GeneratedVisitCount => GeneratedVisitTaskIdList.Count;
public int GeneratedJudgeCount => GeneratedJudgeTaskIdList.Count;
public int GeneratedGlobalCount => GeneratedGlobalTaskIdList.Count;
public int GeneratedTumorCount => GeneratedTumorTaskIdList.Count;
public int ActualVisitCount => ActualVisitTaskIdList.Count;
public int ActualJudgeCount => ActualJudgeTaskIdList.Count;
public int ActualGlobalCount => ActualGlobalTaskIdList.Count;
public int ActualTumorCount => ActualTumorTaskIdList.Count;
}
///<summary>TaskTaskMedicalReviewRuleQuery 列表查询参数模型</summary>

View File

@ -14,7 +14,7 @@ namespace IRaCIS.Core.Application.Interfaces
{
Task<List<TaskMedicalReviewRuleView>> GetTaskMedicalReviewRuleList(TaskMedicalReviewRuleQuery queryTaskTaskMedicalReviewRule);
//Task<List<TaskMedicalReviewRuleView>> GetTaskMedicalReviewRuleList(TaskMedicalReviewRuleQuery queryTaskTaskMedicalReviewRule);
Task<IResponseOutput> AddOrUpdateTaskMedicalReviewRule(TaskMedicalReviewRuleAddOrEdit addOrEditTaskTaskMedicalReviewRule);

View File

@ -20,9 +20,19 @@ namespace IRaCIS.Core.Application.Service
private readonly IRepository<TaskMedicalReview> _taskMedicalReviewRepository;
public TaskMedicalReviewService(IRepository<TaskMedicalReview> taskMedicalReviewRepository)
private readonly IRepository<TrialUser> _trialUserRepository;
private readonly IRepository<TaskMedicalReviewRule> _taskMedicalReviewRuleRepository;
public TaskMedicalReviewService(IRepository<TaskMedicalReview> taskMedicalReviewRepository,IRepository<TrialUser> trialUserRepository, IRepository<TaskMedicalReviewRule> taskMedicalReviewRuleRepository)
{
_taskMedicalReviewRepository = taskMedicalReviewRepository;
_trialUserRepository = trialUserRepository;
_taskMedicalReviewRuleRepository = taskMedicalReviewRuleRepository;
}
/// <summary>
@ -52,8 +62,6 @@ namespace IRaCIS.Core.Application.Service
/// <summary>
/// MIM 医学审核
/// </summary>
@ -108,5 +116,16 @@ namespace IRaCIS.Core.Application.Service
}
/// <summary>
/// 获取医学经理列表
/// </summary>
/// <returns></returns>
public async Task<List<UserSimpleInfo>> GetMIMUserList()
{
var query = _trialUserRepository.Where(t => t.User.UserTypeEnum == Domain.Share.UserTypeEnum.MIM).Select(t => t.User).ProjectTo<UserSimpleInfo>(_mapper.ConfigurationProvider);
return await query.ToListAsync();
}
}
}

View File

@ -17,23 +17,25 @@ namespace IRaCIS.Core.Application.Service
public class TaskMedicalReviewRuleService : BaseService, ITaskMedicalReviewRuleService
{
private readonly IRepository<TaskMedicalReviewRule> _taskTaskMedicalReviewRuleRepository;
private readonly IRepository<TaskMedicalReviewRule> _taskMedicalReviewRuleRepository;
public TaskMedicalReviewRuleService(IRepository<TaskMedicalReviewRule> taskTaskMedicalReviewRuleRepository)
public TaskMedicalReviewRuleService(IRepository<TaskMedicalReviewRule> taskMedicalReviewRuleRepository)
{
_taskTaskMedicalReviewRuleRepository = taskTaskMedicalReviewRuleRepository;
_taskMedicalReviewRuleRepository = taskMedicalReviewRuleRepository;
}
[HttpPost]
public async Task<List<TaskMedicalReviewRuleView>> GetTaskMedicalReviewRuleList(TaskMedicalReviewRuleQuery inQuery)
public async Task<(List<TaskMedicalReviewRuleView>,object)> GetTaskMedicalReviewRuleList(TaskMedicalReviewRuleQuery inQuery)
{
var taskTaskMedicalReviewRuleQueryable = _taskTaskMedicalReviewRuleRepository.Where(t => t.TrialId == inQuery.TrialId)
var taskTaskMedicalReviewRuleQueryable = _taskMedicalReviewRuleRepository.Where(t => t.TrialId == inQuery.TrialId)
.ProjectTo<TaskMedicalReviewRuleView>(_mapper.ConfigurationProvider);
return await taskTaskMedicalReviewRuleQueryable.ToListAsync();
var isHaveMIM = await _repository.AnyAsync<TrialUser>(t => t.User.UserTypeEnum == Domain.Share.UserTypeEnum.MIM);
return (await taskTaskMedicalReviewRuleQueryable.ToListAsync(),new {IsHaveMIM=isHaveMIM});
}
[HttpPost]
@ -45,7 +47,7 @@ namespace IRaCIS.Core.Application.Service
VerifyMsg = "已有该医生配置,不允许继续增加"
};
var entity = await _taskTaskMedicalReviewRuleRepository.InsertOrUpdateAsync(addOrEditTaskTaskMedicalReviewRule, true, verifyExp1);
var entity = await _taskMedicalReviewRuleRepository.InsertOrUpdateAsync(addOrEditTaskTaskMedicalReviewRule, true, verifyExp1);
return ResponseOutput.Ok(entity.Id.ToString());
@ -55,7 +57,7 @@ namespace IRaCIS.Core.Application.Service
[HttpDelete("{taskMedicalReviewRuleId:guid}")]
public async Task<IResponseOutput> DeleteTaskMedicalReviewRule(Guid taskMedicalReviewRuleId)
{
var success = await _taskTaskMedicalReviewRuleRepository.DeleteFromQueryAsync(t => t.Id == taskMedicalReviewRuleId);
var success = await _taskMedicalReviewRuleRepository.DeleteFromQueryAsync(t => t.Id == taskMedicalReviewRuleId);
return ResponseOutput.Ok();
}

View File

@ -18,7 +18,7 @@ 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));
List<Guid> subjectIdList=new List<Guid> ();
List<Guid> subjectIdList = new List<Guid>();
bool isJudgeDoctor = false;
@ -35,7 +35,7 @@ namespace IRaCIS.Core.Application.Service
.ForMember(o => o.ApplyedTotalTaskCount, t => t.MapFrom(u => u.Trial.VisitTaskList.Count(t => t.DoctorUserId != null)))
.ForMember(o => o.SelfApplyedSubjectCount, t => t.MapFrom(u => u.Trial.SubjectDoctorUserList.Where(t => t.DoctorUserId == u.DoctorUserId && t.SubjectArmVisitTaskList.Any(c => c.DoctorUserId != null)).Count()))
.ForMember(o => o.SelfSubjectCount, t => t.MapFrom(u => u.Trial.SubjectDoctorUserList.Where(t => t.DoctorUserId == u.DoctorUserId ).Count()))
.ForMember(o => o.SelfSubjectCount, t => t.MapFrom(u => u.Trial.SubjectDoctorUserList.Where(t => t.DoctorUserId == u.DoctorUserId).Count()))
.ForMember(o => o.ApplyedTotalSubjectCount, t => t.MapFrom(u => u.Trial.SubjectList.Count(c => c.SubjectVisitTaskList.Any(d => d.DoctorUserId != null))))
@ -43,7 +43,7 @@ namespace IRaCIS.Core.Application.Service
//该医生未应用Subject 数量
.ForMember(o => o.WaitApplySelfSubjectCount, t => t.MapFrom(u =>
subjectIdList.Count == 0 ? u.Trial.SubjectDoctorUserList.Where(t => t.DoctorUserId == u.DoctorUserId && t.SubjectArmVisitTaskList.Where(t=> isJudgeDoctor? t.ArmEnum==Arm.JudgeArm:t.ArmEnum!= Arm.JudgeArm).Any(c => c.DoctorUserId == null)).Count()
subjectIdList.Count == 0 ? u.Trial.SubjectDoctorUserList.Where(t => t.DoctorUserId == u.DoctorUserId && t.SubjectArmVisitTaskList.Where(t => isJudgeDoctor ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Any(c => c.DoctorUserId == null)).Count()
: u.Trial.SubjectDoctorUserList.Where(t => t.DoctorUserId == u.DoctorUserId && subjectIdList.Contains(t.SubjectId) && t.SubjectArmVisitTaskList.Where(t => isJudgeDoctor ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Any(c => c.DoctorUserId == null)).Count()
))
@ -54,13 +54,13 @@ namespace IRaCIS.Core.Application.Service
))
.ForMember(o => o.WaitApplySelfTaskCount, t => t.MapFrom(u =>
subjectIdList.Count==0? u.Trial.SubjectDoctorUserList.Where(d => d.DoctorUserId == u.DoctorUserId).SelectMany(t => t.SubjectArmVisitTaskList.Where(t => isJudgeDoctor ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Where(t => t.DoctorUserId == null)).Count()
subjectIdList.Count == 0 ? u.Trial.SubjectDoctorUserList.Where(d => d.DoctorUserId == u.DoctorUserId).SelectMany(t => t.SubjectArmVisitTaskList.Where(t => isJudgeDoctor ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Where(t => t.DoctorUserId == null)).Count()
: u.Trial.SubjectDoctorUserList.Where(d => d.DoctorUserId == u.DoctorUserId && subjectIdList.Contains(d.SubjectId)).SelectMany(t => t.SubjectArmVisitTaskList.Where(t => isJudgeDoctor ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Where(t => t.DoctorUserId == null)).Count()
))
.ForMember(o => o.WaitApplyTotalTaskCount, t => t.MapFrom(u =>
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() ))
: u.Trial.VisitTaskList.Where(t => isJudgeDoctor ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Where(t => t.DoctorUserId == null && subjectIdList.Contains(t.SubjectId)).Count()))
@ -107,7 +107,7 @@ 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<VisitTaskReReading, ReReadingTaskView>().IncludeMembers(t=>t.NewReReadingTask)
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))
@ -144,7 +144,7 @@ namespace IRaCIS.Core.Application.Service
.ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.TrialSite.TrialSiteCode))
.ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.Code))
.ForMember(o => o.IsJudge, t => t.MapFrom(u => isJudgeDoctor))
.ForMember(o => o.IsAssignedDoctorUser, t => t.MapFrom(u => u.SubjectDoctorList.Where(t=>isJudgeDoctor? t.ArmEnum == Arm.JudgeArm: t.ArmEnum != Arm.JudgeArm).Any()))
.ForMember(o => o.IsAssignedDoctorUser, t => t.MapFrom(u => u.SubjectDoctorList.Where(t => isJudgeDoctor ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Any()))
.ForMember(o => o.TotalDoctorUserList, t => t.MapFrom(u => u.SubjectDoctorList.Where(t => isJudgeDoctor ? true : t.ArmEnum != Arm.JudgeArm).OrderBy(t => t.ArmEnum)));
@ -178,7 +178,20 @@ namespace IRaCIS.Core.Application.Service
CreateMap<TaskMedicalReviewRule, TaskMedicalReviewRuleView>();
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.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)));
CreateMap<TaskMedicalReviewRuleAddOrEdit, TaskMedicalReviewRule>();

View File

@ -80,6 +80,14 @@ namespace IRaCIS.Core.Domain.Models
[ForeignKey("VisitTaskId")]
public VisitTask VisitTask { get; set; }
public Guid TrialId { get; set; }
public Guid DoctorUserId { get; set; }
public TaskMedicalReviewRule TaskMedicalReviewRule { get; set; }
}

View File

@ -7,6 +7,8 @@ using System;
using IRaCIS.Core.Domain.Share;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Collections.Generic;
namespace IRaCIS.Core.Domain.Models
{
///<summary>
@ -86,10 +88,18 @@ namespace IRaCIS.Core.Domain.Models
/// <summary>
/// PlanTumorCount
/// </summary>
/// </summaryDoctorVisitTaskList
[Required]
public int PlanTumorCount { get; set; }
public User DoctorUser { get; set; }
public List<VisitTask> DoctorVisitTaskList { get; set; }
public List<TaskMedicalReview> TaskMedicalReviewList { get; set; }
}
}

View File

@ -146,6 +146,8 @@ namespace IRaCIS.Core.Domain.Models
public TaskAllocationRule DoctorTaskAllocationRule { get; set; }
public TaskMedicalReviewRule DoctorTaskMedicalReviewRule { get; set; }

View File

@ -90,6 +90,10 @@ namespace IRaCIS.Core.Infra.EFCore
modelBuilder.Entity<TaskAllocationRule>().HasMany(t => t.DoctorVisitTaskList).WithOne(t => t.DoctorTaskAllocationRule).HasForeignKey(t=> new { t.DoctorUserId,t.TrialId } ).HasPrincipalKey(u=> new { u.DoctorUserId,u.TrialId });
modelBuilder.Entity<TaskMedicalReviewRule>().HasMany(t => t.DoctorVisitTaskList).WithOne(t => t.DoctorTaskMedicalReviewRule).HasForeignKey(t => new { t.DoctorUserId, t.TrialId }).HasPrincipalKey(u => new { u.DoctorUserId, u.TrialId });
modelBuilder.Entity<TaskMedicalReviewRule>().HasMany(t => t.TaskMedicalReviewList).WithOne(t => t.TaskMedicalReviewRule).HasForeignKey(t => new { t.DoctorUserId, t.TrialId }).HasPrincipalKey(u => new { u.DoctorUserId, u.TrialId });
modelBuilder.Entity<SubjectUser>().HasMany(t => t.SubjectArmVisitTaskList).WithOne(t=>t.SujectArm).HasForeignKey(t => new { t.SubjectId,t.ArmEnum}).HasPrincipalKey(u => new { u.SubjectId,u.ArmEnum });
modelBuilder.Entity<VisitTask>().HasMany(t => t.JudgeVisitList).WithOne(t=>t.JudgeVisitTask);
modelBuilder.Entity<Dictionary>().HasMany(t => t.ChildList).WithOne(t => t.Parent);