Uat_Study
parent
3aa26aa580
commit
b65c82a20a
|
@ -5,6 +5,8 @@
|
||||||
|
|
||||||
public bool IsDicom { get; set; } = true;
|
public bool IsDicom { get; set; } = true;
|
||||||
|
|
||||||
|
public bool IsBeMark { get; set; } = false;
|
||||||
|
|
||||||
public Guid Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
public Guid StudyId { get; set; }
|
public Guid StudyId { get; set; }
|
||||||
public string StudyInstanceUid { get; set; } = String.Empty;
|
public string StudyInstanceUid { get; set; } = String.Empty;
|
||||||
|
|
|
@ -229,6 +229,7 @@ namespace IRaCIS.Application.Services
|
||||||
var readingPastResultList = await _visitTaskRepository.Where(x =>
|
var readingPastResultList = await _visitTaskRepository.Where(x =>
|
||||||
x.TrialId == taskInfo.TrialId &&
|
x.TrialId == taskInfo.TrialId &&
|
||||||
x.SubjectId == taskInfo.SubjectId &&
|
x.SubjectId == taskInfo.SubjectId &&
|
||||||
|
x.VisitTaskNum<= taskInfo.VisitTaskNum&&
|
||||||
x.ArmEnum == taskInfo.ArmEnum &&
|
x.ArmEnum == taskInfo.ArmEnum &&
|
||||||
x.Id != inDto.VisitTaskId &&
|
x.Id != inDto.VisitTaskId &&
|
||||||
x.DoctorUserId == taskInfo.DoctorUserId &&
|
x.DoctorUserId == taskInfo.DoctorUserId &&
|
||||||
|
|
|
@ -189,6 +189,8 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
public string StudyCode { get; set; } = String.Empty;
|
public string StudyCode { get; set; } = String.Empty;
|
||||||
public string Modalities { get; set; } = String.Empty;
|
public string Modalities { get; set; } = String.Empty;
|
||||||
|
|
||||||
|
public bool IsLastTaskStudy { get; set; } = false;
|
||||||
|
|
||||||
public int SeriesCount { get; set; }
|
public int SeriesCount { get; set; }
|
||||||
public int InstanceCount { get; set; }
|
public int InstanceCount { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,8 @@ namespace IRaCIS.Core.Application.Services
|
||||||
private readonly IRepository<Trial> _trialRepository;
|
private readonly IRepository<Trial> _trialRepository;
|
||||||
private readonly IRepository<ReadingPeriodSet> _readingPeriodSetRepository;
|
private readonly IRepository<ReadingPeriodSet> _readingPeriodSetRepository;
|
||||||
private readonly IRepository<NoneDicomStudy> _noneDicomStudyRepository;
|
private readonly IRepository<NoneDicomStudy> _noneDicomStudyRepository;
|
||||||
|
private readonly IRepository<VisitTask> _visitTaskRepository;
|
||||||
|
private readonly IRepository<ReadingTableAnswerRowInfo> _readingTableAnswerRowInfoRepository;
|
||||||
private readonly IRepository<NoneDicomStudyFile> _noneDicomStudyFileRepository;
|
private readonly IRepository<NoneDicomStudyFile> _noneDicomStudyFileRepository;
|
||||||
private readonly IRepository<ReadingPeriodPlan> _readingPeriodPlanRepository;
|
private readonly IRepository<ReadingPeriodPlan> _readingPeriodPlanRepository;
|
||||||
private readonly IRepository<Subject> _subjectRepository;
|
private readonly IRepository<Subject> _subjectRepository;
|
||||||
|
@ -30,6 +32,8 @@ namespace IRaCIS.Core.Application.Services
|
||||||
IRepository<Trial> trialRepository,
|
IRepository<Trial> trialRepository,
|
||||||
IRepository<ReadingPeriodSet> readingPeriodSetRepository,
|
IRepository<ReadingPeriodSet> readingPeriodSetRepository,
|
||||||
IRepository<NoneDicomStudy> noneDicomStudyRepository,
|
IRepository<NoneDicomStudy> noneDicomStudyRepository,
|
||||||
|
IRepository<VisitTask> visitTaskRepository,
|
||||||
|
IRepository<ReadingTableAnswerRowInfo> readingTableAnswerRowInfoRepository,
|
||||||
IRepository<NoneDicomStudyFile> noneDicomStudyFileRepository,
|
IRepository<NoneDicomStudyFile> noneDicomStudyFileRepository,
|
||||||
IRepository<ReadingPeriodPlan> readingPeriodPlanRepository,
|
IRepository<ReadingPeriodPlan> readingPeriodPlanRepository,
|
||||||
IRepository<Subject> subjectRepository)
|
IRepository<Subject> subjectRepository)
|
||||||
|
@ -39,6 +43,8 @@ namespace IRaCIS.Core.Application.Services
|
||||||
this._trialRepository = trialRepository;
|
this._trialRepository = trialRepository;
|
||||||
this._readingPeriodSetRepository = readingPeriodSetRepository;
|
this._readingPeriodSetRepository = readingPeriodSetRepository;
|
||||||
this._noneDicomStudyRepository = noneDicomStudyRepository;
|
this._noneDicomStudyRepository = noneDicomStudyRepository;
|
||||||
|
this._visitTaskRepository = visitTaskRepository;
|
||||||
|
this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository;
|
||||||
this._noneDicomStudyFileRepository = noneDicomStudyFileRepository;
|
this._noneDicomStudyFileRepository = noneDicomStudyFileRepository;
|
||||||
this._readingPeriodPlanRepository = readingPeriodPlanRepository;
|
this._readingPeriodPlanRepository = readingPeriodPlanRepository;
|
||||||
_subjectRepository = subjectRepository;
|
_subjectRepository = subjectRepository;
|
||||||
|
@ -230,11 +236,65 @@ namespace IRaCIS.Core.Application.Services
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="trialId"></param>
|
/// <param name="trialId"></param>
|
||||||
/// <param name="sujectVisitId"></param>
|
/// <param name="sujectVisitId"></param>
|
||||||
|
/// <param name="visitTaskId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpGet, Route("{trialId:guid}/{sujectVisitId:guid}")]
|
[HttpGet, Route("{trialId:guid}/{sujectVisitId:guid}/{visitTaskId}")]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public async Task<List<VisitStudyDTO>> GetReadingVisitStudyList(Guid trialId, Guid sujectVisitId)
|
public async Task<List<VisitStudyDTO>> GetReadingVisitStudyList(Guid trialId, Guid sujectVisitId,Guid visitTaskId)
|
||||||
{
|
{
|
||||||
|
var result = new List<VisitStudyDTO>();
|
||||||
|
|
||||||
|
var thisRowinfo = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == visitTaskId && x.StudyId != null).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
var taskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync();
|
||||||
|
var lasttask = await _visitTaskRepository.Where(x =>
|
||||||
|
x.TrialId == taskInfo.TrialId &&
|
||||||
|
x.SubjectId == taskInfo.SubjectId &&
|
||||||
|
x.VisitTaskNum < taskInfo.VisitTaskNum &&
|
||||||
|
x.ArmEnum == taskInfo.ArmEnum &&
|
||||||
|
x.ReadingCategory == taskInfo.ReadingCategory &&
|
||||||
|
x.Id != visitTaskId &&
|
||||||
|
x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId &&
|
||||||
|
x.ReadingTaskState == ReadingTaskState.HaveSigned &&
|
||||||
|
x.TaskState == TaskState.Effect &&
|
||||||
|
x.IsAnalysisCreate == taskInfo.IsAnalysisCreate).OrderByDescending(x => x.VisitTaskNum).FirstOrDefaultAsync();
|
||||||
|
if(lasttask != null)
|
||||||
|
{
|
||||||
|
var lastRowinfo = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == lasttask.Id && x.StudyId != null).ToListAsync();
|
||||||
|
var lastStudyIds = lastRowinfo.Select(x => x.StudyId).ToList();
|
||||||
|
var lastSeriesIdIds = lastRowinfo.Where(x=>x.SeriesId!=null).Select(x => x.SeriesId).ToList();
|
||||||
|
if (lastRowinfo.Count>0)
|
||||||
|
{
|
||||||
|
var lastVisitTaskStudy= await _repository.Where<DicomStudy>(t => lastStudyIds.Contains(t.Id)).Select(k => new VisitStudyDTO()
|
||||||
|
{
|
||||||
|
InstanceCount = k.InstanceCount,
|
||||||
|
Modalities = k.Modalities,
|
||||||
|
SeriesCount = k.SeriesCount,
|
||||||
|
StudyCode = k.StudyCode,
|
||||||
|
StudyId = k.Id,
|
||||||
|
IsLastTaskStudy=true,
|
||||||
|
|
||||||
|
}).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
if (lastVisitTaskStudy != null)
|
||||||
|
{
|
||||||
|
lastVisitTaskStudy.SeriesList = await _repository.Where<DicomSeries>(s => lastSeriesIdIds.Contains(s.Id)).OrderBy(s => s.SeriesNumber).
|
||||||
|
ThenBy(s => s.SeriesTime)
|
||||||
|
.ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
lastVisitTaskStudy.SeriesCount = lastVisitTaskStudy.SeriesList.Count();
|
||||||
|
|
||||||
|
lastVisitTaskStudy.SeriesList.ForEach(x =>
|
||||||
|
{
|
||||||
|
x.InstanceList = lastRowinfo.Where(y => y.SeriesId == x.Id&&y.InstanceId!=null).Select(y => y.InstanceId.Value).ToList();
|
||||||
|
x.InstanceCount = x.InstanceList.Count();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
result.Add(lastVisitTaskStudy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
var studyList = await _repository.Where<DicomStudy>(t => t.TrialId == trialId && t.SubjectVisitId == sujectVisitId).Select(k => new VisitStudyDTO()
|
var studyList = await _repository.Where<DicomStudy>(t => t.TrialId == trialId && t.SubjectVisitId == sujectVisitId).Select(k => new VisitStudyDTO()
|
||||||
{
|
{
|
||||||
InstanceCount = k.InstanceCount,
|
InstanceCount = k.InstanceCount,
|
||||||
|
@ -255,7 +315,6 @@ namespace IRaCIS.Core.Application.Services
|
||||||
ThenBy(s => s.SeriesTime)
|
ThenBy(s => s.SeriesTime)
|
||||||
.ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
t.SeriesList.ForEach(series => series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList());
|
t.SeriesList.ForEach(series => series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList());
|
||||||
|
|
||||||
//设置为阅片与否 不更改数据库检查 的instance数量 和 SeriesCount 所以这里要实时统计
|
//设置为阅片与否 不更改数据库检查 的instance数量 和 SeriesCount 所以这里要实时统计
|
||||||
|
@ -310,9 +369,16 @@ namespace IRaCIS.Core.Application.Services
|
||||||
|
|
||||||
studyList.AddRange(noDicomStudyList);
|
studyList.AddRange(noDicomStudyList);
|
||||||
|
|
||||||
|
studyList.ForEach(x =>
|
||||||
|
{
|
||||||
|
x.SeriesList.ForEach(y =>
|
||||||
|
{
|
||||||
|
y.IsBeMark = thisRowinfo.Any(z => z.SeriesId == y.Id);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
return studyList;
|
result.AddRange(studyList);
|
||||||
|
return result;
|
||||||
|
|
||||||
//return ResponseOutput.Ok(studyList.Where(t => t.SeriesList.Count > 0).ToList());
|
//return ResponseOutput.Ok(studyList.Where(t => t.SeriesList.Count > 0).ToList());
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue