修改一致性核查
parent
b2fcd11279
commit
f5fb83ab37
|
@ -66,12 +66,11 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
|
|
||||||
public class ReadingTaskView: VisitTaskView
|
public class ReadingTaskView: VisitTaskView
|
||||||
{
|
{
|
||||||
|
public ReadingTaskState ReadingTaskState { get; set; }
|
||||||
|
|
||||||
//建议完成时间
|
//建议完成时间
|
||||||
public int SuggesteDays { get; set; }
|
public int SuggesteDays { get; set; }
|
||||||
|
|
||||||
public ReadingTaskState ReadingTaskState { get; set; }
|
|
||||||
|
|
||||||
public DateTime? SignTime { 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
|
public class HistoryReadingDoctorUser
|
||||||
{
|
{
|
||||||
|
@ -118,6 +141,8 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
public DateTime? BeginAllocateDate { get; set; }
|
public DateTime? BeginAllocateDate { get; set; }
|
||||||
|
|
||||||
public DateTime? EndAllocateDate { get; set; }
|
public DateTime? EndAllocateDate { get; set; }
|
||||||
|
|
||||||
|
public Guid? OriginalReReadingId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class SubjectAssignQuery : PageInput
|
public class SubjectAssignQuery : PageInput
|
||||||
|
|
|
@ -117,7 +117,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取影像阅片列表 相比而言多了几个字段 和配置信息
|
/// 获取影像阅片列表 (排除重阅的) 相比而言多了几个字段 和配置信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="queryVisitTask"></param>
|
/// <param name="queryVisitTask"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
@ -130,7 +130,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
|
.WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
|
||||||
.WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId)
|
.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 == queryVisitTask.ReadingCategory)
|
||||||
.WhereIf(queryVisitTask.ReadingCategory == null, t => t.ReadingCategory != ReadingCategory.Judge)
|
|
||||||
.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
|
.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.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(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode))
|
||||||
|
@ -147,6 +146,40 @@ namespace IRaCIS.Core.Application.Service
|
||||||
return (pageList, trialTaskConfig);
|
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>
|
/// <summary>
|
||||||
|
@ -391,7 +424,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
waitAllocationDoctorList.ForEach(doctor =>
|
waitAllocationDoctorList.ForEach(doctor =>
|
||||||
{
|
{
|
||||||
|
|
||||||
integerPlan += (int)Math.Floor((double)(subjectCount * doctor.PlanReadingRatio ) / 100);
|
integerPlan += (int)Math.Floor((double)(subjectCount * doctor.PlanReadingRatio) / 100);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -485,7 +518,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
var yuShu = (subjectCount * doctor.PlanReadingRatio * 2) % 100;
|
var yuShu = (subjectCount * doctor.PlanReadingRatio * 2) % 100;
|
||||||
|
|
||||||
if ( yuShu != 0)
|
if (yuShu != 0)
|
||||||
{
|
{
|
||||||
if (specialSubjectCount > 0)
|
if (specialSubjectCount > 0)
|
||||||
{
|
{
|
||||||
|
@ -509,7 +542,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
//取需要分配的数量 并且没有分配给其他医生的包括自己
|
//取需要分配的数量 并且没有分配给其他医生的包括自己
|
||||||
var assignSubjectIdList = subjectList.Where(t => !hasAssignedSubjectIdList.Contains(t.SubjectId) && !otherExceptDoctorIdList.Contains(t.SubjectId))
|
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)
|
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.FullName, t => t.MapFrom(u => u.DoctorUser.FullName))
|
||||||
.ForMember(o => o.UserTypeShortName, t => t.MapFrom(u => u.DoctorUser.UserTypeRole.UserTypeShortName));
|
.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));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -161,8 +161,8 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
dialogMsg.AppendLine($"<br/>");
|
||||||
dialogMsg.AppendLine($"<br>存在问题如下:");
|
dialogMsg.AppendLine($"<br><span style='color: #f00'>存在问题如下:</span>");
|
||||||
|
|
||||||
num = 0;
|
num = 0;
|
||||||
foreach (var item in dbExceptExcel)
|
foreach (var item in dbExceptExcel)
|
||||||
|
@ -174,14 +174,14 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
|
||||||
foreach (var item in excelExceptDB)
|
foreach (var item in excelExceptDB)
|
||||||
{
|
{
|
||||||
num++;
|
num++;
|
||||||
dialogMsg.AppendLine($"<br>{num}.IRC 缺少{item.StudyDate}的;{item.Modality}影像检查 ");
|
dialogMsg.AppendLine($"<br>{num}.IRC 缺少{item.StudyDate}的{item.Modality}影像检查 ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dialogMsg.AppendLine($"<br/>");
|
||||||
dialogMsg.AppendLine(@$"<br>说明:为高效解决/处理以上全部质疑问题,麻烦您准确核实实际影像检查情况。请注意影像日期与实际检查的日期可能会不一致,部分检查(如PET -CT)可能同时存在多种模态影像。准确核实后,请回复该访视正确的影像检查情况。");
|
dialogMsg.AppendLine(@$"<br>说明:为高效解决/处理以上全部质疑问题,麻烦您准确核实实际影像检查情况。请注意影像日期与实际检查的日期可能会不一致,部分检查(如PET -CT)可能同时存在多种模态影像。准确核实后,请回复该访视正确的影像检查情况。");
|
||||||
|
|
||||||
dbSV.CheckResult = "根据导入的一致性核查数据,请确认本访视以下不一致检查项信息:" + String.Join(" | ", dbExceptExcel.Select(t => $"EDC 缺少:{t.StudyDate} {t.Modality} ")) + " | "
|
dbSV.CheckResult = "根据导入的一致性核查数据,请确认本访视以下不一致检查项信息:" + String.Join(" | ", dbExceptExcel.Select(t => $"EDC 缺少:{t.StudyDate} {t.Modality} ")) + " | "
|
||||||
+ String.Join(" | ", excelExceptDB.Select(t => $"IRC 缺少:{t.StudyDate} {t.Modality}"));
|
+ String.Join(" | ", excelExceptDB.Select(t => $"IRC 缺少:{t.StudyDate} {t.Modality}"));
|
||||||
//新增一致性核查质疑记录
|
//新增一致性核查质疑记录
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -80,6 +80,16 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
HaveSigned=2
|
HaveSigned=2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum RequestReturnType
|
||||||
|
{
|
||||||
|
Default = 0,
|
||||||
|
|
||||||
|
DocotorApply = 1,
|
||||||
|
|
||||||
|
TrialGroupApply = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -139,6 +139,17 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
//是否回退过
|
//是否回退过
|
||||||
public bool IsReturned { get; set; }
|
public bool IsReturned { get; set; }
|
||||||
|
|
||||||
|
//是否 重阅
|
||||||
|
public bool IsReReading { get; set; }
|
||||||
|
|
||||||
|
//重阅原始任务Id
|
||||||
|
public Guid? OriginalReReadingId { get; set; }
|
||||||
|
|
||||||
|
public VisitTask OriginalReReadingTask { get; set; }
|
||||||
|
|
||||||
|
public RequestReturnType RequestReturnType { get; set; }
|
||||||
|
public DateTime? RequestReturnTime { get; set; }
|
||||||
|
public string RequestReturnReason { get; set; } = string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue