diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 47c6eaa12..f32c1215a 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -8332,6 +8332,11 @@ 排序 + + + 标准类型 + + 是否是系统数据 diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs index 46cb75ca5..2442f025b 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs @@ -5,6 +5,9 @@ using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Application.Interfaces; using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Infrastructure; +using System.Linq; +using System.Linq.Expressions; +using System; namespace IRaCIS.Application.Services { @@ -274,20 +277,24 @@ namespace IRaCIS.Application.Services public async Task> GetTrialClinicalDataTrialSetList(GetTrialClinicalDataTrialIndto inDto) { await this.AddTrialClinicalDataTrialSet(inDto.TrialId); - List criterionTypes = new List(); - var query = _clinicalDataTrialSetRepository.AsQueryable() - .Where(x => x.TrialId == inDto.TrialId); - + List criterionTypes = new List(); + Expression> predicate = null; if (inDto.CriterionIds != null) { criterionTypes =( await _iReadingQuestionCriterionTrialRepository.Where(x => inDto.CriterionIds.Contains(x.Id)).Select(x => x.CriterionType).ToListAsync()) - .Select(x=>(int)x).ToList(); + .Select(x=>((int)x).ToString()).ToList(); - + predicate = x => x.IsConfirm || x.SystemClinicalDataSetId == null; + foreach (var item in criterionTypes) + { + Expression> typeExpression = x => x.CriterionEnumListStr.Contains(item); + predicate = predicate.Or(typeExpression); + + } } var trialClinicalDataList = await _clinicalDataTrialSetRepository.AsQueryable() .Where(x => x.TrialId == inDto.TrialId) - .WhereIf(inDto.CriterionIds != null,x=>x.IsConfirm||x.SystemClinicalDataSetId==null|| criterionTypes.Any(d => x.CriterionEnumList.Contains(d))) + .WhereIf(inDto.CriterionIds != null, predicate) .WhereIf(inDto.ClinicalDataLevel != null, x => x.ClinicalDataLevel == inDto.ClinicalDataLevel) .WhereIf(inDto.ClinicalUploadType != null, x => x.ClinicalUploadType == inDto.ClinicalUploadType) .WhereIf(inDto.ClinicalDataSetName != String.Empty, x => x.ClinicalDataSetName.Contains(inDto.ClinicalDataSetName)) @@ -296,14 +303,12 @@ namespace IRaCIS.Application.Services } - - - /// - /// 删除(项目) - /// - /// - /// - [HttpDelete("{id:guid}")] + /// + /// 删除(项目) + /// + /// + /// + [HttpDelete("{id:guid}")] public async Task DeleteClinicalTrialSetData(Guid id) { await _clinicalDataTrialSetRepository.DeleteFromQueryAsync(x => x.Id == id, true);