|
|
|
@ -606,7 +606,149 @@ namespace Shentun.WebPeis.AppointPatientRegisters |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 获取团检推荐套餐列表
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="input"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
[HttpPost("api/app/AppointPatientRegister/GetCustomerOrgRecommendMedicalPackageListByPatientRegisterId")] |
|
|
|
public async Task<List<RecommendMedicalPackageDto>> GetCustomerOrgRecommendMedicalPackageListByPatientRegisterIdAsync(RecommendMedicalPackagePatientRegisterIdInputDto input) |
|
|
|
{ |
|
|
|
var customerOrgGroupEntity = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() |
|
|
|
join customerOrgGroup in await _customerOrgGroupRepository.GetQueryableAsync() |
|
|
|
on patientRegister.CustomerOrgGroupId equals customerOrgGroup.CustomerOrgGroupId |
|
|
|
|
|
|
|
where patientRegister.PatientRegisterId == input.PatientRegisterId |
|
|
|
select customerOrgGroup |
|
|
|
).FirstOrDefault(); |
|
|
|
|
|
|
|
var recommendMedicalPackageDtos = new List<RecommendMedicalPackageDto>(); |
|
|
|
for (var i = 0; i < 3; i++) |
|
|
|
{ |
|
|
|
|
|
|
|
var recommendMedicalPackageDto = await GetCustomerOrgRecommendMedicalPackageByPersonAndRecommendIdAsync(new RecommendMedicalPackagePatientRegisterAndRecommendIdInputDto() |
|
|
|
{ |
|
|
|
PatientRegisterId = input.PatientRegisterId, |
|
|
|
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>
|
|
|
|
[HttpPost("api/app/AppointPatientRegister/GetCustomerOrgRecommendMedicalPackageByPersonAndRecommendId")] |
|
|
|
public async Task<RecommendMedicalPackageDto> GetCustomerOrgRecommendMedicalPackageByPersonAndRecommendIdAsync(RecommendMedicalPackagePatientRegisterAndRecommendIdInputDto input) |
|
|
|
{ |
|
|
|
var asbitems = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() |
|
|
|
join customerOrgGroup in await _customerOrgGroupRepository.GetQueryableAsync() |
|
|
|
on patientRegister.CustomerOrgGroupId equals customerOrgGroup.CustomerOrgGroupId |
|
|
|
join registerCheck in await _registerCheckRepository.GetQueryableAsync() |
|
|
|
on patientRegister.PatientRegisterId equals registerCheck.PatientRegisterId |
|
|
|
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() |
|
|
|
on registerCheck.RegisterCheckId equals registerCheckAsbitem.RegisterCheckId |
|
|
|
join asbitem in await _asbitemRepository.GetQueryableAsync() |
|
|
|
on registerCheckAsbitem.AsbitemId equals asbitem.AsbitemId |
|
|
|
join itemType in await _itemTypeRepository.GetQueryableAsync() |
|
|
|
on asbitem.ItemTypeId equals itemType.ItemTypeId |
|
|
|
where registerCheck.PatientRegisterId == input.PatientRegisterId |
|
|
|
select new |
|
|
|
{ |
|
|
|
customerOrgGroup, |
|
|
|
asbitem, |
|
|
|
itemType |
|
|
|
} |
|
|
|
).ToList(); |
|
|
|
|
|
|
|
|
|
|
|
var recommendMedicalPackageDto = new RecommendMedicalPackageDto() |
|
|
|
{ |
|
|
|
MedicalPackageId = asbitems.FirstOrDefault().customerOrgGroup.CustomerOrgGroupId, |
|
|
|
MedicalPackageName = asbitems.FirstOrDefault().customerOrgGroup.CustomerOrgGroupName, |
|
|
|
Price = asbitems.FirstOrDefault().customerOrgGroup.Price, |
|
|
|
SumPrice = asbitems.FirstOrDefault().customerOrgGroup.Price, |
|
|
|
DisplayOrder = asbitems.FirstOrDefault().customerOrgGroup.DisplayOrder |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
var medicalPackageAsbitems = asbitems.Select(o=> |
|
|
|
new RecommendMedicalPackageAsbitem() |
|
|
|
{ |
|
|
|
AsbitemId = o.asbitem.AsbitemId, |
|
|
|
AsbitemName = o.asbitem.AsbitemName, |
|
|
|
ShortName = o.asbitem.ShortName, |
|
|
|
Price = o.asbitem.Price, |
|
|
|
ClinicalMeaning = o.asbitem.ClinicalMeaning, |
|
|
|
Warn = o.asbitem.Warn, |
|
|
|
IsBelongMedicalPackage = 'Y', |
|
|
|
DisplayOrder = o.asbitem.ItemType.DisplayOrder * 100 + o.asbitem.DisplayOrder |
|
|
|
}).ToList(); |
|
|
|
|
|
|
|
recommendMedicalPackageDto.Asbitems.AddRange(medicalPackageAsbitems); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//----推荐组合项目
|
|
|
|
|
|
|
|
var personDiseaseRiskLevelDtos = await GetDiseaseRiskListByPersonIdAsync(input.PersonId); |
|
|
|
//去掉基本套餐中已经包含的组合项目
|
|
|
|
foreach (var personDiseaseRiskLevelDto in personDiseaseRiskLevelDtos) |
|
|
|
{ |
|
|
|
for (var i = 0; i < personDiseaseRiskLevelDto.Asbitems.Count; i++) |
|
|
|
{ |
|
|
|
var personDiseaseRiskLevelAsbitem = personDiseaseRiskLevelDto.Asbitems[i]; |
|
|
|
if (medicalPackageAsbitems.Where(o => o.AsbitemId == personDiseaseRiskLevelAsbitem.AsbitemId).Any()) |
|
|
|
{ |
|
|
|
personDiseaseRiskLevelDto.Asbitems.Remove(personDiseaseRiskLevelAsbitem); |
|
|
|
i--; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
var personDiseaseRiskLevelResultDtos = new List<PersonDiseaseRiskLevelDto>(); |
|
|
|
foreach (var personDiseaseRiskLevelDto in personDiseaseRiskLevelDtos) |
|
|
|
{ |
|
|
|
if (personDiseaseRiskLevelDto.Asbitems.Where(o => o.AsbitemRecommendLevelId == input.RecommendId).Count() > 0) |
|
|
|
{ |
|
|
|
//只有有推荐的项目才进入推荐风险项目列表
|
|
|
|
var personDiseaseRiskLevelResultDto = new PersonDiseaseRiskLevelDto() |
|
|
|
{ |
|
|
|
DiseaseRiskId = personDiseaseRiskLevelDto.DiseaseRiskId, |
|
|
|
DiseaseRiskName = personDiseaseRiskLevelDto.DiseaseRiskName, |
|
|
|
DisplayOrder = personDiseaseRiskLevelDto.DisplayOrder, |
|
|
|
DiseaseRiskLevelId = personDiseaseRiskLevelDto.DiseaseRiskLevelId, |
|
|
|
DiseaseRiskLevelName = personDiseaseRiskLevelDto.DiseaseRiskLevelName |
|
|
|
}; |
|
|
|
personDiseaseRiskLevelResultDto.Asbitems = |
|
|
|
personDiseaseRiskLevelDto.Asbitems.Where(o => o.AsbitemRecommendLevelId == input.RecommendId).ToList(); |
|
|
|
recommendMedicalPackageDto.SumPrice += personDiseaseRiskLevelResultDto.Asbitems.Sum(o => o.Price); |
|
|
|
personDiseaseRiskLevelResultDtos.Add(personDiseaseRiskLevelResultDto); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
recommendMedicalPackageDto.DiseaseRiskLevelAsbitems = personDiseaseRiskLevelResultDtos; |
|
|
|
return recommendMedicalPackageDto; |
|
|
|
|
|
|
|
} |
|
|
|
/// 获取推荐个人套餐按优先级
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="input"></param>
|
|
|
|
|