diff --git a/IRaCIS.Core.Application/Resources/en-US.json b/IRaCIS.Core.Application/Resources/en-US.json index 829a4985c..ddbb461e4 100644 --- a/IRaCIS.Core.Application/Resources/en-US.json +++ b/IRaCIS.Core.Application/Resources/en-US.json @@ -39,7 +39,10 @@ //-------------------------------------------------------------------------------------Reading----------------------------------------------------------------- //ClinicalDataSetService + "ClinicalDataSet_Apply": "", "ClinicalDataSet_DupTypeFail": "The same type of clinical data exists. The operation failed.", + //ClinicalQuestionService + "ClinicalQuestion_Repeat": "", //ReadingClinicalDataService "ReadingClinicalData_DupTypeFail": "The same type of clinical data exists. The operation failed.", "ReadingClinicalData_Unchecked": "The current clinical data status is not verified and signing is not allowed!", diff --git a/IRaCIS.Core.Application/Resources/zh-CN.json b/IRaCIS.Core.Application/Resources/zh-CN.json index 30eabe946..1e44d8da2 100644 --- a/IRaCIS.Core.Application/Resources/zh-CN.json +++ b/IRaCIS.Core.Application/Resources/zh-CN.json @@ -39,7 +39,10 @@ // ------------------------------------------------------------Reading-------------------------------------------------------------------- //ClinicalDataSetService + "ClinicalDataSet_Apply": "当前临床数据需要配置一个检查日期才能应用", "ClinicalDataSet_DupTypeFail": "存在同类型的临床数据,操作失败", + //ClinicalQuestionService + "ClinicalQuestion_Repeat": "存在相同的问题名称!", //ReadingClinicalDataService "ReadingClinicalData_DupTypeFail": "存在同类型的临床数据,操作失败", "ReadingClinicalData_Unchecked": "当前临床数据状态不是已核查状态,不允许签名!", diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs index fe7aaa3b9..726d5388f 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs @@ -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 _previousPDFRepository; private readonly IRepository _dictionaryRepository; private readonly IRepository _trialRepository; - + private readonly IRepository _trialClinicalQuestionRepository; + + private readonly IRepository _systemClinicalQuestionRepository; public ClinicalDataSetService(IRepository subjectVisitRepository, IClinicalQuestionService iClinicalQuestionService, @@ -28,14 +32,18 @@ namespace IRaCIS.Application.Services IRepository ClinicalDataSystemSetRepository, IRepository previousPDFRepository, IRepository dictionaryRepository, - IRepository trialRepository + IRepository trialClinicalQuestionRepository, + IRepository systemClinicalQuestionRepository, + + IRepository trialRepository ) { _iClinicalQuestionService = iClinicalQuestionService; _subjectVisitRepository = subjectVisitRepository; - + _trialClinicalQuestionRepository = trialClinicalQuestionRepository; + _systemClinicalQuestionRepository = systemClinicalQuestionRepository; _clinicalDataTrialSetRepository = ClinicalDataTrialSetRepository; _clinicalDataSystemSetRepository = ClinicalDataSystemSetRepository; this._previousPDFRepository = previousPDFRepository; @@ -44,6 +52,58 @@ namespace IRaCIS.Application.Services } + /// + /// 应用系统临床数据 + /// + /// + /// + /// + [HttpPost] + public async Task 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); + } + + /// + /// 应用项目临床数据 + /// + /// + /// + /// + [HttpPost] + public async Task 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 系统 /// @@ -54,7 +114,10 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task 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 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); diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs index ec6d7c4f4..6d593a1ed 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs @@ -72,6 +72,11 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task 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 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 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 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()); diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs index 672467388..8e0dd533f 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs @@ -13,6 +13,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { public Guid? Id { get; set; } + /// + /// 是否应用 + /// + public bool IsApply { get; set; } = false; /// /// 名称 @@ -73,10 +77,23 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto //public List 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; } + /// + /// 是否应用 + /// + public bool IsApply { get; set; } = false; /// /// 枚举 diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs index fef9c511a..fa9e287ab 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs @@ -88,6 +88,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// 显示类型 /// public ClinicalQuestionShow ClinicalQuestionShowEnum { get; set; } = ClinicalQuestionShow.Show; + + /// + /// 是否是检查日期 + /// + public bool IsCheckDate { get; set; } } /// diff --git a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalQuestion.cs b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalQuestion.cs index c55251892..b732fefcd 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalQuestion.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalQuestion.cs @@ -102,6 +102,11 @@ namespace IRaCIS.Core.Domain.Models /// public ClinicalQuestionShow ClinicalQuestionShowEnum { get; set; } = ClinicalQuestionShow.Show; + /// + /// 是否是检查日期 + /// + public bool IsCheckDate { get; set; } + } diff --git a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs index 20e436b36..7d7ce713e 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs @@ -107,6 +107,11 @@ namespace IRaCIS.Core.Domain.Models /// public ClinicalQuestionShow ClinicalQuestionShowEnum { get; set; } = ClinicalQuestionShow.Show; + /// + /// 是否是检查日期 + /// + public bool IsCheckDate { get; set; } + /// /// 自定义计算标记 ///