Browse Source

团检预约

master
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
2bf9ac2c59
  1. 2
      src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/CreateAppointPatientRegisterDto.cs
  2. 61
      src/Shentun.WebPeis.Application.Contracts/CustomerOrgs/CustomerOrgDto.cs
  3. 11
      src/Shentun.WebPeis.Application.Contracts/CustomerOrgs/CustomerOrgGroupIdInput.cs
  4. 1
      src/Shentun.WebPeis.Application.Contracts/MedicalPackages/MedicalPackageIdInput.cs
  5. 197
      src/Shentun.WebPeis.Application.Contracts/PatientRegisters/PatientRegisterDto.cs
  6. 128
      src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs
  7. 4
      src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs
  8. 107
      src/Shentun.WebPeis.Application/CustomerOrgGroups/CustomerOrgGroupAppService.cs
  9. 58
      src/Shentun.WebPeis.Application/MedicalPackages/MedicalPackageAppservice.cs
  10. 21
      src/Shentun.WebPeis.Application/PatientRegisters/PatientRegisterAppService.cs
  11. 12
      src/Shentun.WebPeis.Application/Persons/PersonAppService.cs
  12. 1
      src/Shentun.WebPeis.Application/Shentun.WebPeis.Application.csproj
  13. 33
      src/Shentun.WebPeis.Domain.Shared/Enums/AppointPatientRegisterCompleteFlag.cs
  14. 8
      src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs
  15. 4
      src/Shentun.WebPeis.Domain/Models/AppointPatientRegister.cs
  16. 17
      src/Shentun.WebPeis.Domain/Models/RegisterCheck.cs
  17. 15
      src/Shentun.WebPeis.Domain/Models/RegisterCheckAsbitem.cs
  18. 1
      src/Shentun.WebPeis.EntityFrameworkCore/Configures/AppointPatientRegisterConfigure.cs

2
src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/CreateAppointPatientRegisterDto.cs

@ -10,10 +10,12 @@ namespace Shentun.WebPeis.AppointPatientRegisters
/// </summary>
public class CreateAppointPatientRegisterDto
{
/// <summary>
/// 人员ID
/// </summary>
public Guid PersonId { get; set; }
public Guid? PatientRegisterId { get; set; }
/// <summary>
/// 单位ID
/// </summary>

61
src/Shentun.WebPeis.Application.Contracts/CustomerOrgs/CustomerOrgDto.cs

@ -0,0 +1,61 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.WebPeis.CustomerOrgs
{
public class CustomerOrgDto
{
/// <summary>
/// 单位ID
/// </summary>
public Guid CustomerOrgId { get; set; }
/// <summary>
/// 单位名称
/// </summary>
public string CustomerOrgName { get; set; } = null!;
/// <summary>
/// 简称
/// </summary>
public string ShortName { get; set; } = null!;
/// <summary>
/// 父编号
/// </summary>
public Guid? ParentId { get; set; }
/// <summary>
/// 路径编码
/// </summary>
public string PathCode { get; set; } = null!;
/// <summary>
/// 拼音简码
/// </summary>
public string SimpleCode { get; set; } = null!;
/// <summary>
/// 备注
/// </summary>
public string? Remark { get; set; }
/// <summary>
/// 状态
/// </summary>
public char IsActive { get; set; }
/// <summary>
/// 显示顺序
/// </summary>
public int DisplayOrder { get; set; }
/// <summary>
/// 体检中心ID
/// </summary>
public Guid MedicalCenterId { get; set; }
}
}

11
src/Shentun.WebPeis.Application.Contracts/CustomerOrgs/CustomerOrgGroupIdInput.cs

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.WebPeis.CustomerOrgs
{
public class CustomerOrgGroupIdInput
{
public Guid CustomerOrgGroupId { get; set; }
}
}

1
src/Shentun.WebPeis.Application.Contracts/MedicalPackages/MedicalPackageIdInput.cs

@ -6,6 +6,7 @@ namespace Shentun.WebPeis.MedicalPackages
{
public class MedicalPackageIdInput
{
public Guid MedicalPackageId { get; set; }
}
}

197
src/Shentun.WebPeis.Application.Contracts/PatientRegisters/PatientRegisterDto.cs

@ -0,0 +1,197 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.WebPeis.PatientRegisters
{
public class PatientRegisterDto
{
/// <summary>
/// 登记流水号
/// </summary>
public Guid PatientRegisterId { get; set; }
/// <summary>
/// 条码号
/// </summary>
public string PatientRegisterNo { get; set; } = null!;
/// <summary>
/// 档案号
/// </summary>
public Guid PatientId { get; set; }
/// <summary>
/// 体检次数
/// </summary>
public short MedicalTimes { get; set; }
/// <summary>
/// 单位编号
/// </summary>
public Guid CustomerOrgId { get; set; }
public string CustomerOrgName { get; set; }
public string ChildCustomerOrgName { get; set; }
/// <summary>
/// 分组
/// </summary>
public Guid? CustomerOrgGroupId { get; set; }
/// <summary>
/// 套餐
/// </summary>
public Guid? MedicalPackageId { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string PatientName { get; set; } = null!;
/// <summary>
/// 性别
/// </summary>
public char SexId { get; set; }
/// <summary>
/// 出生日期
/// </summary>
public DateTime? BirthDate { get; set; }
/// <summary>
/// 年龄
/// </summary>
public short? Age { get; set; }
/// <summary>
/// 工卡号
/// </summary>
public string? JobCardNo { get; set; }
/// <summary>
/// 体检卡号
/// </summary>
public string? MedicalCardNo { get; set; }
/// <summary>
/// 婚姻状况
/// </summary>
public char MaritalStatusId { get; set; }
/// <summary>
/// 体检类别
/// </summary>
public Guid? MedicalTypeId { get; set; }
/// <summary>
/// 人员类别
/// </summary>
public Guid? PersonnelTypeId { get; set; }
/// <summary>
/// 职务
/// </summary>
public string? JobPost { get; set; }
/// <summary>
/// 职称
/// </summary>
public string? JobTitle { get; set; }
/// <summary>
/// 照片
/// </summary>
public string? Photo { get; set; }
/// <summary>
/// 性激素期限
/// </summary>
public Guid? SexHormoneTermId { get; set; }
/// <summary>
/// 干预措施
/// </summary>
public char? InterposeMeasure { get; set; }
/// <summary>
/// 体检结论
/// </summary>
public Guid? MedicalConclusionId { get; set; }
/// <summary>
/// 完成标志
/// </summary>
public char CompleteFlag { get; set; }
/// <summary>
/// 体检开始标志
/// </summary>
public char IsMedicalStart { get; set; }
/// <summary>
/// 体检开始日期
/// </summary>
public DateTime MedicalStartDate { get; set; }
/// <summary>
/// 总检日期
/// </summary>
public DateTime? SummaryDate { get; set; }
/// <summary>
/// 审核
/// </summary>
public char IsAudit { get; set; }
/// <summary>
/// 审核日期
/// </summary>
public DateTime? AuditDate { get; set; }
/// <summary>
/// vip客户
/// </summary>
public char IsVip { get; set; }
/// <summary>
/// 附加第三方信息
/// </summary>
public string? ThirdInfo { get; set; }
/// <summary>
/// 备注
/// </summary>
public string? Remark { get; set; }
/// <summary>
/// 体检中心ID
/// </summary>
public Guid MedicalCenterId { get; set; }
/// <summary>
/// 客户单位登记ID
/// </summary>
public Guid CustomerOrgRegisterId { get; set; }
public string? ConcurrencyStamp { get; set; }
/// <summary>
/// 审核医生
/// </summary>
public Guid? AuditDoctorId { get; set; }
/// <summary>
/// 总检医生
/// </summary>
public Guid? SummaryDoctorId { get; set; }
public string? HisPatientId { get; set; }
public string? ThirdRegisterId { get; set; }
public string? ReportFile { get; set; }
}
}

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

@ -2,8 +2,12 @@
using Microsoft.AspNetCore.Mvc;
using Shentun.WebPeis.AppointRegisterAsbitems;
using Shentun.WebPeis.CustomerOrgs;
using Shentun.WebPeis.Enums;
using Shentun.WebPeis.MedicalPackages;
using Shentun.WebPeis.Models;
using Shentun.WebPeis.OrganizationUnits;
using Shentun.WebPeis.PatientRegisters;
using Shentun.WebPeis.Persons;
using System;
using System.Collections;
using System.Collections.Generic;
@ -40,6 +44,10 @@ namespace Shentun.WebPeis.AppointPatientRegisters
private readonly AppointPatientRegisterManager _appointPatientRegisterManager;
private readonly CustomerOrgManager _customerOrgManager;
private readonly WebPeisOrganizationUnitManager _webPeisOrganizationUnitManager;
private readonly IRepository<PatientRegister> _patientRegisterRepository;
private readonly IRepository<Patient> _patientRepository;
private readonly IRepository<RegisterCheck> _registerCheckRepository;
private readonly IRepository<RegisterCheckAsbitem> _registerCheckAsbitemRepository;
public AppointPatientRegisterAppService(IRepository<AppointPatientRegister> repository,
CacheService cacheService,
IRepository<ItemType> itemTypeRepository,
@ -54,7 +62,11 @@ namespace Shentun.WebPeis.AppointPatientRegisters
IRepository<CustomerOrg> customerOrgRepository,
IRepository<MedicalPackageDetail> medicalPackageDetailRepository,
IRepository<CustomerOrgGroupDetail> customerOrgGroupDetailRepository,
WebPeisOrganizationUnitManager webPeisOrganizationUnitManager
WebPeisOrganizationUnitManager webPeisOrganizationUnitManager,
IRepository<PatientRegister> patientRegisterRepository,
IRepository<Patient> patientRepository,
IRepository<RegisterCheck> registerCheckRepository,
IRepository<RegisterCheckAsbitem> registerCheckAsbitemRepository
)
{
_repository = repository;
@ -72,6 +84,10 @@ namespace Shentun.WebPeis.AppointPatientRegisters
_medicalPackageDetailRepository = medicalPackageDetailRepository;
_customerOrgGroupDetailRepository = customerOrgGroupDetailRepository;
_webPeisOrganizationUnitManager = webPeisOrganizationUnitManager;
_patientRegisterRepository = patientRegisterRepository;
_patientRepository = patientRepository;
_registerCheckAsbitemRepository = registerCheckAsbitemRepository;
_registerCheckRepository = registerCheckRepository;
}
@ -296,5 +312,115 @@ namespace Shentun.WebPeis.AppointPatientRegisters
.OrderBy(o=>o.DisplayOrder).ToList();
return appointRegisterAsbitemDtos;
}
/// <summary>
/// 获取单位预约病人
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/AppointPatientRegister/GetCustomerOrgAppointPatientRegisterByPersonId")]
public async Task<PatientRegisterDto> GetCustomerOrgAppointPatientRegisterByPersonIdAsync(PersonIdInputDto input)
{
var patientRegisterDto = (from user in await _identityUserRepository.GetQueryableAsync()
join person in await _personRepository.GetQueryableAsync()
on user.Id equals person.PersonId
join patient in await _patientRepository.GetQueryableAsync()
on new { idNo = person.IdNo, phone = user.PhoneNumber } equals new { idNo = patient.IdNo, phone = patient.MobileTelephone }
join patientRegister in await _patientRegisterRepository.GetQueryableAsync()
on patient.PatientId equals patientRegister.PatientId
join customerOrg in await _customerOrgRepository.GetQueryableAsync()
on patientRegister.CustomerOrgId equals customerOrg.CustomerOrgId
where user.Id == input.PersonId &&
(patientRegister.CompleteFlag == PatientRegisterCompleteFlag.PreRegistration ||
patientRegister.CompleteFlag == PatientRegisterCompleteFlag.Registration) &&
patientRegister.MedicalStartDate >= DateTime.Now.Date.AddDays(-365)
orderby patientRegister.MedicalStartDate descending
select new PatientRegisterDto()
{
PatientRegisterId = patientRegister.PatientRegisterId,
CustomerOrgId = customerOrg.CustomerOrgId,
ChildCustomerOrgName = customerOrg.CustomerOrgName,
CustomerOrgRegisterId = patientRegister.CustomerOrgRegisterId,
CustomerOrgGroupId = patientRegister.CustomerOrgGroupId,
}).FirstOrDefault();
if (patientRegisterDto == null)
{
return patientRegisterDto;
}
var customerOrgEntity = await _customerOrgRepository.GetAsync(o => o.CustomerOrgId == patientRegisterDto.CustomerOrgId);
customerOrgEntity = await _customerOrgRepository.GetAsync(o => o.PathCode == customerOrgEntity.PathCode.Substring(0, 5));
patientRegisterDto.CustomerOrgName = customerOrgEntity.CustomerOrgName;
return patientRegisterDto;
}
/// <summary>
/// 获取团检中个人备案项目
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/AppointPatientRegister/GetCheckTypeWithAsbitemsListByPatientRegisterId")]
public async Task<List<MedicalPackageCheckTypeWithAsbitemsDto>> GetCheckTypeWithAsbitemsListByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
{
//获取团检个人所有组合项目
var asbitems = (from registerCheck in await _registerCheckRepository.GetQueryableAsync()
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
on registerCheck.RegisterCheckId equals registerCheckAsbitem.RegisterCheckId
join asbitem in await _asbitemRepository.GetQueryableAsync()
on registerCheckAsbitem.AsbitemId equals asbitem.AsbitemId
where registerCheck.PatientRegisterId == input.PatientRegisterId
select new MedicalPackageAsbitem()
{
ItemTypeId = asbitem.ItemTypeId,
AsbitemId = asbitem.AsbitemId,
AsbitemName = asbitem.AsbitemName,
ShortName = asbitem.ShortName,
Price = asbitem.Price,
ForSexId = asbitem.ForSexId,
//ForSexName = _cacheService.GetForSexNameAsync(asbitem.ForSexId).Result,
IsBeforeEat = asbitem.IsBeforeEat,
ClinicalMeaning = asbitem.ClinicalMeaning,
IsCheck = asbitem.IsCheck,
Warn = asbitem.Warn,
DiseaseScreeningTypeId = asbitem.DiseaseScreeningTypeId,
SimpleCode = asbitem.SimpleCode,
DisplayOrder = asbitem.DisplayOrder,
}
).ToList();
//获取检查分类
var medicalPackageAsbitemDtos = new List<MedicalPackageCheckTypeWithAsbitemsDto>()
{
new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag = CheckTypeFlag.Regular,CheckTypeFlagName = "科室检查",DisplayOrder = 1},
new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag = CheckTypeFlag.Laboratory,CheckTypeFlagName = "检验",DisplayOrder = 2},
new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag =CheckTypeFlag.SpecialInspection,CheckTypeFlagName = "特检",DisplayOrder = 3},
new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag = CheckTypeFlag.Radiology,CheckTypeFlagName = "放射",DisplayOrder = 4}
};
var itemTypes = await _itemTypeRepository.GetListAsync();
foreach (var asbitem in asbitems)
{
asbitem.ForSexName = await _cacheService.GetForSexNameAsync(asbitem.ForSexId);
var itemType = itemTypes.Where(o => o.ItemTypeId == asbitem.ItemTypeId).Single();
if (itemType.PathCode.Length > 5)
{
itemType = itemTypes.Where(o => o.PathCode == itemType.PathCode.Substring(0, 5)).Single();
asbitem.ItemTypeId = itemType.ItemTypeId;
}
asbitem.CheckTypeFlag = itemType.CheckTypeFlag;
}
//设置每个分类包含的组合项目
foreach (var medicalPackageAsbitemDto in medicalPackageAsbitemDtos)
{
medicalPackageAsbitemDto.Asbitems = asbitems.Where(o => o.CheckTypeFlag == medicalPackageAsbitemDto.CheckTypeFlag).ToList();
}
return medicalPackageAsbitemDtos;
}
}
}

4
src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs

@ -36,6 +36,10 @@ namespace Shentun.WebPeis.Asbitems
_diseaseScreeningTypeRepository = diseaseScreeningTypeRepository;
}
/// <summary>
/// 获取组合项目列表
/// </summary>
/// <returns></returns>
[HttpPost("api/app/Asbitem/GetDiseaseScreeningTypeAsbitemList")]
//[AllowAnonymous]
public async Task<List<DiseaseScreeningTypeAsbitemDto>> GetDiseaseScreeningTypeAsbitemListAsync()

107
src/Shentun.WebPeis.Application/CustomerOrgGroups/CustomerOrgGroupAppService.cs

@ -0,0 +1,107 @@
using Microsoft.AspNetCore.Mvc;
using Shentun.WebPeis.customerOrgGroups;
using Shentun.WebPeis.CustomerOrgs;
using Shentun.WebPeis.Enums;
using Shentun.WebPeis.MedicalPackages;
using Shentun.WebPeis.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
namespace Shentun.WebPeis.CustomerOrgGroups
{
public class CustomerOrgGroupAppService : ApplicationService
{
private readonly IRepository<CustomerOrgGroup> _repository;
private readonly IRepository<Asbitem> _asbitemRepository;
private readonly IRepository<ItemType> _itemTypeRepository;
private readonly IRepository<CustomerOrgGroupDetail> _customerOrgGroupDetailRepository;
private readonly CacheService _cacheService;
public CustomerOrgGroupAppService(IRepository<CustomerOrgGroup> repository,
CacheService cacheService,
IRepository<Asbitem> asbitemRepository,
IRepository<CustomerOrgGroupDetail> customerOrgGroupDetailRepository,
IRepository<ItemType> itemTypeRepository
)
{
_repository = repository;
_cacheService = cacheService;
_asbitemRepository = asbitemRepository;
_customerOrgGroupDetailRepository = customerOrgGroupDetailRepository;
_itemTypeRepository = itemTypeRepository;
}
/*
/// <summary>
/// 获取分组组合项目,暂时不起作用,由GetCheckTypeWithAsbitemsListByMedicalPackageId取代
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/CustomerOrgGroup/GetCheckTypeWithAsbitemsListByCustomerOrgGroupId")]
//[AllowAnonymous]
public async Task<List<MedicalPackageCheckTypeWithAsbitemsDto>> GetCheckTypeWithAsbitemsListByCustomerOrgGroupIdAsync(CustomerOrgGroupIdInput input)
{
//获取套餐所有组合项目
var asbitems = (from customerOrgGroupDetail in await _customerOrgGroupDetailRepository.GetQueryableAsync()
join asbitem in await _asbitemRepository.GetQueryableAsync()
on customerOrgGroupDetail.AsbitemId equals asbitem.AsbitemId
where customerOrgGroupDetail.CustomerOrgGroupId == input.CustomerOrgGroupId
select new MedicalPackageAsbitem()
{
ItemTypeId = asbitem.ItemTypeId,
AsbitemId = asbitem.AsbitemId,
AsbitemName = asbitem.AsbitemName,
ShortName = asbitem.ShortName,
Price = asbitem.Price,
ForSexId = asbitem.ForSexId,
//ForSexName = _cacheService.GetForSexNameAsync(asbitem.ForSexId).Result,
IsBeforeEat = asbitem.IsBeforeEat,
ClinicalMeaning = asbitem.ClinicalMeaning,
IsCheck = asbitem.IsCheck,
Warn = asbitem.Warn,
DiseaseScreeningTypeId = asbitem.DiseaseScreeningTypeId,
SimpleCode = asbitem.SimpleCode,
DisplayOrder = asbitem.DisplayOrder,
}
).ToList();
//获取检查分类
var customerOrgGroupAsbitemDtos = new List<MedicalPackageCheckTypeWithAsbitemsDto>()
{
new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag = CheckTypeFlag.Regular,CheckTypeFlagName = "科室检查",DisplayOrder = 1},
new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag = CheckTypeFlag.Laboratory,CheckTypeFlagName = "检验",DisplayOrder = 2},
new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag =CheckTypeFlag.SpecialInspection,CheckTypeFlagName = "特检",DisplayOrder = 3},
new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag = CheckTypeFlag.Radiology,CheckTypeFlagName = "放射",DisplayOrder = 4}
};
var itemTypes = await _itemTypeRepository.GetListAsync();
foreach (var asbitem in asbitems)
{
asbitem.ForSexName = await _cacheService.GetForSexNameAsync(asbitem.ForSexId);
var itemType = itemTypes.Where(o => o.ItemTypeId == asbitem.ItemTypeId).Single();
if (itemType.PathCode.Length > 5)
{
itemType = itemTypes.Where(o => o.PathCode == itemType.PathCode.Substring(0, 5)).Single();
asbitem.ItemTypeId = itemType.ItemTypeId;
}
asbitem.CheckTypeFlag = itemType.CheckTypeFlag;
}
//设置每个分类包含的组合项目
foreach (var customerOrgGroupAsbitemDto in customerOrgGroupAsbitemDtos)
{
customerOrgGroupAsbitemDto.Asbitems = asbitems.Where(o => o.CheckTypeFlag == customerOrgGroupAsbitemDto.CheckTypeFlag).ToList();
}
return customerOrgGroupAsbitemDtos;
}
*/
}
}

58
src/Shentun.WebPeis.Application/MedicalPackages/MedicalPackageAppservice.cs

@ -21,13 +21,16 @@ namespace Shentun.WebPeis.MedicalPackages
private readonly IRepository<Asbitem> _asbitemRepository;
private readonly IRepository<ItemType> _itemTypeRepository;
private readonly IRepository<MedicalPackageDetail> _medicalPackageDetailRepository;
private readonly IRepository<CustomerOrgGroupDetail> _customerOrgGroupDetailRepository;
private readonly CacheService _cacheService;
public MedicalPackageAppService(IRepository<MedicalPackage> repository,
CacheService cacheService,
IRepository<Asbitem> asbitemRepository,
IRepository<MedicalPackageDetail> medicalPackageDetailRepository,
IRepository<ItemType> itemTypeRepository
IRepository<ItemType> itemTypeRepository,
IRepository<CustomerOrgGroupDetail> customerOrgGroupDetailRepository
)
{
_repository = repository;
@ -35,7 +38,7 @@ namespace Shentun.WebPeis.MedicalPackages
_asbitemRepository = asbitemRepository;
_medicalPackageDetailRepository = medicalPackageDetailRepository;
_itemTypeRepository = itemTypeRepository;
_customerOrgGroupDetailRepository = customerOrgGroupDetailRepository;
}
/// <summary>
/// 获取能预约的套餐信息
@ -57,7 +60,7 @@ namespace Shentun.WebPeis.MedicalPackages
}
/// <summary>
/// 获取套餐组合项目
/// 获取套餐或单位分组组合项目
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
@ -67,27 +70,28 @@ namespace Shentun.WebPeis.MedicalPackages
{
//获取套餐所有组合项目
var asbitems = (from medicalPackageDetail in await _medicalPackageDetailRepository.GetQueryableAsync()
join asbitem in await _asbitemRepository.GetQueryableAsync()
on medicalPackageDetail.AsbitemId equals asbitem.AsbitemId
where medicalPackageDetail.MedicalPackageId == input.MedicalPackageId
select new MedicalPackageAsbitem()
{
ItemTypeId = asbitem.ItemTypeId,
AsbitemId = asbitem.AsbitemId,
AsbitemName = asbitem.AsbitemName,
ShortName = asbitem.ShortName,
Price = asbitem.Price,
ForSexId = asbitem.ForSexId,
//ForSexName = _cacheService.GetForSexNameAsync(asbitem.ForSexId).Result,
IsBeforeEat = asbitem.IsBeforeEat,
ClinicalMeaning = asbitem.ClinicalMeaning,
IsCheck = asbitem.IsCheck,
Warn = asbitem.Warn,
DiseaseScreeningTypeId = asbitem.DiseaseScreeningTypeId,
SimpleCode = asbitem.SimpleCode,
DisplayOrder = asbitem.DisplayOrder,
}
).ToList();
join asbitem in await _asbitemRepository.GetQueryableAsync()
on medicalPackageDetail.AsbitemId equals asbitem.AsbitemId
where medicalPackageDetail.MedicalPackageId == input.MedicalPackageId
select new MedicalPackageAsbitem()
{
ItemTypeId = asbitem.ItemTypeId,
AsbitemId = asbitem.AsbitemId,
AsbitemName = asbitem.AsbitemName,
ShortName = asbitem.ShortName,
Price = asbitem.Price,
ForSexId = asbitem.ForSexId,
//ForSexName = _cacheService.GetForSexNameAsync(asbitem.ForSexId).Result,
IsBeforeEat = asbitem.IsBeforeEat,
ClinicalMeaning = asbitem.ClinicalMeaning,
IsCheck = asbitem.IsCheck,
Warn = asbitem.Warn,
DiseaseScreeningTypeId = asbitem.DiseaseScreeningTypeId,
SimpleCode = asbitem.SimpleCode,
DisplayOrder = asbitem.DisplayOrder,
}
).ToList();
//获取检查分类
var medicalPackageAsbitemDtos = new List<MedicalPackageCheckTypeWithAsbitemsDto>()
@ -97,7 +101,7 @@ namespace Shentun.WebPeis.MedicalPackages
new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag =CheckTypeFlag.SpecialInspection,CheckTypeFlagName = "特检",DisplayOrder = 3},
new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag = CheckTypeFlag.Radiology,CheckTypeFlagName = "放射",DisplayOrder = 4}
};
var itemTypes = await _itemTypeRepository.GetListAsync();
foreach (var asbitem in asbitems)
{
@ -111,9 +115,9 @@ namespace Shentun.WebPeis.MedicalPackages
asbitem.CheckTypeFlag = itemType.CheckTypeFlag;
}
//设置每个分类包含的组合项目
foreach(var medicalPackageAsbitemDto in medicalPackageAsbitemDtos)
foreach (var medicalPackageAsbitemDto in medicalPackageAsbitemDtos)
{
medicalPackageAsbitemDto.Asbitems = asbitems.Where(o=>o.CheckTypeFlag == medicalPackageAsbitemDto.CheckTypeFlag).ToList();
medicalPackageAsbitemDto.Asbitems = asbitems.Where(o => o.CheckTypeFlag == medicalPackageAsbitemDto.CheckTypeFlag).ToList();
}

21
src/Shentun.WebPeis.Application/PatientRegisters/PatientRegisterAppService.cs

@ -3,6 +3,8 @@ using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Shentun.Utilities;
using Shentun.WebPeis.Enums;
using Shentun.WebPeis.MedicalPackages;
using Shentun.WebPeis.Models;
using System;
using System.Collections.Generic;
@ -22,11 +24,26 @@ namespace Shentun.WebPeis.PatientRegisters
private readonly IConfiguration _configuration;
private readonly IRepository<PatientRegister> _patientRegisterRepository;
private readonly IRepository<RegisterCheck> _registerCheckRepository;
private readonly IRepository<RegisterCheckAsbitem> _registerCheckAsbitemRepository;
private readonly IRepository<Asbitem> _asbitemRepository;
private readonly IRepository<ItemType> _itemTypeRepository;
private readonly CacheService _cacheService;
public PatientRegisterAppService(IRepository<PatientRegister> patientRegisterRepository,
IConfiguration configuration)
IConfiguration configuration,
IRepository<Asbitem> asbitemRepository,
IRepository<ItemType> itemTypeRepository,
IRepository<RegisterCheck> registerCheckRepository,
IRepository<RegisterCheckAsbitem> registerCheckAsbitemRepository,
CacheService cacheService)
{
_patientRegisterRepository = patientRegisterRepository;
_configuration = configuration;
_asbitemRepository = asbitemRepository;
_itemTypeRepository = itemTypeRepository;
_registerCheckAsbitemRepository = registerCheckAsbitemRepository;
_registerCheckRepository = registerCheckRepository;
_cacheService = cacheService;
}
/// <summary>
@ -105,5 +122,7 @@ namespace Shentun.WebPeis.PatientRegisters
return patientRegisterReportDto;
}
}
}

12
src/Shentun.WebPeis.Application/Persons/PersonAppService.cs

@ -33,6 +33,7 @@ using System.IdentityModel.Tokens.Jwt;
using Shentun.WebPeis.PatientRegisters;
using Microsoft.AspNetCore.Http;
using System.IO;
using Shentun.WebPeis.CustomerOrgs;
namespace Shentun.WebPeis.Persons
{
/// <summary>
@ -55,6 +56,7 @@ namespace Shentun.WebPeis.Persons
private readonly IRepository<Patient> _patientRepository;
private readonly CacheService _cacheService;
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IRepository<CustomerOrg> _customerOrgRepository;
public PersonAppService(IRepository<Person> repository,
IConfiguration configuration,
IRepository<Volo.Abp.Identity.IdentityUser, Guid> identityUserRepository,
@ -66,7 +68,8 @@ namespace Shentun.WebPeis.Persons
IRepository<PatientRegister> patientRegisterRepository,
IRepository<Patient> patientRepository,
CacheService cacheService,
IHttpContextAccessor httpContextAccessor)
IHttpContextAccessor httpContextAccessor,
IRepository<CustomerOrg> customerOrgRepository)
{
_repository = repository;
_configuration = configuration;
@ -80,6 +83,7 @@ namespace Shentun.WebPeis.Persons
_patientRepository = patientRepository;
_cacheService = cacheService;
_httpContextAccessor = httpContextAccessor;
_customerOrgRepository = customerOrgRepository;
}
public async Task<PersonDto> GetByIdAsync(PersonIdInputDto input)
@ -286,7 +290,8 @@ namespace Shentun.WebPeis.Persons
on new { idNo = person.IdNo ,phone = user.PhoneNumber} equals new { idNo = patient.IdNo, phone = patient.MobileTelephone }
join patientRegister in await _patientRegisterRepository.GetQueryableAsync()
on patient.PatientId equals patientRegister.PatientId
where user.Id == input.PersonId
where user.Id == input.PersonId &&
( patientRegister.CompleteFlag == PatientRegisterCompleteFlag.Audit)
orderby patientRegister.MedicalStartDate
select new PersonMedicalTimesDto()
{
@ -361,6 +366,9 @@ namespace Shentun.WebPeis.Persons
return returnValue;
}
private async Task<UserTokenDto> GetTokenAsync(string request)
{
using var client = new HttpClient();

1
src/Shentun.WebPeis.Application/Shentun.WebPeis.Application.csproj

@ -29,6 +29,7 @@
<ItemGroup>
<Folder Include="Sexs\" />
<Folder Include="CustomerOrgs\" />
</ItemGroup>
</Project>

33
src/Shentun.WebPeis.Domain.Shared/Enums/AppointPatientRegisterCompleteFlag.cs

@ -8,33 +8,20 @@ namespace Shentun.WebPeis.Enums
public class AppointPatientRegisterCompleteFlag
{
/// <summary>
/// 预登记 0
/// 预 0
/// </summary>
[Description("预登记")]
public const char PreRegistration = '0';
[Description("预")]
public const char Appoint = '0';
/// <summary>
/// 正式登记 1
/// 取消预约 1
/// </summary>
[Description("正式登记")]
public const char Registration = '1';
[Description("取消预约")]
public const char CancelAppoint = '1';
/// <summary>
/// 部分已检 2
/// 已
/// </summary>
[Description("部分已检")]
public const char PartCheck = '2';
/// <summary>
/// 已总检 3
/// </summary>
[Description("已总检")]
public const char SumCheck = '3';
[Description("已审核")]
public const char Audit = '4';
/// <summary>
/// 项目全部已检未总检
/// </summary>
[Description("项目全部已检未总检")]
public const char ItemCheckUnSumCheck = '5';
[Description("已到检")]
public const char Check = '2';
}
}

8
src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs

@ -67,6 +67,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
{
await Verify(entity);
entity.AppointPatientRegisterId = GuidGenerator.Create();
entity.CompleteFlag = AppointPatientRegisterCompleteFlag.Appoint;
foreach (var appointRegisterAsbitem in entity.AppointRegisterAsbitems)
{
appointRegisterAsbitem.AppointPatientRegisterId = entity.AppointPatientRegisterId;
@ -127,6 +128,11 @@ namespace Shentun.WebPeis.AppointPatientRegisters
{
throw new UserFriendlyException("单位体检不能选套餐");
}
if(entity.PatientRegisterId == null || entity.PatientRegisterId == Guid.Empty)
{
throw new UserFriendlyException("团检预约必须有人员备案登记编号");
}
}
var customerOrgRegister = await _customerOrgRegisterRepository.FindAsync(o => o.CustomerOrgRegisterId == entity.CustomerOrgRegisterId);
@ -159,7 +165,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
}
});
}
if (entity.CustomerOrgGroupId != null)
{
var customerOrgGroupDetails = await _customerOrgGroupDetailRepository

4
src/Shentun.WebPeis.Domain/Models/AppointPatientRegister.cs

@ -73,6 +73,10 @@ public partial class AppointPatientRegister: AuditedEntity, IHasConcurrencyStamp
/// </summary>
public decimal? Weight { get; set; }
/// <summary>
/// 人员登记ID
/// </summary>
public Guid? PatientRegisterId { get; set; }
/// <summary>
/// 收费
/// </summary>
public virtual ICollection<Charge> Charges { get; set; } = new List<Charge>();

17
src/Shentun.WebPeis.Domain/Models/RegisterCheck.cs

@ -1,12 +1,14 @@
using System;
using System.Collections.Generic;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.Domain.Entities;
namespace Shentun.WebPeis.Models;
/// <summary>
/// 登记检查单
/// </summary>
public partial class RegisterCheck
public partial class RegisterCheck : AuditedEntity, IHasConcurrencyStamp
{
public Guid RegisterCheckId { get; set; }
@ -89,13 +91,7 @@ public partial class RegisterCheck
public string? ConcurrencyStamp { get; set; }
public DateTime CreationTime { get; set; }
public Guid CreatorId { get; set; }
public DateTime LastModificationTime { get; set; }
public Guid LastModifierId { get; set; }
public Guid? ExecOrganizationUnitId { get; set; }
@ -106,4 +102,9 @@ public partial class RegisterCheck
public virtual ICollection<RegisterCheckSuggestion> RegisterCheckSuggestions { get; set; } = new List<RegisterCheckSuggestion>();
public virtual ICollection<RegisterCheckSummary> RegisterCheckSummaries { get; set; } = new List<RegisterCheckSummary>();
public override object?[] GetKeys()
{
return [RegisterCheckId];
}
}

15
src/Shentun.WebPeis.Domain/Models/RegisterCheckAsbitem.cs

@ -1,12 +1,14 @@
using System;
using System.Collections.Generic;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.Domain.Entities;
namespace Shentun.WebPeis.Models;
/// <summary>
/// 检查组合项目记录
/// </summary>
public partial class RegisterCheckAsbitem
public partial class RegisterCheckAsbitem : AuditedEntity, IHasConcurrencyStamp
{
/// <summary>
/// 主键
@ -52,11 +54,10 @@ public partial class RegisterCheckAsbitem
public string? ConcurrencyStamp { get; set; }
public DateTime CreationTime { get; set; }
public Guid CreatorId { get; set; }
public DateTime LastModificationTime { get; set; }
public Guid LastModifierId { get; set; }
public override object?[] GetKeys()
{
return [RegisterCheckAsbitemId];
}
}

1
src/Shentun.WebPeis.EntityFrameworkCore/Configures/AppointPatientRegisterConfigure.cs

@ -49,6 +49,7 @@ namespace Shentun.WebPeis.Configures
.HasColumnType("timestamp(6) without time zone")
.HasColumnName("appoint_date");
entity.Property(e => e.PersonId).HasColumnName("person_id");
entity.Property(e => e.PatientRegisterId).HasColumnName("patient_register_id");
entity.Property(e => e.Remark)
.HasMaxLength(200)
.HasColumnName("remark");

Loading…
Cancel
Save