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. 14
      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. 31
      src/Shentun.WebPeis.Domain.Shared/Enums/AppointPatientRegisterCompleteFlag.cs
  14. 6
      src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs
  15. 4
      src/Shentun.WebPeis.Domain/Models/AppointPatientRegister.cs
  16. 15
      src/Shentun.WebPeis.Domain/Models/RegisterCheck.cs
  17. 13
      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> /// </summary>
public class CreateAppointPatientRegisterDto public class CreateAppointPatientRegisterDto
{ {
/// <summary> /// <summary>
/// 人员ID /// 人员ID
/// </summary> /// </summary>
public Guid PersonId { get; set; } public Guid PersonId { get; set; }
public Guid? PatientRegisterId { get; set; }
/// <summary> /// <summary>
/// 单位ID /// 单位ID
/// </summary> /// </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 class MedicalPackageIdInput
{ {
public Guid MedicalPackageId { get; set; } 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 Microsoft.AspNetCore.Mvc;
using Shentun.WebPeis.AppointRegisterAsbitems; using Shentun.WebPeis.AppointRegisterAsbitems;
using Shentun.WebPeis.CustomerOrgs; using Shentun.WebPeis.CustomerOrgs;
using Shentun.WebPeis.Enums;
using Shentun.WebPeis.MedicalPackages;
using Shentun.WebPeis.Models; using Shentun.WebPeis.Models;
using Shentun.WebPeis.OrganizationUnits; using Shentun.WebPeis.OrganizationUnits;
using Shentun.WebPeis.PatientRegisters;
using Shentun.WebPeis.Persons;
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
@ -40,6 +44,10 @@ namespace Shentun.WebPeis.AppointPatientRegisters
private readonly AppointPatientRegisterManager _appointPatientRegisterManager; private readonly AppointPatientRegisterManager _appointPatientRegisterManager;
private readonly CustomerOrgManager _customerOrgManager; private readonly CustomerOrgManager _customerOrgManager;
private readonly WebPeisOrganizationUnitManager _webPeisOrganizationUnitManager; 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, public AppointPatientRegisterAppService(IRepository<AppointPatientRegister> repository,
CacheService cacheService, CacheService cacheService,
IRepository<ItemType> itemTypeRepository, IRepository<ItemType> itemTypeRepository,
@ -54,7 +62,11 @@ namespace Shentun.WebPeis.AppointPatientRegisters
IRepository<CustomerOrg> customerOrgRepository, IRepository<CustomerOrg> customerOrgRepository,
IRepository<MedicalPackageDetail> medicalPackageDetailRepository, IRepository<MedicalPackageDetail> medicalPackageDetailRepository,
IRepository<CustomerOrgGroupDetail> customerOrgGroupDetailRepository, IRepository<CustomerOrgGroupDetail> customerOrgGroupDetailRepository,
WebPeisOrganizationUnitManager webPeisOrganizationUnitManager
WebPeisOrganizationUnitManager webPeisOrganizationUnitManager,
IRepository<PatientRegister> patientRegisterRepository,
IRepository<Patient> patientRepository,
IRepository<RegisterCheck> registerCheckRepository,
IRepository<RegisterCheckAsbitem> registerCheckAsbitemRepository
) )
{ {
_repository = repository; _repository = repository;
@ -72,6 +84,10 @@ namespace Shentun.WebPeis.AppointPatientRegisters
_medicalPackageDetailRepository = medicalPackageDetailRepository; _medicalPackageDetailRepository = medicalPackageDetailRepository;
_customerOrgGroupDetailRepository = customerOrgGroupDetailRepository; _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository;
_webPeisOrganizationUnitManager = webPeisOrganizationUnitManager; _webPeisOrganizationUnitManager = webPeisOrganizationUnitManager;
_patientRegisterRepository = patientRegisterRepository;
_patientRepository = patientRepository;
_registerCheckAsbitemRepository = registerCheckAsbitemRepository;
_registerCheckRepository = registerCheckRepository;
} }
@ -296,5 +312,115 @@ namespace Shentun.WebPeis.AppointPatientRegisters
.OrderBy(o=>o.DisplayOrder).ToList(); .OrderBy(o=>o.DisplayOrder).ToList();
return appointRegisterAsbitemDtos; 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; _diseaseScreeningTypeRepository = diseaseScreeningTypeRepository;
} }
/// <summary>
/// 获取组合项目列表
/// </summary>
/// <returns></returns>
[HttpPost("api/app/Asbitem/GetDiseaseScreeningTypeAsbitemList")] [HttpPost("api/app/Asbitem/GetDiseaseScreeningTypeAsbitemList")]
//[AllowAnonymous] //[AllowAnonymous]
public async Task<List<DiseaseScreeningTypeAsbitemDto>> GetDiseaseScreeningTypeAsbitemListAsync() 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;
}
*/
}
}

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

@ -21,13 +21,16 @@ namespace Shentun.WebPeis.MedicalPackages
private readonly IRepository<Asbitem> _asbitemRepository; private readonly IRepository<Asbitem> _asbitemRepository;
private readonly IRepository<ItemType> _itemTypeRepository; private readonly IRepository<ItemType> _itemTypeRepository;
private readonly IRepository<MedicalPackageDetail> _medicalPackageDetailRepository; private readonly IRepository<MedicalPackageDetail> _medicalPackageDetailRepository;
private readonly IRepository<CustomerOrgGroupDetail> _customerOrgGroupDetailRepository;
private readonly CacheService _cacheService; private readonly CacheService _cacheService;
public MedicalPackageAppService(IRepository<MedicalPackage> repository, public MedicalPackageAppService(IRepository<MedicalPackage> repository,
CacheService cacheService, CacheService cacheService,
IRepository<Asbitem> asbitemRepository, IRepository<Asbitem> asbitemRepository,
IRepository<MedicalPackageDetail> medicalPackageDetailRepository, IRepository<MedicalPackageDetail> medicalPackageDetailRepository,
IRepository<ItemType> itemTypeRepository
IRepository<ItemType> itemTypeRepository,
IRepository<CustomerOrgGroupDetail> customerOrgGroupDetailRepository
) )
{ {
_repository = repository; _repository = repository;
@ -35,7 +38,7 @@ namespace Shentun.WebPeis.MedicalPackages
_asbitemRepository = asbitemRepository; _asbitemRepository = asbitemRepository;
_medicalPackageDetailRepository = medicalPackageDetailRepository; _medicalPackageDetailRepository = medicalPackageDetailRepository;
_itemTypeRepository = itemTypeRepository; _itemTypeRepository = itemTypeRepository;
_customerOrgGroupDetailRepository = customerOrgGroupDetailRepository;
} }
/// <summary> /// <summary>
/// 获取能预约的套餐信息 /// 获取能预约的套餐信息
@ -57,7 +60,7 @@ namespace Shentun.WebPeis.MedicalPackages
} }
/// <summary> /// <summary>
/// 获取套餐组合项目
/// 获取套餐或单位分组组合项目
/// </summary> /// </summary>
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
@ -89,6 +92,7 @@ namespace Shentun.WebPeis.MedicalPackages
} }
).ToList(); ).ToList();
//获取检查分类 //获取检查分类
var medicalPackageAsbitemDtos = new List<MedicalPackageCheckTypeWithAsbitemsDto>() var medicalPackageAsbitemDtos = new List<MedicalPackageCheckTypeWithAsbitemsDto>()
{ {
@ -111,9 +115,9 @@ namespace Shentun.WebPeis.MedicalPackages
asbitem.CheckTypeFlag = itemType.CheckTypeFlag; 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.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Shentun.Utilities; using Shentun.Utilities;
using Shentun.WebPeis.Enums;
using Shentun.WebPeis.MedicalPackages;
using Shentun.WebPeis.Models; using Shentun.WebPeis.Models;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -22,11 +24,26 @@ namespace Shentun.WebPeis.PatientRegisters
private readonly IConfiguration _configuration; private readonly IConfiguration _configuration;
private readonly IRepository<PatientRegister> _patientRegisterRepository; 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, 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; _patientRegisterRepository = patientRegisterRepository;
_configuration = configuration; _configuration = configuration;
_asbitemRepository = asbitemRepository;
_itemTypeRepository = itemTypeRepository;
_registerCheckAsbitemRepository = registerCheckAsbitemRepository;
_registerCheckRepository = registerCheckRepository;
_cacheService = cacheService;
} }
/// <summary> /// <summary>
@ -105,5 +122,7 @@ namespace Shentun.WebPeis.PatientRegisters
return patientRegisterReportDto; return patientRegisterReportDto;
} }
} }
} }

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -1,12 +1,14 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.Domain.Entities;
namespace Shentun.WebPeis.Models; namespace Shentun.WebPeis.Models;
/// <summary> /// <summary>
/// 检查组合项目记录 /// 检查组合项目记录
/// </summary> /// </summary>
public partial class RegisterCheckAsbitem
public partial class RegisterCheckAsbitem : AuditedEntity, IHasConcurrencyStamp
{ {
/// <summary> /// <summary>
/// 主键 /// 主键
@ -52,11 +54,10 @@ public partial class RegisterCheckAsbitem
public string? ConcurrencyStamp { get; set; } 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") .HasColumnType("timestamp(6) without time zone")
.HasColumnName("appoint_date"); .HasColumnName("appoint_date");
entity.Property(e => e.PersonId).HasColumnName("person_id"); entity.Property(e => e.PersonId).HasColumnName("person_id");
entity.Property(e => e.PatientRegisterId).HasColumnName("patient_register_id");
entity.Property(e => e.Remark) entity.Property(e => e.Remark)
.HasMaxLength(200) .HasMaxLength(200)
.HasColumnName("remark"); .HasColumnName("remark");

Loading…
Cancel
Save