diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicineQuestionViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicineQuestionViewModel.cs
index 86782970a..33830ba87 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicineQuestionViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicineQuestionViewModel.cs
@@ -54,6 +54,12 @@ namespace IRaCIS.Core.Application.ViewModel
/// 任务类型
///
public ReadingCategory ReadingCategory { get; set; }
+
+
+ ///
+ /// 排序
+ ///
+ public int? ParentShowOrder { get; set; }
}
///ReadingMedicineSystemQuestionQuery 列表查询参数模型
@@ -95,6 +101,11 @@ namespace IRaCIS.Core.Application.ViewModel
public Guid Id { get; set; }
}
+
+ public class TrialDataFromSystem : ReadingMedicineTrialQuestion
+ {
+ public Guid SystemQuestionId { get; set; }
+ }
public class AddTrialDataFromSystemInDto
{
public Guid TrialId { get; set; }
@@ -123,6 +134,21 @@ namespace IRaCIS.Core.Application.ViewModel
public ReadingCategory ReadingCategory { get; set; }
}
+ public class GetReadingMedicineSystemOtherQuestionInDto
+ {
+ public Guid? Id { get; set; }
+
+
+
+ public int? ShowOrder { get; set; }
+
+ ///
+ /// 任务类型
+ ///
+ public ReadingCategory? ReadingCategory { get; set; }
+
+ }
+
///
/// 获取项目的其他问题
///
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingMedicineQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingMedicineQuestionService.cs
index 251c08350..ff452c967 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingMedicineQuestionService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingMedicineQuestionService.cs
@@ -52,6 +52,35 @@ namespace IRaCIS.Core.Application.Service
return await query.ToListAsync();
}
+ ///
+ /// 获取系统的其他医学审核问题
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task> GetReadingMedicineSystemOtherQuestion(GetReadingMedicineSystemOtherQuestionInDto inDto)
+ {
+ var types = new List()
+ {
+ "select","radio"
+ };
+
+ var questionList = await _readingMedicineSystemQuestionRepository
+ .Where(x => types.Contains(x.Type))
+ .WhereIf(inDto.Id != null, x => x.Id != inDto.Id && x.ParentId != inDto.Id)
+ .WhereIf(inDto.ShowOrder != null, x => x.ShowOrder < inDto.ShowOrder)
+ .WhereIf(inDto.ReadingCategory != null, x => x.ReadingCategory == inDto.ReadingCategory)
+ .Select(x => new GetReadingMedicineTrialOtherQuestionOutDto()
+ {
+ Id = x.Id,
+ QuestionName = x.QuestionName,
+ TypeValue = x.TypeValue,
+ ReadingCategory = x.ReadingCategory,
+ }).ToListAsync();
+
+ return questionList;
+ }
+
///
/// 新增或修改系统医学审核问题
///
@@ -218,7 +247,7 @@ namespace IRaCIS.Core.Application.Service
var maxOrder = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId).OrderByDescending(x => x.ShowOrder).Select(x => x.ShowOrder).FirstOrDefaultAsync();
- var needList= systemList.Select(x => new ReadingMedicineTrialQuestion()
+ var needList= systemList.Select(x => new TrialDataFromSystem()
{
Id = NewId.NextGuid(),
ShowOrder = x.ShowOrder,
@@ -226,6 +255,8 @@ namespace IRaCIS.Core.Application.Service
IsRequired = x.IsRequired,
QuestionName = x.QuestionName,
Type = x.Type,
+ ParentId=x.ParentId,
+ SystemQuestionId=x.Id,
ReadingCategory=x.ReadingCategory,
TypeValue = x.TypeValue,
TrialId=inDto.TrialId,
@@ -235,7 +266,21 @@ namespace IRaCIS.Core.Application.Service
x.ShowOrder = maxOrder++;
});
- await _readingMedicineTrialQuestionRepository.AddRangeAsync(needList);
+ foreach (var item in needList.Where(x => x.ParentId != null))
+ {
+ var parent = needList.Where(x => x.SystemQuestionId == item.ParentId).FirstOrDefault();
+ if (parent == null)
+ {
+ item.ParentId = null;
+ item.ParentTriggerValue = String.Empty;
+ }
+ else
+ {
+ item.ParentId = parent.Id;
+ }
+ }
+
+ await _readingMedicineTrialQuestionRepository.AddRangeAsync(needList);
var result = await _readingMedicineTrialQuestionRepository.SaveChangesAsync();
return ResponseOutput.Result(result);
}
diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs
index f08039714..71d8c9ecd 100644
--- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs
+++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs
@@ -101,7 +101,11 @@ namespace IRaCIS.Core.Application.Service
#region 医学审核
CreateMap();
- CreateMap();
+ CreateMap()
+ .ForMember(x => x.ParentShowOrder, y => y.MapFrom(n => n.ParentQuestion.ShowOrder));
+
+
+ CreateMap();
CreateMap();
CreateMap()
diff --git a/IRaCIS.Core.Domain/Reading/ReadingMedicineSystemQuestion.cs b/IRaCIS.Core.Domain/Reading/ReadingMedicineSystemQuestion.cs
index 8bb31c9a1..fdd0e5b14 100644
--- a/IRaCIS.Core.Domain/Reading/ReadingMedicineSystemQuestion.cs
+++ b/IRaCIS.Core.Domain/Reading/ReadingMedicineSystemQuestion.cs
@@ -81,5 +81,8 @@ namespace IRaCIS.Core.Domain.Models
///
public ReadingCategory ReadingCategory { get; set; }
+ [ForeignKey("ParentId")]
+ public ReadingMedicineTrialQuestion ParentQuestion { get; set; }
+
}
}