修改临床数据配置

This commit is contained in:
2023-01-29 14:54:00 +08:00
parent 275baf16db
commit 9b46d68729
13 changed files with 238 additions and 120 deletions
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc;
using IRaCIS.Core.Application.Service.Reading.Dto;
using MassTransit;
using IRaCIS.Core.Domain.Models;
namespace IRaCIS.Application.Services
{
@@ -130,22 +131,22 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("存在同类型的临床数据,操作失败");
}
indto.CriterionEnumListStr = $"|{String.Join('|', indto.CriterionEnumList)}|";
//indto.CriterionEnumListStr = $"|{String.Join('|', indto.CriterionEnumList)}|";
var entity = await _clinicalDataTrialSetRepository.InsertOrUpdateAsync(indto, true);
//entity.TrialClinicalDataCriterionList = indto.TrialCriterionIdList.Select(t => new TrialClinicalDataCriterion()
//{
// TrialClinicalDataSetId = entity.Id,
// TrialReadingCriterionId = t
//}).ToList();
entity.TrialClinicalDataSetCriteriaList = indto.TrialCriterionIdList.Select(t => new TrialClinicalDataSetCriterion()
{
TrialClinicalDataSetId = entity.Id,
TrialReadingCriterionId = t
}).ToList();
//if (indto.Id != null)
//{
// await _trialClinicalDataCriterionRepository.BatchDeleteNoTrackingAsync(t => t.TrialClinicalDataSetId == entity.Id);
if (indto.Id != null)
{
await _repository.BatchDeleteAsync<TrialClinicalDataSetCriterion>(t => t.TrialClinicalDataSetId == entity.Id);
// await _trialClinicalDataCriterionRepository.AddRangeAsync(entity.TrialClinicalDataCriterionList);
//}
await _repository.AddRangeAsync<TrialClinicalDataSetCriterion>(entity.TrialClinicalDataSetCriteriaList);
}
@@ -248,10 +249,10 @@ namespace IRaCIS.Application.Services
#region MyRegion
//不存在的时候,就将系统数据同步到项目临床数据配置
if (!await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null))
{
var systemClinicalDataList = await _clinicalDataSystemSetRepository.AsQueryable()/*.Include(t => t.SystemClinicalDataCriterionList)*/.ToListAsync();
var systemClinicalDataList = await _clinicalDataSystemSetRepository.AsQueryable().ToListAsync();
var systemIds = systemClinicalDataList.Select(x => x.Id).ToList();
var trialSystemClinicalDataSetIds = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null).Select(x => x.SystemClinicalDataSetId.Value).ToListAsync();
@@ -261,7 +262,7 @@ namespace IRaCIS.Application.Services
var systemDataList = systemClinicalDataList.Where(x => needAddids.Contains(x.Id)).ToList();
var readingCriterionList = _repository.Where<ReadingQuestionCriterionTrial>(t => t.TrialId == trialId).Where(t => t.ReadingQuestionCriterionSystemId != null)
.Select(t => new { t.ReadingQuestionCriterionSystemId, TrialReadingCriterionId = t.Id }).ToList();
.Select(t => new { t.ReadingQuestionCriterionSystemId, TrialReadingCriterionId = t.Id ,t.CriterionType}).ToList();
List<ClinicalDataTrialSet> dataSets = systemDataList.Select(x => new ClinicalDataTrialSet()
@@ -276,10 +277,11 @@ namespace IRaCIS.Application.Services
Path = x.Path,
TrialId = trialId,
CriterionEnumListStr=x.CriterionEnumListStr
//项目不采用 标准枚举字符串的方式
//CriterionEnumListStr=x.CriterionEnumListStr
//TrialClinicalDataCriterionList = readingCriterionList.Where(t => x.SystemClinicalDataCriterionList.Select(c => (Guid?)c.SystemReadingCriterionId).ToList().Contains(t.ReadingQuestionCriterionSystemId)).Select(c =>
//new TrialClinicalDataCriterion() { TrialReadingCriterionId = c.TrialReadingCriterionId }).ToList()
TrialClinicalDataSetCriteriaList = readingCriterionList.Where(t => x.CriterionEnumList.Contains( (int )t.CriterionType)).Select(c =>
new TrialClinicalDataSetCriterion() { TrialReadingCriterionId = c.TrialReadingCriterionId }).ToList()
}).ToList();
@@ -669,14 +669,14 @@ namespace IRaCIS.Application.Services
public async Task<List<GetReadingClinicalDataListOutDto>> GetReadingClinicalList(GetReadingClinicalDataListIndto inDto)
{
var criterionType = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).Select(x => x.CriterionType).FirstNotNullAsync();
//var criterionType = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).Select(x => x.CriterionType).FirstNotNullAsync();
var resultQuery = _readingClinicalDataRepository.Where(x => x.SubjectId == inDto.SubjectId)
.Where(x => x.ReadingId == inDto.ReadingId || (x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject))
//.WhereIf(inDto.UploadRole == UploadRole.CRC, x => x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC)
.Where(x => x.ClinicalDataTrialSet.CriterionEnumListStr.Contains($"|{((int)criterionType).ToString()}|"))
.Where(x => x.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t=>t.TrialReadingCriterionId==inDto.TrialReadingCriterionId))
.Select(x => new GetReadingClinicalDataListOutDto()
{
ClinicalDataLevel = x.ClinicalDataTrialSet.ClinicalDataLevel,