|
|
using Castle.Core.Logging;using Microsoft.AspNetCore.Authorization;using Microsoft.AspNetCore.Mvc;using Microsoft.EntityFrameworkCore;using Microsoft.EntityFrameworkCore.Metadata.Internal;using Microsoft.Extensions.Configuration;using Microsoft.Extensions.Logging;using NPOI.POIFS.Properties;using NPOI.SS.Formula.Functions;using NPOI.Util;using NUglify.Helpers;using Org.BouncyCastle.Asn1.Ocsp;using Shentun.Peis.AppointPatientRegisters;using Shentun.Peis.CommonCharTypes;using Shentun.Peis.CustomerOrgRegisters;using Shentun.Peis.CustomerOrgs;using Shentun.Peis.Enums;using Shentun.Peis.LisRequests;using Shentun.Peis.Models;using Shentun.Peis.OcCheckTypeDetails;using Shentun.Peis.PatientOccupationalDiseases;using Shentun.Peis.PatientPoisons;using Shentun.Peis.PatientRegisterExters;using Shentun.Peis.Patients;using Shentun.Peis.PeisReports;using Shentun.Peis.PlugIns.Extensions.ImportLisResults.Dian;using Shentun.Peis.RegisterAsbitems;using Shentun.Peis.RegisterCheckAsbitems;using Shentun.Peis.RegisterChecks;using Shentun.Peis.Rooms;using Shentun.Peis.SumSuggestionContents;using Shentun.Peis.SumSuggestionHeaders;using Shentun.Peis.SumSummaryContents;using Shentun.Peis.SumSummaryHeaders;using Shentun.Peis.SumSummaryReports;using Shentun.Peis.SysParmValues;using Shentun.Peis.ThirdBookingPushs;using Shentun.Utilities;using SqlSugar;using System;using System.Collections.Generic;using System.Diagnostics;using System.IO;using System.Linq;using System.Linq.Dynamic.Core;using System.Runtime.CompilerServices;using System.Security;using System.Security.Cryptography;using System.Text;using System.Threading.Tasks;using System.Transactions;using Volo.Abp;using Volo.Abp.Application.Dtos;using Volo.Abp.Application.Services;using Volo.Abp.Domain.Entities;using Volo.Abp.Domain.Repositories;using Volo.Abp.Guids;using Volo.Abp.Identity;using Volo.Abp.ObjectMapping;using Volo.Abp.Uow;using Volo.Abp.Users;using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace Shentun.Peis.PatientRegisters{
/// <summary>
/// 人员体检登记
/// </summary>
[ApiExplorerSettings(GroupName = "Work")] [Authorize] public class PatientRegisterAppService : CrudAppService< PatientRegister, //The Book entity
PatientRegisterDto, //Used to show books
Guid, //Primary key of the book entity
PagedAndSortedResultRequestDto, //Used for paging/sorting
CreatePatientRegisterDto, UpdatePatientRegisterDto> { private readonly IRepository<PatientRegister, Guid> _repository; private readonly IRepository<Patient, Guid> _patientRepository; private readonly IRepository<IdentityUser, Guid> _userRepository; private readonly IRepository<Sex> _sexRepository; private readonly IRepository<BirthPlace, Guid> _birthPlaceRepository; private readonly IRepository<MaritalStatus> _maritalStatusRepository; private readonly IRepository<Nation> _nationRepository; private readonly IRepository<CustomerOrgGroup, Guid> _customerOrgGroupRepository; private readonly IRepository<CustomerOrgGroupDetail> _customerOrgGroupDetailRepository; private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository; private readonly IRepository<PersonnelType, Guid> _personnelTypeRepository; private readonly IRepository<MedicalType, Guid> _medicalTypeRepository; private readonly IRepository<SexHormoneTerm, Guid> _sexHormoneTermRepository; private readonly IRepository<PayMode> _payModeRepository; private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository; private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository; private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository; private readonly IRepository<RegisterCheckPicture, Guid> _registerCheckPictureRepository; private readonly IRepository<Item, Guid> _itemRepository; private readonly IRepository<Asbitem, Guid> _asbitemRepository; private readonly IPatientRegisterChargeRepository _patientRegisterChargeRepository; private readonly IRepository<MedicalPackageDetail> _medicalPackageDetailRepository; private readonly IRepository<SumSummaryHeader, Guid> _sumSummaryHeaderRepository; private readonly IRepository<SumSummaryContent, Guid> _sumSummaryContentRepository; private readonly IRepository<SumSuggestionHeader, Guid> _sumSuggestionHeaderRepository; private readonly IRepository<SumSuggestionContent, Guid> _sumSuggestionContentRepository; private readonly IRepository<SumDiagnosis> _sumDiagnosisRepository; private readonly ILogger<PatientRegisterAppService> _logger; private readonly CustomerOrgManager _customerOrgManager; private readonly CustomerOrgRegisterManager _customerOrgRegisterManager; private readonly PatientManager _patientManager; private readonly PatientRegisterManager _patientRegisterManager; private readonly RegisterCheckAsbitemManager _registerAsbitemManager; private readonly SumSummaryHeaderManager _sumSummaryHeaderManager; private readonly SumSummaryContentManager _sumSummaryContentManager; private readonly SumSuggestionHeaderManager _sumSuggestionHeaderManager; private readonly SumSuggestionContentManager _sumSuggestionContentManager; //private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
//private readonly IRepository<PrimarykeyBuilder> _primarykeyBuilderRepository;
//private readonly IRepository<SysParmValue> _sysParmValueRepository;
private readonly PatientRegisterManager _manager; private readonly CacheService _cacheService; private readonly SysParmValueManager _sysParmValueManager; private readonly IRepository<PatientRegisterExter> _patientRegisterExterRepository; private readonly PatientRegisterExterManager _patientRegisterExterManager; private readonly IRepository<LisRequest, Guid> _lisRequestRepository; private readonly IConfiguration _configuration; private readonly ICurrentUser _currentUser; private readonly IRepository<UserItemType> _userItemTypeRepository; private readonly PatientOccupationalDiseaseManager _patientOccupationalDiseaseManager; private readonly IRepository<ThirdInterface, Guid> _thirdInterfaceRepository; private readonly IRepository<CustomerOrgRegister, Guid> _customerOrgRegisterRepository; private readonly IRepository<OcCheckType, Guid> _ocCheckTypeRepository; private readonly IRepository<Poison, Guid> _poisonRepository; private readonly IRepository<OcCheckTypeDetail> _ocCheckTypeDetailRepository; private readonly IRepository<PatientOccupationalDisease, Guid> _patientOccupationalDiseaseRepository; private readonly IRepository<PatientPoison> _patientPoisonRepository; private readonly PatientPoisonManager _patientPoisonManager; private readonly IRepository<Diagnosis> _diagnosisRepository; private readonly ThirdBookingPushAppService _thirdBookingPushAppService; private readonly IRepository<ThirdBooking, Guid> _thirdBookingRepository; private readonly IRepository<Charge, Guid> _chargeRepository; private readonly IRepository<ChargePay, Guid> _chargePayRepository;
public PatientRegisterAppService( IRepository<PatientRegister, Guid> repository, IRepository<Patient, Guid> patientRepository, IRepository<IdentityUser, Guid> userRepository, IRepository<Sex> sexRepository, IRepository<BirthPlace, Guid> birthPlaceRepository, IRepository<MaritalStatus> maritalStatusRepository, IRepository<Nation> nationRepository, IRepository<CustomerOrgGroup, Guid> customerOrgGroupRepository, IRepository<CustomerOrgGroupDetail> customerOrgGroupDetailRepository, IRepository<CustomerOrg, Guid> customerOrgRepository, IRepository<PersonnelType, Guid> personnelTypeRepository, IRepository<MedicalType, Guid> medicalTypeRepository, IRepository<SexHormoneTerm, Guid> sexHormoneTermRepository, IRepository<PayMode> payModeRepository, IRepository<RegisterCheckAsbitem, Guid> registerAsbitemRepository, IRepository<RegisterCheck, Guid> registerCheckRepository, IRepository<RegisterCheckItem> registerCheckItemRepository, IRepository<RegisterCheckPicture, Guid> registerCheckPictureRepository, IRepository<Item, Guid> itemRepository, IRepository<Asbitem, Guid> asbitemRepository, IRepository<SumSummaryHeader, Guid> sumSummaryHeaderRepository, IRepository<SumSummaryContent, Guid> sumSummaryContentRepository, IRepository<SumSuggestionHeader, Guid> sumSuggestionHeaderRepository, IRepository<SumSuggestionContent, Guid> sumSuggestionContentRepository, IRepository<SumDiagnosis> sumDiagnosisRepository, //IRepository<SysParmValue> sysParmValueRepository,
//IRepository<CustomerOrg, Guid> customerOrgRepository,
//IRepository<PrimarykeyBuilder> primarykeyBuilderRepository,
IPatientRegisterChargeRepository patientRegisterChargeRepository, IRepository<MedicalPackageDetail> medicalPackageDetailRepository, ILogger<PatientRegisterAppService> logger, CustomerOrgManager customerOrgManager, CustomerOrgRegisterManager customerOrgRegisterManager, PatientManager patientManager, PatientRegisterManager patientRegisterManager, RegisterCheckAsbitemManager registerAsbitemManager, PatientRegisterManager manager, CacheService cacheService, SumSummaryHeaderManager sumSummaryHeaderManager, SumSummaryContentManager sumSummaryContentManager, SumSuggestionHeaderManager sumSuggestionHeaderManager, SumSuggestionContentManager sumSuggestionContentManager, SysParmValueManager sysParmValueManager, IRepository<PatientRegisterExter> patientRegisterExterRepository, PatientRegisterExterManager patientRegisterExterManager, IRepository<LisRequest, Guid> lisRequestRepository, IConfiguration configuration, ICurrentUser currentUser, IRepository<UserItemType> userItemTypeRepository, PatientOccupationalDiseaseManager patientOccupationalDiseaseManager, IRepository<ThirdInterface, Guid> thirdInterfaceRepository, IRepository<CustomerOrgRegister, Guid> customerOrgRegisterRepository, IRepository<OcCheckType, Guid> ocCheckTypeRepository, IRepository<Poison, Guid> poisonRepository, IRepository<OcCheckTypeDetail> ocCheckTypeDetailRepository, IRepository<PatientOccupationalDisease, Guid> patientOccupationalDiseaseRepository, IRepository<PatientPoison> patientPoisonRepository, PatientPoisonManager patientPoisonManager, IRepository<Diagnosis> diagnosisRepository, ThirdBookingPushAppService thirdBookingPushAppService, IRepository<ThirdBooking, Guid> thirdBookingRepository, IRepository<Charge, Guid> chargeRepository, IRepository<ChargePay, Guid> chargePayRepository) : base(repository) { this._repository = repository; this._patientRepository = patientRepository; this._userRepository = userRepository; this._sexRepository = sexRepository; this._birthPlaceRepository = birthPlaceRepository; this._maritalStatusRepository = maritalStatusRepository; this._nationRepository = nationRepository; this._customerOrgGroupRepository = customerOrgGroupRepository; this._customerOrgGroupDetailRepository = customerOrgGroupDetailRepository; this._customerOrgRepository = customerOrgRepository; this._personnelTypeRepository = personnelTypeRepository; this._medicalTypeRepository = medicalTypeRepository; this._sexHormoneTermRepository = sexHormoneTermRepository; this._payModeRepository = payModeRepository; this._registerCheckAsbitemRepository = registerAsbitemRepository; this._registerCheckRepository = registerCheckRepository; this._registerCheckItemRepository = registerCheckItemRepository; this._registerCheckPictureRepository = registerCheckPictureRepository; this._itemRepository = itemRepository; this._patientRegisterChargeRepository = patientRegisterChargeRepository; this._logger = logger; this._customerOrgManager = customerOrgManager; this._customerOrgRegisterManager = customerOrgRegisterManager; this._patientManager = patientManager; this._patientRegisterManager = patientRegisterManager; this._registerAsbitemManager = registerAsbitemManager; //this._customerOrgRepository = customerOrgRepository;
//this._primarykeyBuilderRepository = primarykeyBuilderRepository;
//this._sysParmValueRepository = sysParmValueRepository;
_sumSummaryHeaderRepository = sumSummaryHeaderRepository; _sumSummaryContentRepository = sumSummaryContentRepository; _sumSuggestionHeaderRepository = sumSuggestionHeaderRepository; _sumSuggestionContentRepository = sumSuggestionContentRepository; _sumDiagnosisRepository = sumDiagnosisRepository; _manager = manager; _cacheService = cacheService; _medicalPackageDetailRepository = medicalPackageDetailRepository; _asbitemRepository = asbitemRepository; _sumSummaryHeaderManager = sumSummaryHeaderManager; _sumSummaryContentManager = sumSummaryContentManager; _sumSuggestionHeaderManager = sumSuggestionHeaderManager; _sumSuggestionContentManager = sumSuggestionContentManager; _sysParmValueManager = sysParmValueManager; _patientRegisterExterRepository = patientRegisterExterRepository; _patientRegisterExterManager = patientRegisterExterManager; _lisRequestRepository = lisRequestRepository; _configuration = configuration; _currentUser = currentUser; _userItemTypeRepository = userItemTypeRepository; _patientOccupationalDiseaseManager = patientOccupationalDiseaseManager; _thirdInterfaceRepository = thirdInterfaceRepository; _customerOrgRegisterRepository = customerOrgRegisterRepository; _ocCheckTypeRepository = ocCheckTypeRepository; _poisonRepository = poisonRepository; _ocCheckTypeDetailRepository = ocCheckTypeDetailRepository; _patientOccupationalDiseaseRepository = patientOccupationalDiseaseRepository; _patientPoisonRepository = patientPoisonRepository; _patientPoisonManager = patientPoisonManager; _diagnosisRepository = diagnosisRepository; _thirdBookingPushAppService = thirdBookingPushAppService; _thirdBookingRepository = thirdBookingRepository; _chargeRepository = chargeRepository; _chargePayRepository = chargePayRepository; } /// <summary>
/// 获取通过主键
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public override async Task<PatientRegisterDto> GetAsync(Guid id) { return await base.GetAsync(id); }
/// <summary>
/// 根据lis申请单号 获取人员条码号
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/PatientRegister/GetPatientRegisterNoByLisRequestNo")] public async Task<PatientRegisterSimpleDto> GetPatientRegisterNoByLisRequestNoAsync(LisRequestNoInputDto input) { if (input == null) { throw new UserFriendlyException("请求参数有误"); }
//0-每个条码打印lis_request_no(即现在使用的模式),1-每个条码打印patient_register_no
var lisRequestNoPrintMode = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "lis_request_no_print_mode"); if (string.IsNullOrWhiteSpace(lisRequestNoPrintMode)) lisRequestNoPrintMode = "0";
if (lisRequestNoPrintMode == "1") { return new PatientRegisterSimpleDto { PatientRegisterNo = input.LisRequestNo }; }
var patientRegisterNo = (from lisRequest in await _lisRequestRepository.GetQueryableAsync() join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on lisRequest.Id equals registerCheckAsbitem.LisRequestId join registerCheck in await _registerCheckRepository.GetQueryableAsync() on registerCheckAsbitem.RegisterCheckId equals registerCheck.Id join patientRegister in await Repository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id where lisRequest.LisRequestNo == input.LisRequestNo select patientRegister.PatientRegisterNo).FirstOrDefault();
if (!string.IsNullOrEmpty(patientRegisterNo)) { return new PatientRegisterSimpleDto { PatientRegisterNo = patientRegisterNo }; } else { throw new UserFriendlyException("Lis申请单有误"); } }
/// <summary>
/// 根据检查单号 获取人员条码号
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/PatientRegister/GetPatientRegisterNoByCheckRequestNo")] public async Task<PatientRegisterSimpleDto> GetPatientRegisterNoByCheckRequestNoAsync(CheckRequestNoInputDto input) { if (input == null) { throw new UserFriendlyException("请求参数有误"); }
var patientRegisterNo = (from registerCheck in await _registerCheckRepository.GetQueryableAsync() join patientRegister in await Repository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id where registerCheck.CheckRequestNo == input.CheckRequestNo select patientRegister.PatientRegisterNo).FirstOrDefault();
if (!string.IsNullOrEmpty(patientRegisterNo)) { return new PatientRegisterSimpleDto { PatientRegisterNo = patientRegisterNo }; } else { throw new UserFriendlyException("检查单有误"); } }
/// <summary>
/// 编辑反写接口,包含档案表跟登记表的信息
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/getinfoorpatient")] public async Task<PatientRegisterOrNoDto> GetInfoOrPatientAsync(PatientRegisterIdInputDto input) { return await GetPatientRegisterOrNo(input.PatientRegisterId); //var ent = (await _repository.GetQueryableAsync()).Include(x => x.Patient).Where(m => m.Id == input.PatientRegisterId).FirstOrDefault();
//var entdto = new PatientRegisterOrNoDto();
//if (ent != null)
//{
// //var userList = await _userRepository.GetListAsync();
// //var customerOrgList = await _customerOrgRepository.GetListAsync();
// entdto = new PatientRegisterOrNoDto
// {
// HisPatientId = ent.HisPatientId,
// Age = ent.Age,
// AuditDate = DataHelper.ConversionDateToString(ent.AuditDate),
// Id = ent.Id,
// AuditDoctorId = ent.AuditDoctorId,
// BirthDate = DataHelper.ConversionDateToString(ent.BirthDate),
// CompleteFlag = ent.CompleteFlag,
// CreationTime = ent.CreationTime,
// CreatorId = ent.CreatorId,
// CustomerOrgGroupId = ent.CustomerOrgGroupId,
// CustomerOrgId = ent.CustomerOrgId,
// CustomerOrgRegisterId = ent.CustomerOrgRegisterId,
// GuidePrintTimes = ent.GuidePrintTimes,
// InterposeMeasure = ent.InterposeMeasure,
// IsAudit = ent.IsAudit,
// IsLock = ent.IsLock,
// IsMedicalStart = ent.IsMedicalStart,
// IsNameHide = ent.IsNameHide,
// IsPhoneFollow = ent.IsPhoneFollow,
// IsRecoverGuide = ent.IsRecoverGuide,
// IsUpload = ent.IsUpload,
// IsVip = ent.IsVip,
// JobCardNo = ent.JobCardNo,
// JobPost = ent.JobPost,
// JobTitle = ent.JobTitle,
// LastModificationTime = ent.LastModificationTime,
// LastModifierId = ent.LastModifierId,
// MaritalStatusId = ent.MaritalStatusId,
// MedicalCardNo = ent.MedicalCardNo,
// MedicalConclusionId = ent.MedicalConclusionId,
// MedicalPackageId = ent.MedicalPackageId,
// MedicalStartDate = DataHelper.ConversionDateToString(ent.MedicalStartDate),
// MedicalTimes = ent.MedicalTimes,
// MedicalTypeId = ent.MedicalTypeId,
// MedicalCenterId = ent.MedicalCenterId,
// PatientId = ent.PatientId,
// PatientName = ent.PatientName,
// PatientRegisterNo = ent.PatientRegisterNo,
// PersonnelTypeId = ent.PersonnelTypeId,
// Photo = ent.Photo,
// Remark = ent.Remark,
// ReportPrintTimes = ent.ReportPrintTimes,
// Salesman = ent.Salesman,
// SexHormoneTermId = ent.SexHormoneTermId,
// SexId = ent.SexId,
// SummaryDate = DataHelper.ConversionDateToString(ent.SummaryDate),
// SummaryDoctorId = ent.SummaryDoctorId,
// ThirdInfo = ent.ThirdInfo,
// CreatorName = _cacheService.GetSurnameAsync(ent.CreatorId).Result,
// LastModifierName = _cacheService.GetSurnameAsync(ent.LastModifierId).Result,
// Address = ent.Patient.Address, //档案表信息
// BirthPlaceId = ent.Patient.BirthPlaceId,
// DisplayName = ent.Patient.DisplayName,
// Email = ent.Patient.Email,
// IdNo = ent.Patient.IdNo,
// MobileTelephone = ent.Patient.MobileTelephone,
// NationId = ent.Patient.NationId,
// PatientNo = ent.Patient.PatientNo,
// PatientPassword = ent.Patient.PatientPassword,
// PostalCode = ent.Patient.PostalCode,
// Telephone = ent.Patient.Telephone,
// CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(ent.CustomerOrgId).Result,
// CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(ent.CustomerOrgId).Result.Id
// //CustomerOrgParentName = EntityHelper.GetCustomerOrgParentNameNoSql(customerOrgList, ent.CustomerOrgId)
// };
//}
//return entdto;
}
/// <summary>
/// 获取是否总检过
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/GetHaveSumData")] public async Task<string> GetHaveSumData(PatientRegisterIdInputDto input) { var sumSummaryHeader = await _sumSummaryHeaderRepository.GetListAsync(o => o.PatientRegisterId == input.PatientRegisterId); if (sumSummaryHeader.Any()) { return "Y"; } var sumSuggestionHeader = await _sumSuggestionHeaderRepository.GetListAsync(o => o.PatientRegisterId == input.PatientRegisterId); if (sumSuggestionHeader.Any()) { return "Y"; } return "N"; } /// <summary>
/// 获取列表 人员体检
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[RemoteService(false)] public override async Task<PagedResultDto<PatientRegisterDto>> GetListAsync(PagedAndSortedResultRequestDto input) { return await base.GetListAsync(input); }
///// <summary>
///// 获取档案登记列表 带联合搜索条件
///// </summary>
///// <param name="input"></param>
///// <returns></returns>
//[HttpPost("api/app/patientregister/getlistinfilter")]
//public async Task<PagedResultDto<PatientRegisterOrNoDto>> GetListInFilterAsync(GetListInSearchDto input)
//{
// //var customerOrgList = await _customerOrgRepository.GetListAsync();
// #region MyRegion
// var entlist = from patientRegister in (await _repository.GetQueryableAsync()).Include(x => x.Patient).AsQueryable()
// join patientRegisterExter in await _patientRegisterExterRepository.GetQueryableAsync()
// on patientRegister.Id equals patientRegisterExter.PatientRegisterId into patientRegisterExterTemp
// from patientRegisterExterHaveEmpty in patientRegisterExterTemp.DefaultIfEmpty()
// select new
// {
// patientRegister,
// patientRegisterExterHaveEmpty
// };
// if (!string.IsNullOrEmpty(input.PatientNo))
// entlist = entlist.Where(m => m.patientRegister.Patient.PatientNo == input.PatientNo);
// if (!string.IsNullOrEmpty(input.IdNo))
// entlist = entlist.Where(m => m.patientRegister.Patient.IdNo == input.IdNo);
// if (!string.IsNullOrEmpty(input.PatientName))
// entlist = entlist.Where(m => !string.IsNullOrEmpty(m.patientRegister.PatientName) && m.patientRegister.PatientName.Contains(input.PatientName));
// if (!string.IsNullOrEmpty(input.PatientRegisterNo))
// entlist = entlist.Where(m => m.patientRegister.PatientRegisterNo == input.PatientRegisterNo);
// if (!string.IsNullOrEmpty(input.Phone))
// entlist = entlist.Where(m => m.patientRegister.Patient.MobileTelephone == input.Phone || m.patientRegister.Patient.Telephone == input.Phone);
// if (input.SexId != null && input.SexId != ForSexFlag.All)
// entlist = entlist.Where(m => m.patientRegister.SexId == input.SexId);
// if (!string.IsNullOrEmpty(input.StartDate) && !string.IsNullOrEmpty(input.EndDate))
// {
// if (input.DateType == '1')
// {
// entlist = entlist.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(input.StartDate) &&
// m.patientRegister.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1));
// }
// else if (input.DateType == '2')
// {
// entlist = entlist.Where(m => m.patientRegister.MedicalStartDate >= Convert.ToDateTime(input.StartDate) &&
// m.patientRegister.MedicalStartDate < Convert.ToDateTime(input.EndDate).AddDays(1));
// }
// else
// {
// entlist = entlist.Where(m => (m.patientRegister.CreationTime >= Convert.ToDateTime(input.StartDate) &&
// m.patientRegister.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1))
// || (m.patientRegister.MedicalStartDate >= Convert.ToDateTime(input.StartDate) &&
// m.patientRegister.MedicalStartDate < Convert.ToDateTime(input.EndDate).AddDays(1))
// );
// }
// }
// if (input.CompleteFlags.Any())
// {
// entlist = entlist.Where(m => input.CompleteFlags.Contains(m.patientRegister.CompleteFlag));
// }
// if (input.MedicalTypeIds.Any())
// {
// entlist = entlist.Where(m => input.MedicalTypeIds.Contains(m.patientRegister.MedicalTypeId));
// }
// if (input.CustomerOrgId != null)
// {
// var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(input.CustomerOrgId.Value);
// entlist = entlist.Where(m => CustomerOrgIds.Contains(m.patientRegister.CustomerOrgId));
// }
// if (input.CustomerOrgRegisterId != null && input.CustomerOrgRegisterId != Guid.Empty)
// {
// entlist = entlist.Where(m => m.patientRegister.CustomerOrgRegisterId == input.CustomerOrgRegisterId);
// }
// if (input.CustomerOrgGroupIds.Any())
// {
// entlist = entlist.Where(m => m.patientRegister.CustomerOrgGroupId != null && input.CustomerOrgGroupIds.Contains(m.patientRegister.CustomerOrgGroupId.Value));
// }
// #endregion
// int totalCount = entlist.Count();
// entlist = entlist.OrderByDescending(o => o.patientRegister.CompleteFlag).ThenBy(o => o.patientRegister.Id).Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount);
// var ggg = entlist.Select(s => s.patientRegister.CustomerOrgId).ToList();
// var entdto = entlist.Select(s => new PatientRegisterOrNoDto
// {
// CreationTime = s.patientRegister.CreationTime,
// CreatorId = s.patientRegister.CreatorId,
// Id = s.patientRegister.Id,
// LastModificationTime = s.patientRegister.LastModificationTime,
// LastModifierId = s.patientRegister.LastModifierId,
// ThirdInfo = s.patientRegister.ThirdInfo,
// SummaryDoctorId = s.patientRegister.SummaryDoctorId,
// SummaryDate = DataHelper.ConversionDateToString(s.patientRegister.SummaryDate),
// SexId = s.patientRegister.SexId,
// Age = s.patientRegister.Age,
// AuditDate = DataHelper.ConversionDateToString(s.patientRegister.AuditDate),
// AuditDoctorId = s.patientRegister.AuditDoctorId,
// BirthDate = DataHelper.ConversionDateToString(s.patientRegister.BirthDate),
// CompleteFlag = s.patientRegister.CompleteFlag,
// CustomerOrgGroupId = s.patientRegister.CustomerOrgGroupId,
// CustomerOrgId = s.patientRegister.CustomerOrgId,
// CustomerOrgRegisterId = s.patientRegister.CustomerOrgRegisterId,
// GuidePrintTimes = s.patientRegister.GuidePrintTimes,
// InterposeMeasure = s.patientRegister.InterposeMeasure,
// IsAudit = s.patientRegister.IsAudit,
// IsLock = s.patientRegister.IsLock,
// IsMedicalStart = s.patientRegister.IsMedicalStart,
// IsNameHide = s.patientRegister.IsNameHide,
// IsPhoneFollow = s.patientRegister.IsPhoneFollow,
// IsRecoverGuide = s.patientRegister.IsRecoverGuide,
// IsUpload = s.patientRegister.IsUpload,
// IsVip = s.patientRegister.IsVip,
// JobCardNo = s.patientRegister.JobCardNo,
// JobPost = s.patientRegister.JobPost,
// JobTitle = s.patientRegister.JobTitle,
// MaritalStatusId = s.patientRegister.MaritalStatusId,
// MedicalCardNo = s.patientRegister.MedicalCardNo,
// MedicalConclusionId = s.patientRegister.MedicalConclusionId,
// MedicalPackageId = s.patientRegister.MedicalPackageId,
// MedicalStartDate = DataHelper.ConversionDateToString(s.patientRegister.MedicalStartDate),
// MedicalTimes = s.patientRegister.MedicalTimes,
// MedicalTypeId = s.patientRegister.MedicalTypeId,
// MedicalCenterId = s.patientRegister.MedicalCenterId,
// PatientId = s.patientRegister.PatientId,
// PatientName = s.patientRegister.PatientName,
// PatientRegisterNo = s.patientRegister.PatientRegisterNo,
// PersonnelTypeId = s.patientRegister.PersonnelTypeId,
// Photo = s.patientRegister.Photo,
// Remark = s.patientRegister.Remark,
// ReportPrintTimes = s.patientRegister.ReportPrintTimes,
// Salesman = s.patientRegister.Salesman,
// SexHormoneTermId = s.patientRegister.SexHormoneTermId,
// CreatorName = _cacheService.GetSurnameAsync(s.patientRegister.CreatorId).GetAwaiter().GetResult(),
// LastModifierName = _cacheService.GetSurnameAsync(s.patientRegister.LastModifierId).GetAwaiter().GetResult(),
// Address = s.patientRegister.Patient.Address, //档案表信息
// BirthPlaceId = s.patientRegister.Patient.BirthPlaceId,
// DisplayName = s.patientRegister.Patient.DisplayName,
// Email = s.patientRegister.Patient.Email,
// IdNo = s.patientRegister.Patient.IdNo,
// MobileTelephone = s.patientRegister.Patient.MobileTelephone,
// NationId = s.patientRegister.Patient.NationId,
// PatientNo = s.patientRegister.Patient.PatientNo,
// PatientPassword = s.patientRegister.Patient.PatientPassword,
// PostalCode = s.patientRegister.Patient.PostalCode,
// Telephone = s.patientRegister.Patient.Telephone,
// Planuserid = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.Planuserid : "",
// QztlIsCw = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsCw : null,
// QztlIsCy = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsCy : null,
// QztlIsFj = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsFj : null,
// QztlIsGt = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsGt : null,
// QztlIsMain = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsMain : null,
// QztlIsWh = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsWh : null,
// QztlType = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlType : null,
// IsQztlImport = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.IsQztlImport : null,
// Remark2 = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.Remark2 : null,
// Remark3 = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.Remark3 : null,
// Remark4 = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.Remark4 : null,
// UploadQztlFlag = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.UploadQztlFlag : null,
// //CustomerOrgName = EntityHelper.GetCustomerOrgNameNoSql(customerOrgList, s.patientRegister.CustomerOrgId),
// //CustomerOrgParentId = EntityHelper.GetParentNoSql(customerOrgList, s.patientRegister.CustomerOrgId),
// //CustomerOrgParentName = EntityHelper.GetCustomerOrgParentNameNoSql(customerOrgList, s.patientRegister.CustomerOrgId)
// CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(s.patientRegister.CustomerOrgId).GetAwaiter().GetResult(),
// CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(s.patientRegister.CustomerOrgId).GetAwaiter().GetResult().Id,
// CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(s.patientRegister.CustomerOrgId).GetAwaiter().GetResult()
// }).ToList();
// return new PagedResultDto<PatientRegisterOrNoDto>(totalCount, entdto);
//}
/// <summary>
/// 获取档案登记列表 带联合搜索条件
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/PatientRegister/GetListInFilter")] public async Task<PagedResultDto<PatientRegisterOrNoDto>> GetListInFilterAsync(GetListInSearchDto input) { string patientRegisterQueryName = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "patient_register_query_name");
#region MyRegion
var entlist = from patientRegister in await _repository.GetQueryableAsync() join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id join patientRegisterExter in await _patientRegisterExterRepository.GetQueryableAsync() on patientRegister.Id equals patientRegisterExter.PatientRegisterId into patientRegisterExterTemp from patientRegisterExterHaveEmpty in patientRegisterExterTemp.DefaultIfEmpty() select new { patientRegister, patient, patientRegisterExterHaveEmpty };
if (!string.IsNullOrEmpty(input.PatientNo)) entlist = entlist.Where(m => m.patient.PatientNo == input.PatientNo);
if (!string.IsNullOrEmpty(input.IdNo)) entlist = entlist.Where(m => m.patient.IdNo == input.IdNo);
if (!string.IsNullOrEmpty(input.PatientName)) { if (patientRegisterQueryName == "Y") { entlist = entlist.Where(m => m.patientRegister.PatientName == input.PatientName); } else { entlist = entlist.Where(m => !string.IsNullOrWhiteSpace(input.PatientName) && m.patientRegister.PatientName.Contains(input.PatientName)); } } //if (!string.IsNullOrEmpty(input.PatientName))
// entlist = entlist.Where(m => !string.IsNullOrEmpty(m.patientRegister.PatientName) && m.patientRegister.PatientName.Contains(input.PatientName));
if (!string.IsNullOrEmpty(input.PatientRegisterNo)) entlist = entlist.Where(m => m.patientRegister.PatientRegisterNo == input.PatientRegisterNo);
if (!string.IsNullOrEmpty(input.Phone)) entlist = entlist.Where(m => m.patient.MobileTelephone == input.Phone || m.patient.Telephone == input.Phone);
if (input.SexId != null) entlist = entlist.Where(m => m.patientRegister.SexId == input.SexId);
if (!string.IsNullOrEmpty(input.StartDate) && !string.IsNullOrEmpty(input.EndDate)) { if (input.DateType == '1') { entlist = entlist.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(input.StartDate) && m.patientRegister.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1)); } else if (input.DateType == '2') { entlist = entlist.Where(m => m.patientRegister.MedicalStartDate >= Convert.ToDateTime(input.StartDate) && m.patientRegister.MedicalStartDate < Convert.ToDateTime(input.EndDate).AddDays(1)); } else { entlist = entlist.Where(m => (m.patientRegister.CreationTime >= Convert.ToDateTime(input.StartDate) && m.patientRegister.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1)) || (m.patientRegister.MedicalStartDate >= Convert.ToDateTime(input.StartDate) && m.patientRegister.MedicalStartDate < Convert.ToDateTime(input.EndDate).AddDays(1)) ); } } if (input.CompleteFlags.Any()) { entlist = entlist.Where(m => input.CompleteFlags.Contains(m.patientRegister.CompleteFlag)); }
if (input.MedicalTypeIds.Any()) { entlist = entlist.Where(m => m.patientRegister.MedicalTypeId != null && input.MedicalTypeIds.Contains(m.patientRegister.MedicalTypeId.Value)); }
if (input.PersonnelTypeIds.Any()) { entlist = entlist.Where(m => m.patientRegister.PersonnelTypeId != null && input.PersonnelTypeIds.Contains(m.patientRegister.PersonnelTypeId.Value)); }
if (input.IsRecoverGuide != null) entlist = entlist.Where(m => m.patientRegister.IsRecoverGuide == input.IsRecoverGuide);
if (input.CustomerOrgId != null) { var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(input.CustomerOrgId.Value); entlist = entlist.Where(m => CustomerOrgIds.Contains(m.patientRegister.CustomerOrgId)); }
if (input.CustomerOrgRegisterId != null && input.CustomerOrgRegisterId != Guid.Empty) { entlist = entlist.Where(m => m.patientRegister.CustomerOrgRegisterId == input.CustomerOrgRegisterId); }
if (input.CustomerOrgGroupIds.Any()) { entlist = entlist.Where(m => m.patientRegister.CustomerOrgGroupId != null && input.CustomerOrgGroupIds.Contains(m.patientRegister.CustomerOrgGroupId.Value)); }
#endregion
int totalCount = entlist.Count();
entlist = entlist.OrderByDescending(o => o.patientRegister.CompleteFlag).ThenBy(o => o.patientRegister.Id).Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount);
var entdto = entlist.ToList().Select(s => new PatientRegisterOrNoDto { CreationTime = s.patientRegister.CreationTime, CreatorId = s.patientRegister.CreatorId, Id = s.patientRegister.Id, LastModificationTime = s.patientRegister.LastModificationTime, LastModifierId = s.patientRegister.LastModifierId, ThirdInfo = s.patientRegister.ThirdInfo, SummaryDoctorId = s.patientRegister.SummaryDoctorId, SummaryDate = DataHelper.ConversionDateToString(s.patientRegister.SummaryDate), SexId = s.patientRegister.SexId, Age = s.patientRegister.Age, AuditDate = DataHelper.ConversionDateToString(s.patientRegister.AuditDate), AuditDoctorId = s.patientRegister.AuditDoctorId, BirthDate = DataHelper.ConversionDateToString(s.patientRegister.BirthDate), CompleteFlag = s.patientRegister.CompleteFlag, CustomerOrgGroupId = s.patientRegister.CustomerOrgGroupId, CustomerOrgId = s.patientRegister.CustomerOrgId, CustomerOrgRegisterId = s.patientRegister.CustomerOrgRegisterId, GuidePrintTimes = s.patientRegister.GuidePrintTimes, InterposeMeasure = s.patientRegister.InterposeMeasure, IsAudit = s.patientRegister.IsAudit, IsLock = s.patientRegister.IsLock, IsMedicalStart = s.patientRegister.IsMedicalStart, IsNameHide = s.patientRegister.IsNameHide, IsPhoneFollow = s.patientRegister.IsPhoneFollow, IsRecoverGuide = s.patientRegister.IsRecoverGuide, IsUpload = s.patientRegister.IsUpload, IsVip = s.patientRegister.IsVip, JobCardNo = s.patientRegister.JobCardNo, JobPost = s.patientRegister.JobPost, JobTitle = s.patientRegister.JobTitle, MaritalStatusId = s.patientRegister.MaritalStatusId, MedicalCardNo = s.patientRegister.MedicalCardNo, MedicalConclusionId = s.patientRegister.MedicalConclusionId, MedicalPackageId = s.patientRegister.MedicalPackageId, MedicalStartDate = DataHelper.ConversionDateToString(s.patientRegister.MedicalStartDate), MedicalTimes = s.patientRegister.MedicalTimes, MedicalTypeId = s.patientRegister.MedicalTypeId, MedicalCenterId = s.patientRegister.MedicalCenterId, PatientId = s.patientRegister.PatientId, PatientName = s.patientRegister.PatientName, PatientRegisterNo = s.patientRegister.PatientRegisterNo, PersonnelTypeId = s.patientRegister.PersonnelTypeId, Photo = s.patientRegister.Photo, Remark = s.patientRegister.Remark, ReportPrintTimes = s.patientRegister.ReportPrintTimes, Salesman = s.patientRegister.Salesman, SexHormoneTermId = s.patientRegister.SexHormoneTermId, CreatorName = _cacheService.GetSurnameAsync(s.patientRegister.CreatorId).GetAwaiter().GetResult(), LastModifierName = _cacheService.GetSurnameAsync(s.patientRegister.LastModifierId).GetAwaiter().GetResult(), Address = s.patientRegister.Patient.Address, //档案表信息
BirthPlaceId = s.patientRegister.Patient.BirthPlaceId, DisplayName = s.patientRegister.Patient.DisplayName, Email = s.patientRegister.Patient.Email, IdNo = s.patientRegister.Patient.IdNo, MobileTelephone = s.patientRegister.Patient.MobileTelephone, NationId = s.patientRegister.Patient.NationId, PatientNo = s.patientRegister.Patient.PatientNo, PatientPassword = s.patientRegister.Patient.PatientPassword, PostalCode = s.patientRegister.Patient.PostalCode, Telephone = s.patientRegister.Patient.Telephone, Planuserid = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.Planuserid : "", QztlIsCw = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsCw : null, QztlIsCy = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsCy : null, QztlIsFj = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsFj : null, QztlIsGt = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsGt : null, QztlIsMain = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsMain : null, QztlIsWh = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlIsWh : null, QztlType = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.QztlType : null, IsQztlImport = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.IsQztlImport : null, Remark2 = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.Remark2 : null, Remark3 = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.Remark3 : null, Remark4 = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.Remark4 : null, UploadQztlFlag = s.patientRegisterExterHaveEmpty != null ? s.patientRegisterExterHaveEmpty.UploadQztlFlag : null, //CustomerOrgName = EntityHelper.GetCustomerOrgNameNoSql(customerOrgList, s.patientRegister.CustomerOrgId),
//CustomerOrgParentId = EntityHelper.GetParentNoSql(customerOrgList, s.patientRegister.CustomerOrgId),
//CustomerOrgParentName = EntityHelper.GetCustomerOrgParentNameNoSql(customerOrgList, s.patientRegister.CustomerOrgId)
CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(s.patientRegister.CustomerOrgId).GetAwaiter().GetResult(), CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(s.patientRegister.CustomerOrgId).GetAwaiter().GetResult().Id, CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(s.patientRegister.CustomerOrgId).GetAwaiter().GetResult(), MedicalPackageName = s.patientRegister.MedicalPackageId == null ? "" : _cacheService.GetMedicalPackageAsync(s.patientRegister.MedicalPackageId.Value).GetAwaiter().GetResult().DisplayName, CustomerOrgGroupName = s.patientRegister.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(s.patientRegister.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName, NationName = _cacheService.GetNationNameAsync(s.patient.NationId).GetAwaiter().GetResult(), PersonnelTypeName = _cacheService.GetPersonnelTypeNameAsync(s.patientRegister.PersonnelTypeId).GetAwaiter().GetResult(), MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(s.patientRegister.MaritalStatusId).GetAwaiter().GetResult(), MedicalTypeName = _cacheService.GetMedicalTypeNameAsync(s.patientRegister.MedicalTypeId).GetAwaiter().GetResult(), SexName = _cacheService.GetSexNameAsync(s.patientRegister.SexId).GetAwaiter().GetResult() // SummaryHistoricalReview = s.patientRegister.SummaryHistoricalReview
}).ToList();
return new PagedResultDto<PatientRegisterOrNoDto>(totalCount, entdto);
}
/// <summary>
/// 人员登记列表 带收费信息
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/PatientRegister/GetPatientRegisterWithCharge")] public async Task<PagedResultDto<GetPatientRegisterWithChargeDto>> GetPatientRegisterWithChargeAsync(GetListInSearchDto input) {
string patientRegisterQueryName = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "patient_register_query_name");
#region MyRegion
var query = from patientRegister in await _repository.GetQueryableAsync() join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id select new { patientRegister, patient };
if (!string.IsNullOrEmpty(input.PatientNo)) query = query.Where(m => m.patient.PatientNo == input.PatientNo);
if (!string.IsNullOrEmpty(input.IdNo)) query = query.Where(m => m.patient.IdNo == input.IdNo);
//if (!string.IsNullOrEmpty(input.PatientName))
// query = query.Where(m => !string.IsNullOrEmpty(m.patientRegister.PatientName) && m.patientRegister.PatientName.Contains(input.PatientName));
if (!string.IsNullOrEmpty(input.PatientName)) { if (patientRegisterQueryName == "Y") { query = query.Where(m => m.patientRegister.PatientName == input.PatientName); } else { query = query.Where(m => !string.IsNullOrWhiteSpace(input.PatientName) && m.patientRegister.PatientName.Contains(input.PatientName)); } } if (!string.IsNullOrEmpty(input.PatientRegisterNo)) query = query.Where(m => m.patientRegister.PatientRegisterNo == input.PatientRegisterNo);
if (!string.IsNullOrEmpty(input.Phone)) query = query.Where(m => m.patient.MobileTelephone == input.Phone || m.patient.Telephone == input.Phone);
if (input.SexId != null) query = query.Where(m => m.patientRegister.SexId == input.SexId);
if (!string.IsNullOrEmpty(input.StartDate) && !string.IsNullOrEmpty(input.EndDate)) { if (input.DateType == '1') { query = query.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(input.StartDate) && m.patientRegister.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1)); } else if (input.DateType == '2') { query = query.Where(m => m.patientRegister.MedicalStartDate >= Convert.ToDateTime(input.StartDate) && m.patientRegister.MedicalStartDate < Convert.ToDateTime(input.EndDate).AddDays(1)); } else { query = query.Where(m => (m.patientRegister.CreationTime >= Convert.ToDateTime(input.StartDate) && m.patientRegister.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1)) || (m.patientRegister.MedicalStartDate >= Convert.ToDateTime(input.StartDate) && m.patientRegister.MedicalStartDate < Convert.ToDateTime(input.EndDate).AddDays(1)) ); } } if (input.CompleteFlags.Any()) { query = query.Where(m => input.CompleteFlags.Contains(m.patientRegister.CompleteFlag)); }
if (input.MedicalTypeIds.Any()) { query = query.Where(m => m.patientRegister.MedicalTypeId != null && input.MedicalTypeIds.Contains(m.patientRegister.MedicalTypeId.Value)); }
if (input.PersonnelTypeIds.Any()) { query = query.Where(m => m.patientRegister.PersonnelTypeId != null && input.PersonnelTypeIds.Contains(m.patientRegister.PersonnelTypeId.Value)); }
if (input.IsRecoverGuide != null) query = query.Where(m => m.patientRegister.IsRecoverGuide == input.IsRecoverGuide);
if (input.CustomerOrgId != null) { var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(input.CustomerOrgId.Value); query = query.Where(m => CustomerOrgIds.Contains(m.patientRegister.CustomerOrgId)); }
if (input.CustomerOrgRegisterId != null && input.CustomerOrgRegisterId != Guid.Empty) { query = query.Where(m => m.patientRegister.CustomerOrgRegisterId == input.CustomerOrgRegisterId); }
if (input.CustomerOrgGroupIds.Any()) { query = query.Where(m => m.patientRegister.CustomerOrgGroupId != null && input.CustomerOrgGroupIds.Contains(m.patientRegister.CustomerOrgGroupId.Value)); }
#endregion
int totalCount = query.Count(); //总数
//分页后的id集合
var patientRegisterIds = query .OrderByDescending(g => g.patientRegister.CompleteFlag) .ThenBy(g => g.patientRegister.Id) .Skip(input.SkipCount * input.MaxResultCount) .Take(input.MaxResultCount) .Select(s => s.patientRegister.Id) .ToList();
var entlist = from patientRegister in await _repository.GetQueryableAsync() join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id join patientRegisterExter in await _patientRegisterExterRepository.GetQueryableAsync() on patientRegister.Id equals patientRegisterExter.PatientRegisterId into patientRegisterExterTemp from patientRegisterExterHaveEmpty in patientRegisterExterTemp.DefaultIfEmpty() join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId into registerCheckTemp from registerCheckHaveEmpty in registerCheckTemp.DefaultIfEmpty() join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheckHaveEmpty.Id equals registerCheckAsbitem.RegisterCheckId into registerCheckAsbitemTemp from registerCheckAsbitemHaveEmpty in registerCheckAsbitemTemp.DefaultIfEmpty() join charge in await _chargeRepository.GetQueryableAsync() on patientRegister.Id equals charge.PatientRegisterId into chargeTemp from chargeHaveEmpty in chargeTemp.DefaultIfEmpty() join chargePay in await _chargePayRepository.GetQueryableAsync() on chargeHaveEmpty.Id equals chargePay.ChargeId into chargePayTemp from chargePayHaveEmpty in chargePayTemp.DefaultIfEmpty() join payMode in await _payModeRepository.GetQueryableAsync() on chargePayHaveEmpty.PayModeId equals payMode.Id into payModeTemp from payModePayHaveEmpty in payModeTemp.DefaultIfEmpty() where patientRegisterIds.Contains(patientRegister.Id) select new { patientRegister, patient, patientRegisterExterHaveEmpty, registerCheckAsbitemHaveEmpty = registerCheckAsbitemHaveEmpty != null ? new { registerCheckAsbitemHaveEmpty.Id, registerCheckAsbitemHaveEmpty.StandardPrice, registerCheckAsbitemHaveEmpty.Amount, registerCheckAsbitemHaveEmpty.ChargePrice, registerCheckAsbitemHaveEmpty.IsCharge, registerCheckAsbitemHaveEmpty.PayTypeFlag } : null, payModePayHaveEmpty = payModePayHaveEmpty != null ? new { payModePayHaveEmpty.DisplayName } : null };
var queryGroup = entlist.ToList().GroupBy(g => g.patientRegister);
List<GetPatientRegisterWithChargeDto> entListDto = new List<GetPatientRegisterWithChargeDto>();
foreach (var group in queryGroup) { var entDto = new GetPatientRegisterWithChargeDto { CreationTime = group.Key.CreationTime, CreatorId = group.Key.CreatorId, Id = group.Key.Id, LastModificationTime = group.Key.LastModificationTime, LastModifierId = group.Key.LastModifierId, ThirdInfo = group.Key.ThirdInfo, SummaryDoctorId = group.Key.SummaryDoctorId, SummaryDate = DataHelper.ConversionDateToString(group.Key.SummaryDate), SexId = group.Key.SexId, Age = group.Key.Age, AuditDate = DataHelper.ConversionDateToString(group.Key.AuditDate), AuditDoctorId = group.Key.AuditDoctorId, BirthDate = DataHelper.ConversionDateToString(group.Key.BirthDate), CompleteFlag = group.Key.CompleteFlag, CustomerOrgGroupId = group.Key.CustomerOrgGroupId, CustomerOrgId = group.Key.CustomerOrgId, CustomerOrgRegisterId = group.Key.CustomerOrgRegisterId, GuidePrintTimes = group.Key.GuidePrintTimes, InterposeMeasure = group.Key.InterposeMeasure, IsAudit = group.Key.IsAudit, IsLock = group.Key.IsLock, IsMedicalStart = group.Key.IsMedicalStart, IsNameHide = group.Key.IsNameHide, IsPhoneFollow = group.Key.IsPhoneFollow, IsRecoverGuide = group.Key.IsRecoverGuide, IsUpload = group.Key.IsUpload, IsVip = group.Key.IsVip, JobCardNo = group.Key.JobCardNo, JobPost = group.Key.JobPost, JobTitle = group.Key.JobTitle, MaritalStatusId = group.Key.MaritalStatusId, MedicalCardNo = group.Key.MedicalCardNo, MedicalConclusionId = group.Key.MedicalConclusionId, MedicalPackageId = group.Key.MedicalPackageId, MedicalStartDate = DataHelper.ConversionDateToString(group.Key.MedicalStartDate), MedicalTimes = group.Key.MedicalTimes, MedicalTypeId = group.Key.MedicalTypeId, MedicalCenterId = group.Key.MedicalCenterId, PatientId = group.Key.PatientId, PatientName = group.Key.PatientName, PatientRegisterNo = group.Key.PatientRegisterNo, PersonnelTypeId = group.Key.PersonnelTypeId, Photo = group.Key.Photo, Remark = group.Key.Remark, ReportPrintTimes = group.Key.ReportPrintTimes, Salesman = group.Key.Salesman, SexHormoneTermId = group.Key.SexHormoneTermId, CreatorName = _cacheService.GetSurnameAsync(group.Key.CreatorId).GetAwaiter().GetResult(), LastModifierName = _cacheService.GetSurnameAsync(group.Key.LastModifierId).GetAwaiter().GetResult(), Address = group.First().patient.Address, //档案表信息
BirthPlaceId = group.First().patient.BirthPlaceId, DisplayName = group.First().patient.DisplayName, Email = group.First().patient.Email, IdNo = group.First().patient.IdNo, MobileTelephone = group.First().patient.MobileTelephone, NationId = group.First().patient.NationId, PatientNo = group.First().patient.PatientNo, PatientPassword = group.First().patient.PatientPassword, PostalCode = group.First().patient.PostalCode, Telephone = group.First().patient.Telephone, Planuserid = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.Planuserid : "", QztlIsCw = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.QztlIsCw : null, QztlIsCy = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.QztlIsCy : null, QztlIsFj = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.QztlIsFj : null, QztlIsGt = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.QztlIsGt : null, QztlIsMain = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.QztlIsMain : null, QztlIsWh = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.QztlIsWh : null, QztlType = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.QztlType : null, IsQztlImport = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.IsQztlImport : null, Remark2 = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.Remark2 : null, Remark3 = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.Remark3 : null, Remark4 = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.Remark4 : null, UploadQztlFlag = group.FirstOrDefault().patientRegisterExterHaveEmpty != null ? group.FirstOrDefault().patientRegisterExterHaveEmpty.UploadQztlFlag : null, CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(group.Key.CustomerOrgId).GetAwaiter().GetResult(), CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(group.Key.CustomerOrgId).GetAwaiter().GetResult().Id, CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(group.Key.CustomerOrgId).GetAwaiter().GetResult(), MedicalPackageName = group.Key.MedicalPackageId == null ? "" : _cacheService.GetMedicalPackageAsync(group.Key.MedicalPackageId.Value).GetAwaiter().GetResult().DisplayName, CustomerOrgGroupName = group.Key.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(group.Key.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName, NationName = _cacheService.GetNationNameAsync(group.FirstOrDefault().patient.NationId).GetAwaiter().GetResult(), PersonnelTypeName = _cacheService.GetPersonnelTypeNameAsync(group.Key.PersonnelTypeId).GetAwaiter().GetResult(), MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(group.Key.MaritalStatusId).GetAwaiter().GetResult(), MedicalTypeName = _cacheService.GetMedicalTypeNameAsync(group.Key.MedicalTypeId).GetAwaiter().GetResult(), SexName = _cacheService.GetSexNameAsync(group.Key.SexId).GetAwaiter().GetResult() };
entDto.StandardAmount = 0; entDto.ReceivableAmount = 0; entDto.ChargeAmount = 0; entDto.ChargePayMode = "";
if (group.Count(m => m.registerCheckAsbitemHaveEmpty != null) > 0) { entDto.StandardAmount = group.Where(m => m.registerCheckAsbitemHaveEmpty != null).GroupBy(g => g.registerCheckAsbitemHaveEmpty).Sum(s => s.Key.StandardPrice * s.Key.Amount); entDto.ReceivableAmount = group.Where(m => m.registerCheckAsbitemHaveEmpty != null && m.registerCheckAsbitemHaveEmpty.PayTypeFlag != RegisterCheckAsbitemPayTypeFlag.Free).GroupBy(g => g.registerCheckAsbitemHaveEmpty).Sum(s => s.Key.ChargePrice * s.Key.Amount); entDto.ChargeAmount = group.Where(m => m.registerCheckAsbitemHaveEmpty != null && m.registerCheckAsbitemHaveEmpty.IsCharge == 'Y').GroupBy(g => g.registerCheckAsbitemHaveEmpty).Sum(s => s.Key.ChargePrice * s.Key.Amount); }
if (group.Count(m => m.payModePayHaveEmpty != null) > 0) { entDto.ChargePayMode = string.Join(",", group.Where(m => m.payModePayHaveEmpty != null).GroupBy(g => g.payModePayHaveEmpty).Select(s => s.Key.DisplayName)); }
entListDto.Add(entDto); }
return new PagedResultDto<GetPatientRegisterWithChargeDto>(totalCount, entListDto);
}
/// <summary>
/// 获取档案登记信息 根据档案号或者条码号(档案号条件返回最新的一条)
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/getpatientregisterorpatient")] public async Task<PatientRegisterOrNoDto> GetPatientRegisterOrPatientAsync(GetPatientRegisterOrPatientDto input) { var entdto = new PatientRegisterOrNoDto();
#region MyRegion
var entlist = (await _repository.GetDbSetAsync()).Include(x => x.Patient).AsQueryable();
if (input.SType == 1) entlist = entlist.Where(m => m.PatientRegisterNo == input.PatientRegisterNo); else entlist = entlist.Where(m => m.Patient.PatientNo == input.PatientNo).OrderByDescending(o => o.MedicalTimes);
if (input.IsFilterPreRegistration != null && input.IsFilterPreRegistration == 'Y') { //直接过滤
entlist = entlist.Where(m => m.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration); }
var ent = entlist.FirstOrDefault();
#endregion
if (ent != null) { var userList = await _userRepository.GetListAsync();
var customerOrgList = await _customerOrgRepository.GetListAsync();
entdto = new PatientRegisterOrNoDto { CreationTime = ent.CreationTime, CreatorId = ent.CreatorId, Id = ent.Id, LastModificationTime = ent.LastModificationTime, LastModifierId = ent.LastModifierId, ThirdInfo = ent.ThirdInfo, SummaryDoctorId = ent.SummaryDoctorId, SummaryDate = DataHelper.ConversionDateToString(ent.SummaryDate), SexId = ent.SexId, Age = ent.Age, AuditDate = DataHelper.ConversionDateToString(ent.AuditDate), AuditDoctorId = ent.AuditDoctorId, BirthDate = DataHelper.ConversionDateToString(ent.BirthDate), CompleteFlag = ent.CompleteFlag, CustomerOrgGroupId = ent.CustomerOrgGroupId, CustomerOrgId = ent.CustomerOrgId, CustomerOrgRegisterId = ent.CustomerOrgRegisterId, GuidePrintTimes = ent.GuidePrintTimes, InterposeMeasure = ent.InterposeMeasure, IsAudit = ent.IsAudit, IsLock = ent.IsLock, IsMedicalStart = ent.IsMedicalStart, IsNameHide = ent.IsNameHide, IsPhoneFollow = ent.IsPhoneFollow, IsRecoverGuide = ent.IsRecoverGuide, IsUpload = ent.IsUpload, IsVip = ent.IsVip, JobCardNo = ent.JobCardNo, JobPost = ent.JobPost, JobTitle = ent.JobTitle, MaritalStatusId = ent.MaritalStatusId, MedicalCardNo = ent.MedicalCardNo, MedicalConclusionId = ent.MedicalConclusionId, MedicalPackageId = ent.MedicalPackageId, MedicalStartDate = DataHelper.ConversionDateToString(ent.MedicalStartDate), MedicalTimes = ent.MedicalTimes, MedicalTypeId = ent.MedicalTypeId, MedicalCenterId = ent.MedicalCenterId, PatientId = ent.PatientId, PatientName = ent.PatientName, PatientRegisterNo = ent.PatientRegisterNo, PersonnelTypeId = ent.PersonnelTypeId, Photo = ent.Photo, Remark = ent.Remark, ReportPrintTimes = ent.ReportPrintTimes, Salesman = ent.Salesman, SexHormoneTermId = ent.SexHormoneTermId, CreatorName = EntityHelper.GetSurnameNoSql(userList, ent.CreatorId), LastModifierName = EntityHelper.GetSurnameNoSql(userList, ent.LastModifierId), Address = ent.Patient.Address, //档案表信息
BirthPlaceId = ent.Patient.BirthPlaceId, DisplayName = ent.Patient.DisplayName, Email = ent.Patient.Email, IdNo = ent.Patient.IdNo, MobileTelephone = ent.Patient.MobileTelephone, NationId = ent.Patient.NationId, PatientNo = ent.Patient.PatientNo, PatientPassword = ent.Patient.PatientPassword, PostalCode = ent.Patient.PostalCode, Telephone = ent.Patient.Telephone, CustomerOrgName = EntityHelper.GetCustomerOrgNameNoSql(customerOrgList, ent.CustomerOrgId), CustomerOrgParentId = EntityHelper.GetParentNoSql(customerOrgList, ent.CustomerOrgId), CustomerOrgParentName = EntityHelper.GetCustomerOrgParentNameNoSql(customerOrgList, ent.CustomerOrgId) }; } else { entdto = null; }
return entdto; } /// <summary>
/// 获取档案登记信息 根据档案号或者条码号(档案号条件返回最新的一条)
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/patientregister/GetAlreadyRegisterPatientRegisterByNo")] public async Task<PatientRegisterOrNoDto> GetAlreadyRegisterPatientRegisterByNoAsync(PatientRegisterNoInputDto input) { var query = (await _repository.GetQueryableAsync()).Include(x => x.Patient).AsQueryable(); var patientRegisterList = new List<PatientRegister>(); PatientRegister ent = null; if (!string.IsNullOrWhiteSpace(input.PatientRegisterNo)) { ent = query.Where(m => m.PatientRegisterNo == input.PatientRegisterNo).FirstOrDefault(); if (ent == null) { throw new UserFriendlyException("未找到人员信息"); } }
else if (!string.IsNullOrWhiteSpace(input.PatientNo)) { patientRegisterList = query.Where(m => m.Patient.PatientNo == input.PatientNo).OrderByDescending(o => o.MedicalTimes).ToList(); if (patientRegisterList.Count == 0) { throw new UserFriendlyException("未找到人员信息"); }
patientRegisterList = patientRegisterList.Where(m => m.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration).ToList(); if (patientRegisterList.Count == 0) { throw new UserFriendlyException("该人未正式登记"); } ent = patientRegisterList.First(); } else if (!string.IsNullOrWhiteSpace(input.IdNo)) { patientRegisterList = query.Where(m => m.Patient.IdNo == input.IdNo).OrderByDescending(o => o.CreationTime).ToList(); if (patientRegisterList.Count == 0) { throw new UserFriendlyException("未找到人员信息"); }
patientRegisterList = patientRegisterList.Where(m => m.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration).ToList(); if (patientRegisterList.Count == 0) { throw new UserFriendlyException("该人未正式登记"); } ent = patientRegisterList.First(); } else { throw new UserFriendlyException("检索条件不能为空"); } if (ent.CompleteFlag == PatientRegisterCompleteFlag.PreRegistration) { throw new UserFriendlyException("该人未正式登记"); }
var entdto = new PatientRegisterOrNoDto { CreationTime = ent.CreationTime, CreatorId = ent.CreatorId, Id = ent.Id, LastModificationTime = ent.LastModificationTime, LastModifierId = ent.LastModifierId, ThirdInfo = ent.ThirdInfo, SummaryDoctorId = ent.SummaryDoctorId, SummaryDate = DataHelper.ConversionDateToString(ent.SummaryDate), SexId = ent.SexId, SexName = _cacheService.GetSexNameAsync(ent.SexId).Result, Age = ent.Age, AuditDate = DataHelper.ConversionDateToString(ent.AuditDate), AuditDoctorId = ent.AuditDoctorId, BirthDate = DataHelper.ConversionDateToString(ent.BirthDate), CompleteFlag = ent.CompleteFlag, CustomerOrgGroupId = ent.CustomerOrgGroupId, CustomerOrgId = ent.CustomerOrgId, CustomerOrgRegisterId = ent.CustomerOrgRegisterId, GuidePrintTimes = ent.GuidePrintTimes, InterposeMeasure = ent.InterposeMeasure, IsAudit = ent.IsAudit, IsLock = ent.IsLock, IsMedicalStart = ent.IsMedicalStart, IsNameHide = ent.IsNameHide, IsPhoneFollow = ent.IsPhoneFollow, IsRecoverGuide = ent.IsRecoverGuide, IsUpload = ent.IsUpload, IsVip = ent.IsVip, JobCardNo = ent.JobCardNo, JobPost = ent.JobPost, JobTitle = ent.JobTitle, MaritalStatusId = ent.MaritalStatusId, MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(ent.MaritalStatusId).GetAwaiter().GetResult(), MedicalCardNo = ent.MedicalCardNo, MedicalConclusionId = ent.MedicalConclusionId, MedicalPackageId = ent.MedicalPackageId, MedicalStartDate = DataHelper.ConversionDateToString(ent.MedicalStartDate), MedicalTimes = ent.MedicalTimes, MedicalTypeId = ent.MedicalTypeId, MedicalTypeName = _cacheService.GetMedicalTypeNameAsync(ent.MedicalTypeId).GetAwaiter().GetResult(), MedicalCenterId = ent.MedicalCenterId, PatientId = ent.PatientId, PatientName = ent.PatientName, PatientRegisterNo = ent.PatientRegisterNo, PersonnelTypeId = ent.PersonnelTypeId, PersonnelTypeName = _cacheService.GetPersonnelTypeNameAsync(ent.PersonnelTypeId).GetAwaiter().GetResult(), Remark = ent.Remark, ReportPrintTimes = ent.ReportPrintTimes, Salesman = ent.Salesman, SexHormoneTermId = ent.SexHormoneTermId, Photo = ent.Photo, CreatorName = _cacheService.GetSurnameAsync(ent.CreatorId).GetAwaiter().GetResult(), LastModifierName = _cacheService.GetSurnameAsync(ent.LastModifierId).GetAwaiter().GetResult(), Address = ent.Patient.Address, //档案表信息
BirthPlaceId = ent.Patient.BirthPlaceId, DisplayName = ent.Patient.DisplayName, Email = ent.Patient.Email, IdNo = ent.Patient.IdNo, MobileTelephone = ent.Patient.MobileTelephone, NationId = ent.Patient.NationId, NationName = _cacheService.GetNationNameAsync(ent.Patient.NationId).GetAwaiter().GetResult(), PatientNo = ent.Patient.PatientNo, PostalCode = ent.Patient.PostalCode, Telephone = ent.Patient.Telephone, CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(ent.CustomerOrgId).GetAwaiter().GetResult(), CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(ent.CustomerOrgId).GetAwaiter().GetResult().Id, CustomerOrgParentName = _cacheService.GetTopCustomerOrgAsync(ent.CustomerOrgId).GetAwaiter().GetResult().DisplayName, IsPatientOccupationalDisease = _patientOccupationalDiseaseManager.GetPatientRegisterIsOccupationalDisease(ent.Id).GetAwaiter().GetResult() // SummaryHistoricalReview = ent.SummaryHistoricalReview
}; return entdto; }
///// <summary>
///// 创建 登记档案 弃用
///// </summary>
///// <param name="input"></param>
///// <returns></returns>
//[RemoteService(false)]
//public override async Task<PatientRegisterDto> CreateAsync(CreatePatientRegisterDto input)
//{
// var createEntity = ObjectMapper.Map<CreatePatientRegisterDto, PatientRegister>(input);
// var createPatientEntity = ObjectMapper.Map<CreatePatientRegisterDto, Patient>(input);
// var entity = await _manager.CreateAsync(createEntity, createPatientEntity);
// var dto = ObjectMapper.Map<PatientRegister, PatientRegisterDto>(entity);
// return dto;
//}
/// <summary>
/// 新版人员登记
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/PatientRegister/CreatePatientRegister")] public async Task<PatientRegisterOrNoDto> CreatePatientRegisterAsync(CreatePatientRegisterDto input) { //总检时特殊处理
if (input.CompleteFlag == PatientRegisterCompleteFlag.SumCheck) { return await SumCheckUpdatePatientRegister(input); } PatientRegisterOrNoDto msg = new PatientRegisterOrNoDto(); input.RegisterCheckAsbitems.ForEach(o => { if (o.Id == null) { o.Id = Guid.Empty; } });
var createPatientRegisterArg = ObjectMapper.Map<CreatePatientRegisterDto, CreatePatientRegisterArg>(input); var createPatientRegisterExterArg = ObjectMapper.Map<CreatePatientRegisterDto, CreatePatientRegisterExterArg>(input); var updatePatientEntity = ObjectMapper.Map<CreatePatientRegisterDto, Patient>(input); var registerAsbitems = ObjectMapper.Map<List<CreatePatientRegisterRegisterCheckAsbitem>, List<RegisterCheckAsbitem>>(input.RegisterCheckAsbitems); var updatePatientRegisterArg = ObjectMapper.Map<CreatePatientRegisterDto, UpdatePatientRegisterArg>(input); var updatePatientRegisterExterArg = ObjectMapper.Map<CreatePatientRegisterDto, UpdatePatientRegisterExterArg>(input); updatePatientEntity.DisplayName = input.PatientName; //创建人员信息
Patient patient = null; _patientManager.IsAllowIdNoSexError = input.IsAllowIdNoSexError; if (createPatientRegisterArg.PatientId == Guid.Empty) { patient = await _patientManager.CreateAsync(updatePatientEntity); await _patientRepository.InsertAsync(patient); } else { patient = await _patientRepository.GetAsync(createPatientRegisterArg.PatientId); await _patientManager.UpdateAsync(updatePatientEntity, patient); } //创建人员登记信息
createPatientRegisterArg.PatientId = patient.Id; if (patient.BirthDate != null) { createPatientRegisterArg.BirthDate = patient.BirthDate; } PatientRegister entity = null; PatientRegisterExter patientRegisterExterEntity = null; CreateRegisterCheckAsbitemEntity createRegisterCheckAsbitemEntity = null; if (input.PatientRegisterId == null || input.PatientRegisterId == Guid.Empty) { entity = await _manager.CreateAsync(createPatientRegisterArg); createRegisterCheckAsbitemEntity = await _registerAsbitemManager.UpdateManyAsync(entity, registerAsbitems); entity = await _repository.InsertAsync(entity, true);
createPatientRegisterExterArg.PatientRegisterId = entity.Id;
#region 扩展表
patientRegisterExterEntity = _patientRegisterExterManager.CreateAsync(createPatientRegisterExterArg); await _patientRegisterExterRepository.InsertAsync(patientRegisterExterEntity); #endregion
} else { entity = await Repository.GetAsync((Guid)input.PatientRegisterId); char oldCompleteFlag = entity.CompleteFlag; //更新前状态
//更新patientId
updatePatientRegisterArg.PatientId = patient.Id; await _manager.UpdateAsync(updatePatientRegisterArg, entity); createRegisterCheckAsbitemEntity = await _registerAsbitemManager.UpdateManyAsync(entity, registerAsbitems);
#region 预登记转正式登记修改登记者ID
string goRegisterIsUpdateRegisterPerson = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "go_register_is_update_register_person"); if (goRegisterIsUpdateRegisterPerson == "1") { if (oldCompleteFlag == PatientRegisterCompleteFlag.PreRegistration && entity.CompleteFlag == PatientRegisterCompleteFlag.Registration && _currentUser.Id != null) { //判断是预登记转正式登记
entity.UpdateCreatorId(_currentUser.Id.Value); } }
#endregion
await _repository.UpdateAsync(entity);
#region 扩展表
patientRegisterExterEntity = await _patientRegisterExterRepository.FirstOrDefaultAsync(m => m.PatientRegisterId == entity.Id); if (patientRegisterExterEntity != null) { _patientRegisterExterManager.UpdateAsync(updatePatientRegisterExterArg, patientRegisterExterEntity); await _patientRegisterExterRepository.UpdateAsync(patientRegisterExterEntity); } #endregion
}
#region 推送人寿状态
if (!string.IsNullOrWhiteSpace(entity.ThirdBookingId)) { try { await _thirdBookingPushAppService.PushRegisterAsync(new PatientRegisterIdInputDto { PatientRegisterId = entity.Id }); } catch (Exception ex) { _logger.LogError($"推送人寿完成登记=》{ex.Message}"); } } #endregion
//throw new Exception("后续不更新");
if (createRegisterCheckAsbitemEntity != null) { await UpdateRegisterChecks(createRegisterCheckAsbitemEntity); }
await CurrentUnitOfWork.SaveChangesAsync(); msg = await GetPatientRegisterOrNo(entity.Id); return msg; }
/// <summary>
/// 总检时修改人员信息
/// </summary>
/// <returns></returns>
private async Task<PatientRegisterOrNoDto> SumCheckUpdatePatientRegister(CreatePatientRegisterDto input) { var patientRegister = await _repository.FirstOrDefaultAsync(f => f.Id == input.PatientRegisterId); if (patientRegister != null) { var updatePatientEntity = ObjectMapper.Map<CreatePatientRegisterDto, Patient>(input); var updatePatientRegisterArg = ObjectMapper.Map<CreatePatientRegisterDto, UpdatePatientRegisterArg>(input);
//档案
updatePatientEntity.DisplayName = input.PatientName;
//创建人员信息
Patient patient = null; _patientManager.IsAllowIdNoSexError = input.IsAllowIdNoSexError; if (updatePatientRegisterArg.PatientId == Guid.Empty) { patient = await _patientManager.CreateAsync(updatePatientEntity); await _patientRepository.InsertAsync(patient, true);
updatePatientRegisterArg.PatientId = patient.Id; } else { patient = await _patientRepository.GetAsync(updatePatientRegisterArg.PatientId); await _patientManager.UpdateAsync(updatePatientEntity, patient);
await _patientRepository.UpdateAsync(patient, true); }
//人员
var patientRegisterEntity = await _repository.GetAsync((Guid)input.PatientRegisterId);
await _manager.UpdateAsync(updatePatientRegisterArg, patientRegisterEntity, false);
await _repository.UpdateAsync(patientRegisterEntity, true);
return await GetPatientRegisterOrNo((Guid)input.PatientRegisterId); } else { throw new UserFriendlyException("人员不存在");
}
}
/// <summary>
/// 批量增加组合项目
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/PatientRegister/BatchAddAsbitems")] public async Task BatchAddAsbitems(PatientRegisterBatchAddAsbitemsDto input) {
var registerAsbitems = ObjectMapper.Map<List<BatchCreateRegisterCheckAsbitem>, List<RegisterCheckAsbitem>>(input.RegisterCheckAsbitems);
CreateRegisterCheckAsbitemEntity createRegisterCheckAsbitemEntity = null; var entity = await Repository.GetAsync((Guid)input.PatientRegisterId); if (input.RegisterCheckAsbitems.Count == 0) {
return; } var existRegisterChecks = (await _registerCheckRepository.GetQueryableAsync()).Where(o => o.PatientRegisterId == input.PatientRegisterId).AsNoTracking().ToList();
var existRegisterAsbitems = (await _registerCheckAsbitemRepository.GetQueryableAsync()).Where(o => existRegisterChecks.Select(x => x.Id).Contains(o.RegisterCheckId)).AsNoTracking().ToList(); foreach (var registerCheckAsbitem in input.RegisterCheckAsbitems) { if (existRegisterAsbitems.Where(o => o.AsbitemId == registerCheckAsbitem.AsbitemId).Count() > 0) { continue; } var asbitem = await _asbitemRepository.GetAsync(registerCheckAsbitem.AsbitemId); var newRegisterCheckAsbitem = new RegisterCheckAsbitem() { AsbitemId = registerCheckAsbitem.AsbitemId, Amount = registerCheckAsbitem.Amount, StandardPrice = asbitem.Price, ChargePrice = registerCheckAsbitem.ChargePrice, PayTypeFlag = registerCheckAsbitem.PayTypeFlag, IsCharge = 'N' }; existRegisterAsbitems.Add(newRegisterCheckAsbitem); } createRegisterCheckAsbitemEntity = await _registerAsbitemManager.UpdateManyAsync(entity, existRegisterAsbitems);
if (createRegisterCheckAsbitemEntity != null) { await UpdateRegisterChecks(createRegisterCheckAsbitemEntity); }
await CurrentUnitOfWork.SaveChangesAsync(); return; }
[HttpPost("api/PatientRegister/BatchDeleteAsbitems")] public async Task BatchDeleteAsbitems(PatientRegisterBatchDeleteAsbitemsDto input) {
DataHelper.CheckCharIsYOrN(input.IsDeleteGroup, "如果组合项目属于分组删除分组"); CreateRegisterCheckAsbitemEntity createRegisterCheckAsbitemEntity = null; var entity = await Repository.GetAsync((Guid)input.PatientRegisterId); if (input.RegisterCheckAsbitems.Count == 0) {
return; } //删除组合项目时是否删除分组
bool IsPatientRegisterModified = false; if (input.IsDeleteGroup == 'Y') { if (entity.CustomerOrgGroupId != null && entity.CustomerOrgGroupId != Guid.Empty) { var customerOrgGroupDetails = (await _customerOrgGroupDetailRepository.GetQueryableAsync()).Where(o => o.CustomerOrgGroupId == entity.CustomerOrgGroupId).ToList(); foreach (var registerCheckAsbitem in input.RegisterCheckAsbitems) { if (customerOrgGroupDetails.Where(o => o.AsbitemId == registerCheckAsbitem.AsbitemId).Count() > 0) { entity.CustomerOrgGroupId = null; IsPatientRegisterModified = true; break; } } } else if (entity.MedicalPackageId != null && entity.MedicalPackageId != Guid.Empty) { var medicalPackageDetails = (await _medicalPackageDetailRepository.GetQueryableAsync()).Where(o => o.MedicalPackageId == entity.MedicalPackageId).ToList(); foreach (var registerCheckAsbitem in input.RegisterCheckAsbitems) { if (medicalPackageDetails.Where(o => o.AsbitemId == registerCheckAsbitem.AsbitemId).Count() > 0) { entity.CustomerOrgGroupId = null; IsPatientRegisterModified = true; break; } } } } if (IsPatientRegisterModified) { await _repository.UpdateAsync(entity); } //批量删除项目
var existRegisterChecks = (await _registerCheckRepository.GetQueryableAsync()).Where(o => o.PatientRegisterId == input.PatientRegisterId).AsNoTracking().ToList();
var existRegisterAsbitems = (await _registerCheckAsbitemRepository.GetQueryableAsync()).Where(o => existRegisterChecks.Select(x => x.Id).Contains(o.RegisterCheckId)).AsNoTracking().ToList(); foreach (var registerCheckAsbitem in input.RegisterCheckAsbitems) { var existRegisterAsbitem = existRegisterAsbitems.Where(o => o.AsbitemId == registerCheckAsbitem.AsbitemId).FirstOrDefault(); if (existRegisterAsbitem != null) { existRegisterAsbitems.Remove(existRegisterAsbitem); } }
createRegisterCheckAsbitemEntity = await _registerAsbitemManager.UpdateManyAsync(entity, existRegisterAsbitems);
if (createRegisterCheckAsbitemEntity != null) { await UpdateRegisterChecks(createRegisterCheckAsbitemEntity); }
await CurrentUnitOfWork.SaveChangesAsync(); return; }
///// <summary>
///// 体检记录查询 医生诊台
///// </summary>
///// <param name="input"></param>
///// <returns></returns>
//[HttpPost("api/app/PatientRegister/GetDoctorPeisRecordList")]
//public async Task<PagedResultDto<PatientRegisterOrNoDto>> GetDoctorPeisRecordListAsync(DoctorPeisRecordListInputDto input)
//{
// var query = from a in await _repository.GetQueryableAsync()
// join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb
// from ab in bb.DefaultIfEmpty()
// join c in await _registerCheckRepository.GetQueryableAsync() on a.Id equals c.PatientRegisterId into cc
// from ac in cc.DefaultIfEmpty()
// join d in await _registerCheckAsbitemRepository.GetQueryableAsync() on ac.Id equals d.RegisterCheckId into dd
// from ad in dd.DefaultIfEmpty()
// join e in await _asbitemRepository.GetQueryableAsync() on ad.AsbitemId equals e.Id
// where e.IsCheck == 'Y'
// select new
// {
// a,
// ab,
// AsbitemId = ad != null ? ad.AsbitemId : Guid.Empty,
// RegisterCheckCompleteFlag = ac != null ? ac.CompleteFlag : '9',
// RegisterCheckIsAudit = ac != null ? ac.IsAudit : '9',
// CheckDoctorId = ac.CheckDoctorId,
// CheckDate = ac.CheckDate
// };
// var sumquery = query;
// if (input.CustomerOrgs.Any())
// {
// var item = input.CustomerOrgs[0];
// if (item.CustomerOrgGroupId.Any())
// {
// sumquery = sumquery.Where(m => m.a.CustomerOrgGroupId != null && item.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
// }
// if (item.CustomerOrgRegisterId != null && item.CustomerOrgRegisterId != Guid.Empty)
// {
// sumquery = sumquery.Where(m => m.a.CustomerOrgRegisterId == item.CustomerOrgRegisterId);
// }
// if (item.CustomerOrgId != null)
// {
// var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value);
// sumquery = sumquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
// }
// if (!string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate))
// {
// if (item.DateType == '1')
// {
// sumquery = sumquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item.StartDate) &&
// m.a.CreationTime < Convert.ToDateTime(item.EndDate).AddDays(1));
// }
// else if (item.DateType == '2')
// {
// sumquery = sumquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate >= Convert.ToDateTime(item.StartDate) &&
// m.a.MedicalStartDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
// }
// else if (item.DateType == '3')
// {
// sumquery = sumquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item.StartDate) &&
// m.a.SummaryDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
// }
// else if (item.DateType == '4')
// {
// sumquery = sumquery.Where(m => m.CheckDate != null && m.CheckDate.Value >= Convert.ToDateTime(item.StartDate) &&
// m.CheckDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1));
// }
// }
// if (input.CustomerOrgs.Count > 1)
// {
// foreach (var item2 in input.CustomerOrgs)
// {
// if (input.CustomerOrgs.IndexOf(item2) > 0)
// {
// var newquery = query;
// if (item2.CustomerOrgGroupId.Any())
// {
// newquery = newquery.Where(m => m.a.CustomerOrgGroupId != null && item2.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value));
// }
// if (item2.CustomerOrgRegisterId != null && item2.CustomerOrgRegisterId != Guid.Empty)
// {
// newquery = newquery.Where(m => m.a.CustomerOrgRegisterId == item2.CustomerOrgRegisterId);
// }
// if (item2.CustomerOrgId != null)
// {
// var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value);
// newquery = newquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId));
// }
// if (!string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate))
// {
// if (item2.DateType == '1')
// {
// newquery = newquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item2.StartDate) &&
// m.a.CreationTime < Convert.ToDateTime(item2.EndDate).AddDays(1));
// }
// else if (item2.DateType == '2')
// {
// newquery = newquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate.Value >= Convert.ToDateTime(item2.StartDate) &&
// m.a.MedicalStartDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
// }
// else if (item2.DateType == '3')
// {
// newquery = newquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item2.StartDate) &&
// m.a.SummaryDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
// }
// else if (item2.DateType == '4')
// {
// newquery = newquery.Where(m => m.CheckDate != null && m.CheckDate.Value >= Convert.ToDateTime(item2.StartDate) &&
// m.CheckDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1));
// }
// }
// sumquery = sumquery.Union(newquery);
// }
// }
// }
// }
// if (!string.IsNullOrEmpty(input.PatientName))
// {
// sumquery = sumquery.Where(m => m.a.PatientName != null && m.a.PatientName.Contains(input.PatientName));
// }
// if (input.SexId != null)
// {
// sumquery = sumquery.Where(m => m.a.SexId == input.SexId);
// }
// if (input.CheckDoctorIds.Any())
// {
// sumquery = sumquery.Where(m => input.CheckDoctorIds.Contains(m.CheckDoctorId));
// }
// if (input.CompleteFlag != null)
// {
// sumquery = sumquery.Where(m => m.a.CompleteFlag == input.CompleteFlag);
// }
// else
// {
// //直接过滤
// sumquery = sumquery.Where(m => m.a.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration);
// }
// if (input.IsAudit != null)
// {
// sumquery = sumquery.Where(m => m.a.IsAudit == input.IsAudit);
// }
// if (input.Asbitems.Any())
// {
// sumquery = sumquery.Where(m => input.Asbitems.Contains(m.AsbitemId));
// }
// //if (input.IsPicture == 'Y')
// //{
// // //查询有图数据
// // var query_picture = from a in await _registerCheckAsbitemRepository.GetQueryableAsync()
// // join b in await _registerCheckPictureRepository.GetQueryableAsync() on a.RegisterCheckId equals b.RegisterCheckId
// // select a.PatientRegisterId;
// // sumquery = sumquery.Where(m => query_picture.Contains(m.a.Id));
// //}
// if (input.AsbitemCompleteFlag != null)
// {
// sumquery = sumquery.Where(m => m.RegisterCheckCompleteFlag == input.AsbitemCompleteFlag);
// }
// if (input.AsbitemIsAudit != null)
// {
// sumquery = sumquery.Where(m => m.RegisterCheckIsAudit == input.AsbitemIsAudit);
// }
// if (input.MedicalTypeIds.Any())
// {
// sumquery = sumquery.Where(m => m.a.MedicalTypeId != null && input.MedicalTypeIds.Contains(m.a.MedicalTypeId.Value));
// }
// if (input.PersonnelTypeIds.Any())
// {
// sumquery = sumquery.Where(m => m.a.PersonnelTypeId != null && input.PersonnelTypeIds.Contains(m.a.PersonnelTypeId.Value));
// }
// #region 增加项目类别权限
// List<Guid> asbitemIds = new List<Guid>();
// string AdminId = _configuration.GetValue<string>("AdminId");
// if (_currentUser.Id.Value != Guid.Parse(AdminId))
// {
// asbitemIds = (from userItemType in await _userItemTypeRepository.GetQueryableAsync()
// join asbitem in await _asbitemRepository.GetQueryableAsync() on userItemType.ItemTypeId equals asbitem.ItemTypeId
// where userItemType.UserId == _currentUser.Id.Value
// select asbitem.Id).ToList();
// }
// #endregion
// var sumqueryGroup = sumquery.ToList().GroupBy(g => g.a.Id);
// List<PatientRegisterOrNoDto> entlist = new List<PatientRegisterOrNoDto>();
// foreach (var s in sumqueryGroup.OrderBy(o => o.Key))
// {
// bool IsDisplay = false;
// if (_currentUser.Id.Value == Guid.Parse(AdminId))
// {
// IsDisplay = true;
// }
// else if (s.Where(m => asbitemIds.Contains(m.AsbitemId)).Count() > 0)
// {
// IsDisplay = true;
// }
// if (IsDisplay)
// {
// entlist.Add(new PatientRegisterOrNoDto
// {
// CreationTime = s.FirstOrDefault().a.CreationTime,
// CreatorId = s.FirstOrDefault().a.CreatorId,
// Id = s.FirstOrDefault().a.Id,
// LastModificationTime = s.FirstOrDefault().a.LastModificationTime,
// LastModifierId = s.FirstOrDefault().a.LastModifierId,
// ThirdInfo = s.FirstOrDefault().a.ThirdInfo,
// SummaryDoctorId = s.FirstOrDefault().a.SummaryDoctorId,
// SummaryDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.SummaryDate),
// SexId = s.FirstOrDefault().a.SexId,
// Age = s.FirstOrDefault().a.Age,
// AuditDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.AuditDate),
// AuditDoctorId = s.FirstOrDefault().a.AuditDoctorId,
// BirthDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.BirthDate),
// CompleteFlag = s.FirstOrDefault().a.CompleteFlag,
// CustomerOrgGroupId = s.FirstOrDefault().a.CustomerOrgGroupId,
// CustomerOrgId = s.FirstOrDefault().a.CustomerOrgId,
// CustomerOrgRegisterId = s.FirstOrDefault().a.CustomerOrgRegisterId,
// GuidePrintTimes = s.FirstOrDefault().a.GuidePrintTimes,
// InterposeMeasure = s.FirstOrDefault().a.InterposeMeasure,
// IsAudit = s.FirstOrDefault().a.IsAudit,
// IsLock = s.FirstOrDefault().a.IsLock,
// IsMedicalStart = s.FirstOrDefault().a.IsMedicalStart,
// IsNameHide = s.FirstOrDefault().a.IsNameHide,
// IsPhoneFollow = s.FirstOrDefault().a.IsPhoneFollow,
// IsRecoverGuide = s.FirstOrDefault().a.IsRecoverGuide,
// IsUpload = s.FirstOrDefault().a.IsUpload,
// IsVip = s.FirstOrDefault().a.IsVip,
// JobCardNo = s.FirstOrDefault().a.JobCardNo,
// JobPost = s.FirstOrDefault().a.JobPost,
// JobTitle = s.FirstOrDefault().a.JobTitle,
// MaritalStatusId = s.FirstOrDefault().a.MaritalStatusId,
// MedicalCardNo = s.FirstOrDefault().a.MedicalCardNo,
// MedicalConclusionId = s.FirstOrDefault().a.MedicalConclusionId,
// MedicalPackageId = s.FirstOrDefault().a.MedicalPackageId,
// MedicalStartDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.MedicalStartDate),
// MedicalTimes = s.FirstOrDefault().a.MedicalTimes,
// MedicalTypeId = s.FirstOrDefault().a.MedicalTypeId,
// MedicalCenterId = s.FirstOrDefault().a.MedicalCenterId,
// PatientId = s.FirstOrDefault().a.PatientId,
// PatientName = s.FirstOrDefault().a.PatientName,
// PatientRegisterNo = s.FirstOrDefault().a.PatientRegisterNo,
// PersonnelTypeId = s.FirstOrDefault().a.PersonnelTypeId,
// Photo = s.FirstOrDefault().a.Photo,
// Remark = s.FirstOrDefault().a.Remark,
// ReportPrintTimes = s.FirstOrDefault().a.ReportPrintTimes,
// Salesman = s.FirstOrDefault().a.Salesman,
// SexHormoneTermId = s.FirstOrDefault().a.SexHormoneTermId,
// CreatorName = "",
// LastModifierName = "",
// Address = s.FirstOrDefault().ab.Address, //档案表信息
// BirthPlaceId = s.FirstOrDefault().ab.BirthPlaceId,
// DisplayName = s.FirstOrDefault().ab.DisplayName,
// Email = s.FirstOrDefault().ab.Email,
// IdNo = s.FirstOrDefault().ab.IdNo,
// MobileTelephone = s.FirstOrDefault().ab.MobileTelephone,
// NationId = s.FirstOrDefault().ab.NationId,
// PatientNo = s.FirstOrDefault().ab.PatientNo,
// PatientPassword = s.FirstOrDefault().ab.PatientPassword,
// PostalCode = s.FirstOrDefault().ab.PostalCode,
// Telephone = s.FirstOrDefault().ab.Telephone,
// CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).Result,
// CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(s.FirstOrDefault().a.CustomerOrgId).Result.Id,
// CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).Result,
// MedicalPackageName = s.FirstOrDefault().a.MedicalPackageId == null ? "" : _cacheService.GetMedicalPackageAsync(s.FirstOrDefault().a.MedicalPackageId.Value).GetAwaiter().GetResult().DisplayName,
// CustomerOrgGroupName = s.FirstOrDefault().a.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(s.FirstOrDefault().a.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName,
// PersonnelTypeName = _cacheService.GetPersonnelTypeNameAsync(s.FirstOrDefault().a.PersonnelTypeId).GetAwaiter().GetResult(),
// MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(s.FirstOrDefault().a.MaritalStatusId).GetAwaiter().GetResult(),
// MedicalTypeName = _cacheService.GetMedicalTypeNameAsync(s.FirstOrDefault().a.MedicalTypeId).GetAwaiter().GetResult(),
// SexName = _cacheService.GetSexNameAsync(s.FirstOrDefault().a.SexId).GetAwaiter().GetResult()
// });
// }
// }
// int totalCount = entlist.Count;
// entlist = entlist.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount).ToList();
// return new PagedResultDto<PatientRegisterOrNoDto>(totalCount, entlist);
//}
/// <summary>
/// 体检记录查询 医生诊台
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/PatientRegister/GetDoctorPeisRecordList")] public async Task<GetDoctorPeisRecordListDto> GetDoctorPeisRecordListAsync(DoctorPeisRecordListInputDto input) {
var queryPatientRegisterIds = from patientRegister in await _repository.GetQueryableAsync() join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id where asbitem.IsCheck == 'Y' select new { patientRegister, patient, registerCheckAsbitem = new { registerCheckAsbitem.AsbitemId }, registerCheck = new { registerCheck.CompleteFlag, registerCheck.IsAudit, registerCheck.CheckDoctorId, registerCheck.CheckDate } };
var sumquery = queryPatientRegisterIds;
if (input.CustomerOrgs.Any()) {
var item = input.CustomerOrgs[0];
if (item.CustomerOrgGroupId.Any()) { sumquery = sumquery.Where(m => m.patientRegister.CustomerOrgGroupId != null && item.CustomerOrgGroupId.Contains(m.patientRegister.CustomerOrgGroupId.Value)); } if (item.CustomerOrgRegisterId != null && item.CustomerOrgRegisterId != Guid.Empty) { sumquery = sumquery.Where(m => m.patientRegister.CustomerOrgRegisterId == item.CustomerOrgRegisterId); } if (item.CustomerOrgId != null) { var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value); sumquery = sumquery.Where(m => CustomerOrgIds.Contains(m.patientRegister.CustomerOrgId)); } if (!string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate)) { if (item.DateType == '1') { sumquery = sumquery.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(item.StartDate) && m.patientRegister.CreationTime < Convert.ToDateTime(item.EndDate).AddDays(1)); } else if (item.DateType == '2') { sumquery = sumquery.Where(m => m.patientRegister.MedicalStartDate != null && m.patientRegister.MedicalStartDate >= Convert.ToDateTime(item.StartDate) && m.patientRegister.MedicalStartDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1)); } else if (item.DateType == '3') { sumquery = sumquery.Where(m => m.patientRegister.SummaryDate != null && m.patientRegister.SummaryDate.Value >= Convert.ToDateTime(item.StartDate) && m.patientRegister.SummaryDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1)); } else if (item.DateType == '4') { sumquery = sumquery.Where(m => m.registerCheck.CheckDate != null && m.registerCheck.CheckDate.Value >= Convert.ToDateTime(item.StartDate) && m.registerCheck.CheckDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1)); } }
if (input.CustomerOrgs.Count > 1) { foreach (var item2 in input.CustomerOrgs) {
if (input.CustomerOrgs.IndexOf(item2) > 0) { var newquery = queryPatientRegisterIds; if (item2.CustomerOrgGroupId.Any()) { newquery = newquery.Where(m => m.patientRegister.CustomerOrgGroupId != null && item2.CustomerOrgGroupId.Contains(m.patientRegister.CustomerOrgGroupId.Value)); } if (item2.CustomerOrgRegisterId != null && item2.CustomerOrgRegisterId != Guid.Empty) { newquery = newquery.Where(m => m.patientRegister.CustomerOrgRegisterId == item2.CustomerOrgRegisterId); } if (item2.CustomerOrgId != null) { var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value); newquery = newquery.Where(m => CustomerOrgIds.Contains(m.patientRegister.CustomerOrgId)); } if (!string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate)) { if (item2.DateType == '1') { newquery = newquery.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(item2.StartDate) && m.patientRegister.CreationTime < Convert.ToDateTime(item2.EndDate).AddDays(1)); } else if (item2.DateType == '2') { newquery = newquery.Where(m => m.patientRegister.MedicalStartDate != null && m.patientRegister.MedicalStartDate.Value >= Convert.ToDateTime(item2.StartDate) && m.patientRegister.MedicalStartDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1)); } else if (item2.DateType == '3') { newquery = newquery.Where(m => m.patientRegister.SummaryDate != null && m.patientRegister.SummaryDate.Value >= Convert.ToDateTime(item2.StartDate) && m.patientRegister.SummaryDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1)); } else if (item2.DateType == '4') { newquery = newquery.Where(m => m.registerCheck.CheckDate != null && m.registerCheck.CheckDate.Value >= Convert.ToDateTime(item2.StartDate) && m.registerCheck.CheckDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1)); } } sumquery = sumquery.Union(newquery); } } } }
if (!string.IsNullOrEmpty(input.PatientName)) { sumquery = sumquery.Where(m => m.patientRegister.PatientName != null && m.patientRegister.PatientName.Contains(input.PatientName)); }
if (input.SexId != null) { sumquery = sumquery.Where(m => m.patientRegister.SexId == input.SexId); }
if (input.CheckDoctorIds.Any()) { sumquery = sumquery.Where(m => input.CheckDoctorIds.Contains(m.registerCheck.CheckDoctorId)); }
if (input.CompleteFlag != null) { sumquery = sumquery.Where(m => m.patientRegister.CompleteFlag == input.CompleteFlag); } else { //直接过滤
sumquery = sumquery.Where(m => m.patientRegister.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration); }
if (input.IsAudit != null) { sumquery = sumquery.Where(m => m.patientRegister.IsAudit == input.IsAudit); }
if (input.Asbitems.Any()) { sumquery = sumquery.Where(m => input.Asbitems.Contains(m.registerCheckAsbitem.AsbitemId)); }
if (input.AsbitemCompleteFlag != null) { sumquery = sumquery.Where(m => m.registerCheck.CompleteFlag == input.AsbitemCompleteFlag); }
if (input.AsbitemIsAudit != null) { sumquery = sumquery.Where(m => m.registerCheck.IsAudit == input.AsbitemIsAudit); }
if (input.MedicalTypeIds.Any()) { sumquery = sumquery.Where(m => m.patientRegister.MedicalTypeId != null && input.MedicalTypeIds.Contains(m.patientRegister.MedicalTypeId.Value)); }
if (input.PersonnelTypeIds.Any()) { sumquery = sumquery.Where(m => m.patientRegister.PersonnelTypeId != null && input.PersonnelTypeIds.Contains(m.patientRegister.PersonnelTypeId.Value)); }
#region 增加项目类别权限
List<Guid> asbitemIds = new List<Guid>();
string AdminId = _configuration.GetValue<string>("AdminId"); if (_currentUser.Id.Value != Guid.Parse(AdminId)) { asbitemIds = (from userItemType in await _userItemTypeRepository.GetQueryableAsync() join asbitem in await _asbitemRepository.GetQueryableAsync() on userItemType.ItemTypeId equals asbitem.ItemTypeId where userItemType.UserId == _currentUser.Id.Value select asbitem.Id).ToList();
sumquery = sumquery.Where(m => asbitemIds.Contains(m.registerCheckAsbitem.AsbitemId)); }
#endregion
List<GetDoctorPeisRecordListCheckStatistics> checkStatisticsList = new List<GetDoctorPeisRecordListCheckStatistics>();
if (input.Asbitems.Any()) { //统计项目人数
var checkedPatientRegisterList = sumquery.Where(m => m.registerCheck.CompleteFlag == RegisterCheckCompleteFlag.Checked) .Select(s => new { s.patientRegister.Id, s.patientRegister.SexId }).Distinct().ToList();
var unCheckedPatientRegisterList = sumquery.Where(m => m.registerCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked) .Select(s => new { s.patientRegister.Id, s.patientRegister.SexId }).Distinct().ToList();
var giveUpCheckedPatientRegisterList = sumquery.Where(m => m.registerCheck.CompleteFlag == RegisterCheckCompleteFlag.GiveUpChecked) .Select(s => new { s.patientRegister.Id, s.patientRegister.SexId }).Distinct().ToList();
checkStatisticsList.Add(new GetDoctorPeisRecordListCheckStatistics { CheckStatus = "已检", MaleCount = checkedPatientRegisterList.Count(c => c.SexId == SexFlag.Male), FemaleCount = checkedPatientRegisterList.Count(c => c.SexId == SexFlag.Female), UnknownCount = checkedPatientRegisterList.Count(c => c.SexId == SexFlag.UnKnown) }); checkStatisticsList.Add(new GetDoctorPeisRecordListCheckStatistics { CheckStatus = "未检", MaleCount = unCheckedPatientRegisterList.Count(c => c.SexId == SexFlag.Male), FemaleCount = unCheckedPatientRegisterList.Count(c => c.SexId == SexFlag.Female), UnknownCount = unCheckedPatientRegisterList.Count(c => c.SexId == SexFlag.UnKnown) }); checkStatisticsList.Add(new GetDoctorPeisRecordListCheckStatistics { CheckStatus = "弃检", MaleCount = giveUpCheckedPatientRegisterList.Count(c => c.SexId == SexFlag.Male), FemaleCount = giveUpCheckedPatientRegisterList.Count(c => c.SexId == SexFlag.Female), UnknownCount = giveUpCheckedPatientRegisterList.Count(c => c.SexId == SexFlag.UnKnown) }); }
var patientRegisterIds = sumquery.Select(s => new { patientRegisterId = s.patientRegister.Id, medicalStartDate = s.patientRegister.MedicalStartDate }).Distinct();
int totalCount = patientRegisterIds.Count();
var pagedIds = patientRegisterIds.OrderBy(o => o.medicalStartDate).Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount) .Select(s => s.patientRegisterId).ToList();
var queryList = (from patientRegister in await _repository.GetQueryableAsync() join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id where pagedIds.Contains(patientRegister.Id) select new { patientRegister, patient }).ToList();
List<PatientRegisterOrNoDto> entlist = new List<PatientRegisterOrNoDto>();
foreach (var item in queryList) { var patientRegisterFirst = item.patientRegister; var patientFirst = item.patient;
entlist.Add(new PatientRegisterOrNoDto { CreationTime = patientRegisterFirst.CreationTime, CreatorId = patientRegisterFirst.CreatorId, Id = patientRegisterFirst.Id, LastModificationTime = patientRegisterFirst.LastModificationTime, LastModifierId = patientRegisterFirst.LastModifierId, ThirdInfo = patientRegisterFirst.ThirdInfo, SummaryDoctorId = patientRegisterFirst.SummaryDoctorId, SummaryDate = DataHelper.ConversionDateToString(patientRegisterFirst.SummaryDate), SexId = patientRegisterFirst.SexId, Age = patientRegisterFirst.Age, AuditDate = DataHelper.ConversionDateToString(patientRegisterFirst.AuditDate), AuditDoctorId = patientRegisterFirst.AuditDoctorId, BirthDate = DataHelper.ConversionDateToString(patientRegisterFirst.BirthDate), CompleteFlag = patientRegisterFirst.CompleteFlag, CustomerOrgGroupId = patientRegisterFirst.CustomerOrgGroupId, CustomerOrgId = patientRegisterFirst.CustomerOrgId, CustomerOrgRegisterId = patientRegisterFirst.CustomerOrgRegisterId, GuidePrintTimes = patientRegisterFirst.GuidePrintTimes, InterposeMeasure = patientRegisterFirst.InterposeMeasure, IsAudit = patientRegisterFirst.IsAudit, IsLock = patientRegisterFirst.IsLock, IsMedicalStart = patientRegisterFirst.IsMedicalStart, IsNameHide = patientRegisterFirst.IsNameHide, IsPhoneFollow = patientRegisterFirst.IsPhoneFollow, IsRecoverGuide = patientRegisterFirst.IsRecoverGuide, IsUpload = patientRegisterFirst.IsUpload, IsVip = patientRegisterFirst.IsVip, JobCardNo = patientRegisterFirst.JobCardNo, JobPost = patientRegisterFirst.JobPost, JobTitle = patientRegisterFirst.JobTitle, MaritalStatusId = patientRegisterFirst.MaritalStatusId, MedicalCardNo = patientRegisterFirst.MedicalCardNo, MedicalConclusionId = patientRegisterFirst.MedicalConclusionId, MedicalPackageId = patientRegisterFirst.MedicalPackageId, MedicalStartDate = DataHelper.ConversionDateToString(patientRegisterFirst.MedicalStartDate), MedicalTimes = patientRegisterFirst.MedicalTimes, MedicalTypeId = patientRegisterFirst.MedicalTypeId, MedicalCenterId = patientRegisterFirst.MedicalCenterId, PatientId = patientRegisterFirst.PatientId, PatientName = patientRegisterFirst.PatientName, PatientRegisterNo = patientRegisterFirst.PatientRegisterNo, PersonnelTypeId = patientRegisterFirst.PersonnelTypeId, Photo = patientRegisterFirst.Photo, Remark = patientRegisterFirst.Remark, ReportPrintTimes = patientRegisterFirst.ReportPrintTimes, Salesman = patientRegisterFirst.Salesman, SexHormoneTermId = patientRegisterFirst.SexHormoneTermId, CreatorName = _cacheService.GetSurnameAsync(patientRegisterFirst.CreatorId).GetAwaiter().GetResult(), LastModifierName = _cacheService.GetSurnameAsync(patientRegisterFirst.LastModifierId).GetAwaiter().GetResult(), Address = patientFirst.Address, //档案表信息
BirthPlaceId = patientFirst.BirthPlaceId, DisplayName = patientFirst.DisplayName, Email = patientFirst.Email, IdNo = patientFirst.IdNo, MobileTelephone = patientFirst.MobileTelephone, NationId = patientFirst.NationId, PatientNo = patientFirst.PatientNo, PatientPassword = patientFirst.PatientPassword, PostalCode = patientFirst.PostalCode, Telephone = patientFirst.Telephone, CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(patientRegisterFirst.CustomerOrgId).Result, CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(patientRegisterFirst.CustomerOrgId).Result.Id, CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(patientRegisterFirst.CustomerOrgId).Result, MedicalPackageName = patientRegisterFirst.MedicalPackageId == null ? "" : _cacheService.GetMedicalPackageAsync(patientRegisterFirst.MedicalPackageId.Value).GetAwaiter().GetResult().DisplayName, CustomerOrgGroupName = patientRegisterFirst.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(patientRegisterFirst.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName, PersonnelTypeName = _cacheService.GetPersonnelTypeNameAsync(patientRegisterFirst.PersonnelTypeId).GetAwaiter().GetResult(), MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(patientRegisterFirst.MaritalStatusId).GetAwaiter().GetResult(), MedicalTypeName = _cacheService.GetMedicalTypeNameAsync(patientRegisterFirst.MedicalTypeId).GetAwaiter().GetResult(), SexName = _cacheService.GetSexNameAsync(patientRegisterFirst.SexId).GetAwaiter().GetResult(), SummaryDoctorName = _cacheService.GetSurnameAsync(patientRegisterFirst.SummaryDoctorId).GetAwaiter().GetResult(), AuditDoctorName = _cacheService.GetSurnameAsync(patientRegisterFirst.AuditDoctorId).GetAwaiter().GetResult() }); }
var pageDto = new PagedResultDto<PatientRegisterOrNoDto>(totalCount, entlist); var entDto = new GetDoctorPeisRecordListDto(); entDto.TotalCount = pageDto.TotalCount; entDto.Items = pageDto.Items; entDto.CheckStatistics = checkStatisticsList;
return entDto; }
/// <summary>
/// 体检记录查询 总症医生诊台
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/PatientRegister/GetSumDoctorPeisRecordList")] public async Task<PagedResultDto<PatientRegisterOrNoDto>> GetSumDoctorPeisRecordListAsync(SumDoctorPeisRecordListInputtDto input) { var query = from a in await _repository.GetQueryableAsync() join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb from ab in bb.DefaultIfEmpty() join c in await _registerCheckRepository.GetQueryableAsync() on a.Id equals c.PatientRegisterId into cc from ac in cc.DefaultIfEmpty() join d in await _registerCheckAsbitemRepository.GetQueryableAsync() on ac.Id equals d.RegisterCheckId into dd from ad in dd.DefaultIfEmpty() join e in await _asbitemRepository.GetQueryableAsync() on ad.AsbitemId equals e.Id where e.IsCheck == 'Y' select new { a, ab, AsbitemId = ad != null ? ad.AsbitemId : Guid.Empty, RegisterCheckCompleteFlag = ac != null ? ac.CompleteFlag : '9', RegisterCheckIsAudit = ac != null ? ac.IsAudit : '9', CheckDoctorId = ac.CheckDoctorId };
var sumquery = query;
if (input.CustomerOrgs.Any()) {
var item = input.CustomerOrgs[0];
if (item.CustomerOrgGroupId.Any()) { sumquery = sumquery.Where(m => m.a.CustomerOrgGroupId != null && item.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value)); } if (item.CustomerOrgRegisterId != null && item.CustomerOrgRegisterId != Guid.Empty) { sumquery = sumquery.Where(m => m.a.CustomerOrgRegisterId == item.CustomerOrgRegisterId); } if (item.CustomerOrgId != null) { var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value); sumquery = sumquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId)); } if (!string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate)) { if (item.DateType == '1') { sumquery = sumquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item.StartDate) && m.a.CreationTime < Convert.ToDateTime(item.EndDate).AddDays(1)); } else if (item.DateType == '2') { sumquery = sumquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate >= Convert.ToDateTime(item.StartDate) && m.a.MedicalStartDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1)); } else if (item.DateType == '3') { sumquery = sumquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item.StartDate) && m.a.SummaryDate.Value < Convert.ToDateTime(item.EndDate).AddDays(1)); } }
if (input.CustomerOrgs.Count > 1) { foreach (var item2 in input.CustomerOrgs) {
if (input.CustomerOrgs.IndexOf(item2) > 0) { var newquery = query; if (item2.CustomerOrgGroupId.Any()) { newquery = newquery.Where(m => m.a.CustomerOrgGroupId != null && item2.CustomerOrgGroupId.Contains(m.a.CustomerOrgGroupId.Value)); } if (item2.CustomerOrgRegisterId != null && item2.CustomerOrgRegisterId != Guid.Empty) { newquery = newquery.Where(m => m.a.CustomerOrgRegisterId == item2.CustomerOrgRegisterId); } if (item2.CustomerOrgId != null) { var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value); newquery = newquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId)); } if (!string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate)) { if (item2.DateType == '1') { newquery = newquery.Where(m => m.a.CreationTime >= Convert.ToDateTime(item2.StartDate) && m.a.CreationTime < Convert.ToDateTime(item2.EndDate).AddDays(1)); } else if (item2.DateType == '2') { newquery = newquery.Where(m => m.a.MedicalStartDate != null && m.a.MedicalStartDate.Value >= Convert.ToDateTime(item2.StartDate) && m.a.MedicalStartDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1)); } else if (item2.DateType == '3') { newquery = newquery.Where(m => m.a.SummaryDate != null && m.a.SummaryDate.Value >= Convert.ToDateTime(item2.StartDate) && m.a.SummaryDate.Value < Convert.ToDateTime(item2.EndDate).AddDays(1)); } } sumquery = sumquery.Union(newquery); } } } }
if (!string.IsNullOrEmpty(input.PatientName)) { sumquery = sumquery.Where(m => m.a.PatientName != null && m.a.PatientName.Contains(input.PatientName)); }
if (input.SexId != null) { sumquery = sumquery.Where(m => m.a.SexId == input.SexId); }
if (input.CheckDoctorIds.Any()) { sumquery = sumquery.Where(m => input.CheckDoctorIds.Contains(m.CheckDoctorId)); }
if (input.CompleteFlag != null && input.CompleteFlag != PatientRegisterCompleteFlag.ItemCheckUnSumCheck) { sumquery = sumquery.Where(m => m.a.CompleteFlag == input.CompleteFlag); } else { //直接过滤
sumquery = sumquery.Where(m => m.a.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration); }
if (input.IsAudit != null) { sumquery = sumquery.Where(m => m.a.IsAudit == input.IsAudit); }
if (input.Asbitems.Any()) {
sumquery = sumquery.Where(m => input.Asbitems.Contains(m.AsbitemId)); }
if (input.AsbitemCompleteFlag != null) { sumquery = sumquery.Where(m => m.RegisterCheckCompleteFlag == input.AsbitemCompleteFlag); }
if (input.AsbitemIsAudit != null) { sumquery = sumquery.Where(m => m.RegisterCheckIsAudit == input.AsbitemIsAudit); }
if (input.MedicalTypeIds.Any()) { sumquery = sumquery.Where(m => m.a.MedicalTypeId != null && input.MedicalTypeIds.Contains(m.a.MedicalTypeId.Value)); }
if (input.PersonnelTypeIds.Any()) { sumquery = sumquery.Where(m => m.a.PersonnelTypeId != null && input.PersonnelTypeIds.Contains(m.a.PersonnelTypeId.Value)); }
if (input.SummaryDoctorIds.Any()) { sumquery = sumquery.Where(m => m.a.SummaryDoctorId != null && input.SummaryDoctorIds.Contains(m.a.SummaryDoctorId.Value)); }
if (input.AuditDoctorIds.Any()) { sumquery = sumquery.Where(m => m.a.AuditDoctorId != null && input.AuditDoctorIds.Contains(m.a.AuditDoctorId.Value)); }
var sumqueryGroup = sumquery.ToList().GroupBy(g => g.a.Id);
List<PatientRegisterOrNoDto> entlist = new List<PatientRegisterOrNoDto>();
foreach (var s in sumqueryGroup.OrderBy(o => o.Key)) { bool IsDisplay = false;
if (input.CompleteFlag == PatientRegisterCompleteFlag.ItemCheckUnSumCheck) { if (s.Where(m => m.RegisterCheckCompleteFlag != RegisterCheckCompleteFlag.Checked && m.RegisterCheckCompleteFlag != RegisterCheckCompleteFlag.GiveUpChecked).Count() == 0 && s.FirstOrDefault().a.CompleteFlag != PatientRegisterCompleteFlag.SumCheck) { IsDisplay = true; } else { IsDisplay = false; } } else { IsDisplay = true; }
if (IsDisplay) { entlist.Add(new PatientRegisterOrNoDto { CreationTime = s.FirstOrDefault().a.CreationTime, CreatorId = s.FirstOrDefault().a.CreatorId, Id = s.FirstOrDefault().a.Id, LastModificationTime = s.FirstOrDefault().a.LastModificationTime, LastModifierId = s.FirstOrDefault().a.LastModifierId, ThirdInfo = s.FirstOrDefault().a.ThirdInfo, SummaryDoctorId = s.FirstOrDefault().a.SummaryDoctorId, SummaryDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.SummaryDate), SexId = s.FirstOrDefault().a.SexId, Age = s.FirstOrDefault().a.Age, AuditDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.AuditDate), AuditDoctorId = s.FirstOrDefault().a.AuditDoctorId, BirthDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.BirthDate), CompleteFlag = s.FirstOrDefault().a.CompleteFlag, CustomerOrgGroupId = s.FirstOrDefault().a.CustomerOrgGroupId, CustomerOrgId = s.FirstOrDefault().a.CustomerOrgId, CustomerOrgRegisterId = s.FirstOrDefault().a.CustomerOrgRegisterId, GuidePrintTimes = s.FirstOrDefault().a.GuidePrintTimes, InterposeMeasure = s.FirstOrDefault().a.InterposeMeasure, IsAudit = s.FirstOrDefault().a.IsAudit, IsLock = s.FirstOrDefault().a.IsLock, IsMedicalStart = s.FirstOrDefault().a.IsMedicalStart, IsNameHide = s.FirstOrDefault().a.IsNameHide, IsPhoneFollow = s.FirstOrDefault().a.IsPhoneFollow, IsRecoverGuide = s.FirstOrDefault().a.IsRecoverGuide, IsUpload = s.FirstOrDefault().a.IsUpload, IsVip = s.FirstOrDefault().a.IsVip, JobCardNo = s.FirstOrDefault().a.JobCardNo, JobPost = s.FirstOrDefault().a.JobPost, JobTitle = s.FirstOrDefault().a.JobTitle, MaritalStatusId = s.FirstOrDefault().a.MaritalStatusId, MedicalCardNo = s.FirstOrDefault().a.MedicalCardNo, MedicalConclusionId = s.FirstOrDefault().a.MedicalConclusionId, MedicalPackageId = s.FirstOrDefault().a.MedicalPackageId, MedicalStartDate = DataHelper.ConversionDateToString(s.FirstOrDefault().a.MedicalStartDate), MedicalTimes = s.FirstOrDefault().a.MedicalTimes, MedicalTypeId = s.FirstOrDefault().a.MedicalTypeId, MedicalCenterId = s.FirstOrDefault().a.MedicalCenterId, PatientId = s.FirstOrDefault().a.PatientId, PatientName = s.FirstOrDefault().a.PatientName, PatientRegisterNo = s.FirstOrDefault().a.PatientRegisterNo, PersonnelTypeId = s.FirstOrDefault().a.PersonnelTypeId, Photo = s.FirstOrDefault().a.Photo, Remark = s.FirstOrDefault().a.Remark, ReportPrintTimes = s.FirstOrDefault().a.ReportPrintTimes, Salesman = s.FirstOrDefault().a.Salesman, SexHormoneTermId = s.FirstOrDefault().a.SexHormoneTermId, CreatorName = _cacheService.GetSurnameAsync(s.FirstOrDefault().a.CreatorId).GetAwaiter().GetResult(), LastModifierName = _cacheService.GetSurnameAsync(s.FirstOrDefault().a.LastModifierId).GetAwaiter().GetResult(), Address = s.FirstOrDefault().ab.Address, //档案表信息
BirthPlaceId = s.FirstOrDefault().ab.BirthPlaceId, DisplayName = s.FirstOrDefault().ab.DisplayName, Email = s.FirstOrDefault().ab.Email, IdNo = s.FirstOrDefault().ab.IdNo, MobileTelephone = s.FirstOrDefault().ab.MobileTelephone, NationId = s.FirstOrDefault().ab.NationId, PatientNo = s.FirstOrDefault().ab.PatientNo, PatientPassword = s.FirstOrDefault().ab.PatientPassword, PostalCode = s.FirstOrDefault().ab.PostalCode, Telephone = s.FirstOrDefault().ab.Telephone, CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).Result, CustomerOrgParentId = _cacheService.GetTopCustomerOrgAsync(s.FirstOrDefault().a.CustomerOrgId).Result.Id, CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).Result, MedicalPackageName = s.FirstOrDefault().a.MedicalPackageId == null ? "" : _cacheService.GetMedicalPackageAsync(s.FirstOrDefault().a.MedicalPackageId.Value).GetAwaiter().GetResult().DisplayName, CustomerOrgGroupName = s.FirstOrDefault().a.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(s.FirstOrDefault().a.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName, AuditDoctorName = _cacheService.GetSurnameAsync(s.FirstOrDefault().a.AuditDoctorId).GetAwaiter().GetResult(), SummaryDoctorName = _cacheService.GetSurnameAsync(s.FirstOrDefault().a.SummaryDoctorId).GetAwaiter().GetResult(), PersonnelTypeName = _cacheService.GetPersonnelTypeNameAsync(s.FirstOrDefault().a.PersonnelTypeId).GetAwaiter().GetResult(), MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(s.FirstOrDefault().a.MaritalStatusId).GetAwaiter().GetResult(), MedicalTypeName = _cacheService.GetMedicalTypeNameAsync(s.FirstOrDefault().a.MedicalTypeId).GetAwaiter().GetResult(), SexName = _cacheService.GetSexNameAsync(s.FirstOrDefault().a.SexId).GetAwaiter().GetResult() }); }
}
int totalCount = entlist.Count;
entlist = entlist.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount).ToList();
return new PagedResultDto<PatientRegisterOrNoDto>(totalCount, entlist);
}
/// <summary>
/// 更新
/// </summary>
/// <param name="PatientRegisterId">登记表ID</param>
/// <param name="input">更新参数(包含档案跟登记)</param>
/// <returns></returns>
[HttpPost("api/patientregister/UpdatePatientRegisterAndAsbitems")] public async Task<PatientRegisterDto> UpdatePatientRegisterAndAsbitemsAsync(Guid PatientRegisterId, UpdatePatientRegisterDto input) { var patientRegisterEnt = await Repository.GetAsync(PatientRegisterId); var patientEnt = await _patientRepository.GetAsync(patientRegisterEnt.PatientId);
var patientRegisterSourceEntity = ObjectMapper.Map<UpdatePatientRegisterDto, UpdatePatientRegisterArg>(input); var patientSourceEntity = ObjectMapper.Map<UpdatePatientRegisterDto, Patient>(input);
patientSourceEntity.DisplayName = input.PatientName; await _patientManager.UpdateAsync(patientSourceEntity, patientEnt); await _manager.UpdateAsync(patientRegisterSourceEntity, patientRegisterEnt);
await _patientRepository.UpdateAsync(patientEnt); patientRegisterEnt = await Repository.UpdateAsync(patientRegisterEnt);
return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(patientRegisterEnt); }
/// <summary>
/// 修改人员照片
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost] public async Task<PatientRegisterDto> UpdatePhotoAsync(UpdatePhotoDto input) { var ent = await _repository.GetAsync(input.PatientRegisterId); if (ent != null) { ent.Photo = input.Photo; var newent = await _repository.UpdateAsync(ent); return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newent); } else { return new PatientRegisterDto(); } }
///// <summary>
///// 修改人员照片 二进制
///// </summary>
///// <param name="input"></param>
///// <returns></returns>
//[HttpPost]
//public async Task<PatientRegisterDto> UpdatePhoto2Async(UpdatePhoto2Dto input)
//{
// var ent = await _repository.GetAsync(input.PatientRegisterId);
// if (ent != null)
// {
// ent.Photo = input.Photo;
// var newent = await _repository.UpdateAsync(ent);
// return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newent);
// }
// else
// {
// return new PatientRegisterDto();
// }
//}
//
/// <summary>
/// 上传图片 手动拼接"http://81.70.217.145/"
/// </summary>
/// <returns></returns>
public string UpLoadImg(UpdatePhotoDto input) { //_logger.LogInformation(input.Photo);
string imgurl = $"photo/{DateTime.Now.Year}/{DateTime.Now.Month}/{DateTime.Now.Day}/{input.PatientRegisterId}"; var isupload = ImageHelper.Base64StrToImage(input.Photo, imgurl); if (!string.IsNullOrEmpty(isupload)) return isupload; else return ""; }
/// <summary>
/// 删除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost("api/app/PatientRegister/DeleteById")] public async Task DeleteByIdAsync(PatientRegisterIdInputDto input) { if (input == null) { throw new UserFriendlyException("input参数不能为空"); } await _manager.CheckAndDeleteAsync(input.PatientRegisterId); }
/// <summary>
/// 批量删除
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost] public async Task DeleteManyAsync(DeletePatientRegisterManyDto input) { if (input.PatientRegisterIds.Count > 0) { var entlist = await _repository.GetListAsync(m => input.PatientRegisterIds.Contains(m.Id));
if (entlist.Count > 0) { foreach (var ent in entlist) { await _manager.CheckAndDeleteAsync(ent.Id); } }
} else { throw new UserFriendlyException($"无可删除数据"); } }
/// <summary>
/// 人员签到 批量
/// </summary>
/// <param name="PatientRegisterIds">登记表ID集合</param>
/// <returns></returns>
[HttpPost("api/app/patientregister/updatesigninmany")] public async Task<List<PatientRegisterDto>> UpdateSignInManyAsync(List<Guid> PatientRegisterIds) { List<PatientRegisterDto> msg = new List<PatientRegisterDto>();
if (!PatientRegisterIds.Any()) throw new UserFriendlyException($"请求参数有误");
foreach (var PatientRegisterId in PatientRegisterIds) { var entity = await Repository.FindAsync(f => f.Id == PatientRegisterId && f.IsMedicalStart != 'Y'); if (entity != null) { entity.IsMedicalStart = 'Y'; entity.MedicalStartDate = DateTime.Now;
var newentity = await Repository.UpdateAsync(entity);
msg.Add(ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newentity)); } }
return msg;
}
/// <summary>
/// 批量回收表格,暂时不加是否签到跟是否做完体检的判断
/// </summary>
/// <param name="PatientRegisterIds"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/updaterecoverguidemany")] public async Task<List<PatientRegisterDto>> UpdateRecoverGuideManyAsync(List<Guid> PatientRegisterIds) { List<PatientRegisterDto> msg = new List<PatientRegisterDto>(); if (!PatientRegisterIds.Any()) throw new UserFriendlyException($"请求参数有误");
foreach (var PatientRegisterId in PatientRegisterIds) { var newentity = await _manager.UpdateRecoverGuideAsync(PatientRegisterId); msg.Add(ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newentity)); }
return msg; }
/// <summary>
/// 批量回收指引单 多功能
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/PatientRegister/BatchRecoverGuide")] public async Task BatchRecoverGuideAsync(BatchRecoverGuideInputDto input) {
if (!input.Barcodes.Any()) throw new UserFriendlyException("条码号不能为空");
foreach (var barcode in input.Barcodes) { PatientRegister patientRegisterEntity; if (input.RecoverType == '0') { patientRegisterEntity = await _repository.FirstOrDefaultAsync(f => f.PatientRegisterNo == barcode); } else { patientRegisterEntity = (from patientRegister in await _repository.GetQueryableAsync() join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id where patient.PatientNo == barcode orderby patientRegister.MedicalStartDate descending select patientRegister).FirstOrDefault(); } if (patientRegisterEntity != null) { patientRegisterEntity.IsRecoverGuide = input.IsRecoverGuide; await _repository.UpdateAsync(patientRegisterEntity); }
} }
/// <summary>
/// 批量回收指引单 根据条码号
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/PatientRegister/BatchRecoverGuideByPatientRegisterNo")] public async Task BatchRecoverGuideByPatientRegisterNoAsync(BatchRecoverGuideByPatientRegisterNoInputDto input) {
if (!input.PatientRegisterNos.Any()) throw new UserFriendlyException("条码号不能为空");
foreach (var patientRegisterNo in input.PatientRegisterNos) { var patientRegister = await _repository.FirstOrDefaultAsync(f => f.PatientRegisterNo == patientRegisterNo); await _patientRegisterManager.BatchRecoverGuideByPatientRegisterNoAsync(patientRegister); } }
///// <summary>
///// 人员签到
///// </summary>
///// <param name="PatientRegisterId">登记表ID</param>
///// <returns></returns>
//public async Task<PatientRegisterDto> UpdateSignIn(Guid PatientRegisterId)
//{
// var entity = await Repository.GetAsync(PatientRegisterId);
// if (entity == null)
// {
// throw new UserFriendlyException($"最后一次体检还未结束,不能新开,请结束最后一次体检");
// }
// else
// {
// entity.IsMedicalStart = 'N';
// entity.MedicalStartDate = DateOnly.FromDateTime(DateTime.Now);
// var newentity = await Repository.UpdateAsync(entity);
// return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newentity);
// }
//}
///// <summary>
///// 回收表格,暂时不加是否签到跟是否做完体检的判断
///// </summary>
///// <param name="PatientRegisterId"></param>
///// <returns></returns>
//public async Task<PatientRegisterDto> UpdateRecoverGuideAsync(Guid PatientRegisterId)
//{
// var entity = await _manager.UpdateRecoverGuideAsync(PatientRegisterId);
// return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(entity);
//}
/// <summary>
/// 修改人员锁定状态
/// </summary>
/// <param name="PatientRegisterId">人员登记ID</param>
/// <param name="IsLock">是否锁住(Y N)</param>
/// <returns></returns>
public async Task<PatientRegisterDto> UpdatePatientRegisterIsLockAsync(Guid PatientRegisterId, char IsLock) { PatientRegisterDto msg = new PatientRegisterDto();
var ent = await _repository.GetAsync(PatientRegisterId); if (ent != null) { ent.IsLock = IsLock;
var newent = await _repository.UpdateAsync(ent); msg = ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newent); } return msg; }
/// <summary>
/// 更改总检审核医生信息(保存时,医生跟日期不传时取默认登录的用户跟当前时间;取消时,如果不传就不更新医生跟日期,只更新状态)
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/updatepatientregisterauditordoctor")] public async Task<PatientRegisterDto> UpdatePatientRegisterAuditorDoctorAsync(UpdatePatientRegisterAuditorDoctorDto input) {
if (input == null || input.PatientRegisterId == Guid.Empty) { throw new UserFriendlyException("请求参数有误"); }
var entity = await _repository.GetAsync(input.PatientRegisterId); var entitydto = ObjectMapper.Map<UpdatePatientRegisterAuditorDoctorDto, PatientRegister>(input); var newentity = await _manager.UpdatePatientRegisterAuditorDoctorAsync(entitydto, entity); #region 推送人寿体检完成状态
if (!string.IsNullOrWhiteSpace(entity.ThirdBookingId) && input.IsAudit == 'Y') { try { await _thirdBookingPushAppService.PushCompletePhysicalAsync(new PatientRegisterIdInputDto { PatientRegisterId = entity.Id }); } catch (Exception ex) { _logger.LogError($"推送人寿完成体检=》{ex.Message}"); }
}
#endregion
return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newentity); }
/// <summary>
/// 取消总检
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/CancelSumCheck")] public async Task<PatientRegisterDto> CancelSumCheckAsync(PatientRegisterIdInputDto input) {
if (input == null || input.PatientRegisterId == Guid.Empty) { throw new UserFriendlyException("请求参数有误"); }
var entity = await _repository.GetAsync(input.PatientRegisterId); if (entity.CompleteFlag != PatientRegisterCompleteFlag.SumCheck) { throw new UserFriendlyException("没有总检,无需取消总检"); } if (entity.IsAudit == 'Y') { throw new UserFriendlyException("已审核,请先取消审核"); } var isSummaryCheckOnlySelfCanCancel = await _sysParmValueManager.GetSysParmValueAsync(entity.MedicalCenterId, "summary_check_only_self_can_cancel"); if (isSummaryCheckOnlySelfCanCancel == "Y") { if (entity.SummaryDoctorId != CurrentUser.Id) { throw new UserFriendlyException("只有本人才能取消总检"); } }
#region 如果所有检查都没有做 改为正式登记
var checkedCount = await _registerCheckRepository.CountAsync(c => c.PatientRegisterId == input.PatientRegisterId && c.CompleteFlag == RegisterCheckCompleteFlag.Checked); if (checkedCount == 0) { entity.CompleteFlag = PatientRegisterCompleteFlag.Registration; } else { entity.CompleteFlag = PatientRegisterCompleteFlag.PartCheck; }
#endregion
var cancelClearManAndDate = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "cancel_clear_manAndDate"); if (string.IsNullOrWhiteSpace(cancelClearManAndDate)) { cancelClearManAndDate = "N"; }
if (cancelClearManAndDate == "Y") { entity.SummaryDate = null; }
var newentity = await _repository.UpdateAsync(entity); return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newentity); } /// <summary>
/// 更新病人总检综述建议 总检医生诊台保存
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/patientregister/UpdatePatientRegisterSummarySuggestion")] public async Task<PatientRegisterDto> UpdatePatientRegisterSummarySuggestionAsync(UpdatePatientRegisterSummarySuggestionDto input) { if (input == null || input.PatientRegisterId == Guid.Empty) { throw new UserFriendlyException("请求参数有误"); }
if (!input.SumSuggestions.Any()) throw new UserFriendlyException("请完善总检建议"); //更新总检
var entity = await _repository.GetAsync(input.PatientRegisterId); var entitydto = ObjectMapper.Map<UpdatePatientRegisterSummarySuggestionDto, PatientRegister>(input); var newentity = await _manager.UpdatePatientRegisterSummaryDoctorAsync(entitydto, entity); //删除综述题头时通过级联关系删除相应的综述内容
await _sumSummaryHeaderRepository.DeleteAsync(m => m.PatientRegisterId == input.PatientRegisterId, true); //先删除建议内容
await _sumSuggestionHeaderRepository.DeleteAsync(m => m.PatientRegisterId == input.PatientRegisterId, true); //删除对应的诊断数据
await _sumDiagnosisRepository.DeleteAsync(m => m.PatientRegisterId == input.PatientRegisterId, true); //更新综述
if (input.SumSummarys != null && input.SumSummarys.Any()) { foreach (var item in input.SumSummarys) { #region 插入SumSummaryHeader
SumSummaryHeader sumSummaryHeaderEnt = _sumSummaryHeaderManager.CreateAsync(patientRegisterId: input.PatientRegisterId, summaryTitle: item.SummaryTitle, summaryFlag: null, displayOrder: input.SumSummarys.IndexOf(item) + 1);
var sumSummaryHeaderEnt_New = await _sumSummaryHeaderRepository.InsertAsync(sumSummaryHeaderEnt, true);
if (sumSummaryHeaderEnt_New != null) { #region 插入SumSummaryContent
List<SumSummaryContent> sumSummaryContentList = new List<SumSummaryContent>(); foreach (var item2 in item.Details) { SumSummaryContent sumSummaryContentEnt = _sumSummaryContentManager.CreateAsync(sumSummaryHeaderId: sumSummaryHeaderEnt_New.Id, summaryContent: item2.SummaryContent, displayOrder: item.Details.IndexOf(item2) + 1);
sumSummaryContentList.Add(sumSummaryContentEnt); } await _sumSummaryContentRepository.InsertManyAsync(sumSummaryContentList); #endregion
} #endregion
} } //更新建议和诊断
if (input.SumSuggestions != null && input.SumSuggestions.Any()) { //判断有没有重复诊断
List<Guid> diagnosisList = new List<Guid>(); foreach (var item in input.SumSuggestions) { if (item.DiagnosisIds != null) { diagnosisList.AddRange(item.DiagnosisIds); }
} if (diagnosisList.Count() != diagnosisList.Distinct().Count()) { throw new UserFriendlyException("不允许有重复诊断"); } foreach (var item in input.SumSuggestions) { #region 插入SumSuggestionHeader
SumSuggestionHeader sumSuggestionHeaderEnt = _sumSuggestionHeaderManager.CreateAsync(patientRegisterId: input.PatientRegisterId, suggestionTitle: item.SuggestionTitle, suggestionFlag: null, displayOrder: input.SumSuggestions.IndexOf(item) + 1);
var sumSuggestionHeaderEnt_New = await _sumSuggestionHeaderRepository.InsertAsync(sumSuggestionHeaderEnt, true);
if (sumSuggestionHeaderEnt_New != null) {
#region 插入SumDiagnosis
if (item.DiagnosisIds != null && item.DiagnosisIds.Any()) {
foreach (var diagnosisId in item.DiagnosisIds) {
#region 校验诊断性别
var diagnosisEnt = await _diagnosisRepository.FirstOrDefaultAsync(f => f.Id == diagnosisId); if (diagnosisEnt == null) throw new UserFriendlyException("诊断不存在"); if (diagnosisEnt.ForSexId != ForSexFlag.All && entity.SexId != SexFlag.UnKnown && diagnosisEnt.ForSexId != entity.SexId) { throw new UserFriendlyException($"诊断:{diagnosisEnt.DisplayName}与性别不符"); }
#endregion
SumDiagnosis sumDiagnosis = new SumDiagnosis { DiagnosisId = diagnosisId, DisplayOrder = item.DiagnosisIds.IndexOf(diagnosisId) + 1, PatientRegisterId = input.PatientRegisterId, SumSuggestionHeaderId = sumSuggestionHeaderEnt_New.Id }; await _sumDiagnosisRepository.InsertAsync(sumDiagnosis); }
}
#endregion
#region 插入SumSuggestionContent
List<SumSuggestionContent> sumSuggestionContentList = new List<SumSuggestionContent>(); if (item.MedicalInterpretations != null) { foreach (var item2 in item.MedicalInterpretations) { SumSuggestionContent sumSuggestionContentEnt = _sumSuggestionContentManager.CreateAsync(sumSuggestionHeaderId: sumSuggestionHeaderEnt_New.Id, suggestionContent: item2.SuggestionContent, suggestionType: SuggestionTypeFlag.MedicalInterpretation, displayOrder: item.MedicalInterpretations.IndexOf(item2) + 1);
sumSuggestionContentList.Add(sumSuggestionContentEnt); } } if (item.CommonReasons != null) { foreach (var item2 in item.CommonReasons) { SumSuggestionContent sumSuggestionContentEnt = _sumSuggestionContentManager.CreateAsync(sumSuggestionHeaderId: sumSuggestionHeaderEnt_New.Id, suggestionContent: item2.SuggestionContent, suggestionType: SuggestionTypeFlag.CommonReasons, displayOrder: item.CommonReasons.IndexOf(item2) + 1);
sumSuggestionContentList.Add(sumSuggestionContentEnt); } } if (item.HealthGuidances != null) { foreach (var item2 in item.HealthGuidances) { SumSuggestionContent sumSuggestionContentEnt = _sumSuggestionContentManager.CreateAsync(sumSuggestionHeaderId: sumSuggestionHeaderEnt_New.Id, suggestionContent: item2.SuggestionContent, suggestionType: SuggestionTypeFlag.HealthGuidance, displayOrder: item.HealthGuidances.IndexOf(item2) + 1);
sumSuggestionContentList.Add(sumSuggestionContentEnt); } }
await _sumSuggestionContentRepository.InsertManyAsync(sumSuggestionContentList); #endregion
} #endregion
} }
return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newentity); }
/// <summary>
/// 批量修改指引单打印次数 原有基础上加1
/// </summary>
/// <param name="Ids"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/updatepatientregisterguideprinttimesmany")] public async Task UpdatePatientRegisterGuidePrintTimesManyAsync(List<Guid> Ids) { var entlist = await _repository.GetListAsync(m => Ids.Contains(m.Id)); entlist.ForEach(f => f.GuidePrintTimes = (short)(f.GuidePrintTimes + 1)); }
/// <summary>
/// 批量修改体检报告打印次数 原有基础上加1
/// </summary>
/// <param name="Ids"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/updatepatientregisterreportprinttimesmany")] public async Task UpdatePatientRegisterReportPrintTimesManyAsync(List<Guid> Ids) { var entlist = await _repository.GetListAsync(m => Ids.Contains(m.Id));
if (entlist.Any()) { foreach (var item in entlist) { item.ReportPrintTimes = (short)(item.ReportPrintTimes + 1); if (_currentUser.Id != null) item.ReportPrintOperating = _currentUser.Id; }
await _repository.UpdateManyAsync(entlist); } }
/// <summary>
/// 导入体检名单操作
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/patientregister/CreatePatientRegisterFromExcel")] public async Task CreatePatientRegisterFromExcelAsync(CreatePatientRegisterExcelRequestDto input) { if (input == null) { throw new UserFriendlyException("input参数不能为空"); } if (string.IsNullOrWhiteSpace(input.PatientName)) { throw new UserFriendlyException("姓名不能为空"); }
if (!string.IsNullOrWhiteSpace(input.IdNo)) { input.IdNo = input.IdNo.Trim();
var idInfo = DataHelper.AutoIDCard(input.IdNo); if (idInfo != null) { if (input.Age == null) { input.Age = idInfo.Age; } if (string.IsNullOrWhiteSpace(input.BirthDate)) { input.BirthDate = idInfo.BirthDate; } if (string.IsNullOrWhiteSpace(input.SexName)) { input.SexName = idInfo.SexId == 'M' ? "男" : "女"; } } } #region 转换职业病信息
Guid ocCheckTypeId = Guid.Empty; List<Guid> poisonIds = new List<Guid>();
if (input.IsOccupationalDisease == 'Y') { if (string.IsNullOrWhiteSpace(input.OcCheckTypeName)) { throw new UserFriendlyException("职业病检查类别不能为空"); }
if (string.IsNullOrWhiteSpace(input.JobType)) { throw new UserFriendlyException("职业病工种不能为空"); }
if (!input.Poisons.Any()) { throw new UserFriendlyException("职业病毒害因素不能为空"); }
#region 职业病检查类别
var ocCheckTypeEnt = await _ocCheckTypeRepository.FirstOrDefaultAsync(f => f.DisplayName == input.OcCheckTypeName); if (ocCheckTypeEnt == null) { throw new UserFriendlyException($"职业病检查类别{input.OcCheckTypeName}名称不正确"); }
ocCheckTypeId = ocCheckTypeEnt.Id; #endregion
#region 职业病毒害因素
foreach (var poisonItem in input.Poisons) { if (string.IsNullOrWhiteSpace(poisonItem)) throw new UserFriendlyException($"职业病毒害因素{poisonItem}不能为空");
var poisonEnt = await _poisonRepository.FirstOrDefaultAsync(f => f.DisplayName == poisonItem); if (poisonEnt == null) { throw new UserFriendlyException($"职业病毒害因素{poisonItem}名称不正确"); } if (!poisonIds.Contains(poisonEnt.Id)) { poisonIds.Add(poisonEnt.Id); } }
#endregion
}
Guid? medicalTypeId;
if (input.IsDefaultMedicalType == 'Y' && input.IsOccupationalDisease == 'Y') { //人员登记检查类别
var systemMedicalTypeId = await _sysParmValueManager.GetSysParmValueAsync(input.MedicalCenterId, "patient_register_occ_check_id"); if (string.IsNullOrWhiteSpace(systemMedicalTypeId)) throw new UserFriendlyException("系统参数中未配置职业病检查的体检类别ID"); medicalTypeId = Guid.Parse(systemMedicalTypeId); } else { medicalTypeId = await GetMedicalTypeIdByName(input.MedicalTypeName); }
#endregion
//设置人员信息
Patient patient = null; Patient updatePatientEntity = new Patient() { MedicalCenterId = input.MedicalCenterId, DisplayName = input.PatientName, MaritalStatusId = await GetMaritalStatusIdByName(input.MaritalStatusName), Address = input.Address, BirthDate = GetBirthDateByString(input.BirthDate), BirthPlaceId = await GetBirthPlaceIdByName(input.BirthPlaceName), Email = input.Email, IdNo = input.IdNo, MobileTelephone = input.MobileTelephone, NationId = await GetNationIdByName(input.NationName), PostalCode = input.PostalCode, SexId = await GetSexIdByName(input.SexName), Telephone = input.Telephone };
if (!string.IsNullOrWhiteSpace(input.IdNo)) { var patientList = await _patientRepository.GetListAsync(o => o.IdNo == input.IdNo); if (patientList.Count > 0) { if (patientList.Where(m => m.DisplayName == input.PatientName).Count() == 0) throw new UserFriendlyException("系统中已有该身份证号的不同姓名人员"); else { //patientList = patientList.Where(m => m.DisplayName == input.PatientName).ToList();
//if (patientList.Count > 1)
//{
// var tPatientRegisterList = await _repository.GetListAsync(m => patientList.Select(s => s.Id).Contains(m.PatientId));
// if (tPatientRegisterList.Count > 0)
// {
// patient = patientList.FirstOrDefault(f => f.Id == tPatientRegisterList.OrderByDescending(o => o.MedicalTimes).Select(s => s.PatientId).FirstOrDefault());
// }
// else
// {
// patient = patientList.FirstOrDefault(f => f.DisplayName == input.PatientName);
// }
//}
//else
//{
// patient = patientList.FirstOrDefault(f => f.DisplayName == input.PatientName);
//}
if (patientList.Count > 1) { var tPatientRegisterList = await _repository.GetListAsync(m => patientList.Select(s => s.Id).Contains(m.PatientId)); if (tPatientRegisterList.Count > 0) { patient = patientList.FirstOrDefault(f => f.Id == tPatientRegisterList.OrderByDescending(o => o.MedicalTimes).Select(s => s.PatientId).FirstOrDefault()); if (patient.DisplayName != input.PatientName) { throw new UserFriendlyException("最后一次体检的姓名跟当前导入的不一致"); } } else { patient = patientList.FirstOrDefault(f => f.DisplayName == input.PatientName); if (patient == null) { patient = patientList.FirstOrDefault(); } } } else { patient = patientList.FirstOrDefault(); } } }
} if (!string.IsNullOrWhiteSpace(input.PatientNo)) { patient = await _patientRepository.FirstOrDefaultAsync(o => o.PatientNo == input.PatientNo); if (patient.DisplayName != input.PatientName) { throw new UserFriendlyException("系统中已有该档案号的不同姓名人员"); } }
if (patient == null) { patient = await _patientManager.CreateAsync(updatePatientEntity); await _patientRepository.InsertAsync(patient, true); } else { Patient newUpdatePatientEntity = patient; #region 有档案时,导入的信息空的情况,使用档案的信息
if (!string.IsNullOrWhiteSpace(input.PatientName)) { newUpdatePatientEntity.DisplayName = input.PatientName; } if (!string.IsNullOrWhiteSpace(input.MaritalStatusName)) { newUpdatePatientEntity.MaritalStatusId = await GetMaritalStatusIdByName(input.MaritalStatusName); } if (!string.IsNullOrWhiteSpace(input.Address)) { newUpdatePatientEntity.Address = input.Address; } if (!string.IsNullOrWhiteSpace(input.BirthDate)) { newUpdatePatientEntity.BirthDate = GetBirthDateByString(input.BirthDate); } if (!string.IsNullOrWhiteSpace(input.BirthPlaceName)) { newUpdatePatientEntity.BirthPlaceId = await GetBirthPlaceIdByName(input.BirthPlaceName); } if (!string.IsNullOrWhiteSpace(input.Email)) { newUpdatePatientEntity.Email = input.Email; } if (!string.IsNullOrWhiteSpace(input.IdNo)) { newUpdatePatientEntity.IdNo = input.IdNo; } if (!string.IsNullOrWhiteSpace(input.MobileTelephone)) { newUpdatePatientEntity.MobileTelephone = input.MobileTelephone; } if (!string.IsNullOrWhiteSpace(input.NationName)) { newUpdatePatientEntity.NationId = await GetNationIdByName(input.NationName); } if (!string.IsNullOrWhiteSpace(input.PostalCode)) { newUpdatePatientEntity.PostalCode = input.PostalCode; } if (!string.IsNullOrWhiteSpace(input.Telephone)) { newUpdatePatientEntity.Telephone = input.Telephone; } if (!string.IsNullOrWhiteSpace(input.SexName)) { newUpdatePatientEntity.SexId = await GetSexIdByName(input.SexName); } #endregion
if (newUpdatePatientEntity != patient) { await _patientManager.UpdateAsync(newUpdatePatientEntity, patient); await _patientRepository.UpdateAsync(patient, true); } } Guid? customerOrgId = await GetCustomerOrgIdByName(input.CustomerOrgId, input.DepartmentName, input.IsAutoCreateDepartment); if (customerOrgId == null) { customerOrgId = input.CustomerOrgId; } Guid? customerOrgGroupId = await GetCustomerOrgGroupIdByName(input.CustomerOrgRegisterId, input.CustomerOrgGroupName); //创建人员登记信息
var createPatientRegisterArg = new CreatePatientRegisterArg() { Age = input.Age, BirthDate = updatePatientEntity.BirthDate, CompleteFlag = input.CompleteFlag, CustomerOrgGroupId = customerOrgGroupId, CustomerOrgId = (Guid)customerOrgId, CustomerOrgRegisterId = input.CustomerOrgRegisterId, IsNameHide = 'N', IsVip = 'N', JobCardNo = input.JobCardNo, JobPost = input.JobPost, JobTitle = input.JobTitle, MaritalStatusId = updatePatientEntity.MaritalStatusId, MedicalCardNo = input.MedicalCardNo, MedicalPackageId = null, MedicalTypeId = medicalTypeId, MedicalCenterId = input.MedicalCenterId, PatientId = patient.Id, PatientName = input.PatientName, PersonnelTypeId = await GetPersonnelTypeIdByName(input.PersonnelTypeName), Remark = input.Remark, Salesman = input.Salesman, SexId = updatePatientEntity.SexId, ThirdInfo = input.ThirdInfo }; PatientRegister patientRegister = null; CreateRegisterCheckAsbitemEntity createRegisterCheckAsbitemEntity = null; patientRegister = await _manager.CreateAsync(createPatientRegisterArg); #region 人寿的信息生成一个预约ID
var thirdBookingInterface = await _thirdInterfaceRepository.FirstOrDefaultAsync(o => o.ThirdInterfaceType == ThirdInterfaceTypeFlag.ThirdBooking); if (thirdBookingInterface != null && thirdBookingInterface.IsActive == 'Y') { var parmValue = thirdBookingInterface.ParmValue; var configurationBuilder = new ConfigurationBuilder() .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue))); var interfaceConfig = configurationBuilder.Build(); var customerOrgRegisterId = interfaceConfig.GetSection("Interface").GetSection("CustomerOrgRegisterId").Value; if (customerOrgRegisterId == input.CustomerOrgRegisterId.ToString()) { var thirdBookingEnt = await _thirdBookingRepository.FirstOrDefaultAsync(f => f.PatientName == input.PatientName && f.IdNo == input.IdNo && (f.Phone == input.MobileTelephone || f.Phone == input.Telephone) && f.MedicalStatus != '3'); if (thirdBookingEnt != null) { patientRegister.ThirdBookingId = thirdBookingEnt.Id.ToString(); } else { throw new UserFriendlyException("该人员未预约,请先预约"); } } }
#endregion
if (customerOrgGroupId != null) await _patientRegisterManager.SetCustomerOrgGroupId(patientRegister, (Guid)customerOrgGroupId); await _repository.InsertAsync(patientRegister, true);
List<RegisterCheckAsbitem> registerAsbitems = new List<RegisterCheckAsbitem>();
//设置分组有关组合项目
if (customerOrgGroupId != null) { registerAsbitems = (await _customerOrgGroupDetailRepository.GetQueryableAsync()).Include(x => x.Asbitem) .Where(m => m.CustomerOrgGroupId == customerOrgGroupId) .Select(s => new RegisterCheckAsbitem { Amount = s.Amount, AsbitemId = s.AsbitemId, ChargePrice = s.Price, IsCharge = 'N', PatientRegisterId = patientRegister.Id, PayTypeFlag = PayTypeFlag.OrgPay, StandardPrice = s.Asbitem.Price }).ToList();
}
#region 职业病业务 检索职业病对应的项目
if (input.IsOccupationalDisease == 'Y') { //var ocCheckTypeDetailList = await _ocCheckTypeDetailRepository.GetListAsync(f => f.OcCheckTypeId == ocCheckTypeId && poisonIds.Contains(f.PoisonId));
var ocCheckTypeDetailList = from ocCheckTypeDetail in await _ocCheckTypeDetailRepository.GetQueryableAsync() join asbitem in await _asbitemRepository.GetQueryableAsync() on ocCheckTypeDetail.AsbitemId equals asbitem.Id where ocCheckTypeDetail.OcCheckTypeId == ocCheckTypeId && poisonIds.Contains(ocCheckTypeDetail.PoisonId) select new { Amount = ocCheckTypeDetail.Amount, AsbitemId = ocCheckTypeDetail.AsbitemId, ChargePrice = ocCheckTypeDetail.Price, StandardPrice = asbitem.Price };
foreach (var item in ocCheckTypeDetailList) { if (registerAsbitems.Where(m => m.AsbitemId == item.AsbitemId).Count() == 0) { registerAsbitems.Add(new RegisterCheckAsbitem { Amount = item.Amount, AsbitemId = item.AsbitemId, ChargePrice = item.ChargePrice, IsCharge = 'N', PatientRegisterId = patientRegister.Id, PayTypeFlag = PayTypeFlag.OrgPay, StandardPrice = item.StandardPrice }); } }
} #endregion
if (registerAsbitems.Any()) {
createRegisterCheckAsbitemEntity = await _registerAsbitemManager.UpdateManyAsync(patientRegister, registerAsbitems);
if (createRegisterCheckAsbitemEntity != null) { await UpdateRegisterChecks(createRegisterCheckAsbitemEntity); } }
#region 增加职业病信息
if (input.IsOccupationalDisease == 'Y') {
//基础信息
var patientOccupationalDiseaseEnt = new PatientOccupationalDisease { JobType = input.JobType, OcCheckTypeId = ocCheckTypeId, RiskFactors = string.Join(",", input.Poisons), PatientRegisterId = patientRegister.Id, DrinkFlag = '0', SmokeFlag = '0', FamilyGeneticHistory = "无", Other = "无" };
patientOccupationalDiseaseEnt = _patientOccupationalDiseaseManager.CreateAsync(patientOccupationalDiseaseEnt); await _patientOccupationalDiseaseRepository.InsertAsync(patientOccupationalDiseaseEnt);
//毒害因素
List<PatientPoison> patientPoisons = new List<PatientPoison>();
foreach (var poisonId in poisonIds) { var patientPoisonEnt = new PatientPoison { PatientRegisterId = patientRegister.Id, PoisonId = poisonId };
patientPoisonEnt = _patientPoisonManager.CreateAsync(patientPoisonEnt);
patientPoisons.Add(patientPoisonEnt); }
await _patientPoisonRepository.InsertManyAsync(patientPoisons); } #endregion
await CurrentUnitOfWork.SaveChangesAsync(); }
/// <summary>
/// 导入人员信息从第三方接口(青藏铁路接口)
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/patientregister/CreatePatientRegisterFromCustomerOrgInterface")] public async Task<ImportPatientRegisterByCustomerOrgRegisterIdDto> CreatePatientRegisterFromCustomerOrgInterfaceAsync(CustomerOrgRegisterIdInputDto input) { if (input == null) { throw new UserFriendlyException("input参数不能为空"); } var thirdInterfaces = await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType == ThirdInterfaceTypeFlag.ImportPatientRegister); foreach (var thirdInterface in thirdInterfaces) { if (thirdInterface.IsActive != 'Y') { continue; } var parmValue = thirdInterface.ParmValue; var configurationBuilder = new ConfigurationBuilder() .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue))); var config = configurationBuilder.Build(); var customerOrgIdStr = config.GetSection("Interface").GetSection("CustomerOrgId").Value; if (!Guid.TryParse(customerOrgIdStr, out var customerOrgId)) { throw new UserFriendlyException("接口配置中的CustomerOrgId无法解析成GUID"); } var customerOrgRegister = (await _customerOrgRegisterRepository.GetQueryableAsync()) .Where(o => o.Id == input.CustomerOrgRegisterId).First(); if (customerOrgRegister.CustomerOrgId != customerOrgId) { continue; }
object[] objects = [input.CustomerOrgRegisterId];
var assemblyName = config.GetSection("Interface").GetSection("AssemblyName").Value; var className = config.GetSection("Interface").GetSection("ClassName").Value;
var pluginsOut = await Utilities.ReflectionHelper.InvokeAsync<ImportPatientRegisterByCustomerOrgRegisterIdDto>(assemblyName, className, [thirdInterface.Id], "ImportPatientRegisterByCustomerOrgRegisterIdAsync", objects); return pluginsOut; } return null;
}
/// <summary>
/// 按全部数据查重名数据
/// </summary>
/// <param name="getSameNamePatientInputDto"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/GetSameNamePatient")] public async Task<List<GetSameNamePatientDto>> GetSameNamePatientAsync(GetSameNamePatientInputDto getSameNamePatientInputDto) { var patientQuery = await _patientRepository.GetQueryableAsync(); var patientRegisterQuery = await Repository.GetQueryableAsync(); var customerOrgQuery = await _customerOrgRepository.GetQueryableAsync(); var topCustomerOrgQuery = await _customerOrgRepository.GetQueryableAsync(); var result = (from patient in patientQuery join patientRegister in patientRegisterQuery on patient.Id equals patientRegister.PatientId where patient.DisplayName == getSameNamePatientInputDto.Name select new { PatientName = patient.DisplayName, PatientNo = patient.PatientNo, SexId = patient.SexId, NationId = patient.NationId, BirthDate = patient.BirthDate, IdNo = patient.IdNo, PostalCode = patient.PostalCode, Email = patient.Email, Telephone = patient.Telephone, MobileTelephone = patient.MobileTelephone, Address = patient.Address, CustomerOrgId = patientRegister.CustomerOrgId, MedicalStartDate = patientRegister.MedicalStartDate, CustomerOrgGroupId = patientRegister.CustomerOrgGroupId, MedicalPackageId = patientRegister.MedicalPackageId }).Distinct().ToList(); var getSameNamePatientDtos = new List<GetSameNamePatientDto>();
var patientGroup = result.GroupBy(g => g.PatientNo);
foreach (var itemPatient in patientGroup) {
var item = itemPatient.OrderByDescending(o => o.MedicalStartDate).FirstOrDefault();
getSameNamePatientDtos.Add(new GetSameNamePatientDto() { PatientName = item.PatientName, PatientNo = item.PatientNo, SexName = _cacheService.GetSexNameAsync(item.SexId).Result, NationName = _cacheService.GetNationNameAsync(item.NationId).Result, BirthDate = DataHelper.ConversionDateToString(item.BirthDate), IdNo = item.IdNo, PostalCode = item.PostalCode, Email = item.Email, Telephone = item.Telephone, MobileTelephone = item.MobileTelephone, Address = item.Address, CustomerOrgName = _cacheService.GetTopCustomerOrgNameAsync(item.CustomerOrgId).GetAwaiter().GetResult(), DepartmentName = _cacheService.GetCustomerOrgNameAsync(item.CustomerOrgId).GetAwaiter().GetResult(), CustomerOrgGroupName = item.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(item.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName, MedicalPackageName = _cacheService.GetMedicalTypeNameAsync(item.MedicalPackageId).GetAwaiter().GetResult() });
} return getSameNamePatientDtos;
}
/// <summary>
/// 按部门数据查重名数据
/// </summary>
/// <param name="getCustomerOrgSameNamePatientInputDto"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/GetCustomerOrgSameNamePatient")] public async Task<List<GetSameNamePatientDto>> GetCustomerOrgSameNamePatientAsync(GetCustomerOrgSameNamePatientInputDto getCustomerOrgSameNamePatientInputDto) { var customerOrgEntity = await _customerOrgManager.GetTopCustomerOrgAsync(getCustomerOrgSameNamePatientInputDto.CustomerOrgId); var patientQuery = await _patientRepository.GetQueryableAsync(); var patientRegisterQuery = await Repository.GetQueryableAsync(); var customerOrgQuery = await _customerOrgRepository.GetQueryableAsync(); var topCustomerOrgQuery = await _customerOrgRepository.GetQueryableAsync(); var result = (from patient in patientQuery join patientRegister in patientRegisterQuery on patient.Id equals patientRegister.PatientId join customerOrg in customerOrgQuery on patientRegister.CustomerOrgId equals customerOrg.Id where patient.DisplayName == getCustomerOrgSameNamePatientInputDto.Name && customerOrg.PathCode.Substring(0, 5) == customerOrgEntity.PathCode select new { PatientName = patient.DisplayName, PatientNo = patient.PatientNo, SexId = patient.SexId, NationId = patient.NationId, BirthDate = patient.BirthDate, IdNo = patient.IdNo, PostalCode = patient.PostalCode, Email = patient.Email, Telephone = patient.Telephone, MobileTelephone = patient.MobileTelephone, Address = patient.Address, CustomerOrgId = patientRegister.CustomerOrgId, CustomerOrgGroupId = patientRegister.CustomerOrgGroupId, MedicalPackageId = patientRegister.MedicalPackageId, MedicalStartDate = patientRegister.MedicalStartDate }).Distinct().ToList(); var getSameNamePatientDtos = new List<GetSameNamePatientDto>();
var patientGroup = result.GroupBy(g => g.PatientNo);
foreach (var itemPatient in patientGroup) { var item = itemPatient.OrderByDescending(o => o.MedicalStartDate).FirstOrDefault();
getSameNamePatientDtos.Add(new GetSameNamePatientDto() { PatientName = item.PatientName, PatientNo = item.PatientNo, SexName = _cacheService.GetSexNameAsync(item.SexId).Result, NationName = _cacheService.GetNationNameAsync(item.NationId).Result, BirthDate = DataHelper.ConversionDateToString(item.BirthDate), IdNo = item.IdNo, PostalCode = item.PostalCode, Email = item.Email, Telephone = item.Telephone, MobileTelephone = item.MobileTelephone, Address = item.Address, CustomerOrgName = _cacheService.GetTopCustomerOrgNameAsync(item.CustomerOrgId).GetAwaiter().GetResult(), DepartmentName = _cacheService.GetCustomerOrgNameAsync(item.CustomerOrgId).GetAwaiter().GetResult(), CustomerOrgGroupName = item.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(item.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName, MedicalPackageName = _cacheService.GetMedicalTypeNameAsync(item.MedicalPackageId).GetAwaiter().GetResult() });
} return getSameNamePatientDtos;
}
/// <summary>
/// 查询历史登记信息 用做批量导入
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/patientregister/getpatientregisterimportlist")] public async Task<List<PatientRegisterOrNoDto>> GetPatientRegisterImportListAsync(GetPatientRegisterImportListRequestDto input) { var customerOrgList = await _customerOrgRepository.GetListAsync();
var query = from a in await _repository.GetQueryableAsync() join ab in await _patientRepository.GetQueryableAsync() on a.PatientId equals ab.Id select new { a, ab };
//找单位下的所有部门ID 包含本身
var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(input.CustomerOrgId);
if (CustomerOrgIds.Any()) { query = query.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId)); } //体检次数
if (input.CustomerOrgRegisterId != Guid.Empty) { query = query.Where(m => m.a.CustomerOrgRegisterId == input.CustomerOrgRegisterId); }
//登记日期
if (!string.IsNullOrEmpty(input.StartDate) && !string.IsNullOrEmpty(input.EndDate)) { query = query.Where(m => m.a.CreationTime >= Convert.ToDateTime(input.StartDate) && m.a.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1));
}
//姓名
if (!string.IsNullOrEmpty(input.PatientName)) { query = query.Where(m => m.a.PatientName != null && m.a.PatientName.Contains(input.PatientName)); }
if (input.SexId != null && input.SexId != ForSexFlag.All) { query = query.Where(m => m.a.SexId == input.SexId); }
if (input.CompleteFlag != null) { query = query.Where(m => m.a.CompleteFlag == input.CompleteFlag); }
////档案号区间
if (!string.IsNullOrEmpty(input.StartPatientNo) && !string.IsNullOrEmpty(input.EndPatientNo)) {
query = query.Where(m => String.Compare(m.ab.PatientNo, input.StartPatientNo, StringComparison.OrdinalIgnoreCase) > 0 && String.Compare(m.ab.PatientNo, input.EndPatientNo, StringComparison.OrdinalIgnoreCase) <= 0).AsQueryable();
}
var entlist = query.Select(s => new PatientRegisterOrNoDto { CreationTime = s.a.CreationTime, CreatorId = s.a.CreatorId, Id = s.a.Id, LastModificationTime = s.a.LastModificationTime, LastModifierId = s.a.LastModifierId, ThirdInfo = s.a.ThirdInfo, SummaryDoctorId = s.a.SummaryDoctorId, SummaryDate = DataHelper.ConversionDateToString(s.a.SummaryDate), SexId = s.a.SexId, Age = s.a.Age, AuditDate = DataHelper.ConversionDateToString(s.a.AuditDate), AuditDoctorId = s.a.AuditDoctorId, BirthDate = DataHelper.ConversionDateToString(s.a.BirthDate), CompleteFlag = s.a.CompleteFlag, CustomerOrgGroupId = s.a.CustomerOrgGroupId, CustomerOrgId = s.a.CustomerOrgId, CustomerOrgRegisterId = s.a.CustomerOrgRegisterId, GuidePrintTimes = s.a.GuidePrintTimes, InterposeMeasure = s.a.InterposeMeasure, IsAudit = s.a.IsAudit, IsLock = s.a.IsLock, IsMedicalStart = s.a.IsMedicalStart, IsNameHide = s.a.IsNameHide, IsPhoneFollow = s.a.IsPhoneFollow, IsRecoverGuide = s.a.IsRecoverGuide, IsUpload = s.a.IsUpload, IsVip = s.a.IsVip, JobCardNo = s.a.JobCardNo, JobPost = s.a.JobPost, JobTitle = s.a.JobTitle, MaritalStatusId = s.a.MaritalStatusId, MedicalCardNo = s.a.MedicalCardNo, MedicalConclusionId = s.a.MedicalConclusionId, MedicalPackageId = s.a.MedicalPackageId, MedicalStartDate = DataHelper.ConversionDateToString(s.a.MedicalStartDate), MedicalTimes = s.a.MedicalTimes, MedicalTypeId = s.a.MedicalTypeId, MedicalCenterId = s.a.MedicalCenterId, PatientId = s.a.PatientId, PatientName = s.a.PatientName, PatientRegisterNo = s.a.PatientRegisterNo, PersonnelTypeId = s.a.PersonnelTypeId, Photo = s.a.Photo, Remark = s.a.Remark, ReportPrintTimes = s.a.ReportPrintTimes, Salesman = s.a.Salesman, SexHormoneTermId = s.a.SexHormoneTermId, CreatorName = "", LastModifierName = "", Address = s.ab.Address, //档案表信息
BirthPlaceId = s.ab.BirthPlaceId, DisplayName = s.ab.DisplayName, Email = s.ab.Email, IdNo = s.ab.IdNo, MobileTelephone = s.ab.MobileTelephone, NationId = s.ab.NationId, PatientNo = s.ab.PatientNo, PatientPassword = s.ab.PatientPassword, PostalCode = s.ab.PostalCode, Telephone = s.ab.Telephone, CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(s.a.CustomerOrgId).GetAwaiter().GetResult(), CustomerOrgParentId = _cacheService.GetTopCustomerOrgIdAsync(s.a.CustomerOrgId).GetAwaiter().GetResult(), CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(s.a.CustomerOrgId).GetAwaiter().GetResult(), CustomerOrgGroupName = s.a.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(s.a.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName, MedicalPackageName = _cacheService.GetMedicalTypeNameAsync(s.a.MedicalPackageId).GetAwaiter().GetResult() }).ToList();
return entlist;
}
/// <summary>
/// 按历史登记导入体检名单操作
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/CreatePatientRegisterFromHistory")] public async Task CreatePatientRegisterFromHistoryAsync(CreatePatientRegisterHistoryRequestDto input) { if (input == null) { throw new UserFriendlyException("input参数不能为空"); } var oldPatientRegisterEntity = await _repository.FirstOrDefaultAsync(m => m.Id == input.PatientRegisterId); if (oldPatientRegisterEntity == null) { throw new UserFriendlyException("人员登记ID查找人员登记信息不存在"); } var oldPatientEntity = await _patientRepository.FirstOrDefaultAsync(m => m.Id == oldPatientRegisterEntity.PatientId); if (oldPatientEntity == null) { throw new UserFriendlyException("人员档案信息不存在"); } var createPatientRegisterArg = new CreatePatientRegisterArg() { BirthDate = oldPatientRegisterEntity.BirthDate, CompleteFlag = input.CompleteFlag, CustomerOrgGroupId = input.CustomerOrgGroupId, CustomerOrgId = input.CustomerOrgId, CustomerOrgRegisterId = input.CustomerOrgRegisterId, IsNameHide = 'N', IsVip = 'N', JobCardNo = oldPatientRegisterEntity.JobCardNo, JobPost = oldPatientRegisterEntity.JobPost, JobTitle = oldPatientRegisterEntity.JobTitle, MaritalStatusId = oldPatientRegisterEntity.MaritalStatusId, MedicalCardNo = oldPatientRegisterEntity.MedicalCardNo, MedicalPackageId = null, MedicalTypeId = oldPatientRegisterEntity.MedicalTypeId, MedicalCenterId = input.MedicalCenterId, PatientId = oldPatientRegisterEntity.PatientId, PatientName = oldPatientRegisterEntity.PatientName, PersonnelTypeId = oldPatientRegisterEntity.PersonnelTypeId, SexId = oldPatientRegisterEntity.SexId }; var patientRegister = await _manager.CreateAsync(createPatientRegisterArg);
await _patientRegisterManager.SetCustomerOrgGroupId(patientRegister, input.CustomerOrgGroupId);
await _repository.InsertAsync(patientRegister, true); //设置分组有关组合项目
var registerAsbitems = (await _customerOrgGroupDetailRepository.GetQueryableAsync()).Include(x => x.Asbitem) .Where(m => m.CustomerOrgGroupId == input.CustomerOrgGroupId) .Select(s => new RegisterCheckAsbitem { Amount = s.Amount, AsbitemId = s.AsbitemId, ChargePrice = s.Price, IsCharge = 'N', PatientRegisterId = patientRegister.Id, PayTypeFlag = PayTypeFlag.OrgPay, StandardPrice = s.Asbitem.Price }).ToList();
var createRegisterCheckAsbitemEntity = await _registerAsbitemManager.UpdateManyAsync(patientRegister, registerAsbitems);
if (createRegisterCheckAsbitemEntity != null) { await UpdateRegisterChecks(createRegisterCheckAsbitemEntity); }
await CurrentUnitOfWork.SaveChangesAsync(); }
#region 调整分组
/// <summary>
/// 调整体检人员分组
/// </summary>
/// <returns></returns>
[HttpPost("api/app/patientregister/updatepatientregistercustomerorggroup_bak")] public async Task UpdatePatientRegisterCustomerOrgGroupAsyncBak(UpdatePatientRegisterCustomerOrgGroupDto input) { //当前人员信息
var patientRegisterEnt = (await _repository.GetDbSetAsync()) .Include(x => x.RegisterCheckAsbitems) .ThenInclude(x => x.RegisterCheck) .Where(m => m.Id == input.PatientRegisterId).FirstOrDefault(); if (patientRegisterEnt != null) { if (patientRegisterEnt.CustomerOrgId == null || patientRegisterEnt.CustomerOrgId == Guid.Empty) { throw new UserFriendlyException("个人体检不支持调整"); } if (patientRegisterEnt.CompleteFlag == PatientRegisterCompleteFlag.SumCheck) { throw new UserFriendlyException("当前体检人员已完成总检"); } if (patientRegisterEnt.CustomerOrgGroupId == input.CustomerOrgGroupId) { throw new UserFriendlyException("当前体检人员已在此分组"); }
//原有分组下的组合项目
//var oldGroupAsbitemList = await _customerOrgGroupDetailRepository.GetListAsync(m => m.CustomerOrgGroupId == patientRegisterEnt.CustomerOrgGroupId);
var oldGroupAsbitemList = (await _customerOrgGroupDetailRepository.GetDbSetAsync()) .Include(x => x.Asbitem) .Where(m => m.CustomerOrgGroupId == patientRegisterEnt.CustomerOrgGroupId).ToList();
//需要调整的分组包含的组合项目
//var newGroupAsbitemList = await _customerOrgGroupDetailRepository.GetListAsync(m => m.CustomerOrgGroupId == input.CustomerOrgGroupId);
var newGroupAsbitemList = (await _customerOrgGroupDetailRepository.GetDbSetAsync()) .Include(x => x.Asbitem) .Where(m => m.CustomerOrgGroupId == input.CustomerOrgGroupId).ToList();
var registerAsbitem = patientRegisterEnt.RegisterCheckAsbitems; //当前登记的组合项目
if (registerAsbitem.Any()) { //删除操作
List<RegisterCheckAsbitem> ReserveList = new List<RegisterCheckAsbitem>(); //保留项目
List<RegisterCheckAsbitem> DeleteList = new List<RegisterCheckAsbitem>(); //删除项目
foreach (var item in registerAsbitem) { //判断是否为已收费、已检、弃检
if (item.IsCharge == 'Y' || item.RegisterCheck.CompleteFlag != RegisterCheckCompleteFlag.UnChecked) { //保留
ReserveList.Add(item); } else {
if (input.IsReserveAddAsbitem == 'Y') { //保留额外项目
if (oldGroupAsbitemList.Where(m => m.AsbitemId == item.AsbitemId).Count() == 0) { //额外项目
ReserveList.Add(item); } else { DeleteList.Add(item); }
} else { DeleteList.Add(item); } } }
await _registerCheckAsbitemRepository.DeleteManyAsync(DeleteList);
//遍历查询保留的项目是否存在新分组,如果存在,修改新分组的ID,然后list里面剔除项目
ReserveList.ForEach(reserveitem => { var IsnewGroupAsbitem = newGroupAsbitemList.Find(m => m.AsbitemId == reserveitem.AsbitemId); //项目是否存在新分组内
if (IsnewGroupAsbitem != null) { //新分组内有需要保留的项目
reserveitem.GroupPackageId = input.CustomerOrgGroupId; //修改之前项目的分组ID
//从list里面删除新分组包含的组合项目
newGroupAsbitemList.Remove(IsnewGroupAsbitem); } else { reserveitem.GroupPackageId = null; //不包含,修改为null
} });
await _registerCheckAsbitemRepository.UpdateManyAsync(ReserveList); //修改保留项目的分组
}
if (newGroupAsbitemList.Any()) { //需要处理的新分组下的数据 重复的已剔除
var newRegisterAsbitemList = newGroupAsbitemList.Select(s => new RegisterCheckAsbitem { Amount = 1, AsbitemId = s.AsbitemId, ChargePrice = s.Price, GroupPackageId = input.CustomerOrgGroupId, IsCharge = 'N', PatientRegisterId = input.PatientRegisterId, PayTypeFlag = input.PayTypeFlag, StandardPrice = s.Asbitem.Price }).ToList();
foreach (var item in newRegisterAsbitemList) { await _registerAsbitemManager.CreateAsync(patientRegisterEnt.MedicalCenterId, item, true); }
}
patientRegisterEnt.CustomerOrgGroupId = input.CustomerOrgGroupId; await _repository.UpdateAsync(patientRegisterEnt); } else { throw new UserFriendlyException("人员不存在"); } }
#endregion
/// <summary>
/// 调整体检人员分组
/// </summary>
/// <returns></returns>
[HttpPost("api/app/patientregister/BatchUpdateCustomerOrgGroup")] public async Task BatchUpdateCustomerOrgGroupAsync(UpdatePatientRegisterCustomerOrgGroupDto input) { DataHelper.CheckCharIsYOrN(input.IsReserveAddAsbitem, "是否保留加做项目"); //当前人员信息
var patientRegisterEnt = (await _repository.GetQueryableAsync()) .Where(m => m.Id == input.PatientRegisterId).AsNoTracking().FirstOrDefault(); if (patientRegisterEnt == null) { throw new UserFriendlyException("人员不存在"); }
if (patientRegisterEnt.CustomerOrgId == GuidFlag.PersonCustomerOrgId) { throw new UserFriendlyException("个人体检不支持调整"); } if (patientRegisterEnt.CompleteFlag == PatientRegisterCompleteFlag.SumCheck) { throw new UserFriendlyException("当前体检人员已完成总检"); } if (patientRegisterEnt.CustomerOrgGroupId == input.CustomerOrgGroupId) { throw new UserFriendlyException("当前体检人员已在此分组"); }
//原有分组下的组合项目
var oldGroupAsbitemList = (await _customerOrgGroupDetailRepository.GetQueryableAsync()) .Include(x => x.Asbitem) .Where(m => m.CustomerOrgGroupId == patientRegisterEnt.CustomerOrgGroupId).ToList();
//需要调整的分组包含的组合项目
var newGroupAsbitemList = (await _customerOrgGroupDetailRepository.GetQueryableAsync()) .Include(x => x.Asbitem) .Where(m => m.CustomerOrgGroupId == input.CustomerOrgGroupId).ToList();
if (newGroupAsbitemList.Count() == 0) { throw new UserFriendlyException("分组没有分配组合项目"); } //删除属于原分组而不属于新分组的项目
var existRegisterChecks = (await _registerCheckRepository.GetQueryableAsync()).Where(o => o.PatientRegisterId == input.PatientRegisterId).AsNoTracking().ToList(); var existRegisterAsbitems = (await _registerCheckAsbitemRepository.GetQueryableAsync()).Where(o => existRegisterChecks.Select(x => x.Id).Contains(o.RegisterCheckId)).AsNoTracking().ToList(); for (var i = existRegisterAsbitems.Count - 1; i >= 0; i--) { if (oldGroupAsbitemList.Where(o => o.AsbitemId == existRegisterAsbitems[i].AsbitemId).Count() > 0) { if (newGroupAsbitemList.Where(o => o.AsbitemId == existRegisterAsbitems[i].AsbitemId).Count() == 0) { existRegisterAsbitems.RemoveAt(i); } } } //如果不保留加做的组合项目则删除不属于新分组的项目
if (input.IsReserveAddAsbitem != 'Y') { for (var i = existRegisterAsbitems.Count - 1; i >= 0; i--) {
if (newGroupAsbitemList.Where(o => o.AsbitemId == existRegisterAsbitems[i].AsbitemId).Count() == 0) { existRegisterAsbitems.RemoveAt(i); }
} } //加入新分组中的项目
foreach (var groupAsbitem in newGroupAsbitemList) { if (existRegisterAsbitems.Where(o => o.AsbitemId == groupAsbitem.AsbitemId).Count() == 0) { var asbitem = await _cacheService.GetAsbitemAsync(groupAsbitem.AsbitemId); var newRegisterCheckAsbitem = new RegisterCheckAsbitem() { AsbitemId = groupAsbitem.AsbitemId, Amount = groupAsbitem.Amount, StandardPrice = asbitem.Price, ChargePrice = groupAsbitem.Price, PayTypeFlag = input.PayTypeFlag, IsCharge = 'N'
}; existRegisterAsbitems.Add(newRegisterCheckAsbitem); }
} patientRegisterEnt.CustomerOrgGroupId = input.CustomerOrgGroupId; await _manager.SetCustomerOrgGroupId(patientRegisterEnt, input.CustomerOrgGroupId); await _repository.UpdateAsync(patientRegisterEnt); var createRegisterCheckAsbitemEntity = await _registerAsbitemManager.UpdateManyAsync(patientRegisterEnt, existRegisterAsbitems);
if (createRegisterCheckAsbitemEntity != null) { await UpdateRegisterChecks(createRegisterCheckAsbitemEntity);
}
await CurrentUnitOfWork.SaveChangesAsync();
}
#region 登记完返回的数据
private async Task<PatientRegisterOrNoDto> GetPatientRegisterOrNo(Guid PatientRegisterId) { // var entold = await _repository.GetAsync(PatientRegisterId);
var ent = (await _repository.GetQueryableAsync()).Include(x => x.Patient).Where(m => m.Id == PatientRegisterId).FirstOrDefault();
// var entold = await _repository.FindAsync(m=>m.Id== PatientRegisterId);
var entdto = new PatientRegisterOrNoDto(); if (ent != null) { entdto = new PatientRegisterOrNoDto { HisPatientId = ent.HisPatientId, Age = ent.Age, AuditDate = DataHelper.ConversionDateToString(ent.AuditDate), Id = ent.Id, AuditDoctorId = ent.AuditDoctorId, BirthDate = DataHelper.ConversionDateToString(ent.BirthDate), CompleteFlag = ent.CompleteFlag, CreationTime = ent.CreationTime, CreatorId = ent.CreatorId, CustomerOrgGroupId = ent.CustomerOrgGroupId, CustomerOrgId = ent.CustomerOrgId, CustomerOrgRegisterId = ent.CustomerOrgRegisterId, GuidePrintTimes = ent.GuidePrintTimes, InterposeMeasure = ent.InterposeMeasure, IsAudit = ent.IsAudit, IsLock = ent.IsLock, IsMedicalStart = ent.IsMedicalStart, IsNameHide = ent.IsNameHide, IsPhoneFollow = ent.IsPhoneFollow, IsRecoverGuide = ent.IsRecoverGuide, IsUpload = ent.IsUpload, IsVip = ent.IsVip, JobCardNo = ent.JobCardNo, JobPost = ent.JobPost, JobTitle = ent.JobTitle, LastModificationTime = ent.LastModificationTime, LastModifierId = ent.LastModifierId, MaritalStatusId = ent.MaritalStatusId, MedicalCardNo = ent.MedicalCardNo, MedicalConclusionId = ent.MedicalConclusionId, MedicalPackageId = ent.MedicalPackageId, MedicalStartDate = DataHelper.ConversionDateToString(ent.MedicalStartDate), MedicalTimes = ent.MedicalTimes, MedicalTypeId = ent.MedicalTypeId, MedicalCenterId = ent.MedicalCenterId, PatientId = ent.PatientId, PatientName = ent.PatientName, PatientRegisterNo = ent.PatientRegisterNo, PersonnelTypeId = ent.PersonnelTypeId, Photo = ent.Photo, Remark = ent.Remark, ReportPrintTimes = ent.ReportPrintTimes, Salesman = ent.Salesman, SexHormoneTermId = ent.SexHormoneTermId, SexId = ent.SexId, SummaryDate = DataHelper.ConversionDateToString(ent.SummaryDate), SummaryDoctorId = ent.SummaryDoctorId, ThirdInfo = ent.ThirdInfo, CreatorName = _cacheService.GetSurnameAsync(ent.CreatorId).GetAwaiter().GetResult(), LastModifierName = _cacheService.GetSurnameAsync(ent.LastModifierId).GetAwaiter().GetResult(), Address = ent.Patient.Address, //档案表信息
BirthPlaceId = ent.Patient.BirthPlaceId, DisplayName = ent.Patient.DisplayName, Email = ent.Patient.Email, IdNo = ent.Patient.IdNo, MobileTelephone = ent.Patient.MobileTelephone, NationId = ent.Patient.NationId, PatientNo = ent.Patient.PatientNo, PatientPassword = ent.Patient.PatientPassword, PostalCode = ent.Patient.PostalCode, Telephone = ent.Patient.Telephone, CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(ent.CustomerOrgId).GetAwaiter().GetResult(), CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(ent.CustomerOrgId).GetAwaiter().GetResult(), CustomerOrgParentId = _cacheService.GetTopCustomerOrgIdAsync(ent.CustomerOrgId).GetAwaiter().GetResult(), IsPatientOccupationalDisease = _patientOccupationalDiseaseManager.GetPatientRegisterIsOccupationalDisease(ent.Id).GetAwaiter().GetResult() }; var registerCheckAsbitems = (await _registerCheckAsbitemRepository.GetQueryableAsync()) .Include(x => x.Asbitem) .Include(x => x.Asbitem.ItemType) .Include(x => x.RegisterCheck) .Where(m => m.PatientRegisterId == PatientRegisterId).ToList().OrderByDescending(o => o.GroupPackageId).ThenBy(o => o.Asbitem.DisplayOrder);
entdto.RegisterCheckAsbitems = registerCheckAsbitems.Select(s => new RegisterCheckAsbitemOrAsbitemDto { Discount = s.StandardPrice == 0 ? 100 : Math.Round(Convert.ToDecimal(s.ChargePrice * 100 / s.StandardPrice), 2), IsLock = s.RegisterCheck.IsLock, CreationTime = s.CreationTime, CreatorId = s.CreatorId, Id = s.Id, LastModificationTime = s.LastModificationTime, LastModifierId = s.LastModifierId, Amount = s.Amount, AsbitemId = s.AsbitemId, AsbitemName = s.Asbitem.DisplayName, ChargePrice = s.ChargePrice, IsBelongGroupPackage = 'N', //GroupPackageId = s.GroupPackageId,
CheckCompleteFlag = s.RegisterCheck.CompleteFlag, DeviceTypeName = s.Asbitem.DeviceTypeId != null ? _cacheService.GetDeviceTypeNameAsync(s.Asbitem.DeviceTypeId.Value).Result : "", IsCharge = s.IsCharge, ItemTypeName = s.Asbitem.ItemType.DisplayName, LisRequestId = s.LisRequestId, PatientRegisterId = s.PatientRegisterId, PayTypeFlag = s.PayTypeFlag, SexName = _cacheService.GetForSexNameAsync(s.Asbitem.ForSexId).Result, StandardPrice = s.StandardPrice, CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).GetAwaiter().GetResult(), LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).GetAwaiter().GetResult(), IsDiscount = s.Asbitem.IsDiscount, MedicalCenterId = s.Asbitem.MedicalCenterId }).ToList(); //设置GroupPackageId
if (entdto.CustomerOrgGroupId != null && entdto.CustomerOrgGroupId != Guid.Empty) { var groupDetails = (await _customerOrgGroupDetailRepository.GetQueryableAsync()).Where(o => o.CustomerOrgGroupId == entdto.CustomerOrgGroupId).ToList(); entdto.RegisterCheckAsbitems.ForEach(o => { if (groupDetails.Where(x => x.AsbitemId == o.AsbitemId).Count() > 0) { o.IsBelongGroupPackage = 'Y'; } }); } else if (entdto.MedicalPackageId != null && entdto.MedicalPackageId != Guid.Empty) { var groupDetails = (await _medicalPackageDetailRepository.GetQueryableAsync()).Where(o => o.MedicalPackageId == entdto.MedicalPackageId).ToList(); entdto.RegisterCheckAsbitems.ForEach(o => { if (groupDetails.Where(x => x.AsbitemId == o.AsbitemId).Count() > 0) { o.IsBelongGroupPackage = 'Y'; } }); } entdto.RegisterCheckAsbitems = entdto.RegisterCheckAsbitems.OrderByDescending(o => o.IsBelongGroupPackage). OrderBy(o => o.Id).ToList();
#region 扩展信息
var patientRegisterExterEnt = await _patientRegisterExterRepository.FirstOrDefaultAsync(m => m.PatientRegisterId == PatientRegisterId); if (patientRegisterExterEnt != null) { entdto.QztlIsCw = patientRegisterExterEnt.QztlIsCw; entdto.QztlIsCy = patientRegisterExterEnt.QztlIsCy; entdto.QztlIsFj = patientRegisterExterEnt.QztlIsFj; entdto.QztlIsGt = patientRegisterExterEnt.QztlIsGt; entdto.QztlIsMain = patientRegisterExterEnt.QztlIsMain; entdto.QztlIsWh = patientRegisterExterEnt.QztlIsWh; entdto.QztlType = patientRegisterExterEnt.QztlType; entdto.Remark2 = patientRegisterExterEnt.Remark2; entdto.Remark3 = patientRegisterExterEnt.Remark3; entdto.Remark4 = patientRegisterExterEnt.Remark4; entdto.UploadQztlFlag = patientRegisterExterEnt.UploadQztlFlag; entdto.IsQztlImport = patientRegisterExterEnt.IsQztlImport; entdto.Planuserid = patientRegisterExterEnt.Planuserid; }
#endregion
} return entdto; }
#endregion
#region 收费、退费、未收费
/// <summary>
/// 收费
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/getpatientregisterchargelist")] public async Task<PagedResultDto<GetPatientRegisterChargeListDto>> GetPatientRegisterChargeListAsync(PatientRegisterChargeRequestDto input) { PatientRegisterChargeEfCoreDto patientRegisterChargeEfCoreDto = new PatientRegisterChargeEfCoreDto { EndDate = input.EndDate, InvoiceNo = input.InvoiceNo, PatientName = input.PatientName, PatientNo = input.PatientNo, PatientRegisterNo = input.PatientRegisterNo, StartDate = input.StartDate }; var patientRegisterChargeList = await _patientRegisterChargeRepository.GetPatientRegisterChargeListAsync(patientRegisterChargeEfCoreDto);
int totalCount = patientRegisterChargeList.Count;
patientRegisterChargeList = patientRegisterChargeList.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount).ToList();
return new PagedResultDto<GetPatientRegisterChargeListDto>(totalCount, patientRegisterChargeList);
}
/// <summary>
/// 未收费
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/getpatientregisternotchargedlist")] public async Task<PagedResultDto<GetPatientRegisterNotChargedListDto>> GetPatientRegisterNotChargedListAsync(PatientRegisterChargeRequestDto input) {
var query = from patientRegister in await _repository.GetQueryableAsync() join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId where registerCheckAsbitem.IsCharge == 'N' && registerCheckAsbitem.PayTypeFlag == PayTypeFlag.PersonPay orderby patientRegister.Id ascending select new { patientRegister, patient };
if (!string.IsNullOrEmpty(input.StartDate) && !string.IsNullOrEmpty(input.EndDate)) { query = query.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(input.StartDate) && m.patientRegister.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1)); } if (!string.IsNullOrEmpty(input.PatientName)) { query = query.Where(m => !string.IsNullOrEmpty(m.patientRegister.PatientName) && m.patientRegister.PatientName.Contains(input.PatientName)); } if (!string.IsNullOrEmpty(input.PatientNo)) { query = query.Where(m => m.patient.PatientNo == input.PatientNo); } if (!string.IsNullOrEmpty(input.PatientRegisterNo)) { query = query.Where(m => m.patientRegister.PatientRegisterNo == input.PatientRegisterNo); }
var patientRegisterGroup = query.ToList().GroupBy(g => g.patientRegister);
int totalCount = patientRegisterGroup.Count();
patientRegisterGroup = patientRegisterGroup.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount);
var entListDto = patientRegisterGroup.ToList().Select(s => new GetPatientRegisterNotChargedListDto { PatientRegisterId = s.Key.Id, Address = s.FirstOrDefault().patient.Address, Age = s.Key.Age, CustomerOrgName = _cacheService.GetCustomerOrgAsync(s.Key.CustomerOrgId).GetAwaiter().GetResult().DisplayName, CustomerOrgParentName = _cacheService.GetTopCustomerOrgAsync(s.Key.CustomerOrgId).GetAwaiter().GetResult().DisplayName, Email = s.FirstOrDefault().patient.Email, IdNo = s.FirstOrDefault().patient.IdNo, IsVip = s.Key.IsVip, MedicalTimes = s.Key.MedicalTimes, MobileTelephone = s.FirstOrDefault().patient.MobileTelephone, PatientName = s.Key.PatientName, PatientNo = s.FirstOrDefault().patient.PatientNo, PatientRegisterNo = s.Key.PatientRegisterNo, Salesman = s.Key.Salesman, SexId = _cacheService.GetSexNameAsync(s.Key.SexId).GetAwaiter().GetResult(), Telephone = s.FirstOrDefault().patient.Telephone }).ToList();
return new PagedResultDto<GetPatientRegisterNotChargedListDto>(totalCount, entListDto); //PatientRegisterChargeEfCoreDto patientRegisterChargeEfCoreDto = new PatientRegisterChargeEfCoreDto
//{
// EndDate = input.EndDate,
// InvoiceNo = input.InvoiceNo,
// PatientName = input.PatientName,
// PatientNo = input.PatientNo,
// PatientRegisterNo = input.PatientRegisterNo,
// StartDate = input.StartDate
//};
//var patientRegisterNotChargedList = await _patientRegisterChargeRepository.GetPatientRegisterNotChargedListAsync(patientRegisterChargeEfCoreDto);
//int totalCount = patientRegisterNotChargedList.Count;
//patientRegisterNotChargedList = patientRegisterNotChargedList.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount).ToList();
//return new PagedResultDto<GetPatientRegisterNotChargedListDto>(totalCount, patientRegisterNotChargedList);
}
/// <summary>
/// 退费
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/getpatientregisterchargebacklist")] public async Task<PagedResultDto<GetPatientRegisterChargeBackListDto>> GetPatientRegisterChargeBackListAsync(PatientRegisterChargeRequestDto input) { PatientRegisterChargeEfCoreDto patientRegisterChargeEfCoreDto = new PatientRegisterChargeEfCoreDto { EndDate = input.EndDate, InvoiceNo = input.InvoiceNo, PatientName = input.PatientName, PatientNo = input.PatientNo, PatientRegisterNo = input.PatientRegisterNo, StartDate = input.StartDate }; var patientRegisterChargeBackList = await _patientRegisterChargeRepository.GetPatientRegisterChargeBackListAsync(patientRegisterChargeEfCoreDto);
int totalCount = patientRegisterChargeBackList.Count;
patientRegisterChargeBackList = patientRegisterChargeBackList.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount).ToList();
return new PagedResultDto<GetPatientRegisterChargeBackListDto>(totalCount, patientRegisterChargeBackList); }
#endregion
#region 查询体检人员项目情况
/// <summary>
/// 查询体检人员的项目状况
/// </summary>
/// <returns></returns>
[HttpGet("api/app/patientregister/getpatientregisteritemstatus")] public async Task<GetPatientRegisterItemStatusDto> GetPatientRegisterItemStatusAsync(Guid PatientRegisterId) { //未检组合项目
var UnCheckedAsbitem = (await _registerCheckAsbitemRepository.GetQueryableAsync()) .Include(x => x.Asbitem) .Include(x => x.RegisterCheck) .Where(m => m.PatientRegisterId == PatientRegisterId && m.RegisterCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked && m.Asbitem.IsCheck == 'Y') .OrderBy(o => o.Asbitem.DisplayOrder).Select(s => s.Asbitem.DisplayName).ToList();
//弃检检组合项目
var GiveUpAsbitem = (await _registerCheckAsbitemRepository.GetQueryableAsync()) .Include(x => x.Asbitem) .Include(x => x.RegisterCheck) .Where(m => m.PatientRegisterId == PatientRegisterId && m.RegisterCheck.CompleteFlag == RegisterCheckCompleteFlag.GiveUpChecked).OrderBy(o => o.Asbitem.DisplayOrder).Select(s => s.Asbitem.DisplayName).ToList();
//组合项目已检,项目无明细的项目
var registerAsbItemQueryable = await _registerCheckAsbitemRepository.GetQueryableAsync(); var registerCheckQueryable = await _registerCheckRepository.GetQueryableAsync(); var registerCheckItemQueryable = await _registerCheckItemRepository.GetQueryableAsync(); var itemQueryable = await _itemRepository.GetQueryableAsync();
var checkedNullValueItem = (from a in registerCheckItemQueryable join b in registerCheckQueryable on a.RegisterCheckId equals b.Id join d in itemQueryable on a.ItemId equals d.Id into dd from ad in dd.DefaultIfEmpty() where (b.PatientRegisterId == PatientRegisterId && string.IsNullOrEmpty(a.Result) && b.CompleteFlag == RegisterCheckCompleteFlag.Checked) orderby ad.DisplayOrder ascending select new { ItemName = ad.DisplayName }).Select(s => s.ItemName).ToList();
//组合项目已检,项目弃检
var checkedGiveUpItem = (from a in registerCheckItemQueryable join b in registerCheckQueryable on a.RegisterCheckId equals b.Id join c in registerAsbItemQueryable on b.Id equals c.RegisterCheckId join d in itemQueryable on a.ItemId equals d.Id into dd from ad in dd.DefaultIfEmpty() where (c.PatientRegisterId == PatientRegisterId && b.CompleteFlag == RegisterCheckCompleteFlag.Checked && !string.IsNullOrEmpty(a.Result) && a.Result.Contains("放弃检查")) orderby ad.DisplayOrder ascending select new { ItemName = ad.DisplayName }).Select(s => s.ItemName).ToList();
var entdto = new GetPatientRegisterItemStatusDto { GiveUpAsbitem = GiveUpAsbitem, CheckedGiveUpItem = checkedGiveUpItem, CheckedNullValueItem = checkedNullValueItem, UnCheckedAsbitem = UnCheckedAsbitem };
return entdto;
}
#endregion
#region 批量修改人员状态、体检日期
/// <summary>
/// 批量修改人员状态、体检日期 可以同时修改状态跟日期 也可以单独修改某一个 不用修改的传 null
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/patientregister/updatepatientregistercompleteflagormedicalstartdate")] public async Task UpdatePatientRegisterCompleteFlagOrMedicalStartDateAsync(UpdatePatientRegisterCompleteFlagOrMedicalStartDateDto input) {
if (input.PatientRegisterIds.Any()) {
var patientRegisterList = await _repository.GetListAsync(m => input.PatientRegisterIds.Contains(m.Id) && (m.CompleteFlag == PatientRegisterCompleteFlag.PreRegistration || m.CompleteFlag == PatientRegisterCompleteFlag.Registration));
if (input.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration && input.CompleteFlag != PatientRegisterCompleteFlag.Registration) { throw new UserFriendlyException("登记状态只能是预登记或正式登记"); }
patientRegisterList.ForEach(f => { if (f.CompleteFlag == PatientRegisterCompleteFlag.PreRegistration && input.CompleteFlag == PatientRegisterCompleteFlag.Registration) { f.MedicalStartDate = DateTime.Now; f.IsMedicalStart = 'Y'; if (f.PatientRegisterNo.StartsWith("P")) { f.PatientRegisterNo = _manager.CreatePatientRegisterNo(f.MedicalCenterId).Result; } #region 预登记转正式登记修改登记者ID
string goRegisterIsUpdateRegisterPerson = _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "go_register_is_update_register_person").GetAwaiter().GetResult(); if (goRegisterIsUpdateRegisterPerson == "1") { if (_currentUser.Id != null) { //判断是预登记转正式登记
f.UpdateCreatorId(_currentUser.Id.Value); } }
#endregion
} f.CompleteFlag = input.CompleteFlag.Value; } );
if (!string.IsNullOrEmpty(input.MedicalStartDate)) { patientRegisterList.ForEach(f => f.MedicalStartDate = PageHelper.ConvertDatetimeV(input.MedicalStartDate));
}
await _repository.UpdateManyAsync(patientRegisterList);
} else { throw new UserFriendlyException("参数有误"); }
}
#endregion
/// <summary>
/// 修改体检日期
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/PatientRegister/UpdatePatientRegisterMedicalStartDate")] public async Task UpdatePatientRegisterMedicalStartDateAsync(UpdatePatientRegisterMedicalStartDateInputDto input) { if (!input.PatientRegisterIds.Any()) { throw new UserFriendlyException("请选择人员"); }
var patientRegisterList = await _repository.GetListAsync(m => input.PatientRegisterIds.Contains(m.Id));
if (!string.IsNullOrEmpty(input.MedicalStartDate)) { patientRegisterList.ForEach(f => f.MedicalStartDate = PageHelper.ConvertDatetimeV(input.MedicalStartDate));
await _repository.UpdateManyAsync(patientRegisterList);
}
}
/// <summary>
/// 总检时修改人员信息
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/PatientRegister/UpdatePatientRegisterBySumCheck")] public async Task UpdatePatientRegisterBySumCheckAsync(UpdatePatientRegisterBySumCheckInputDto input) { var patientRegisterEnt = await _repository.FirstOrDefaultAsync(f => f.Id == input.PatientRegisterId); if (patientRegisterEnt == null) { throw new UserFriendlyException("人员ID不正确"); }
var patientEnt = await _patientRepository.FirstOrDefaultAsync(f => f.Id == patientRegisterEnt.PatientId); if (patientEnt != null) { patientEnt.DisplayName = input.PatientName; patientRegisterEnt.PatientName = input.PatientName;
patientEnt.IdNo = input.IdNo; patientEnt.MobileTelephone = input.MobileTelephone;
patientRegisterEnt.PersonnelTypeId = input.PersonnelTypeId; patientRegisterEnt.MedicalTypeId = input.MedicalTypeId; patientRegisterEnt.Remark = input.Remark; patientRegisterEnt.SexHormoneTermId = input.SexHormoneTermId;
await _patientRepository.UpdateAsync(patientEnt); await _repository.UpdateAsync(patientRegisterEnt); } }
/// <summary>
/// 修改人员 手机、姓名、身份证 已总检特殊情况修改
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/PatientRegister/UpdatePatientRegisterBaseInfoByPatientRegisterId")] public async Task<PatientRegisterOrNoDto> UpdatePatientRegisterBaseInfoByPatientRegisterIdAsync(UpdatePatientRegisterBaseInfoByPatientRegisterIdInputDto input) { PatientRegisterOrNoDto msg = new PatientRegisterOrNoDto();
if (input == null || string.IsNullOrWhiteSpace(input.IdNo) && string.IsNullOrWhiteSpace(input.PatientName) && string.IsNullOrWhiteSpace(input.MobileTelephone)) throw new UserFriendlyException("请求参数有误");
var patientRegisterEnt = await _repository.FirstOrDefaultAsync(f => f.Id == input.PatientRegisterId); if (patientRegisterEnt == null) { throw new UserFriendlyException("人员ID不正确"); }
var patientEnt = await _patientRepository.FirstOrDefaultAsync(f => f.Id == patientRegisterEnt.PatientId); if (patientEnt != null) { if (!string.IsNullOrWhiteSpace(input.PatientName)) { patientEnt.DisplayName = input.PatientName; patientRegisterEnt.PatientName = input.PatientName; } if (!string.IsNullOrWhiteSpace(input.IdNo)) { patientEnt.IdNo = input.IdNo; } if (!string.IsNullOrWhiteSpace(input.MobileTelephone)) { patientEnt.MobileTelephone = input.MobileTelephone; }
await _patientRepository.UpdateAsync(patientEnt, true); await _repository.UpdateAsync(patientRegisterEnt, true); }
msg = await GetPatientRegisterOrNo(patientRegisterEnt.Id); return msg; }
/// <summary>
/// 批量修改人员 备注、体检类别、人员类别
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/PatientRegister/BatchUpdatePatientRegisterInfoByPatientRegisterId")] public async Task BatchUpdatePatientRegisterInfoByPatientRegisterIdAsync(BatchUpdatePatientRegisterInfoByPatientRegisterIdInputDto input) { if (!input.PatientRegisterIds.Any()) { throw new UserFriendlyException("人员id不能为空"); }
foreach (var item in input.PatientRegisterIds) { var patientRegister = await _repository.FirstOrDefaultAsync(f => f.Id == item); if (patientRegister != null) { if (!string.IsNullOrWhiteSpace(input.Remark)) { patientRegister.Remark = input.Remark; }
if (input.PersonnelTypeId != null) { patientRegister.PersonnelTypeId = input.PersonnelTypeId; }
if (input.MedicalTypeId != null) { patientRegister.MedicalTypeId = input.MedicalTypeId; }
await _repository.UpdateAsync(patientRegister); } } }
/// <summary>
/// 批量领取报告 取消领取
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/PatientRegister/BatchUpdatePatientRegisterReportReceive")] public async Task BatchUpdatePatientRegisterReportReceiveAsync(BatchUpdatePatientRegisterReportReceiveInputDto input) { if (!input.PatientRegisterIds.Any()) { throw new UserFriendlyException("未选择人员Id"); }
List<PatientRegister> patientRegisters = new List<PatientRegister>();
var idPage = (input.PatientRegisterIds.Count / 200) + 1;
for (int i = 0; i < idPage; i++) { List<Guid> ids = input.PatientRegisterIds.Skip(i).Take(200).ToList(); var patientRegisterList = await _repository.GetListAsync(m => ids.Contains(m.Id)); patientRegisters.AddRange(patientRegisterList); }
patientRegisters = patientRegisters.Distinct().ToList();
foreach (var item in patientRegisters) { if (input.IsReceiveReport == 'Y') { item.IsReceiveReport = 'Y'; item.ReportReceiveDate = DateTime.Now; item.ReportReceiveName = input.ReportReceiveName; } else { item.IsReceiveReport = 'N'; item.ReportReceiveDate = DateTime.Now; item.ReportReceiveName = ""; } }
await _repository.UpdateManyAsync(patientRegisters); }
private async Task UpdateRegisterChecks(CreateRegisterCheckAsbitemEntity createRegisterCheckAsbitemEntity) { if (createRegisterCheckAsbitemEntity == null) { throw new UserFriendlyException("createRegisterCheckAsbitemEntity未赋值"); }
await _registerCheckItemRepository.DeleteManyAsync(createRegisterCheckAsbitemEntity.DeleteRegisterCheckItems); await _registerCheckAsbitemRepository.DeleteManyAsync(createRegisterCheckAsbitemEntity.DeleteRegisterCheckAsbitems); await _registerCheckRepository.DeleteManyAsync(createRegisterCheckAsbitemEntity.DeleteRegisterChecks);
await _registerCheckItemRepository.UpdateManyAsync(createRegisterCheckAsbitemEntity.UpdateRegisterCheckItems); await _registerCheckAsbitemRepository.UpdateManyAsync(createRegisterCheckAsbitemEntity.UpdateRegisterCheckAsbitems); await _registerCheckRepository.UpdateManyAsync(createRegisterCheckAsbitemEntity.UpdateRegisterChecks);
await _registerCheckRepository.InsertManyAsync(createRegisterCheckAsbitemEntity.NewRegisterChecks); await _registerCheckAsbitemRepository.InsertManyAsync(createRegisterCheckAsbitemEntity.NewRegisterCheckAsbitems); await _registerCheckItemRepository.InsertManyAsync(createRegisterCheckAsbitemEntity.NewRegisterCheckItems); }
private async Task<char> GetMaritalStatusIdByName(string name) { if (string.IsNullOrWhiteSpace(name)) { return MaritalStatusFlag.UnKnown; } var entity = await _maritalStatusRepository.FirstOrDefaultAsync(m => m.DisplayName == name.Trim()); if (entity != null) { return entity.Id; } else { throw new UserFriendlyException($"{name}是无效婚姻状况名称"); }
}
private async Task<Guid?> GetBirthPlaceIdByName(string name) { if (string.IsNullOrWhiteSpace(name)) { return null; } var entity = await _birthPlaceRepository.FirstOrDefaultAsync(m => m.DisplayName == name.Trim()); if (entity != null) { return entity.Id; } else { throw new UserFriendlyException($"{name}是无效出生地名称"); }
}
private async Task<string> GetNationIdByName(string name) { if (string.IsNullOrWhiteSpace(name)) { return null; } var entity = await _nationRepository.FirstOrDefaultAsync(m => m.DisplayName == name.Trim()); if (entity != null) { return entity.Id; } else { throw new UserFriendlyException($"{name}是无效民族名称"); }
}
private async Task<char> GetSexIdByName(string name) { if (string.IsNullOrWhiteSpace(name)) { return SexFlag.UnKnown; } var entity = await _sexRepository.FirstOrDefaultAsync(m => m.DisplayName == name.Trim()); if (entity != null) { return entity.Id; } else { throw new UserFriendlyException($"{name}是无效性别名称"); }
}
private async Task<Guid?> GetMedicalTypeIdByName(string name) { if (string.IsNullOrWhiteSpace(name)) { return null; } var entity = await _medicalTypeRepository.FirstOrDefaultAsync(m => m.DisplayName == name.Trim()); if (entity != null) { return entity.Id; } else { throw new UserFriendlyException($"{name}是无效体检类别名称"); }
}
private async Task<Guid?> GetPersonnelTypeIdByName(string name) { if (string.IsNullOrWhiteSpace(name)) { return null; } var entity = await _personnelTypeRepository.FirstOrDefaultAsync(m => m.DisplayName == name.Trim()); if (entity != null) { return entity.Id; } else { throw new UserFriendlyException($"{name}是无效人员类别名称"); }
} private async Task<Guid?> GetCustomerOrgIdByName(Guid customerOrgId, string name, char IsAutoCreateDepartment = 'N') { if (string.IsNullOrWhiteSpace(name)) { return null; } if (customerOrgId == Guid.Empty) { throw new UserFriendlyException($"单位不能为空"); } var departmentent = await _customerOrgRepository.FirstOrDefaultAsync(m => m.ParentId == customerOrgId && m.DisplayName == name); //当前单位下一级
if (departmentent != null) { return departmentent.Id; //找到部门,单位ID为下级的部门ID
} if (IsAutoCreateDepartment != 'Y') { throw new UserFriendlyException($"{name}是无效部门名称"); } var parentCustomerOrgEnt = await _customerOrgRepository.FirstOrDefaultAsync(m => m.Id == customerOrgId); //当前单位
if (parentCustomerOrgEnt == null) { throw new UserFriendlyException($"根据单位ID未找到单位"); } var customerOrg_Insert = new CustomerOrg { Accounts = parentCustomerOrgEnt.Accounts, Address = parentCustomerOrgEnt.Address, Bank = parentCustomerOrgEnt.Bank, DisplayName = name, Fax = parentCustomerOrgEnt.Fax, InvoiceName = parentCustomerOrgEnt.InvoiceName, IsActive = parentCustomerOrgEnt.IsActive, IsLock = parentCustomerOrgEnt.IsLock, MedicalCenterId = parentCustomerOrgEnt.MedicalCenterId, OrgTypeId = parentCustomerOrgEnt.OrgTypeId, ParentId = parentCustomerOrgEnt.Id, PostalCode = parentCustomerOrgEnt.PostalCode, Remark = parentCustomerOrgEnt.Remark, ShortName = name.Length > 20 ? "" : name, Telephone = parentCustomerOrgEnt.Telephone };
var DepartmentEnt = await _customerOrgManager.CreateAsync(customerOrg_Insert);
var DepartmentReturn = await _customerOrgRepository.InsertAsync(DepartmentEnt, true);
#region 更新缓存版本
var versonNo = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); _cacheService.SetDataVersonCache("customer_three", versonNo); #endregion
return DepartmentReturn.Id; }
private async Task<Guid?> GetCustomerOrgGroupIdByName(Guid customerOrgRegisterId, string name) { if (string.IsNullOrWhiteSpace(name)) { return null; } var CustomerOrgGroupEnt = await _customerOrgGroupRepository.FirstOrDefaultAsync(m => m.DisplayName == name && m.CustomerOrgRegisterId == customerOrgRegisterId); if (CustomerOrgGroupEnt == null) { throw new UserFriendlyException($"{name}是无效分组名称"); } return CustomerOrgGroupEnt.Id;
} private DateTime? GetBirthDateByString(string name) { if (string.IsNullOrWhiteSpace(name)) { return null; } if (DateTime.TryParse(name, out var date)) { return date; } return null;
} }}
|