修改一致性核查

This commit is contained in:
2022-06-14 16:10:00 +08:00
parent b2fcd11279
commit f5fb83ab37
6 changed files with 106 additions and 15 deletions
@@ -66,12 +66,11 @@ namespace IRaCIS.Core.Application.ViewModel
public class ReadingTaskView: VisitTaskView
{
public ReadingTaskState ReadingTaskState { get; set; }
//建议完成时间
public int SuggesteDays { get; set; }
public ReadingTaskState ReadingTaskState { get; set; }
public DateTime? SignTime { get; set; }
//是否回退过
@@ -79,6 +78,30 @@ namespace IRaCIS.Core.Application.ViewModel
}
public class ReReadingTaskView : VisitTaskView
{
public ReadingTaskState ReadingTaskState { get; set; }
//建议完成时间
public int SuggesteDays { get; set; }
public DateTime? SignTime { get; set; }
//重阅原始编号
public string ReReadingOriginalTaskCode { get; set; }
public RequestReturnType RequestReturnType { get; set; }
public DateTime? RequestReturnTime { get; set; }
public string RequestReturnReason { get; set; } = string.Empty;
}
public class HistoryReadingDoctorUser
{
@@ -118,6 +141,8 @@ namespace IRaCIS.Core.Application.ViewModel
public DateTime? BeginAllocateDate { get; set; }
public DateTime? EndAllocateDate { get; set; }
public Guid? OriginalReReadingId { get; set; }
}
public class SubjectAssignQuery : PageInput
@@ -117,7 +117,7 @@ namespace IRaCIS.Core.Application.Service
/// <summary>
/// 获取影像阅片列表 相比而言多了几个字段 和配置信息
/// 获取影像阅片列表 (排除重阅的) 相比而言多了几个字段 和配置信息
/// </summary>
/// <param name="queryVisitTask"></param>
/// <returns></returns>
@@ -130,7 +130,6 @@ namespace IRaCIS.Core.Application.Service
.WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
.WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId)
.WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory)
.WhereIf(queryVisitTask.ReadingCategory == null, t => t.ReadingCategory != ReadingCategory.Judge)
.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
.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))
@@ -147,6 +146,40 @@ namespace IRaCIS.Core.Application.Service
return (pageList, trialTaskConfig);
}
/// <summary>
/// 获取重阅影像阅片列表
/// </summary>
/// <param name="queryVisitTask"></param>
/// <returns></returns>
[HttpPost]
public async Task<PageOutput<ReReadingTaskView>> GetReReadingTaskList(VisitTaskQuery queryVisitTask)
{
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)
.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.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory)
.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
.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))
.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);
return pageList;
}
/// <summary>
@@ -391,12 +424,12 @@ namespace IRaCIS.Core.Application.Service
waitAllocationDoctorList.ForEach(doctor =>
{
integerPlan += (int)Math.Floor((double)(subjectCount * doctor.PlanReadingRatio ) / 100);
integerPlan += (int)Math.Floor((double)(subjectCount * doctor.PlanReadingRatio) / 100);
});
var specialSubjectCount = subjectCount - integerPlan;
var specialSubjectCount = subjectCount - integerPlan;
//按照医生维度 分配Subject
foreach (var doctor in waitAllocationDoctorList)
@@ -465,7 +498,7 @@ namespace IRaCIS.Core.Application.Service
});
var specialSubjectCount = (subjectCount * 2) - integerPlan;
var specialSubjectCount = (subjectCount * 2) - integerPlan;
//按照医生维度 分配Subject
foreach (var doctor in waitAllocationDoctorList)
@@ -485,7 +518,7 @@ namespace IRaCIS.Core.Application.Service
var yuShu = (subjectCount * doctor.PlanReadingRatio * 2) % 100;
if ( yuShu != 0)
if (yuShu != 0)
{
if (specialSubjectCount > 0)
{
@@ -496,7 +529,7 @@ namespace IRaCIS.Core.Application.Service
}
//如果计划的数量 大于已经分配的数量 那么该医生 可以分配新的Subject
if (planSubjectCount > hasAssignedSubjectCount)
@@ -509,7 +542,7 @@ namespace IRaCIS.Core.Application.Service
//取需要分配的数量 并且没有分配给其他医生的包括自己
var assignSubjectIdList = subjectList.Where(t => !hasAssignedSubjectIdList.Contains(t.SubjectId) && !otherExceptDoctorIdList.Contains(t.SubjectId))
.Select(t => t.SubjectId).Take((planSubjectCount - hasAssignedSubjectCount) ).ToList();
.Select(t => t.SubjectId).Take((planSubjectCount - hasAssignedSubjectCount)).ToList();
foreach (var assignSubjectId in assignSubjectIdList)
{
@@ -63,6 +63,18 @@ 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>()
.ForMember(o => o.ReReadingOriginalTaskCode, t => t.MapFrom(u => u.OriginalReReadingTask.TaskCode))
.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));