From a1913ca5b3f6b03f3038297ff54e5e9e29f6446b Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 17 Oct 2022 15:02:27 +0800 Subject: [PATCH] x --- .../ReadingMedicalReviewService.cs | 2 + .../ReadingMedicineQuestionService.cs | 276 ++++++++++-------- .../ReadingMedicalReviewDialog.cs | 0 .../ReadingMedicineQuestionAnswer.cs | 0 .../ReadingMedicineSystemQuestion.cs | 0 .../ReadingMedicineTrialQuestion.cs | 0 6 files changed, 152 insertions(+), 126 deletions(-) rename IRaCIS.Core.Application/Service/Reading/{ => MedicalAudit}/ReadingMedicalReviewService.cs (99%) rename IRaCIS.Core.Application/Service/Reading/{ => MedicalAudit}/ReadingMedicineQuestionService.cs (88%) rename IRaCIS.Core.Domain/Reading/{MedicalAuditQuestion => MedicalAudit}/ReadingMedicalReviewDialog.cs (100%) rename IRaCIS.Core.Domain/Reading/{MedicalAuditQuestion => MedicalAudit}/ReadingMedicineQuestionAnswer.cs (100%) rename IRaCIS.Core.Domain/Reading/{MedicalAuditQuestion => MedicalAudit}/ReadingMedicineSystemQuestion.cs (100%) rename IRaCIS.Core.Domain/Reading/{MedicalAuditQuestion => MedicalAudit}/ReadingMedicineTrialQuestion.cs (100%) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingMedicalReviewService.cs b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs similarity index 99% rename from IRaCIS.Core.Application/Service/Reading/ReadingMedicalReviewService.cs rename to IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs index 431d07047..20c1b1781 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingMedicalReviewService.cs +++ b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs @@ -204,6 +204,7 @@ namespace IRaCIS.Core.Application.Service } #region 问题 + private async Task> GetMedicalQuestionAnswer(GetMedicalReviewReadingTaskInDto inDto) { var medicalReview = await _taskMedicalReviewRepository.Where(x => x.Id == inDto.TaskMedicalReviewId).FirstNotNullAsync(); @@ -250,6 +251,7 @@ namespace IRaCIS.Core.Application.Service }); } } + #endregion diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingMedicineQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicineQuestionService.cs similarity index 88% rename from IRaCIS.Core.Application/Service/Reading/ReadingMedicineQuestionService.cs rename to IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicineQuestionService.cs index 46668fca3..710fa27ee 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingMedicineQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicineQuestionService.cs @@ -1,7 +1,4 @@ - -using IRaCIS.Core.Domain.Models; using Microsoft.AspNetCore.Mvc; -using IRaCIS.Core.Application.Interfaces; using IRaCIS.Core.Application.ViewModel; using IRaCIS.Core.Infra.EFCore.Common; using MassTransit; @@ -10,11 +7,11 @@ using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Domain.Share; namespace IRaCIS.Core.Application.Service -{ - /// - /// 医学审核问题 - /// - [ ApiExplorerSettings(GroupName = "Reading")] +{ + /// + /// 医学审核问题 + /// + [ ApiExplorerSettings(GroupName = "Reading")] public class ReadingMedicineQuestionService: BaseService, IReadingMedicineQuestionService { @@ -37,6 +34,9 @@ namespace IRaCIS.Core.Application.Service } + + #region 系统 + /// /// 获取系统的医学审核问题 /// @@ -50,8 +50,8 @@ namespace IRaCIS.Core.Application.Service .WhereIf(!inDto.ParentTriggerValue.IsNullOrEmpty(), x => x.ParentTriggerValue.Contains(inDto.ParentTriggerValue)) .WhereIf(!inDto.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inDto.QuestionName)) .WhereIf(!inDto.Type.IsNullOrEmpty(), x => x.Type.Contains(inDto.Type)) - .WhereIf(inDto.ReadingCategory!=null, x => x.ReadingCategory==inDto.ReadingCategory) - .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x=>x.ShowOrder); + .WhereIf(inDto.ReadingCategory != null, x => x.ReadingCategory == inDto.ReadingCategory) + .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder); return await query.ToListAsync(); } @@ -94,7 +94,7 @@ namespace IRaCIS.Core.Application.Service { var existsQuery = _readingMedicineSystemQuestionRepository .WhereIf(inDto.Id != null, x => x.Id != inDto.Id) - .Where(x =>x.ShowOrder == inDto.ShowOrder); + .Where(x => x.ShowOrder == inDto.ShowOrder); if (await existsQuery.AnyAsync()) { @@ -105,9 +105,6 @@ namespace IRaCIS.Core.Application.Service return ResponseOutput.Ok(entity.Id.ToString()); } - - - /// /// 删除系统的医学审核问题 /// @@ -124,88 +121,38 @@ namespace IRaCIS.Core.Application.Service var result = await _readingMedicineSystemQuestionRepository.SaveChangesAsync(); return ResponseOutput.Result(result); } + #endregion + + + #region 项目 - /// /// 获取项目的医学审核问题 /// /// /// [HttpPost] - public async Task<(List,object)> GetReadingMedicineTrialQuestionList(ReadingMedicineTrialQuestionQuery inDto) + public async Task<(List, object)> GetReadingMedicineTrialQuestionList(ReadingMedicineTrialQuestionQuery inDto) { var query = _readingMedicineTrialQuestionRepository.AsQueryable() - .Where(x=>x.TrialId==inDto.TrialId&&x.TrialReadingCriterionId==inDto.TrialReadingCriterionId) + .Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId) .WhereIf(!inDto.TypeValue.IsNullOrEmpty(), x => x.TypeValue.Contains(inDto.TypeValue)) .WhereIf(!inDto.ParentTriggerValue.IsNullOrEmpty(), x => x.ParentTriggerValue.Contains(inDto.ParentTriggerValue)) .WhereIf(!inDto.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inDto.QuestionName)) .WhereIf(!inDto.Type.IsNullOrEmpty(), x => x.Type.Contains(inDto.Type)) .WhereIf(inDto.ReadingCategory != null, x => x.ReadingCategory == inDto.ReadingCategory) - .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x=>x.ShowOrder); + .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder); - var isConfirmMedicineQuestion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id==inDto.TrialReadingCriterionId).Select(x => x.IsConfirmMedicineQuestion).FirstOrDefaultAsync(); + var isConfirmMedicineQuestion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).Select(x => x.IsConfirmMedicineQuestion).FirstOrDefaultAsync(); var questionList = await query.ToListAsync(); - return (questionList, new { - IsConfirmMedicineQuestion= isConfirmMedicineQuestion, - QuestionCount= questionList.Count(), + return (questionList, new + { + IsConfirmMedicineQuestion = isConfirmMedicineQuestion, + QuestionCount = questionList.Count(), }); } - /// - /// 获取预览问题信息 - /// - /// - /// - [HttpPost] - public async Task> GetMedicineQuestionPreview(GetMedicineQuestionPreviewInDto inDto) - { - var trialQuestionList = await _readingMedicineTrialQuestionRepository.Where(x=>x.TrialId==inDto.TrialId&&x.TrialReadingCriterionId==inDto.TrialReadingCriterionId) - .WhereIf(inDto.ReadingCategory != null, x => x.ReadingCategory == inDto.ReadingCategory) - .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x=>x.ShowOrder).ToListAsync(); - - List readingQuestionList = trialQuestionList.Where(x => x.ParentId == null).ToList(); - readingQuestionList.ForEach(x => - { - FindChildQuestion(x, trialQuestionList); - }); - return readingQuestionList; - } - - private void FindChildQuestion(GetMedicineQuestionPreviewOutDto trialReadingQuestion, List questionlists) - { - trialReadingQuestion.Childrens = questionlists.Where(x => x.ParentId == trialReadingQuestion.Id).ToList(); - if (trialReadingQuestion.Childrens != null && trialReadingQuestion.Childrens.Count != 0) - { - trialReadingQuestion.Childrens.ForEach(x => - { - this.FindChildQuestion(x, questionlists); - }); - } - } - - /// - /// 新增或修改项目医学审核问题 - /// - /// - /// - [HttpPost] - public async Task AddOrUpdateReadingMedicineTrialQuestion(ReadingMedicineTrialQuestionAddOrEdit inDto) - { - var existsQuery = _readingMedicineTrialQuestionRepository - .WhereIf(inDto.Id != null, x => x.Id != inDto.Id) - .Where(x => x.TrialId==inDto.TrialId&&x.TrialReadingCriterionId==inDto.TrialReadingCriterionId) - .Where(x => x.ShowOrder == inDto.ShowOrder); - - if (await existsQuery.AnyAsync()) - { - return ResponseOutput.NotOk("当前问题序号存在重复"); - } - var entity = await _readingMedicineTrialQuestionRepository.InsertOrUpdateAsync(inDto); - await _readingMedicineTrialQuestionRepository.SaveChangesAsync(); - return ResponseOutput.Ok(entity.Id.ToString()); - - } /// /// 获取项目的其他医学审核问题 @@ -220,74 +167,65 @@ namespace IRaCIS.Core.Application.Service "select","radio" }; - var questionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId&&x.TrialReadingCriterionId==inDto.TrialReadingCriterionId) + var questionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId) .Where(x => types.Contains(x.Type)) .WhereIf(inDto.Id != null, x => x.Id != inDto.Id && x.ParentId != inDto.Id) - .WhereIf(inDto.ShowOrder != null, x => x.ShowOrder x.ShowOrder < inDto.ShowOrder) .WhereIf(inDto.ReadingCategory != null, x => x.ReadingCategory == inDto.ReadingCategory) .Select(x => new GetReadingMedicineTrialOtherQuestionOutDto() { Id = x.Id, QuestionName = x.QuestionName, - TypeValue=x.TypeValue, - ReadingCategory=x.ReadingCategory, + TypeValue = x.TypeValue, + ReadingCategory = x.ReadingCategory, }).ToListAsync(); return questionList; } /// - /// 从系统里面选择问题添加到项目里面 + /// + /// 获取预览问题信息 /// /// /// [HttpPost] - public async Task AddTrialDataFromSystem(AddTrialDataFromSystemInDto inDto) + public async Task> GetMedicineQuestionPreview(GetMedicineQuestionPreviewInDto inDto) { - // 直接写?? - var systemList = await _readingMedicineSystemQuestionRepository.Where(x => inDto.SystemQuestionIds.Contains(x.Id)).ToListAsync(); + var trialQuestionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId) + .WhereIf(inDto.ReadingCategory != null, x => x.ReadingCategory == inDto.ReadingCategory) + .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync(); - var maxOrder = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId).OrderByDescending(x => x.ShowOrder).Select(x => x.ShowOrder).FirstOrDefaultAsync(); - - - var needList= systemList.Select(x => new TrialDataFromSystem() - { - Id = NewId.NextGuid(), - ShowOrder = x.ShowOrder, - IsEnable = x.IsEnable, - IsRequired = x.IsRequired, - QuestionName = x.QuestionName, - TrialReadingCriterionId=inDto.TrialReadingCriterionId, - Type = x.Type, - ParentId=x.ParentId, - SystemQuestionId=x.Id, - ReadingCategory=x.ReadingCategory, - TypeValue = x.TypeValue, - TrialId=inDto.TrialId, - }).ToList(); - - needList.ForEach(x => { - maxOrder++; - x.ShowOrder = maxOrder; + List readingQuestionList = trialQuestionList.Where(x => x.ParentId == null).ToList(); + readingQuestionList.ForEach(x => + { + FindChildQuestion(x, trialQuestionList); }); - foreach (var item in needList.Where(x => x.ParentId != null)) - { - var parent = needList.Where(x => x.SystemQuestionId == item.ParentId).FirstOrDefault(); - if (parent == null) - { - item.ParentId = null; - item.ParentTriggerValue = String.Empty; - } - else - { - item.ParentId = parent.Id; - } - } + return readingQuestionList; + } + + /// + /// 新增或修改项目医学审核问题 + /// + /// + /// + [HttpPost] + public async Task AddOrUpdateReadingMedicineTrialQuestion(ReadingMedicineTrialQuestionAddOrEdit inDto) + { + var existsQuery = _readingMedicineTrialQuestionRepository + .WhereIf(inDto.Id != null, x => x.Id != inDto.Id) + .Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId) + .Where(x => x.ShowOrder == inDto.ShowOrder); + + if (await existsQuery.AnyAsync()) + { + return ResponseOutput.NotOk("当前问题序号存在重复"); + } + var entity = await _readingMedicineTrialQuestionRepository.InsertOrUpdateAsync(inDto); + await _readingMedicineTrialQuestionRepository.SaveChangesAsync(); + return ResponseOutput.Ok(entity.Id.ToString()); - await _readingMedicineTrialQuestionRepository.AddRangeAsync(needList); - var result = await _readingMedicineTrialQuestionRepository.SaveChangesAsync(); - return ResponseOutput.Result(result); } /// @@ -296,7 +234,7 @@ namespace IRaCIS.Core.Application.Service /// /// [HttpPost] - public async Task DeleteReadingMedicineTrialQuestion(DeleteReadingMedicineTrialQuestion inDto) + public async Task DeleteReadingMedicineTrialQuestion(DeleteReadingMedicineTrialQuestion inDto) { if (await _readingMedicineTrialQuestionRepository.AnyAsync(x => x.ParentId == inDto.Id)) { @@ -308,6 +246,16 @@ namespace IRaCIS.Core.Application.Service } + + + + + #endregion + + + + #region 项目 医学审核问题 验证 确认 + /// /// 验证医学审核问题 /// @@ -316,7 +264,7 @@ namespace IRaCIS.Core.Application.Service /// public async Task VerifyReadingMedicineQuestion(ConfirmReadingMedicineQuestionInDto inDto) { - var readingMedicineQuestionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId&&x.TrialReadingCriterionId==inDto.TrialReadingCriterionId) + var readingMedicineQuestionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId) .Select(x => new TrialQuestion() { Id = x.Id, @@ -347,7 +295,7 @@ namespace IRaCIS.Core.Application.Service x.IsArbitrationReading, }).FirstNotNullAsync(); - + @@ -383,7 +331,7 @@ namespace IRaCIS.Core.Application.Service x.IsOncologyReading, x.IsArbitrationReading, }).FirstNotNullAsync(); - var readingMedicineQuestionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId&&x.TrialReadingCriterionId==inDto.TrialReadingCriterionId) + var readingMedicineQuestionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId) .Select(x => new TrialQuestion() { Id = x.Id, @@ -443,6 +391,82 @@ namespace IRaCIS.Core.Application.Service } + #endregion + + + + private void FindChildQuestion(GetMedicineQuestionPreviewOutDto trialReadingQuestion, List questionlists) + { + trialReadingQuestion.Childrens = questionlists.Where(x => x.ParentId == trialReadingQuestion.Id).ToList(); + if (trialReadingQuestion.Childrens != null && trialReadingQuestion.Childrens.Count != 0) + { + trialReadingQuestion.Childrens.ForEach(x => + { + this.FindChildQuestion(x, questionlists); + }); + } + } + + + /// + /// 从系统里面选择问题添加到项目里面 + /// + /// + /// + [HttpPost] + public async Task AddTrialDataFromSystem(AddTrialDataFromSystemInDto inDto) + { + // 直接写?? + var systemList = await _readingMedicineSystemQuestionRepository.Where(x => inDto.SystemQuestionIds.Contains(x.Id)).ToListAsync(); + + var maxOrder = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId).OrderByDescending(x => x.ShowOrder).Select(x => x.ShowOrder).FirstOrDefaultAsync(); + + + var needList= systemList.Select(x => new TrialDataFromSystem() + { + Id = NewId.NextGuid(), + ShowOrder = x.ShowOrder, + IsEnable = x.IsEnable, + IsRequired = x.IsRequired, + QuestionName = x.QuestionName, + TrialReadingCriterionId=inDto.TrialReadingCriterionId, + Type = x.Type, + ParentId=x.ParentId, + SystemQuestionId=x.Id, + ReadingCategory=x.ReadingCategory, + TypeValue = x.TypeValue, + TrialId=inDto.TrialId, + }).ToList(); + + needList.ForEach(x => { + maxOrder++; + x.ShowOrder = maxOrder; + }); + + foreach (var item in needList.Where(x => x.ParentId != null)) + { + var parent = needList.Where(x => x.SystemQuestionId == item.ParentId).FirstOrDefault(); + if (parent == null) + { + item.ParentId = null; + item.ParentTriggerValue = String.Empty; + } + else + { + item.ParentId = parent.Id; + } + } + + await _readingMedicineTrialQuestionRepository.AddRangeAsync(needList); + var result = await _readingMedicineTrialQuestionRepository.SaveChangesAsync(); + return ResponseOutput.Result(result); + } + + + + + + } diff --git a/IRaCIS.Core.Domain/Reading/MedicalAuditQuestion/ReadingMedicalReviewDialog.cs b/IRaCIS.Core.Domain/Reading/MedicalAudit/ReadingMedicalReviewDialog.cs similarity index 100% rename from IRaCIS.Core.Domain/Reading/MedicalAuditQuestion/ReadingMedicalReviewDialog.cs rename to IRaCIS.Core.Domain/Reading/MedicalAudit/ReadingMedicalReviewDialog.cs diff --git a/IRaCIS.Core.Domain/Reading/MedicalAuditQuestion/ReadingMedicineQuestionAnswer.cs b/IRaCIS.Core.Domain/Reading/MedicalAudit/ReadingMedicineQuestionAnswer.cs similarity index 100% rename from IRaCIS.Core.Domain/Reading/MedicalAuditQuestion/ReadingMedicineQuestionAnswer.cs rename to IRaCIS.Core.Domain/Reading/MedicalAudit/ReadingMedicineQuestionAnswer.cs diff --git a/IRaCIS.Core.Domain/Reading/MedicalAuditQuestion/ReadingMedicineSystemQuestion.cs b/IRaCIS.Core.Domain/Reading/MedicalAudit/ReadingMedicineSystemQuestion.cs similarity index 100% rename from IRaCIS.Core.Domain/Reading/MedicalAuditQuestion/ReadingMedicineSystemQuestion.cs rename to IRaCIS.Core.Domain/Reading/MedicalAudit/ReadingMedicineSystemQuestion.cs diff --git a/IRaCIS.Core.Domain/Reading/MedicalAuditQuestion/ReadingMedicineTrialQuestion.cs b/IRaCIS.Core.Domain/Reading/MedicalAudit/ReadingMedicineTrialQuestion.cs similarity index 100% rename from IRaCIS.Core.Domain/Reading/MedicalAuditQuestion/ReadingMedicineTrialQuestion.cs rename to IRaCIS.Core.Domain/Reading/MedicalAudit/ReadingMedicineTrialQuestion.cs