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);