|
|
|
@ -36,9 +36,11 @@ namespace Shentun.WebPeis.QuestionRegisters |
|
|
|
private readonly IRepository<QuestionAnswerRiskLevel> _questionAnswerRiskLevelRepository; |
|
|
|
private readonly IRepository<QuestionAnswerAsbitem> _questionAnswerAsbitemRepository; |
|
|
|
private readonly IRepository<Asbitem> _asbitemRepository; |
|
|
|
private readonly IRepository<Person> _personRepository; |
|
|
|
private readonly QuestionRegisterManager _questionRegisterManager; |
|
|
|
private readonly IUnitOfWorkManager _unitOfWorkManager; |
|
|
|
private readonly SysParmValueManager _sysParmValueManager; |
|
|
|
private readonly PersonManager _personManager; |
|
|
|
public QuestionRegisterAppService(IRepository<QuestionRegister> repository, |
|
|
|
IRepository<QuestionRegisterItem> questionRegisterItemRepository, |
|
|
|
IRepository<QuestionRegisterAnswer> questionRegisterAnswerRrepository, |
|
|
|
@ -52,7 +54,9 @@ namespace Shentun.WebPeis.QuestionRegisters |
|
|
|
IRepository<QuestionAnswerRiskLevel> questionAnswerRiskLevelRepository, |
|
|
|
IRepository<QuestionAnswerAsbitem> questionAnswerAsbitemRepository, |
|
|
|
IRepository<Asbitem> asbitemRepository, |
|
|
|
SysParmValueManager sysParmValueManager) |
|
|
|
SysParmValueManager sysParmValueManager, |
|
|
|
IRepository<Person> personRepository, |
|
|
|
PersonManager personManager) |
|
|
|
{ |
|
|
|
_repository = repository; |
|
|
|
_questionRegisterItemRepository = questionRegisterItemRepository; |
|
|
|
@ -68,6 +72,8 @@ namespace Shentun.WebPeis.QuestionRegisters |
|
|
|
_questionAnswerAsbitemRepository = questionAnswerAsbitemRepository; |
|
|
|
_asbitemRepository = asbitemRepository; |
|
|
|
_sysParmValueManager = sysParmValueManager; |
|
|
|
_personRepository = personRepository; |
|
|
|
_personManager = personManager; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -231,6 +237,26 @@ 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);
|
|
|
|
if (isOverweight) |
|
|
|
{ |
|
|
|
//危险因素编码是03
|
|
|
|
var personSubjectTypeDto = personSubjectTypeDtos.Where(o => o.QuestionSubjectTypeId == "03").Single(); |
|
|
|
var questionAnswerOverweightCodeStr = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "question_answer_overweight_code"); |
|
|
|
if (!Guid.TryParse(questionAnswerOverweightCodeStr, out var questionAnswerOverweightCode)) |
|
|
|
{ |
|
|
|
throw new UserFriendlyException("在系统参数中超重编码维护不正确"); |
|
|
|
} |
|
|
|
var questionAnswer = await _questionAnswerRepository.GetAsync(o => o.QuestionAnswerId == questionAnswerOverweightCode); |
|
|
|
personSubjectTypeDto.Answers.Add(new PersonSubjectTypeQuestionAnswer() |
|
|
|
{ |
|
|
|
QuestionAnswerName = questionAnswer.QuestionAnswerName, |
|
|
|
DisplayOrder = questionAnswer.DisplayOrder, |
|
|
|
}); |
|
|
|
} |
|
|
|
return personSubjectTypeDtos; |
|
|
|
} |
|
|
|
|
|
|
|
@ -240,7 +266,7 @@ namespace Shentun.WebPeis.QuestionRegisters |
|
|
|
/// <param name="input"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
[HttpPost("api/app/QuestionRegister/GetQuestionRegisterListByPersonId")] |
|
|
|
public async Task<List<QuestionRegisterItemResultDto>> GetQuestionRegisterListByPersonIdAsync(PersonAppointInputDto input) |
|
|
|
public async Task<List<QuestionRegisterItemResultDto>> GetQuestionRegisterListByPersonIdAsync(PersonIdInputDto input) |
|
|
|
{ |
|
|
|
var questionRegister = (await _repository.GetQueryableAsync()) |
|
|
|
.Where(o => o.PersonId == input.PersonId) |
|
|
|
@ -328,7 +354,7 @@ namespace Shentun.WebPeis.QuestionRegisters |
|
|
|
/// <param name="input"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
[HttpPost("api/app/QuestionRegister/GetDiseaseRiskListByPersonId")] |
|
|
|
public async Task<List<QuestionRegisterDiseaseRiskDto>> GetDiseaseRiskListByPersonIdAsync(PersonAppointInputDto input) |
|
|
|
public async Task<List<QuestionRegisterDiseaseRiskDto>> GetDiseaseRiskListByPersonIdAsync(PersonIdInputDto input) |
|
|
|
{ |
|
|
|
var questionRegister = (await _repository.GetQueryableAsync()) |
|
|
|
.Where(o => o.PersonId == input.PersonId) |
|
|
|
@ -383,6 +409,20 @@ namespace Shentun.WebPeis.QuestionRegisters |
|
|
|
DisplayOrder = o.Key.DisplayOrder |
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
//超重信息
|
|
|
|
var isOverweight = await _personManager.IsOverweight(input.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); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
foreach (var diseaseRisk in questionRegisterDiseaseRiskDtos) |
|
|
|
{ |
|
|
|
//疾病级别必须按优先级别排序,取顺序最高的作为最高风险级
|
|
|
|
@ -403,6 +443,15 @@ namespace Shentun.WebPeis.QuestionRegisters |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
//超重
|
|
|
|
if (overweightQuestionAnswer != null && diseaseRiskLevel.haveQuestionAnswerRiskLevel != null) |
|
|
|
{ |
|
|
|
if (diseaseRiskLevel.haveQuestionAnswerRiskLevel.QuestionAnswerId == overweightQuestionAnswer.QuestionAnswerId) |
|
|
|
{ |
|
|
|
matchDiseaseRiskLevel = diseaseRiskLevel.haveDiseaseRiskLevel; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (matchDiseaseRiskLevel == null) |
|
|
|
{ |
|
|
|
@ -435,23 +484,38 @@ namespace Shentun.WebPeis.QuestionRegisters |
|
|
|
{ |
|
|
|
if (input == null) { throw new UserFriendlyException("input参数不能为空"); } |
|
|
|
|
|
|
|
var questionRegister = (await _repository.GetQueryableAsync()) |
|
|
|
.Where(o => o.PersonId == input.PersonId) |
|
|
|
.OrderByDescending(o => o.CreationTime) |
|
|
|
.FirstOrDefault(); |
|
|
|
|
|
|
|
if (questionRegister == null) |
|
|
|
{ |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
var diseaseRisk = await _diseaseRiskRepository.GetAsync(o => o.DiseaseRiskId == input.DiseaseRiskId); |
|
|
|
var diseaseRiskLevels = (await _diseaseRiskLevelRepository.GetListAsync(o => o.DiseaseRiskId == input.DiseaseRiskId)) |
|
|
|
.OrderBy(o => o.DisplayOrder); |
|
|
|
|
|
|
|
//获取人员疾病风险列表
|
|
|
|
var diseaseRiskList = await GetDiseaseRiskListByPersonIdAsync(new PersonAppointInputDto() { PersonId = input.PersonId }); |
|
|
|
var diseaseRiskList = await GetDiseaseRiskListByPersonIdAsync(new PersonIdInputDto() { PersonId = input.PersonId }); |
|
|
|
var personDiseaseRisk = diseaseRiskList.Where(o => o.DiseaseRiskId == input.DiseaseRiskId).First(); |
|
|
|
var diseaseRiskLevel = diseaseRiskLevels.Where(o => o.DiseaseRiskLevelId == personDiseaseRisk.DiseaseRiskLevelId).FirstOrDefault(); |
|
|
|
|
|
|
|
var asbitems = (from questionAnswerAsbitem in await _questionAnswerAsbitemRepository.GetQueryableAsync() |
|
|
|
var asbitems = (from questionRegisterItem in await _questionRegisterItemRepository.GetQueryableAsync() |
|
|
|
join questionRegisterAnswer in await _questionRegisterAnswerRrepository.GetQueryableAsync() |
|
|
|
on questionRegisterItem.QuestionRegisterItemId equals questionRegisterAnswer.QuestionRegisterItemId |
|
|
|
join questionAnswerAsbitem in await _questionAnswerAsbitemRepository.GetQueryableAsync() |
|
|
|
on questionRegisterAnswer.QuestionAnswerId equals questionAnswerAsbitem.QuestionAnswerId |
|
|
|
join asbitem in await _asbitemRepository.GetQueryableAsync() |
|
|
|
on questionAnswerAsbitem.AsbitemId equals asbitem.AsbitemId |
|
|
|
join questionAnswerRiskLevel in await _questionAnswerRiskLevelRepository.GetQueryableAsync() |
|
|
|
on questionAnswerAsbitem.QuestionAnswerId equals questionAnswerRiskLevel.QuestionAnswerId |
|
|
|
where questionAnswerRiskLevel.DiseaseRiskLevelId == diseaseRiskLevel.DiseaseRiskLevelId |
|
|
|
where questionRegisterItem.QuestionRegisterId == questionRegister.QuestionRegisterId && |
|
|
|
questionAnswerRiskLevel.DiseaseRiskLevelId == diseaseRiskLevel.DiseaseRiskLevelId |
|
|
|
orderby asbitem.DisplayOrder |
|
|
|
select asbitem).ToList(); |
|
|
|
select asbitem).Distinct().ToList(); |
|
|
|
|
|
|
|
var questionRegisterDiseaseRiskSingleDto = new QuestionRegisterDiseaseRiskSingleDto() |
|
|
|
{ |
|
|
|
@ -475,15 +539,50 @@ namespace Shentun.WebPeis.QuestionRegisters |
|
|
|
}).ToList() |
|
|
|
}; |
|
|
|
|
|
|
|
//超重信息
|
|
|
|
|
|
|
|
var questionRegister = (await _repository.GetQueryableAsync()) |
|
|
|
.Where(o => o.PersonId == input.PersonId) |
|
|
|
.OrderByDescending(o => o.CreationTime) |
|
|
|
.FirstOrDefault(); |
|
|
|
if (questionRegister == null) |
|
|
|
var isOverweight = await _personManager.IsOverweight(input.PersonId); |
|
|
|
QuestionAnswer overweightQuestionAnswer = null; |
|
|
|
if (isOverweight) |
|
|
|
{ |
|
|
|
return null; |
|
|
|
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 questionAnswerRiskLevel = await _questionAnswerRiskLevelRepository.FindAsync(o => o.QuestionAnswerId == overweightQuestionAnswer.QuestionAnswerId && |
|
|
|
o.DiseaseRiskLevelId == diseaseRiskLevel.DiseaseRiskLevelId); |
|
|
|
if (questionAnswerRiskLevel != null) |
|
|
|
{ |
|
|
|
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 asbitem).ToList(); |
|
|
|
|
|
|
|
foreach (var questionAnswerAsbitem in questionAnswerAsbitems) |
|
|
|
{ |
|
|
|
if (!questionRegisterDiseaseRiskSingleDto.Asbitems.Where(o => o.AsbitemId == questionAnswerAsbitem.AsbitemId).Any()) |
|
|
|
{ |
|
|
|
questionRegisterDiseaseRiskSingleDto.Asbitems.Add(new QuestionRegisterDiseaseRiskAsbitem() |
|
|
|
{ |
|
|
|
AsbitemId = questionAnswerAsbitem.AsbitemId, |
|
|
|
AsbitemName = questionAnswerAsbitem.AsbitemName, |
|
|
|
DisplayOrder = questionAnswerAsbitem.DisplayOrder |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
questionRegisterDiseaseRiskSingleDto.Answers.Add(new QuestionRegisterItemResultAnswer() |
|
|
|
{ |
|
|
|
Answer = overweightQuestionAnswer.QuestionAnswerName, |
|
|
|
DisplayOrder = overweightQuestionAnswer.DisplayOrder, |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var questionRegisterItems = (from questionRegisterItem in await _questionRegisterItemRepository.GetQueryableAsync() |
|
|
|
join questionRegisterAnswer in await _questionRegisterAnswerRrepository.GetQueryableAsync() |
|
|
|
|