Browse Source

预约

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

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

@ -9,6 +9,7 @@ using Shentun.WebPeis.OrganizationUnits;
using Shentun.WebPeis.PatientRegisters;
using Shentun.WebPeis.Persons;
using Shentun.WebPeis.QuestionRegisters;
using Shentun.WebPeis.SysParmValues;
using System;
using System.Collections;
using System.Collections.Generic;
@ -62,6 +63,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters
private readonly IRepository<DiseaseRiskLevel> _diseaseRiskLevelRepository;
private readonly IRepository<QuestionAnswerRiskLevel> _questionAnswerRiskLevelRepository;
private readonly IRepository<QuestionAnswerAsbitem> _questionAnswerAsbitemRepository;
private readonly SysParmValueManager _sysParmValueManager;
private readonly PersonManager _personManager;
public AppointPatientRegisterAppService(IRepository<AppointPatientRegister> repository,
CacheService cacheService,
IRepository<ItemType> itemTypeRepository,
@ -91,7 +94,9 @@ namespace Shentun.WebPeis.AppointPatientRegisters
IRepository<DiseaseRisk> diseaseRiskRepository,
IRepository<DiseaseRiskLevel> diseaseRiskLevelRepository,
IRepository<QuestionAnswerRiskLevel> questionAnswerRiskLevelRepository,
IRepository<QuestionAnswerAsbitem> questionAnswerAsbitemRepository
IRepository<QuestionAnswerAsbitem> questionAnswerAsbitemRepository,
SysParmValueManager sysParmValueManager,
PersonManager personManager
)
{
@ -125,6 +130,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters
_diseaseRiskLevelRepository = diseaseRiskLevelRepository;
_questionAnswerRiskLevelRepository = questionAnswerRiskLevelRepository;
_questionAnswerAsbitemRepository = questionAnswerAsbitemRepository;
_personManager = personManager;
_sysParmValueManager = sysParmValueManager;
}
@ -960,6 +967,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
asbitem,
}).ToList();
//获取所有疾病风险基础字典
var diseaseRisks = (from diseaseRisk in await _diseaseRiskRepository.GetQueryableAsync()
join diseaseRiskLevel in await _diseaseRiskLevelRepository.GetQueryableAsync()
@ -1017,17 +1025,17 @@ namespace Shentun.WebPeis.AppointPatientRegisters
DiseaseRiskLevelDisplayOrder = o.haveDiseaseRiskLevel.DisplayOrder,
Asbitems = questionAnswerAsbitems
}).DistinctBy(o => o.DiseaseRiskId).ToList();
if(!personDiseaseRiskLevelDtos.Any())
if (!personDiseaseRiskLevelDtos.Any())
{
//如果答案没有对应的风险级别则虚拟一个,用答案名称作为风险级别
var personDiseaseRiskLevelDto = new PersonDiseaseRiskLevelDto()
var personDiseaseRiskLevelDto = new PersonDiseaseRiskLevelDto()
{
DiseaseRiskId = questionAnswer.QuestionAnswerId,
DiseaseRiskName = questionAnswer.QuestionAnswerName,
DisplayOrder = 1000,
DisplayOrder = 1000 + questionAnswer.DisplayOrder,
DiseaseRiskLevelId = questionAnswer.QuestionAnswerId,
DiseaseRiskLevelName = questionAnswer.QuestionAnswerName,
DiseaseRiskLevelDisplayOrder = 1000,
DiseaseRiskLevelDisplayOrder = 1000 + questionAnswer.DisplayOrder,
Asbitems = questionAnswerAsbitems
};
personDiseaseRiskLevels.Add(personDiseaseRiskLevelDto);
@ -1036,8 +1044,49 @@ namespace Shentun.WebPeis.AppointPatientRegisters
{
personDiseaseRiskLevels.AddRange(personDiseaseRiskLevelDtos);
}
}
//获取超重对应的疾病风险和组合项目
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();
for (var i = 0; i < personDiseaseRiskLevels.Count; i++)
@ -1067,6 +1116,15 @@ namespace Shentun.WebPeis.AppointPatientRegisters
AsbitemRecommendLevelId = o.FirstOrDefault().AsbitemRecommendLevelId
}).ToList();
}
//将疾病风险和疾病风险级别名称合并
foreach (var personDiseaseRiskLevel in personDiseaseRiskLevels)
{
//将疾病风险和疾病风险级别名称合并
if (!personDiseaseRiskLevel.DiseaseRiskLevelName.Contains(personDiseaseRiskLevel.DiseaseRiskName))
{
personDiseaseRiskLevel.DiseaseRiskName += personDiseaseRiskLevel.DiseaseRiskLevelName;
}
}
//获取有共同组合项目的风险级别
var newPersonDiseaseRiskLevelDtos = new List<PersonDiseaseRiskLevelDto>();
@ -1091,6 +1149,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters
}
}
return personDiseaseRiskLevels;
/*
var questionRegisterDiseaseRiskDtos = diseaseRisks.GroupBy(o => o.diseaseRisk)
.Select(o => new PersonDiseaseRiskLevelDto()
{
@ -1155,6 +1215,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
}
return questionRegisterDiseaseRiskDtos;
*/
}
}
}

31
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)
{
//危险因素编码是03
@ -887,32 +885,7 @@ namespace Shentun.WebPeis.QuestionRegisters
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)
{
_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 );
}

Loading…
Cancel
Save