Browse Source

预约

master
DESKTOP-G961P6V\Zhh 1 year ago
parent
commit
6ac8a8cb95
  1. 5
      src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/PersonDiseaseRiskLevelDto.cs
  2. 10
      src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackageDto.cs
  3. 88
      src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs

5
src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/PersonDiseaseRiskLevelDto.cs

@ -4,6 +4,11 @@ using System.Text;
namespace Shentun.WebPeis.AppointPatientRegisters
{
public class PersonDiseaseRiskLeveWithForbidlCheckDto
{
public List<PersonDiseaseRiskLevelDto> DiseaseRiskLevelWithAsbitems { get; set; } = new List<PersonDiseaseRiskLevelDto>();
public List<RecommendMedicalPackageAsbitem> ForbidlCheckAsbitems { get; set; } = new List<RecommendMedicalPackageAsbitem>();
}
public class PersonDiseaseRiskLevelDto
{
/// <summary>

10
src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackageDto.cs

@ -37,7 +37,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
public int DisplayOrder { get; set; }
/// <summary>
/// 套餐组合项目
/// 套餐组合项目列表
/// </summary>
public List<RecommendMedicalPackageAsbitem> Asbitems { get; set; } = new List<RecommendMedicalPackageAsbitem>();
@ -45,6 +45,11 @@ namespace Shentun.WebPeis.AppointPatientRegisters
/// 风险级别推荐组合项目
/// </summary>
public List<PersonDiseaseRiskLevelDto> DiseaseRiskLevelAsbitems { get; set; } = new List<PersonDiseaseRiskLevelDto>();
/// <summary>
/// 禁止检查组合项目列表
/// </summary>
public List<RecommendMedicalPackageAsbitem> ForbidlCheckAsbitems { get; set; } = new List<RecommendMedicalPackageAsbitem>();
}
@ -84,6 +89,9 @@ namespace Shentun.WebPeis.AppointPatientRegisters
/// 是否属于套餐
/// </summary>
public char IsBelongMedicalPackage { get; set; }
//备孕、怀孕标志
public char ForPregnantFlag { get; set; }
/// <summary>
/// 显示顺序

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

@ -19,6 +19,7 @@ using System.Text;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Identity;
using Volo.Abp.Uow;
@ -715,8 +716,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters
//----推荐组合项目
var personDiseaseRiskLevelDtos = await GetDiseaseRiskListByPersonIdAsync(input.PersonId);
var personDiseaseRiskLeveWithForbidlCheckDto = await GetDiseaseRiskListByPersonIdAsync(input.PersonId, input.RecommendId);
var personDiseaseRiskLevelDtos = personDiseaseRiskLeveWithForbidlCheckDto.DiseaseRiskLevelWithAsbitems;
//去掉基本套餐中已经包含的组合项目
foreach (var personDiseaseRiskLevelDto in personDiseaseRiskLevelDtos)
{
@ -753,6 +754,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
}
recommendMedicalPackageDto.DiseaseRiskLevelAsbitems = personDiseaseRiskLevelResultDtos;
recommendMedicalPackageDto.ForbidlCheckAsbitems = personDiseaseRiskLeveWithForbidlCheckDto.ForbidlCheckAsbitems;
return recommendMedicalPackageDto;
}
@ -845,8 +847,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters
}
//----推荐组合项目
var personDiseaseRiskLevelDtos = await GetDiseaseRiskListByPersonIdAsync(input.PersonId, input.RecommendId);
var personDiseaseRiskLeveWithForbidlCheckDto = await GetDiseaseRiskListByPersonIdAsync(input.PersonId, input.RecommendId);
var personDiseaseRiskLevelDtos = personDiseaseRiskLeveWithForbidlCheckDto.DiseaseRiskLevelWithAsbitems;
//var pregnancyAsbitems = await _asbitemRepository.GetListAsync(o =>
//o.ForPregnantFlag == ForPregnantFlag.PreparePregnancy || o.ForPregnantFlag == ForPregnantFlag.Pregnancy);
//去掉基本套餐已经包含的组合项目和和怀孕禁止检查的项目
@ -886,6 +888,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
}
recommendMedicalPackageDto.DiseaseRiskLevelAsbitems = personDiseaseRiskLevelResultDtos;
recommendMedicalPackageDto.ForbidlCheckAsbitems = personDiseaseRiskLeveWithForbidlCheckDto.ForbidlCheckAsbitems;
return recommendMedicalPackageDto;
}
@ -927,7 +930,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
private async Task<List<PersonDiseaseRiskLevelDto>> GetDiseaseRiskListByPersonIdAsync(Guid personId, int recommendId = 1)
private async Task<PersonDiseaseRiskLeveWithForbidlCheckDto> GetDiseaseRiskListByPersonIdAsync(Guid personId, int recommendId )
{
var questionRegister = (await _questionRegisterRepository.GetQueryableAsync())
.Where(o => o.PersonId == personId)
@ -967,7 +970,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
asbitem,
}).ToList();
//获取所有疾病风险基础字典
var diseaseRisks = (from diseaseRisk in await _diseaseRiskRepository.GetQueryableAsync()
join diseaseRiskLevel in await _diseaseRiskLevelRepository.GetQueryableAsync()
@ -1007,6 +1010,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
Price = o.asbitem.Price,
ClinicalMeaning = o.asbitem.ClinicalMeaning,
Warn = o.asbitem.Warn,
ForPregnantFlag = o.asbitem.ForPregnantFlag,
DisplayOrder = o.asbitem.DisplayOrder,
AsbitemRecommendLevelId = o.questionAnswerAsbitem.AsbitemRecommendLevelId
}
@ -1058,21 +1062,22 @@ namespace Shentun.WebPeis.AppointPatientRegisters
}
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 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,
ForPregnantFlag = asbitem.ForPregnantFlag,
DisplayOrder = asbitem.DisplayOrder,
AsbitemRecommendLevelId = questionAnswerAsbitem.AsbitemRecommendLevelId
}).ToList();
var personDiseaseRiskLevelDto = new PersonDiseaseRiskLevelDto()
{
@ -1087,6 +1092,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
personDiseaseRiskLevels.Add(personDiseaseRiskLevelDto);
}
//合并同一个疾病风险中的不同组合项目,将低级别风险中的组合项目合并到高风险级别中
personDiseaseRiskLevels = personDiseaseRiskLevels.OrderBy(o => o.DisplayOrder).ThenByDescending(o => o.DiseaseRiskLevelDisplayOrder).ToList();
for (var i = 0; i < personDiseaseRiskLevels.Count; i++)
@ -1126,8 +1132,43 @@ namespace Shentun.WebPeis.AppointPatientRegisters
}
}
//var newPersonDiseaseRiskLevelDtos = new List<PersonDiseaseRiskLevelDto>();
//去掉备孕、怀孕禁检组合项目
var personDiseaseRiskLeveWithForbidlCheckDto = new PersonDiseaseRiskLeveWithForbidlCheckDto();
var person = await _personRepository.GetAsync(o => o.PersonId == personId);
foreach (var personDiseaseRiskLevel in personDiseaseRiskLevels)
{
for (var i = 0; i < personDiseaseRiskLevel.Asbitems.Count; i++)
{
if (person.PregnantFlag == PregnantFlag.PreparePregnancy && personDiseaseRiskLevel.Asbitems[i].ForPregnantFlag == ForPregnantFlag.PreparePregnancy)
{
personDiseaseRiskLevel.Asbitems.Remove(personDiseaseRiskLevel.Asbitems[i]);
personDiseaseRiskLeveWithForbidlCheckDto.ForbidlCheckAsbitems.Add(personDiseaseRiskLevel.Asbitems[i]);
i--;
continue;
}
if (person.PregnantFlag == PregnantFlag.Pregnancy &&
(personDiseaseRiskLevel.Asbitems[i].ForPregnantFlag == ForPregnantFlag.PreparePregnancy || personDiseaseRiskLevel.Asbitems[i].ForPregnantFlag == ForPregnantFlag.Pregnancy))
{
personDiseaseRiskLevel.Asbitems.Remove(personDiseaseRiskLevel.Asbitems[i]);
personDiseaseRiskLeveWithForbidlCheckDto.ForbidlCheckAsbitems.Add(personDiseaseRiskLevel.Asbitems[i]);
i--;
continue;
}
}
}
//删除没有组合项目的疾病风险
for (var i = 0; i < personDiseaseRiskLevels.Count; i++)
{
if (!personDiseaseRiskLevels[i].Asbitems.Any())
{
personDiseaseRiskLevels.Remove(personDiseaseRiskLevels[i]);
i--;
}
}
//获取有共同组合项目的风险级别
var newPersonDiseaseRiskLevelDtos = new List<PersonDiseaseRiskLevelDto>();
foreach (var personDiseaseRiskLevel in personDiseaseRiskLevels)
{
@ -1148,7 +1189,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters
}
}
}
return personDiseaseRiskLevels;
personDiseaseRiskLeveWithForbidlCheckDto.DiseaseRiskLevelWithAsbitems = personDiseaseRiskLevels;
return personDiseaseRiskLeveWithForbidlCheckDto;
/*
var questionRegisterDiseaseRiskDtos = diseaseRisks.GroupBy(o => o.diseaseRisk)

Loading…
Cancel
Save