医学审核列表修改

Uat_Study
hang 2022-07-07 14:03:31 +08:00
parent 4239c94a04
commit 5944393392
5 changed files with 161 additions and 121 deletions

View File

@ -88,9 +88,15 @@
</member>
<member name="T:IRaCIS.Core.Application.Service.TaskMedicalReviewRuleService">
<summary>
医学审核生成规则
医学审核生成规则 废弃
</summary>
</member>
<member name="M:IRaCIS.Core.Application.Service.TaskMedicalReviewRuleService.GenerateMedicalReviewTask(IRaCIS.Core.Application.ViewModel.GenerateMedicalReviewTaskCommand)">
<summary>
产生医学审核
</summary>
<returns></returns>
</member>
<member name="T:IRaCIS.Core.Application.Service.TaskMedicalReviewService">
<summary>
任务医学审核
@ -103,10 +109,18 @@
<param name="inQuery"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.TaskMedicalReviewService.GenerateMedicalReviewTask(IRaCIS.Core.Application.ViewModel.GenerateMedicalReviewTaskCommand)">
<member name="M:IRaCIS.Core.Application.Service.TaskMedicalReviewService.GetGenerateMedicalReviewTaskList(IRaCIS.Core.Application.ViewModel.TaskMedicalReviewQuery)">
<summary>
产生医学审核任务
产生医学审核列表
</summary>
<param name="inQuery"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.TaskMedicalReviewService.ManuallyGeneratedAndAssignedMedicalReview(IRaCIS.Core.Application.ViewModel.ManuallyGeneratedAndAssignedMedicalReviewCommand)">
<summary>
手动生成并分配医学审核
</summary>
<param name="command"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.TaskMedicalReviewService.GetMIMMedicalReviewTaskList(IRaCIS.Core.Application.ViewModel.TaskMedicalReviewQuery)">

View File

@ -36,7 +36,28 @@ namespace IRaCIS.Core.Application.ViewModel
public class GenerateMedicalReviewTaskView : VisitTaskViewBasic
{
//开始读片时间
public DateTime? FirstReadingTime { get; set; }
//读片时间差
public TimeSpan? ReadingDurationTimeSpan { get; set; }
//时间差 换成字符串
public string ReadingDuration
{
get
{
if (!ReadingDurationTimeSpan.HasValue )
return "";
else return /*string.Format("{0}天{1}小时{2}分钟", (SignTime - FirstReadingTime)?.Days, (SignTime - FirstReadingTime)?.Hours, (SignTime - FirstReadingTime)?.Minutes)*/
string.Format("{0}分钟", (ReadingDurationTimeSpan)?.TotalMinutes);
}
}
//是否产生裁判
public bool IsGenerateJudge { get; set; }
//审核次数
public int? GeneratedMedicalReviewCount { get; set; }
public UserSimpleInfo DoctorUser { get; set; }
}

View File

@ -11,17 +11,18 @@ using IRaCIS.Core.Application.ViewModel;
namespace IRaCIS.Core.Application.Service
{
/// <summary>
/// 医学审核生成规则
/// 医学审核生成规则 废弃
/// </summary>
[ApiExplorerSettings(GroupName = "Trial")]
public class TaskMedicalReviewRuleService : BaseService, ITaskMedicalReviewRuleService
{
private readonly IRepository<TaskMedicalReviewRule> _taskMedicalReviewRuleRepository;
public TaskMedicalReviewRuleService(IRepository<TaskMedicalReviewRule> taskMedicalReviewRuleRepository)
private readonly IRepository<TaskMedicalReview> _taskMedicalReviewRepository;
public TaskMedicalReviewRuleService(IRepository<TaskMedicalReviewRule> taskMedicalReviewRuleRepository,IRepository<TaskMedicalReview> taskMedicalReviewRepository)
{
_taskMedicalReviewRuleRepository = taskMedicalReviewRuleRepository;
_taskMedicalReviewRepository = taskMedicalReviewRepository;
}
@ -68,6 +69,121 @@ namespace IRaCIS.Core.Application.Service
return ResponseOutput.Ok();
}
/// <summary>
/// 产生医学审核
/// </summary>
/// <returns></returns>
[Obsolete]
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();
Guid? defalutMIMUserId = null /*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.ExceptBy(item.GeneratedGlobalTaskList.Select(t => t.TaskId), t => t.TaskId).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.ExceptBy(item.GeneratedJudgeTaskList.Select(t => t.TaskId), t => t.TaskId).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.ExceptBy(item.GeneratedTumorTaskList.Select(t => t.TaskId), t => t.TaskId).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.ExceptBy(item.GeneratedVisitTaskList.Select(t => t.TaskId), t => t.TaskId).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 });
}
}
}
}
}
await _taskMedicalReviewRepository.SaveChangesAsync();
return ResponseOutput.Ok();
}
}
}

View File

@ -113,120 +113,7 @@ namespace IRaCIS.Core.Application.Service
}
/// <summary>
/// 产生医学审核
/// </summary>
/// <returns></returns>
[Obsolete]
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();
Guid? defalutMIMUserId = null /*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.ExceptBy(item.GeneratedGlobalTaskList.Select(t => t.TaskId), t => t.TaskId).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.ExceptBy(item.GeneratedJudgeTaskList.Select(t => t.TaskId), t => t.TaskId).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.ExceptBy(item.GeneratedTumorTaskList.Select(t => t.TaskId), t => t.TaskId).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.ExceptBy(item.GeneratedVisitTaskList.Select(t => t.TaskId), t => t.TaskId).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 });
}
}
}
}
}
await _taskMedicalReviewRepository.SaveChangesAsync();
return ResponseOutput.Ok();
}
/// <summary>

View File

@ -157,6 +157,8 @@ namespace IRaCIS.Core.Application.Service
.ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.IsAnalysisCreate ? u.BlindTrialSiteCode : u.Subject.TrialSite.TrialSiteCode))
.ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.IsAnalysisCreate ? u.BlindSubjectCode : u.Subject.Code))
.ForMember(o => o.GeneratedMedicalReviewCount, t => t.MapFrom(u => u.TaskMedicalReviewList.Count()))
.ForMember(o => o.IsGenerateJudge, t => t.MapFrom(u => u.JudgeVisitTaskId !=null))
.ForMember(o => o.ReadingDurationTimeSpan, t => t.MapFrom(u => u.SignTime - u.FirstReadingTime))
;