修改一版

Uat_Study
he 2022-11-09 15:56:25 +08:00
parent 57d7e4c9c6
commit 4c123a6227
3 changed files with 99 additions and 44 deletions

View File

@ -534,7 +534,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
/// 表单类型 /// 表单类型
/// </summary> /// </summary>
public FormType FormType { get; set; } public FormType FormType { get; set; } = FormType.SinglePage;
/// <summary> /// <summary>

View File

@ -11,6 +11,16 @@ namespace IRaCIS.Core.Application.ViewModel
public Guid VisitTaskId { get; set; } public Guid VisitTaskId { get; set; }
} }
public class VisitStudyTime
{
/// <summary>
/// 访视Id
/// </summary>
public Guid SubjectVisitId { get; set; }
public DateTime? StudyTime { get; set; }
}
public class SiteVisitForTumor public class SiteVisitForTumor
{ {
/// <summary> /// <summary>
@ -18,20 +28,19 @@ namespace IRaCIS.Core.Application.ViewModel
/// </summary> /// </summary>
public Guid VisitTaskId { get; set; } public Guid VisitTaskId { get; set; }
public Guid? SubjectVisitId { get; set; }
/// <summary> /// <summary>
/// 任务Num /// 任务Num
/// </summary> /// </summary>
public decimal VisitTaskNum { get; set; } public decimal VisitTaskNum { get; set; }
/// <summary> /// <summary>
/// 最早拍片日期 /// 检查日期
/// </summary> /// </summary>
public DateTime EarliestScanDate { get; set; } public DateTime? StudyTime { get; set; }
/// <summary>
/// 最晚拍片日期
/// </summary>
public DateTime LatestScanDate { get; set; }
} }
public class AddTaskLesionAnswerFromLastTaskOutDto public class AddTaskLesionAnswerFromLastTaskOutDto

View File

@ -24,6 +24,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
private readonly IRepository<ReadingTableAnswerRowInfo> _readingTableAnswerRowInfoRepository; private readonly IRepository<ReadingTableAnswerRowInfo> _readingTableAnswerRowInfoRepository;
private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository; private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository;
private readonly IRepository<SubjectVisit> _subjectVisitRepository; private readonly IRepository<SubjectVisit> _subjectVisitRepository;
private readonly IRepository<DicomStudy> _dicomStudyRepository;
private readonly IRepository<NoneDicomStudy> _noneDicomStudyRepository;
private readonly IRepository<TumorAssessment> _tumorAssessmentRepository; private readonly IRepository<TumorAssessment> _tumorAssessmentRepository;
private readonly IGeneralCalculateService _generalCalculateService; private readonly IGeneralCalculateService _generalCalculateService;
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository; private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
@ -36,6 +38,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
IRepository<ReadingTableAnswerRowInfo> readingTableAnswerRowInfoRepository, IRepository<ReadingTableAnswerRowInfo> readingTableAnswerRowInfoRepository,
IRepository<ReadingQuestionTrial> readingQuestionTrialRepository, IRepository<ReadingQuestionTrial> readingQuestionTrialRepository,
IRepository<SubjectVisit> subjectVisitRepository, IRepository<SubjectVisit> subjectVisitRepository,
IRepository<DicomStudy> dicomStudyRepository,
IRepository<NoneDicomStudy> noneDicomStudyRepository,
IRepository<TumorAssessment> tumorAssessmentRepository, IRepository<TumorAssessment> tumorAssessmentRepository,
IGeneralCalculateService generalCalculateService, IGeneralCalculateService generalCalculateService,
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository
@ -48,6 +52,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository; this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository;
this._readingQuestionTrialRepository = readingQuestionTrialRepository; this._readingQuestionTrialRepository = readingQuestionTrialRepository;
this._subjectVisitRepository = subjectVisitRepository; this._subjectVisitRepository = subjectVisitRepository;
this._dicomStudyRepository = dicomStudyRepository;
this._noneDicomStudyRepository = noneDicomStudyRepository;
this._tumorAssessmentRepository = tumorAssessmentRepository; this._tumorAssessmentRepository = tumorAssessmentRepository;
this._generalCalculateService = generalCalculateService; this._generalCalculateService = generalCalculateService;
this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository; this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
@ -697,12 +703,20 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
if (lastTask != null) if (lastTask != null)
{ {
var thisTask = taskList.FirstOrDefault(); var thisTask = taskList.FirstOrDefault();
if (thisTask.StudyTime != null && lastTask.StudyTime != null)
return (int)Math.Floor((thisTask.EarliestScanDate-lastTask.LatestScanDate).TotalDays); {
return (int)Math.Floor((thisTask.StudyTime.Value - lastTask.StudyTime.Value).TotalDays);
} }
else else
{ {
return 0; return -1;
}
}
else
{
return -1;
} }
} }
@ -766,9 +780,10 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var firstVisit = taskList.FirstOrDefault(); var firstVisit = taskList.FirstOrDefault();
if (baseLineTask.StudyTime != null)
{
//基线后第二个访视应满足访视间隔6周以上否则顺延 //基线后第二个访视应满足访视间隔6周以上否则顺延
var secondVisit = taskList.Where(x => x.VisitTaskNum >= 2 && x.EarliestScanDate >= baseLineTask.LatestScanDate.AddDays(42)).FirstOrDefault(); var secondVisit = taskList.Where(x => x.VisitTaskNum >= 2 && x.StudyTime >= baseLineTask.StudyTime.Value.AddDays(42)).FirstOrDefault();
if (secondVisit != null) if (secondVisit != null)
{ {
@ -801,12 +816,17 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var thisVisitTask = taskList.LastOrDefault(); var thisVisitTask = taskList.LastOrDefault();
if (lastTasknewLesionsCount >= 2 && thisVisitTaskNewLesionsCount >= 2 && lastTask.LatestScanDate.AddDays(42) <= thisVisitTask.EarliestScanDate) if (thisVisitTask.StudyTime!=null&&lastTask.StudyTime!=null&&
lastTasknewLesionsCount >= 2 && thisVisitTaskNewLesionsCount >= 2 && lastTask.StudyTime.Value.AddDays(42) <= thisVisitTask.StudyTime)
{ {
isPDResult = true; isPDResult = true;
} }
} }
} }
}
if (isPDResult) if (isPDResult)
{ {
var visitForTumorEvaluationQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SiteVisitForTumorEvaluation).Select(x => x.QuestionId).FirstOrDefault(); var visitForTumorEvaluationQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SiteVisitForTumorEvaluation).Select(x => x.QuestionId).FirstOrDefault();
@ -830,6 +850,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
/// <returns></returns> /// <returns></returns>
public async Task<List<SiteVisitForTumor>> GetSiteVisitForTumorList(ReadingCalculateDto inDto) public async Task<List<SiteVisitForTumor>> GetSiteVisitForTumorList(ReadingCalculateDto inDto)
{ {
if (siteVisitForTumorList == null) if (siteVisitForTumorList == null)
{ {
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync(); var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
@ -840,9 +862,33 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{ {
VisitTaskId = x.Id, VisitTaskId = x.Id,
VisitTaskNum = x.VisitTaskNum, VisitTaskNum = x.VisitTaskNum,
EarliestScanDate = x.SourceSubjectVisit.EarliestScanDate ?? DateTime.Now, SubjectVisitId=x.SourceSubjectVisitId,
LatestScanDate = x.SourceSubjectVisit.LatestScanDate ?? DateTime.Now,
}).ToListAsync(); }).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; return siteVisitForTumorList;