修改一版

This commit is contained in:
he
2022-06-17 14:30:49 +08:00
parent 3f573d6c11
commit 665ca1b7ae
11 changed files with 227 additions and 59 deletions
@@ -18,7 +18,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public class GetReadingImgInDto
{
public Guid SubjectVisitId { get; set; }
public Guid VisitTaskId { get; set; }
}
public class GetConfirmCriterionInDto
@@ -34,12 +34,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
/// </summary>
public class GetTrialConfirmCriterionListOutDto
{
public Guid CriterionId { get; set; }
public Guid ReadingQuestionCriterionTrialId { get; set; }
/// <summary>
/// 标准
/// </summary>
public string CriterionName { get; set; }
public string ReadingQuestionCriterionTrialName { get; set; }
}
@@ -54,33 +54,42 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
/// </summary>
public class SubmitVisitTaskQuestionsInDto
{
public Guid TrialId { get; set; }
public Guid VisitTaskId { get; set; }
public Guid ReadingQuestionCriterionTrialId { get; set; }
public List<QuestionAnswer> AnswerList { get; set; } = new List<QuestionAnswer>();
}
public class QuestionAnswer
{
public Guid TrialQuestionId { get; set; }
public Guid ReadingQuestionTrialId { get; set; }
public string Answer { get; set; }
}
public class GetTrialReadingQuestionDto
{
public Guid Id { get; set; }
//public class GetTrialReadingQuestionDto
//{
// public Guid Id { get; set; }
public string GroupName { get; set; }
// public string GroupName { get; set; }
List<GetTrialReadingQuestionOutDto> Questions { get; set; }
}
// List<GetTrialReadingQuestionOutDto> Questions { get; set; }
//}
public class GetTrialReadingQuestionOutDto
{
public Guid ReadingQuestionTrialId { get; set; }
public Guid Id { get; set; }
/// <summary>
/// 项目标准Id
/// </summary>
public Guid ReadingQuestionCriterionTrialId { get; set; }
/// <summary>
/// 项目Id
@@ -97,6 +106,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
/// </summary>
public string ParentTriggerValue { get; set; }
public string GroupName { get; set; }
/// <summary>
/// 问题名称
/// </summary>
@@ -0,0 +1,17 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2021-12-23 13:20:59
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Domain.Share.Reading;
namespace IRaCIS.Core.Application.Contracts
{
public interface IReadingImageTaskService
{
Task<IResponseOutput> SubmitVisitTaskQuestions(SubmitVisitTaskQuestionsInDto inDto);
}
}
@@ -0,0 +1,19 @@
//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2021-12-23 13:20:59
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Domain.Share.Reading;
namespace IRaCIS.Core.Application.Contracts
{
public interface IReadingQuestionService
{
Task<IResponseOutput> SetSystemCriterionDisable(Guid dictionaryId, Guid? parentId);
}
}
@@ -11,6 +11,8 @@ using MassTransit;
using IRaCIS.Core.Application.Service.Reading;
using IRaCIS.Core.Infra.EFCore.Common;
using Panda.DynamicWebApi.Attributes;
using AutoMapper;
using IRaCIS.Core.Application.Contracts;
namespace IRaCIS.Application.Services
{
@@ -18,41 +20,49 @@ namespace IRaCIS.Application.Services
/// IR影像阅片
/// </summary>
[ApiExplorerSettings(GroupName = "Reading")]
public class ReadingImageTaskService : BaseService
public class ReadingImageTaskService : BaseService, IReadingImageTaskService
{
private readonly IMapper mapper;
private readonly IRepository<NoneDicomStudy> _noneDicomStudyRepository;
private readonly IRepository<VisitTask> _visitTaskRepository;
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository;
private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository;
public ReadingImageTaskService(
IMapper mapper,
IRepository<NoneDicomStudy> noneDicomStudyRepository,
IRepository<VisitTask> visitTaskRepository,
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository,
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
IRepository<ReadingQuestionTrial> readingQuestionTrialRepository
)
{
this.mapper = mapper;
this._noneDicomStudyRepository = noneDicomStudyRepository;
this._visitTaskRepository = visitTaskRepository;
this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
this._readingQuestionTrialRepository = readingQuestionTrialRepository;
}
/// <summary>
/// 获取阅片非Dicom文件
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[HttpPost]
public async Task<List<GetReadingImgOutDto>> GetReadingImageFile(GetReadingImgInDto inDto)
{
List<GetReadingImgOutDto> imgList =await _noneDicomStudyRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId)
.SelectMany(x => x.NoneDicomFileList).Select(x=> new GetReadingImgOutDto() {
FileName=x.FileName,
Path=x.Path
}).ToListAsync();
return imgList;
}
///// <summary>
///// 获取阅片非Dicom文件
///// </summary>
///// <param name="inDto"></param>
///// <returns></returns>
//[HttpPost]
//public async Task<List<GetReadingImgOutDto>> GetReadingImageFile(GetReadingImgInDto inDto)
//{
// var subjectVisitId=await _visitTaskRepository.Where(x=>x.Id==inDto.VisitTaskId).Select(x=>x.vi)
// List<GetReadingImgOutDto> imgList =await _noneDicomStudyRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId)
// .SelectMany(x => x.NoneDicomFileList).Select(x=> new GetReadingImgOutDto() {
// FileName=x.FileName,
// Path=x.Path
// }).ToListAsync();
// return imgList;
//}
/// <summary>
/// 获取项目已确认的标准
@@ -62,11 +72,11 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task<List<GetTrialConfirmCriterionListOutDto>> GetTrialConfirmCriterionList(GetConfirmCriterionInDto inDto)
{
var result= await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == inDto.TrialId&&x.IsConfirm)
var result= await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == inDto.TrialId&&x.IsConfirm&&x.IsCompleteConfig)
.Select(x => new GetTrialConfirmCriterionListOutDto()
{
CriterionId = x.Id,
CriterionName = x.CriterionName
ReadingQuestionCriterionTrialId = x.Id,
ReadingQuestionCriterionTrialName = x.CriterionName
}).ToListAsync();
return result;
}
@@ -79,27 +89,69 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task<List<GetTrialReadingQuestionOutDto>> GetTrialReadingQuestion(GetTrialReadingQuestionInDto inDto)
{
var qusetionList = await _readingQuestionTrialRepository.Where(x => x.Id == inDto.CriterionId).ToListAsync();
//List<GetTrialReadingQuestionDto> groupNames
var qusetionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == inDto.CriterionId).ToListAsync();
var result = await _readingQuestionTrialRepository.Where(x => x.Id == inDto.CriterionId)
.ProjectTo<GetTrialReadingQuestionOutDto>(_mapper.ConfigurationProvider).ToListAsync();
return result;
List<GetTrialReadingQuestionOutDto> groupList = _mapper.Map<List<GetTrialReadingQuestionOutDto>>(qusetionList.Where(x => x.ParentId == null));
groupList.ForEach(x =>
{
FindChildQuestion(x, qusetionList);
});
return groupList;
}
///// <summary>
/////
///// </summary>
///// <param name="InDto"></param>
///// <returns></returns>
//public async Task<IResponseOutput> SubmitVisitTaskQuestions(SubmitVisitTaskQuestionsInDto InDto)
//{
/// <summary>
/// 找子问题
/// </summary>
/// <param name="trialReadingQuestion"></param>
/// <param name="questionlists"></param>
private void FindChildQuestion(GetTrialReadingQuestionOutDto trialReadingQuestion, List<ReadingQuestionTrial> questionlists)
{
trialReadingQuestion.Childrens = _mapper.Map<List<GetTrialReadingQuestionOutDto>>(questionlists.Where(x => x.ParentId == trialReadingQuestion.ReadingQuestionTrialId));
if (trialReadingQuestion.Childrens != null && trialReadingQuestion.Childrens.Count != 0)
{
trialReadingQuestion.Childrens.ForEach(x =>
{
FindChildQuestion(x, questionlists);
});
}
}
//}
/// <summary>
/// 提交问题
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[NonDynamicMethod]
public async Task<IResponseOutput> SubmitVisitTaskQuestions(SubmitVisitTaskQuestionsInDto inDto)
{
var subjectId =await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.SubjectId).FirstOrDefaultAsync();
List<ReadingTaskQuestionAnswer> readingTaskAnswerList = inDto.AnswerList.Select(x => new ReadingTaskQuestionAnswer()
{
Id = NewId.NextGuid(),
SubjectId = subjectId,
Answer = x.Answer,
ReadingQuestionCriterionTrialId = inDto.ReadingQuestionCriterionTrialId,
ReadingQuestionTrialId = x.ReadingQuestionTrialId,
VisitTaskId = inDto.VisitTaskId,
TrialId = inDto.TrialId
}).ToList();
await _readingTaskQuestionAnswerRepository.AddRangeAsync(readingTaskAnswerList);
await _visitTaskRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.VisitTaskId, x => new VisitTask()
{
ReadingTaskState = ReadingTaskState.HaveSigned
});
var result = await _visitTaskRepository.SaveChangesAsync();
return ResponseOutput.Ok(result);
}
}
@@ -11,6 +11,7 @@ using MassTransit;
using IRaCIS.Core.Application.Service.Reading;
using IRaCIS.Core.Infra.EFCore.Common;
using Panda.DynamicWebApi.Attributes;
using IRaCIS.Core.Application.Contracts;
namespace IRaCIS.Application.Services
{
@@ -18,7 +19,7 @@ namespace IRaCIS.Application.Services
/// 阅片问题.标准
/// </summary>
[ApiExplorerSettings(GroupName = "Reading")]
public class ReadingQuestionService : BaseService
public class ReadingQuestionService : BaseService, IReadingQuestionService
{
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
@@ -82,6 +83,31 @@ namespace IRaCIS.Application.Services
inDto.Asc);
}
/// <summary>
/// 设置系统标准被禁用
/// </summary>
/// <returns></returns>
[NonDynamicMethod]
public async Task<IResponseOutput> SetSystemCriterionDisable(Guid dictionaryId, Guid? parentId)
{
// 判断是否是阅片
if (await _dictionaryRepository.AnyAsync(x => x.Id == parentId && x.Code == "ReadingStandard"))
{
// 判断当前阅片是否在项目里面存在
var systemCriterion = await _readingQuestionCriterionSystemRepository.FirstOrDefaultAsync(x => x.CriterionId == dictionaryId);
if (systemCriterion != null)
{
var trialCriterionIds = await _readingQuestionCriterionTrialRepository.Where(x => x.ReadingQuestionCriterionSystemId == systemCriterion.Id).Select(x=>x.ReadingQuestionCriterionSystemId).ToListAsync();
await _readingQuestionCriterionTrialRepository.BatchDeleteNoTrackingAsync(x => x.ReadingQuestionCriterionSystemId == systemCriterion.Id);
await _readingQuestionTrialRepository.BatchDeleteNoTrackingAsync(x => trialCriterionIds.Contains(x.ReadingQuestionCriterionTrialId));
return ResponseOutput.Ok();
}
}
return ResponseOutput.Ok();
}
///// <summary>
///// 设置系统问题标准是否生效
///// </summary>
@@ -212,6 +238,9 @@ namespace IRaCIS.Application.Services
return ResponseOutput.Ok(entity.Id.ToString());
}
/// <summary>
/// 获取系统问题
/// </summary>
@@ -73,7 +73,8 @@ namespace IRaCIS.Core.Application.Service
#endregion
#region IR阅片
CreateMap<ReadingQuestionTrial, GetTrialReadingQuestionOutDto>();
CreateMap<ReadingQuestionTrial, GetTrialReadingQuestionOutDto>()
.ForMember(x=>x.ReadingQuestionTrialId, y=>y.MapFrom(z=>z.Id));
#endregion