Browse Source

打印指引单

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
85156ddff5
  1. 131
      src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs
  2. 5
      src/Shentun.Peis.EntityFrameworkCore/PrintReports/PatientRegisterGuideReportRepository.cs

131
src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs

@ -1,8 +1,10 @@
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using NPOI.POIFS.Properties; using NPOI.POIFS.Properties;
using NUglify.Helpers; using NUglify.Helpers;
using Shentun.Peis.AsbitemGuides;
using Shentun.Peis.Enums; using Shentun.Peis.Enums;
using Shentun.Peis.LisRequests; using Shentun.Peis.LisRequests;
using Shentun.Peis.Models; using Shentun.Peis.Models;
@ -34,6 +36,7 @@ namespace Shentun.Peis.PrintReports
public class PrintReportAppService : ApplicationService public class PrintReportAppService : ApplicationService
{ {
private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository; private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
private readonly IRepository<CustomerOrgGroup, Guid> _customerOrgGroupRepository;
private readonly IRepository<Patient, Guid> _patientRepository; private readonly IRepository<Patient, Guid> _patientRepository;
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository; private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository; private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
@ -42,6 +45,7 @@ namespace Shentun.Peis.PrintReports
private readonly IRepository<RegisterCheckPicture, Guid> _registerCheckPictureRepository; private readonly IRepository<RegisterCheckPicture, Guid> _registerCheckPictureRepository;
private readonly IRepository<Asbitem, Guid> _asbitemRepository; private readonly IRepository<Asbitem, Guid> _asbitemRepository;
private readonly IRepository<Item, Guid> _itemRepository; private readonly IRepository<Item, Guid> _itemRepository;
private readonly IRepository<MedicalPackage, Guid> _medicalPackageRepository;
private readonly IRepository<MedicalReportType, char> _medicalReportTypeRepository; private readonly IRepository<MedicalReportType, char> _medicalReportTypeRepository;
private readonly IRepository<ItemType, Guid> _itemTypeRepository; private readonly IRepository<ItemType, Guid> _itemTypeRepository;
private readonly IRepository<LisRequest, Guid> _lisRequestRepository; private readonly IRepository<LisRequest, Guid> _lisRequestRepository;
@ -54,7 +58,9 @@ namespace Shentun.Peis.PrintReports
private readonly IRepository<IdentityUser, Guid> _identityUserRepository; private readonly IRepository<IdentityUser, Guid> _identityUserRepository;
private readonly IRepository<SumSuggestionHeader, Guid> _sumSuggestionHeaderRepository; private readonly IRepository<SumSuggestionHeader, Guid> _sumSuggestionHeaderRepository;
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository; private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
private readonly IOrganizationUnitRepository _organizationUnitRepository;
private readonly IRepository<PersonnelType, Guid> _personnelTypeRepository;
//private readonly IOrganizationUnitRepository _organizationUnitRepository;
private readonly IRepository<OrganizationUnit, Guid> _organizationUnitRepository;
private readonly IPatientRegisterGuideReportRepository _patientRegisterGuideReportRepository; private readonly IPatientRegisterGuideReportRepository _patientRegisterGuideReportRepository;
private readonly ILisRequestReportRepository _lisRequestReportRepository; private readonly ILisRequestReportRepository _lisRequestReportRepository;
private readonly ICheckRequestNoReportRepository _checkRequestNoReportRepository; private readonly ICheckRequestNoReportRepository _checkRequestNoReportRepository;
@ -63,9 +69,12 @@ namespace Shentun.Peis.PrintReports
private readonly CacheService _cacheService; private readonly CacheService _cacheService;
private readonly LisRequestManager _lisRequestManager; private readonly LisRequestManager _lisRequestManager;
private readonly IUnitOfWorkManager _unitOfWorkManager; private readonly IUnitOfWorkManager _unitOfWorkManager;
private static AsbitemGuideManager _asbitemGuideManager;
private readonly IConfiguration _configuration;
public PrintReportAppService( public PrintReportAppService(
IRepository<Patient, Guid> patientRepository, IRepository<Patient, Guid> patientRepository,
IRepository<CustomerOrg, Guid> customerOrgRepository, IRepository<CustomerOrg, Guid> customerOrgRepository,
IRepository<CustomerOrgGroup, Guid> customerOrgGroupRepository,
IRepository<PatientRegister, Guid> patientRegisterRepository, IRepository<PatientRegister, Guid> patientRegisterRepository,
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository, IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
IRepository<RegisterCheckItem> registerCheckItemRepository, IRepository<RegisterCheckItem> registerCheckItemRepository,
@ -73,6 +82,7 @@ namespace Shentun.Peis.PrintReports
IRepository<RegisterCheckPicture, Guid> registerCheckPictureRepository, IRepository<RegisterCheckPicture, Guid> registerCheckPictureRepository,
IRepository<Asbitem, Guid> asbitemRepository, IRepository<Asbitem, Guid> asbitemRepository,
IRepository<Item, Guid> itemRepository, IRepository<Item, Guid> itemRepository,
IRepository<MedicalPackage, Guid> medicalPackageRepository,
IRepository<MedicalReportType, char> medicalReportTypeRepository, IRepository<MedicalReportType, char> medicalReportTypeRepository,
IRepository<ItemType, Guid> itemTypeRepository, IRepository<ItemType, Guid> itemTypeRepository,
IRepository<LisRequest, Guid> lisRequestRepository, IRepository<LisRequest, Guid> lisRequestRepository,
@ -80,20 +90,25 @@ namespace Shentun.Peis.PrintReports
IRepository<SampleContainer, Guid> sampleContainerRepository, IRepository<SampleContainer, Guid> sampleContainerRepository,
IRepository<SampleType, Guid> sampleTypeRepository, IRepository<SampleType, Guid> sampleTypeRepository,
IRepository<Sex> sexRegisterRepository, IRepository<Sex> sexRegisterRepository,
IRepository<PersonnelType,Guid> personnelTypeRepository,
IRepository<ResultStatus> resultStatusRepository, IRepository<ResultStatus> resultStatusRepository,
IRepository<SumSummaryHeader, Guid> sumSummaryHeaderRepository, IRepository<SumSummaryHeader, Guid> sumSummaryHeaderRepository,
IRepository<IdentityUser, Guid> identityUserRepository, IRepository<IdentityUser, Guid> identityUserRepository,
IRepository<SumSuggestionHeader, Guid> sumSuggestionHeaderRepository, IRepository<SumSuggestionHeader, Guid> sumSuggestionHeaderRepository,
IRepository<RegisterCheck, Guid> registerCheckRepository, IRepository<RegisterCheck, Guid> registerCheckRepository,
IOrganizationUnitRepository organizationUnitRepository,
//IOrganizationUnitRepository organizationUnitRepository,
IRepository<OrganizationUnit, Guid> organizationUnitRepository,
IPatientRegisterGuideReportRepository patientRegisterGuideReportRepository, IPatientRegisterGuideReportRepository patientRegisterGuideReportRepository,
ILisRequestReportRepository lisRequestReportRepository, ILisRequestReportRepository lisRequestReportRepository,
ICheckRequestNoReportRepository checkRequestNoReportRepository, ICheckRequestNoReportRepository checkRequestNoReportRepository,
IChargeReportRepository chargeReportRepository, IChargeReportRepository chargeReportRepository,
SysParmValueManager sysParmValueManager, SysParmValueManager sysParmValueManager,
CacheService cacheService, CacheService cacheService,
LisRequestManager lisRequestManager, LisRequestManager lisRequestManager,
IUnitOfWorkManager unitOfWorkManager
IUnitOfWorkManager unitOfWorkManager,
AsbitemGuideManager asbitemGuideManager,
IConfiguration configuration
) )
{ {
this._customerOrgRepository = customerOrgRepository; this._customerOrgRepository = customerOrgRepository;
@ -126,6 +141,12 @@ namespace Shentun.Peis.PrintReports
_lisRequestManager = lisRequestManager; _lisRequestManager = lisRequestManager;
_unitOfWorkManager = unitOfWorkManager; _unitOfWorkManager = unitOfWorkManager;
_patientRepository = patientRepository; _patientRepository = patientRepository;
_asbitemGuideManager = asbitemGuideManager;
_customerOrgGroupRepository = customerOrgGroupRepository;
_medicalPackageRepository = medicalPackageRepository;
_personnelTypeRepository = personnelTypeRepository;
_configuration = configuration;
_organizationUnitRepository = organizationUnitRepository;
} }
@ -137,7 +158,72 @@ namespace Shentun.Peis.PrintReports
[HttpPost("api/app/PrintReport/getpatientregisterguidereport")] [HttpPost("api/app/PrintReport/getpatientregisterguidereport")]
public async Task<PatientRegisterGuideReportDto> GetPatientRegisterGuideReportAsync(Guid PatientRegisterId) public async Task<PatientRegisterGuideReportDto> GetPatientRegisterGuideReportAsync(Guid PatientRegisterId)
{ {
return await _patientRegisterGuideReportRepository.GetPatientRegisterGuideReportAsync(PatientRegisterId);
//return await _patientRegisterGuideReportRepository.GetPatientRegisterGuideReportAsync(PatientRegisterId);
var apiUrl = _configuration.GetValue<string>("HostUrl:ApiUrl") + "/";
var patientRegister = await _patientRegisterRepository.GetAsync(o=>o.Id == PatientRegisterId);
Guid medicalCenterId = patientRegister.MedicalCenterId;
#region 系统参数配置
var MedicalCenterAddress = await _sysParmValueManager.GetSysParmValueAsync(medicalCenterId, "medical_center_address");
var MedicalCenterFax = await _sysParmValueManager.GetSysParmValueAsync(medicalCenterId, "medical_center_fax");
var MedicalCenterTelphone = await _sysParmValueManager.GetSysParmValueAsync(medicalCenterId, "medical_center_telphone");
#endregion
var customerOrgList = await _customerOrgRepository.GetListAsync();
var query = from a in await _patientRegisterRepository.GetQueryableAsync()
join b in await _sexRegisterRepository.GetQueryableAsync()
on a.SexId equals b.Id
join c in await _customerOrgGroupRepository.GetQueryableAsync()
on a.CustomerOrgGroupId equals c.Id into cc
from ac in cc.DefaultIfEmpty()
join d in await _medicalPackageRepository.GetQueryableAsync()
on a.MedicalPackageId equals d.Id into dd
from ad in dd.DefaultIfEmpty()
join e in await _patientRepository.GetQueryableAsync()
on a.PatientId equals e.Id
join f in await _personnelTypeRepository.GetQueryableAsync()
on a.PersonnelTypeId equals f.Id into ff
from af in ff.DefaultIfEmpty()
join g in await _organizationUnitRepository.GetQueryableAsync()
on a.MedicalCenterId equals g.Id into gg
from ag in gg.DefaultIfEmpty()
where (a.Id == PatientRegisterId)
select new PatientRegisterGuideReportDto
{
Age = a.Age,
PatientRegisterId = a.Id,
CustomerOrgGroupName = ac.DisplayName,
CustomerOrgName = _cacheService.GetTopCustomerOrgNameAsync( a.CustomerOrgId).Result,
CustomerOrgShortName = _cacheService.GetTopCustomerOrgAsync(a.CustomerOrgId).Result.ShortName,
DepartmentName = _cacheService.GetCustomerOrgNameAsync( a.CustomerOrgId).Result,
IdNo = e.IdNo,
JobCardNo = a.JobCardNo,
MedicalCardNo = a.MedicalCardNo,
MedicalCenterAddress = MedicalCenterAddress,
MedicalCenterFax = MedicalCenterFax,
MedicalCenterTelphone = MedicalCenterTelphone,
MedicalPackageName = ad.DisplayName,
MedicalTimes = a.MedicalTimes,
MobileTelephone = e.MobileTelephone,
PatientName = a.PatientName,
PatientNo = e.PatientNo,
PatientRegisterNo = a.PatientRegisterNo,
PersonnelTypeName = af.DisplayName,
SexName = b.DisplayName,
// Photo = string.IsNullOrEmpty(a.Photo) ? "" : ImageHelper.GetImageBase64StringAsync( a.Photo),
Photo = string.IsNullOrEmpty(a.Photo) ? "" : apiUrl + a.Photo,
MedicalStartDate = Convert.ToDateTime(a.MedicalStartDate.ToString()).ToString("yyyy-MM-dd"),
OrganizationUnitId = a.MedicalCenterId,
OrganizationUnitName = ag.DisplayName,
Detail = PatientRegisterGuideAsbitem(a.Id, medicalCenterId, a.SexId),
HisPatientId = a.HisPatientId
};
return query.FirstOrDefault();
} }
@ -693,5 +779,42 @@ namespace Shentun.Peis.PrintReports
} }
return MedicalReportMedicalReportTypeDtos; return MedicalReportMedicalReportTypeDtos;
} }
private List<PatientRegisterGuideReport_Detail> PatientRegisterGuideAsbitem(Guid PatientRegisterId, Guid medicalCenterId, char SexId)
{
var entlist = _registerCheckAsbitemRepository.GetQueryableAsync().Result
.Include(x => x.Asbitem)
.Include(x => x.Asbitem.ItemType)
.Include(x => x.Asbitem.ItemType.GuidType)
.Where(m => m.PatientRegisterId == PatientRegisterId && m.Asbitem.IsCheck == 'Y')
.Select(s => new PatientRegisterGuideReport_Asbitem_Temp
{
AsbitemName = s.Asbitem.DisplayName,
AsbitemGuide = _asbitemGuideManager.GetAsbitemGuideConvertSexId(medicalCenterId, s.AsbitemId, SexId),
AsbitemDisplayOrder = s.Asbitem.DisplayOrder,
GuideDisplayOrder = s.Asbitem.ItemType.GuidType.DisplayOrder,
GuideName = s.Asbitem.ItemType.GuidType.DisplayName
})
.OrderBy(o => o.GuideDisplayOrder)
.GroupBy(g => new { g.GuideName, g.GuideDisplayOrder })
.Select(s => new PatientRegisterGuideReport_Detail
{
GuideName = s.Key.GuideName,
AsbitemCount = s.Count(),
DisplayOrder = s.Key.GuideDisplayOrder,
Detail_Name = s.ToList().Select(ss => new PatientRegisterGuideReport_Detail_Asbitem
{
AsbitemName = ss.AsbitemName,
AsbitemGuide = ss.AsbitemGuide,
DisplayOrder = ss.AsbitemDisplayOrder
}).OrderBy(o => o.DisplayOrder).ToList()
}).OrderBy(o => o.DisplayOrder).ToList();
return entlist;
}
} }
} }

5
src/Shentun.Peis.EntityFrameworkCore/PrintReports/PatientRegisterGuideReportRepository.cs

@ -189,12 +189,11 @@ namespace Shentun.Peis.PrintReports
/// <returns></returns> /// <returns></returns>
private static List<PatientRegisterGuideReport_Detail> PatientRegisterGuideAsbitem(Guid PatientRegisterId, Guid medicalCenterId, char SexId) private static List<PatientRegisterGuideReport_Detail> PatientRegisterGuideAsbitem(Guid PatientRegisterId, Guid medicalCenterId, char SexId)
{ {
var entlist = _registerAsbitemRepository.GetDbSetAsync().Result
var entlist = _registerAsbitemRepository.GetQueryableAsync().Result
.Include(x => x.Asbitem) .Include(x => x.Asbitem)
.Include(x => x.Asbitem.ItemType) .Include(x => x.Asbitem.ItemType)
.Include(x => x.Asbitem.ItemType.GuidType) .Include(x => x.Asbitem.ItemType.GuidType)
.Where(m => m.PatientRegisterId == PatientRegisterId)
.Where(m => m.PatientRegisterId == PatientRegisterId && m.Asbitem.IsCheck == 'Y')
.Select(s => new PatientRegisterGuideReport_Asbitem_Temp .Select(s => new PatientRegisterGuideReport_Asbitem_Temp
{ {
AsbitemName = s.Asbitem.DisplayName, AsbitemName = s.Asbitem.DisplayName,

Loading…
Cancel
Save