修改一版
parent
57d7e4c9c6
commit
4c123a6227
|
@ -534,7 +534,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
/// 表单类型
|
||||
/// </summary>
|
||||
|
||||
public FormType FormType { get; set; }
|
||||
public FormType FormType { get; set; } = FormType.SinglePage;
|
||||
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -11,6 +11,16 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||
public Guid VisitTaskId { get; set; }
|
||||
}
|
||||
|
||||
public class VisitStudyTime
|
||||
{
|
||||
/// <summary>
|
||||
/// 访视Id
|
||||
/// </summary>
|
||||
public Guid SubjectVisitId { get; set; }
|
||||
|
||||
public DateTime? StudyTime { get; set; }
|
||||
}
|
||||
|
||||
public class SiteVisitForTumor
|
||||
{
|
||||
/// <summary>
|
||||
|
@ -18,20 +28,19 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||
/// </summary>
|
||||
public Guid VisitTaskId { get; set; }
|
||||
|
||||
public Guid? SubjectVisitId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务Num
|
||||
/// </summary>
|
||||
public decimal VisitTaskNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最早拍片日期
|
||||
/// 检查日期
|
||||
/// </summary>
|
||||
public DateTime EarliestScanDate { get; set; }
|
||||
public DateTime? StudyTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最晚拍片日期
|
||||
/// </summary>
|
||||
public DateTime LatestScanDate { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public class AddTaskLesionAnswerFromLastTaskOutDto
|
||||
|
|
|
@ -24,6 +24,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
private readonly IRepository<ReadingTableAnswerRowInfo> _readingTableAnswerRowInfoRepository;
|
||||
private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository;
|
||||
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
||||
private readonly IRepository<DicomStudy> _dicomStudyRepository;
|
||||
private readonly IRepository<NoneDicomStudy> _noneDicomStudyRepository;
|
||||
private readonly IRepository<TumorAssessment> _tumorAssessmentRepository;
|
||||
private readonly IGeneralCalculateService _generalCalculateService;
|
||||
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
|
||||
|
@ -36,6 +38,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
IRepository<ReadingTableAnswerRowInfo> readingTableAnswerRowInfoRepository,
|
||||
IRepository<ReadingQuestionTrial> readingQuestionTrialRepository,
|
||||
IRepository<SubjectVisit> subjectVisitRepository,
|
||||
IRepository<DicomStudy> dicomStudyRepository,
|
||||
IRepository<NoneDicomStudy> noneDicomStudyRepository,
|
||||
IRepository<TumorAssessment> tumorAssessmentRepository,
|
||||
IGeneralCalculateService generalCalculateService,
|
||||
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository
|
||||
|
@ -48,6 +52,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository;
|
||||
this._readingQuestionTrialRepository = readingQuestionTrialRepository;
|
||||
this._subjectVisitRepository = subjectVisitRepository;
|
||||
this._dicomStudyRepository = dicomStudyRepository;
|
||||
this._noneDicomStudyRepository = noneDicomStudyRepository;
|
||||
this._tumorAssessmentRepository = tumorAssessmentRepository;
|
||||
this._generalCalculateService = generalCalculateService;
|
||||
this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
|
||||
|
@ -697,12 +703,20 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
if (lastTask != null)
|
||||
{
|
||||
var thisTask = taskList.FirstOrDefault();
|
||||
if (thisTask.StudyTime != null && lastTask.StudyTime != null)
|
||||
{
|
||||
return (int)Math.Floor((thisTask.StudyTime.Value - lastTask.StudyTime.Value).TotalDays);
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
return (int)Math.Floor((thisTask.EarliestScanDate-lastTask.LatestScanDate).TotalDays);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -766,46 +780,52 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
|
||||
|
||||
var firstVisit = taskList.FirstOrDefault();
|
||||
|
||||
//基线后第二个访视(应满足访视间隔6周以上,否则顺延)
|
||||
var secondVisit = taskList.Where(x => x.VisitTaskNum >= 2 && x.EarliestScanDate >= baseLineTask.LatestScanDate.AddDays(42)).FirstOrDefault();
|
||||
if (secondVisit != null)
|
||||
if (baseLineTask.StudyTime != null)
|
||||
{
|
||||
|
||||
var firstTaskNewLesionsCount = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == firstVisit.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
||||
|
||||
// 第二访视数量
|
||||
var secondVisitLesionsCount = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastTask.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
||||
|
||||
// 判断是否是当前访视 当前访视还未入库
|
||||
if (secondVisit.VisitTaskId == inDto.VisitTaskId)
|
||||
//基线后第二个访视(应满足访视间隔6周以上,否则顺延)
|
||||
var secondVisit = taskList.Where(x => x.VisitTaskNum >= 2 && x.StudyTime >= baseLineTask.StudyTime.Value.AddDays(42)).FirstOrDefault();
|
||||
if (secondVisit != null)
|
||||
{
|
||||
secondVisitLesionsCount = (inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewLesionsCount).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0();
|
||||
|
||||
var firstTaskNewLesionsCount = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == firstVisit.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
||||
|
||||
// 第二访视数量
|
||||
var secondVisitLesionsCount = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastTask.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
||||
|
||||
// 判断是否是当前访视 当前访视还未入库
|
||||
if (secondVisit.VisitTaskId == inDto.VisitTaskId)
|
||||
{
|
||||
secondVisitLesionsCount = (inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewLesionsCount).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0();
|
||||
}
|
||||
|
||||
if (firstTaskNewLesionsCount >= 2 && secondVisitLesionsCount >= 2)
|
||||
{
|
||||
isPDResult = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (firstTaskNewLesionsCount >= 2 && secondVisitLesionsCount >= 2)
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
if (lastTask.VisitTaskNum >= 2m)
|
||||
{
|
||||
isPDResult = true;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
if (lastTask.VisitTaskNum >= 2m)
|
||||
{
|
||||
|
||||
var lastTasknewLesionsCount = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastTask.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
||||
var thisVisitTaskNewLesionsCount = (inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewLesionsCount).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0();
|
||||
|
||||
var thisVisitTask = taskList.LastOrDefault();
|
||||
|
||||
if (lastTasknewLesionsCount >= 2 && thisVisitTaskNewLesionsCount >= 2 && lastTask.LatestScanDate.AddDays(42) <= thisVisitTask.EarliestScanDate)
|
||||
{
|
||||
isPDResult = true;
|
||||
|
||||
var lastTasknewLesionsCount = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastTask.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
||||
var thisVisitTaskNewLesionsCount = (inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewLesionsCount).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0();
|
||||
|
||||
var thisVisitTask = taskList.LastOrDefault();
|
||||
|
||||
if (thisVisitTask.StudyTime!=null&&lastTask.StudyTime!=null&&
|
||||
|
||||
|
||||
lastTasknewLesionsCount >= 2 && thisVisitTaskNewLesionsCount >= 2 && lastTask.StudyTime.Value.AddDays(42) <= thisVisitTask.StudyTime)
|
||||
{
|
||||
isPDResult = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (isPDResult)
|
||||
{
|
||||
|
@ -830,6 +850,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
/// <returns></returns>
|
||||
public async Task<List<SiteVisitForTumor>> GetSiteVisitForTumorList(ReadingCalculateDto inDto)
|
||||
{
|
||||
|
||||
|
||||
if (siteVisitForTumorList == null)
|
||||
{
|
||||
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
||||
|
@ -840,9 +862,33 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||
{
|
||||
VisitTaskId = x.Id,
|
||||
VisitTaskNum = x.VisitTaskNum,
|
||||
EarliestScanDate = x.SourceSubjectVisit.EarliestScanDate ?? DateTime.Now,
|
||||
LatestScanDate = x.SourceSubjectVisit.LatestScanDate ?? DateTime.Now,
|
||||
SubjectVisitId=x.SourceSubjectVisitId,
|
||||
}).ToListAsync();
|
||||
|
||||
var visitIds = siteVisitForTumorList.Select(x => x.VisitTaskId).ToList();
|
||||
// Dicom 用NM 非dicom 用骨扫描 (BoneScan)
|
||||
List<VisitStudyTime> visitStudies = await _dicomStudyRepository.Where(x => visitIds.Contains(x.SubjectVisitId) && x.Modalities == "NM").Select(x => new VisitStudyTime()
|
||||
{
|
||||
SubjectVisitId = x.SubjectVisitId,
|
||||
StudyTime = x.StudyTime
|
||||
|
||||
}).ToListAsync();
|
||||
|
||||
visitStudies.AddRange(
|
||||
await _noneDicomStudyRepository.Where(x => visitIds.Contains(x.SubjectVisitId)&&x.Modality== "BoneScan").Select(x => new VisitStudyTime() {
|
||||
SubjectVisitId = x.SubjectVisitId,
|
||||
StudyTime = x.ImageDate
|
||||
|
||||
}).ToListAsync()
|
||||
);
|
||||
|
||||
visitStudies = visitStudies.Where(x => x.StudyTime != null).ToList();
|
||||
|
||||
foreach (var item in siteVisitForTumorList)
|
||||
{
|
||||
item.StudyTime = visitStudies.Where(x => x.SubjectVisitId == item.SubjectVisitId).Max(x => x.StudyTime);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return siteVisitForTumorList;
|
||||
|
|
Loading…
Reference in New Issue