修改一版

Uat_Study
he 2022-06-28 15:35:30 +08:00
parent 141d67088b
commit 0b4ad2e63d
7 changed files with 69 additions and 121 deletions

View File

@ -276,10 +276,18 @@
<summary>
下载项目临床数据文件
</summary>
<param name="Id"></param>
<param name="clinicalDataTrialSetId"></param>
<param name="_clinicalDataTrialSetRepository"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.API.Controllers.UploadDownLoadController.DownloadSystemClinicalFile(System.Guid,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ClinicalDataSystemSet})">
<summary>
下载系统临床数据文件
</summary>
<param name="clinicalDataSystemSetId"></param>
<param name="_clinicalDataSystemSetRepository"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.API.Controllers.UploadDownLoadController.UploadTrialDoc(System.Guid)">
<summary>
上传项目签名文档

View File

@ -2095,13 +2095,23 @@
<param name="trialExternalUserId"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Helper.FileStoreHelper.GetSystemClinicalPathAsync(Microsoft.AspNetCore.Hosting.IWebHostEnvironment,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ClinicalDataSystemSet},System.Guid)">
<summary>
</summary>
<param name="_hostEnvironment"></param>
<param name="_clinicalDataTrialSetRepository"></param>
<param name="id"></param>
<returns></returns>
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
</member>
<member name="M:IRaCIS.Core.Application.Helper.FileStoreHelper.GetTrialClinicalPathAsync(Microsoft.AspNetCore.Hosting.IWebHostEnvironment,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ClinicalDataTrialSet},System.Guid)">
<summary>
</summary>
<param name="_hostEnvironment"></param>
<param name="_commonDocumentRepository"></param>
<param name="code"></param>
<param name="_clinicalDataTrialSetRepository"></param>
<param name="id"></param>
<returns></returns>
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
</member>

View File

@ -109,10 +109,13 @@ namespace IRaCIS.Application.Services
private async Task<IResponseOutput> AddTrialClinicalDataTrialSet(Guid trialId)
{
var systemIds = await _clinicalDataSystemSetRepository.Select(x => x.Id).ToListAsync();
var systemClinicalDataList = await _clinicalDataSystemSetRepository.AsQueryable().ToListAsync();
var systemIds = systemClinicalDataList.Select(x => x.Id).ToList();
var trialSystemIds =await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null).Select(x => x.SystemClinicalDataSetId.Value).ToListAsync();
//var needUpdateIds = systemIds.Intersect(trialSystemIds).ToList();
var needAddids = systemIds.Except(trialSystemIds).ToList();
var systemDataList =await _clinicalDataSystemSetRepository.Where(x => needAddids.Contains(x.Id)).ToListAsync();
var systemDataList = systemClinicalDataList.Where(x => needAddids.Contains(x.Id)).ToList();
List<ClinicalDataTrialSet> dataSets = systemDataList.Select(x => new ClinicalDataTrialSet()
{
Id= NewId.NextGuid(),
@ -126,7 +129,25 @@ namespace IRaCIS.Application.Services
TrialId= trialId,
}).ToList();
await _clinicalDataTrialSetRepository.AddRangeAsync(dataSets);
//var needUpdateitemList = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialId && needUpdateIds.Contains(x.SystemClinicalDataSetId.Value)).ToListAsync();
//foreach (var item in needUpdateitemList)
//{
// var systemData = systemClinicalDataList.FirstOrDefault(x => x.Id == item.SystemClinicalDataSetId);
// await _clinicalDataTrialSetRepository.UpdatePartialNoQueryAsync(item.Id,x=>new ClinicalDataTrialSet() {
// ClinicalDataSetName = systemData.ClinicalDataSetName,
// ClinicalDataLevel = systemData.ClinicalDataLevel,
// ClinicalUploadType = systemData.ClinicalUploadType,
// UploadRole = systemData.UploadRole,
// FileName = systemData.FileName,
// Path = systemData.Path,
// });
//}
var result= await _clinicalDataTrialSetRepository.SaveChangesAsync();
return ResponseOutput.Ok(result);
}

View File

@ -11,6 +11,7 @@ using MassTransit;
using Panda.DynamicWebApi.Attributes;
using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Infra.EFCore.Common;
using System.Linq.Dynamic.Core;
namespace IRaCIS.Application.Services
{
@ -152,8 +153,9 @@ namespace IRaCIS.Application.Services
{
#region MyRegion
var subjectQuery = _readModuleViewRepository.WhereIf(dto.TrialId != null, x => x.TrialId == dto.TrialId)
dto.SortField = dto.SortField.IsNullOrEmpty() ? "TrialSiteCode" : dto.SortField;
dto.SortField = dto.Asc ? dto.SortField : dto.SortField + " desc";
var subjectQuery = _readModuleViewRepository.WhereIf(dto.TrialId != null, x => x.TrialId == dto.TrialId)
.WhereIf(dto.SubjectId != null, x => x.SubjectId == dto.SubjectId)
.WhereIf(dto.TrialSiteCode != null && dto.TrialSiteCode != String.Empty, x => x.TrialSiteCode == dto.TrialSiteCode)
.WhereIf(dto.SubjectCode != null && dto.SubjectCode != String.Empty, x => x.SubjectCode == dto.SubjectCode)
@ -161,8 +163,12 @@ namespace IRaCIS.Application.Services
.WhereIf(dto.ReadingStatus != null, x => x.ReadingStatus == dto.ReadingStatus)
.WhereIf(dto.Name != null, x => x.Name.Contains(dto.Name)).OrderBy(x => x.SiteCode);
var subjectIds = await subjectQuery.Select(x => x.SubjectId).Distinct().Skip((dto.PageIndex - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
List<ReadModuleView> ReadModuleViewList = await subjectQuery.Where(x => subjectIds.Contains(x.SubjectId)).ToListAsync();
var subjectIds = await subjectQuery.OrderBy(dto.SortField).Select(x => x.SubjectId).Distinct().Skip((dto.PageIndex - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
List<ReadModuleView> ReadModuleViewList = await subjectQuery.Where(x => subjectIds.Contains(x.SubjectId)).OrderBy(dto.SortField).ToListAsync();
List<GetReadModuleDtoOut> getReadList = ReadModuleViewList.GroupBy(x => new { x.SubjectId, x.SiteId, x.TrialSiteCode, x.SubjectCode })
.Select(x => new GetReadModuleDtoOut()
{
@ -195,116 +201,6 @@ namespace IRaCIS.Application.Services
}) ;
#endregion
#region 用导航属性写的 有问题
//var subjectQuery = _subjectRepository.WhereIf(dto.TrialId != null, x => x.TrialId == dto.TrialId)
// .WhereIf(dto.SubjectId != null, x => x.Id == dto.SubjectId).Include(x => x.SubjectVisitList).Include(x => x.Site).Include(x => x.TrialSite)
// .WhereIf(dto.TrialSiteCode != null, x => x.TrialSite.TrialSiteCode == dto.TrialSiteCode)
// .WhereIf(dto.SubjectCode != null, x => x.Code == dto.SubjectCode)
// .Select(x => new GetReadModuleDtoOut
// {
// TrialSiteCode = x.TrialSite.TrialSiteCode,
// SiteCode = x.TrialSite.TrialSiteCode,
// SiteId = x.SiteId,
// SubjectCode = x.Code,
// SubjectId = x.Id,
// Data = x.SubjectVisitList.OrderByDescending(y => y.VisitNum).Select(y => new GetReadModuleOutDto()
// {
// Id = y.Id, //id
// Name = y.VisitName,
// ModuleType = y.InPlan ? ModuleTypeEnum.InPlanSubjectVisit : ModuleTypeEnum.OutPlanSubjectVisit, // 模块类型
// IsUrgent = x.IsUrgent, // 是否加急
// SubjectVisitId = y.Id, // 访视ID
// SubjectVisitName = y.VisitName, // 访视名称
// Status = ReadingCommon.GetVisitSubmitStateEnum(y), // 状态
// CreateTime = y.CreateTime, // 创建时间
// SubjectCode = y.Subject.Code, // 受试者code
// TrialSiteCode = x.TrialSite.TrialSiteCode, // 中心Code
// VisitNum = y.VisitNum,
// IsFinalVisit = y.IsFinalVisit, // 是否为末次评估
// OutPlanPreviousVisitId = y.OutPlanPreviousVisitId, // 上一访视
// OutPlanPreviousVisitName = y.OutPlanPreviousVisit.VisitName, // 上一访视名称
// SiteId = x.Site.Id, // 中心ID
// IsVisit = true, // 是否为访视
// PDState = y.PDState, // PD 进展
// IsEnrollmentConfirm = y.IsEnrollmentConfirm, // 入组
// SubjectId = x.Id,
// }).ToList(),
// ReadModuleData = x.ReadModuleList.Select(
// z => new GetReadModuleOutDto()
// {
// CreateTime = z.CreateTime,
// Id = z.Id,
// Name = z.ModuleName,
// SubjectId = x.Id,
// ModuleType = z.ModuleType,
// Status = ReadingCommon.GetVisitSubmitStateEnum(z.SubjectVisit),
// SubjectCode = x.Code,
// TrialSiteCode = x.TrialSite.TrialSiteCode,
// SubjectVisitId = z.SubjectVisitId,
// SubjectVisitName = z.SubjectVisit.VisitName, // 截止访视名称
// CutOffVisitId = z.SubjectVisitId, // 截止访视
// CutOffVisitName = z.SubjectVisit.VisitName, // 截止访视名称
// ReadModuleId = z.ReadModuleId,
// ReadModuleName = z.ReadModuleModel.ModuleName,
// IsUrgent = z.IsUrgent
// }).ToList(),
// });
//if (dto.ModuleType != null)
//{
// subjectQuery.
//}
//if (dto.Status != null)
//{
// x.Data = x.Data.Where(y => y.Status == dto.Status).ToList();
//}
//if (dto.Name != null)
//{
// x.Data = x.Data.Where(y => y.Name.Contains(y.Name)).ToList();
//}
//var pageList = await subjectQuery.ToPagedListAsync(dto.PageIndex, dto.PageSize, dto.SortField == null || dto.SortField == string.Empty ? "SiteCode" : dto.SortField,
// dto.Asc);
//pageList.CurrentPageData.ForEach(x =>
//{
// var outplan = x.Data.FirstOrDefault(x => x.IsFinalVisit);
// if (outplan != null)
// {
// x.Data = x.Data.Where(y => y.VisitNum >= outplan.VisitNum).ToList();
// }
//});
//var subjectIds = pageList.CurrentPageData.Select(x => x.SubjectId).ToList();
//var readModules = await _readModuleRepository.Where(x => subjectIds.Contains(x.SubjectId)).Include(x => x.SubjectVisit)
// .Include(x => x.ReadModuleModel).ToListAsync();
//return (pageList, new
//{
// MaxLength = pageList.CurrentPageData.ToList().Max(x => x.Data.Count)
//});
#endregion
}

View File

@ -244,7 +244,7 @@ namespace IRaCIS.Application.Services
var usedIdsQuery = _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.ReadingId && x.Id != inDto.ReadingClinicalDataId).Select(x => x.ClinicalDataTrialSetId);
List<GetTrialClinicalDataSelectOutDto> clinicalList = await _clinicalDataTrialSetRepository.Where(x=>x.TrialId==inDto.TrialId&&x.IsConfirm)
.WhereIf(inDto.UploadRole!=null,x=>x.UploadRole==inDto.UploadRole)
.Where(x=> !usedIdsQuery.Contains(x.Id))
.Where(x=> !usedIdsQuery.Contains(x.Id))
.WhereIf(inDto.IsVisit&&inDto.IsBaseLine,x=>x.ClinicalDataLevel == ClinicalLevel.Subject||x.ClinicalDataLevel== ClinicalLevel.SubjectVisit)
.WhereIf(inDto.IsVisit&&! inDto.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
.WhereIf(!inDto.IsVisit, x => x.ClinicalDataLevel == ClinicalLevel.Read)

View File

@ -161,6 +161,12 @@ namespace IRaCIS.Application.Services
if (inDto.IsCompleteConfig)
{
await UpdateTrialCriterion(inDto.Id);
}else
{
await _readingQuestionCriterionTrialRepository.BatchUpdateNoTrackingAsync(x=>x.ReadingQuestionCriterionSystemId== inDto.Id, x => new ReadingQuestionCriterionTrial()
{
IsCompleteConfig = inDto.IsCompleteConfig
});
}
var result = await _readingQuestionCriterionSystemRepository.SaveChangesAsync();
@ -373,11 +379,12 @@ namespace IRaCIS.Application.Services
ParentTriggerValue = quesiton.ParentTriggerValue,
QuestionName = quesiton.QuestionName,
ReadingQuestionCriterionTrialId = ReadingQuestionCriterionTrialId,
ReadingQuestionSystemId= quesiton.Id,
SystemParentId=quesiton.ParentId,
TrialId = trialId,
AnswerGroup = string.Empty,
Type = quesiton.Type,
GroupName=quesiton.GroupName,
ReadingQuestionSystemId=x.Id,
IsJudgeQuestion =quesiton.IsJudgeQuestion,
Remark=quesiton.Remark,
TypeValue = quesiton.TypeValue,
@ -411,6 +418,7 @@ namespace IRaCIS.Application.Services
IsEnable = quesiton.IsEnable,
IsRequired = quesiton.IsRequired,
ParentId = newParentId,
SystemParentId = quesiton.ParentId,
ReadingQuestionSystemId = x.Id,
AnswerGroup = string.Empty,
ParentTriggerValue = quesiton.ParentTriggerValue,

View File

@ -87,6 +87,11 @@ namespace IRaCIS.Core.Domain.Models
/// </summary>
public Guid? ReadingQuestionSystemId { get; set; }
/// <summary>
/// 系统标准的ParentId
/// </summary>
public Guid? SystemParentId { get; set; }
/// <summary>
/// 答案分组
/// </summary>