Browse Source

预约

master
DESKTOP-G961P6V\Zhh 1 year ago
parent
commit
f400453ae2
  1. 62
      src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/PersonDiseaseRiskLevelDto.cs
  2. 11
      src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackageDto.cs
  3. 55
      src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs
  4. 11
      test/Shentun.WebPeis.Application.Tests/AppointPatientRegisterAppServiceTest.cs

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

@ -32,44 +32,44 @@ namespace Shentun.WebPeis.AppointPatientRegisters
public string DiseaseRiskLevelName { get; set; }
public List<PersonDiseaseRiskLevelAsbitem> Asbitems { get; set; } = new List<PersonDiseaseRiskLevelAsbitem>();
public List<RecommendMedicalPackageAsbitem> Asbitems { get; set; } = new List<RecommendMedicalPackageAsbitem>();
}
public class PersonDiseaseRiskLevelAsbitem
{
/// <summary>
/// 编号
/// </summary>
public Guid AsbitemId { get; set; }
//public class PersonDiseaseRiskLevelAsbitem
//{
// /// <summary>
// /// 编号
// /// </summary>
// public Guid AsbitemId { get; set; }
/// <summary>
/// 名称
/// </summary>
public string AsbitemName { get; set; } = null!;
// /// <summary>
// /// 名称
// /// </summary>
// public string AsbitemName { get; set; } = null!;
/// <summary>
/// 简称
/// </summary>
public string? ShortName { get; set; }
// /// <summary>
// /// 简称
// /// </summary>
// public string? ShortName { get; set; }
/// <summary>
/// 价格
/// </summary>
public decimal Price { get; set; }
/// <summary>
/// 临床意义
/// </summary>
public string? ClinicalMeaning { get; set; }
// /// <summary>
// /// 价格
// /// </summary>
// public decimal Price { get; set; }
// /// <summary>
// /// 临床意义
// /// </summary>
// public string? ClinicalMeaning { get; set; }
/// <summary>
/// 警告事项
/// </summary>
public string? Warn { get; set; }
// /// <summary>
// /// 警告事项
// /// </summary>
// public string? Warn { get; set; }
public char IsBelongMedicalPackage { get; set; }
// public char IsBelongMedicalPackage { get; set; }
public int AsbitemRecommendLevelId { get; set; }
// public int AsbitemRecommendLevelId { get; set; }
public int DisplayOrder { get; set; }
}
// public int DisplayOrder { get; set; }
//}
}

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

@ -80,8 +80,19 @@ namespace Shentun.WebPeis.AppointPatientRegisters
/// </summary>
public string? Warn { get; set; }
/// <summary>
/// 是否属于套餐
/// </summary>
public char IsBelongMedicalPackage { get; set; }
/// <summary>
/// 显示顺序
/// </summary>
public int DisplayOrder { get; set; }
/// <summary>
/// 组合项目推荐级别
/// </summary>
public int AsbitemRecommendLevelId { get; set; }
}
}

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

@ -657,6 +657,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters
{
MedicalPackageId = medicalPackage.MedicalPackageId,
MedicalPackageName = medicalPackage.MedicalPackageName,
Price = medicalPackage.Price,
SumPrice = medicalPackage.Price,
DisplayOrder = medicalPackage.DisplayOrder
};
@ -664,6 +666,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters
var medicalPackageAsbitems = (from medicalPackageDetail in await _medicalPackageDetailRepository.GetQueryableAsync()
join asbitem in await _asbitemRepository.GetQueryableAsync()
on medicalPackageDetail.AsbitemId equals asbitem.AsbitemId
join itemType in await _itemTypeRepository.GetQueryableAsync()
on asbitem.ItemTypeId equals itemType.ItemTypeId
where medicalPackageDetail.MedicalPackageId == medicalPackage.MedicalPackageId
select new RecommendMedicalPackageAsbitem()
{
@ -674,7 +678,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
ClinicalMeaning = asbitem.ClinicalMeaning,
Warn = asbitem.Warn,
IsBelongMedicalPackage = 'Y',
DisplayOrder = asbitem.DisplayOrder
DisplayOrder = itemType.DisplayOrder * 100 + asbitem.DisplayOrder
}).ToList();
recommendMedicalPackageDto.Asbitems.AddRange(medicalPackageAsbitems);
@ -690,14 +694,18 @@ namespace Shentun.WebPeis.AppointPatientRegisters
}
//----推荐组合项目
var personDiseaseRiskLevelDtos = await GetDiseaseRiskListByPersonIdAsync(input.PersonId);
//去掉基本套餐中已经包含的组合项目
foreach (var personDiseaseRiskLevelDto in personDiseaseRiskLevelDtos)
{
foreach (var personDiseaseRiskLevelAsbitem in personDiseaseRiskLevelDto.Asbitems)
for (var i = 0; i< personDiseaseRiskLevelDto.Asbitems.Count; i++ )
{
var personDiseaseRiskLevelAsbitem = personDiseaseRiskLevelDto.Asbitems[i];
if (medicalPackageAsbitems.Where(o => o.AsbitemId == personDiseaseRiskLevelAsbitem.AsbitemId).Any())
{
personDiseaseRiskLevelAsbitem.IsBelongMedicalPackage = 'Y';
personDiseaseRiskLevelDto.Asbitems.Remove(personDiseaseRiskLevelAsbitem);
i --;
}
}
}
@ -705,29 +713,25 @@ namespace Shentun.WebPeis.AppointPatientRegisters
var personDiseaseRiskLevelResultDtos = new List<PersonDiseaseRiskLevelDto>();
foreach (var personDiseaseRiskLevelDto in personDiseaseRiskLevelDtos)
{
var personDiseaseRiskLevelResultDto = new PersonDiseaseRiskLevelDto()
if(personDiseaseRiskLevelDto.Asbitems.Where(o=>o.AsbitemRecommendLevelId == input.RecommendId).Count() > 0)
{
DiseaseRiskId = personDiseaseRiskLevelDto.DiseaseRiskId,
DiseaseRiskName = personDiseaseRiskLevelDto.DiseaseRiskName,
DisplayOrder = personDiseaseRiskLevelDto.DisplayOrder,
DiseaseRiskLevelId = personDiseaseRiskLevelDto.DiseaseRiskLevelId,
DiseaseRiskLevelName = personDiseaseRiskLevelDto.DiseaseRiskLevelName
};
personDiseaseRiskLevelResultDtos.Add(personDiseaseRiskLevelResultDto);
}
//一级推荐组合项目
foreach (var personDiseaseRiskLevelResultDto in personDiseaseRiskLevelResultDtos)
{
var personDiseaseRiskLevelDto = personDiseaseRiskLevelDtos.Where(o =>
o.DiseaseRiskLevelId == personDiseaseRiskLevelResultDto.DiseaseRiskLevelId
).First();
var asbitems = personDiseaseRiskLevelDto.Asbitems.Where(o => o.AsbitemRecommendLevelId == input.RecommendId
|| o.IsBelongMedicalPackage == 'Y')
.ToList();
personDiseaseRiskLevelResultDto.Asbitems.AddRange(asbitems);
//只有有推荐的项目才进入推荐风险项目列表
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.AddRange(personDiseaseRiskLevelResultDtos);
recommendMedicalPackageDto.DiseaseRiskLevelAsbitems = personDiseaseRiskLevelResultDtos;
return recommendMedicalPackageDto;
}
@ -858,7 +862,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters
join asbitem in await _asbitemRepository.GetQueryableAsync()
on diseaseRiskLevelAsbitem.AsbitemId equals asbitem.AsbitemId
where diseaseRiskLevelAsbitem.DiseaseRiskLevelId == diseaseRisk.DiseaseRiskLevelId
select new PersonDiseaseRiskLevelAsbitem()
orderby asbitem.DisplayOrder
select new RecommendMedicalPackageAsbitem()
{
AsbitemId = asbitem.AsbitemId,
AsbitemName = asbitem.AsbitemName,

11
test/Shentun.WebPeis.Application.Tests/AppointPatientRegisterAppServiceTest.cs

@ -125,12 +125,19 @@ namespace Shentun.WebPeis
var list = await _appService.GetRecommendMedicalPackageListByPersonIdAsync(entity);
foreach (var item in list)
{
_output.WriteLine(item.MedicalPackageName);
_output.WriteLine("---------------" + item.MedicalPackageName);
foreach(var item2 in item.Asbitems)
{
_output.WriteLine(item2.AsbitemName + "-" + item2.IsBelongMedicalPackage);
}
foreach (var item2 in item.DiseaseRiskLevelAsbitems)
{
_output.WriteLine("---" + item2.DiseaseRiskName +"-" + item2.DiseaseRiskLevelName + "---");
foreach(var item3 in item2.Asbitems)
{
_output.WriteLine(item3.AsbitemName );
}
}
}
await unitOfWork.CompleteAsync();
}

Loading…
Cancel
Save