From 6ac8a8cb9556537d2d912d765a7a7553f7f1118f Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Sat, 22 Jun 2024 22:52:06 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PersonDiseaseRiskLevelDto.cs | 5 ++ .../RecommendMedicalPackageDto.cs | 10 ++- .../AppointPatientRegisterAppService.cs | 88 ++++++++++++++----- 3 files changed, 79 insertions(+), 24 deletions(-) diff --git a/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/PersonDiseaseRiskLevelDto.cs b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/PersonDiseaseRiskLevelDto.cs index f9f9c31..c6cf376 100644 --- a/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/PersonDiseaseRiskLevelDto.cs +++ b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/PersonDiseaseRiskLevelDto.cs @@ -4,6 +4,11 @@ using System.Text; namespace Shentun.WebPeis.AppointPatientRegisters { + public class PersonDiseaseRiskLeveWithForbidlCheckDto + { + public List DiseaseRiskLevelWithAsbitems { get; set; } = new List(); + public List ForbidlCheckAsbitems { get; set; } = new List(); + } public class PersonDiseaseRiskLevelDto { /// diff --git a/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackageDto.cs b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackageDto.cs index 709a2b5..d7c6c93 100644 --- a/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackageDto.cs +++ b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackageDto.cs @@ -37,7 +37,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters public int DisplayOrder { get; set; } /// - /// 套餐组合项目 + /// 套餐组合项目列表 /// public List Asbitems { get; set; } = new List(); @@ -45,6 +45,11 @@ namespace Shentun.WebPeis.AppointPatientRegisters /// 风险级别推荐组合项目 /// public List DiseaseRiskLevelAsbitems { get; set; } = new List(); + /// + /// 禁止检查组合项目列表 + /// + + public List ForbidlCheckAsbitems { get; set; } = new List(); } @@ -84,6 +89,9 @@ namespace Shentun.WebPeis.AppointPatientRegisters /// 是否属于套餐 /// public char IsBelongMedicalPackage { get; set; } + //备孕、怀孕标志 + + public char ForPregnantFlag { get; set; } /// /// 显示顺序 diff --git a/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs b/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs index 7c0979f..1b3ddcb 100644 --- a/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs +++ b/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs @@ -19,6 +19,7 @@ using System.Text; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Application.Services; +using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories; using Volo.Abp.Identity; using Volo.Abp.Uow; @@ -715,8 +716,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters //----推荐组合项目 - - var personDiseaseRiskLevelDtos = await GetDiseaseRiskListByPersonIdAsync(input.PersonId); + var personDiseaseRiskLeveWithForbidlCheckDto = await GetDiseaseRiskListByPersonIdAsync(input.PersonId, input.RecommendId); + var personDiseaseRiskLevelDtos = personDiseaseRiskLeveWithForbidlCheckDto.DiseaseRiskLevelWithAsbitems; //去掉基本套餐中已经包含的组合项目 foreach (var personDiseaseRiskLevelDto in personDiseaseRiskLevelDtos) { @@ -753,6 +754,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters } recommendMedicalPackageDto.DiseaseRiskLevelAsbitems = personDiseaseRiskLevelResultDtos; + recommendMedicalPackageDto.ForbidlCheckAsbitems = personDiseaseRiskLeveWithForbidlCheckDto.ForbidlCheckAsbitems; return recommendMedicalPackageDto; } @@ -845,8 +847,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters } //----推荐组合项目 - - var personDiseaseRiskLevelDtos = await GetDiseaseRiskListByPersonIdAsync(input.PersonId, input.RecommendId); + var personDiseaseRiskLeveWithForbidlCheckDto = await GetDiseaseRiskListByPersonIdAsync(input.PersonId, input.RecommendId); + var personDiseaseRiskLevelDtos = personDiseaseRiskLeveWithForbidlCheckDto.DiseaseRiskLevelWithAsbitems; //var pregnancyAsbitems = await _asbitemRepository.GetListAsync(o => //o.ForPregnantFlag == ForPregnantFlag.PreparePregnancy || o.ForPregnantFlag == ForPregnantFlag.Pregnancy); //去掉基本套餐已经包含的组合项目和和怀孕禁止检查的项目 @@ -886,6 +888,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters } recommendMedicalPackageDto.DiseaseRiskLevelAsbitems = personDiseaseRiskLevelResultDtos; + recommendMedicalPackageDto.ForbidlCheckAsbitems = personDiseaseRiskLeveWithForbidlCheckDto.ForbidlCheckAsbitems; return recommendMedicalPackageDto; } @@ -927,7 +930,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters /// /// /// - private async Task> GetDiseaseRiskListByPersonIdAsync(Guid personId, int recommendId = 1) + private async Task GetDiseaseRiskListByPersonIdAsync(Guid personId, int recommendId ) { var questionRegister = (await _questionRegisterRepository.GetQueryableAsync()) .Where(o => o.PersonId == personId) @@ -967,7 +970,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters asbitem, }).ToList(); - + //获取所有疾病风险基础字典 var diseaseRisks = (from diseaseRisk in await _diseaseRiskRepository.GetQueryableAsync() join diseaseRiskLevel in await _diseaseRiskLevelRepository.GetQueryableAsync() @@ -1007,6 +1010,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters Price = o.asbitem.Price, ClinicalMeaning = o.asbitem.ClinicalMeaning, Warn = o.asbitem.Warn, + ForPregnantFlag = o.asbitem.ForPregnantFlag, DisplayOrder = o.asbitem.DisplayOrder, AsbitemRecommendLevelId = o.questionAnswerAsbitem.AsbitemRecommendLevelId } @@ -1058,21 +1062,22 @@ namespace Shentun.WebPeis.AppointPatientRegisters } overweightQuestionAnswer = await _questionAnswerRepository.GetAsync(o => o.QuestionAnswerId == questionAnswerOverweightCode); - var questionAnswerAsbitems = (from questionAnswerAsbitem in await _questionAnswerAsbitemRepository.GetQueryableAsync() - join asbitem in await _asbitemRepository.GetQueryableAsync() - on questionAnswerAsbitem.AsbitemId equals asbitem.AsbitemId - where questionAnswerAsbitem.QuestionAnswerId == overweightQuestionAnswer.QuestionAnswerId - select new RecommendMedicalPackageAsbitem() - { - AsbitemId = asbitem.AsbitemId, - AsbitemName = asbitem.AsbitemName, - ShortName = asbitem.ShortName, - Price = asbitem.Price, - ClinicalMeaning = asbitem.ClinicalMeaning, - Warn = asbitem.Warn, - DisplayOrder = asbitem.DisplayOrder, - AsbitemRecommendLevelId = questionAnswerAsbitem.AsbitemRecommendLevelId - }).ToList(); + var questionAnswerAsbitems = (from questionAnswerAsbitem in await _questionAnswerAsbitemRepository.GetQueryableAsync() + join asbitem in await _asbitemRepository.GetQueryableAsync() + on questionAnswerAsbitem.AsbitemId equals asbitem.AsbitemId + where questionAnswerAsbitem.QuestionAnswerId == overweightQuestionAnswer.QuestionAnswerId + select new RecommendMedicalPackageAsbitem() + { + AsbitemId = asbitem.AsbitemId, + AsbitemName = asbitem.AsbitemName, + ShortName = asbitem.ShortName, + Price = asbitem.Price, + ClinicalMeaning = asbitem.ClinicalMeaning, + Warn = asbitem.Warn, + ForPregnantFlag = asbitem.ForPregnantFlag, + DisplayOrder = asbitem.DisplayOrder, + AsbitemRecommendLevelId = questionAnswerAsbitem.AsbitemRecommendLevelId + }).ToList(); var personDiseaseRiskLevelDto = new PersonDiseaseRiskLevelDto() { @@ -1087,6 +1092,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters personDiseaseRiskLevels.Add(personDiseaseRiskLevelDto); } + //合并同一个疾病风险中的不同组合项目,将低级别风险中的组合项目合并到高风险级别中 personDiseaseRiskLevels = personDiseaseRiskLevels.OrderBy(o => o.DisplayOrder).ThenByDescending(o => o.DiseaseRiskLevelDisplayOrder).ToList(); for (var i = 0; i < personDiseaseRiskLevels.Count; i++) @@ -1126,8 +1132,43 @@ namespace Shentun.WebPeis.AppointPatientRegisters } } + //var newPersonDiseaseRiskLevelDtos = new List(); + //去掉备孕、怀孕禁检组合项目 + var personDiseaseRiskLeveWithForbidlCheckDto = new PersonDiseaseRiskLeveWithForbidlCheckDto(); + var person = await _personRepository.GetAsync(o => o.PersonId == personId); + foreach (var personDiseaseRiskLevel in personDiseaseRiskLevels) + { + for (var i = 0; i < personDiseaseRiskLevel.Asbitems.Count; i++) + { + if (person.PregnantFlag == PregnantFlag.PreparePregnancy && personDiseaseRiskLevel.Asbitems[i].ForPregnantFlag == ForPregnantFlag.PreparePregnancy) + { + personDiseaseRiskLevel.Asbitems.Remove(personDiseaseRiskLevel.Asbitems[i]); + personDiseaseRiskLeveWithForbidlCheckDto.ForbidlCheckAsbitems.Add(personDiseaseRiskLevel.Asbitems[i]); + i--; + continue; + } + + if (person.PregnantFlag == PregnantFlag.Pregnancy && + (personDiseaseRiskLevel.Asbitems[i].ForPregnantFlag == ForPregnantFlag.PreparePregnancy || personDiseaseRiskLevel.Asbitems[i].ForPregnantFlag == ForPregnantFlag.Pregnancy)) + { + personDiseaseRiskLevel.Asbitems.Remove(personDiseaseRiskLevel.Asbitems[i]); + personDiseaseRiskLeveWithForbidlCheckDto.ForbidlCheckAsbitems.Add(personDiseaseRiskLevel.Asbitems[i]); + i--; + continue; + } + } + } + + //删除没有组合项目的疾病风险 + for (var i = 0; i < personDiseaseRiskLevels.Count; i++) + { + if (!personDiseaseRiskLevels[i].Asbitems.Any()) + { + personDiseaseRiskLevels.Remove(personDiseaseRiskLevels[i]); + i--; + } + } //获取有共同组合项目的风险级别 - var newPersonDiseaseRiskLevelDtos = new List(); foreach (var personDiseaseRiskLevel in personDiseaseRiskLevels) { @@ -1148,7 +1189,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters } } } - return personDiseaseRiskLevels; + personDiseaseRiskLeveWithForbidlCheckDto.DiseaseRiskLevelWithAsbitems = personDiseaseRiskLevels; + return personDiseaseRiskLeveWithForbidlCheckDto; /* var questionRegisterDiseaseRiskDtos = diseaseRisks.GroupBy(o => o.diseaseRisk)