185 lines
9.2 KiB
C#
185 lines
9.2 KiB
C#
//using IRaCIS.Application.Interfaces;
|
|
//using IRaCIS.Application.Contracts;
|
|
//using IRaCIS.Core.Infra.EFCore;
|
|
|
|
//using IRaCIS.Core.Domain.Models;
|
|
//using System.Linq.Expressions;
|
|
//using IRaCIS.Core.Infrastructure.ExpressionExtend;
|
|
//using IRaCIS.Core.Infrastructure.Extention;
|
|
//using Microsoft.AspNetCore.Mvc;
|
|
|
|
//namespace IRaCIS.Core.Application.Services
|
|
//{
|
|
// [ApiExplorerSettings(GroupName = "Reading")]
|
|
// public class ReadingService : BaseService, IReviewerReadingService
|
|
// {
|
|
// private readonly IWorkloadTPRepository _workloadTPRepository;
|
|
// private readonly IWorkloadGlobalRepository _workloadGlobalRepository;
|
|
// private readonly IWorkloadADRepository _workloadADRepository;
|
|
// private readonly IRepository<Trial> _trialRepository;
|
|
|
|
// private readonly IRepository<Subject> _subjectRepository;
|
|
// private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
|
|
|
// public ReadingService(IWorkloadTPRepository workloadTPRepository,
|
|
// IWorkloadGlobalRepository workloadGlobalRepository,
|
|
// IWorkloadADRepository workloadADRepository,
|
|
// IRepository<Trial> trialRepository,
|
|
// IRepository<Subject> subjectRepository,
|
|
// IRepository<SubjectVisit> subjectVisitRepository,
|
|
// IUserInfo userInfo)
|
|
// {
|
|
// _workloadTPRepository = workloadTPRepository;
|
|
// _workloadGlobalRepository = workloadGlobalRepository;
|
|
// _workloadADRepository = workloadADRepository;
|
|
// _trialRepository = trialRepository;
|
|
|
|
// _subjectRepository = subjectRepository;
|
|
// _subjectVisitRepository = subjectVisitRepository;
|
|
|
|
// }
|
|
// /// <summary>
|
|
// /// 获取医生个人任务列表
|
|
// /// WorkloadType 1-tp,2-global,3-ad
|
|
// /// </summary>
|
|
// /// <param name="param"></param>
|
|
// /// <returns></returns>
|
|
// [HttpPost]
|
|
// public PageOutput<WorkloadReadingDTO> GetWorkloadList(WorkloadQueryParam param)
|
|
// {
|
|
// #pragma warning disable
|
|
// IQueryable<WorkloadReadingDTO> query = null;
|
|
// Expression<Func<Subject, bool>> subjectLambda = x => true;
|
|
// if (param.SubjectCode != string.Empty)
|
|
// {
|
|
// subjectLambda = subjectLambda.And(o => o.Code.Contains(param.SubjectCode));
|
|
// }
|
|
// Expression<Func<Trial, bool>> trialLambda = x => true;
|
|
// if (param.Expedited != null)
|
|
// {
|
|
// trialLambda = trialLambda.And(o => o.Expedited == param.Expedited);
|
|
// }
|
|
// if (param.TrialId != null && param.TrialId != Guid.Empty)
|
|
// {
|
|
// trialLambda = trialLambda.And(o => o.Id == param.TrialId);
|
|
// }
|
|
|
|
|
|
// if (param.WorkloadType == 1)// TP
|
|
// {
|
|
// Expression<Func<WorkloadTP, bool>> workloadLambda = x => true;
|
|
// workloadLambda = workloadLambda.And(u => u.ReviewerId == _userInfo.Id);
|
|
// if (param.Status != null)
|
|
// {
|
|
// if (param.Status == 30)//30 的时候,待读和正在读(未提交的)
|
|
// {
|
|
// workloadLambda = workloadLambda.And(o => o.Status == 30 || o.Status == 40);
|
|
// }
|
|
// else
|
|
// workloadLambda = workloadLambda.And(o => o.Status == param.Status);
|
|
// }
|
|
// query = from tp in _workloadTPRepository.Where(workloadLambda)
|
|
// join trial in _trialRepository.Where(trialLambda) on tp.TrialId equals trial.Id
|
|
// join subject in _subjectRepository.Where(subjectLambda) on tp.SubjectId equals subject.Id
|
|
// join visit in _subjectVisitRepository.AsQueryable() on tp.SubjectVisitId equals visit.Id
|
|
// select new WorkloadReadingDTO
|
|
// {
|
|
// Id = tp.Id,
|
|
// StudyId = tp.StudyId,
|
|
// WorkloadId = tp.Id,
|
|
// WorkloadType = 1,
|
|
// Status = tp.Status,
|
|
// UpdateTime = tp.UpdateTime,
|
|
// TrialId = tp.TrialId,
|
|
// SubjectId = tp.SubjectId,
|
|
// SubjectCode = subject.Code,
|
|
// VisitNum = visit.VisitNum,
|
|
// VisitName = visit.VisitName,
|
|
// Expedited = trial.Expedited,
|
|
// TrialCode = trial.TrialCode,
|
|
// TrialIndication = trial.Indication,
|
|
// WorkloadCode = tp.TimepointCode
|
|
// };
|
|
// }
|
|
// else if (param.WorkloadType == 2)//Global
|
|
// {
|
|
// Expression<Func<WorkloadGlobal, bool>> workloadLambda = x => true;
|
|
// workloadLambda = workloadLambda.And(u => u.ReviewerId == _userInfo.Id);
|
|
// if (param.Status != null)
|
|
// {
|
|
// if (param.Status == 30)
|
|
// {
|
|
// workloadLambda = workloadLambda.And(o => o.Status == 30 || o.Status == 40);
|
|
// }
|
|
// else
|
|
// workloadLambda = workloadLambda.And(o => o.Status == param.Status);
|
|
// }
|
|
// query = from global in _workloadGlobalRepository.Where(workloadLambda)
|
|
// join trial in _trialRepository.Where(trialLambda) on global.TrialId equals trial.Id
|
|
// join subject in _subjectRepository.Where(subjectLambda) on global.SubjectId equals subject.Id
|
|
// //join visit in _subjectVisitRepository.GetAll() on global.VisitId equals visit.Id
|
|
// select new WorkloadReadingDTO
|
|
// {
|
|
// Id = global.Id,
|
|
// WorkloadId = global.Id,
|
|
// WorkloadType = 1,
|
|
// Status = global.Status,
|
|
// UpdateTime = global.UpdateTime,
|
|
// TrialId = global.TrialId,
|
|
// SubjectId = global.SubjectId,
|
|
// SubjectCode = subject.Code,
|
|
// //VisitNum = visit.VisitNum,
|
|
// //VisitName = visit.VisitName,
|
|
// VisitNum = global.VisitNum,
|
|
// VisitName = global.VisitName,
|
|
|
|
// Expedited = trial.Expedited,
|
|
// TrialCode = trial.TrialCode,
|
|
// TrialIndication = trial.Indication,
|
|
// WorkloadCode = global.GlobalCode
|
|
// };
|
|
// }
|
|
// else if (param.WorkloadType == 3)//AD
|
|
// {
|
|
// Expression<Func<WorkloadAD, bool>> workloadLambda = x => true;
|
|
// workloadLambda = workloadLambda.And(u => u.ReviewerId == _userInfo.Id);
|
|
// if (param.Status != null)
|
|
// {
|
|
// if (param.Status == 30)//30 的时候,待读和正在读(未提交的)
|
|
// {
|
|
// workloadLambda = workloadLambda.And(o => o.Status == 30 || o.Status == 40);
|
|
// }
|
|
// else
|
|
// workloadLambda = workloadLambda.And(o => o.Status == param.Status);
|
|
// }
|
|
// query = from ad in _workloadADRepository.Where(workloadLambda)
|
|
// join trial in _trialRepository.Where(trialLambda) on ad.TrialId equals trial.Id
|
|
// join subject in _subjectRepository.Where(subjectLambda) on ad.SubjectId equals subject.Id
|
|
// //join visit in _subjectVisitRepository.GetAll() on ad.visi equals visit.Id
|
|
// select new WorkloadReadingDTO
|
|
// {
|
|
// Id = ad.Id,
|
|
// WorkloadId = ad.Id,
|
|
// WorkloadType = 1,
|
|
// Status = ad.Status,
|
|
// UpdateTime = ad.UpdateTime,
|
|
// TrialId = ad.TrialId,
|
|
// SubjectId = ad.SubjectId,
|
|
// SubjectCode = subject.Code,
|
|
// //VisitNum = visit.VisitNum,
|
|
// //VisitName = visit.VisitName,
|
|
// Expedited = trial.Expedited,
|
|
// TrialCode = trial.TrialCode,
|
|
// TrialIndication = trial.Indication,
|
|
// WorkloadCode = ad.ADCode
|
|
// };
|
|
// }
|
|
// query.OrderByDescending(u => u.UpdateTime);
|
|
// var count = query.Count();
|
|
// query = query.Skip((param.PageIndex - 1) * param.PageSize).Take(param.PageSize);
|
|
// return new PageOutput<WorkloadReadingDTO>(param.PageIndex,
|
|
// param.PageSize, count, query.ToList());
|
|
// }
|
|
// }
|
|
//}
|