diff --git a/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/CreateAppointPatientRegisterDto.cs b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/CreateAppointPatientRegisterDto.cs index 5861113..1ef155e 100644 --- a/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/CreateAppointPatientRegisterDto.cs +++ b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/CreateAppointPatientRegisterDto.cs @@ -10,10 +10,12 @@ namespace Shentun.WebPeis.AppointPatientRegisters /// public class CreateAppointPatientRegisterDto { + /// /// 人员ID /// public Guid PersonId { get; set; } + public Guid? PatientRegisterId { get; set; } /// /// 单位ID /// diff --git a/src/Shentun.WebPeis.Application.Contracts/CustomerOrgs/CustomerOrgDto.cs b/src/Shentun.WebPeis.Application.Contracts/CustomerOrgs/CustomerOrgDto.cs new file mode 100644 index 0000000..5a7aba5 --- /dev/null +++ b/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 + { + /// + /// 单位ID + /// + public Guid CustomerOrgId { get; set; } + + /// + /// 单位名称 + /// + public string CustomerOrgName { get; set; } = null!; + + /// + /// 简称 + /// + public string ShortName { get; set; } = null!; + + /// + /// 父编号 + /// + public Guid? ParentId { get; set; } + + /// + /// 路径编码 + /// + public string PathCode { get; set; } = null!; + + /// + /// 拼音简码 + /// + public string SimpleCode { get; set; } = null!; + + /// + /// 备注 + /// + public string? Remark { get; set; } + + /// + /// 状态 + /// + public char IsActive { get; set; } + + /// + /// 显示顺序 + /// + public int DisplayOrder { get; set; } + + + /// + /// 体检中心ID + /// + public Guid MedicalCenterId { get; set; } + + } +} diff --git a/src/Shentun.WebPeis.Application.Contracts/CustomerOrgs/CustomerOrgGroupIdInput.cs b/src/Shentun.WebPeis.Application.Contracts/CustomerOrgs/CustomerOrgGroupIdInput.cs new file mode 100644 index 0000000..e619599 --- /dev/null +++ b/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; } + } +} diff --git a/src/Shentun.WebPeis.Application.Contracts/MedicalPackages/MedicalPackageIdInput.cs b/src/Shentun.WebPeis.Application.Contracts/MedicalPackages/MedicalPackageIdInput.cs index 88d899f..ecd07d3 100644 --- a/src/Shentun.WebPeis.Application.Contracts/MedicalPackages/MedicalPackageIdInput.cs +++ b/src/Shentun.WebPeis.Application.Contracts/MedicalPackages/MedicalPackageIdInput.cs @@ -6,6 +6,7 @@ namespace Shentun.WebPeis.MedicalPackages { public class MedicalPackageIdInput { + public Guid MedicalPackageId { get; set; } } } diff --git a/src/Shentun.WebPeis.Application.Contracts/PatientRegisters/PatientRegisterDto.cs b/src/Shentun.WebPeis.Application.Contracts/PatientRegisters/PatientRegisterDto.cs new file mode 100644 index 0000000..d888619 --- /dev/null +++ b/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 + { + /// + /// 登记流水号 + /// + public Guid PatientRegisterId { get; set; } + + /// + /// 条码号 + /// + public string PatientRegisterNo { get; set; } = null!; + + /// + /// 档案号 + /// + public Guid PatientId { get; set; } + + /// + /// 体检次数 + /// + public short MedicalTimes { get; set; } + + /// + /// 单位编号 + /// + public Guid CustomerOrgId { get; set; } + + public string CustomerOrgName { get; set; } + + public string ChildCustomerOrgName { get; set; } + + /// + /// 分组 + /// + public Guid? CustomerOrgGroupId { get; set; } + + /// + /// 套餐 + /// + public Guid? MedicalPackageId { get; set; } + + /// + /// 姓名 + /// + public string PatientName { get; set; } = null!; + + /// + /// 性别 + /// + public char SexId { get; set; } + + /// + /// 出生日期 + /// + public DateTime? BirthDate { get; set; } + + /// + /// 年龄 + /// + public short? Age { get; set; } + + /// + /// 工卡号 + /// + public string? JobCardNo { get; set; } + + /// + /// 体检卡号 + /// + public string? MedicalCardNo { get; set; } + + /// + /// 婚姻状况 + /// + public char MaritalStatusId { get; set; } + + /// + /// 体检类别 + /// + public Guid? MedicalTypeId { get; set; } + + /// + /// 人员类别 + /// + public Guid? PersonnelTypeId { get; set; } + + /// + /// 职务 + /// + public string? JobPost { get; set; } + + /// + /// 职称 + /// + public string? JobTitle { get; set; } + + /// + /// 照片 + /// + public string? Photo { get; set; } + + /// + /// 性激素期限 + /// + public Guid? SexHormoneTermId { get; set; } + + /// + /// 干预措施 + /// + public char? InterposeMeasure { get; set; } + + /// + /// 体检结论 + /// + public Guid? MedicalConclusionId { get; set; } + + /// + /// 完成标志 + /// + public char CompleteFlag { get; set; } + + /// + /// 体检开始标志 + /// + public char IsMedicalStart { get; set; } + + /// + /// 体检开始日期 + /// + public DateTime MedicalStartDate { get; set; } + + /// + /// 总检日期 + /// + public DateTime? SummaryDate { get; set; } + + /// + /// 审核 + /// + public char IsAudit { get; set; } + + /// + /// 审核日期 + /// + public DateTime? AuditDate { get; set; } + + /// + /// vip客户 + /// + public char IsVip { get; set; } + + /// + /// 附加第三方信息 + /// + public string? ThirdInfo { get; set; } + + /// + /// 备注 + /// + public string? Remark { get; set; } + + /// + /// 体检中心ID + /// + public Guid MedicalCenterId { get; set; } + + /// + /// 客户单位登记ID + /// + public Guid CustomerOrgRegisterId { get; set; } + + public string? ConcurrencyStamp { get; set; } + + + /// + /// 审核医生 + /// + public Guid? AuditDoctorId { get; set; } + + /// + /// 总检医生 + /// + public Guid? SummaryDoctorId { get; set; } + + public string? HisPatientId { get; set; } + + public string? ThirdRegisterId { get; set; } + + public string? ReportFile { get; set; } + } +} diff --git a/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs b/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs index 173a2e8..38d8424 100644 --- a/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs +++ b/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 _patientRegisterRepository; + private readonly IRepository _patientRepository; + private readonly IRepository _registerCheckRepository; + private readonly IRepository _registerCheckAsbitemRepository; public AppointPatientRegisterAppService(IRepository repository, CacheService cacheService, IRepository itemTypeRepository, @@ -54,7 +62,11 @@ namespace Shentun.WebPeis.AppointPatientRegisters IRepository customerOrgRepository, IRepository medicalPackageDetailRepository, IRepository customerOrgGroupDetailRepository, - WebPeisOrganizationUnitManager webPeisOrganizationUnitManager + WebPeisOrganizationUnitManager webPeisOrganizationUnitManager, + IRepository patientRegisterRepository, + IRepository patientRepository, + IRepository registerCheckRepository, + IRepository 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; } + + /// + /// 获取单位预约病人 + /// + /// + /// + [HttpPost("api/app/AppointPatientRegister/GetCustomerOrgAppointPatientRegisterByPersonId")] + public async Task 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; + } + + /// + /// 获取团检中个人备案项目 + /// + /// + /// + [HttpPost("api/app/AppointPatientRegister/GetCheckTypeWithAsbitemsListByPatientRegisterId")] + public async Task> 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() + { + 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; + + + } + + } } diff --git a/src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs b/src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs index b9e0371..230fe75 100644 --- a/src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs +++ b/src/Shentun.WebPeis.Application/Asbitems/AsbitemAppService.cs @@ -36,6 +36,10 @@ namespace Shentun.WebPeis.Asbitems _diseaseScreeningTypeRepository = diseaseScreeningTypeRepository; } + /// + /// 获取组合项目列表 + /// + /// [HttpPost("api/app/Asbitem/GetDiseaseScreeningTypeAsbitemList")] //[AllowAnonymous] public async Task> GetDiseaseScreeningTypeAsbitemListAsync() diff --git a/src/Shentun.WebPeis.Application/CustomerOrgGroups/CustomerOrgGroupAppService.cs b/src/Shentun.WebPeis.Application/CustomerOrgGroups/CustomerOrgGroupAppService.cs new file mode 100644 index 0000000..59566b2 --- /dev/null +++ b/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 _repository; + private readonly IRepository _asbitemRepository; + private readonly IRepository _itemTypeRepository; + private readonly IRepository _customerOrgGroupDetailRepository; + private readonly CacheService _cacheService; + + public CustomerOrgGroupAppService(IRepository repository, + CacheService cacheService, + IRepository asbitemRepository, + IRepository customerOrgGroupDetailRepository, + IRepository itemTypeRepository + ) + { + _repository = repository; + _cacheService = cacheService; + _asbitemRepository = asbitemRepository; + _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository; + _itemTypeRepository = itemTypeRepository; + + } + /* + /// + /// 获取分组组合项目,暂时不起作用,由GetCheckTypeWithAsbitemsListByMedicalPackageId取代 + /// + /// + /// + [HttpPost("api/app/CustomerOrgGroup/GetCheckTypeWithAsbitemsListByCustomerOrgGroupId")] + //[AllowAnonymous] + public async Task> 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() + { + 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; + + + } + */ + } +} diff --git a/src/Shentun.WebPeis.Application/MedicalPackages/MedicalPackageAppservice.cs b/src/Shentun.WebPeis.Application/MedicalPackages/MedicalPackageAppservice.cs index 3b6c5b2..eb3ce01 100644 --- a/src/Shentun.WebPeis.Application/MedicalPackages/MedicalPackageAppservice.cs +++ b/src/Shentun.WebPeis.Application/MedicalPackages/MedicalPackageAppservice.cs @@ -21,13 +21,16 @@ namespace Shentun.WebPeis.MedicalPackages private readonly IRepository _asbitemRepository; private readonly IRepository _itemTypeRepository; private readonly IRepository _medicalPackageDetailRepository; + private readonly IRepository _customerOrgGroupDetailRepository; private readonly CacheService _cacheService; public MedicalPackageAppService(IRepository repository, CacheService cacheService, IRepository asbitemRepository, IRepository medicalPackageDetailRepository, - IRepository itemTypeRepository + IRepository itemTypeRepository, + IRepository customerOrgGroupDetailRepository + ) { _repository = repository; @@ -35,7 +38,7 @@ namespace Shentun.WebPeis.MedicalPackages _asbitemRepository = asbitemRepository; _medicalPackageDetailRepository = medicalPackageDetailRepository; _itemTypeRepository = itemTypeRepository; - + _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository; } /// /// 获取能预约的套餐信息 @@ -57,7 +60,7 @@ namespace Shentun.WebPeis.MedicalPackages } /// - /// 获取套餐组合项目 + /// 获取套餐或单位分组组合项目 /// /// /// @@ -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() @@ -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(); } diff --git a/src/Shentun.WebPeis.Application/PatientRegisters/PatientRegisterAppService.cs b/src/Shentun.WebPeis.Application/PatientRegisters/PatientRegisterAppService.cs index d9397b6..4e12295 100644 --- a/src/Shentun.WebPeis.Application/PatientRegisters/PatientRegisterAppService.cs +++ b/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 _patientRegisterRepository; + private readonly IRepository _registerCheckRepository; + private readonly IRepository _registerCheckAsbitemRepository; + private readonly IRepository _asbitemRepository; + private readonly IRepository _itemTypeRepository; + private readonly CacheService _cacheService; public PatientRegisterAppService(IRepository patientRegisterRepository, - IConfiguration configuration) + IConfiguration configuration, + IRepository asbitemRepository, + IRepository itemTypeRepository, + IRepository registerCheckRepository, + IRepository registerCheckAsbitemRepository, + CacheService cacheService) { _patientRegisterRepository = patientRegisterRepository; _configuration = configuration; + _asbitemRepository = asbitemRepository; + _itemTypeRepository = itemTypeRepository; + _registerCheckAsbitemRepository = registerCheckAsbitemRepository; + _registerCheckRepository = registerCheckRepository; + _cacheService = cacheService; } /// @@ -105,5 +122,7 @@ namespace Shentun.WebPeis.PatientRegisters return patientRegisterReportDto; } + + } } diff --git a/src/Shentun.WebPeis.Application/Persons/PersonAppService.cs b/src/Shentun.WebPeis.Application/Persons/PersonAppService.cs index 17f7238..58adae8 100644 --- a/src/Shentun.WebPeis.Application/Persons/PersonAppService.cs +++ b/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 { /// @@ -55,6 +56,7 @@ namespace Shentun.WebPeis.Persons private readonly IRepository _patientRepository; private readonly CacheService _cacheService; private readonly IHttpContextAccessor _httpContextAccessor; + private readonly IRepository _customerOrgRepository; public PersonAppService(IRepository repository, IConfiguration configuration, IRepository identityUserRepository, @@ -66,7 +68,8 @@ namespace Shentun.WebPeis.Persons IRepository patientRegisterRepository, IRepository patientRepository, CacheService cacheService, - IHttpContextAccessor httpContextAccessor) + IHttpContextAccessor httpContextAccessor, + IRepository customerOrgRepository) { _repository = repository; _configuration = configuration; @@ -80,6 +83,7 @@ namespace Shentun.WebPeis.Persons _patientRepository = patientRepository; _cacheService = cacheService; _httpContextAccessor = httpContextAccessor; + _customerOrgRepository = customerOrgRepository; } public async Task 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 GetTokenAsync(string request) { using var client = new HttpClient(); diff --git a/src/Shentun.WebPeis.Application/Shentun.WebPeis.Application.csproj b/src/Shentun.WebPeis.Application/Shentun.WebPeis.Application.csproj index fec3f54..296d670 100644 --- a/src/Shentun.WebPeis.Application/Shentun.WebPeis.Application.csproj +++ b/src/Shentun.WebPeis.Application/Shentun.WebPeis.Application.csproj @@ -29,6 +29,7 @@ + diff --git a/src/Shentun.WebPeis.Domain.Shared/Enums/AppointPatientRegisterCompleteFlag.cs b/src/Shentun.WebPeis.Domain.Shared/Enums/AppointPatientRegisterCompleteFlag.cs index a484399..7523119 100644 --- a/src/Shentun.WebPeis.Domain.Shared/Enums/AppointPatientRegisterCompleteFlag.cs +++ b/src/Shentun.WebPeis.Domain.Shared/Enums/AppointPatientRegisterCompleteFlag.cs @@ -8,33 +8,20 @@ namespace Shentun.WebPeis.Enums public class AppointPatientRegisterCompleteFlag { /// - /// 预登记 0 + /// 预约 0 /// - [Description("预登记")] - public const char PreRegistration = '0'; + [Description("预约")] + public const char Appoint = '0'; /// - /// 正式登记 1 + /// 取消预约 1 /// - [Description("正式登记")] - public const char Registration = '1'; + [Description("取消预约")] + public const char CancelAppoint = '1'; /// - /// 部分已检 2 + /// 已到检 /// - [Description("部分已检")] - public const char PartCheck = '2'; - /// - /// 已总检 3 - /// - [Description("已总检")] - public const char SumCheck = '3'; - - [Description("已审核")] - public const char Audit = '4'; - - /// - /// 项目全部已检未总检 - /// - [Description("项目全部已检未总检")] - public const char ItemCheckUnSumCheck = '5'; + [Description("已到检")] + public const char Check = '2'; + } } diff --git a/src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs b/src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs index eee6f5a..7c2d242 100644 --- a/src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs +++ b/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 diff --git a/src/Shentun.WebPeis.Domain/Models/AppointPatientRegister.cs b/src/Shentun.WebPeis.Domain/Models/AppointPatientRegister.cs index 91df25e..1c687ea 100644 --- a/src/Shentun.WebPeis.Domain/Models/AppointPatientRegister.cs +++ b/src/Shentun.WebPeis.Domain/Models/AppointPatientRegister.cs @@ -73,6 +73,10 @@ public partial class AppointPatientRegister: AuditedEntity, IHasConcurrencyStamp /// public decimal? Weight { get; set; } /// + /// 人员登记ID + /// + public Guid? PatientRegisterId { get; set; } + /// /// 收费 /// public virtual ICollection Charges { get; set; } = new List(); diff --git a/src/Shentun.WebPeis.Domain/Models/RegisterCheck.cs b/src/Shentun.WebPeis.Domain/Models/RegisterCheck.cs index e4b4593..ccbea3b 100644 --- a/src/Shentun.WebPeis.Domain/Models/RegisterCheck.cs +++ b/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; /// /// 登记检查单 /// -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 RegisterCheckSuggestions { get; set; } = new List(); public virtual ICollection RegisterCheckSummaries { get; set; } = new List(); + + public override object?[] GetKeys() + { + return [RegisterCheckId]; + } } diff --git a/src/Shentun.WebPeis.Domain/Models/RegisterCheckAsbitem.cs b/src/Shentun.WebPeis.Domain/Models/RegisterCheckAsbitem.cs index f285a95..418dd47 100644 --- a/src/Shentun.WebPeis.Domain/Models/RegisterCheckAsbitem.cs +++ b/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; /// /// 检查组合项目记录 /// -public partial class RegisterCheckAsbitem +public partial class RegisterCheckAsbitem : AuditedEntity, IHasConcurrencyStamp { /// /// 主键 @@ -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]; + } } diff --git a/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AppointPatientRegisterConfigure.cs b/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AppointPatientRegisterConfigure.cs index 6789a09..4693e5f 100644 --- a/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AppointPatientRegisterConfigure.cs +++ b/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");