This commit is contained in:
he
2023-06-21 14:01:49 +08:00
parent ea48fcac64
commit 5360c577af
8 changed files with 129 additions and 5 deletions
@@ -3,6 +3,8 @@ using IRaCIS.Core.Application.Service.Reading.Dto;
using MassTransit;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Application.Interfaces;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infrastructure;
namespace IRaCIS.Application.Services
{
@@ -20,7 +22,9 @@ namespace IRaCIS.Application.Services
private readonly IRepository<PreviousPDF> _previousPDFRepository;
private readonly IRepository<Dictionary> _dictionaryRepository;
private readonly IRepository<Trial> _trialRepository;
private readonly IRepository<TrialClinicalQuestion> _trialClinicalQuestionRepository;
private readonly IRepository<SystemClinicalQuestion> _systemClinicalQuestionRepository;
public ClinicalDataSetService(IRepository<SubjectVisit> subjectVisitRepository,
IClinicalQuestionService iClinicalQuestionService,
@@ -28,14 +32,18 @@ namespace IRaCIS.Application.Services
IRepository<ClinicalDataSystemSet> ClinicalDataSystemSetRepository,
IRepository<PreviousPDF> previousPDFRepository,
IRepository<Dictionary> dictionaryRepository,
IRepository<Trial> trialRepository
IRepository<TrialClinicalQuestion> trialClinicalQuestionRepository,
IRepository<SystemClinicalQuestion> systemClinicalQuestionRepository,
IRepository<Trial> trialRepository
)
{
_iClinicalQuestionService = iClinicalQuestionService;
_subjectVisitRepository = subjectVisitRepository;
_trialClinicalQuestionRepository = trialClinicalQuestionRepository;
_systemClinicalQuestionRepository = systemClinicalQuestionRepository;
_clinicalDataTrialSetRepository = ClinicalDataTrialSetRepository;
_clinicalDataSystemSetRepository = ClinicalDataSystemSetRepository;
this._previousPDFRepository = previousPDFRepository;
@@ -44,6 +52,58 @@ namespace IRaCIS.Application.Services
}
/// <summary>
/// 应用系统临床数据
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
/// <exception cref="BusinessValidationFailedException"></exception>
[HttpPost]
public async Task<IResponseOutput> ApplySystemClinical(ApplySystemClinicalInDto inDto)
{
if (_systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId && x.IsCheckDate).Count() != 1)
{
throw new BusinessValidationFailedException(_localizer["ClinicalDataSet_Apply"]);
}
await _clinicalDataSystemSetRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.SystemClinicalId, x => new ClinicalDataSystemSet()
{
IsApply = true
});
await _clinicalDataSystemSetRepository.SaveChangesAsync();
return ResponseOutput.Ok(true);
}
/// <summary>
/// 应用项目临床数据
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
/// <exception cref="BusinessValidationFailedException"></exception>
[HttpPost]
public async Task<IResponseOutput> ApplyTrialClinical(ApplyTrialClinicalInDto inDto)
{
if (_trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId && x.IsCheckDate).Count() != 1)
{
throw new BusinessValidationFailedException(_localizer["ClinicalDataSet_Apply"]);
}
await _clinicalDataTrialSetRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.TrialClinicalId, x => new ClinicalDataTrialSet()
{
IsApply = true
});
await _clinicalDataTrialSetRepository.SaveChangesAsync();
return ResponseOutput.Ok(true);
}
#region
/// <summary>
@@ -54,7 +114,10 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task<IResponseOutput> AddOrUpdateClinicalDataSystemSet(ClinicalDataSystemSetAddOrEdit indto)
{
if (indto.ClinicalUploadType == ClinicalUploadType.Table || indto.ClinicalUploadType == ClinicalUploadType.PDF)
{
indto.IsApply = true;
}
var dictionary = await _dictionaryRepository.Where(x => x.Parent.Code == "ClinicalDataType" && x.Code == indto.ClinicalDataSetEnum.ToString()).FirstNotNullAsync();
indto.ClinicalDataSetName = dictionary.ValueCN;
indto.ClinicalDataSetEnName = dictionary.Value;
@@ -130,6 +193,12 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task<IResponseOutput> AddOrUpdateClinicalDataTrialSet(ClinicalDataTrialSetAddOrEdit indto)
{
if (indto.ClinicalUploadType == ClinicalUploadType.Table || indto.ClinicalUploadType == ClinicalUploadType.PDF)
{
indto.IsApply = true;
}
var existsQuery = _clinicalDataTrialSetRepository
.WhereIf(indto.Id != null, x => x.Id != indto.Id)
.Where(x => (x.ClinicalDataSetName == indto.ClinicalDataSetName||x.ClinicalDataSetEnName==indto.ClinicalDataSetEnName) && x.TrialId == indto.TrialId);
@@ -72,6 +72,11 @@ namespace IRaCIS.Core.Application.Service
[HttpPost]
public async Task<IResponseOutput> AddOrUpdateTrialClinicalQuestion(TrialClinicalQuestionDto inDto)
{
if (await _trialClinicalQuestionRepository.AnyAsync(x =>x.TrialClinicalId==inDto.TrialClinicalId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName))
{
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]);
}
var entity = await _trialClinicalQuestionRepository.InsertOrUpdateAsync(inDto, true);
return ResponseOutput.Ok(entity.Id.ToString());
@@ -149,6 +154,11 @@ namespace IRaCIS.Core.Application.Service
[HttpPost]
public async Task<IResponseOutput> AddOrUpdateSystemClinicalQuestion(SystemClinicalQuestionDto inDto)
{
if (await _systemClinicalQuestionRepository.AnyAsync(x => x.SystemClinicalId == inDto.SystemClinicalId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName))
{
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]);
}
var entity = await _systemClinicalQuestionRepository.InsertOrUpdateAsync(inDto, true);
return ResponseOutput.Ok(entity.Id.ToString());
@@ -230,6 +240,10 @@ namespace IRaCIS.Core.Application.Service
[HttpPost]
public async Task<IResponseOutput> AddOrUpdateSystemClinicalTableQuestion(SystemClinicalTableQuestionDto inDto)
{
if (await _systemClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName))
{
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]);
}
var entity = await _systemClinicalTableQuestionRepository.InsertOrUpdateAsync(inDto, true);
@@ -281,7 +295,10 @@ namespace IRaCIS.Core.Application.Service
[HttpPost]
public async Task<IResponseOutput> AddOrUpdateTrialClinicalTableQuestion(TrialClinicalTableQuestionDto inDto)
{
if (await _trialClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName))
{
return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]);
}
var entity = await _trialClinicalTableQuestionRepository.InsertOrUpdateAsync(inDto, true);
return ResponseOutput.Ok(entity.Id.ToString());
@@ -13,6 +13,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
{
public Guid? Id { get; set; }
/// <summary>
/// 是否应用
/// </summary>
public bool IsApply { get; set; } = false;
/// <summary>
/// 名称
@@ -73,10 +77,23 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
//public List<int> CriterionEnumList { get; set; }
}
public class ApplySystemClinicalInDto
{
public Guid SystemClinicalId { get; set; }
}
public class ApplyTrialClinicalInDto
{
public Guid TrialClinicalId { get; set; }
}
public class ClinicalDataSystemSetAddOrEdit
{
public Guid? Id { get; set; }
/// <summary>
/// 是否应用
/// </summary>
public bool IsApply { get; set; } = false;
/// <summary>
/// 枚举
@@ -88,6 +88,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
/// 显示类型
/// </summary>
public ClinicalQuestionShow ClinicalQuestionShowEnum { get; set; } = ClinicalQuestionShow.Show;
/// <summary>
/// 是否是检查日期
/// </summary>
public bool IsCheckDate { get; set; }
}
/// <summary>