|
|
|
@ -93,13 +93,13 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId)
|
|
|
|
|
.Where(t=>t.ReadingCategory==ReadingCategory.Judge)
|
|
|
|
|
.Where(t => t.ReadingCategory == ReadingCategory.Judge)
|
|
|
|
|
|
|
|
|
|
.WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory)
|
|
|
|
|
.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.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId)
|
|
|
|
|
.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
|
|
|
|
|
.WhereIf(queryVisitTask.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState)
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName))
|
|
|
|
@ -130,7 +130,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
public async Task<(PageOutput<ReadingTaskView>, object)> GetReadingTaskList(VisitTaskQuery queryVisitTask)
|
|
|
|
|
{
|
|
|
|
|
var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId)
|
|
|
|
|
.Where( t => t.OriginalReReadingId == null && t.DoctorUserId !=null)
|
|
|
|
|
.Where(t => t.OriginalReReadingId == null && t.DoctorUserId != null)
|
|
|
|
|
|
|
|
|
|
.WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
|
|
|
|
|
.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
|
|
|
|
@ -192,21 +192,46 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
/// IR 待阅片任务列表(Subject 维度统计)
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpGet("{trialId:guid}")]
|
|
|
|
|
public async Task<List<IRUnReadSubjectView>> GetIRUnReadSubjectTaskList(Guid trialId)
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<IRUnReadSubjectView>> GetIRUnReadSubjectTaskList(IRUnReadSubjectQuery iRUnReadSubjectQuery)
|
|
|
|
|
{
|
|
|
|
|
var query = _visitTaskRepository.Where(t => t.TrialId == trialId)
|
|
|
|
|
.Where(t => t.DoctorUserId == _userInfo.Id && t.ReadingTaskState != ReadingTaskState.HaveSigned)
|
|
|
|
|
.GroupBy(t => new { t.SubjectId, t.Subject.Code })
|
|
|
|
|
.Select(g => new IRUnReadSubjectView()
|
|
|
|
|
{
|
|
|
|
|
SubjectCode = g.Key.Code,
|
|
|
|
|
SubjectId = g.Key.SubjectId,
|
|
|
|
|
UnReadTaskCount = g.Count(),
|
|
|
|
|
UnReadTaskList = g.AsQueryable().Select(c => new IRUnreadTaskView() { Id = c.Id, SuggesteFinishedTime = c.SuggesteFinishedTime, IsUrgent = c.IsUrgent }).ToList()
|
|
|
|
|
});
|
|
|
|
|
var trialId = iRUnReadSubjectQuery.TrialId;
|
|
|
|
|
#region 按照任务的维度统计分组
|
|
|
|
|
//var query = _visitTaskRepository.Where(t => t.TrialId == trialId)
|
|
|
|
|
// .Where(t => t.DoctorUserId == _userInfo.Id && t.ReadingTaskState != ReadingTaskState.HaveSigned)
|
|
|
|
|
// .GroupBy(t => new { t.SubjectId, t.Subject.Code })
|
|
|
|
|
// .Select(g => new IRUnReadSubjectView()
|
|
|
|
|
// {
|
|
|
|
|
// SubjectCode = g.Key.Code,
|
|
|
|
|
// SubjectId = g.Key.SubjectId,
|
|
|
|
|
// UnReadTaskCount = g.Count(),
|
|
|
|
|
// UnReadTaskList = g.AsQueryable().Select(c => new IRUnreadTaskView() { Id = c.Id, SuggesteFinishedTime = c.SuggesteFinishedTime, IsUrgent = c.IsUrgent }).ToList()
|
|
|
|
|
// });
|
|
|
|
|
//return query.ToList();
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 按照Subject 维度
|
|
|
|
|
|
|
|
|
|
var subjectQuery = _subjectRepository.Where(t => t.TrialId == trialId)
|
|
|
|
|
.Where(t => t.SubjectDoctorList.Any(t => t.DoctorUserId == _userInfo.Id))
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(iRUnReadSubjectQuery.SubjectCode), t => t.Code.Contains(iRUnReadSubjectQuery.SubjectCode))
|
|
|
|
|
.Select(s => new IRUnReadSubjectView()
|
|
|
|
|
{
|
|
|
|
|
SubjectId = s.Id,
|
|
|
|
|
SubjectCode = s.Code,
|
|
|
|
|
UnReadTaskCount = s.SubjectVisitTaskList.Count(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.DoctorUserId == _userInfo.Id),
|
|
|
|
|
UnReadTaskList = s.SubjectVisitTaskList.Where(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.DoctorUserId == _userInfo.Id).Select(u => new IRUnreadTaskView() { Id = u.Id, IsUrgent = u.IsUrgent, SuggesteFinishedTime = u.SuggesteFinishedTime }).ToList(),
|
|
|
|
|
})
|
|
|
|
|
.Where(t=>t.UnReadTaskCount>0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return await subjectQuery.ToPagedListAsync(iRUnReadSubjectQuery.PageIndex, iRUnReadSubjectQuery.PageSize, String.IsNullOrEmpty(iRUnReadSubjectQuery.SortField)?nameof(IRUnReadSubjectView.SubjectId): iRUnReadSubjectQuery.SortField, iRUnReadSubjectQuery.Asc);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return query.ToList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -222,12 +247,12 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId)
|
|
|
|
|
.Where( t=> t.DoctorUserId == _userInfo.Id && t.ReadingTaskState==ReadingTaskState.HaveSigned)//该医生 已经签名的数据
|
|
|
|
|
|
|
|
|
|
.Where(t => t.DoctorUserId == _userInfo.Id && t.ReadingTaskState == ReadingTaskState.HaveSigned)//该医生 已经签名的数据
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.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.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent)
|
|
|
|
|
.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))
|
|
|
|
@ -264,7 +289,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
.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.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState)
|
|
|
|
|
.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))
|
|
|
|
@ -290,12 +315,13 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
public async Task<PageOutput<SubjectAssignView>> GetSubjectAssignList(SubjectAssignQuery querySubjectAssign)
|
|
|
|
|
{
|
|
|
|
|
var subjectQuery = _subjectRepository.Where(t => t.TrialId == querySubjectAssign.TrialId)
|
|
|
|
|
.Where(t => t.SubjectVisitTaskList.Any())
|
|
|
|
|
.WhereIf(querySubjectAssign.SiteId != null, t => t.SiteId == querySubjectAssign.SiteId)
|
|
|
|
|
.WhereIf(querySubjectAssign.SubjectId != null, t => t.Id == querySubjectAssign.SubjectId)
|
|
|
|
|
.WhereIf(querySubjectAssign.IsHaveAssigned != null && querySubjectAssign.IsHaveAssigned == true, t => t.SubjectDoctorList.Count() > 0)
|
|
|
|
|
.WhereIf(querySubjectAssign.IsHaveAssigned != null && querySubjectAssign.IsHaveAssigned == false, t => !t.SubjectDoctorList.Any())
|
|
|
|
|
.WhereIf(querySubjectAssign.IsHaveApplyedTask != null && querySubjectAssign.IsHaveApplyedTask == true, t => t.SubjectDoctorList.SelectMany(t => t.Subject.SubjectVisitTaskList).All(u => u.DoctorUserId != null))
|
|
|
|
|
.WhereIf(querySubjectAssign.IsHaveApplyedTask != null && querySubjectAssign.IsHaveApplyedTask == false, t => t.SubjectDoctorList.SelectMany(t => t.Subject.SubjectVisitTaskList).Any(u => u.DoctorUserId == null))
|
|
|
|
|
.WhereIf(querySubjectAssign.IsHaveApplyedTask != null && querySubjectAssign.IsHaveApplyedTask == false, t => t.SubjectDoctorList.SelectMany(t => t.Subject.SubjectVisitTaskList).Any(u => u.DoctorUserId == null))
|
|
|
|
|
.WhereIf(querySubjectAssign.DoctorUserId != null, t => t.SubjectDoctorList.Any(t => t.DoctorUserId == querySubjectAssign.DoctorUserId))
|
|
|
|
|
.ProjectTo<SubjectAssignView>(_mapper.ConfigurationProvider);
|
|
|
|
|
|
|
|
|
@ -342,7 +368,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 批量取消Subject 分配的医生
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
/// <returns></returns> 数量
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<IResponseOutput> CancelSubjectAssignDoctor(CancelSubjectAssignCommand cancelSubjectAssignCommand)
|
|
|
|
|
{
|
|
|
|
@ -378,7 +404,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
var subjectIdList = assignConfirmCommand.SubjectDoctorUserList.Select(t => t.SubjectId).ToList();
|
|
|
|
|
|
|
|
|
|
var taskList = _visitTaskRepository.Where(t => t.TrialId == assignConfirmCommand.TrialId && t.DoctorUserId == null, true)
|
|
|
|
|
.WhereIf(subjectIdList.Count() > 0 , t => subjectIdList.Contains(t.SubjectId) && t.Subject.SubjectDoctorList.Any())
|
|
|
|
|
.WhereIf(subjectIdList.Count() > 0, t => subjectIdList.Contains(t.SubjectId) && t.Subject.SubjectDoctorList.Any())
|
|
|
|
|
.ToList();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|