Site调研查询更改

Uat_Study
hang 2022-03-31 16:04:02 +08:00
parent 7390b843b7
commit e7416e03af
7 changed files with 102 additions and 97 deletions

View File

@ -713,9 +713,15 @@
<param name="trialSiteSurveyId"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.GetTrialSiteSurveyList(System.Guid,IRaCIS.Core.Application.Contracts.TrialSiteSurveyQueryDTO)">
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.GetTrialSiteSurveyList(IRaCIS.Core.Application.Contracts.TrialSiteSurveyQueryDTO)">
<summary>
获取 项目 某个site的调研记录
获取 项目 site的调研记录 New
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.TrialSiteSurveyUserList(IRaCIS.Core.Application.Contracts.TrialSiteUserSurveyAllQuery)">
<summary>
项目Site调研用户列表 所有site的调研用户 最新的调研表的记录的用户 new
</summary>
<returns></returns>
</member>
@ -747,12 +753,6 @@
<param name="siteSurvyeSubmit"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.TrialSiteSurveyUserList(IRaCIS.Core.Application.Contracts.TrialSiteUserSurveyAllQuery)">
<summary>
项目Site调研用户列表 所有site的调研用户 会有重复
</summary>
<returns></returns>
</member>
<member name="T:IRaCIS.Core.Application.Contracts.TrialSiteUserSurveyService">
<summary>
TrialSiteUserSurveyService

View File

@ -68,8 +68,14 @@ namespace IRaCIS.Core.Application.Contracts
public Guid TrialId { get; set; }
public Guid? SiteId { get; set; }
public Guid? UserTypeId { get; set; }
public bool? IsGenerateAccount { get; set; }
public Guid? TrialRoleNameId { get; set; }
public TrialSiteUserStateEnum? State { get; set; }
public string FormWriterKeyInfo { get; set; } = string.Empty;
public string UserKeyInfo { get; set; } = string.Empty;
@ -232,13 +238,18 @@ namespace IRaCIS.Core.Application.Contracts
public string RouteUrl { get; set; } = string.Empty;
}
public class TrialSiteSurveyQueryDTO
public class TrialSiteSurveyQueryDTO : PageInput
{
//public Guid? SiteId { get; set; }
[NotDefault]
public Guid TrialId { get; set; }
public string SiteName { get; set; } = String.Empty;
public string TrialSiteCode { get; set; } = String.Empty;
public string TrialSiteAliasName { get; set; } = String.Empty;
public Guid? SiteId { get; set; }
public string UserKeyInfo { get; set; } = string.Empty;
public TrialSiteSurveyEnum? State { get; set; }
public bool? IsAbandon { get; set; }
}
public class CopyTrialSiteSurveyDTO

View File

@ -84,7 +84,7 @@ namespace IRaCIS.Core.Application.Contracts
public class TrialSiteUserSurveyAddOrEdit
{
public Guid? Id { get; set; }
public Guid TrialRoleNameId { get; set; }
public Guid TrialSiteSurveyId { get; set; }
public Guid? UserTypeId { get; set; }
public string FirstName { get; set; } = string.Empty;
@ -92,6 +92,7 @@ namespace IRaCIS.Core.Application.Contracts
public string Phone { get; set; } = string.Empty;
public string Email { get; set; } = string.Empty;
public bool IsGenerateAccount { get; set; }
public Guid TrialRoleNameId { get; set; }
public string OrganizationName { get; set; } = string.Empty;
}

View File

@ -14,7 +14,7 @@ namespace IRaCIS.Core.Application.Contracts
Task<IResponseOutput> AddOrUpdateTrialSiteSurvey(TrialSiteSurveyAddOrEdit addOrEditTrialSiteSurvey);
Task<IResponseOutput> DeleteTrialSiteSurvey(Guid trialSiteSurveyId);
Task<LoginReturnDTO> GetSiteSurveyInfo(Guid trialSiteSurveyId, Guid trialId);
Task<List<TrialSiteSurveyView>> GetTrialSiteSurveyList(Guid trialId, TrialSiteSurveyQueryDTO trialSiteSurveyQueryDTO);
Task<PageOutput<TrialSiteSurveyView>> GetTrialSiteSurveyList(TrialSiteSurveyQueryDTO surveyQueryDTO);
Task<TrialSurveyInitInfo> GetTrialSurveyInitInfo(Guid trialId);
Task<IResponseOutput> SendVerifyCode(SiteSurveySendVerifyCode userInfo, [FromServices] IMailVerificationService _mailVerificationService);
//Task<IResponseOutput> TrialSurveyLock(Guid trialSiteSurveyId, bool isLock);

View File

@ -357,27 +357,72 @@ namespace IRaCIS.Core.Application.Contracts
}
/// <summary>
/// 获取 项目 某个site的调研记录
/// 获取 项目 site的调研记录 New
/// </summary>
/// <returns></returns>
[HttpPost("{trialId:guid}")]
public async Task<List<TrialSiteSurveyView>> GetTrialSiteSurveyList(Guid trialId, TrialSiteSurveyQueryDTO trialSiteSurveyQueryDTO)
[HttpPost]
public async Task<PageOutput<TrialSiteSurveyView>> GetTrialSiteSurveyList(TrialSiteSurveyQueryDTO surveyQueryDTO)
{
var trialSiteSurveyQueryable = _trialSiteSurveyRepository.Where(t => t.TrialId == trialId).IgnoreQueryFilters()
//.WhereIf(trialSiteSurveyQueryDTO.si != null, t => t.SiteId == siteId)
.WhereIf(!string.IsNullOrWhiteSpace(trialSiteSurveyQueryDTO.SiteName), t => t.Site.SiteName.Contains(trialSiteSurveyQueryDTO.SiteName))
.WhereIf(!string.IsNullOrWhiteSpace(trialSiteSurveyQueryDTO.TrialSiteAliasName), t => t.TrialSite.TrialSiteAliasName.Contains(trialSiteSurveyQueryDTO.TrialSiteAliasName))
.WhereIf(!string.IsNullOrWhiteSpace(trialSiteSurveyQueryDTO.TrialSiteCode), t => t.TrialSite.TrialSiteAliasName.Contains(trialSiteSurveyQueryDTO.TrialSiteCode))
//.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM, t => t.State >= TrialSiteSurveyEnum.ToSubmit)
//.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM, t => t.State >= TrialSiteSurveyEnum.SPMApproved)
var trialSiteSurveyQueryable = _trialSiteSurveyRepository.Where(t => t.TrialId == surveyQueryDTO.TrialId).IgnoreQueryFilters()
.WhereIf(surveyQueryDTO.SiteId != null, t => t.SiteId == surveyQueryDTO.SiteId)
.WhereIf(surveyQueryDTO.IsAbandon != null, t => t.IsAbandon == surveyQueryDTO.IsAbandon)
.WhereIf(!string.IsNullOrWhiteSpace(surveyQueryDTO.UserKeyInfo), t => t.UserName.Contains(surveyQueryDTO.UserKeyInfo) || t.Phone.Contains(surveyQueryDTO.UserKeyInfo) || t.Email.Contains(surveyQueryDTO.UserKeyInfo))
.WhereIf(surveyQueryDTO.State != null, t => t.State == surveyQueryDTO.State)
.ProjectTo<TrialSiteSurveyView>(_mapper.ConfigurationProvider);
return await trialSiteSurveyQueryable.ToListAsync();
return await trialSiteSurveyQueryable.ToPagedListAsync(surveyQueryDTO.PageIndex, surveyQueryDTO.PageSize, surveyQueryDTO.SortField, surveyQueryDTO.Asc);
}
/// <summary>
/// 项目Site调研用户列表 所有site的调研用户 最新的调研表的记录的用户 new
/// </summary>
/// <returns></returns>
public async Task<PageOutput<TrialSiteUserSurveyAllDTO>> TrialSiteSurveyUserList(TrialSiteUserSurveyAllQuery queryParam)
{
var groupSelectIdQuery =
_trialSiteSurveyRepository.Where(t => t.TrialId == queryParam.TrialId && t.IsAbandon == false)
.WhereIf(queryParam.SiteId != null, t => t.SiteId == queryParam.SiteId)
.WhereIf(!string.IsNullOrEmpty(queryParam.FormWriterKeyInfo), t => (t.UserName).Contains(queryParam.FormWriterKeyInfo) || t.Email.Contains(queryParam.FormWriterKeyInfo) || t.Phone.Contains(queryParam.FormWriterKeyInfo))
.GroupBy(t => t.SiteId)
.Select(g => g.OrderByDescending(u => u.CreateTime).Select(t => t.Id).First());
var query = _trialSiteUserSurveyRepository
.Where(t => groupSelectIdQuery.Contains(t.TrialSiteSurveyId) )
.WhereIf(queryParam.UserTypeId != null, t => t.UserTypeId == queryParam.UserTypeId)
.WhereIf(queryParam.IsGenerateAccount != null, t => t.IsGenerateAccount == queryParam.IsGenerateAccount)
.WhereIf(queryParam.TrialRoleNameId != null, t => t.TrialRoleNameId == queryParam.TrialRoleNameId)
.WhereIf(queryParam.State != null && queryParam.State != TrialSiteUserStateEnum.OverTime, t => t.InviteState == queryParam.State)
.WhereIf(queryParam.State != null && queryParam.State == TrialSiteUserStateEnum.OverTime, t => t.InviteState == TrialSiteUserStateEnum.HasSend && t.ExpireTime < DateTime.Now)
.WhereIf(!string.IsNullOrEmpty(queryParam.UserKeyInfo), t => (t.LastName + " / " + t.FirstName).Contains(queryParam.UserKeyInfo) || t.Email.Contains(queryParam.UserKeyInfo) || t.Phone.Contains(queryParam.UserKeyInfo))
.ProjectTo<TrialSiteUserSurveyAllDTO>(_mapper.ConfigurationProvider);
//var query = _trialSiteSurveyRepository.Where(t => t.TrialId == queryParam.TrialId && t.IsAbandon == false)
// .WhereIf(queryParam.SiteId != null, t => t.SiteId == queryParam.SiteId)
// .WhereIf(!string.IsNullOrEmpty(queryParam.FormWriterKeyInfo), t => (t.UserName).Contains(queryParam.FormWriterKeyInfo) || t.Email.Contains(queryParam.FormWriterKeyInfo) || t.Phone.Contains(queryParam.FormWriterKeyInfo))
// .GroupBy(t => t.SiteId)
// .Select(g => g.OrderByDescending(u => u.CreateTime).FirstOrDefault())
// .SelectMany(t => t.TrialSiteUserSurveyList)
//.WhereIf(queryParam.UserTypeId != null, t => t.UserTypeId == queryParam.UserTypeId)
//.WhereIf(queryParam.IsGenerateAccount != null, t => t.IsGenerateAccount == queryParam.IsGenerateAccount)
//.WhereIf(queryParam.TrialRoleNameId != null, t => t.TrialRoleNameId == queryParam.TrialRoleNameId)
//.WhereIf(queryParam.State != null && queryParam.State != TrialSiteUserStateEnum.OverTime, t => t.InviteState == queryParam.State)
//.WhereIf(queryParam.State != null && queryParam.State == TrialSiteUserStateEnum.OverTime, t => t.InviteState == TrialSiteUserStateEnum.HasSend && t.ExpireTime < DateTime.Now)
//.WhereIf(!string.IsNullOrEmpty(queryParam.UserKeyInfo), t => (t.LastName + " / " + t.FirstName).Contains(queryParam.UserKeyInfo) || t.Email.Contains(queryParam.UserKeyInfo) || t.Phone.Contains(queryParam.UserKeyInfo))
//.ProjectTo<TrialSiteUserSurveyAllDTO>(_mapper.ConfigurationProvider);
return await query.ToPagedListAsync(queryParam.PageIndex, queryParam.PageSize, queryParam.SortField, queryParam.Asc);
//return await query.ToPagedListAsync(queryParam.PageIndex, queryParam.PageSize, queryParam.SortField, queryParam.Asc);
}
@ -767,21 +812,6 @@ namespace IRaCIS.Core.Application.Contracts
}
/// <summary>
/// 项目Site调研用户列表 所有site的调研用户 会有重复
/// </summary>
/// <returns></returns>
public async Task<PageOutput<TrialSiteUserSurveyAllDTO>> TrialSiteSurveyUserList(TrialSiteUserSurveyAllQuery queryParam)
{
var query = _trialSiteUserSurveyRepository.Where(t => t.TrialSiteSurvey.TrialId == queryParam.TrialId&&t.TrialSiteSurvey.IsAbandon==false)
.WhereIf(queryParam.SiteId!=null, t => t.TrialSiteSurvey.SiteId == queryParam.SiteId)
.WhereIf(! string.IsNullOrEmpty(queryParam.UserKeyInfo ), t => (t.LastName + " / " + t.FirstName).Contains(queryParam.UserKeyInfo)||t.Email.Contains(queryParam.UserKeyInfo) ||t.Phone.Contains(queryParam.UserKeyInfo))
.WhereIf(!string.IsNullOrEmpty(queryParam.FormWriterKeyInfo), t => (t.TrialSiteSurvey.UserName).Contains(queryParam.FormWriterKeyInfo) || t.TrialSiteSurvey.Email.Contains(queryParam.FormWriterKeyInfo) || t.TrialSiteSurvey.Phone.Contains(queryParam.FormWriterKeyInfo))
.ProjectTo<TrialSiteUserSurveyAllDTO>(_mapper.ConfigurationProvider);
return await query.ToPagedListAsync(queryParam.PageIndex, queryParam.PageSize, queryParam.SortField, queryParam.Asc);
}

View File

@ -40,58 +40,13 @@ namespace IRaCIS.Core.Application.Services
IsVerify=svCommand.IsFinalVisit
};
#region 废弃
//var verifyExp2 = new EntityVerifyExp<SubjectVisit>()
//{
// verifyType = VerifyEnum.OnlyUpdate,
// VerifyExp = t => t.StudyList.Any(k => k.SubjectVisitId == svCommand.Id) && svCommand.SVSTDTC == null,
// VerifyMsg = "This visit is associated with the uploaded study images, and the visit start date is not allowed to be modified."
//};
//if (needDealEntity.SVSTDTC == null && needDealEntity.VisitExecuted == 1)
//{
// return ResponseOutput.NotOk("VisitExecuted must have Start Date ");
//}
//if (needDealEntity.IsOutEnromentVisit)
//{
// needDealEntity.VisitNum = _subjectVisitRepository.Where(t => t.SubjectId == svCommand.SubjectId).Max(t => t.VisitNum) + (decimal)0.1;
//}
//没有EndOfVisit
//if (svCommand.IsFinalVisit)
//{
// //if (svCommand.InPlan)
// //{
// await _repository.UpdateFromQueryAsync<Subject>(t => t.Id == svCommand.SubjectId, u => new Subject() { Status = SubjectStatus.EndOfVisit });
// //}
// //else
// //{
// // return ResponseOutput.NotOk("计划外访视不允许设置为最后一次访视");
// //}
//}
#endregion
svCommand.BlindName = "B" + ((int)(svCommand.VisitNum * 10)).ToString("D3");
var subject = (await _repository.FirstOrDefaultAsync<Subject>(t => t.Id == svCommand.SubjectId)).IfNullThrowException();
//不管是否 都是执行,只是失访的时候 设置Subject状态为失去访视
//if (svCommand.IsLostVisit)
//{
// svCommand.VisitExecuted = VisitExecutedEnum.Executed;
// subject.IsMissingImages = true;
//}
//else
//{
// svCommand.VisitExecuted = VisitExecutedEnum.Executed;
//}
svCommand.VisitExecuted = svCommand.IsLostVisit ? VisitExecutedEnum.Executed : svCommand.VisitExecuted;
@ -141,6 +96,14 @@ namespace IRaCIS.Core.Application.Services
await _subjectVisitRepository.UpdateFromQueryAsync(t => t.SubjectId == svCommand.SubjectId && t.VisitExecuted == VisitExecutedEnum.Unavailable, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.UnExecuted });
}
if (svCommand.IsLostVisit && svCommand.Id == null)
{
if (await _subjectVisitRepository.AnyAsync(t => t.Id==svCommand.Id && t.SubmitState == SubmitStateEnum.ToSubmit))
{
return ResponseOutput.NotOk("该受试者此访视有影像上传,不允许设置为失访");
}
}
//更新受试者 首次给药日期 是否入组确认
if (svCommand.SubjectFirstGiveMedicineTime != null)
{

View File

@ -30,7 +30,7 @@ namespace IRaCIS.Core.Domain.Models
public Guid? UserTypeId { get; set; }
public Guid? TrialRoleNameId { get; set; }
public Guid TrialRoleNameId { get; set; }
public Dictionary TrialRoleName { get; set; }