diff --git a/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetAsbitemDto.cs b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetAsbitemDto.cs new file mode 100644 index 00000000..9fa757a8 --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetAsbitemDto.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.Peis.DirectorManagement +{ + public class GetAsbitemDto + { + /// + /// 名称 + /// + public string AsbitemName { get; set; } + + + + /// + /// 适用性别,M-男,F-女,A-全部 + /// + public string ForSexName { get; set; } + + /// + /// 婚姻状况 + /// + public string MaritalStatusName { get; set; } + + + + /// + /// 标准价格 + /// + public decimal Price { get; set; } + + + + + + public int DisplayOrder { get; set; } + } +} diff --git a/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetAsbitemInputDto.cs b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetAsbitemInputDto.cs new file mode 100644 index 00000000..6cf3950b --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetAsbitemInputDto.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.Peis.DirectorManagement +{ + public class GetAsbitemInputDto + { + /// + /// 模糊查询 组合项目名字 + /// + public string AsbitemName { get; set; } + } +} diff --git a/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetDoctorWorkLoadReportInputDto.cs b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetDoctorWorkLoadReportInputDto.cs new file mode 100644 index 00000000..f6cfce2f --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetDoctorWorkLoadReportInputDto.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.Peis.DirectorManagement +{ + public class GetDoctorWorkLoadReportInputDto + { + /// + /// 开始日期 + /// + public string StartDate { get; set; } + + + /// + /// 结束日期 + /// + public string EndDate { get; set; } + } +} diff --git a/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetItemTypeWorkLoadReportInputDto.cs b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetItemTypeWorkLoadReportInputDto.cs new file mode 100644 index 00000000..634322eb --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetItemTypeWorkLoadReportInputDto.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.Peis.DirectorManagement +{ + public class GetItemTypeWorkLoadReportInputDto + { + /// + /// 开始日期 + /// + public string StartDate { get; set; } + + + /// + /// 结束日期 + /// + public string EndDate { get; set; } + } +} diff --git a/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetMedicalPackageDto.cs b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetMedicalPackageDto.cs new file mode 100644 index 00000000..0923d21b --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetMedicalPackageDto.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.Peis.DirectorManagement +{ + public class GetMedicalPackageDto + { + /// + /// 名称 + /// + public string MedicalPackageName { get; set; } + + /// + /// 价格 + /// + public decimal Price { get; set; } + + /// + /// 适用性别 + /// + public string ForSexName { get; set; } + + /// + /// 适用婚姻状况 + /// + public string MaritalStatusName { get; set; } + + + + /// + /// 备注 + /// + public string? Remark { get; set; } + + + /// + /// 显示顺序 + /// + public int DisplayOrder { get; set; } + + + } +} diff --git a/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetMedicalPackageInputDto.cs b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetMedicalPackageInputDto.cs new file mode 100644 index 00000000..6e01bdf0 --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetMedicalPackageInputDto.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.Peis.DirectorManagement +{ + public class GetMedicalPackageInputDto + { + /// + /// 模糊查询 套餐名字 + /// + public string MedicalPackageName { get; set; } + + + } +} diff --git a/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetPeisReportBase64ByPatientRegisterIdDto.cs b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetPeisReportBase64ByPatientRegisterIdDto.cs new file mode 100644 index 00000000..f45b4026 --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetPeisReportBase64ByPatientRegisterIdDto.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.Peis.DirectorManagement +{ + public class GetPeisReportBase64ByPatientRegisterIdDto + { + public string Base64Str { get; set; } + } +} diff --git a/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetPeisReportDto.cs b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetPeisReportDto.cs new file mode 100644 index 00000000..9aee1183 --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetPeisReportDto.cs @@ -0,0 +1,104 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.Peis.DirectorManagement +{ + public class GetPeisReportDto + { + /// + /// 人员ID + /// + public Guid PatientRegisterId { get; set; } + + /// + /// 单位名称 + /// + public string CustomerOrgName { get; set; } + + /// + /// 部门名称 + /// + public string DepartmentName { get; set; } + + /// + /// 条码号 + /// + public string PatientRegisterNo { get; set; } + + /// + /// 档案号 + /// + public string PatientNo { get; set; } + + /// + /// 姓名 + /// + public string PatientName { get; set; } + + /// + /// 手机号 + /// + public string MobileTelephone { get; set; } + + + + /// + /// 标志(0 预登记 1正式登记 2部分已检 3已总检) + /// + public string CompleteFlag { get; set; } + + + + + + /// + /// 是否已经上传web + /// + public string IsUpload { get; set; } + + + /// + /// 性别 + /// + public string SexName { get; set; } + + /// + /// 年龄 + /// + public string Age { get; set; } + + /// + /// 身份证号 + /// + public string IdNo { get; set; } + + /// + /// 体检日期 1999-01-01 + /// + public string MedicalStartDate { get; set; } + + + /// + /// 总检医生 + /// + public string SummaryDoctorName { get; set; } + + + /// + /// 总检时间 1999-01-01 + /// + public string SummaryDate { get; set; } + + + + /// + /// 审核医生 + /// + public string AuditDoctorName { get; set; } + /// + /// 审核日期 + /// + public string AuditDate { get; set; } + } +} diff --git a/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetPeisReportInputDto.cs b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetPeisReportInputDto.cs new file mode 100644 index 00000000..fc510f30 --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/DirectorManagement/GetPeisReportInputDto.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.Peis.DirectorManagement +{ + public class GetPeisReportInputDto + { + /// + /// 姓名 + /// + public string PatientName { get; set; } + + /// + /// 手机号 + /// + public string MobileTelephone { get; set; } + /// + /// 身份证 + /// + public string IdNo { get; set; } + + /// + /// 条码号 + /// + public string PatientRegisterNo { get; set; } + + /// + /// 档案号 + /// + public string PatientNo { get; set; } + } +} diff --git a/src/Shentun.Peis.Application.Contracts/InternalReports/GetDoctorPersonnelWorkLoadReportRequestDto.cs b/src/Shentun.Peis.Application.Contracts/InternalReports/GetDoctorPersonnelWorkLoadReportRequestDto.cs index 34522c3f..fd196ea2 100644 --- a/src/Shentun.Peis.Application.Contracts/InternalReports/GetDoctorPersonnelWorkLoadReportRequestDto.cs +++ b/src/Shentun.Peis.Application.Contracts/InternalReports/GetDoctorPersonnelWorkLoadReportRequestDto.cs @@ -10,7 +10,7 @@ namespace Shentun.Peis.InternalReports /// /// 医生ID 集合 /// - public List UserIds { get; set; } + public List UserIds { get; set; } = new List(); /// /// 开始检查日期 diff --git a/src/Shentun.Peis.Application.Contracts/InternalReports/GetItemTypeWorkLoadInStandardRequestDto.cs b/src/Shentun.Peis.Application.Contracts/InternalReports/GetItemTypeWorkLoadInStandardRequestDto.cs index aae1e7c8..a0797f20 100644 --- a/src/Shentun.Peis.Application.Contracts/InternalReports/GetItemTypeWorkLoadInStandardRequestDto.cs +++ b/src/Shentun.Peis.Application.Contracts/InternalReports/GetItemTypeWorkLoadInStandardRequestDto.cs @@ -9,7 +9,7 @@ namespace Shentun.Peis.InternalReports /// /// 项目类别ID /// - public List ItemTypeId { get; set; } + public List ItemTypeId { get; set; } = new List(); /// diff --git a/src/Shentun.Peis.Application/CCTJExportDatas/CCTJExportDataAppService.cs b/src/Shentun.Peis.Application/CCTJExportDatas/CCTJExportDataAppService.cs index 1abc198c..7491e2dd 100644 --- a/src/Shentun.Peis.Application/CCTJExportDatas/CCTJExportDataAppService.cs +++ b/src/Shentun.Peis.Application/CCTJExportDatas/CCTJExportDataAppService.cs @@ -616,6 +616,23 @@ namespace Shentun.Peis.CCTJExportDatas } + /// + /// 处理单位相关 + /// + /// + [HttpPost("api/app/CCTJExportData/HandCustomerOrgDetailData")] + public async Task HandCustomerOrgDetailData() + { + await TransferTopCustomerOrgData(); + await TransferTwoCustomerOrgData(); + await TransferThreeCustomerOrgData(); + await TransferFourCustomerOrgData(); + await TransferCustomerOrgRegisterData(); + await TransferCustomerOrgGroupData(); + await TransferCustomerOrgGroupDetailData(); + } + + #region 基础数据 @@ -2319,7 +2336,7 @@ namespace Shentun.Peis.CCTJExportDatas MedicalCenterId = defaultMedicalCenterId, OrgTypeId = defaultOrgTypeId, //默认为私营 ParentId = null, - PathCode = (oldCustomerOrgList.Rows.IndexOf(row) + 1).ToString().PadLeft(5, '0'), + PathCode = _customerOrgManager.CreatePathCode(null).GetAwaiter().GetResult(), PostalCode = row["postalcode"].ToString(), Remark = remark, ShortName = row["short_name"].ToString(), @@ -2438,7 +2455,7 @@ namespace Shentun.Peis.CCTJExportDatas MedicalCenterId = defaultMedicalCenterId, OrgTypeId = defaultOrgTypeId, //默认为私营 ParentId = parentId, - PathCode = _customerOrgManager.CreatePathCode(parentId).Result, + PathCode = _customerOrgManager.CreatePathCode(parentId).GetAwaiter().GetResult(), PostalCode = row["postalcode"].ToString(), Remark = remark, ShortName = row["short_name"].ToString(), @@ -2556,7 +2573,7 @@ namespace Shentun.Peis.CCTJExportDatas MedicalCenterId = defaultMedicalCenterId, OrgTypeId = defaultOrgTypeId, //默认为私营 ParentId = parentId, - PathCode = _customerOrgManager.CreatePathCode(parentId).Result, + PathCode = _customerOrgManager.CreatePathCode(parentId).GetAwaiter().GetResult(), PostalCode = row["postalcode"].ToString(), Remark = remark, ShortName = row["short_name"].ToString(), @@ -2674,7 +2691,7 @@ namespace Shentun.Peis.CCTJExportDatas MedicalCenterId = defaultMedicalCenterId, OrgTypeId = defaultOrgTypeId, //默认为私营 ParentId = parentId, - PathCode = _customerOrgManager.CreatePathCode(parentId).Result, + PathCode = _customerOrgManager.CreatePathCode(parentId).GetAwaiter().GetResult(), PostalCode = row["postalcode"].ToString(), Remark = remark, ShortName = row["short_name"].ToString(), diff --git a/src/Shentun.Peis.Application/CCTJExportDatas/CCTJLMPAppService.cs b/src/Shentun.Peis.Application/CCTJExportDatas/CCTJLMPAppService.cs index 0e312f99..e69ea0ac 100644 --- a/src/Shentun.Peis.Application/CCTJExportDatas/CCTJLMPAppService.cs +++ b/src/Shentun.Peis.Application/CCTJExportDatas/CCTJLMPAppService.cs @@ -287,10 +287,14 @@ namespace Shentun.Peis.CCTJExportDatas #region 检测是否有手动增加的项目 + + List pcAsbitemIds = new List(); + pcAsbitemIds.Add(Guid.Parse("3a1e0db7-8601-c251-917a-107adcb65fc6")); + pcAsbitemIds.Add(Guid.Parse("3a1e0db6-2056-2a51-b7b7-ad2fac5d5d06")); var query = (from asbitem in await _asbitemRepository.GetQueryableAsync() join fieldComparison in (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "asbitem") on asbitem.Id.ToString() equals fieldComparison.NewKeyValue into fieldComparisonTemp from fieldComparisonEmptyHave in fieldComparisonTemp.DefaultIfEmpty() - where fieldComparisonEmptyHave == null + where fieldComparisonEmptyHave == null && !pcAsbitemIds.Contains(asbitem.Id) select asbitem.DisplayName).ToList(); if (query.Any()) @@ -477,7 +481,7 @@ namespace Shentun.Peis.CCTJExportDatas } - + /// /// 同步体检单位数据 一级 diff --git a/src/Shentun.Peis.Application/DiagnosisFunctions/DiagnosisFunctionAppService.cs b/src/Shentun.Peis.Application/DiagnosisFunctions/DiagnosisFunctionAppService.cs index 57ca7928..4cc7ff42 100644 --- a/src/Shentun.Peis.Application/DiagnosisFunctions/DiagnosisFunctionAppService.cs +++ b/src/Shentun.Peis.Application/DiagnosisFunctions/DiagnosisFunctionAppService.cs @@ -719,7 +719,15 @@ namespace Shentun.Peis.DiagnosisFunctions return diagnosis; } - + /// + /// 根据参考范围获取诊断 + /// + /// + /// + /// + /// + /// + /// private async Task GetNumberDiagnosis(string itemName, string result, string unit, bool isLower, ReferenceRange referenceRange) { diff --git a/src/Shentun.Peis.Application/DirectorManagements/DirectorManagementAppService.cs b/src/Shentun.Peis.Application/DirectorManagements/DirectorManagementAppService.cs index d7595721..243de6ec 100644 --- a/src/Shentun.Peis.Application/DirectorManagements/DirectorManagementAppService.cs +++ b/src/Shentun.Peis.Application/DirectorManagements/DirectorManagementAppService.cs @@ -1,15 +1,24 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore.Metadata.Internal; +using Microsoft.Extensions.Configuration; +using Newtonsoft.Json; using NPOI.POIFS.Storage; using Shentun.Peis.DirectorManagement; using Shentun.Peis.Enums; +using Shentun.Peis.InternalReports; using Shentun.Peis.Models; +using Shentun.Peis.PatientRegisters; +using Shentun.Peis.PrintReports; +using Shentun.Peis.TransToWebPeiss; using System; using System.Collections.Generic; +using System.IO; using System.Linq; +using System.Net.Http; using System.Net.Http.Headers; using System.Text; +using System.Threading; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Application.Services; @@ -32,6 +41,10 @@ namespace Shentun.Peis.DirectorManagements private readonly IRepository _asbitemRepository; private readonly IRepository _medicalPackageRepository; private readonly IRepository _customerOrgRepository; + private readonly InternalReportAppService _internalReportAppService; + private readonly IRepository _thirdInterfaceRepository; + private readonly PrintReportAppService _printReportAppService; + public DirectorManagementAppService( IRepository patientRegisterRepository, IRepository patientRepository, @@ -40,7 +53,10 @@ namespace Shentun.Peis.DirectorManagements IRepository registerCheckAsbitemRepository, IRepository asbitemRepository, IRepository medicalPackageRepository, - IRepository customerOrgRepository) + IRepository customerOrgRepository, + InternalReportAppService internalReportAppService, + IRepository thirdInterfaceRepository, + PrintReportAppService printReportAppService) { _patientRegisterRepository = patientRegisterRepository; _patientRepository = patientRepository; @@ -50,6 +66,9 @@ namespace Shentun.Peis.DirectorManagements _asbitemRepository = asbitemRepository; _medicalPackageRepository = medicalPackageRepository; _customerOrgRepository = customerOrgRepository; + _internalReportAppService = internalReportAppService; + _thirdInterfaceRepository = thirdInterfaceRepository; + _printReportAppService = printReportAppService; } /// @@ -320,6 +339,348 @@ namespace Shentun.Peis.DirectorManagements } + /// + /// 工作量统计 某段时间科室工作量统计 + /// + /// + /// + [HttpPost("api/app/DirectorManagement/GetItemTypeWorkLoadReport")] + public async Task> GetItemTypeWorkLoadReportAsync(GetItemTypeWorkLoadReportInputDto input) + { + if (string.IsNullOrWhiteSpace(input.StartDate) || string.IsNullOrWhiteSpace(input.EndDate)) + { + throw new UserFriendlyException("请选择查询时间段"); + } + + var entListDto = await _internalReportAppService.GetItemTypeWorkLoadInStandardAsync(new GetItemTypeWorkLoadInStandardRequestDto + { + StartDate = input.StartDate, + EndDate = input.EndDate + }); + + return entListDto; + } + + + /// + /// 工作量统计 某段时间医生工作量统计 + /// + /// + /// + [HttpPost("api/app/DirectorManagement/GetDoctorWorkLoadReport")] + public async Task> GetDoctorWorkLoadReportAsync(GetDoctorWorkLoadReportInputDto input) + { + if (string.IsNullOrWhiteSpace(input.StartDate) || string.IsNullOrWhiteSpace(input.EndDate)) + { + throw new UserFriendlyException("请选择查询时间段"); + } + + var entListDto = await _internalReportAppService.GetDoctorPersonnelWorkLoadReportAsync(new GetDoctorPersonnelWorkLoadReportRequestDto + { + StartDate = input.StartDate, + EndDate = input.EndDate + }); + + return entListDto; + } + + + /// + /// 套餐价格查询 + /// + /// + /// + [HttpPost("api/app/DirectorManagement/GetMedicalPackage")] + public async Task> GetMedicalPackageAsync(GetMedicalPackageInputDto input) + { + var query = from medicalPackage in await _medicalPackageRepository.GetQueryableAsync() + where medicalPackage.IsActive == 'Y' + select medicalPackage; + + + if (!string.IsNullOrWhiteSpace(input.MedicalPackageName)) + { + query = query.Where(m => input.MedicalPackageName.Contains(m.DisplayName)); + } + + + var entListDto = query.ToList().Select(s => new GetMedicalPackageDto + { + DisplayOrder = s.DisplayOrder, + ForSexName = GetForSexName(s.ForSexId), + MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(s.MaritalStatusId).GetAwaiter().GetResult(), + MedicalPackageName = s.DisplayName, + Price = s.Price, + Remark = s.Remark + }).OrderBy(o => o.DisplayOrder).ToList(); + + return entListDto; + } + + /// + /// 组合项目价格查询 + /// + /// + /// + [HttpPost("api/app/DirectorManagement/GetAsbitem")] + public async Task> GetAsbitemAsync(GetAsbitemInputDto input) + { + var query = from asbitem in await _asbitemRepository.GetQueryableAsync() + where asbitem.IsActive == 'Y' + select asbitem; + + + if (!string.IsNullOrWhiteSpace(input.AsbitemName)) + { + query = query.Where(m => input.AsbitemName.Contains(m.DisplayName)); + } + + + var entListDto = query.ToList().Select(s => new GetAsbitemDto + { + DisplayOrder = s.DisplayOrder, + ForSexName = GetForSexName(s.ForSexId), + MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(s.MaritalStatusId).GetAwaiter().GetResult(), + AsbitemName = s.DisplayName, + Price = s.Price + }).OrderBy(o => o.DisplayOrder).ToList(); + + return entListDto; + } + + + /// + /// 客户体检报告查询 + /// + /// + /// + [HttpPost("api/app/DirectorManagement/GetPeisReport")] + public async Task> GetPeisReportAsync(GetPeisReportInputDto input) + { + var query = from patientRegister in await _patientRegisterRepository.GetQueryableAsync() + join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id + where patientRegister.CompleteFlag == PatientRegisterCompleteFlag.Audit || patientRegister.CompleteFlag == PatientRegisterCompleteFlag.SumCheck + select new + { + patientRegister, + patient + }; + + + if (!string.IsNullOrWhiteSpace(input.PatientName)) + { + query = query.Where(m => m.patientRegister.PatientName == input.PatientName); + } + + if (!string.IsNullOrWhiteSpace(input.MobileTelephone)) + { + query = query.Where(m => m.patient.MobileTelephone == input.MobileTelephone); + } + + if (!string.IsNullOrWhiteSpace(input.PatientNo)) + { + query = query.Where(m => m.patient.PatientNo == input.PatientNo); + } + + if (!string.IsNullOrWhiteSpace(input.IdNo)) + { + query = query.Where(m => m.patient.IdNo == input.IdNo); + } + + if (!string.IsNullOrWhiteSpace(input.PatientRegisterNo)) + { + query = query.Where(m => m.patientRegister.PatientRegisterNo == input.PatientRegisterNo); + } + + var entListDto = query.Select(s => new GetPeisReportDto + { + Age = s.patientRegister.Age == null ? "" : s.patientRegister.Age.ToString(), + MedicalStartDate = DataHelper.ConversionDateShortToString(s.patientRegister.MedicalStartDate), + AuditDate = DataHelper.ConversionDateShortToString(s.patientRegister.AuditDate), + AuditDoctorName = _cacheService.GetSurnameAsync(s.patientRegister.AuditDoctorId).GetAwaiter().GetResult(), + IdNo = s.patient.IdNo, + MobileTelephone = s.patient.MobileTelephone, + PatientNo = s.patient.PatientNo, + SexName = GetSexName(s.patientRegister.SexId), + CompleteFlag = GetPatientRegisterCompleteFlag(s.patientRegister.CompleteFlag), + IsUpload = s.patientRegister.IsUpload == 'Y' ? "已上传" : "未上传", + PatientName = s.patientRegister.PatientName, + PatientRegisterId = s.patientRegister.Id, + PatientRegisterNo = s.patientRegister.PatientRegisterNo, + SummaryDate = DataHelper.ConversionDateShortToString(s.patientRegister.SummaryDate), + SummaryDoctorName = _cacheService.GetSurnameAsync(s.patientRegister.SummaryDoctorId).GetAwaiter().GetResult(), + CustomerOrgName = _cacheService.GetTopCustomerOrgNameAsync(s.patientRegister.CustomerOrgId).GetAwaiter().GetResult(), + DepartmentName = _cacheService.GetCustomerOrgNameAsync(s.patientRegister.CustomerOrgId).GetAwaiter().GetResult() + }).OrderBy(o => o.PatientRegisterId).ToList(); + + return entListDto; + } + + /// + /// 根据体检人员Id查询报告 返回的报告base64 + /// + /// + /// + [HttpPost("api/app/DirectorManagement/GetPeisReportBase64ByPatientRegisterId")] + public async Task GetPeisReportBase64ByPatientRegisterIdAsync(PatientRegisterIdInputDto input) + { + var entDto = new GetPeisReportBase64ByPatientRegisterIdDto(); + + entDto.Base64Str = await GetPeisBase64Async(input); + + return entDto; + } + + + + /// + /// 获取报告bse64 调用服务器上客户端 + /// + /// + /// + /// + /// + private async Task GetPeisBase64Async(PatientRegisterIdInputDto input) + { + + var thirdInterface = await _thirdInterfaceRepository.FirstOrDefaultAsync(f => f.ThirdInterfaceType == ThirdInterfaceTypeFlag.TranToWebPeis); + if (thirdInterface.IsActive != 'Y') + { + throw new UserFriendlyException("该接口已禁用"); + } + + var parmValue = thirdInterface.ParmValue; + var configurationBuilder = new ConfigurationBuilder() + .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue))); + var config = configurationBuilder.Build(); + var reportApiBaseAddress = config.GetSection("Interface").GetSection("ReportApiBaseAddress").Value; + var reportApiUrl = config.GetSection("Interface").GetSection("ReportApiUrl").Value; + + string reportBase64 = ""; + + + var printReportData = await _printReportAppService.GetMedicalReportConvertToReportAsync(input); + + + using (var httpClientHandler = new HttpClientHandler()) + { + using (var httpClient = new HttpClient(httpClientHandler)) + { + httpClient.BaseAddress = new Uri(reportApiBaseAddress); + + httpClient.DefaultRequestHeaders.Accept.Add( + new MediaTypeWithQualityHeaderValue("application/json"));//设置accept标头,告诉JSON是可接受的响应类型 + + + var sendData = JsonConvert.SerializeObject(printReportData); + using (HttpContent httpContent = new StringContent(sendData)) + { + httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); + HttpResponseMessage response = null; + + response = await httpClient.PostAsync(reportApiUrl, httpContent); + + + string result; + if (!response.IsSuccessStatusCode) + { + result = response.Content.ReadAsStringAsync().Result; + throw new Exception("http通信错误:" + response.StatusCode + ",结果:" + result); + } + result = await response.Content.ReadAsStringAsync(); + + var resultDto = JsonConvert.DeserializeObject(result); + if (resultDto != null) + { + if (resultDto.code != 1) + { + throw new Exception($"调用WebApi失败,返回-1,消息:" + result); + } + + reportBase64 = resultDto.data; + } + } + + } + } + + return reportBase64; + } + + + /// + /// 转换适用性别 + /// + /// + /// + private string GetForSexName(char ForSexId) + { + string msg = ""; + if (ForSexId == 'A') + { + msg = "全部"; + } + else if (ForSexId == 'M') + { + msg = "男"; + } + else if (ForSexId == 'F') + { + msg = "女"; + } + return msg; + } + + + /// + /// 转换性别 + /// + /// + /// + private string GetSexName(char SexId) + { + string msg = ""; + if (SexId == 'U') + { + msg = "未知"; + } + else if (SexId == 'M') + { + msg = "男"; + } + else if (SexId == 'F') + { + msg = "女"; + } + return msg; + } + + /// + /// 转换人员状态 + /// + /// + /// + private string GetPatientRegisterCompleteFlag(char completeFlag) + { + string msg = ""; + if (completeFlag == '0') + { + msg = "预登记"; + } + else if (completeFlag == '1') + { + msg = "正式登记"; + } + else if (completeFlag == '2') + { + msg = "部分已检"; + } + else if (completeFlag == '3') + { + msg = "已总检"; + } + return msg; + } } } diff --git a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs index 5d80a611..35ed3829 100644 --- a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs +++ b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs @@ -388,6 +388,7 @@ namespace Shentun.Peis.PrintReports PatientNo = o.patient.PatientNo, Age = o.patientRegister.Age, AsbitemNames = string.IsNullOrEmpty(o.asbitem.ShortName) ? o.asbitem.DisplayName : o.asbitem.ShortName, + AsbitemDisplayOrder = o.asbitem.DisplayOrder, LisRequestNo = o.lisRequest.LisRequestNo, PatientName = o.patientRegister.PatientName, PatientRegisterNo = o.patientRegister.PatientRegisterNo, @@ -488,7 +489,7 @@ namespace Shentun.Peis.PrintReports LisRequestNo = lisRequestNoPrintMode == "0" ? s.Key.LisRequestNo : s.Key.PatientRegisterNo, CustomerOrgName = s.Key.CustomerOrgName, DepartmentName = s.Key.DepartmentName, - AsbitemNames = string.Join(",", s.Select(d => d.AsbitemNames)), + AsbitemNames = string.Join(",", s.OrderBy(sa => sa.AsbitemDisplayOrder).Select(d => d.AsbitemNames)), IsPrint = s.Key.IsPrint, IsSignIn = s.Key.IsSignIn, SamplingTime = s.Key.SamplingTime, diff --git a/src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs b/src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs index 0c7f673b..d8ab25f6 100644 --- a/src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs +++ b/src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs @@ -382,6 +382,14 @@ namespace Shentun.Peis.RegisterChecks registerCheck.SubmissionTime = input.SubmissionTime; if (input.AuditorTime != null) registerCheck.AuditorTime = input.AuditorTime; + + //更新体检标识跟体检日期 + if (patientRegister.CompleteFlag == PatientRegisterCompleteFlag.Registration) + { + //第一次保存 + patientRegister.IsMedicalStart = 'Y'; + patientRegister.MedicalStartDate = DateTime.Now; + } //更新人员登记信息完成标志 patientRegister.CompleteFlag = PatientRegisterCompleteFlag.PartCheck; await _patientRegisterRepository.UpdateAsync(patientRegister); diff --git a/src/Shentun.Peis.Domain/PatientRegisters/PatientRegister.cs b/src/Shentun.Peis.Domain/PatientRegisters/PatientRegister.cs index e81b8f08..e5b159d3 100644 --- a/src/Shentun.Peis.Domain/PatientRegisters/PatientRegister.cs +++ b/src/Shentun.Peis.Domain/PatientRegisters/PatientRegister.cs @@ -346,6 +346,23 @@ namespace Shentun.Peis.Models [Column("summary_historical_review")] public string SummaryHistoricalReview { get; set; } + /// + /// 报告是否领取 + /// + [Column("is_receive_report")] + public char IsReceiveReport { get; set; } + + /// + /// 报告领取人 + /// + [Column("report_receive_name")] + public string ReportReceiveName { get; set; } + + /// + /// 报告领取时间 + /// + [Column("report_receive_date")] + public DateTime? ReportReceiveDate { get; set; } [Column("concurrency_stamp")] public string ConcurrencyStamp { get; set; } diff --git a/src/Shentun.Peis.Domain/PrintReports/LisRequestReportDto.cs b/src/Shentun.Peis.Domain/PrintReports/LisRequestReportDto.cs index b2fa8104..302623da 100644 --- a/src/Shentun.Peis.Domain/PrintReports/LisRequestReportDto.cs +++ b/src/Shentun.Peis.Domain/PrintReports/LisRequestReportDto.cs @@ -99,6 +99,12 @@ namespace Shentun.Peis.PrintReports /// public string AsbitemNames { get; set; } + /// + /// + /// + public int AsbitemDisplayOrder { get; set; } + + /// /// 单位名称 /// diff --git a/src/Shentun.Peis.EntityFrameworkCore/DbMapping/PatientRegisters/PatientRegisterDbMapping.cs b/src/Shentun.Peis.EntityFrameworkCore/DbMapping/PatientRegisters/PatientRegisterDbMapping.cs index a5ebe7ce..50466096 100644 --- a/src/Shentun.Peis.EntityFrameworkCore/DbMapping/PatientRegisters/PatientRegisterDbMapping.cs +++ b/src/Shentun.Peis.EntityFrameworkCore/DbMapping/PatientRegisters/PatientRegisterDbMapping.cs @@ -103,6 +103,9 @@ namespace Shentun.Peis.DbMapping entity.Property(t => t.DeviceGuidePrintTimes).HasComment("设备体检报告打印次数").IsRequired().HasDefaultValue((short)0); entity.Property(t => t.ReportPrintOperating).HasComment("体检报告打印操作者"); entity.Property(t => t.SummaryHistoricalReview).HasComment("总检历次综述内容"); + entity.Property(t => t.IsReceiveReport).HasComment("报告是否领取").HasDefaultValueSql("'N'"); + entity.Property(t => t.ReportReceiveName).HasComment("报告领取人"); + entity.Property(t => t.ReportReceiveDate).HasComment("报告领取时间"); //entity.HasOne(d => d.CustomerOrgRegister) // .WithMany(p => p.PatientRegisters)