Browse Source

预约

master
DESKTOP-G961P6V\Zhh 1 year ago
parent
commit
89b167716f
  1. 71
      src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs
  2. 29
      src/Shentun.WebPeis.Application/QuestionRegisters/QuestionRegisterAppService.cs
  3. 5
      test/Shentun.WebPeis.Application.Tests/AppointPatientRegisterAppServiceTest.cs

71
src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs

@ -9,6 +9,7 @@ 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 Shentun.WebPeis.QuestionRegisters;
using Shentun.WebPeis.SysParmValues;
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
@ -62,6 +63,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters
private readonly IRepository<DiseaseRiskLevel> _diseaseRiskLevelRepository; private readonly IRepository<DiseaseRiskLevel> _diseaseRiskLevelRepository;
private readonly IRepository<QuestionAnswerRiskLevel> _questionAnswerRiskLevelRepository; private readonly IRepository<QuestionAnswerRiskLevel> _questionAnswerRiskLevelRepository;
private readonly IRepository<QuestionAnswerAsbitem> _questionAnswerAsbitemRepository; private readonly IRepository<QuestionAnswerAsbitem> _questionAnswerAsbitemRepository;
private readonly SysParmValueManager _sysParmValueManager;
private readonly PersonManager _personManager;
public AppointPatientRegisterAppService(IRepository<AppointPatientRegister> repository, public AppointPatientRegisterAppService(IRepository<AppointPatientRegister> repository,
CacheService cacheService, CacheService cacheService,
IRepository<ItemType> itemTypeRepository, IRepository<ItemType> itemTypeRepository,
@ -91,7 +94,9 @@ namespace Shentun.WebPeis.AppointPatientRegisters
IRepository<DiseaseRisk> diseaseRiskRepository, IRepository<DiseaseRisk> diseaseRiskRepository,
IRepository<DiseaseRiskLevel> diseaseRiskLevelRepository, IRepository<DiseaseRiskLevel> diseaseRiskLevelRepository,
IRepository<QuestionAnswerRiskLevel> questionAnswerRiskLevelRepository, IRepository<QuestionAnswerRiskLevel> questionAnswerRiskLevelRepository,
IRepository<QuestionAnswerAsbitem> questionAnswerAsbitemRepository
IRepository<QuestionAnswerAsbitem> questionAnswerAsbitemRepository,
SysParmValueManager sysParmValueManager,
PersonManager personManager
) )
{ {
@ -125,6 +130,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters
_diseaseRiskLevelRepository = diseaseRiskLevelRepository; _diseaseRiskLevelRepository = diseaseRiskLevelRepository;
_questionAnswerRiskLevelRepository = questionAnswerRiskLevelRepository; _questionAnswerRiskLevelRepository = questionAnswerRiskLevelRepository;
_questionAnswerAsbitemRepository = questionAnswerAsbitemRepository; _questionAnswerAsbitemRepository = questionAnswerAsbitemRepository;
_personManager = personManager;
_sysParmValueManager = sysParmValueManager;
} }
@ -960,6 +967,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
asbitem, asbitem,
}).ToList(); }).ToList();
//获取所有疾病风险基础字典 //获取所有疾病风险基础字典
var diseaseRisks = (from diseaseRisk in await _diseaseRiskRepository.GetQueryableAsync() var diseaseRisks = (from diseaseRisk in await _diseaseRiskRepository.GetQueryableAsync()
join diseaseRiskLevel in await _diseaseRiskLevelRepository.GetQueryableAsync() join diseaseRiskLevel in await _diseaseRiskLevelRepository.GetQueryableAsync()
@ -1017,17 +1025,17 @@ namespace Shentun.WebPeis.AppointPatientRegisters
DiseaseRiskLevelDisplayOrder = o.haveDiseaseRiskLevel.DisplayOrder, DiseaseRiskLevelDisplayOrder = o.haveDiseaseRiskLevel.DisplayOrder,
Asbitems = questionAnswerAsbitems Asbitems = questionAnswerAsbitems
}).DistinctBy(o => o.DiseaseRiskId).ToList(); }).DistinctBy(o => o.DiseaseRiskId).ToList();
if(!personDiseaseRiskLevelDtos.Any())
if (!personDiseaseRiskLevelDtos.Any())
{ {
//如果答案没有对应的风险级别则虚拟一个,用答案名称作为风险级别 //如果答案没有对应的风险级别则虚拟一个,用答案名称作为风险级别
var personDiseaseRiskLevelDto = new PersonDiseaseRiskLevelDto()
var personDiseaseRiskLevelDto = new PersonDiseaseRiskLevelDto()
{ {
DiseaseRiskId = questionAnswer.QuestionAnswerId, DiseaseRiskId = questionAnswer.QuestionAnswerId,
DiseaseRiskName = questionAnswer.QuestionAnswerName, DiseaseRiskName = questionAnswer.QuestionAnswerName,
DisplayOrder = 1000,
DisplayOrder = 1000 + questionAnswer.DisplayOrder,
DiseaseRiskLevelId = questionAnswer.QuestionAnswerId, DiseaseRiskLevelId = questionAnswer.QuestionAnswerId,
DiseaseRiskLevelName = questionAnswer.QuestionAnswerName, DiseaseRiskLevelName = questionAnswer.QuestionAnswerName,
DiseaseRiskLevelDisplayOrder = 1000,
DiseaseRiskLevelDisplayOrder = 1000 + questionAnswer.DisplayOrder,
Asbitems = questionAnswerAsbitems Asbitems = questionAnswerAsbitems
}; };
personDiseaseRiskLevels.Add(personDiseaseRiskLevelDto); personDiseaseRiskLevels.Add(personDiseaseRiskLevelDto);
@ -1038,6 +1046,47 @@ namespace Shentun.WebPeis.AppointPatientRegisters
} }
} }
//获取超重对应的疾病风险和组合项目
var isOverweight = await _personManager.IsOverweight(personId);
QuestionAnswer overweightQuestionAnswer = null;
if (isOverweight)
{
var questionAnswerOverweightCodeStr = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "question_answer_overweight_code");
if (!Guid.TryParse(questionAnswerOverweightCodeStr, out var questionAnswerOverweightCode))
{
throw new UserFriendlyException("在系统参数中超重编码维护不正确");
}
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 personDiseaseRiskLevelDto = new PersonDiseaseRiskLevelDto()
{
DiseaseRiskId = overweightQuestionAnswer.QuestionAnswerId,
DiseaseRiskName = overweightQuestionAnswer.QuestionAnswerName,
DisplayOrder = 1000 + overweightQuestionAnswer.DisplayOrder,
DiseaseRiskLevelId = overweightQuestionAnswer.QuestionAnswerId,
DiseaseRiskLevelName = overweightQuestionAnswer.QuestionAnswerName,
DiseaseRiskLevelDisplayOrder = 1000 + overweightQuestionAnswer.DisplayOrder,
Asbitems = questionAnswerAsbitems
};
personDiseaseRiskLevels.Add(personDiseaseRiskLevelDto);
}
//合并同一个疾病风险中的不同组合项目,将低级别风险中的组合项目合并到高风险级别中 //合并同一个疾病风险中的不同组合项目,将低级别风险中的组合项目合并到高风险级别中
personDiseaseRiskLevels = personDiseaseRiskLevels.OrderBy(o => o.DisplayOrder).ThenByDescending(o => o.DiseaseRiskLevelDisplayOrder).ToList(); personDiseaseRiskLevels = personDiseaseRiskLevels.OrderBy(o => o.DisplayOrder).ThenByDescending(o => o.DiseaseRiskLevelDisplayOrder).ToList();
for (var i = 0; i < personDiseaseRiskLevels.Count; i++) for (var i = 0; i < personDiseaseRiskLevels.Count; i++)
@ -1067,6 +1116,15 @@ namespace Shentun.WebPeis.AppointPatientRegisters
AsbitemRecommendLevelId = o.FirstOrDefault().AsbitemRecommendLevelId AsbitemRecommendLevelId = o.FirstOrDefault().AsbitemRecommendLevelId
}).ToList(); }).ToList();
} }
//将疾病风险和疾病风险级别名称合并
foreach (var personDiseaseRiskLevel in personDiseaseRiskLevels)
{
//将疾病风险和疾病风险级别名称合并
if (!personDiseaseRiskLevel.DiseaseRiskLevelName.Contains(personDiseaseRiskLevel.DiseaseRiskName))
{
personDiseaseRiskLevel.DiseaseRiskName += personDiseaseRiskLevel.DiseaseRiskLevelName;
}
}
//获取有共同组合项目的风险级别 //获取有共同组合项目的风险级别
var newPersonDiseaseRiskLevelDtos = new List<PersonDiseaseRiskLevelDto>(); var newPersonDiseaseRiskLevelDtos = new List<PersonDiseaseRiskLevelDto>();
@ -1091,6 +1149,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters
} }
} }
return personDiseaseRiskLevels; return personDiseaseRiskLevels;
/*
var questionRegisterDiseaseRiskDtos = diseaseRisks.GroupBy(o => o.diseaseRisk) var questionRegisterDiseaseRiskDtos = diseaseRisks.GroupBy(o => o.diseaseRisk)
.Select(o => new PersonDiseaseRiskLevelDto() .Select(o => new PersonDiseaseRiskLevelDto()
{ {
@ -1155,6 +1215,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
} }
return questionRegisterDiseaseRiskDtos; return questionRegisterDiseaseRiskDtos;
*/
} }
} }
} }

29
src/Shentun.WebPeis.Application/QuestionRegisters/QuestionRegisterAppService.cs

@ -238,9 +238,7 @@ namespace Shentun.WebPeis.QuestionRegisters
} }
//超重信息 //超重信息
//var person = await _personRepository.GetAsync(o => o.PersonId == input.PersonId);
_personManager.IsOverweight(input.PersonId);
var isOverweight = await _personManager.IsOverweight(input.PersonId); //await IsOverweight(person.Height, person.Weight);
var isOverweight = await _personManager.IsOverweight(input.PersonId);
if (isOverweight) if (isOverweight)
{ {
//危险因素编码是03 //危险因素编码是03
@ -887,32 +885,7 @@ namespace Shentun.WebPeis.QuestionRegisters
return questionRegisterDto; return questionRegisterDto;
} }
/// <summary>
/// 是否超重
/// </summary>
/// <param name="height"></param>
/// <param name="weight"></param>
/// <returns></returns>
private async Task<bool> IsOverweight(decimal? height, decimal? weight)
{
if (height == null || weight == null || height <= 0 || weight <= 0)
{
return false;
}
var tzzs = (weight / ((height / 100) * (height / 100)));
var sysTzzsStr = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "question_overweight");
decimal sysTzzs;
if (!decimal.TryParse(sysTzzsStr, out sysTzzs))
{
sysTzzs = (decimal)24.5;
}
if (tzzs >= sysTzzs)
{
return true;
}
return false;
}
} }
} }

5
test/Shentun.WebPeis.Application.Tests/AppointPatientRegisterAppServiceTest.cs

@ -133,8 +133,9 @@ namespace Shentun.WebPeis
} }
foreach (var item2 in item.DiseaseRiskLevelAsbitems) foreach (var item2 in item.DiseaseRiskLevelAsbitems)
{ {
_output.WriteLine("---" + item2.DiseaseRiskName +"-" + item2.DiseaseRiskLevelName + "---");
foreach(var item3 in item2.Asbitems)
//_output.WriteLine("---" + item2.DiseaseRiskName +"-" + item2.DiseaseRiskLevelName + "---");
_output.WriteLine("---" + item2.DiseaseRiskName + "---");
foreach (var item3 in item2.Asbitems)
{ {
_output.WriteLine(item3.AsbitemName ); _output.WriteLine(item3.AsbitemName );
} }

Loading…
Cancel
Save