| 
					
					
						
							
						
					
					
				 | 
				@ -8,16 +8,19 @@ using Shentun.WebPeis.Models; | 
			
		
		
	
		
			
				 | 
				 | 
				using Shentun.WebPeis.OrganizationUnits; | 
				 | 
				 | 
				using Shentun.WebPeis.OrganizationUnits; | 
			
		
		
	
		
			
				 | 
				 | 
				using Shentun.WebPeis.PatientRegisters; | 
				 | 
				 | 
				using Shentun.WebPeis.PatientRegisters; | 
			
		
		
	
		
			
				 | 
				 | 
				using Shentun.WebPeis.Persons; | 
				 | 
				 | 
				using Shentun.WebPeis.Persons; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				using Shentun.WebPeis.QuestionRegisters; | 
			
		
		
	
		
			
				 | 
				 | 
				using System; | 
				 | 
				 | 
				using System; | 
			
		
		
	
		
			
				 | 
				 | 
				using System.Collections; | 
				 | 
				 | 
				using System.Collections; | 
			
		
		
	
		
			
				 | 
				 | 
				using System.Collections.Generic; | 
				 | 
				 | 
				using System.Collections.Generic; | 
			
		
		
	
		
			
				 | 
				 | 
				using System.Linq; | 
				 | 
				 | 
				using System.Linq; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				using System.Security.Cryptography.X509Certificates; | 
			
		
		
	
		
			
				 | 
				 | 
				using System.Text; | 
				 | 
				 | 
				using System.Text; | 
			
		
		
	
		
			
				 | 
				 | 
				using System.Threading.Tasks; | 
				 | 
				 | 
				using System.Threading.Tasks; | 
			
		
		
	
		
			
				 | 
				 | 
				using Volo.Abp; | 
				 | 
				 | 
				using Volo.Abp; | 
			
		
		
	
		
			
				 | 
				 | 
				using Volo.Abp.Application.Services; | 
				 | 
				 | 
				using Volo.Abp.Application.Services; | 
			
		
		
	
		
			
				 | 
				 | 
				using Volo.Abp.Domain.Repositories; | 
				 | 
				 | 
				using Volo.Abp.Domain.Repositories; | 
			
		
		
	
		
			
				 | 
				 | 
				using Volo.Abp.Identity; | 
				 | 
				 | 
				using Volo.Abp.Identity; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				using Volo.Abp.Uow; | 
			
		
		
	
		
			
				 | 
				 | 
				using static Volo.Abp.Identity.Settings.IdentitySettingNames; | 
				 | 
				 | 
				using static Volo.Abp.Identity.Settings.IdentitySettingNames; | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				namespace Shentun.WebPeis.AppointPatientRegisters | 
				 | 
				 | 
				namespace Shentun.WebPeis.AppointPatientRegisters | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -48,6 +51,17 @@ namespace Shentun.WebPeis.AppointPatientRegisters | 
			
		
		
	
		
			
				 | 
				 | 
				        private readonly IRepository<Patient> _patientRepository; | 
				 | 
				 | 
				        private readonly IRepository<Patient> _patientRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				        private readonly IRepository<RegisterCheck> _registerCheckRepository; | 
				 | 
				 | 
				        private readonly IRepository<RegisterCheck> _registerCheckRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				        private readonly IRepository<RegisterCheckAsbitem> _registerCheckAsbitemRepository; | 
				 | 
				 | 
				        private readonly IRepository<RegisterCheckAsbitem> _registerCheckAsbitemRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        private readonly IRepository<QuestionRegister> _questionRegisterRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        private readonly IRepository<QuestionRegisterItem> _questionRegisterItemRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        private readonly IRepository<QuestionRegisterAnswer> _questionRegisterAnswerRrepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        private readonly IRepository<Question> _questionRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        private readonly IRepository<QuestionAnswer> _questionAnswerRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        private readonly IRepository<QuestionSubjectType> _questionSubjectTypeRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        private readonly IRepository<DiseaseRisk> _diseaseRiskRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        private readonly IRepository<DiseaseRiskLevel> _diseaseRiskLevelRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        private readonly IRepository<DiseaseRiskLevelAnswer> _diseaseRiskLevelAnswerRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        private readonly IRepository<DiseaseRiskLevelAsbitem> _diseaseRiskLevelAsbitemRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				        public AppointPatientRegisterAppService(IRepository<AppointPatientRegister> repository, | 
				 | 
				 | 
				        public AppointPatientRegisterAppService(IRepository<AppointPatientRegister> repository, | 
			
		
		
	
		
			
				 | 
				 | 
				             CacheService cacheService, | 
				 | 
				 | 
				             CacheService cacheService, | 
			
		
		
	
		
			
				 | 
				 | 
				             IRepository<ItemType> itemTypeRepository, | 
				 | 
				 | 
				             IRepository<ItemType> itemTypeRepository, | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -66,7 +80,19 @@ namespace Shentun.WebPeis.AppointPatientRegisters | 
			
		
		
	
		
			
				 | 
				 | 
				             IRepository<PatientRegister> patientRegisterRepository, | 
				 | 
				 | 
				             IRepository<PatientRegister> patientRegisterRepository, | 
			
		
		
	
		
			
				 | 
				 | 
				             IRepository<Patient> patientRepository, | 
				 | 
				 | 
				             IRepository<Patient> patientRepository, | 
			
		
		
	
		
			
				 | 
				 | 
				             IRepository<RegisterCheck> registerCheckRepository, | 
				 | 
				 | 
				             IRepository<RegisterCheck> registerCheckRepository, | 
			
		
		
	
		
			
				 | 
				 | 
				             IRepository<RegisterCheckAsbitem> registerCheckAsbitemRepository | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				             IRepository<RegisterCheckAsbitem> registerCheckAsbitemRepository, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				             IRepository<QuestionRegister> questionRegisterRepository, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            IRepository<QuestionRegisterItem> questionRegisterItemRepository, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            IRepository<QuestionRegisterAnswer> questionRegisterAnswerRrepository, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            IRepository<Question> questionRepository, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            IRepository<QuestionAnswer> questionAnswerRepository, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            IRepository<QuestionSubjectType> questionSubjectTypeRepository, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            IRepository<DiseaseRisk> diseaseRiskRepository, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            IRepository<DiseaseRiskLevel> diseaseRiskLevelRepository, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            IRepository<DiseaseRiskLevelAnswer> diseaseRiskLevelAnswerRepository, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            IRepository<DiseaseRiskLevelAsbitem> diseaseRiskLevelAsbitemRepository | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				           ) | 
				 | 
				 | 
				           ) | 
			
		
		
	
		
			
				 | 
				 | 
				        { | 
				 | 
				 | 
				        { | 
			
		
		
	
		
			
				 | 
				 | 
				            _repository = repository; | 
				 | 
				 | 
				            _repository = repository; | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -89,6 +115,18 @@ namespace Shentun.WebPeis.AppointPatientRegisters | 
			
		
		
	
		
			
				 | 
				 | 
				            _registerCheckAsbitemRepository = registerCheckAsbitemRepository; | 
				 | 
				 | 
				            _registerCheckAsbitemRepository = registerCheckAsbitemRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				            _registerCheckRepository = registerCheckRepository; | 
				 | 
				 | 
				            _registerCheckRepository = registerCheckRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            _questionRegisterRepository = questionRegisterRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            _questionRegisterItemRepository = questionRegisterItemRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            _questionRegisterAnswerRrepository = questionRegisterAnswerRrepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            _questionRepository = questionRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            _questionAnswerRepository = questionAnswerRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            _questionSubjectTypeRepository = questionSubjectTypeRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            _diseaseRiskRepository = diseaseRiskRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            _diseaseRiskLevelRepository = diseaseRiskLevelRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            _diseaseRiskLevelAnswerRepository = diseaseRiskLevelAnswerRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            _diseaseRiskLevelAsbitemRepository = diseaseRiskLevelAsbitemRepository; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				        } | 
				 | 
				 | 
				        } | 
			
		
		
	
		
			
				 | 
				 | 
				        /// <summary>
 | 
				 | 
				 | 
				        /// <summary>
 | 
			
		
		
	
		
			
				 | 
				 | 
				        /// 创建预约,小程序使用
 | 
				 | 
				 | 
				        /// 创建预约,小程序使用
 | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -226,7 +264,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters | 
			
		
		
	
		
			
				 | 
				 | 
				                query = query.Where(o => o.user.PhoneNumber == input.MobilePhone); | 
				 | 
				 | 
				                query = query.Where(o => o.user.PhoneNumber == input.MobilePhone); | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            if(input.CompleteFlag != null) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            if (input.CompleteFlag != null) | 
			
		
		
	
		
			
				 | 
				 | 
				            { | 
				 | 
				 | 
				            { | 
			
		
		
	
		
			
				 | 
				 | 
				                query = query.Where(o => o.appointPatientRegister.CompleteFlag == input.CompleteFlag); | 
				 | 
				 | 
				                query = query.Where(o => o.appointPatientRegister.CompleteFlag == input.CompleteFlag); | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -280,7 +318,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters | 
			
		
		
	
		
			
				 | 
				 | 
				        { | 
				 | 
				 | 
				        { | 
			
		
		
	
		
			
				 | 
				 | 
				            if (input == null) throw new UserFriendlyException("参数不能为空"); | 
				 | 
				 | 
				            if (input == null) throw new UserFriendlyException("参数不能为空"); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            var query = (from user in await _identityUserRepository.GetQueryableAsync() | 
				 | 
				 | 
				            var query = (from user in await _identityUserRepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				                         join person in await _personRepository.GetQueryableAsync() | 
				 | 
				 | 
				                         join person in await _personRepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				                         on user.Id equals person.PersonId | 
				 | 
				 | 
				                         on user.Id equals person.PersonId | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -298,7 +336,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters | 
			
		
		
	
		
			
				 | 
				 | 
				                         on appointRegisterAsbitem.AsbitemId equals asbitem.AsbitemId | 
				 | 
				 | 
				                         on appointRegisterAsbitem.AsbitemId equals asbitem.AsbitemId | 
			
		
		
	
		
			
				 | 
				 | 
				                         join customerOrg in await _customerOrgRepository.GetQueryableAsync() | 
				 | 
				 | 
				                         join customerOrg in await _customerOrgRepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				                         on appointPatientRegister.CustomerOrgId equals customerOrg.CustomerOrgId | 
				 | 
				 | 
				                         on appointPatientRegister.CustomerOrgId equals customerOrg.CustomerOrgId | 
			
		
		
	
		
			
				 | 
				 | 
				                         where appointPatientRegister.PersonId == input.PersonId &&  | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                         where appointPatientRegister.PersonId == input.PersonId && | 
			
		
		
	
		
			
				 | 
				 | 
				                               appointPatientRegister.CompleteFlag != AppointPatientRegisterCompleteFlag.CancelAppoint | 
				 | 
				 | 
				                               appointPatientRegister.CompleteFlag != AppointPatientRegisterCompleteFlag.CancelAppoint | 
			
		
		
	
		
			
				 | 
				 | 
				                         orderby appointPatientRegister.AppointDate | 
				 | 
				 | 
				                         orderby appointPatientRegister.AppointDate | 
			
		
		
	
		
			
				 | 
				 | 
				                         select new | 
				 | 
				 | 
				                         select new | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -335,7 +373,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters | 
			
		
		
	
		
			
				 | 
				 | 
				                      MedicalPackageName = o.FirstOrDefault().haveMedicalPackage == null ? "" : o.FirstOrDefault().haveMedicalPackage.MedicalPackageName, | 
				 | 
				 | 
				                      MedicalPackageName = o.FirstOrDefault().haveMedicalPackage == null ? "" : o.FirstOrDefault().haveMedicalPackage.MedicalPackageName, | 
			
		
		
	
		
			
				 | 
				 | 
				                      MedicalCenterId = o.FirstOrDefault().appointPatientRegister.MedicalCenterId, | 
				 | 
				 | 
				                      MedicalCenterId = o.FirstOrDefault().appointPatientRegister.MedicalCenterId, | 
			
		
		
	
		
			
				 | 
				 | 
				                      CompleteFlag = o.FirstOrDefault().appointPatientRegister.CompleteFlag, | 
				 | 
				 | 
				                      CompleteFlag = o.FirstOrDefault().appointPatientRegister.CompleteFlag, | 
			
		
		
	
		
			
				 | 
				 | 
				                       | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                      AppointDate = o.FirstOrDefault().appointPatientRegister.AppointDate, | 
				 | 
				 | 
				                      AppointDate = o.FirstOrDefault().appointPatientRegister.AppointDate, | 
			
		
		
	
		
			
				 | 
				 | 
				                      Remark = o.FirstOrDefault().appointPatientRegister.Remark, | 
				 | 
				 | 
				                      Remark = o.FirstOrDefault().appointPatientRegister.Remark, | 
			
		
		
	
		
			
				 | 
				 | 
				                      PregnantFlag = o.FirstOrDefault().appointPatientRegister.PregnantFlag, | 
				 | 
				 | 
				                      PregnantFlag = o.FirstOrDefault().appointPatientRegister.PregnantFlag, | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -344,7 +382,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters | 
			
		
		
	
		
			
				 | 
				 | 
				                      SexName = _cacheService.GetSexNameAsync(o.FirstOrDefault().person.SexId).Result, | 
				 | 
				 | 
				                      SexName = _cacheService.GetSexNameAsync(o.FirstOrDefault().person.SexId).Result, | 
			
		
		
	
		
			
				 | 
				 | 
				                      MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(o.FirstOrDefault().person.MaritalStatusId).Result, | 
				 | 
				 | 
				                      MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(o.FirstOrDefault().person.MaritalStatusId).Result, | 
			
		
		
	
		
			
				 | 
				 | 
				                      CustomerOrgName = _customerOrgManager.GetTopCustomerOrgAsync(o.FirstOrDefault().appointPatientRegister.CustomerOrgId).Result.CustomerOrgName | 
				 | 
				 | 
				                      CustomerOrgName = _customerOrgManager.GetTopCustomerOrgAsync(o.FirstOrDefault().appointPatientRegister.CustomerOrgId).Result.CustomerOrgName | 
			
		
		
	
		
			
				 | 
				 | 
				                       | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				                  }).ToList(); | 
				 | 
				 | 
				                  }).ToList(); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -360,8 +398,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters | 
			
		
		
	
		
			
				 | 
				 | 
				        [HttpPost("api/app/AppointPatientRegister/CancelAppoint")] | 
				 | 
				 | 
				        [HttpPost("api/app/AppointPatientRegister/CancelAppoint")] | 
			
		
		
	
		
			
				 | 
				 | 
				        public async Task CancelAppointAsync(AppointPatientRegisterIdInputDto input) | 
				 | 
				 | 
				        public async Task CancelAppointAsync(AppointPatientRegisterIdInputDto input) | 
			
		
		
	
		
			
				 | 
				 | 
				        { | 
				 | 
				 | 
				        { | 
			
		
		
	
		
			
				 | 
				 | 
				           var appointPatientRegister = await _repository.GetAsync(o => o.AppointPatientRegisterId == input.AppointPatientRegisterId); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				           if(appointPatientRegister.IsCharge == 'Y') | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            var appointPatientRegister = await _repository.GetAsync(o => o.AppointPatientRegisterId == input.AppointPatientRegisterId); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            if (appointPatientRegister.IsCharge == 'Y') | 
			
		
		
	
		
			
				 | 
				 | 
				            { | 
				 | 
				 | 
				            { | 
			
		
		
	
		
			
				 | 
				 | 
				                throw new UserFriendlyException("已收费不能取消"); | 
				 | 
				 | 
				                throw new UserFriendlyException("已收费不能取消"); | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -453,7 +491,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters | 
			
		
		
	
		
			
				 | 
				 | 
				        [HttpPost("api/app/AppointPatientRegister/GetCustomerOrgAppointPatientRegisterByPersonId")] | 
				 | 
				 | 
				        [HttpPost("api/app/AppointPatientRegister/GetCustomerOrgAppointPatientRegisterByPersonId")] | 
			
		
		
	
		
			
				 | 
				 | 
				        public async Task<PatientRegisterDto> GetCustomerOrgAppointPatientRegisterByPersonIdAsync(PersonIdInputDto input) | 
				 | 
				 | 
				        public async Task<PatientRegisterDto> GetCustomerOrgAppointPatientRegisterByPersonIdAsync(PersonIdInputDto input) | 
			
		
		
	
		
			
				 | 
				 | 
				        { | 
				 | 
				 | 
				        { | 
			
		
		
	
		
			
				 | 
				 | 
				           | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				            var patientRegisterDto = (from user in await _identityUserRepository.GetQueryableAsync() | 
				 | 
				 | 
				            var patientRegisterDto = (from user in await _identityUserRepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				                                      join person in await _personRepository.GetQueryableAsync() | 
				 | 
				 | 
				                                      join person in await _personRepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				                                      on user.Id equals person.PersonId | 
				 | 
				 | 
				                                      on user.Id equals person.PersonId | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -478,8 +516,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters | 
			
		
		
	
		
			
				 | 
				 | 
				                                          ChildCustomerOrgName = customerOrg.CustomerOrgName, | 
				 | 
				 | 
				                                          ChildCustomerOrgName = customerOrg.CustomerOrgName, | 
			
		
		
	
		
			
				 | 
				 | 
				                                          CustomerOrgRegisterId = patientRegister.CustomerOrgRegisterId, | 
				 | 
				 | 
				                                          CustomerOrgRegisterId = patientRegister.CustomerOrgRegisterId, | 
			
		
		
	
		
			
				 | 
				 | 
				                                          CustomerOrgGroupId = patientRegister.CustomerOrgGroupId, | 
				 | 
				 | 
				                                          CustomerOrgGroupId = patientRegister.CustomerOrgGroupId, | 
			
		
		
	
		
			
				 | 
				 | 
				                                          CustomerOrgGroupName = haveCustomerOrgGroup == null?"": haveCustomerOrgGroup.CustomerOrgGroupName, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				                                          Price = haveCustomerOrgGroup == null ? 0:haveCustomerOrgGroup.Price, | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                          CustomerOrgGroupName = haveCustomerOrgGroup == null ? "" : haveCustomerOrgGroup.CustomerOrgGroupName, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                          Price = haveCustomerOrgGroup == null ? 0 : haveCustomerOrgGroup.Price, | 
			
		
		
	
		
			
				 | 
				 | 
				                                          CanAddMoney = haveCustomerOrgGroup == null ? 0 : haveCustomerOrgGroup.CanAddMoney, | 
				 | 
				 | 
				                                          CanAddMoney = haveCustomerOrgGroup == null ? 0 : haveCustomerOrgGroup.CanAddMoney, | 
			
		
		
	
		
			
				 | 
				 | 
				                                      }).FirstOrDefault(); | 
				 | 
				 | 
				                                      }).FirstOrDefault(); | 
			
		
		
	
		
			
				 | 
				 | 
				            if (patientRegisterDto == null) | 
				 | 
				 | 
				            if (patientRegisterDto == null) | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -493,7 +531,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters | 
			
		
		
	
		
			
				 | 
				 | 
				            var appointPatientRegisters = await _repository.GetListAsync(o => o.PersonId == input.PersonId && | 
				 | 
				 | 
				            var appointPatientRegisters = await _repository.GetListAsync(o => o.PersonId == input.PersonId && | 
			
		
		
	
		
			
				 | 
				 | 
				            o.AppointDate >= DateTime.Now.Date && o.CustomerOrgRegisterId == patientRegisterDto.CustomerOrgRegisterId | 
				 | 
				 | 
				            o.AppointDate >= DateTime.Now.Date && o.CustomerOrgRegisterId == patientRegisterDto.CustomerOrgRegisterId | 
			
		
		
	
		
			
				 | 
				 | 
				            && o.CompleteFlag != AppointPatientRegisterCompleteFlag.CancelAppoint); | 
				 | 
				 | 
				            && o.CompleteFlag != AppointPatientRegisterCompleteFlag.CancelAppoint); | 
			
		
		
	
		
			
				 | 
				 | 
				            if (appointPatientRegisters .Any()) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            if (appointPatientRegisters.Any()) | 
			
		
		
	
		
			
				 | 
				 | 
				            { | 
				 | 
				 | 
				            { | 
			
		
		
	
		
			
				 | 
				 | 
				                throw new UserFriendlyException("已有今天及之后的团检预约订单,必须先取消订单才能重新预约"); | 
				 | 
				 | 
				                throw new UserFriendlyException("已有今天及之后的团检预约订单,必须先取消订单才能重新预约"); | 
			
		
		
	
		
			
				 | 
				 | 
				            } | 
				 | 
				 | 
				            } | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -568,7 +606,277 @@ namespace Shentun.WebPeis.AppointPatientRegisters | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				        } | 
				 | 
				 | 
				        } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        /// <summary>
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        /// 获取推荐个人套餐按优先级
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        /// </summary>
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        /// <param name="input"></param>
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        /// <returns></returns>
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        [HttpPost("api/app/AppointPatientRegister/GetRecommendMedicalPackageByPersonAndRecommendId")] | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        public async Task<RecommendMedicalPackageDto> GetRecommendMedicalPackageByPersonAndRecommendIdAsync(RecommendMedicalPackagePersonAndRecommendIdInputDto input) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            var person = await _personRepository.GetAsync(o => o.PersonId == input.PersonId); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            var medicalPackages = await _medicalPackageRepository.GetListAsync(o => o.IsActive == 'Y' && | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                  o.IsWebAppoint == 'Y' && o.IsBasicRecommend == 'Y' && | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                  (o.ForSexId == ForSexFlag.All || o.ForSexId == person.SexId)); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            if (person.MaritalStatusId == MaritalStatusFlag.UnMarried) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                //未婚
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                if (medicalPackages.Where(o => o.MaritalStatusId == MaritalStatusFlag.Married).Any()) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    medicalPackages = medicalPackages.Where(o => | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                     o.MaritalStatusId == MaritalStatusFlag.UnMarried).ToList(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                else | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    medicalPackages = medicalPackages.Where(o => o.MaritalStatusId == MaritalStatusFlag.All).ToList(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            else if (person.MaritalStatusId != MaritalStatusFlag.UnKnown) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                //已婚
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                if (medicalPackages.Where(o => o.MaritalStatusId == MaritalStatusFlag.Married).Any()) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    medicalPackages = medicalPackages.Where(o => o.MaritalStatusId == MaritalStatusFlag.Married).ToList(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                else | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    medicalPackages = medicalPackages.Where(o => o.MaritalStatusId == MaritalStatusFlag.All).ToList(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            var medicalPackage = medicalPackages.FirstOrDefault(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            if (medicalPackage == null) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                return null; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            var recommendMedicalPackageDto = new RecommendMedicalPackageDto() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                MedicalPackageId = medicalPackage.MedicalPackageId, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                MedicalPackageName = medicalPackage.MedicalPackageName, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                DisplayOrder = medicalPackage.DisplayOrder | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            }; | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            var medicalPackageAsbitems = (from medicalPackageDetail in await _medicalPackageDetailRepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                          join asbitem in await _asbitemRepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                          on medicalPackageDetail.AsbitemId equals asbitem.AsbitemId | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                          where medicalPackageDetail.MedicalPackageId == medicalPackage.MedicalPackageId | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                          select new RecommendMedicalPackageAsbitem() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                          { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                              AsbitemId = medicalPackageDetail.AsbitemId, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                              AsbitemName = asbitem.AsbitemName, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                              ShortName = asbitem.ShortName, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                              Price = asbitem.Price, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                              ClinicalMeaning = asbitem.ClinicalMeaning, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                              Warn = asbitem.Warn, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                              IsBelongMedicalPackage = 'Y', | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                              DisplayOrder = asbitem.DisplayOrder | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                          }).ToList(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            recommendMedicalPackageDto.Asbitems.AddRange(medicalPackageAsbitems); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            var questionRegister = (await _repository.GetQueryableAsync()) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				             .Where(o => o.PersonId == input.PersonId) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				             .OrderByDescending(o => o.CreationTime) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				             .FirstOrDefault(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            if (questionRegister == null) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                return recommendMedicalPackageDto; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            //----推荐组合项目
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            var personDiseaseRiskLevelDtos = await GetDiseaseRiskListByPersonIdAsync(input.PersonId); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            foreach (var personDiseaseRiskLevelDto in personDiseaseRiskLevelDtos) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                foreach (var personDiseaseRiskLevelAsbitem in personDiseaseRiskLevelDto.Asbitems) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    if (medicalPackageAsbitems.Where(o => o.AsbitemId == personDiseaseRiskLevelAsbitem.AsbitemId).Any()) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        personDiseaseRiskLevelAsbitem.IsBelongMedicalPackage = 'Y'; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            var personDiseaseRiskLevelResultDtos = new List<PersonDiseaseRiskLevelDto>(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            foreach (var personDiseaseRiskLevelDto in personDiseaseRiskLevelDtos) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                var personDiseaseRiskLevelResultDto = new PersonDiseaseRiskLevelDto() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    DiseaseRiskId = personDiseaseRiskLevelDto.DiseaseRiskId, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    DiseaseRiskName = personDiseaseRiskLevelDto.DiseaseRiskName, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    DisplayOrder = personDiseaseRiskLevelDto.DisplayOrder, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    DiseaseRiskLevelId = personDiseaseRiskLevelDto.DiseaseRiskLevelId, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    DiseaseRiskLevelName = personDiseaseRiskLevelDto.DiseaseRiskLevelName | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                }; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                personDiseaseRiskLevelResultDtos.Add(personDiseaseRiskLevelResultDto); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            //一级推荐组合项目
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            foreach (var personDiseaseRiskLevelResultDto in personDiseaseRiskLevelResultDtos) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                var personDiseaseRiskLevelDto = personDiseaseRiskLevelDtos.Where(o => | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                o.DiseaseRiskLevelId == personDiseaseRiskLevelResultDto.DiseaseRiskLevelId | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                   ).First(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                var asbitems = personDiseaseRiskLevelDto.Asbitems.Where(o => o.AsbitemRecommendLevelId == input.RecommendId | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                || o.IsBelongMedicalPackage == 'Y') | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                     .ToList(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                personDiseaseRiskLevelResultDto.Asbitems.AddRange(asbitems); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            recommendMedicalPackageDto.DiseaseRiskLevelAsbitems.AddRange(personDiseaseRiskLevelResultDtos); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            return recommendMedicalPackageDto; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        /// <summary>
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        /// 获取推荐个人套餐列表
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        /// </summary>
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        /// <param name="input"></param>
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        /// <returns></returns>
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        [HttpPost("api/app/AppointPatientRegister/GetRecommendMedicalPackageListByPersonId")] | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        public async Task<List<RecommendMedicalPackageDto>> GetRecommendMedicalPackageListByPersonIdAsync(PersonIdInputDto input) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            var recommendMedicalPackageDtos = new List<RecommendMedicalPackageDto>(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            for (var i = 0; i < 3; i++) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                var recommendMedicalPackageDto = await GetRecommendMedicalPackageByPersonAndRecommendIdAsync(new RecommendMedicalPackagePersonAndRecommendIdInputDto() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    PersonId = input.PersonId, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    RecommendId = i + 1 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                }); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                if(i == 0) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    recommendMedicalPackageDto.MedicalPackageName = "推荐必查方案"; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                else if(i == 1) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    recommendMedicalPackageDto.MedicalPackageName = "精准筛查方案"; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                else if(i == 2) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    recommendMedicalPackageDto.MedicalPackageName = "深入检查方案"; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                recommendMedicalPackageDtos.Add(recommendMedicalPackageDto); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            return recommendMedicalPackageDtos; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        /// <summary>
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        /// 获取疾病风险和对应的组合项目列表
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        /// </summary>
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        /// <param name="input"></param>
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        /// <returns></returns>
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        private async Task<List<PersonDiseaseRiskLevelDto>> GetDiseaseRiskListByPersonIdAsync(Guid personId) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            var questionRegister = (await _questionRegisterRepository.GetQueryableAsync()) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				               .Where(o => o.PersonId == personId) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				               .OrderByDescending(o => o.CreationTime) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				               .FirstOrDefault(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            if (questionRegister == null) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                return null; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            var questionRegisterItems = (from questionRegisterItem in await _questionRegisterItemRepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                         join questionRegisterAnswer in await _questionRegisterAnswerRrepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                         on questionRegisterItem.QuestionRegisterItemId equals questionRegisterAnswer.QuestionRegisterItemId | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                         join questionAnswer in await _questionAnswerRepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                         on questionRegisterAnswer.QuestionAnswerId equals questionAnswer.QuestionAnswerId | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                         join question in await _questionRepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                         on questionRegisterItem.QuestionId equals question.QuestionId | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                         join questionSubjectType in await _questionSubjectTypeRepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                         on question.QuestionSubjectTypeId equals questionSubjectType.QuestionSubjectTypeId | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                         where questionRegisterItem.QuestionRegisterId == questionRegister.QuestionRegisterId | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                         orderby questionSubjectType.DisplayOrder, question.DisplayOrder | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                         select new | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                         { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                             questionSubjectType, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                             question, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                             questionRegisterItem, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                             questionRegisterAnswer, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                             questionAnswer | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                         }).ToList(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            var diseaseRisks = (from diseaseRisk in await _diseaseRiskRepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                join diseaseRiskLevel in await _diseaseRiskLevelRepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                on diseaseRisk.DiseaseRiskId equals diseaseRiskLevel.DiseaseRiskId into emptyDiseaseRiskLevel | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                from haveDiseaseRiskLevel in emptyDiseaseRiskLevel.DefaultIfEmpty() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                join diseaseRiskLevelAnswer in await _diseaseRiskLevelAnswerRepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                on haveDiseaseRiskLevel.DiseaseRiskLevelId equals diseaseRiskLevelAnswer.DiseaseRiskLevelId into emptyDiseaseRiskLevelAnswer | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                from haveDiseaseRiskLevelAnswer in emptyDiseaseRiskLevelAnswer.DefaultIfEmpty() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                orderby diseaseRisk.DisplayOrder | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                select new | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                    diseaseRisk, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                    haveDiseaseRiskLevel, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                    haveDiseaseRiskLevelAnswer | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                }).ToList(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            var questionRegisterDiseaseRiskDtos = diseaseRisks.GroupBy(o => o.diseaseRisk) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                .Select(o => new PersonDiseaseRiskLevelDto() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    DiseaseRiskId = o.Key.DiseaseRiskId, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    DiseaseRiskName = o.Key.DiseaseRiskName, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    DisplayOrder = o.Key.DisplayOrder | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                }).ToList(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            foreach (var diseaseRisk in questionRegisterDiseaseRiskDtos) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                //疾病级别必须按优先级别排序,取顺序最高的作为最高风险级
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                var diseaseRiskLevels = diseaseRisks.Where(o => o.diseaseRisk.DiseaseRiskId == diseaseRisk.DiseaseRiskId | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                && o.haveDiseaseRiskLevel != null) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                     .OrderByDescending(o => o.haveDiseaseRiskLevel == null ? 1 : o.haveDiseaseRiskLevel.DisplayOrder).ToList(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                DiseaseRiskLevel matchDiseaseRiskLevel = null; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                foreach (var diseaseRiskLevel in diseaseRiskLevels) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    if (questionRegisterItems.Where(o => diseaseRiskLevel.haveDiseaseRiskLevelAnswer != null && | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        o.questionRegisterAnswer.QuestionAnswerId == | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                       diseaseRiskLevel.haveDiseaseRiskLevelAnswer.QuestionAnswerId).Any()) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        if (diseaseRiskLevel.haveDiseaseRiskLevel != null) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            matchDiseaseRiskLevel = diseaseRiskLevel.haveDiseaseRiskLevel; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                            break; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                        } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                if (matchDiseaseRiskLevel == null) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    matchDiseaseRiskLevel = diseaseRiskLevels.LastOrDefault() == null ? null : diseaseRiskLevels.LastOrDefault().haveDiseaseRiskLevel; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                if (matchDiseaseRiskLevel != null) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    diseaseRisk.DiseaseRiskLevelId = matchDiseaseRiskLevel.DiseaseRiskLevelId; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    diseaseRisk.DiseaseRiskLevelName = matchDiseaseRiskLevel.DiseaseRiskLevelName; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    var personDiseaseRiskLevelAsbitems = (from diseaseRiskLevelAsbitem in await _diseaseRiskLevelAsbitemRepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                          join asbitem in await _asbitemRepository.GetQueryableAsync() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                          on diseaseRiskLevelAsbitem.AsbitemId equals asbitem.AsbitemId | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                          where diseaseRiskLevelAsbitem.DiseaseRiskLevelId == diseaseRisk.DiseaseRiskLevelId | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                          select new PersonDiseaseRiskLevelAsbitem() | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                          { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                              AsbitemId = asbitem.AsbitemId, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                              AsbitemName = asbitem.AsbitemName, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                              ShortName = asbitem.ShortName, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                              Price = asbitem.Price, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                              ClinicalMeaning = asbitem.ClinicalMeaning, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                              Warn = asbitem.Warn, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                              DisplayOrder = asbitem.DisplayOrder, | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                              AsbitemRecommendLevelId = diseaseRiskLevelAsbitem.AsbitemRecommendLevelId | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                                                          }).ToList(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                    diseaseRisk.Asbitems.AddRange(personDiseaseRiskLevelAsbitems); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				                } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            } | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				            return questionRegisterDiseaseRiskDtos; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				        } | 
			
		
		
	
		
			
				 | 
				 | 
				    } | 
				 | 
				 | 
				    } | 
			
		
		
	
		
			
				 | 
				 | 
				} | 
				 | 
				 | 
				} |