|
|
using Castle.Core.Logging;using Microsoft.AspNetCore.Authorization;using Microsoft.AspNetCore.Mvc;using Microsoft.EntityFrameworkCore;using Microsoft.Extensions.Logging;using Shentun.Peis.CommonCharTypes;using Shentun.Peis.CustomerOrgRegisters;using Shentun.Peis.CustomerOrgs;using Shentun.Peis.Enums;using Shentun.Peis.Models;using Shentun.Peis.Patients;using Shentun.Peis.RegisterAsbitems;using Shentun.Peis.RegisterChecks;using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Security;using System.Threading.Tasks;using TencentCloud.Cwp.V20180228.Models;using TencentCloud.Mps.V20190612.Models;using TencentCloud.Npp.V20190823.Models;using Volo.Abp;using Volo.Abp.Application.Dtos;using Volo.Abp.Application.Services;using Volo.Abp.Domain.Repositories;using Volo.Abp.Identity;using Volo.Abp.ObjectMapping;
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<RegisterAsbitem, Guid> _registerAsbitemRepository; private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository; private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository; private readonly IRepository<Item, Guid> _itemRepository; private readonly IPatientRegisterChargeRepository _patientRegisterChargeRepository; private readonly ILogger<PatientRegisterAppService> _logger; private readonly CustomerOrgManager _customerOrgManager; private readonly CustomerOrgRegisterManager _customerOrgRegisterManager; private readonly PatientManager _patientManager; private readonly PatientRegisterManager _patientRegisterManager; private readonly RegisterAsbitemManager _registerAsbitemManager;
//private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
//private readonly IRepository<PrimarykeyBuilder> _primarykeyBuilderRepository;
//private readonly IRepository<SysParmValue> _sysParmValueRepository;
private readonly PatientRegisterManager _manager; 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<RegisterAsbitem, Guid> registerAsbitemRepository, IRepository<RegisterCheck, Guid> registerCheckRepository, IRepository<RegisterCheckItem> registerCheckItemRepository, IRepository<Item, Guid> itemRepository, //IRepository<SysParmValue> sysParmValueRepository,
//IRepository<CustomerOrg, Guid> customerOrgRepository,
//IRepository<PrimarykeyBuilder> primarykeyBuilderRepository,
IPatientRegisterChargeRepository patientRegisterChargeRepository, ILogger<PatientRegisterAppService> logger, CustomerOrgManager customerOrgManager, CustomerOrgRegisterManager customerOrgRegisterManager, PatientManager patientManager, PatientRegisterManager patientRegisterManager, RegisterAsbitemManager registerAsbitemManager, PatientRegisterManager manager) : 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._registerAsbitemRepository = registerAsbitemRepository; this._registerCheckRepository = registerCheckRepository; this._registerCheckItemRepository = registerCheckItemRepository; 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;
_manager = manager; } /// <summary>
/// 获取通过主键
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public override async Task<PatientRegisterDto> GetAsync(Guid id) { return await base.GetAsync(id); }
/// <summary>
/// 编辑反写接口,包含档案表跟登记表的信息
/// </summary>
/// <param name="PatientRegisterId">登记表ID</param>
/// <returns></returns>
public async Task<PatientRegisterOrNoDto> GetInfoOrPatientAsync(Guid PatientRegisterId) { var ent = (await _repository.GetDbSetAsync()).Include(x => x.Patient).Where(m => m.Id == PatientRegisterId).FirstOrDefault();
var entdto = new PatientRegisterOrNoDto(); if (ent != null) { var userList = await _userRepository.GetListAsync();
entdto = new PatientRegisterOrNoDto { Age = ent.Age, AuditDate = ent.AuditDate.ToString(), Id = ent.Id, AuditDoctor = ent.AuditDoctor, BirthDate = ent.BirthDate.ToString(), 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 = ent.MedicalStartDate.ToString(), MedicalTimes = ent.MedicalTimes, MedicalTypeId = ent.MedicalTypeId, OrganizationUnitId = ent.OrganizationUnitId, 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 = ent.SummaryDate.ToString(), SummaryDoctor = ent.SummaryDoctor, ThirdInfo = ent.ThirdInfo, CreatorName = EntityHelper.GetUserNameNoSql(userList, ent.CreatorId), LastModifierName = EntityHelper.GetUserNameNoSql(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 = "", CustomerOrgParentName = "" }; } return entdto; }
/// <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 userList = await _userRepository.GetListAsync(); var customerOrgList = await _customerOrgRepository.GetListAsync();
//Stopwatch stopwatch = Stopwatch.StartNew();
//stopwatch.Start();
#region MyRegion
var entlist = (await _repository.GetDbSetAsync()).Include(x => x.Patient).AsQueryable();
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)) entlist = entlist.Where(m => !string.IsNullOrEmpty(m.PatientName) && m.PatientName.Contains(input.PatientName));
if (!string.IsNullOrEmpty(input.PatientRegisterNo)) entlist = entlist.Where(m => m.PatientRegisterNo == input.PatientRegisterNo);
if (input.SexId != null) if (input.SexId.ToString() != ForSexFlag.All) entlist = entlist.Where(m => m.SexId == input.SexId);
if (!string.IsNullOrEmpty(input.StartDate) && !string.IsNullOrEmpty(input.EndDate)) entlist = entlist.Where(m => m.CreationTime >= Convert.ToDateTime(input.StartDate) && m.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1));
if (input.CompleteFlag != null) entlist = entlist.Where(m => m.CompleteFlag == input.CompleteFlag);
if (input.CustomerOrgId != null && input.CustomerOrgId != Guid.Empty) { var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(input.CustomerOrgId.Value); entlist = entlist.Where(m => CustomerOrgIds.Contains(m.CustomerOrgId)); } #endregion
int totalCount = entlist.Count();
entlist = entlist.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount);
var entdto = entlist.Select(s => new PatientRegisterOrNoDto { CreationTime = s.CreationTime, CreatorId = s.CreatorId, Id = s.Id, LastModificationTime = s.LastModificationTime, LastModifierId = s.LastModifierId, ThirdInfo = s.ThirdInfo, SummaryDoctor = s.SummaryDoctor, SummaryDate = s.SummaryDate.ToString(), SexId = s.SexId, Age = s.Age, AuditDate = s.AuditDate.ToString(), AuditDoctor = s.AuditDoctor, BirthDate = s.BirthDate.ToString(), CompleteFlag = s.CompleteFlag, CustomerOrgGroupId = s.CustomerOrgGroupId, CustomerOrgId = s.CustomerOrgId, CustomerOrgRegisterId = s.CustomerOrgRegisterId, GuidePrintTimes = s.GuidePrintTimes, InterposeMeasure = s.InterposeMeasure, IsAudit = s.IsAudit, IsLock = s.IsLock, IsMedicalStart = s.IsMedicalStart, IsNameHide = s.IsNameHide, IsPhoneFollow = s.IsPhoneFollow, IsRecoverGuide = s.IsRecoverGuide, IsUpload = s.IsUpload, IsVip = s.IsVip, JobCardNo = s.JobCardNo, JobPost = s.JobPost, JobTitle = s.JobTitle, MaritalStatusId = s.MaritalStatusId, MedicalCardNo = s.MedicalCardNo, MedicalConclusionId = s.MedicalConclusionId, MedicalPackageId = s.MedicalPackageId, MedicalStartDate = s.MedicalStartDate.ToString(), MedicalTimes = s.MedicalTimes, MedicalTypeId = s.MedicalTypeId, OrganizationUnitId = s.OrganizationUnitId, PatientId = s.PatientId, PatientName = s.PatientName, PatientRegisterNo = s.PatientRegisterNo, PersonnelTypeId = s.PersonnelTypeId, Photo = s.Photo, Remark = s.Remark, ReportPrintTimes = s.ReportPrintTimes, Salesman = s.Salesman, SexHormoneTermId = s.SexHormoneTermId, CreatorName = EntityHelper.GetUserNameNoSql(userList, s.CreatorId), LastModifierName = EntityHelper.GetUserNameNoSql(userList, s.LastModifierId), Address = s.Patient.Address, //档案表信息
BirthPlaceId = s.Patient.BirthPlaceId, DisplayName = s.Patient.DisplayName, Email = s.Patient.Email, IdNo = s.Patient.IdNo, MobileTelephone = s.Patient.MobileTelephone, NationId = s.Patient.NationId, PatientNo = s.Patient.PatientNo, PatientPassword = s.Patient.PatientPassword, PostalCode = s.Patient.PostalCode, Telephone = s.Patient.Telephone, CustomerOrgName = EntityHelper.GetCustomerOrgNameNoSql(customerOrgList, s.CustomerOrgId), CustomerOrgParentId = EntityHelper.GetParentNoSql(customerOrgList, s.CustomerOrgId), CustomerOrgParentName = EntityHelper.GetCustomerOrgParentNameNoSql(customerOrgList, s.CustomerOrgId) }).ToList();
return new PagedResultDto<PatientRegisterOrNoDto>(totalCount, entdto); //return entdto;
//stopwatch.Stop();
//var s2 = stopwatch.ElapsedMilliseconds;
//return entdto.Take(100).ToList();
}
/// <summary>
/// 获取档案登记信息 根据档案号或者条码号(档案号条件返回最新的一条)
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<PatientRegisterOrNoDto> GetPatientRegisterOrPatientAsync(GetPatientRegisterOrPatientDto input) { var entdto = new PatientRegisterOrNoDto();
#region MyRegion
var entlist = (await _repository.GetDbSetAsync()).Include(x => x.Patient).ToList();
if (input.SType == 1) entlist = entlist.Where(m => m.PatientRegisterNo == input.PatientRegisterNo).ToList(); else entlist = entlist.Where(m => m.Patient.PatientNo == input.PatientNo).OrderByDescending(o => o.MedicalTimes).ToList();
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, SummaryDoctor = ent.SummaryDoctor, SummaryDate = ent.SummaryDate.ToString(), SexId = ent.SexId, Age = ent.Age, AuditDate = ent.AuditDate.ToString(), AuditDoctor = ent.AuditDoctor, BirthDate = ent.BirthDate.ToString(), 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 = ent.MedicalStartDate.ToString(), MedicalTimes = ent.MedicalTimes, MedicalTypeId = ent.MedicalTypeId, OrganizationUnitId = ent.OrganizationUnitId, 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.GetUserNameNoSql(userList, ent.CreatorId), LastModifierName = EntityHelper.GetUserNameNoSql(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>
//[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/createreturninfo")] public async Task<PatientRegisterOrNoDto> CreateReturnInfoAsync(CreatePatientRegisterDto input) { PatientRegisterOrNoDto msg = new PatientRegisterOrNoDto();
var createEntity = ObjectMapper.Map<CreatePatientRegisterDto, PatientRegister>(input); var createPatientEntity = ObjectMapper.Map<CreatePatientRegisterDto, Patient>(input); var entity = await _manager.CreateAsync(createEntity, createPatientEntity, input.IsMaxMedicalTimes); if (entity != null) { msg = await GetPatientRegisterOrNo(entity.Id);
} return msg; }
/// <summary>
/// 更新
/// </summary>
/// <param name="PatientRegisterId">登记表ID</param>
/// <param name="input">更新参数(包含档案跟登记)</param>
/// <returns></returns>
[HttpPost("api/patientregister/updatepatientregister")] public async Task<PatientRegisterDto> UpdatePatientRegisterAsync(Guid PatientRegisterId, UpdatePatientRegisterDto input) { var patientRegisterEnt = await Repository.GetAsync(PatientRegisterId); var patientEnt = await _patientrepository.GetAsync(input.PatientId);
var patientRegisterSourceEntity = ObjectMapper.Map<UpdatePatientRegisterDto, PatientRegister>(input); var patientSourceEntity = ObjectMapper.Map<UpdatePatientRegisterDto, Patient>(input); _patientManager.UpdateAsync(patientSourceEntity, patientEnt); _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 = "UpLoad/" + 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>
public override async Task DeleteAsync(Guid id) { await _manager.CheckAndDeleteAsync(id); }
/// <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 = DateOnly.FromDateTime(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="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);
return ObjectMapper.Map<PatientRegister, PatientRegisterDto>(newentity); }
/// <summary>
/// 更改总检检查医生信息(保存时,医生跟日期不传时取默认登录的用户跟当前时间;取消时,如果不传就不更新医生跟日期,只更新状态)
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/updatepatientregistersummarydoctor")] public async Task<PatientRegisterDto> UpdatePatientRegisterSummaryDoctorAsync(UpdatePatientRegisterSummaryDoctorDto input) { if (input == null || input.PatientRegisterId == Guid.Empty) { throw new UserFriendlyException("请求参数有误"); }
var entity = await _repository.GetAsync(input.PatientRegisterId); var entitydto = ObjectMapper.Map<UpdatePatientRegisterSummaryDoctorDto, PatientRegister>(input); var newentity = await _manager.UpdatePatientRegisterSummaryDoctorAsync(entitydto, entity);
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 = (f.GuidePrintTimes == null ? (short?)1 : (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)); entlist.ForEach(f => f.ReportPrintTimes = (f.ReportPrintTimes == null ? (short?)1 : (short?)(f.ReportPrintTimes + 1))); }
/// <summary>
/// 导入体检名单操作
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/createpatientregisterexcel")] public async Task<ResultDto> CreatePatientRegisterExcelAsync(CreatePatientRegisterExcelDto input) {
ResultDto msg;
if (input != null) { //自动创建部门
#region 转换性别、出生地、婚姻状况、民族数据、单位分组、人员类别、体检类别、性激素期限
//转换性别ID
char? SexId = null; if (!DateHelper.IsNullOrEmpty(input.SexName)) { var SexEnt = await _sexRepository.FindAsync(m => m.DisplayName == input.SexName); if (SexEnt != null) { SexId = SexEnt.Id; } else { return new ResultDto { code = -1, msg = "[数据:" + input.PatientName + "]=>" + "性别不存在" }; } }
//出生地
Guid? BirthPlaceId = null; if (!DateHelper.IsNullOrEmpty(input.BirthPlaceName)) { var BirthPlaceEnt = await _birthPlaceRepository.FindAsync(m => m.DisplayName == input.BirthPlaceName); if (BirthPlaceEnt != null) { BirthPlaceId = BirthPlaceEnt.Id; } else { return new ResultDto { code = -1, msg = "[数据:" + input.PatientName + "]=>" + "出生地不存在" }; } }
//婚姻状况
char? MaritalStatusId = null; if (!DateHelper.IsNullOrEmpty(input.MaritalStatusName)) { var MaritalStatusEnt = await _maritalStatusRepository.FindAsync(m => m.DisplayName == input.MaritalStatusName); if (MaritalStatusEnt != null) { MaritalStatusId = MaritalStatusEnt.Id; } else { return new ResultDto { code = -1, msg = "[数据:" + input.PatientName + "]=>" + "婚姻状况不存在" }; } }
//民族
string? NationId = null; if (!DateHelper.IsNullOrEmpty(input.NationName)) { var NationEnt = await _nationRepository.FindAsync(m => m.DisplayName == input.NationName); if (NationEnt != null) { NationId = NationEnt.NationId; } else { return new ResultDto { code = -1, msg = "[数据:" + input.PatientName + "]=>" + "民族不存在" }; } }
//单位分组
Guid? CustomerOrgGroupId = null; if (!DateHelper.IsNullOrEmpty(input.CustomerOrgGroupName)) { var CustomerOrgGroupEnt = await _customerOrgGroupRepository.FindAsync(m => m.DisplayName == input.CustomerOrgGroupName); if (CustomerOrgGroupEnt != null) { CustomerOrgGroupId = CustomerOrgGroupEnt.Id; } else { return new ResultDto { code = -1, msg = "[数据:" + input.PatientName + "]=>" + "单位分组不存在" }; } }
//体检类别
Guid? MedicalTypeId = null; if (!DateHelper.IsNullOrEmpty(input.MedicalTypeName)) { var MedicalTypeEnt = await _medicalTypeRepository.FindAsync(m => m.DisplayName == input.MedicalTypeName); if (MedicalTypeEnt != null) { MedicalTypeId = MedicalTypeEnt.Id; } else { return new ResultDto { code = -1, msg = "[数据:" + input.PatientName + "]=>" + "体检类别不存在" }; } }
//人员类别
Guid? PersonnelTypeId = null; if (!DateHelper.IsNullOrEmpty(input.PersonnelTypeName)) { var PersonnelTypeEnt = await _personnelTypeRepository.FindAsync(m => m.DisplayName == input.PersonnelTypeName); if (PersonnelTypeEnt != null) { PersonnelTypeId = PersonnelTypeEnt.Id; } else { return new ResultDto { code = -1, msg = "[数据:" + input.PatientName + "]=>" + "人员类别不存在" }; } }
//性激素期限
Guid? SexHormoneTermId = null; if (!DateHelper.IsNullOrEmpty(input.SexHormoneTermName)) { var SexHormoneTermEnt = await _sexHormoneTermRepository.FindAsync(m => m.DisplayName == input.SexHormoneTermName); if (SexHormoneTermEnt != null) { SexHormoneTermId = SexHormoneTermEnt.Id; } else { return new ResultDto { code = -1, msg = "[数据:" + input.PatientName + "]=>" + "性激素期限不存在" }; } }
//支付方式
string? PayModeId = null; if (!DateHelper.IsNullOrEmpty(input.PayTypeFlag)) { var PayModeEnt = await _payModeRepository.FindAsync(m => m.DisplayName == input.PayTypeFlag); if (PayModeEnt != null) { PayModeId = PayModeEnt.Id; } else { return new ResultDto { code = -1, msg = "[数据:" + input.PatientName + "]=>" + "支付方式不存在" }; } }
#endregion
Guid PatientId = Guid.Empty;
#region 判断重名逻辑 先不判断 直接生成新的
#endregion
#region 生成档案信息
var createPatientEntity = new Patient { Address = input.Address, BirthDate = PageHelper.ConvertDate(input.BirthDate), Telephone = input.Telephone, SexId = SexId, BirthPlaceId = BirthPlaceId, DisplayName = input.PatientName, IdNo = input.IdNo, Email = input.Email, MaritalStatusId = MaritalStatusId, MobileTelephone = input.MobileTelephone, NationId = NationId, // PatientNo = input.PatientNo,
PatientPassword = "", PostalCode = input.PostalCode };
if (input.IsAutoCreatePatientNo == 'Y') { //根据工卡号生成档案号
if (DateHelper.IsNullOrEmpty(input.JobCardNo)) { return new ResultDto { code = -1, msg = "[数据:" + input.PatientName + "]=>" + "工卡号不能为空" }; } else {
if (input.JobCardNo.Trim().Length >= input.CardStartNum + input.CardLength) { string PatientNo = input.JobCardNo.Trim().Substring(input.CardStartNum, input.CardLength); //截取工卡号做档案号
createPatientEntity.PatientNo = PatientNo;
var PatientEnt_New = await _patientrepository.InsertAsync(createPatientEntity, true); if (PatientEnt_New != null) PatientId = PatientEnt_New.Id; } else { return new ResultDto { code = -1, msg = "[数据:" + input.PatientName + "]=>" + "工卡号长度不够" }; }
} } else { var PatientEnt_New = await _patientManager.CreateAsync(input.OrganizationUnitId.Value, createPatientEntity); if (PatientEnt_New != null) PatientId = PatientEnt_New.Id; } #endregion
#region 部门判断 需要生成的进行生成,更新单位ID
//_customerOrgRepository
if (!DateHelper.IsNullOrEmpty(input.DepartmentName)) { var departmentent = await _customerOrgRepository.FindAsync(m => m.ParentId == input.CustomerOrgId && m.DisplayName == input.DepartmentName); //当前单位下一级
if (departmentent != null) { input.CustomerOrgId = departmentent.Id; //找到部门,单位ID为下级的部门ID
} else { if (input.IsAutoCreateDepartment == 'Y') {
var parentCustomerOrgEnt = await _customerOrgRepository.FindAsync(m => m.Id == input.CustomerOrgId); //当前单位下一级
if (parentCustomerOrgEnt != null) { var customerOrg_Insert = new CustomerOrg { Accounts = parentCustomerOrgEnt.Accounts, Address = parentCustomerOrgEnt.Address, Bank = parentCustomerOrgEnt.Bank, DisplayName = input.DepartmentName, Fax = parentCustomerOrgEnt.Fax, InvoiceName = parentCustomerOrgEnt.InvoiceName, IsActive = parentCustomerOrgEnt.IsActive, IsLock = parentCustomerOrgEnt.IsLock, OrganizationUnitId = parentCustomerOrgEnt.OrganizationUnitId, //DisplayOrder = parentCustomerOrgEnt.DisplayOrder,
OrgTypeId = parentCustomerOrgEnt.OrgTypeId, ParentId = parentCustomerOrgEnt.ParentId, // PathCode = parentCustomerOrgEnt.PathCode,
PostalCode = parentCustomerOrgEnt.PostalCode, Remark = parentCustomerOrgEnt.Remark, ShortName = parentCustomerOrgEnt.ShortName, // SimpleCode = parentCustomerOrgEnt.SimpleCode,
Telephone = parentCustomerOrgEnt.Telephone };
var DepartmentEnt = await _customerOrgManager.CreateAsync(customerOrg_Insert);
var DepartmentReturn = await _customerOrgRepository.InsertAsync(DepartmentEnt, true);
if (DepartmentReturn != null) { input.CustomerOrgId = DepartmentReturn.Id; //单位ID转为 生成的部门ID
}
}
} }
} #endregion
#region 获取单位体检次数 根据单位ID 转换为一级单位ID
Guid CustomerOrgParentId = EntityHelper.GetParentNoSql(await _customerOrgRepository.GetListAsync(), input.CustomerOrgId); //一级单位ID
Guid CustomerOrgRegisterId = Guid.Empty; //最新单位次数ID
if (CustomerOrgParentId != Guid.Empty) { var customerOrgRegisterEnt = await _customerOrgRegisterManager.GetMaxAsync(CustomerOrgParentId); if (customerOrgRegisterEnt != null) CustomerOrgRegisterId = customerOrgRegisterEnt.Id; } #endregion
var createPatientRegisterEntity = new PatientRegister { Age = input.Age, AuditDate = PageHelper.ConvertDate(input.AuditDate), AuditDoctor = input.AuditDoctor, BirthDate = PageHelper.ConvertDate(input.BirthDate), CompleteFlag = input.CompleteFlag, CustomerOrgGroupId = CustomerOrgGroupId, CustomerOrgId = input.CustomerOrgId, CustomerOrgRegisterId = CustomerOrgRegisterId, GuidePrintTimes = input.GuidePrintTimes, InterposeMeasure = input.InterposeMeasure, IsAudit = input.IsAudit, IsLock = input.IsLock, IsMedicalStart = input.IsMedicalStart, IsNameHide = input.IsNameHide, IsPhoneFollow = input.IsPhoneFollow, IsRecoverGuide = input.IsRecoverGuide, IsUpload = input.IsUpload, IsVip = input.IsVip, JobCardNo = input.JobCardNo, JobPost = input.JobPost, JobTitle = input.JobTitle, MaritalStatusId = MaritalStatusId, MedicalCardNo = input.MedicalCardNo, MedicalConclusionId = input.MedicalConclusionId, MedicalPackageId = null, MedicalStartDate = PageHelper.ConvertDate(input.MedicalStartDate), MedicalTimes = 1, MedicalTypeId = MedicalTypeId, OrganizationUnitId = input.OrganizationUnitId, PatientId = PatientId, PatientName = input.PatientName, PatientRegisterNo = await _patientRegisterManager.CreatePatientRegisterNo(input.OrganizationUnitId.Value), PersonnelTypeId = PersonnelTypeId, Photo = input.Photo, Remark = input.Remark, ReportPrintTimes = input.ReportPrintTimes, Salesman = input.Salesman, SexHormoneTermId = SexHormoneTermId, SexId = SexId, SummaryDate = PageHelper.ConvertDate(input.SummaryDate), SummaryDoctor = input.SummaryDoctor, ThirdInfo = input.ThirdInfo };
var patientRegisterEntity_New = await _repository.InsertAsync(createPatientRegisterEntity, true); if (patientRegisterEntity_New != null) { #region 导入registerasbitem相关数据
//生成registerasbitem数据 根据登记Id和单位分组Id
var customerOrgGroupDetailList = (await _customerOrgGroupDetailRepository.GetDbSetAsync()).Include(x => x.Asbitem) .Where(m => m.CustomerOrgGroupId == CustomerOrgGroupId) .Select(s => new RegisterAsbitem { Amount = 1, AsbitemId = s.AsbitemId, ChargePrice = s.Price, GroupPackageId = CustomerOrgGroupId, IsCharge = 'N', PatientRegisterId = patientRegisterEntity_New.Id, PayTypeFlag = PayModeId, StandardPrice = s.Asbitem.Price }).ToList();
foreach (var item in customerOrgGroupDetailList) { await _registerAsbitemManager.CreateAsync(input.OrganizationUnitId.Value, item, true); }
#endregion
msg = new ResultDto { code = 1, msg = "[数据:" + input.PatientName + "]=>" + "导入成功" }; } else { msg = new ResultDto { code = 1, msg = "[数据:" + input.PatientName + "]=>" + "导入失败" }; }
} else { msg = new ResultDto { code = -1, msg = "[数据:" + input.PatientName + "]=>" + "请求参数有误" }; }
return msg; }
#region 调整分组
/// <summary>
/// 调整体检人员分组
/// </summary>
/// <returns></returns>
[HttpPost("api/app/patientregister/updatepatientregistercustomerorggroup")] public async Task UpdatePatientRegisterCustomerOrgGroupAsync(UpdatePatientRegisterCustomerOrgGroupDto input) { //当前人员信息
var patientRegisterEnt = (await _repository.GetDbSetAsync()) .Include(x => x.RegisterAsbitems) .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 == '3') { 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.RegisterAsbitems; //当前登记的组合项目
if (registerAsbitem.Any()) { //删除操作
List<RegisterAsbitem> ReserveList = new List<RegisterAsbitem>(); //保留项目
List<RegisterAsbitem> DeleteList = new List<RegisterAsbitem>(); //删除项目
foreach (var item in registerAsbitem) { //判断是否为已收费、已检、弃检
if (item.IsCharge == 'Y' || item.RegisterCheck.CompleteFlag != '0') { //保留
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 _registerAsbitemRepository.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 _registerAsbitemRepository.UpdateManyAsync(ReserveList); //修改保留项目的分组
}
if (newGroupAsbitemList.Any()) { //需要处理的新分组下的数据 重复的已剔除
var newRegisterAsbitemList = newGroupAsbitemList.Select(s => new RegisterAsbitem { 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.OrganizationUnitId.Value, item, true); }
}
patientRegisterEnt.CustomerOrgGroupId = input.CustomerOrgGroupId; await _repository.UpdateAsync(patientRegisterEnt); } else { throw new UserFriendlyException("人员不存在"); } }
#endregion
#region 登记完返回的数据
private async Task<PatientRegisterOrNoDto> GetPatientRegisterOrNo(Guid PatientRegisterId) { // var entold = await _repository.GetAsync(PatientRegisterId);
var ent = (await _repository.GetDbSetAsync()).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) { var userList = await _userRepository.GetListAsync();
entdto = new PatientRegisterOrNoDto { Age = ent.Age, AuditDate = ent.AuditDate.ToString(), Id = ent.Id, AuditDoctor = ent.AuditDoctor, BirthDate = ent.BirthDate.ToString(), 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 = ent.MedicalStartDate.ToString(), MedicalTimes = ent.MedicalTimes, MedicalTypeId = ent.MedicalTypeId, OrganizationUnitId = ent.OrganizationUnitId, 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 = ent.SummaryDate.ToString(), SummaryDoctor = ent.SummaryDoctor, ThirdInfo = ent.ThirdInfo, CreatorName = EntityHelper.GetUserNameNoSql(userList, ent.CreatorId), LastModifierName = EntityHelper.GetUserNameNoSql(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 = "", CustomerOrgParentName = "" }; } 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) { 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 _registerAsbitemRepository.GetDbSetAsync()) .Include(x => x.Asbitem) .Include(x => x.RegisterCheck) .Where(m => m.PatientRegisterId == PatientRegisterId && m.RegisterCheck.CompleteFlag == '0').OrderBy(o => o.Asbitem.DisplayOrder).Select(s => s.Asbitem.DisplayName).ToList();
//弃检检组合项目
var GiveUpAsbitem = (await _registerAsbitemRepository.GetDbSetAsync()) .Include(x => x.Asbitem) .Include(x => x.RegisterCheck) .Where(m => m.PatientRegisterId == PatientRegisterId && m.RegisterCheck.CompleteFlag == '2').OrderBy(o => o.Asbitem.DisplayOrder).Select(s => s.Asbitem.DisplayName).ToList();
//组合项目已检,项目无明细的项目
var registerAsbItemQueryable = await _registerAsbitemRepository.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 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 && string.IsNullOrEmpty(a.Result) && b.CompleteFlag == '1') 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 == '1' && !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
}}
|