|
|
|
@ -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; |
|
|
|
*/ |
|
|
|
} |
|
|
|
} |
|
|
|
} |