diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index becbece6..23c31152 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -602,7 +602,7 @@
-
+
测试邮件 带附件 填充word --前端不需要用
@@ -8656,6 +8656,12 @@
+
+
+ 获取标准字典
+
+
+
获取标准指定字典
diff --git a/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs b/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs
index b4932a69..39549319 100644
--- a/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs
+++ b/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs
@@ -90,6 +90,12 @@ namespace IRaCIS.Application.Contracts
public Guid? TrialReadingCriterionId { get; set; }
}
+
+ public class GetTrialCriterionDictionaryListInDto
+ {
+ [NotDefault]
+ public Guid TrialCriterionId { get; set; }
+ }
public class GetCriterionDictionaryListInDto
{
[NotDefault]
diff --git a/IRaCIS.Core.Application/Service/Common/DictionaryService.cs b/IRaCIS.Core.Application/Service/Common/DictionaryService.cs
index fd536c00..11e02a51 100644
--- a/IRaCIS.Core.Application/Service/Common/DictionaryService.cs
+++ b/IRaCIS.Core.Application/Service/Common/DictionaryService.cs
@@ -21,7 +21,7 @@ namespace IRaCIS.Application.Services
private readonly IRepository _doctorRepository;
private readonly IRepository _trialRepository;
private readonly IRepository _systemCriterionDictionaryCodeRepository;
- private readonly IRepository _trialCriterionDictionaryCode;
+ private readonly IRepository _trialCriterionDictionaryCodeRepository;
private readonly IRepository _readingCriterionDictionaryRepository;
private readonly IRepository _readingQuestionCriterionSystem;
private readonly IRepository _readingQuestionCriterionTrial;
@@ -31,7 +31,7 @@ namespace IRaCIS.Application.Services
IRepository doctorRepository, IRepository trialRepository,
IRepository systemCriterionDictionaryCodeRepository,
- IRepository trialCriterionDictionaryCode,
+ IRepository trialCriterionDictionaryCodeRepository,
IRepository readingCriterionDictionaryRepository,
IRepository readingQuestionCriterionSystem,
IRepository readingQuestionCriterionTrial,
@@ -46,7 +46,7 @@ namespace IRaCIS.Application.Services
_doctorRepository = doctorRepository;
_trialRepository = trialRepository;
this._systemCriterionDictionaryCodeRepository = systemCriterionDictionaryCodeRepository;
- this._trialCriterionDictionaryCode = trialCriterionDictionaryCode;
+ this._trialCriterionDictionaryCodeRepository = trialCriterionDictionaryCodeRepository;
this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository;
this._readingQuestionCriterionSystem = readingQuestionCriterionSystem;
this._readingQuestionCriterionTrial = readingQuestionCriterionTrial;
@@ -270,6 +270,36 @@ namespace IRaCIS.Application.Services
return dictionaryList;
}
+
+ ///
+ /// 获取标准字典
+ ///
+ ///
+ public async Task> GetTrialCriterionDictionaryList(GetTrialCriterionDictionaryListInDto inDto)
+ {
+ var criterionCodes = await _trialCriterionDictionaryCodeRepository.Where(x => x.TrialCriterionId == inDto.TrialCriterionId).ToListAsync();
+
+ var parentCodes = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.TrialCriterionId).Select(x => x.ParentCode).ToListAsync();
+
+
+ var codes = criterionCodes.Select(x => x.Code).ToList();
+
+ var dictionaryList = await _dicRepository.Where(x => codes.Contains(x.Code) && x.ParentId == null)
+ .OrderBy(x => x.ShowOrder).Select(x => new GetCriterionDictionaryListOutDto()
+ {
+ Code = x.Code,
+ ShowOrder = x.ShowOrder,
+ Description = x.Description
+ }).ToListAsync();
+
+ dictionaryList.ForEach(x => {
+ x.Count = parentCodes.Count(y => y == x.Code);
+ x.Id = criterionCodes.Where(y => y.Code == x.Code).Select(x => x.Id).FirstOrDefault();
+ });
+
+ return dictionaryList;
+ }
+
///
/// 获取标准指定字典
///
@@ -299,7 +329,7 @@ namespace IRaCIS.Application.Services
}
else
{
- selectCode = await _trialCriterionDictionaryCode.Where(x => x.TrialCriterionId == inDto.ReadingCriterionId).Select(x => x.Code).ToListAsync();
+ selectCode = await _trialCriterionDictionaryCodeRepository.Where(x => x.TrialCriterionId == inDto.ReadingCriterionId).Select(x => x.Code).ToListAsync();
}
@@ -367,7 +397,7 @@ namespace IRaCIS.Application.Services
}
else
{
- List selectCode = await _trialCriterionDictionaryCode.Where(x => x.TrialCriterionId == inDto.TrialReadingCriterionId).Select(x => x.Code).ToListAsync();
+ List selectCode = await _trialCriterionDictionaryCodeRepository.Where(x => x.TrialCriterionId == inDto.TrialReadingCriterionId).Select(x => x.Code).ToListAsync();
var criterionCode = await _dicRepository.Where(x => x.ConfigDictionary.Code == "Reading_eCRF_Criterion").Select(x => x.Code).ToListAsync();
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
index 3e2a6f83..c3dd14ba 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
@@ -1720,17 +1720,19 @@ namespace IRaCIS.Application.Services
public async Task VerifyDefaultQuestionBeAnswer(VerifyVisitTaskQuestionsInDto inDto)
{
- var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
+ var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x=>x.TrialReadingCriterion).Include(x=>x.SourceSubjectVisit).FirstNotNullAsync();
var criterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == taskInfo.TrialReadingCriterionId).FirstNotNullAsync();
- var readingQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskInfo.TrialReadingCriterionId
- && (x.IsJudgeQuestion || (x.IsRequired == IsRequired.Required && x.ShowQuestion == ShowQuestion.Show))
-
- )
- .WhereIf(!criterion.IseCRFShowInDicomReading,x=>x.IsShowInDicom).ToListAsync();
+ var readingQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskInfo.TrialReadingCriterionId)
+ .WhereIf(taskInfo.SourceSubjectVisit.IsBaseLine,x=> ((x.IsRequired == IsRequired.Required && x.ShowQuestion == ShowQuestion.Show)&&(x.LimitEdit==LimitEdit.None||x.LimitEdit==LimitEdit.OnlyBaseLine)))
+ .WhereIf(!taskInfo.SourceSubjectVisit.IsBaseLine, x => ((x.IsRequired == IsRequired.Required && x.ShowQuestion == ShowQuestion.Show) && (x.LimitEdit == LimitEdit.None || x.LimitEdit == LimitEdit.OnlyVisit)))
+ .WhereIf(taskInfo.TrialReadingCriterion.CriterionType==CriterionType.PCWG3, x => x.QuestionType != QuestionType.SiteVisitForTumorEvaluation)
- var answerQuestionIds = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).Select(x => x.ReadingQuestionTrialId).ToListAsync();
+ //.WhereIf(!criterion.IseCRFShowInDicomReading,x=>x.IsShowInDicom)
+ .ToListAsync();
+
+ var answerQuestionIds = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId&&x.Answer!=string.Empty).Select(x => x.ReadingQuestionTrialId).ToListAsync();
readingQuestionList = readingQuestionList.Where(x => !answerQuestionIds.Contains(x.Id)).ToList();
@@ -1751,6 +1753,7 @@ namespace IRaCIS.Application.Services
public async Task VerifyVisitTaskQuestions(VerifyVisitTaskQuestionsInDto inDto)
{
await VerifyTaskIsSign(inDto.VisitTaskId);
+ await VerifyDefaultQuestionBeAnswer(inDto);
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
var isBaseline = await _subjectVisitRepository.Where(x => x.Id == taskInfo.SourceSubjectVisitId).Select(x => x.IsBaseLine).FirstOrDefaultAsync();
var readingQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskInfo.TrialReadingCriterionId
diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs
index 2107d281..de7e6549 100644
--- a/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs
+++ b/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs
@@ -777,15 +777,15 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
}
else
{
- var twoindex = taskList.OrderBy(x => x.VisitTaskNum).ToList()[3];
+ var twoindex = taskList.OrderBy(x => x.VisitTaskNum).ToList()[2];
result = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.AlwaysNewLesions).SelectMany(x => x.TableRowInfoList)
- .Where(x => x.FristAddTaskNum >= twoindex.VisitTaskNum && x.TableQuestionList.Any(y => y.QuestionMark == QuestionMark.State && y.Answer == EvaluationOfState.Exists.GetEnumInt())).Count()
+ .Where(x => x.FristAddTaskNum >= twoindex.VisitTaskNum && x.TableQuestionList.Any(y => y.QuestionMark == QuestionMark.State && y.Answer == EvaluationOfState.Exists.GetEnumInt())).Count();
- + inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NewLesions).SelectMany(x => x.TableRowInfoList)
- .Where(x => x.TableQuestionList.Any(y => y.QuestionMark == QuestionMark.State && y.Answer == EvaluationOfState.Exists.GetEnumInt()))
- .Count();
+ //+ inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NewLesions).SelectMany(x => x.TableRowInfoList)
+ // .Where(x => x.TableQuestionList.Any(y => y.QuestionMark == QuestionMark.State && y.Answer == EvaluationOfState.Exists.GetEnumInt()))
+ // .Count();
}
@@ -1086,7 +1086,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
if (errorMassage != string.Empty)
{
- errorMassage = _localizer["ReadingCalculate_Questionable"] + errorMassage;
+ errorMassage = _localizer["ReadingCalculate_questionable"] + errorMassage;
throw new BusinessValidationFailedException(errorMassage);
}
}