修改提示

Uat_Study
hang 2022-05-17 09:47:07 +08:00
parent 6c94c6e432
commit 4843b7f73e
6 changed files with 54 additions and 33 deletions

View File

@ -466,6 +466,9 @@ namespace IRaCIS.Core.Application.Contracts.DTO
public UserTypeEnum UserTypeEnum { get; set; } public UserTypeEnum UserTypeEnum { get; set; }
} }
public class QCChanllengeDialogDTO : CheckChanllengeDialogDTO public class QCChanllengeDialogDTO : CheckChanllengeDialogDTO
{ {
public Guid QCChallengeId { get; set; } public Guid QCChallengeId { get; set; }

View File

@ -1,4 +1,5 @@
using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Application.Contracts.DTO;
using IRaCIS.Core.Domain.Share;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
namespace IRaCIS.Core.Application.Contracts namespace IRaCIS.Core.Application.Contracts
@ -318,6 +319,14 @@ namespace IRaCIS.Core.Application.Contracts
} }
public class CheckDialogDTO
{
public QCCheckViewModel SubjectVisitCheck { get; set; }
public List<CheckChanllengeDialogDTO> DialogList { get; set; }
}
public class QCCheckViewModel public class QCCheckViewModel
{ {
public string? TalkContent { get; set; } = String.Empty; public string? TalkContent { get; set; } = String.Empty;

View File

@ -7,7 +7,7 @@ namespace IRaCIS.Core.Application.Image.QA
{ {
public interface IQCListService public interface IQCListService
{ {
Task<List<CheckChanllengeDialogDTO>> GetCheckChallengeDialogList(Guid subjectVisitId); Task<CheckDialogDTO> GetCheckChallengeDialogList(Guid subjectVisitId);
Task<IResponseOutput<PageOutput<QCCheckViewModel>, TrialSubjectAndSVConfig>> GetConsistencyVerificationList(CheckQuery checkQuery); Task<IResponseOutput<PageOutput<QCCheckViewModel>, TrialSubjectAndSVConfig>> GetConsistencyVerificationList(CheckQuery checkQuery);
Task<IResponseOutput<PageOutput<QCCRCChallengeViewModel>, TrialSubjectAndSVConfig>> GetCRCChallengeList(ChallengeQuery challengeQuery); Task<IResponseOutput<PageOutput<QCCRCChallengeViewModel>, TrialSubjectAndSVConfig>> GetCRCChallengeList(ChallengeQuery challengeQuery);
Task<List<ChallengeAndDialog>> GetCRCVisitChallengeAndDialog(Guid subjectVisitId, [FromRoute] TrialQCProcess trialQCProcess); Task<List<ChallengeAndDialog>> GetCRCVisitChallengeAndDialog(Guid subjectVisitId, [FromRoute] TrialQCProcess trialQCProcess);

View File

@ -93,21 +93,21 @@ namespace IRaCIS.Core.Application.Image.QA
[HttpPost] [HttpPost]
public async Task<IResponseOutput<PageOutput<QCCRCVisitViewModel>, TrialSubjectAndSVConfig>> GetCRCVisitList(CRCVisitSearchDTO visitSearchDTO) public async Task<IResponseOutput<PageOutput<QCCRCVisitViewModel>, TrialSubjectAndSVConfig>> GetCRCVisitList(CRCVisitSearchDTO visitSearchDTO)
{ {
var svExpression= GetSubjectVisitFilter(visitSearchDTO.VisitPlanArray); var svExpression = GetSubjectVisitFilter(visitSearchDTO.VisitPlanArray);
var query = _repository.Where<SubjectVisit>(x => x.TrialId == visitSearchDTO.TrialId) var query = _repository.Where<SubjectVisit>(x => x.TrialId == visitSearchDTO.TrialId)
.WhereIf(visitSearchDTO.SiteId != null, t => t.SiteId == visitSearchDTO.SiteId) .WhereIf(visitSearchDTO.SiteId != null, t => t.SiteId == visitSearchDTO.SiteId)
.WhereIf(visitSearchDTO.SubjectId != null, t => t.Subject.Id == visitSearchDTO.SubjectId) .WhereIf(visitSearchDTO.SubjectId != null, t => t.Subject.Id == visitSearchDTO.SubjectId)
.WhereIf(!string.IsNullOrEmpty(visitSearchDTO.SubjectInfo), t => t.Subject.Code.Contains(visitSearchDTO.SubjectInfo)) .WhereIf(!string.IsNullOrEmpty(visitSearchDTO.SubjectInfo), t => t.Subject.Code.Contains(visitSearchDTO.SubjectInfo))
.WhereIf(visitSearchDTO.VisitPlanArray != null && visitSearchDTO.VisitPlanArray?.Length > 0, svExpression) .WhereIf(visitSearchDTO.VisitPlanArray != null && visitSearchDTO.VisitPlanArray?.Length > 0, svExpression)
//.WhereIf(!string.IsNullOrEmpty(visitSearchDTO.VisitPlanInfo), visitSearchDTO.VisitPlanInfo.Contains('.') ? t => t.InPlan == false : t => t.VisitNum == decimal.Parse(visitSearchDTO.VisitPlanInfo)) //.WhereIf(!string.IsNullOrEmpty(visitSearchDTO.VisitPlanInfo), visitSearchDTO.VisitPlanInfo.Contains('.') ? t => t.InPlan == false : t => t.VisitNum == decimal.Parse(visitSearchDTO.VisitPlanInfo))
.WhereIf(visitSearchDTO.AuditStateArray != null && visitSearchDTO.AuditStateArray?.Length > 0, t => visitSearchDTO.AuditStateArray!.Contains(t.AuditState)) .WhereIf(visitSearchDTO.AuditStateArray != null && visitSearchDTO.AuditStateArray?.Length > 0, t => visitSearchDTO.AuditStateArray!.Contains(t.AuditState))
.WhereIf(visitSearchDTO.SubmitState != null, t => t.SubmitState == visitSearchDTO.SubmitState) .WhereIf(visitSearchDTO.SubmitState != null, t => t.SubmitState == visitSearchDTO.SubmitState)
.WhereIf(visitSearchDTO.ChallengeState != null, t => t.ChallengeState == visitSearchDTO.ChallengeState) .WhereIf(visitSearchDTO.ChallengeState != null, t => t.ChallengeState == visitSearchDTO.ChallengeState)
.WhereIf(visitSearchDTO.IsUrgent != null, t => t.IsUrgent == visitSearchDTO.IsUrgent) .WhereIf(visitSearchDTO.IsUrgent != null, t => t.IsUrgent == visitSearchDTO.IsUrgent)
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id)) .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
.ProjectTo<QCCRCVisitViewModel>(_mapper.ConfigurationProvider); .ProjectTo<QCCRCVisitViewModel>(_mapper.ConfigurationProvider);
var pageList = await query.ToPagedListAsync(visitSearchDTO.PageIndex, visitSearchDTO.PageSize, visitSearchDTO.SortField, visitSearchDTO.Asc); var pageList = await query.ToPagedListAsync(visitSearchDTO.PageIndex, visitSearchDTO.PageSize, visitSearchDTO.SortField, visitSearchDTO.Asc);
@ -166,7 +166,7 @@ namespace IRaCIS.Core.Application.Image.QA
var svExpression = GetQCChallengeFilter(challengeQuery.VisitPlanArray); var svExpression = GetQCChallengeFilter(challengeQuery.VisitPlanArray);
var query2 = _repository.Where<QCChallenge>(x => x.TrialId == challengeQuery.TrialId) var query2 = _repository.Where<QCChallenge>(x => x.TrialId == challengeQuery.TrialId)
//.WhereIf(challengeQuery.ChallengeState != null, t => t.SubjectVisit.ChallengeState == challengeQuery.ChallengeState) //.WhereIf(challengeQuery.ChallengeState != null, t => t.SubjectVisit.ChallengeState == challengeQuery.ChallengeState)
.WhereIf(challengeQuery.ReuploadEnum != null, t => t.ReuploadEnum == challengeQuery.ReuploadEnum) .WhereIf(challengeQuery.ReuploadEnum != null, t => t.ReuploadEnum == challengeQuery.ReuploadEnum)
.WhereIf(challengeQuery.IsClosed != null, t => t.IsClosed == challengeQuery.IsClosed) .WhereIf(challengeQuery.IsClosed != null, t => t.IsClosed == challengeQuery.IsClosed)
.WhereIf(challengeQuery.SiteId != null, t => t.SubjectVisit.SiteId == challengeQuery.SiteId) .WhereIf(challengeQuery.SiteId != null, t => t.SubjectVisit.SiteId == challengeQuery.SiteId)
@ -255,7 +255,7 @@ namespace IRaCIS.Core.Application.Image.QA
var svExpression = GetQCChallengeFilter(challengeQuery.VisitPlanArray); var svExpression = GetQCChallengeFilter(challengeQuery.VisitPlanArray);
var query = _repository.Where<QCChallenge>(x => x.TrialId == challengeQuery.TrialId) var query = _repository.Where<QCChallenge>(x => x.TrialId == challengeQuery.TrialId)
//.WhereIf(challengeQuery.ChallengeState != null, t => t.SubjectVisit.ChallengeState == challengeQuery.ChallengeState) //.WhereIf(challengeQuery.ChallengeState != null, t => t.SubjectVisit.ChallengeState == challengeQuery.ChallengeState)
.WhereIf(challengeQuery.ReuploadEnum != null, t => t.ReuploadEnum == challengeQuery.ReuploadEnum) .WhereIf(challengeQuery.ReuploadEnum != null, t => t.ReuploadEnum == challengeQuery.ReuploadEnum)
.WhereIf(challengeQuery.IsClosed != null, t => t.IsClosed == challengeQuery.IsClosed) .WhereIf(challengeQuery.IsClosed != null, t => t.IsClosed == challengeQuery.IsClosed)
.WhereIf(challengeQuery.SiteId != null, t => t.SubjectVisit.SiteId == challengeQuery.SiteId) .WhereIf(challengeQuery.SiteId != null, t => t.SubjectVisit.SiteId == challengeQuery.SiteId)
@ -452,12 +452,12 @@ namespace IRaCIS.Core.Application.Image.QA
//.WhereIf(visitSearchDTO.AuditState != null, t => t.AuditState == visitSearchDTO.AuditState) //.WhereIf(visitSearchDTO.AuditState != null, t => t.AuditState == visitSearchDTO.AuditState)
.WhereIf(visitSearchDTO.AuditStateArray != null && visitSearchDTO.AuditStateArray?.Length > 0, t => visitSearchDTO.AuditStateArray!.Contains(t.AuditState)) .WhereIf(visitSearchDTO.AuditStateArray != null && visitSearchDTO.AuditStateArray?.Length > 0, t => visitSearchDTO.AuditStateArray!.Contains(t.AuditState))
.WhereIf(visitSearchDTO.HandleUserId != null, t => t.PreliminaryAuditUserId == visitSearchDTO.HandleUserId || t.CurrentActionUserId== visitSearchDTO.HandleUserId .WhereIf(visitSearchDTO.HandleUserId != null, t => t.PreliminaryAuditUserId == visitSearchDTO.HandleUserId || t.CurrentActionUserId == visitSearchDTO.HandleUserId
|| t.ReviewAuditUserId == visitSearchDTO.HandleUserId || t.ReviewAuditUserId == visitSearchDTO.HandleUserId
|| t.QCChallengeList.Any(t => t.CreateUserId == visitSearchDTO.HandleUserId) || t.QCChallengeList.Any(t => t.CreateUserId == visitSearchDTO.HandleUserId)
|| t.QCChallengeDialogList.Any(t => t.CreateUserId == visitSearchDTO.HandleUserId)) || t.QCChallengeDialogList.Any(t => t.CreateUserId == visitSearchDTO.HandleUserId))
.WhereIf(visitSearchDTO.IsUrgent != null, t => t.IsUrgent == visitSearchDTO.IsUrgent) .WhereIf(visitSearchDTO.IsUrgent != null, t => t.IsUrgent == visitSearchDTO.IsUrgent)
.Where(t=>t.SubmitState!=SubmitStateEnum.None) .Where(t => t.SubmitState != SubmitStateEnum.None)
//.WhereIf(visitSearchDTO.SubmitState != null, t => t.SubmitState == visitSearchDTO.SubmitState) //.WhereIf(visitSearchDTO.SubmitState != null, t => t.SubmitState == visitSearchDTO.SubmitState)
//.WhereIf(visitSearchDTO.ChallengeState != null, t => t.ChallengeState == visitSearchDTO.ChallengeState) //.WhereIf(visitSearchDTO.ChallengeState != null, t => t.ChallengeState == visitSearchDTO.ChallengeState)
.ProjectTo<QCVisitViewModel>(_mapper.ConfigurationProvider); .ProjectTo<QCVisitViewModel>(_mapper.ConfigurationProvider);
@ -554,15 +554,15 @@ namespace IRaCIS.Core.Application.Image.QA
/// ///
[HttpGet("{subjectVisitId:guid}")] [HttpGet("{subjectVisitId:guid}")]
public async Task<List<CheckChanllengeDialogDTO>> GetCheckChallengeDialogList(Guid subjectVisitId) public async Task<CheckDialogDTO> GetCheckChallengeDialogList(Guid subjectVisitId)
{ {
var list = await _repository.Where<CheckChallengeDialog>(t => t.SubjectVisitId == subjectVisitId).OrderBy(t => t.CreateTime) var sv = (await _subjectVisitRepository.Where(t => t.Id == subjectVisitId)
.ProjectTo<CheckChanllengeDialogDTO>(_mapper.ConfigurationProvider).ToListAsync(); .ProjectTo<CheckDialogDTO>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
list.ForEach(t => t.IsCurrentUser = _userInfo.Id == t.CreateUserId); sv.DialogList.ForEach(t => t.IsCurrentUser = _userInfo.Id == t.CreateUserId);
return list; return sv;
} }
/// <summary> /// <summary>

View File

@ -949,9 +949,11 @@ namespace IRaCIS.Core.Application.Image.QA
#endregion #endregion
[HttpGet] [HttpGet]
public async Task IsQCCanOpt([FromQuery,Required]Guid subjectVisitId) public async Task<IResponseOutput> IsQCCanOpt([FromQuery,Required]Guid subjectVisitId)
{ {
await VerifyIsCanQCAsync(null, subjectVisitId); await VerifyIsCanQCAsync(null, subjectVisitId);
return ResponseOutput.Ok();
} }

View File

@ -148,6 +148,15 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.Subject.Code)) .ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.Subject.Code))
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode)); .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode));
//一致性核查 质疑对话
CreateMap<CheckChallengeDialog, CheckChanllengeDialogDTO>()
.ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUser.UserName))
.ForMember(d => d.CreateUserFullName, u => u.MapFrom(t => t.CreateUser.FullName));
CreateMap<SubjectVisit, CheckDialogDTO>()
.ForMember(d => d.SubjectVisitCheck, u => u.MapFrom(t => t))
.ForMember(d => d.DialogList, u => u.MapFrom(t => t.CheckChallengeDialogList.OrderBy(t => t.CreateTime)));
CreateMap<SubjectVisit, ForWardViewModel>() CreateMap<SubjectVisit, ForWardViewModel>()
.ForMember(d => d.ForwardUserName, u => u.MapFrom(s => s.ForwardUser.UserName)) .ForMember(d => d.ForwardUserName, u => u.MapFrom(s => s.ForwardUser.UserName))
@ -179,10 +188,8 @@ namespace IRaCIS.Core.Application.Service
CreateMap<PreviousSurgery, PreviousSurgeryView>() CreateMap<PreviousSurgery, PreviousSurgeryView>()
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path + "?access_token=" + token)); .ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path + "?access_token=" + token));
//一致性核查 质疑对话
CreateMap<CheckChallengeDialog, CheckChanllengeDialogDTO>()
.ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUser.UserName))
.ForMember(d => d.CreateUserFullName, u => u.MapFrom(t => t.CreateUser.FullName));
//QC 质疑对话 //QC 质疑对话