You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1597 lines
71 KiB
1597 lines
71 KiB
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
|
|
|
|
}
|
|
}
|