修改一版

Uat_Study
he 2022-06-17 15:52:56 +08:00
parent e32c45d81d
commit ee0526986f
4 changed files with 95 additions and 6 deletions

View File

@ -4241,6 +4241,14 @@
IR影像阅片
</summary>
</member>
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.GetNextTaskId(System.Nullable{System.Guid},System.Guid)">
<summary>
获取下一个阅片任务
</summary>
<param name="subjectId"></param>
<param name="trialId"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.GetReadingImageFile(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingImgInDto)">
<summary>
获取阅片非Dicom文件

View File

@ -1,4 +1,5 @@
using System;
using IRaCIS.Core.Domain.Share;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
@ -15,10 +16,25 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public string FileName { get; set; }
}
public class GetReadingTaskDto
{
public Guid VisistId { get; set; }
public Guid SubjectId { get; set; }
public ReadingCategory ReadingCategory { get; set; }
public decimal VisitNum{ get; set; }
}
public class GetReadingImgInDto
{
public Guid VisitTaskId { get; set; }
public Guid? SubjectId { get; set; }
[NotDefault]
public Guid TrialId { get; set; }
}
public class GetConfirmCriterionInDto

View File

@ -25,6 +25,7 @@ namespace IRaCIS.Application.Services
private readonly IMapper mapper;
private readonly IRepository<NoneDicomStudy> _noneDicomStudyRepository;
private readonly IRepository<VisitTask> _visitTaskRepository;
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository;
private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository;
@ -33,6 +34,7 @@ namespace IRaCIS.Application.Services
IMapper mapper,
IRepository<NoneDicomStudy> noneDicomStudyRepository,
IRepository<VisitTask> visitTaskRepository,
IRepository<SubjectVisit> subjectVisitRepository,
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository,
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
IRepository<ReadingQuestionTrial> readingQuestionTrialRepository
@ -41,9 +43,54 @@ namespace IRaCIS.Application.Services
this.mapper = mapper;
this._noneDicomStudyRepository = noneDicomStudyRepository;
this._visitTaskRepository = visitTaskRepository;
this._subjectVisitRepository = subjectVisitRepository;
this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
this._readingQuestionTrialRepository = readingQuestionTrialRepository;
}
/// <summary>
/// 获取下一个阅片任务
/// </summary>
/// <param name="subjectId"></param>
/// <param name="trialId"></param>
/// <returns></returns>
private async Task<GetReadingTaskDto> GetNextTaskId(Guid? subjectId,Guid trialId)
{
GetReadingTaskDto? task = new GetReadingTaskDto();
if (subjectId != null)
{
task = await _visitTaskRepository.Where(x => x.TrialId == trialId && x.ReadingTaskState != ReadingTaskState.HaveSigned && x.SubjectId == subjectId.Value).Select(x => new GetReadingTaskDto()
{
ReadingCategory = x.ReadingCategory,
VisistId = x.ReadingCategory == ReadingCategory.Visit ? x.SourceSubjectVisitId.Value : x.ReadModule.SubjectVisitId,
VisitNum = x.ReadingCategory == ReadingCategory.Visit ? x.SubjectVisit.VisitNum : x.ReadModule.VisitNum
}).OrderBy(x => x.VisitNum).ThenBy(x => x.ReadingCategory).FirstOrDefaultAsync();
task.SubjectId = subjectId.Value;
}
else
{
task = await _visitTaskRepository.Where(x => x.TrialId == trialId && x.ReadingTaskState != ReadingTaskState.HaveSigned).Select(x => new GetReadingTaskDto()
{
ReadingCategory = x.ReadingCategory,
VisistId = x.ReadingCategory == ReadingCategory.Visit ? x.SourceSubjectVisitId.Value : x.ReadModule.SubjectVisitId,
VisitNum = x.ReadingCategory == ReadingCategory.Visit ? x.SubjectVisit.VisitNum : x.ReadModule.VisitNum
}).FirstOrDefaultAsync();
task.SubjectId = await _subjectVisitRepository.Where(x => x.Id == task.VisistId).Select(x => x.SubjectId).FirstOrDefaultAsync();
}
return task;
}
/// <summary>
@ -54,12 +101,20 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task<List<GetReadingImgOutDto>> GetReadingImageFile(GetReadingImgInDto inDto)
{
Guid? subjectVisitId = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.SourceSubjectVisitId).FirstOrDefaultAsync();
if (subjectVisitId == null)
var task=await GetNextTaskId(inDto.SubjectId, inDto.TrialId);
List<Guid> visitIds = new List<Guid>();
if (task.ReadingCategory == ReadingCategory.Visit)
{
throw new QueryBusinessObjectNotExistException($"数据异常,当前任务没有访视Id");
visitIds.Add(task.VisistId);
}
List<GetReadingImgOutDto> imgList = await _noneDicomStudyRepository.Where(x => x.SubjectVisitId == subjectVisitId)
else
{
// 阅片期取前面所有的图像
visitIds.AddRange(await _subjectVisitRepository.Where(x => x.VisitNum <= task.VisitNum && x.SubjectId == task.SubjectId).Select(x => x.Id).ToListAsync());
}
List<GetReadingImgOutDto> imgList = await _noneDicomStudyRepository.Where(x => visitIds.Contains(x.SubjectVisitId))
.SelectMany(x => x.NoneDicomFileList).Select(x => new GetReadingImgOutDto()
{
FileName = x.FileName,

View File

@ -60,9 +60,15 @@ namespace IRaCIS.Core.Domain.Models
//任务来源访视Id 方便回更访视读片状态
public Guid? SourceSubjectVisitId { get; set; }
[ForeignKey("SourceSubjectVisitId")]
public SubjectVisit SubjectVisit { get; set; }
public Guid? SouceReadModuleId { get; set; }
[ForeignKey("SouceReadModuleId")]
public ReadModule ReadModule { get; set; }
/// <summary>
@ -172,6 +178,10 @@ namespace IRaCIS.Core.Domain.Models
public SubjectUser SujectArm { get; set; }
//建议完成时间
//public int SuggesteDays { get; set; }
}