Uat_Study
parent
95b932554d
commit
8c49955057
|
@ -32,7 +32,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||
public string TrialSiteCode { get; set; }
|
||||
public SubjectStatus SubjectStatus { get; set; }
|
||||
|
||||
public List<EvaluationInfo> FinalEvaluationList { get; set; }
|
||||
public List<EvaluationInfo> FinalEvaluationList { get; set; }=new List<EvaluationInfo>();
|
||||
|
||||
|
||||
public List<EvaluationInfo> ReadingEvaluationList { get; set; }
|
||||
|
@ -41,10 +41,8 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||
|
||||
public class EvaluationInfo
|
||||
{
|
||||
public string QuestioName { get; set; }
|
||||
|
||||
public string QuestioNameEn { get; set; }
|
||||
|
||||
public Guid? QuestionId { get; set; }
|
||||
public string Answer { get; set; }
|
||||
|
||||
public string FinalTranslateDictionaryCode { get; set; } = string.Empty;
|
||||
|
|
|
@ -11,15 +11,22 @@ using System.ComponentModel.DataAnnotations;
|
|||
namespace IRaCIS.Core.Application.ViewModel
|
||||
{
|
||||
/// <summary> SubjectCriteriaEvaluationVisitFilterView 列表视图模型 </summary>
|
||||
public class SubjectCriteriaEvaluationVisitFilterView: SubjectCriteriaEvaluationVisitFilterAddOrEdit
|
||||
public class SubjectCriteriaEvaluationVisitFilterView
|
||||
{
|
||||
public DateTime? CreateTime { get; set; }
|
||||
public Guid? CreateUserId { get; set; }
|
||||
public Guid? UpdateUserId { get; set; }
|
||||
public DateTime? UpdateTime { get; set; }
|
||||
|
||||
public new ImageFilterState? ImageFilterState { get; set; }
|
||||
public new ImageDeterminationResultState? ImageDeterminationResultState { get; set; }
|
||||
public Guid? Id { get; set; }
|
||||
public Guid SubjectId { get; set; }
|
||||
public Guid TrialReadingCriterionId { get; set; }
|
||||
public Guid SubjectVisitId { get; set; }
|
||||
|
||||
public ImageFilterState? ImageFilterState { get; set; }
|
||||
public ImageDeterminationResultState? ImageDeterminationResultState { get; set; }
|
||||
|
||||
|
||||
public bool? IsGeneratedTask { get; set; }
|
||||
|
||||
|
||||
|
@ -29,7 +36,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||
}
|
||||
|
||||
///<summary>SubjectCriteriaEvaluationVisitFilterQuery 列表查询参数模型</summary>
|
||||
public class SubjectCriteriaEvaluationVisitFilterQuery : PageInput
|
||||
public class SubjectCriteriaEvaluationVisitFilterQuery
|
||||
{
|
||||
[NotDefault]
|
||||
public Guid TrialReadingCriterionId { get; set; }
|
||||
|
|
|
@ -14,7 +14,7 @@ namespace IRaCIS.Core.Application.Interfaces
|
|||
{
|
||||
|
||||
|
||||
Task<PageOutput<SubjectCriteriaEvaluationView>> GetSubjectCriteriaEvaluationList(SubjectCriteriaEvaluationQuery inQuery);
|
||||
//Task<PageOutput<SubjectCriteriaEvaluationView>> GetSubjectCriteriaEvaluationList(SubjectCriteriaEvaluationQuery inQuery);
|
||||
|
||||
//Task<IResponseOutput> AddOrUpdateSubjectCriteriaEvaluation(SubjectCriteriaEvaluationAddOrEdit addOrEditSubjectCriteriaEvaluation);
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ using IRaCIS.Core.Domain.Share;
|
|||
using IRaCIS.Core.Application.Contracts;
|
||||
using DocumentFormat.OpenXml.Spreadsheet;
|
||||
using Panda.DynamicWebApi.Attributes;
|
||||
using IRaCIS.Core.Domain.Share.Reading;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
|
@ -33,12 +34,14 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
private readonly IRepository<ReadingQuestionCriterionTrial> _trialReadingCriterionRepository;
|
||||
|
||||
private readonly IRepository<ReadingQuestionTrial> _trialReadingQuestionRepository;
|
||||
|
||||
private readonly IVisitTaskHelpeService _IVisitTaskHelpeService;
|
||||
|
||||
public SubjectCriteriaEvaluationService(IRepository<SubjectCriteriaEvaluation> subjectCriteriaEvaluationRepository, IRepository<Subject> subjectRepository,
|
||||
IRepository<SubjectCriteriaEvaluationVisitFilter> subjectCriteriaEvaluationVisitFilterRepository, IRepository<SubjectVisit> subjectVisitRepository,
|
||||
IRepository<SubjectCriteriaEvaluationVisitStudyFilter> subjectCriteriaEvaluationVisitStudyFilterRepository,
|
||||
IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IVisitTaskHelpeService IVisitTaskHelpeService)
|
||||
IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IVisitTaskHelpeService IVisitTaskHelpeService, IRepository<ReadingQuestionTrial> trialReadingQuestionRepository)
|
||||
{
|
||||
_subjectCriteriaEvaluationRepository = subjectCriteriaEvaluationRepository;
|
||||
_subjectRepository = subjectRepository;
|
||||
|
@ -49,6 +52,8 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
_IVisitTaskHelpeService = IVisitTaskHelpeService;
|
||||
|
||||
_trialReadingQuestionRepository = trialReadingQuestionRepository;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -58,24 +63,36 @@ namespace IRaCIS.Core.Application.Service
|
|||
/// <param name="inQuery"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<PageOutput<SubjectCriteriaEvaluationView>> GetSubjectCriteriaEvaluationList(SubjectCriteriaEvaluationQuery inQuery)
|
||||
public async Task<(PageOutput<SubjectCriteriaEvaluationView>,object)> GetSubjectCriteriaEvaluationList(SubjectCriteriaEvaluationQuery inQuery)
|
||||
{
|
||||
|
||||
var trialReadingCritionList = _trialReadingCriterionRepository.Where(t => t.TrialId == inQuery.TrialId).ToList();
|
||||
|
||||
var resultTrialReadingCriterionId = Guid.Empty;
|
||||
|
||||
var resultTrialReadingCriterion = trialReadingCritionList.First();
|
||||
|
||||
var curentCriterionType = CriterionType.NoCriterion;
|
||||
|
||||
|
||||
//BM 需要找基线 两个人做的结果
|
||||
if (trialReadingCritionList.First(t => t.Id == inQuery.TrialReadingCriterionId).CriterionType == CriterionType.RECIST1Pointt1_MB)
|
||||
{
|
||||
|
||||
resultTrialReadingCriterionId = trialReadingCritionList.First(t => t.CriterionType == CriterionType.RECIST1Point1).Id;
|
||||
|
||||
resultTrialReadingCriterion = trialReadingCritionList.First(t => t.CriterionType == CriterionType.RECIST1Point1);
|
||||
resultTrialReadingCriterionId = resultTrialReadingCriterion.Id;
|
||||
|
||||
curentCriterionType = CriterionType.RECIST1Pointt1_MB;
|
||||
}
|
||||
|
||||
var addtionalQustionInfoList = _trialReadingQuestionRepository.Where(t => t.ReadingQuestionCriterionTrialId == resultTrialReadingCriterionId && t.IsAdditional == true && t.Type != "group").IgnoreQueryFilters().Select(t => new
|
||||
{
|
||||
QuestionId= t.Id,
|
||||
t.QuestionEnName,
|
||||
t.QuestionName
|
||||
}).ToList();
|
||||
|
||||
var questionIdList= addtionalQustionInfoList.Select(t=>t.QuestionId).ToList();
|
||||
|
||||
|
||||
var subjectCriteriaEvaluationQueryable = from subject in _subjectRepository.Where(t=>t.TrialId==inQuery.TrialId)
|
||||
|
@ -102,12 +119,14 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
|
||||
ReadingEvaluationList= subject.ReadingTaskQuestionAnswerList
|
||||
.Where(t=>t.ReadingQuestionCriterionTrialId == resultTrialReadingCriterionId && t.ReadingQuestionTrial.IsAdditional==true && t.ReadingQuestionTrial.Type!="group" && t.VisitTask.SourceSubjectVisit.IsBaseLine)
|
||||
.Where(t=>t.ReadingQuestionCriterionTrialId == resultTrialReadingCriterionId &&
|
||||
questionIdList.Contains(t.ReadingQuestionTrialId)
|
||||
&& t.VisitTask.TaskState==TaskState.Effect)
|
||||
.Select(u=>new EvaluationInfo()
|
||||
{
|
||||
QuestionId=u.ReadingQuestionTrialId,
|
||||
Answer=u.Answer,
|
||||
QuestioName=u.ReadingQuestionTrial.QuestionName,
|
||||
QuestioNameEn=u.ReadingQuestionTrial.QuestionEnName,
|
||||
|
||||
FinalTranslateDictionaryCode=u.ReadingQuestionTrial.DictionaryCode
|
||||
}).ToList()
|
||||
|
||||
|
@ -122,22 +141,86 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
var pageList = await subjectCriteriaEvaluationQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField == string.Empty ? nameof(SubjectCriteriaEvaluationView.SubjectCode) : inQuery.SortField, inQuery.Asc);
|
||||
|
||||
switch (curentCriterionType)
|
||||
|
||||
foreach (var item in pageList.CurrentPageData)
|
||||
{
|
||||
|
||||
case CriterionType.RECIST1Pointt1_MB:
|
||||
switch (curentCriterionType)
|
||||
{
|
||||
|
||||
case CriterionType.RECIST1Pointt1_MB:
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
if (resultTrialReadingCriterion.ReadingType == ReadingMethod.Double)
|
||||
{
|
||||
if (item.ReadingEvaluationList.Count==2)
|
||||
{
|
||||
if (item.ReadingEvaluationList.All(t => t.Answer == 1.ToString()))
|
||||
{
|
||||
item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId=item.ReadingEvaluationList.First().QuestionId, Answer = ((int)BrainMetastasisResult.Yes).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult)
|
||||
});
|
||||
}
|
||||
else if (item.ReadingEvaluationList.All(t => t.Answer == 0.ToString()))
|
||||
{
|
||||
item.FinalEvaluationList.Add(new EvaluationInfo() {
|
||||
QuestionId = item.ReadingEvaluationList.First().QuestionId,
|
||||
Answer = ((int)BrainMetastasisResult.No).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult)
|
||||
});
|
||||
}
|
||||
else if (item.ReadingEvaluationList.First().Answer != item.ReadingEvaluationList.Last().Answer)
|
||||
{
|
||||
item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId = item.ReadingEvaluationList.First().QuestionId, Answer = ((int)BrainMetastasisResult.Maybe).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult)});
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId= addtionalQustionInfoList.FirstOrDefault()?.QuestionId, Answer = ((int)BrainMetastasisResult.Unknown).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult) });
|
||||
}
|
||||
}
|
||||
else if (resultTrialReadingCriterion.ReadingType == ReadingMethod.Single)
|
||||
{
|
||||
|
||||
if (item.ReadingEvaluationList.Count == 1)
|
||||
{
|
||||
if (item.ReadingEvaluationList.All(t => t.Answer == 1.ToString()))
|
||||
{
|
||||
item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId = item.ReadingEvaluationList.First().QuestionId, Answer = ((int)BrainMetastasisResult.Yes).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult) });
|
||||
}
|
||||
else if (item.ReadingEvaluationList.All(t => t.Answer == 0.ToString()))
|
||||
{
|
||||
item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId = item.ReadingEvaluationList.First().QuestionId, Answer = ((int)BrainMetastasisResult.No).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult) });
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId = addtionalQustionInfoList.FirstOrDefault()?.QuestionId, Answer = ((int)BrainMetastasisResult.Unknown).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult) });
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return pageList;
|
||||
return (pageList, addtionalQustionInfoList);
|
||||
}
|
||||
|
||||
|
||||
|
@ -341,6 +424,12 @@ namespace IRaCIS.Core.Application.Service
|
|||
ImageDeterminationResultState = subjectCriteriaEvaluationVisitFilter.ImageDeterminationResultState,
|
||||
ImageFilterState = subjectCriteriaEvaluationVisitFilter.ImageFilterState,
|
||||
IsGeneratedTask = subjectCriteriaEvaluationVisitFilter.IsGeneratedTask,
|
||||
Id = subjectCriteriaEvaluationVisitFilter.Id,
|
||||
|
||||
CreateTime = subjectCriteriaEvaluationVisitFilter.CreateTime,
|
||||
CreateUserId=subjectCriteriaEvaluationVisitFilter.CreateUserId,
|
||||
UpdateTime= subjectCriteriaEvaluationVisitFilter.UpdateTime,
|
||||
UpdateUserId= subjectCriteriaEvaluationVisitFilter.UpdateUserId,
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -36,4 +36,31 @@ namespace IRaCIS.Core.Domain.Share.Reading
|
|||
TNM = 2
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 阅片脑转移推断结果
|
||||
/// </summary>
|
||||
public enum BrainMetastasisResult
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 否
|
||||
/// </summary>
|
||||
No = 0,
|
||||
|
||||
/// <summary>
|
||||
/// 是
|
||||
/// </summary>
|
||||
Yes = 1,
|
||||
|
||||
/// <summary>
|
||||
/// 可能
|
||||
/// </summary>
|
||||
Maybe = 3,
|
||||
|
||||
/// <summary>
|
||||
/// 未知
|
||||
/// </summary>
|
||||
Unknown = 4
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue