diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicineQuestionViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicineQuestionViewModel.cs index 763e4b7f9..f6f47de0d 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicineQuestionViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicineQuestionViewModel.cs @@ -89,7 +89,6 @@ namespace IRaCIS.Core.Application.ViewModel public class TrialDataFromSystem : ReadingMedicineTrialQuestion { - public Guid SystemQuestionId { get; set; } } @@ -100,7 +99,7 @@ namespace IRaCIS.Core.Application.ViewModel [NotDefault] public Guid TrialReadingCriterionId { get; set; } - public bool IsEnglish { get; set; } + public LanguageType LanguageType { get; set; } } public class AddTrialDataFromSystemInDto diff --git a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicineQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicineQuestionService.cs index 4432c0499..030e34aa7 100644 --- a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicineQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicineQuestionService.cs @@ -501,9 +501,13 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task AddDefaultQuestions(AddDefaultQuestionsInDto inDto) { - if (await _readingMedicineTrialQuestionRepository.AnyAsync(x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId)) + if (await _readingMedicineTrialQuestionRepository.AnyAsync(x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId && x.LanguageType == inDto.LanguageType && x.SystemQuestionId != null)) { - throw new BusinessValidationFailedException(_localizer["Medicine_ExistsMedicineQuestion"]); + await _readingMedicineTrialQuestionRepository.BatchDeleteNoTrackingAsync(x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId && x.LanguageType == inDto.LanguageType && x.SystemQuestionId != null); + } + else + { + await _readingMedicineTrialQuestionRepository.BatchDeleteNoTrackingAsync(x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId && x.LanguageType != inDto.LanguageType); } var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstNotNullAsync(); List needAddCategory = new List() { ReadingCategory.Visit }; @@ -522,8 +526,7 @@ namespace IRaCIS.Core.Application.Service var maxOrder = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId).OrderByDescending(x => x.ShowOrder).Select(x => x.ShowOrder).FirstOrDefaultAsync(); List needList = await _readingMedicineSystemQuestionRepository - .WhereIf(inDto.IsEnglish, x => x.LanguageType == LanguageType.English) - .WhereIf(!inDto.IsEnglish, x => x.LanguageType == LanguageType.Chinese) + .Where(x=>x.LanguageType==inDto.LanguageType) .Where(x => x.CriterionTypeEnum == criterionInfo.CriterionType && needAddCategory.Contains(x.ReadingCategory)) .Select(x => new TrialDataFromSystem() { diff --git a/IRaCIS.Core.Domain/Reading/MedicalAudit/ReadingMedicineTrialQuestion.cs b/IRaCIS.Core.Domain/Reading/MedicalAudit/ReadingMedicineTrialQuestion.cs index afc4cc6e9..e5f90f69c 100644 --- a/IRaCIS.Core.Domain/Reading/MedicalAudit/ReadingMedicineTrialQuestion.cs +++ b/IRaCIS.Core.Domain/Reading/MedicalAudit/ReadingMedicineTrialQuestion.cs @@ -101,6 +101,8 @@ namespace IRaCIS.Core.Domain.Models /// public Guid TrialReadingCriterionId { get; set; } + public Guid? SystemQuestionId { get; set; } + [JsonIgnore] [ForeignKey("ParentId")] public ReadingMedicineTrialQuestion ParentQuestion { get; set; }