Merge branch 'master' of http://192.168.1.2:8033/IRaCIS_Core_Api
commit
873e66d7a6
|
@ -9271,7 +9271,7 @@
|
||||||
</member>
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.Triggers.VisitTaskIsFrontTaskNeedSignButNotSignTrigger">
|
<member name="T:IRaCIS.Core.Application.Triggers.VisitTaskIsFrontTaskNeedSignButNotSignTrigger">
|
||||||
<summary>
|
<summary>
|
||||||
因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务
|
维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.MediatR.Handlers.AnonymizeCacheHandler.#ctor(IRaCIS.Core.Infra.EFCore.IRepository,EasyCaching.Core.IEasyCachingProvider)">
|
<member name="M:IRaCIS.Core.Application.MediatR.Handlers.AnonymizeCacheHandler.#ctor(IRaCIS.Core.Infra.EFCore.IRepository,EasyCaching.Core.IEasyCachingProvider)">
|
||||||
|
|
|
@ -90,11 +90,12 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
return await _visitTaskRepository.SaveChangesAsync();
|
return await _visitTaskRepository.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<List<TrialReadingCriterionDto>> GetTrialCriterionList(Guid trialId, bool isHaveSigned = true)
|
public async Task<List<TrialReadingCriterionDto>> GetTrialCriterionList(Guid trialId, bool isHaveSigned = true,bool? isAutoCreate = null)
|
||||||
{
|
{
|
||||||
var list = await _repository.Where<ReadingQuestionCriterionTrial>(t => t.TrialId == trialId && t.IsConfirm)
|
var list = await _repository.Where<ReadingQuestionCriterionTrial>(t => t.TrialId == trialId && t.IsConfirm)
|
||||||
|
|
||||||
.OrderBy(t => t.ShowOrder)
|
.OrderBy(t => t.ShowOrder)
|
||||||
.Select(t => new TrialReadingCriterionDto() { TrialReadingCriterionId = t.Id, TrialReadingCriterionName = t.CriterionName, CriterionType = t.CriterionType, ReadingType = t.ReadingType, ReadingInfoSignTime = t.ReadingInfoSignTime })
|
.Select(t => new TrialReadingCriterionDto() { TrialReadingCriterionId = t.Id, IsAutoCreate=t.IsAutoCreate,IsAdditionalAssessment=t.IsAdditionalAssessment, TrialReadingCriterionName = t.CriterionName, CriterionType = t.CriterionType, ReadingType = t.ReadingType, ReadingInfoSignTime = t.ReadingInfoSignTime })
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
if (list.Count == 0)
|
if (list.Count == 0)
|
||||||
|
@ -106,7 +107,8 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return list.AsQueryable().WhereIf(isHaveSigned == true, t => t.ReadingInfoSignTime != null).ToList();
|
return list.AsQueryable().WhereIf(isHaveSigned == true, t => t.ReadingInfoSignTime != null)
|
||||||
|
.WhereIf(isAutoCreate == false, t => t.IsAutoCreate == isAutoCreate).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -412,6 +412,8 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 阅片期信息表
|
/// 阅片期信息表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -32,16 +32,17 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
public string TrialSiteCode { get; set; }
|
public string TrialSiteCode { get; set; }
|
||||||
public SubjectStatus SubjectStatus { get; set; }
|
public SubjectStatus SubjectStatus { get; set; }
|
||||||
|
|
||||||
public List<EvaluationInfo> EvaluationList { get; set; }
|
public List<EvaluationInfo> FinalEvaluationList { get; set; }=new List<EvaluationInfo>();
|
||||||
|
|
||||||
|
|
||||||
|
public List<EvaluationInfo> ReadingEvaluationList { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class EvaluationInfo
|
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 Answer { get; set; }
|
||||||
|
|
||||||
public string FinalTranslateDictionaryCode { get; set; } = string.Empty;
|
public string FinalTranslateDictionaryCode { get; set; } = string.Empty;
|
||||||
|
|
|
@ -11,15 +11,22 @@ using System.ComponentModel.DataAnnotations;
|
||||||
namespace IRaCIS.Core.Application.ViewModel
|
namespace IRaCIS.Core.Application.ViewModel
|
||||||
{
|
{
|
||||||
/// <summary> SubjectCriteriaEvaluationVisitFilterView 列表视图模型 </summary>
|
/// <summary> SubjectCriteriaEvaluationVisitFilterView 列表视图模型 </summary>
|
||||||
public class SubjectCriteriaEvaluationVisitFilterView: SubjectCriteriaEvaluationVisitFilterAddOrEdit
|
public class SubjectCriteriaEvaluationVisitFilterView
|
||||||
{
|
{
|
||||||
public DateTime? CreateTime { get; set; }
|
public DateTime? CreateTime { get; set; }
|
||||||
public Guid? CreateUserId { get; set; }
|
public Guid? CreateUserId { get; set; }
|
||||||
public Guid? UpdateUserId { get; set; }
|
public Guid? UpdateUserId { get; set; }
|
||||||
public DateTime? UpdateTime { get; set; }
|
public DateTime? UpdateTime { get; set; }
|
||||||
|
|
||||||
public new ImageFilterState? ImageFilterState { get; set; }
|
public Guid? Id { get; set; }
|
||||||
public new ImageDeterminationResultState? ImageDeterminationResultState { 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; }
|
public bool? IsGeneratedTask { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,7 +36,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
}
|
}
|
||||||
|
|
||||||
///<summary>SubjectCriteriaEvaluationVisitFilterQuery 列表查询参数模型</summary>
|
///<summary>SubjectCriteriaEvaluationVisitFilterQuery 列表查询参数模型</summary>
|
||||||
public class SubjectCriteriaEvaluationVisitFilterQuery : PageInput
|
public class SubjectCriteriaEvaluationVisitFilterQuery
|
||||||
{
|
{
|
||||||
[NotDefault]
|
[NotDefault]
|
||||||
public Guid TrialReadingCriterionId { get; set; }
|
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);
|
//Task<IResponseOutput> AddOrUpdateSubjectCriteriaEvaluation(SubjectCriteriaEvaluationAddOrEdit addOrEditSubjectCriteriaEvaluation);
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ using IRaCIS.Core.Domain.Share;
|
||||||
using IRaCIS.Core.Application.Contracts;
|
using IRaCIS.Core.Application.Contracts;
|
||||||
using DocumentFormat.OpenXml.Spreadsheet;
|
using DocumentFormat.OpenXml.Spreadsheet;
|
||||||
using Panda.DynamicWebApi.Attributes;
|
using Panda.DynamicWebApi.Attributes;
|
||||||
|
using IRaCIS.Core.Domain.Share.Reading;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
@ -33,12 +34,14 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
private readonly IRepository<ReadingQuestionCriterionTrial> _trialReadingCriterionRepository;
|
private readonly IRepository<ReadingQuestionCriterionTrial> _trialReadingCriterionRepository;
|
||||||
|
|
||||||
|
private readonly IRepository<ReadingQuestionTrial> _trialReadingQuestionRepository;
|
||||||
|
|
||||||
private readonly IVisitTaskHelpeService _IVisitTaskHelpeService;
|
private readonly IVisitTaskHelpeService _IVisitTaskHelpeService;
|
||||||
|
|
||||||
public SubjectCriteriaEvaluationService(IRepository<SubjectCriteriaEvaluation> subjectCriteriaEvaluationRepository, IRepository<Subject> subjectRepository,
|
public SubjectCriteriaEvaluationService(IRepository<SubjectCriteriaEvaluation> subjectCriteriaEvaluationRepository, IRepository<Subject> subjectRepository,
|
||||||
IRepository<SubjectCriteriaEvaluationVisitFilter> subjectCriteriaEvaluationVisitFilterRepository, IRepository<SubjectVisit> subjectVisitRepository,
|
IRepository<SubjectCriteriaEvaluationVisitFilter> subjectCriteriaEvaluationVisitFilterRepository, IRepository<SubjectVisit> subjectVisitRepository,
|
||||||
IRepository<SubjectCriteriaEvaluationVisitStudyFilter> subjectCriteriaEvaluationVisitStudyFilterRepository,
|
IRepository<SubjectCriteriaEvaluationVisitStudyFilter> subjectCriteriaEvaluationVisitStudyFilterRepository,
|
||||||
IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IVisitTaskHelpeService IVisitTaskHelpeService)
|
IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IVisitTaskHelpeService IVisitTaskHelpeService, IRepository<ReadingQuestionTrial> trialReadingQuestionRepository)
|
||||||
{
|
{
|
||||||
_subjectCriteriaEvaluationRepository = subjectCriteriaEvaluationRepository;
|
_subjectCriteriaEvaluationRepository = subjectCriteriaEvaluationRepository;
|
||||||
_subjectRepository = subjectRepository;
|
_subjectRepository = subjectRepository;
|
||||||
|
@ -49,6 +52,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
_IVisitTaskHelpeService = IVisitTaskHelpeService;
|
_IVisitTaskHelpeService = IVisitTaskHelpeService;
|
||||||
|
|
||||||
|
_trialReadingQuestionRepository = trialReadingQuestionRepository;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,20 +63,36 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// <param name="inQuery"></param>
|
/// <param name="inQuery"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[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 trialReadingCritionList = _trialReadingCriterionRepository.Where(t => t.TrialId == inQuery.TrialId).ToList();
|
||||||
|
|
||||||
var resultTrialReadingCriterionId = Guid.Empty;
|
var resultTrialReadingCriterionId = Guid.Empty;
|
||||||
|
|
||||||
|
var resultTrialReadingCriterion = trialReadingCritionList.First();
|
||||||
|
|
||||||
|
var curentCriterionType = CriterionType.NoCriterion;
|
||||||
|
|
||||||
|
|
||||||
//BM 需要找基线 两个人做的结果
|
//BM 需要找基线 两个人做的结果
|
||||||
if (trialReadingCritionList.First(t => t.Id == inQuery.TrialReadingCriterionId).CriterionType == CriterionType.RECIST1Pointt1_MB)
|
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)
|
var subjectCriteriaEvaluationQueryable = from subject in _subjectRepository.Where(t=>t.TrialId==inQuery.TrialId)
|
||||||
|
@ -96,17 +117,110 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
IsJoinEvaluation = subjectCriteriaEvaluation.IsJoinEvaluation,
|
IsJoinEvaluation = subjectCriteriaEvaluation.IsJoinEvaluation,
|
||||||
|
|
||||||
EvaluationList=subject.SubjectAdditionalEvaluationResult.Where(t=>t.IsFinalResult && t.TrialReadingCriterionId==resultTrialReadingCriterionId).Select(u=>new EvaluationInfo()
|
|
||||||
{ Answer=u.Answer,FinalTranslateDictionaryCode=u.FinalTranslateDictionaryCode,QuestioName=u.TrialReadingQuestion .QuestionName,QuestioNameEn=u.TrialReadingQuestion.QuestionEnName}).ToList()
|
ReadingEvaluationList= subject.ReadingTaskQuestionAnswerList
|
||||||
|
.Where(t=>t.ReadingQuestionCriterionTrialId == resultTrialReadingCriterionId &&
|
||||||
|
questionIdList.Contains(t.ReadingQuestionTrialId)
|
||||||
|
&& t.VisitTask.TaskState==TaskState.Effect)
|
||||||
|
.Select(u=>new EvaluationInfo()
|
||||||
|
{
|
||||||
|
QuestionId=u.ReadingQuestionTrialId,
|
||||||
|
Answer=u.Answer,
|
||||||
|
|
||||||
|
FinalTranslateDictionaryCode=u.ReadingQuestionTrial.DictionaryCode
|
||||||
|
}).ToList()
|
||||||
|
|
||||||
|
//EvaluationList=subject
|
||||||
|
//.SubjectAdditionalEvaluationResult
|
||||||
|
//.Where(t=>t.IsFinalResult && t.TrialReadingCriterionId==resultTrialReadingCriterionId)
|
||||||
|
//.Select(u=>new EvaluationInfo()
|
||||||
|
//{ Answer=u.Answer,FinalTranslateDictionaryCode=u.FinalTranslateDictionaryCode,QuestioName=u.TrialReadingQuestion .QuestionName,QuestioNameEn=u.TrialReadingQuestion.QuestionEnName}).ToList()
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var pageList = await subjectCriteriaEvaluationQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField == string.Empty ? nameof(SubjectCriteriaEvaluationView.SubjectCode) : inQuery.SortField, inQuery.Asc);
|
var pageList = await subjectCriteriaEvaluationQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField == string.Empty ? nameof(SubjectCriteriaEvaluationView.SubjectCode) : inQuery.SortField, inQuery.Asc);
|
||||||
|
|
||||||
return pageList;
|
|
||||||
|
foreach (var item in pageList.CurrentPageData)
|
||||||
|
{
|
||||||
|
switch (curentCriterionType)
|
||||||
|
{
|
||||||
|
|
||||||
|
case CriterionType.RECIST1Pointt1_MB:
|
||||||
|
|
||||||
|
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, addtionalQustionInfoList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -124,7 +238,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
if (addOrEditSubjectCriteriaEvaluation.Id != null)
|
if (addOrEditSubjectCriteriaEvaluation.Id == null)
|
||||||
{
|
{
|
||||||
var entity = await _subjectCriteriaEvaluationRepository.InsertFromDTOAsync(addOrEditSubjectCriteriaEvaluation);
|
var entity = await _subjectCriteriaEvaluationRepository.InsertFromDTOAsync(addOrEditSubjectCriteriaEvaluation);
|
||||||
|
|
||||||
|
@ -310,6 +424,12 @@ namespace IRaCIS.Core.Application.Service
|
||||||
ImageDeterminationResultState = subjectCriteriaEvaluationVisitFilter.ImageDeterminationResultState,
|
ImageDeterminationResultState = subjectCriteriaEvaluationVisitFilter.ImageDeterminationResultState,
|
||||||
ImageFilterState = subjectCriteriaEvaluationVisitFilter.ImageFilterState,
|
ImageFilterState = subjectCriteriaEvaluationVisitFilter.ImageFilterState,
|
||||||
IsGeneratedTask = subjectCriteriaEvaluationVisitFilter.IsGeneratedTask,
|
IsGeneratedTask = subjectCriteriaEvaluationVisitFilter.IsGeneratedTask,
|
||||||
|
Id = subjectCriteriaEvaluationVisitFilter.Id,
|
||||||
|
|
||||||
|
CreateTime = subjectCriteriaEvaluationVisitFilter.CreateTime,
|
||||||
|
CreateUserId=subjectCriteriaEvaluationVisitFilter.CreateUserId,
|
||||||
|
UpdateTime= subjectCriteriaEvaluationVisitFilter.UpdateTime,
|
||||||
|
UpdateUserId= subjectCriteriaEvaluationVisitFilter.UpdateUserId,
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -254,6 +254,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
// .ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.subject.Code))
|
// .ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.subject.Code))
|
||||||
// .ForMember(d => d.SubjectStatus, u => u.MapFrom(s => s.subject.Status));
|
// .ForMember(d => d.SubjectStatus, u => u.MapFrom(s => s.subject.Status));
|
||||||
|
|
||||||
|
|
||||||
|
CreateMap<SubjectCriteriaEvaluationAddOrEdit, SubjectCriteriaEvaluation>().ReverseMap();
|
||||||
CreateMap<SubjectCriteriaEvaluation, SubjectCriteriaEvaluationView>().ReverseMap();
|
CreateMap<SubjectCriteriaEvaluation, SubjectCriteriaEvaluationView>().ReverseMap();
|
||||||
CreateMap<SubjectCriteriaEvaluationVisitFilter, SubjectCriteriaEvaluationVisitFilterAddOrEdit>().ReverseMap();
|
CreateMap<SubjectCriteriaEvaluationVisitFilter, SubjectCriteriaEvaluationVisitFilterAddOrEdit>().ReverseMap();
|
||||||
|
|
||||||
|
|
|
@ -343,6 +343,12 @@ namespace IRaCIS.Application.Contracts
|
||||||
|
|
||||||
public bool IsGlobalReading { get; set; } = true;
|
public bool IsGlobalReading { get; set; } = true;
|
||||||
|
|
||||||
|
//是否附加评估
|
||||||
|
public bool IsAdditionalAssessment { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
//自动 手动生成任务
|
||||||
|
public bool IsAutoCreate { get; set; }
|
||||||
|
|
||||||
public bool IsArbitrationReading { get; set; } = true;
|
public bool IsArbitrationReading { get; set; } = true;
|
||||||
|
|
||||||
|
|
|
@ -10,21 +10,34 @@ using System.Linq.Expressions;
|
||||||
namespace IRaCIS.Core.Application.Triggers
|
namespace IRaCIS.Core.Application.Triggers
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务
|
/// 维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class VisitTaskIsFrontTaskNeedSignButNotSignTrigger : IAfterSaveTrigger<VisitTask>
|
public class VisitTaskIsFrontTaskNeedSignButNotSignTrigger : IAfterSaveTrigger<VisitTask>
|
||||||
{
|
{
|
||||||
|
|
||||||
private readonly IRepository<VisitTask> _visitTaskRepository;
|
private readonly IRepository<VisitTask> _visitTaskRepository;
|
||||||
|
private readonly IRepository<ReadingQuestionCriterionTrial> _trialReadingCriterionRepository;
|
||||||
|
|
||||||
|
private readonly IRepository<ReadingQuestionTrial> _trialReadingQuestionRepository;
|
||||||
|
|
||||||
|
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
|
||||||
|
|
||||||
|
private readonly IRepository<SubjectAdditionalEvaluationResult> _subjectAdditionalEvaluationResultRepository;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public VisitTaskIsFrontTaskNeedSignButNotSignTrigger(
|
public VisitTaskIsFrontTaskNeedSignButNotSignTrigger(
|
||||||
|
|
||||||
IRepository<VisitTask> visitTaskRepository)
|
IRepository<VisitTask> visitTaskRepository, IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IRepository<ReadingQuestionTrial> trialReadingQuestionRepository
|
||||||
|
, IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository, IRepository<SubjectAdditionalEvaluationResult> subjectAdditionalEvaluationResultRepository)
|
||||||
{
|
{
|
||||||
|
_trialReadingCriterionRepository = trialReadingCriterionRepository;
|
||||||
|
|
||||||
_visitTaskRepository = visitTaskRepository;
|
_visitTaskRepository = visitTaskRepository;
|
||||||
|
_trialReadingQuestionRepository = trialReadingQuestionRepository;
|
||||||
|
|
||||||
|
_readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
|
||||||
|
_subjectAdditionalEvaluationResultRepository = subjectAdditionalEvaluationResultRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,7 +51,7 @@ namespace IRaCIS.Core.Application.Triggers
|
||||||
if (context.ChangeType == ChangeType.Added)
|
if (context.ChangeType == ChangeType.Added)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (visitTask.IsNeedClinicalDataSign )
|
if (visitTask.IsNeedClinicalDataSign)
|
||||||
{
|
{
|
||||||
|
|
||||||
var visitTaskIdQueryable = _visitTaskRepository.Where(visitTaskLambda) //该Subject 该标准的任务
|
var visitTaskIdQueryable = _visitTaskRepository.Where(visitTaskLambda) //该Subject 该标准的任务
|
||||||
|
@ -67,6 +80,110 @@ namespace IRaCIS.Core.Application.Triggers
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#region 附加评估 暂时废弃
|
||||||
|
// //从未签名状态 改为签名状态时 判断是否进行了附加评估,将附加评估的结果冗余
|
||||||
|
// if (context.ChangeType == ChangeType.Modified && visitTask.ReadingTaskState == ReadingTaskState.HaveSigned && context.UnmodifiedEntity.ReadingTaskState != ReadingTaskState.HaveSigned)
|
||||||
|
// {
|
||||||
|
|
||||||
|
// var criterion = _trialReadingCriterionRepository.Where(t => t.Id == visitTask.TrialReadingCriterionId).FirstOrDefault();
|
||||||
|
|
||||||
|
// //如果是附加评估
|
||||||
|
// if (criterion.IsAdditionalAssessment)
|
||||||
|
// {
|
||||||
|
|
||||||
|
|
||||||
|
// if (visitTask.ReadingCategory == ReadingCategory.Visit)
|
||||||
|
// {
|
||||||
|
|
||||||
|
|
||||||
|
// switch (criterion.CriterionType)
|
||||||
|
// {
|
||||||
|
// case CriterionType.RECIST1Point1:
|
||||||
|
// var isbaseLine = _visitTaskRepository.Where(t => t.Id == visitTask.Id).Select(t => t.SourceSubjectVisit.IsBaseLine).FirstOrDefault();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// if (isbaseLine)
|
||||||
|
// {
|
||||||
|
// var currentTaskAdditionarlAnswer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == visitTask.Id &&
|
||||||
|
// t.ReadingQuestionTrial.IsAdditional == true && t.ReadingQuestionTrial.Type != "group"
|
||||||
|
// ).Include(t => t.ReadingQuestionTrial).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
|
// //双重阅片完成了
|
||||||
|
// if (criterion.ReadingType == ReadingMethod.Double &&
|
||||||
|
//(_visitTaskRepository.Where(t => t.SubjectId == visitTask.SubjectId && t.TaskName == visitTask.TaskName && t.TaskState == TaskState.Effect && t.ReadingTaskState == ReadingTaskState.HaveSigned).Count() == 2)
|
||||||
|
// )
|
||||||
|
// {
|
||||||
|
|
||||||
|
// var otherTaskId = await _visitTaskRepository.Where(t => t.SubjectId == visitTask.SubjectId && t.TaskName == visitTask.TaskName && t.TaskState == TaskState.Effect && t.ReadingTaskState == ReadingTaskState.HaveSigned && t.Id != visitTask.Id)
|
||||||
|
// .Select(t => t.Id).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
|
// var otherTaskAdditionarlAnswer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == otherTaskId &&
|
||||||
|
// t.ReadingQuestionTrial.IsAdditional == true && t.ReadingQuestionTrial.Type != "group"
|
||||||
|
// ).Include(t => t.ReadingQuestionTrial).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// await _subjectAdditionalEvaluationResultRepository.AddAsync(new SubjectAdditionalEvaluationResult()
|
||||||
|
// {
|
||||||
|
// TrialReadingCriterionId = visitTask.TrialReadingCriterionId,
|
||||||
|
// IsFinalResult = true,
|
||||||
|
// SubjectId = visitTask.SubjectId,
|
||||||
|
// TrialReadingQuestionId = currentTaskAdditionarlAnswer.ReadingQuestionTrialId,
|
||||||
|
// FinalAnswer = currentTaskAdditionarlAnswer.Answer,
|
||||||
|
// FinalTranslateDictionaryCode = currentTaskAdditionarlAnswer.ReadingQuestionTrial.DictionaryCode,
|
||||||
|
|
||||||
|
// });
|
||||||
|
|
||||||
|
// }
|
||||||
|
// if (criterion.ReadingType == ReadingMethod.Single)
|
||||||
|
// {
|
||||||
|
|
||||||
|
// await _subjectAdditionalEvaluationResultRepository.AddAsync(new SubjectAdditionalEvaluationResult()
|
||||||
|
// {
|
||||||
|
// TrialReadingCriterionId = visitTask.TrialReadingCriterionId,
|
||||||
|
// IsFinalResult = true,
|
||||||
|
// SubjectId = visitTask.SubjectId,
|
||||||
|
// TrialReadingQuestionId = currentTaskAdditionarlAnswer.ReadingQuestionTrialId,
|
||||||
|
// FinalAnswer = currentTaskAdditionarlAnswer.Answer,
|
||||||
|
// FinalTranslateDictionaryCode = currentTaskAdditionarlAnswer.ReadingQuestionTrial.DictionaryCode,
|
||||||
|
|
||||||
|
// });
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
// break;
|
||||||
|
// default:
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -36,4 +36,31 @@ namespace IRaCIS.Core.Domain.Share.Reading
|
||||||
TNM = 2
|
TNM = 2
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 阅片脑转移推断结果
|
||||||
|
/// </summary>
|
||||||
|
public enum BrainMetastasisResult
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 否
|
||||||
|
/// </summary>
|
||||||
|
No = 0,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是
|
||||||
|
/// </summary>
|
||||||
|
Yes = 1,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 可能
|
||||||
|
/// </summary>
|
||||||
|
Maybe = 3,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 未知
|
||||||
|
/// </summary>
|
||||||
|
Unknown = 4
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,9 +63,13 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
public DateTime UpdateTime { get; set; }
|
public DateTime UpdateTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
public List<SubjectCriteriaEvaluationVisitFilter> SubjectCriteriaEvaluationVisitFilterList { get; set; }
|
public List<SubjectCriteriaEvaluationVisitFilter> SubjectCriteriaEvaluationVisitFilterList { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
///// <summary>
|
///// <summary>
|
||||||
// /// 是否影像筛选
|
// /// 是否影像筛选
|
||||||
// /// </summary>
|
// /// </summary>
|
||||||
|
|
|
@ -58,22 +58,28 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 影像确认结果
|
||||||
|
/// </summary>
|
||||||
public enum ImageDeterminationResultState
|
public enum ImageDeterminationResultState
|
||||||
{
|
{
|
||||||
//待定
|
//待定
|
||||||
None = 0,
|
None = 0,
|
||||||
|
|
||||||
|
|
||||||
//通过
|
//通过
|
||||||
Passed = 1,
|
Passed = 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 影像筛选状态
|
||||||
|
/// </summary>
|
||||||
public enum ImageFilterState
|
public enum ImageFilterState
|
||||||
{
|
{
|
||||||
//默认值 待筛选
|
//默认值 待筛选
|
||||||
None = 0,
|
None = 0,
|
||||||
|
|
||||||
//已完成
|
//筛选已完成
|
||||||
Finished = 1
|
Finished = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,49 +18,25 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
public class TrialCriterionAdditionalAssessmentType : Entity, IAuditUpdate, IAuditAdd
|
public class TrialCriterionAdditionalAssessmentType : Entity, IAuditUpdate, IAuditAdd
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// TrialReadingCriterionId
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public Guid TrialReadingCriterionId { get; set; }
|
public Guid TrialReadingCriterionId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// CriterionType
|
|
||||||
/// </summary>
|
|
||||||
|
|
||||||
public CriterionType CriterionType { get; set; }
|
public CriterionType CriterionType { get; set; }
|
||||||
|
|
||||||
|
|
||||||
public AdditionalAssessmentType AdditionalAssessmentType { get; set; }
|
public AdditionalAssessmentType AdditionalAssessmentType { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// IsSelected
|
|
||||||
/// </summary>
|
|
||||||
public bool? IsSelected { get; set; }
|
public bool? IsSelected { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// CreateTime
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// CreateUserId
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public Guid CreateUserId { get; set; }
|
public Guid CreateUserId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// UpdateTime
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public DateTime UpdateTime { get; set; }
|
public DateTime UpdateTime { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// UpdateUserId
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public Guid UpdateUserId { get; set; }
|
public Guid UpdateUserId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,8 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
public ReadingQuestionTrial ReadingQuestionTrial { get; set; }
|
public ReadingQuestionTrial ReadingQuestionTrial { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,11 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
|
|
||||||
public List <SubjectAdditionalEvaluationResult> SubjectAdditionalEvaluationResult { get; set; }
|
public List<SubjectAdditionalEvaluationResult> SubjectAdditionalEvaluationResult { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public List<ReadingTaskQuestionAnswer> ReadingTaskQuestionAnswerList { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey("FinalSubjectVisitId")]
|
[ForeignKey("FinalSubjectVisitId")]
|
||||||
|
|
Loading…
Reference in New Issue