阅片人入组

Uat_Study
hang 2022-08-16 15:01:07 +08:00
parent 6c0317d93d
commit 481b232f23
16 changed files with 65 additions and 62 deletions

View File

@ -7038,7 +7038,7 @@
<summary> 分页获取医生参与的临床实验项目列表(查询条件)</summary> <summary> 分页获取医生参与的临床实验项目列表(查询条件)</summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Application.Services.TrialService.UpdateEnrollStatus(System.Guid,System.Int32)"> <member name="M:IRaCIS.Application.Services.TrialService.UpdateEnrollStatus(System.Guid,IRaCIS.Core.Domain.Share.EnrollStatus)">
<summary> <summary>
医生确认入组或拒绝入组 医生确认入组或拒绝入组
</summary> </summary>

View File

@ -158,7 +158,7 @@ namespace IRaCIS.Core.Application.Service
[HttpGet("{trialId:guid}")] [HttpGet("{trialId:guid}")]
public async Task<List<TrialDoctorUserSelectView>> GetDoctorUserSelectList(Guid trialId, [FromServices] IRepository<Enroll> _enrollRepository) public async Task<List<TrialDoctorUserSelectView>> GetDoctorUserSelectList(Guid trialId, [FromServices] IRepository<Enroll> _enrollRepository)
{ {
var query = from enroll in _enrollRepository.Where(t => t.TrialId == trialId && t.EnrollStatus >= (int)EnrollStatus.ConfirmIntoGroup) var query = from enroll in _enrollRepository.Where(t => t.TrialId == trialId && t.EnrollStatus >= EnrollStatus.ConfirmIntoGroup)
join user in _userRepository.AsQueryable() on enroll.DoctorId equals user.DoctorId join user in _userRepository.AsQueryable() on enroll.DoctorId equals user.DoctorId
select new TrialDoctorUserSelectView() select new TrialDoctorUserSelectView()
{ {

View File

@ -48,7 +48,7 @@ namespace IRaCIS.Application.Services
//用户类型 看到简历的范围这里需要确认 //用户类型 看到简历的范围这里需要确认
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ReviewerCoordinator, t => t.UserList.Any(u => u.UserId == _userInfo.Id)) .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ReviewerCoordinator, t => t.UserList.Any(u => u.UserId == _userInfo.Id))
.WhereIf(count > 0, t => t.DoctorDicRelationList.Count(u => guidList.Contains(u.DictionaryId)) == count) .WhereIf(count > 0, t => t.DoctorDicRelationList.Count(u => guidList.Contains(u.DictionaryId)) == count)
.WhereIf(doctorSearch.EnrollStatus != null && doctorSearch.EnrollStatus == (int)ReviewerEnrollStatus.Yes, t => t.EnrollList.Any(u => u.EnrollStatus == (int)EnrollStatus.DoctorReading)) .WhereIf(doctorSearch.EnrollStatus != null && doctorSearch.EnrollStatus == (int)ReviewerEnrollStatus.Yes, t => t.EnrollList.Any(u => u.EnrollStatus == EnrollStatus.DoctorReading))
.ProjectTo<DoctorDTO>(_mapper.ConfigurationProvider); .ProjectTo<DoctorDTO>(_mapper.ConfigurationProvider);
@ -93,14 +93,14 @@ namespace IRaCIS.Application.Services
//用户类型 看到简历的范围这里需要确认 //用户类型 看到简历的范围这里需要确认
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ReviewerCoordinator, t => t.UserList.Any(u => u.UserId == _userInfo.Id)) .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ReviewerCoordinator, t => t.UserList.Any(u => u.UserId == _userInfo.Id))
.WhereIf(count > 0, t => t.DoctorDicRelationList.Count(u => guidList.Contains(u.DictionaryId)) == count) .WhereIf(count > 0, t => t.DoctorDicRelationList.Count(u => guidList.Contains(u.DictionaryId)) == count)
.WhereIf(selectionQuery.EnrollStatus != null && selectionQuery.EnrollStatus == (int)ReviewerEnrollStatus.Yes, t => t.EnrollList.Any(u => u.EnrollStatus == (int)EnrollStatus.DoctorReading)) .WhereIf(selectionQuery.EnrollStatus != null && selectionQuery.EnrollStatus == (int)ReviewerEnrollStatus.Yes, t => t.EnrollList.Any(u => u.EnrollStatus == EnrollStatus.DoctorReading))
.ProjectTo<SelectionReviewerDTO>(_mapper.ConfigurationProvider); .ProjectTo<SelectionReviewerDTO>(_mapper.ConfigurationProvider);
var result = await query.ToPagedListAsync(selectionQuery.PageIndex, selectionQuery.PageSize, selectionQuery.SortField == string.Empty ? "ReviewerCode" : selectionQuery.SortField, selectionQuery.Asc); var result = await query.ToPagedListAsync(selectionQuery.PageIndex, selectionQuery.PageSize, selectionQuery.SortField == string.Empty ? "ReviewerCode" : selectionQuery.SortField, selectionQuery.Asc);
//是否已申请 申请时间 申请人 //是否已申请 申请时间 申请人
var doctorStateList = await _repository.Where<EnrollDetail>(x => x.TrialId == selectionQuery.TrialId && x.EnrollStatus == (int)EnrollStatus.HasApplyDownloadResume) var doctorStateList = await _repository.Where<EnrollDetail>(x => x.TrialId == selectionQuery.TrialId && x.EnrollStatus == EnrollStatus.HasApplyDownloadResume)
.ProjectTo<DoctorStateModelDTO>(_mapper.ConfigurationProvider).ToListAsync(); .ProjectTo<DoctorStateModelDTO>(_mapper.ConfigurationProvider).ToListAsync();
result.CurrentPageData.ToList().ForEach(doctor => result.CurrentPageData.ToList().ForEach(doctor =>
@ -133,9 +133,9 @@ namespace IRaCIS.Application.Services
var doctorQuery = _repository.Where<Enroll>(x => x.TrialId == param.TrialId) var doctorQuery = _repository.Where<Enroll>(x => x.TrialId == param.TrialId)
//提交CRO 以及下载简历列表 //提交CRO 以及下载简历列表
.WhereIf(param.IntoGroupSearchState == 1, t => t.EnrollStatus >= (int)EnrollStatus.HasApplyDownloadResume) .WhereIf(param.IntoGroupSearchState == 1, t => t.EnrollStatus >= EnrollStatus.HasApplyDownloadResume)
//CRO确认列表 状态为 已提交CRO //CRO确认列表 状态为 已提交CRO
.WhereIf(param.IntoGroupSearchState == 4, t => t.EnrollStatus >= (int)EnrollStatus.HasCommittedToCRO) .WhereIf(param.IntoGroupSearchState == 4, t => t.EnrollStatus >= EnrollStatus.HasCommittedToCRO)
.ProjectTo<ConfirmationReviewerDTO>(_mapper.ConfigurationProvider); .ProjectTo<ConfirmationReviewerDTO>(_mapper.ConfigurationProvider);
var doctorPageList = await doctorQuery.ToPagedListAsync(param.PageIndex, param.PageSize, param.SortField == "" ? "Code" : param.SortField, param.Asc); var doctorPageList = await doctorQuery.ToPagedListAsync(param.PageIndex, param.PageSize, param.SortField == "" ? "Code" : param.SortField, param.Asc);
@ -143,9 +143,9 @@ namespace IRaCIS.Application.Services
var enrollStateList = await _repository.Where<EnrollDetail>(x => x.TrialId == param.TrialId) var enrollStateList = await _repository.Where<EnrollDetail>(x => x.TrialId == param.TrialId)
//提交CRO 以及下载简历列表 //提交CRO 以及下载简历列表
.WhereIf(param.IntoGroupSearchState == 1, t => t.EnrollStatus == (int)EnrollStatus.HasCommittedToCRO) .WhereIf(param.IntoGroupSearchState == 1, t => t.EnrollStatus == EnrollStatus.HasCommittedToCRO)
//CRO确认列表 状态为 已提交CRO //CRO确认列表 状态为 已提交CRO
.WhereIf(param.IntoGroupSearchState == 4, t => t.EnrollStatus == (int)EnrollStatus.InviteIntoGroup) .WhereIf(param.IntoGroupSearchState == 4, t => t.EnrollStatus == EnrollStatus.InviteIntoGroup)
.ProjectTo<DoctorStateModelDTO>(_mapper.ConfigurationProvider).ToListAsync(); .ProjectTo<DoctorStateModelDTO>(_mapper.ConfigurationProvider).ToListAsync();
@ -167,7 +167,7 @@ namespace IRaCIS.Application.Services
//SPM 要看到提交的时间 提交人 //SPM 要看到提交的时间 提交人
var enrollCommitList = await _repository.Where<EnrollDetail>(x => x.TrialId == param.TrialId) var enrollCommitList = await _repository.Where<EnrollDetail>(x => x.TrialId == param.TrialId)
//提交CRO 以及下载简历列表 //提交CRO 以及下载简历列表
.WhereIf(param.IntoGroupSearchState == 4, t => t.EnrollStatus == (int)EnrollStatus.HasCommittedToCRO) .WhereIf(param.IntoGroupSearchState == 4, t => t.EnrollStatus == EnrollStatus.HasCommittedToCRO)
.ProjectTo<DoctorStateModelDTO>(_mapper.ConfigurationProvider).ToListAsync(); .ProjectTo<DoctorStateModelDTO>(_mapper.ConfigurationProvider).ToListAsync();
@ -235,12 +235,12 @@ namespace IRaCIS.Application.Services
{ {
var doctorQuery = _repository.Where<Enroll>(x => x.TrialId == param.TrialId && x.EnrollStatus >= (int)EnrollStatus.InviteIntoGroup) var doctorQuery = _repository.Where<Enroll>(x => x.TrialId == param.TrialId && x.EnrollStatus >= EnrollStatus.InviteIntoGroup)
.ProjectTo<ConfirmationReviewerDTO>(_mapper.ConfigurationProvider); .ProjectTo<ConfirmationReviewerDTO>(_mapper.ConfigurationProvider);
var doctorPageList = await doctorQuery.ToPagedListAsync(param.PageIndex, param.PageSize, param.SortField == "" ? "Code" : param.SortField, param.Asc); var doctorPageList = await doctorQuery.ToPagedListAsync(param.PageIndex, param.PageSize, param.SortField == "" ? "Code" : param.SortField, param.Asc);
var enrollStateList = await _repository.Where<EnrollDetail>(x => x.TrialId == param.TrialId && x.EnrollStatus > (int)EnrollStatus.InviteIntoGroup) var enrollStateList = await _repository.Where<EnrollDetail>(x => x.TrialId == param.TrialId && x.EnrollStatus > EnrollStatus.InviteIntoGroup)
.ProjectTo<DoctorStateModelDTO>(_mapper.ConfigurationProvider).ToListAsync(); .ProjectTo<DoctorStateModelDTO>(_mapper.ConfigurationProvider).ToListAsync();

View File

@ -505,11 +505,11 @@ namespace IRaCIS.Application.Services
// t.EnrollStatus == (int)EnrollStatus.DoctorReading ? 1 : 0) // t.EnrollStatus == (int)EnrollStatus.DoctorReading ? 1 : 0)
Submitted = g.Count(t => Submitted = g.Count(t =>
t.EnrollStatus == (int)EnrollStatus.HasCommittedToCRO), t.EnrollStatus == EnrollStatus.HasCommittedToCRO),
Approved = g.Count(t => Approved = g.Count(t =>
t.EnrollStatus == (int)EnrollStatus.InviteIntoGroup), t.EnrollStatus == EnrollStatus.InviteIntoGroup),
Reading = g.Count(t => Reading = g.Count(t =>
t.EnrollStatus == (int)EnrollStatus.DoctorReading) t.EnrollStatus == EnrollStatus.DoctorReading)
}; };
return doctorQueryable.FirstOrDefault().IfNullThrowException(); return doctorQueryable.FirstOrDefault().IfNullThrowException();
@ -522,7 +522,7 @@ namespace IRaCIS.Application.Services
[HttpGet("{doctorId:guid}")] [HttpGet("{doctorId:guid}")]
public List<SowDTO> GetDoctorSowList(Guid doctorId) public List<SowDTO> GetDoctorSowList(Guid doctorId)
{ {
var query = from enroll in _enrollRepository.Where(u => u.DoctorId == doctorId && u.EnrollStatus >= 10) var query = from enroll in _enrollRepository.Where(u => u.DoctorId == doctorId && u.EnrollStatus >= EnrollStatus.ConfirmIntoGroup)
join trialExt in _trialExtRepository.AsQueryable() on enroll.TrialId equals trialExt.TrialId join trialExt in _trialExtRepository.AsQueryable() on enroll.TrialId equals trialExt.TrialId
join trial in _trialRepository.AsQueryable() on enroll.TrialId equals trial.Id join trial in _trialRepository.AsQueryable() on enroll.TrialId equals trial.Id
select new SowDTO select new SowDTO

View File

@ -90,10 +90,10 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.Speciality, u => u.MapFrom(s => s.Speciality.Value)) .ForMember(d => d.Speciality, u => u.MapFrom(s => s.Speciality.Value))
.ForMember(d => d.SpecialityCN, u => u.MapFrom(s => s.Speciality.ValueCN)) .ForMember(d => d.SpecialityCN, u => u.MapFrom(s => s.Speciality.ValueCN))
.ForMember(d => d.HasResume, u => u.MapFrom(s => s.AttachmentList.Any(u => u.Type == "Resume" && u.IsOfficial))) .ForMember(d => d.HasResume, u => u.MapFrom(s => s.AttachmentList.Any(u => u.Type == "Resume" && u.IsOfficial)))
.ForMember(d => d.Submitted, u => u.MapFrom(s => s.EnrollList.Count(t => t.EnrollStatus == (int)EnrollStatus.HasCommittedToCRO))) .ForMember(d => d.Submitted, u => u.MapFrom(s => s.EnrollList.Count(t => t.EnrollStatus == EnrollStatus.HasCommittedToCRO)))
.ForMember(d => d.Approved, u => u.MapFrom(s => s.EnrollList.Count(t => t.EnrollStatus == (int)EnrollStatus.InviteIntoGroup))) .ForMember(d => d.Approved, u => u.MapFrom(s => s.EnrollList.Count(t => t.EnrollStatus == EnrollStatus.InviteIntoGroup)))
.ForMember(d => d.Reading, u => u.MapFrom(s => s.EnrollList.Count(t => t.EnrollStatus == (int)EnrollStatus.DoctorReading))) .ForMember(d => d.Reading, u => u.MapFrom(s => s.EnrollList.Count(t => t.EnrollStatus == EnrollStatus.DoctorReading)))
.ForMember(d => d.Finished, u => u.MapFrom(s => s.EnrollList.Count(t => t.EnrollStatus == (int)EnrollStatus.Finished))) .ForMember(d => d.Finished, u => u.MapFrom(s => s.EnrollList.Count(t => t.EnrollStatus == EnrollStatus.Finished)))
.ForMember(d => d.Reconfirmed, u => u.MapFrom(s => s.ReviewStatus == ReviewerInformationConfirmStatus.ConfirmPass)) .ForMember(d => d.Reconfirmed, u => u.MapFrom(s => s.ReviewStatus == ReviewerInformationConfirmStatus.ConfirmPass))
.ForMember(o => o.DictionaryList, t => t.MapFrom(u => u.DoctorDicRelationList.Where(t => t.KeyName == StaticData.ReadingType || t.KeyName == StaticData.Subspeciality).Select(t => t.Dictionary).OrderBy(t => t.ShowOrder))); .ForMember(o => o.DictionaryList, t => t.MapFrom(u => u.DoctorDicRelationList.Where(t => t.KeyName == StaticData.ReadingType || t.KeyName == StaticData.Subspeciality).Select(t => t.Dictionary).OrderBy(t => t.ShowOrder)));
CreateMap<Hospital, DoctorDTO>(); CreateMap<Hospital, DoctorDTO>();

View File

@ -35,7 +35,7 @@ namespace IRaCIS.Core.Application.Service.Inspection
trialData.TrialFinishTime = trialData.TrialFinishTime == null ? DateTime.Now : trialData.TrialFinishTime; trialData.TrialFinishTime = trialData.TrialFinishTime == null ? DateTime.Now : trialData.TrialFinishTime;
#region 逻辑代码 #region 逻辑代码
var query = from data in _repository.GetQueryable<DataInspection>().Where(x => (x.TrialId == dto.TrialId)||(x.TrialId==null&&x.CreateTime> trialData.CreateTime&&x.CreateTime < trialData.TrialFinishTime)) var query = from data in _repository.GetQueryable<DataInspection>().Where(x => (x.TrialId == dto.TrialId)||(x.TrialId==null&&x.CreateTime>= trialData.CreateTime && x.CreateTime <= trialData.TrialFinishTime))
join trial in _repository.GetQueryable<Trial>().IgnoreQueryFilters() on data.TrialId equals trial.Id into trialtemp join trial in _repository.GetQueryable<Trial>().IgnoreQueryFilters() on data.TrialId equals trial.Id into trialtemp
from leftrial in trialtemp.DefaultIfEmpty() from leftrial in trialtemp.DefaultIfEmpty()

View File

@ -217,13 +217,13 @@ namespace IRaCIS.Application.Services
{ {
DoctorId = g.Key.DoctorId, DoctorId = g.Key.DoctorId,
Submitted = g.Sum(t => Submitted = g.Sum(t =>
t.EnrollStatus == (int)EnrollStatus.HasCommittedToCRO ? 1 : 0), t.EnrollStatus == EnrollStatus.HasCommittedToCRO ? 1 : 0),
Approved = g.Sum(t => Approved = g.Sum(t =>
t.EnrollStatus == (int)EnrollStatus.InviteIntoGroup ? 1 : 0), t.EnrollStatus == EnrollStatus.InviteIntoGroup ? 1 : 0),
Reading = g.Sum(t => Reading = g.Sum(t =>
t.EnrollStatus == (int)EnrollStatus.DoctorReading ? 1 : 0), t.EnrollStatus == EnrollStatus.DoctorReading ? 1 : 0),
Finished = g.Sum(t => Finished = g.Sum(t =>
t.EnrollStatus >= (int)EnrollStatus.Finished ? 1 : 0), t.EnrollStatus >= EnrollStatus.Finished ? 1 : 0),
}; };
@ -318,7 +318,7 @@ namespace IRaCIS.Application.Services
#endregion #endregion
var trialEnrollStatQuery = _enrollRepository.AsQueryable() var trialEnrollStatQuery = _enrollRepository.AsQueryable()
.Where(t => t.EnrollStatus >= (int)EnrollStatus.ConfirmIntoGroup).GroupBy(t => t.TrialId).Select(g => new .Where(t => t.EnrollStatus >= EnrollStatus.ConfirmIntoGroup).GroupBy(t => t.TrialId).Select(g => new
{ {
TrialId = g.Key, TrialId = g.Key,
EnrollCount = g.Count() EnrollCount = g.Count()
@ -356,7 +356,7 @@ namespace IRaCIS.Application.Services
var trialIds = trialList.Select(t => t.TrialId).ToList(); var trialIds = trialList.Select(t => t.TrialId).ToList();
var enrollReviewerQuery = from enroll in _enrollRepository.AsQueryable() var enrollReviewerQuery = from enroll in _enrollRepository.AsQueryable()
.Where(t => t.EnrollStatus >= (int)EnrollStatus.ConfirmIntoGroup && trialIds.Contains(t.TrialId)) .Where(t => t.EnrollStatus >= EnrollStatus.ConfirmIntoGroup && trialIds.Contains(t.TrialId))
join reviewer in _doctorRepository.AsQueryable() on enroll.DoctorId equals reviewer.Id join reviewer in _doctorRepository.AsQueryable() on enroll.DoctorId equals reviewer.Id
select new select new
@ -662,7 +662,7 @@ namespace IRaCIS.Application.Services
var endMonth = DateTime.Now; var endMonth = DateTime.Now;
var querySql = from enrollDetail in _enrollDetailRepository.Where(t => var querySql = from enrollDetail in _enrollDetailRepository.Where(t =>
t.CreateTime > beginMonth && t.CreateTime < endMonth && t.CreateTime > beginMonth && t.CreateTime < endMonth &&
t.EnrollStatus == (int)EnrollStatus.ConfirmIntoGroup) t.EnrollStatus == EnrollStatus.ConfirmIntoGroup)
select new select new
{ {
@ -726,7 +726,7 @@ namespace IRaCIS.Application.Services
var endMonth = DateTime.Now; var endMonth = DateTime.Now;
var querySql = from enrollDetail in _enrollDetailRepository.Where(t => var querySql = from enrollDetail in _enrollDetailRepository.Where(t =>
t.CreateTime > beginMonth && t.CreateTime < endMonth && t.CreateTime > beginMonth && t.CreateTime < endMonth &&
t.EnrollStatus == (int)EnrollStatus.ConfirmIntoGroup) t.EnrollStatus == EnrollStatus.ConfirmIntoGroup)
select new select new
{ {
@ -786,7 +786,7 @@ namespace IRaCIS.Application.Services
public List<TrialDataRankDTO> GetTrialCountRank(int topCount) public List<TrialDataRankDTO> GetTrialCountRank(int topCount)
{ {
var queryList = (from enrollDetail in _enrollDetailRepository.Where(t => var queryList = (from enrollDetail in _enrollDetailRepository.Where(t =>
t.EnrollStatus == (int)EnrollStatus.ConfirmIntoGroup) t.EnrollStatus == EnrollStatus.ConfirmIntoGroup)
group enrollDetail by enrollDetail.DoctorId group enrollDetail by enrollDetail.DoctorId
into g into g
select new select new

View File

@ -202,7 +202,7 @@ namespace IRaCIS.Application.Contracts
{ {
public string Code { get; set; } = string.Empty; public string Code { get; set; } = string.Empty;
public string Indication { get; set; } = string.Empty; public string Indication { get; set; } = string.Empty;
public int? EnrollStatus { get; set; } public EnrollStatus? EnrollStatus { get; set; }
public int? Expedited { get; set; } public int? Expedited { get; set; }
} }

View File

@ -1,4 +1,5 @@
using IRaCIS.Application.Contracts; using IRaCIS.Application.Contracts;
using IRaCIS.Core.Domain.Share;
namespace IRaCIS.Application.Interfaces namespace IRaCIS.Application.Interfaces
{ {
@ -17,6 +18,6 @@ namespace IRaCIS.Application.Interfaces
Task<PageOutput<TrialDetailDTO>> GetTrialList(TrialQueryDTO searchParam); Task<PageOutput<TrialDetailDTO>> GetTrialList(TrialQueryDTO searchParam);
Task<PageOutput<TrialDetailDTO>> GetTrialListByReviewer(ReviewerTrialQueryDTO searchModel); Task<PageOutput<TrialDetailDTO>> GetTrialListByReviewer(ReviewerTrialQueryDTO searchModel);
Task<int> GetTrialMaxState(Guid trialId); Task<int> GetTrialMaxState(Guid trialId);
Task<IResponseOutput> UpdateEnrollStatus(Guid trialId, int status); Task<IResponseOutput> UpdateEnrollStatus(Guid trialId, EnrollStatus status);
} }
} }

View File

@ -546,7 +546,7 @@ namespace IRaCIS.Core.Application
{ {
await _repository.BatchUpdateAsync<Enroll>(u => u.TrialId == trialId, e => new Enroll await _repository.BatchUpdateAsync<Enroll>(u => u.TrialId == trialId, e => new Enroll
{ {
EnrollStatus = (int)EnrollStatus.Finished EnrollStatus = EnrollStatus.Finished
}); });
await _trialRepository.BatchUpdateNoTrackingAsync(u => u.Id == trialId, s => new Trial { TrialFinishedTime = DateTime.UtcNow.AddHours(8) }); await _trialRepository.BatchUpdateNoTrackingAsync(u => u.Id == trialId, s => new Trial { TrialFinishedTime = DateTime.UtcNow.AddHours(8) });

View File

@ -465,10 +465,10 @@ namespace IRaCIS.Application.Services
{ {
var query = _trialRepository.AsQueryable() var query = _trialRepository.AsQueryable()
.WhereIf(param.Status == 5, t => t.EnrollList.Any(u => u.EnrollStatus == (int)EnrollStatus.HasCommittedToCRO)) .WhereIf(param.Status == 5, t => t.EnrollList.Any(u => u.EnrollStatus == EnrollStatus.HasCommittedToCRO))
.WhereIf(param.Status == 8, t => t.EnrollList.Any(u => u.EnrollStatus == (int)EnrollStatus.InviteIntoGroup)) .WhereIf(param.Status == 8, t => t.EnrollList.Any(u => u.EnrollStatus == EnrollStatus.InviteIntoGroup))
.WhereIf(param.Status == 10, t => t.EnrollList.Any(u => u.EnrollStatus == (int)EnrollStatus.DoctorReading)) .WhereIf(param.Status == 10, t => t.EnrollList.Any(u => u.EnrollStatus == EnrollStatus.DoctorReading))
.WhereIf(param.Status == 14, t => t.EnrollList.Any(u => u.EnrollStatus == (int)EnrollStatus.Finished)) .WhereIf(param.Status == 14, t => t.EnrollList.Any(u => u.EnrollStatus == EnrollStatus.Finished))
.ProjectTo<TrialDetailDTO>(_mapper.ConfigurationProvider, new { userTypeEnumInt = _userInfo.UserTypeEnumInt, userId = _userInfo.Id }); .ProjectTo<TrialDetailDTO>(_mapper.ConfigurationProvider, new { userTypeEnumInt = _userInfo.UserTypeEnumInt, userId = _userInfo.Id });
return await query.ToPagedListAsync(param.PageIndex, param.PageSize, string.IsNullOrWhiteSpace(param.SortField) ? "CreateTime" : param.SortField, param.Asc); return await query.ToPagedListAsync(param.PageIndex, param.PageSize, string.IsNullOrWhiteSpace(param.SortField) ? "CreateTime" : param.SortField, param.Asc);
@ -483,7 +483,7 @@ namespace IRaCIS.Application.Services
public async Task<List<Guid>> GetTrialEnrollmentReviewerIds(Guid trialId) public async Task<List<Guid>> GetTrialEnrollmentReviewerIds(Guid trialId)
{ {
return await _repository.Where<Enroll>(u => u.TrialId == trialId && return await _repository.Where<Enroll>(u => u.TrialId == trialId &&
u.EnrollStatus >= (int)EnrollStatus.DoctorReading).Select(u => u.DoctorId).Distinct().ToListAsync(); u.EnrollStatus >= EnrollStatus.DoctorReading).Select(u => u.DoctorId).Distinct().ToListAsync();
} }
@ -498,7 +498,7 @@ namespace IRaCIS.Application.Services
{ {
var query = _trialRepository var query = _trialRepository
.WhereIf(searchModel.EnrollStatus != null, o => (int)searchModel.EnrollStatus! == 10 ? .WhereIf(searchModel.EnrollStatus != null, o => (int)searchModel.EnrollStatus! == 10 ?
o.EnrollList.Any(o => o.EnrollStatus >= 10 && o.EnrollStatus <= 13 && o.DoctorId == _userInfo.Id) : o.EnrollList.Any(o => o.EnrollStatus >= EnrollStatus.ConfirmIntoGroup && o.EnrollStatus <= EnrollStatus.DoctorReading && o.DoctorId == _userInfo.Id) :
o.EnrollList.Any(o => o.EnrollStatus == searchModel.EnrollStatus && o.DoctorId == _userInfo.Id)) o.EnrollList.Any(o => o.EnrollStatus == searchModel.EnrollStatus && o.DoctorId == _userInfo.Id))
.WhereIf(searchModel.Expedited != null, o => o.Expedited == searchModel.Expedited) .WhereIf(searchModel.Expedited != null, o => o.Expedited == searchModel.Expedited)
.WhereIf(!string.IsNullOrEmpty(searchModel.Code), o => o.TrialCode.Contains(searchModel.Code)) .WhereIf(!string.IsNullOrEmpty(searchModel.Code), o => o.TrialCode.Contains(searchModel.Code))
@ -523,7 +523,7 @@ namespace IRaCIS.Application.Services
[HttpPost("{trialId:guid}/{status:int}")] [HttpPost("{trialId:guid}/{status:int}")]
[TypeFilter(typeof(TrialResourceFilter))] [TypeFilter(typeof(TrialResourceFilter))]
public async Task<IResponseOutput> UpdateEnrollStatus(Guid trialId, int status) public async Task<IResponseOutput> UpdateEnrollStatus(Guid trialId, EnrollStatus status)
{ {
await _repository.AddAsync(new EnrollDetail() await _repository.AddAsync(new EnrollDetail()
{ {

View File

@ -166,7 +166,7 @@ namespace IRaCIS.Application.Services
var doctorIntoGroupQueryable = var doctorIntoGroupQueryable =
from intoGroup in _enrollRepository.Where(x => x.TrialId == trialId && x.EnrollStatus >= (int)EnrollStatus.ConfirmIntoGroup) from intoGroup in _enrollRepository.Where(x => x.TrialId == trialId && x.EnrollStatus >= EnrollStatus.ConfirmIntoGroup)
join doctor in _doctorRepository.AsQueryable() on intoGroup.DoctorId equals doctor.Id join doctor in _doctorRepository.AsQueryable() on intoGroup.DoctorId equals doctor.Id
join attachmentItem in _attachmentRepository.AsQueryable() on intoGroup.AttachmentId equals attachmentItem.Id into cc join attachmentItem in _attachmentRepository.AsQueryable() on intoGroup.AttachmentId equals attachmentItem.Id into cc
from attachment in cc.DefaultIfEmpty() from attachment in cc.DefaultIfEmpty()
@ -682,7 +682,7 @@ namespace IRaCIS.Application.Services
await _enrollRepository.BatchUpdateNoTrackingAsync( await _enrollRepository.BatchUpdateNoTrackingAsync(
t => t.DoctorId == workLoadAddOrUpdateModel.DoctorId && t.TrialId == workLoadAddOrUpdateModel.TrialId, u => new Enroll() t => t.DoctorId == workLoadAddOrUpdateModel.DoctorId && t.TrialId == workLoadAddOrUpdateModel.TrialId, u => new Enroll()
{ {
EnrollStatus = (int)EnrollStatus.DoctorReading, EnrollStatus = EnrollStatus.DoctorReading,
}); });
var success = await _doctorWorkloadRepository.SaveChangesAsync(); var success = await _doctorWorkloadRepository.SaveChangesAsync();

View File

@ -163,14 +163,14 @@ namespace IRaCIS.Application.Services
{ {
DoctorId = doctorId, DoctorId = doctorId,
TrialId = trialId, TrialId = trialId,
EnrollStatus = (int)EnrollStatus.HasApplyDownloadResume, EnrollStatus = EnrollStatus.HasApplyDownloadResume,
}); });
await _enrollDetailRepository.AddAsync(new EnrollDetail() await _enrollDetailRepository.AddAsync(new EnrollDetail()
{ {
DoctorId = doctorId, DoctorId = doctorId,
TrialId = trialId, TrialId = trialId,
EnrollStatus = (int)EnrollStatus.HasApplyDownloadResume, EnrollStatus = EnrollStatus.HasApplyDownloadResume,
OptUserType = (int)SystemUserType.AdminUser, OptUserType = (int)SystemUserType.AdminUser,
}); });
} }
@ -217,7 +217,7 @@ namespace IRaCIS.Application.Services
{ {
if (doctorIdArray.Contains(intoGroupItem.DoctorId)) if (doctorIdArray.Contains(intoGroupItem.DoctorId))
{ {
intoGroupItem.EnrollStatus = (int)EnrollStatus.HasCommittedToCRO; intoGroupItem.EnrollStatus = EnrollStatus.HasCommittedToCRO;
//_enrollRepository.Update(intoGroupItem); //_enrollRepository.Update(intoGroupItem);
await _enrollDetailRepository.AddAsync(new EnrollDetail() await _enrollDetailRepository.AddAsync(new EnrollDetail()
@ -225,7 +225,7 @@ namespace IRaCIS.Application.Services
TrialDetailId = trialDetail.Id, TrialDetailId = trialDetail.Id,
DoctorId = intoGroupItem.DoctorId, DoctorId = intoGroupItem.DoctorId,
TrialId = trialId, TrialId = trialId,
EnrollStatus = (int)EnrollStatus.HasCommittedToCRO, EnrollStatus = EnrollStatus.HasCommittedToCRO,
OptUserType = (int)SystemUserType.AdminUser, //后台用户 OptUserType = (int)SystemUserType.AdminUser, //后台用户
}); });
} }
@ -242,14 +242,14 @@ namespace IRaCIS.Application.Services
{ {
if (doctorIdArray.Contains(intoGroupItem.DoctorId)) if (doctorIdArray.Contains(intoGroupItem.DoctorId))
{ {
intoGroupItem.EnrollStatus = (int)EnrollStatus.HasApplyDownloadResume; intoGroupItem.EnrollStatus = EnrollStatus.HasApplyDownloadResume;
//_enrollRepository.Update(intoGroupItem); //_enrollRepository.Update(intoGroupItem);
var deleteItem = await _enrollDetailRepository.FirstOrDefaultAsync(t => var deleteItem = await _enrollDetailRepository.FirstOrDefaultAsync(t =>
t.TrialId == trialId && t.DoctorId == intoGroupItem.DoctorId && t.TrialId == trialId && t.DoctorId == intoGroupItem.DoctorId &&
t.EnrollStatus == (int)EnrollStatus.HasCommittedToCRO); t.EnrollStatus == EnrollStatus.HasCommittedToCRO);
await _enrollDetailRepository.DeleteAsync(deleteItem); await _enrollDetailRepository.DeleteAsync(deleteItem);
} }
@ -305,14 +305,14 @@ namespace IRaCIS.Application.Services
{ {
if (doctorIdArray.Contains(intoGroupItem.DoctorId)) if (doctorIdArray.Contains(intoGroupItem.DoctorId))
{ {
intoGroupItem.EnrollStatus = (int)EnrollStatus.InviteIntoGroup; intoGroupItem.EnrollStatus = EnrollStatus.InviteIntoGroup;
//_enrollRepository.Update(intoGroupItem); //_enrollRepository.Update(intoGroupItem);
await _enrollDetailRepository.AddAsync(new EnrollDetail() await _enrollDetailRepository.AddAsync(new EnrollDetail()
{ {
DoctorId = intoGroupItem.DoctorId, DoctorId = intoGroupItem.DoctorId,
TrialId = trialId, TrialId = trialId,
EnrollStatus = (int)EnrollStatus.InviteIntoGroup, EnrollStatus = EnrollStatus.InviteIntoGroup,
OptUserType = (int)SystemUserType.AdminUser, //后台用户 OptUserType = (int)SystemUserType.AdminUser, //后台用户
}); });
} }
@ -328,13 +328,13 @@ namespace IRaCIS.Application.Services
{ {
if (doctorIdArray.Contains(intoGroupItem.DoctorId)) if (doctorIdArray.Contains(intoGroupItem.DoctorId))
{ {
intoGroupItem.EnrollStatus = (int)EnrollStatus.HasCommittedToCRO; intoGroupItem.EnrollStatus = EnrollStatus.HasCommittedToCRO;
//_enrollRepository.Update(intoGroupItem); //_enrollRepository.Update(intoGroupItem);
var deleteItem = await _enrollDetailRepository.FirstOrDefaultAsync(t => var deleteItem = await _enrollDetailRepository.FirstOrDefaultAsync(t =>
t.TrialId == trialId && t.DoctorId == intoGroupItem.DoctorId && t.TrialId == trialId && t.DoctorId == intoGroupItem.DoctorId &&
t.EnrollStatus == (int)EnrollStatus.InviteIntoGroup); t.EnrollStatus == EnrollStatus.InviteIntoGroup);
await _enrollDetailRepository.DeleteAsync(deleteItem); await _enrollDetailRepository.DeleteAsync(deleteItem);
} }
@ -383,7 +383,7 @@ namespace IRaCIS.Application.Services
{ {
if (confirmReviewerCommand.DoctorIdArray.Contains(intoGroupItem.DoctorId)) if (confirmReviewerCommand.DoctorIdArray.Contains(intoGroupItem.DoctorId))
{ {
intoGroupItem.EnrollStatus = (int)EnrollStatus.ConfirmIntoGroup; intoGroupItem.EnrollStatus = EnrollStatus.ConfirmIntoGroup;
intoGroupItem.EnrollTime = DateTime.Now; intoGroupItem.EnrollTime = DateTime.Now;
var userId= await _mailVerificationService.DoctorJoinTrialEmail(trialId, intoGroupItem.DoctorId, confirmReviewerCommand.BaseUrl, confirmReviewerCommand.RouteUrl); var userId= await _mailVerificationService.DoctorJoinTrialEmail(trialId, intoGroupItem.DoctorId, confirmReviewerCommand.BaseUrl, confirmReviewerCommand.RouteUrl);
@ -402,7 +402,7 @@ namespace IRaCIS.Application.Services
{ {
DoctorId = intoGroupItem.DoctorId, DoctorId = intoGroupItem.DoctorId,
TrialId = trialId, TrialId = trialId,
EnrollStatus = (int)EnrollStatus.ConfirmIntoGroup, EnrollStatus = EnrollStatus.ConfirmIntoGroup,
OptUserType = (int)SystemUserType.AdminUser, //后台用户 OptUserType = (int)SystemUserType.AdminUser, //后台用户
}); });
} }
@ -415,13 +415,13 @@ namespace IRaCIS.Application.Services
{ {
if (confirmReviewerCommand.DoctorIdArray.Contains(intoGroupItem.DoctorId)) if (confirmReviewerCommand.DoctorIdArray.Contains(intoGroupItem.DoctorId))
{ {
intoGroupItem.EnrollStatus = (int)EnrollStatus.InviteIntoGroup; intoGroupItem.EnrollStatus = EnrollStatus.InviteIntoGroup;
intoGroupItem.EnrollTime = null; intoGroupItem.EnrollTime = null;
var deleteItem = await _enrollDetailRepository.FirstOrDefaultAsync(t => var deleteItem = await _enrollDetailRepository.FirstOrDefaultAsync(t =>
t.TrialId == trialId && t.DoctorId == intoGroupItem.DoctorId && t.TrialId == trialId && t.DoctorId == intoGroupItem.DoctorId &&
t.EnrollStatus == (int)EnrollStatus.ConfirmIntoGroup); t.EnrollStatus == EnrollStatus.ConfirmIntoGroup);
await _enrollDetailRepository.DeleteAsync(deleteItem); await _enrollDetailRepository.DeleteAsync(deleteItem);
} }
@ -460,12 +460,12 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("Reviewers with workload cannot go back"); return ResponseOutput.NotOk("Reviewers with workload cannot go back");
} }
intoGroupItem.EnrollStatus = (int)EnrollStatus.InviteIntoGroup; intoGroupItem.EnrollStatus = EnrollStatus.InviteIntoGroup;
intoGroupItem.EnrollTime = null; intoGroupItem.EnrollTime = null;
var deleteItem = await _enrollDetailRepository.FirstOrDefaultAsync(t => var deleteItem = await _enrollDetailRepository.FirstOrDefaultAsync(t =>
t.TrialId == trialId && t.DoctorId == intoGroupItem.DoctorId && t.TrialId == trialId && t.DoctorId == intoGroupItem.DoctorId &&
t.EnrollStatus == (int)EnrollStatus.ConfirmIntoGroup); t.EnrollStatus == EnrollStatus.ConfirmIntoGroup);
await _enrollDetailRepository.DeleteAsync(deleteItem); await _enrollDetailRepository.DeleteAsync(deleteItem);

View File

@ -1,3 +1,4 @@
using IRaCIS.Core.Domain.Share;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
@ -19,7 +20,7 @@ namespace IRaCIS.Core.Domain.Models
public Guid DoctorId { get; set; } public Guid DoctorId { get; set; }
public Guid TrialId { get; set; } public Guid TrialId { get; set; }
public Guid AttachmentId { get; set; } = Guid.Empty; public Guid AttachmentId { get; set; } = Guid.Empty;
public int EnrollStatus { get; set; } public EnrollStatus EnrollStatus { get; set; }
public decimal? AdjustmentMultiple { get; set; } public decimal? AdjustmentMultiple { get; set; }
public DateTime? EnrollTime { get; set; } public DateTime? EnrollTime { get; set; }
@ -56,8 +57,6 @@ namespace IRaCIS.Core.Domain.Models
public int? Downtime { get; set; } public int? Downtime { get; set; }
public int DoctorTrialState { get; set; }
/// <summary> /// <summary>
/// 生成账号 加入到项目中后 赋值 /// 生成账号 加入到项目中后 赋值

View File

@ -1,3 +1,4 @@
using IRaCIS.Core.Domain.Share;
using System; using System;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
@ -10,7 +11,7 @@ namespace IRaCIS.Core.Domain.Models
public Guid DoctorId { get; set; } public Guid DoctorId { get; set; }
public Guid TrialId { get; set; } public Guid TrialId { get; set; }
public int EnrollStatus { get; set; } public EnrollStatus EnrollStatus { get; set; }
public Guid? EnrollId { get; set; } public Guid? EnrollId { get; set; }
public string Memo { get; set; } = string.Empty; public string Memo { get; set; } = string.Empty;
public Guid CreateUserId { get; set; } public Guid CreateUserId { get; set; }

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Domain.Share;
using Newtonsoft.Json;
namespace IRaCIS.Core.Domain.Models namespace IRaCIS.Core.Domain.Models
{ {
@ -15,6 +16,7 @@ namespace IRaCIS.Core.Domain.Models
TrialDicList = new List<TrialDictionary>(); TrialDicList = new List<TrialDictionary>();
} }
public List<TaskConsistentRule> TaskConsistentRuleList { get; set; } public List<TaskConsistentRule> TaskConsistentRuleList { get; set; }
public List<SubjectUser> SubjectDoctorUserList { get; set; } = new List<SubjectUser>(); public List<SubjectUser> SubjectDoctorUserList { get; set; } = new List<SubjectUser>();