From 9ef271476e0fa98a9dde856a81df4cb4d55f5c9e Mon Sep 17 00:00:00 2001
From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com>
Date: Tue, 18 Jun 2024 00:49:17 +0800
Subject: [PATCH] =?UTF-8?q?=E5=9B=A2=E6=A3=80=E6=8E=A8=E8=8D=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../RecommendCustomerOrgGroupDto.cs | 10 ++
...gePatientRegisterAndRecommendIdInputDto.cs | 24 +++
...MedicalPackagePatientRegisterIdInputDto.cs | 19 +++
.../AppointPatientRegisterAppService.cs | 142 ++++++++++++++++++
src/Shentun.WebPeis.Domain/CacheService.cs | 6 +-
.../AppointPatientRegisterAppServiceTest.cs | 51 +++++++
6 files changed, 251 insertions(+), 1 deletion(-)
create mode 100644 src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendCustomerOrgGroupDto.cs
create mode 100644 src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackagePatientRegisterAndRecommendIdInputDto.cs
create mode 100644 src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackagePatientRegisterIdInputDto.cs
diff --git a/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendCustomerOrgGroupDto.cs b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendCustomerOrgGroupDto.cs
new file mode 100644
index 0000000..76e2613
--- /dev/null
+++ b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendCustomerOrgGroupDto.cs
@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.WebPeis.AppointPatientRegisters
+{
+ public class RecommendCustomerOrgGroupDto
+ {
+ }
+}
diff --git a/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackagePatientRegisterAndRecommendIdInputDto.cs b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackagePatientRegisterAndRecommendIdInputDto.cs
new file mode 100644
index 0000000..3bc1cc1
--- /dev/null
+++ b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackagePatientRegisterAndRecommendIdInputDto.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.WebPeis.AppointPatientRegisters
+{
+ public class RecommendMedicalPackagePatientRegisterAndRecommendIdInputDto
+ {
+ ///
+ /// 人员登记ID
+ ///
+ public Guid PatientRegisterId { get; set; }
+
+ ///
+ /// 人员ID
+ ///
+ public Guid PersonId { get; set; }
+
+ ///
+ /// 推荐ID
+ ///
+ public int RecommendId { get; set; }
+ }
+}
diff --git a/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackagePatientRegisterIdInputDto.cs b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackagePatientRegisterIdInputDto.cs
new file mode 100644
index 0000000..5e65304
--- /dev/null
+++ b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/RecommendMedicalPackagePatientRegisterIdInputDto.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.WebPeis.AppointPatientRegisters
+{
+ public class RecommendMedicalPackagePatientRegisterIdInputDto
+ {
+ ///
+ /// 人员登记ID
+ ///
+ public Guid PatientRegisterId { get; set; }
+
+ ///
+ /// 人员ID
+ ///
+ public Guid PersonId { get; set; }
+ }
+}
diff --git a/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs b/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs
index 71fd0e7..d0cc270 100644
--- a/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs
+++ b/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs
@@ -606,7 +606,149 @@ namespace Shentun.WebPeis.AppointPatientRegisters
}
+
+
///
+ /// 获取团检推荐套餐列表
+ ///
+ ///
+ ///
+ [HttpPost("api/app/AppointPatientRegister/GetCustomerOrgRecommendMedicalPackageListByPatientRegisterId")]
+ public async Task> 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();
+ 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;
+ }
+ ///
+ /// 获取团检预约推荐项目
+ ///
+ ///
+ ///
+ [HttpPost("api/app/AppointPatientRegister/GetCustomerOrgRecommendMedicalPackageByPersonAndRecommendId")]
+ public async Task 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();
+ 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;
+
+ }
/// 获取推荐个人套餐按优先级
///
///
diff --git a/src/Shentun.WebPeis.Domain/CacheService.cs b/src/Shentun.WebPeis.Domain/CacheService.cs
index 8765023..5c04bc4 100644
--- a/src/Shentun.WebPeis.Domain/CacheService.cs
+++ b/src/Shentun.WebPeis.Domain/CacheService.cs
@@ -144,7 +144,11 @@ namespace Shentun.WebPeis
private async Task GetMaritalStatusAsync(char id)
{
-
+ await _maritalStatusCache.SetAsync('A', new MaritalStatus()
+ {
+ MaritalStatusId = id,
+ MaritalStatusName = "全部"
+ });
var entity = await _maritalStatusCache.GetOrAddAsync(
id, //缓存键
async () => (await _maritalStatusRepository.GetQueryableAsync()).Where(o => o.MaritalStatusId == id).Single()
diff --git a/test/Shentun.WebPeis.Application.Tests/AppointPatientRegisterAppServiceTest.cs b/test/Shentun.WebPeis.Application.Tests/AppointPatientRegisterAppServiceTest.cs
index 898d519..891c40f 100644
--- a/test/Shentun.WebPeis.Application.Tests/AppointPatientRegisterAppServiceTest.cs
+++ b/test/Shentun.WebPeis.Application.Tests/AppointPatientRegisterAppServiceTest.cs
@@ -2,6 +2,7 @@
using Shentun.WebPeis.AppointRegisterAsbitems;
using Shentun.WebPeis.Enums;
using Shentun.WebPeis.Models;
+using Shentun.WebPeis.PatientRegisters;
using Shentun.WebPeis.Persons;
using System;
using System.Collections.Generic;
@@ -143,5 +144,55 @@ namespace Shentun.WebPeis
}
}
+
+ [Fact]
+ public async Task GetCustomerOrgRecommendMedicalPackageListByPatientRegisterIdAsync()
+ {
+ using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
+ {
+
+ var entity = new RecommendMedicalPackagePatientRegisterIdInputDto()
+ {
+ PatientRegisterId = new Guid("3a12fb5a-79c2-eea8-4c67-ef101b82287e"),
+ PersonId = new Guid("3a12d72c-19d9-e8b2-71f6-cf283103e191")
+ };
+ var list = await _appService.GetCustomerOrgRecommendMedicalPackageListByPatientRegisterIdAsync(entity);
+ foreach (var item in list)
+ {
+ _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();
+ }
+ }
+
+
+ [Fact]
+ public async Task GetCustomerOrgAppointPatientRegisterByPersonIdAsync()
+ {
+ using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
+ {
+
+ var entity = new PersonIdInputDto()
+ {
+ PersonId = new Guid("3a12d72c-19d9-e8b2-71f6-cf283103e191")
+ };
+ var item = await _appService.GetCustomerOrgAppointPatientRegisterByPersonIdAsync(entity);
+ _output.WriteLine(item.PatientRegisterId.ToString());
+ await unitOfWork.CompleteAsync();
+ }
+ }
+
}
}