From b14c9d20875ea83a0c904b364d6cd0a74ea18129 Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Wed, 10 Apr 2024 18:40:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E4=BD=8D=E4=BD=93=E6=A3=80=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...PatientRegisterPositiveReportRequestDto.cs | 10 - ...tPhysicalExaminationReportExportWordDto.cs | 243 +- ...tUnitPhysicalExaminationReportReduceDto.cs | 56 + ...nitPhysicalExaminationReportStandardDto.cs | 60 + .../GetPatientRegisterReportRequestDto.cs | 11 +- .../CustomerReportAppService.cs | 277 +- src/Shentun.Peis.Domain/DataHelper.cs | 56 + .../ReportTemplates/ChartData.cs | 269 ++ .../CreateInspectionPersonnelPara.cs | 43 + .../CustomerOrgReportManager.cs | 2330 +++++++++++++++++ ...PhysicalExaminationReportExportWordData.cs | 339 +++ .../Shentun.Peis.Domain.csproj | 2 + .../PeisHttpApiHostModule.cs | 12 +- .../ReportFile/CustomerOrgTemplate/Page1.jpg | Bin 0 -> 31749 bytes .../CustomerOrgTemplate/logo_template.jpg | Bin 0 -> 8904 bytes 15 files changed, 3391 insertions(+), 317 deletions(-) create mode 100644 src/Shentun.Peis.Domain/ReportTemplates/ChartData.cs create mode 100644 src/Shentun.Peis.Domain/ReportTemplates/CreateInspectionPersonnelPara.cs create mode 100644 src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs create mode 100644 src/Shentun.Peis.Domain/ReportTemplates/UnitPhysicalExaminationReportExportWordData.cs create mode 100644 src/Shentun.Peis.HttpApi.Host/ReportFile/CustomerOrgTemplate/Page1.jpg create mode 100644 src/Shentun.Peis.HttpApi.Host/ReportFile/CustomerOrgTemplate/logo_template.jpg diff --git a/src/Shentun.Peis.Application.Contracts/CustomerReports/GetPatientRegisterPositiveReportRequestDto.cs b/src/Shentun.Peis.Application.Contracts/CustomerReports/GetPatientRegisterPositiveReportRequestDto.cs index c064f67..b58090d 100644 --- a/src/Shentun.Peis.Application.Contracts/CustomerReports/GetPatientRegisterPositiveReportRequestDto.cs +++ b/src/Shentun.Peis.Application.Contracts/CustomerReports/GetPatientRegisterPositiveReportRequestDto.cs @@ -12,15 +12,5 @@ namespace Shentun.Peis.CustomerReports /// public List CustomerOrgs { get; set; } = new List(); - - /// - /// 检查状态(正式登记,部份已检,已总检) - /// - public char? CompleteFlag { get; set; } - - /// - /// 审核状态( Y N ) - /// - public char? IsAudit { get; set; } } } diff --git a/src/Shentun.Peis.Application.Contracts/CustomerReports/GetUnitPhysicalExaminationReportExportWordDto.cs b/src/Shentun.Peis.Application.Contracts/CustomerReports/GetUnitPhysicalExaminationReportExportWordDto.cs index 4c85ea7..d2d32ca 100644 --- a/src/Shentun.Peis.Application.Contracts/CustomerReports/GetUnitPhysicalExaminationReportExportWordDto.cs +++ b/src/Shentun.Peis.Application.Contracts/CustomerReports/GetUnitPhysicalExaminationReportExportWordDto.cs @@ -7,247 +7,8 @@ namespace Shentun.Peis.CustomerReports public class GetUnitPhysicalExaminationReportExportWordDto { /// - /// 体检年度 + /// 报告url 需拼接http前缀地址 /// - public string MedicalYear { get; set; } - - /// - /// 单位名称 - /// - public string CustomerOrgName { get; set; } - - /// - /// 体检次数 - /// - public int MedicalTimes { get; set; } - - /// - /// 体检开始月份 格式:2009年09月 - /// - public string MedicalStartDate { get; set; } - - /// - /// 体检结束月份 格式:2009年09月 - /// - public string MedicalEndDate { get; set; } - - /// - /// 制表日期 格式:2009年09月09日 - /// - public string TabulationDate { get; set; } - - - /// - /// 打印日期 格式:2009年09月09日 - /// - public string PrintDate { get; set; } - - - /// - /// 参加人员构成情况 第一部分 - /// - public GetUnitPhysicalExaminationReportExportWord_InspectionPersonnel InspectionPersonnel { get; set; } - - /// - /// 体检项目得参检情况 第二部分 - /// - public List MedicalItemExamineSituations { get; set; } - - /// - /// 全体员工体检结果汇总 第三部分 - /// - public List MedicalResultSummarys { get; set; } - - - - } - - /// - /// 参加人员构成情况 - /// - public class GetUnitPhysicalExaminationReportExportWord_InspectionPersonnel - { - /// - /// 男性登记人数 - /// - public int MaleRegisterNumber { get; set; } - - /// - /// 女性登记人数 - /// - public int FemaleRegisterNumber { get; set; } - - /// - /// 其他登记人数 - /// - public int OtherRegisterNumber { get; set; } - - /// - /// 合计登记人数 - /// - public int SumRegisterNumber { get; set; } - - /// - /// 登记明细 - /// - public InspectionPersonnel_Detail RegisterDetail { get; set; } - - /// - /// 实检明细 - /// - public InspectionPersonnel_Detail CheckedDetail { get; set; } - - /// - /// 未检明细 - /// - public InspectionPersonnel_Detail UnCheckedDetail { get; set; } - } - - /// - /// 检查明细 - /// - public class InspectionPersonnel_Detail - { - /// - /// 男性人数 - /// - public int MaleNumber { get; set; } - - /// - /// 女性人数 - /// - public int FemaleNumber { get; set; } - - /// - /// 其他人数 - /// - public int OtherNumber { get; set; } - - /// - /// 合计人数 - /// - public int TotalNumber { get; set; } - - /// - /// 男性比例 - /// - public string MaleRatio { get; set; } - - /// - /// 女性比例 - /// - public string FemaleRatio { get; set; } - - /// - /// 男性参检比例 - /// - public string MaleExamineRatio { get; set; } - - /// - /// 女性参检比例 - /// - public string FemaleExamineRatio { get; set; } - - - /// - /// 平均参检比例 - /// - public string AverageExamineRatio { get; set; } - } - - - /// - /// 体检项目得参检情况 - /// - public class GetUnitPhysicalExaminationReportExportWord_MedicalItemExamineSituation - { - /// - /// 科室 - /// - public string ItemTypeName { get; set; } - - /// - /// 组合项目名称 - /// - public string AsbitemName { get; set; } - - /// - /// 男性该项目参检人数 - /// - public int MaleAsbitemCheckNumber { get; set; } - - /// - /// 女性该项目参检人数 - /// - public int FemaleAsbitemCheckNumber { get; set; } - - /// - /// 合计该项目参检人数 - /// - public int TotalAsbitemCheckNumber { get; set; } - - /// - /// 男性总体参检人数 所有项目 - /// - public int MaleSumCheckNumber { get; set; } - - /// - /// 女性总体参检人数 所有项目 - /// - public int FemaleSumCheckNumber { get; set; } - - /// - /// 合计总体参检人数 所有项目 - /// - public int TotalSumCheckNumber { get; set; } - - - /// - /// 男性该项目参检比例 - /// - public int MaleAsbitemCheckRatio { get; set; } - - /// - /// 女性该项目参检比例 - /// - public int FemaleAsbitemCheckRatio { get; set; } - - /// - /// 合计该项目参检比例 - /// - public int TotalAsbitemCheckRatio { get; set; } - - - } - - /// - /// 全体员工体检结果汇总 统计已总检的名单 - /// - public class GetUnitPhysicalExaminationReportExportWord_MedicalResultSummary - { - /// - /// 档案号 - /// - public string PatientNo { get; set; } - - /// - /// 姓名 - /// - public string PatientName { get; set; } - - /// - /// 性别 - /// - public string SexName { get; set; } - - /// - /// 年龄 - /// - public string Age { get; set; } - - /// - /// 体检结果 - /// - public string MedicalResult { get; set; } + public string ReportUrl { get; set; } } } diff --git a/src/Shentun.Peis.Application.Contracts/CustomerReports/GetUnitPhysicalExaminationReportReduceDto.cs b/src/Shentun.Peis.Application.Contracts/CustomerReports/GetUnitPhysicalExaminationReportReduceDto.cs index 7219099..e7ccc67 100644 --- a/src/Shentun.Peis.Application.Contracts/CustomerReports/GetUnitPhysicalExaminationReportReduceDto.cs +++ b/src/Shentun.Peis.Application.Contracts/CustomerReports/GetUnitPhysicalExaminationReportReduceDto.cs @@ -6,6 +6,62 @@ namespace Shentun.Peis.CustomerReports { public class GetUnitPhysicalExaminationReportReduceDto { + /// + /// 标题 + /// + public string ReportTitle { get; set; } + + /// + /// 单位名称 + /// + public string CustomerOrgName { get; set; } + + /// + /// 体检次数 + /// + public int MedicalTimes { get; set; } + + /// + /// 开始月份 + /// + public string StartMonth { get; set; } + + + /// + /// 结束月份 + /// + public string EndMonth { get; set; } + + /// + /// 开始日期 + /// + public string StartDate { get; set; } + + /// + /// 结束日期 + /// + public string EndDate { get; set; } + + /// + /// 总共体检人数 + /// + public int SumMedicalNumber { get; set; } + + /// + /// 男性体检人数 + /// + public int MaleMedicalNumber { get; set; } + + /// + /// 女性体检人数 + /// + public int FemaleMedicalNumber { get; set; } + + /// + /// 其他体检人数 + /// + public int OtherMedicalNumber { get; set; } + /// /// 人员阳性结果清单 /// diff --git a/src/Shentun.Peis.Application.Contracts/CustomerReports/GetUnitPhysicalExaminationReportStandardDto.cs b/src/Shentun.Peis.Application.Contracts/CustomerReports/GetUnitPhysicalExaminationReportStandardDto.cs index 5cb7194..739b271 100644 --- a/src/Shentun.Peis.Application.Contracts/CustomerReports/GetUnitPhysicalExaminationReportStandardDto.cs +++ b/src/Shentun.Peis.Application.Contracts/CustomerReports/GetUnitPhysicalExaminationReportStandardDto.cs @@ -5,8 +5,68 @@ using System.Text; namespace Shentun.Peis.CustomerReports { + /// + /// 标准格式 + /// public class GetUnitPhysicalExaminationReportStandardDto { + + /// + /// 标题 + /// + public string ReportTitle { get; set; } + + /// + /// 单位名称 + /// + public string CustomerOrgName { get; set; } + + /// + /// 体检次数 + /// + public int MedicalTimes { get; set; } + + /// + /// 开始月份 + /// + public string StartMonth { get; set; } + + + /// + /// 结束月份 + /// + public string EndMonth { get; set; } + + /// + /// 开始日期 + /// + public string StartDate { get; set; } + + /// + /// 结束日期 + /// + public string EndDate { get; set; } + + /// + /// 总共体检人数 + /// + public int SumMedicalNumber { get; set; } + + /// + /// 男性体检人数 + /// + public int MaleMedicalNumber { get; set; } + + /// + /// 女性体检人数 + /// + public int FemaleMedicalNumber { get; set; } + + /// + /// 其他体检人数 + /// + public int OtherMedicalNumber { get; set; } + /// /// 人员阳性结果清单 /// diff --git a/src/Shentun.Peis.Application.Contracts/PeisReports/GetPatientRegisterReportRequestDto.cs b/src/Shentun.Peis.Application.Contracts/PeisReports/GetPatientRegisterReportRequestDto.cs index 9a28675..3214618 100644 --- a/src/Shentun.Peis.Application.Contracts/PeisReports/GetPatientRegisterReportRequestDto.cs +++ b/src/Shentun.Peis.Application.Contracts/PeisReports/GetPatientRegisterReportRequestDto.cs @@ -12,7 +12,7 @@ namespace Shentun.Peis.PeisReports /// /// 单位相关 /// - public List CustomerOrgs { get; set; } = new List (); + public List CustomerOrgs { get; set; } = new List(); /// @@ -95,17 +95,20 @@ namespace Shentun.Peis.PeisReports /// /// 日期类型(1、登记日期 2、体检日期 3、总检日期) /// - public char? DateType { get; set; } + [Required(ErrorMessage = "日期类型不能为空")] + public char DateType { get; set; } /// /// 开始日期 /// - public string? StartDate { get; set; } + [Required(ErrorMessage = "开始日期不能为空")] + public string StartDate { get; set; } /// /// 结束日期 /// - public string? EndDate { get; set; } + [Required(ErrorMessage = "结束日期不能为空")] + public string EndDate { get; set; } } } diff --git a/src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs b/src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs index 4b26405..a382ff0 100644 --- a/src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs +++ b/src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs @@ -2,19 +2,26 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Routing; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Internal; +using NPOI.HPSF; using NPOI.POIFS.Storage; using NPOI.SS.Formula.Functions; +using NPOI.SS.UserModel; +using NPOI.XSSF.UserModel.Extensions; using Org.BouncyCastle.Crypto.Tls; using Shentun.Peis.CustomerOrgs; using Shentun.Peis.Enums; using Shentun.Peis.Models; using Shentun.Peis.PeisReports; +using Shentun.Peis.ReportTemplates; using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; +using TencentCloud.Ame.V20190916.Models; using TencentCloud.Scf.V20180416.Models; using TencentCloud.Ticm.V20181127.Models; using TencentCloud.Wedata.V20210820.Models; @@ -30,7 +37,7 @@ namespace Shentun.Peis.CustomerReports /// 客户报表 /// [ApiExplorerSettings(GroupName = "Work")] - [Authorize] + //[Authorize] public class CustomerReportAppService : ApplicationService { private readonly IRepository _patientRepository; @@ -46,11 +53,12 @@ namespace Shentun.Peis.CustomerReports private readonly IRepository _registerCheckSummaryRepository; private readonly IRepository _registerCheckItemRepository; private readonly IRepository _asbitemRepository; - private readonly IRepository _itemRepository; + private readonly IRepository _itemRepository; private readonly IRepository _itemTypeRepository; private readonly IRepository _sumSuggestionHeaderRepository; private readonly IRepository _sumSuggestionContentRepository; private readonly CustomerOrgManager _customerOrgManager; + private readonly CustomerOrgReportManager _customerOrgReportManager; public CustomerReportAppService( IRepository patientRepository, @@ -66,12 +74,12 @@ namespace Shentun.Peis.CustomerReports IRepository registerCheckSummaryRepository, IRepository registerCheckItemRepository, IRepository asbitemRepository, - IRepository itemRepository, + IRepository itemRepository, IRepository itemTypeRepository, IRepository sumSuggestionHeaderRepository, IRepository sumSuggestionContentRepository, - CustomerOrgManager customerOrgManager - ) + CustomerOrgManager customerOrgManager, + CustomerOrgReportManager customerOrgReportManager) { this._patientRepository = patientRepository; this._patientRegisterRepository = patientRegisterRepository; @@ -91,6 +99,7 @@ namespace Shentun.Peis.CustomerReports this._sumSuggestionContentRepository = sumSuggestionContentRepository; this._customerOrgManager = customerOrgManager; this._itemTypeRepository = itemTypeRepository; + _customerOrgReportManager = customerOrgReportManager; } @@ -200,15 +209,7 @@ namespace Shentun.Peis.CustomerReports - if (input.CompleteFlag != null) - { - sumquery = sumquery.Where(m => m.a.CompleteFlag == input.CompleteFlag); - } - if (input.IsAudit != null) - { - sumquery = sumquery.Where(m => m.a.IsAudit == input.IsAudit); - } var entlist = sumquery.GroupBy(g => g.c.PatientRegisterId).Select(s => new GetPatientRegisterPositiveReportDto @@ -409,7 +410,7 @@ namespace Shentun.Peis.CustomerReports var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value); sumquery_count = sumquery_count.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId)); } - if (item.DateType != null && !string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate)) + if (!string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate)) { if (item.DateType == '1') { @@ -449,7 +450,7 @@ namespace Shentun.Peis.CustomerReports var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value); newquery = newquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId)); } - if (item2.DateType != null && !string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate)) + if (!string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate)) { if (item2.DateType == '1') { @@ -519,7 +520,7 @@ namespace Shentun.Peis.CustomerReports var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value); sumquery = sumquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId)); } - if (item.DateType != null && !string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate)) + if (!string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate)) { if (item.DateType == '1') { @@ -559,7 +560,7 @@ namespace Shentun.Peis.CustomerReports var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value); newquery = newquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId)); } - if (item2.DateType != null && !string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate)) + if (!string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate)) { if (item2.DateType == '1') { @@ -649,7 +650,7 @@ namespace Shentun.Peis.CustomerReports var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value); sumquery_count = sumquery_count.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId)); } - if (item.DateType != null && !string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate)) + if (!string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate)) { if (item.DateType == '1') { @@ -689,7 +690,7 @@ namespace Shentun.Peis.CustomerReports var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value); newquery = newquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId)); } - if (item2.DateType != null && !string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate)) + if (!string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate)) { if (item2.DateType == '1') { @@ -748,7 +749,7 @@ namespace Shentun.Peis.CustomerReports var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item.CustomerOrgId.Value); sumquery = sumquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId)); } - if (item.DateType != null && !string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate)) + if (!string.IsNullOrEmpty(item.StartDate) && !string.IsNullOrEmpty(item.EndDate)) { if (item.DateType == '1') { @@ -788,7 +789,7 @@ namespace Shentun.Peis.CustomerReports var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(item2.CustomerOrgId.Value); newquery = newquery.Where(m => CustomerOrgIds.Contains(m.a.CustomerOrgId)); } - if (item2.DateType != null && !string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate)) + if (!string.IsNullOrEmpty(item2.StartDate) && !string.IsNullOrEmpty(item2.EndDate)) { if (item2.DateType == '1') { @@ -841,6 +842,21 @@ namespace Shentun.Peis.CustomerReports [HttpPost("api/customerreport/getunitphysicalexaminationreportstandard")] public async Task GetUnitPhysicalExaminationReportStandardAsync(GetUnitPhysicalExaminationReportRequestDto input) { + if (input.CustomerOrgs.Count != 1) + { + throw new UserFriendlyException("必须选择并且只能选择一个单位"); + } + + if (input.CustomerOrgs.FirstOrDefault().CustomerOrgId == null || input.CustomerOrgs.FirstOrDefault().CustomerOrgId == GuidFlag.PersonCustomerOrgId) + { + throw new UserFriendlyException("单位不能为空"); + } + + if (input.CustomerOrgs.FirstOrDefault().CustomerOrgRegisterId == null || input.CustomerOrgs.FirstOrDefault().CustomerOrgRegisterId == GuidFlag.PersonCustomerOrgRegisterId) + { + throw new UserFriendlyException("单位体检次数不能为空"); + } + //人员阳性结果清单 var PatientRegisterPositiveReports = await GetPatientRegisterPositiveReportAsync(new GetPatientRegisterPositiveReportRequestDto { CustomerOrgs = input.CustomerOrgs }); @@ -886,6 +902,12 @@ namespace Shentun.Peis.CustomerReports [HttpPost("api/customerreport/getunitphysicalexaminationreportreduce")] public async Task GetUnitPhysicalExaminationReportReduceAsync(GetUnitPhysicalExaminationReportRequestDto input) { + if (input.CustomerOrgs.Count != 1) + { + throw new UserFriendlyException("必须选择并且只能选择一个单位"); + } + + //人员阳性结果清单 var PatientRegisterPositiveReports = await GetPatientRegisterPositiveReportAsync(new GetPatientRegisterPositiveReportRequestDto { CustomerOrgs = input.CustomerOrgs }); @@ -924,54 +946,189 @@ namespace Shentun.Peis.CustomerReports + ///// ///// 单位体检报表 导出word ///// - ///// - ///// - //[HttpPost("api/customerreport/getunitphysicalexaminationreportreduce")] - //public async Task GetUnitPhysicalExaminationReportExportWordAsync(GetUnitPhysicalExaminationReportExportWordRequestDto input) - //{ + /// + /// + [HttpPost("api/customerreport/getunitphysicalexaminationreportreduce")] + public async Task GetUnitPhysicalExaminationReportExportWordAsync(GetUnitPhysicalExaminationReportExportWordRequestDto input) + { + if (input.CustomerOrgs.Count != 1) + { + throw new UserFriendlyException("必须选择并且只能选择一个单位"); + } - // if (input.CustomerOrgs.Count != 1) - // { - // throw new UserFriendlyException("必须选择并且只能选择一个单位"); - // } - // //人员阳性结果清单 - // var PatientRegisterPositiveReports = await GetPatientRegisterPositiveReportAsync(new GetPatientRegisterPositiveReportRequestDto { CustomerOrgs = input.CustomerOrgs }); + var customerOrgs = input.CustomerOrgs.FirstOrDefault(); - // //阳性结果包含人员清单 精简模式 - // var PositivePatientRegisterReportReduces = await GetPositivePatientRegisterReportReduceAsync(new GetPositivePatientRegisterReportRequestDto { CustomerOrgs = input.CustomerOrgs }); + if (customerOrgs.CustomerOrgId == null || customerOrgs.CustomerOrgId == GuidFlag.PersonCustomerOrgId) + { + throw new UserFriendlyException("单位不能为空"); + } - // //疾病人数统计 - // var DiseaseCountStatisticsReports = await GetDiseaseCountStatisticsReportAsync(new GetDiseaseCountStatisticsReportRequestDto { CustomerOrgs = input.CustomerOrgs }); + if (customerOrgs.CustomerOrgRegisterId == null || customerOrgs.CustomerOrgRegisterId == GuidFlag.PersonCustomerOrgRegisterId) + { + throw new UserFriendlyException("单位体检次数不能为空"); + } - // var query = from a in await _customerOrgRegisterRepository.GetQueryableAsync() - // join b in await _customerOrgRepository.GetQueryableAsync() on a.CustomerOrgId equals b.Id into bb - // from ab in bb.DefaultIfEmpty() - // select new { a, ab }; + #region 请求参数 - // if (input.CustomerOrgs.Any()) - // { - // query = query.Where(m => input.CustomerOrgs.Where(m => m.CustomerOrgRegisterId != null && m.CustomerOrgRegisterId != Guid.Empty).Select(s => s.CustomerOrgRegisterId).Contains(m.a.Id)); - // } + var createInspectionPersonnelPara = new CreateInspectionPersonnelPara + { + CustomerOrgGroupId = customerOrgs.CustomerOrgGroupId, + CustomerOrgId = customerOrgs.CustomerOrgId.Value, + EndDate = customerOrgs.EndDate, + DateType = customerOrgs.DateType, + StartDate = customerOrgs.StartDate, + CustomerOrgRegisterId = customerOrgs.CustomerOrgRegisterId.Value + }; - // var entlist = new GetUnitPhysicalExaminationReportReduceDto - // { - // CustomerOrgs = query.Select(s => new GetUnitPhysicalExaminationStandardReport_CustomerOrg - // { - // BeginTime = s.a.BeginTime.ToString(), - // EndTime = s.a.EndTime != null ? s.a.EndTime.ToString() : "", - // CustomerOrgName = s.ab != null ? s.ab.DisplayName : "", - // MedicalTimes = s.a.MedicalTimes - // }).ToList(), - // DiseaseCountStatisticsReports = DiseaseCountStatisticsReports, - // PatientRegisterPositiveReports = PatientRegisterPositiveReports, - // PositivePatientRegisterReportReduces = PositivePatientRegisterReportReduces - // }; + #endregion - // return entlist; - //} + #region 封面参数 + var customerOrgRegisterEntity = (await _customerOrgRegisterRepository.GetQueryableAsync()) + .Include(x => x.CustomerOrg) + .FirstOrDefault(f => f.Id == customerOrgs.CustomerOrgRegisterId); + + var documentData = new UnitPhysicalExaminationReportExportWordData(); + + documentData.MedicalTitle = customerOrgRegisterEntity.BeginTime.Year.ToString() + "年度" + customerOrgRegisterEntity.CustomerOrg.DisplayName; + documentData.MedicalTimes = customerOrgRegisterEntity.MedicalTimes; + documentData.MedicalStartDate = customerOrgRegisterEntity.BeginTime.ToString("yyyy年MM月"); + documentData.MedicalEndDate = customerOrgRegisterEntity.EndTime != null ? customerOrgRegisterEntity.EndTime.Value.ToString("yyyy年MM月") : DateTime.Now.ToString("yyyy年MM月"); + documentData.TabulationDate = DateTime.Now.ToString("yyyy年MM月dd日"); + documentData.PrintDate = DateTime.Now.ToString("yyyy年MM月dd日"); + #endregion + + #region 参检人员 第一部分 + + await _customerOrgReportManager.CreateInspectionPersonnelData(documentData, createInspectionPersonnelPara); + + #endregion + + + #region 体检项目与体检项目的参检情况 第二部分 + + await _customerOrgReportManager.CreateMedicalItemExamineSituationData(documentData, createInspectionPersonnelPara); + + #endregion + + #region 全体员工体检结果汇总 第三部分 + + await _customerOrgReportManager.CreateMedicalResultSummarysData(documentData, createInspectionPersonnelPara); + + #endregion + + + #region 本次体检异常结果检出统计 第四部分 + + await _customerOrgReportManager.CreateMedicalAbnormalResultStatisticsData(documentData, createInspectionPersonnelPara); + + #endregion + + #region 本次体检前十大异常结果分析 第五部分 + + await _customerOrgReportManager.CreateMedicalTenAbnormalResultsData(documentData, createInspectionPersonnelPara); + + #endregion + + + #region 体检者未完成情况 第六部分 + + await _customerOrgReportManager.CreateMedicalUnCheckedStatisticsData(documentData, createInspectionPersonnelPara); + + #endregion + + + #region 判断是否存在模板 + string TemplateUrl = System.AppDomain.CurrentDomain.BaseDirectory + @"\ReportFile\CustomerOrgTemplate\单位体检报告模板.docx"; + if (!File.Exists(TemplateUrl)) + _customerOrgReportManager.CreateCustomerOrgPeisTemplate(); + #endregion + + string documentUrl = _customerOrgReportManager.CreateCustomerOrgPeisFromTemplate(documentData); + + return new GetUnitPhysicalExaminationReportExportWordDto + { + ReportUrl = documentUrl + }; + } + + + + /// + /// + /// + [HttpPost("api/customerreport/createtemplate")] + public void CreateTemplate() + { + + #region 判断是否存在模板 + string TemplateUrl = System.AppDomain.CurrentDomain.BaseDirectory + @"\ReportFile\CustomerOrgTemplate\单位体检报告模板.docx"; + if (!File.Exists(TemplateUrl)) + _customerOrgReportManager.CreateCustomerOrgPeisTemplate(); + #endregion + + + + + #region 生成报告 + + var documentData = new UnitPhysicalExaminationReportExportWordData + { + MedicalTitle = "2024年度长沙神豚", + MedicalTimes = 1, + MedicalStartDate = "2023年09月01日", + MedicalEndDate = "2024年04月09日", + TabulationDate = "2024年04月09日", + PrintDate = "2024年04月09日", + RegisterDetail = new InspectionPersonnel_Detail + { + AverageExamineRatio = "50%", + FemaleExamineRatio = "40%", + MaleExamineRatio = "40%", + FemaleNumber = 20, + FemaleRatio = "30%", + MaleNumber = 20, + MaleRatio = "30%", + OtherNumber = 20, + TotalNumber = 60 + }, + CheckedDetail = new InspectionPersonnel_Detail + { + AverageExamineRatio = "50%", + FemaleExamineRatio = "40%", + MaleExamineRatio = "40%", + FemaleNumber = 10, + FemaleRatio = "30%", + MaleNumber = 10, + MaleRatio = "30%", + OtherNumber = 10, + TotalNumber = 30 + }, + UnCheckedDetail = new InspectionPersonnel_Detail + { + AverageExamineRatio = "50%", + FemaleExamineRatio = "40%", + MaleExamineRatio = "40%", + FemaleNumber = 10, + FemaleRatio = "30%", + MaleNumber = 10, + MaleRatio = "30%", + OtherNumber = 10, + TotalNumber = 30 + }, + MedicalAbnormalResultStatistics = new List(), + MedicalItemExamineSituations = new List(), + MedicalResultSummarys = new List(), + MedicalTenAbnormalResults = new List(), + MedicalUnCheckedStatistics = new List() + }; + + _customerOrgReportManager.CreateCustomerOrgPeisFromTemplate(documentData); + #endregion + } ///// @@ -2133,6 +2290,8 @@ namespace Shentun.Peis.CustomerReports + + } diff --git a/src/Shentun.Peis.Domain/DataHelper.cs b/src/Shentun.Peis.Domain/DataHelper.cs index cde0886..c84455e 100644 --- a/src/Shentun.Peis.Domain/DataHelper.cs +++ b/src/Shentun.Peis.Domain/DataHelper.cs @@ -14,6 +14,60 @@ namespace Shentun.Peis { public static class DataHelper { + + /// + /// 生成历次综述医生小结 + /// + /// + /// + public static string SetSumSummarys(List SumSummaryHeaders) + { + StringBuilder msg = new StringBuilder(); + if (SumSummaryHeaders.Count > 0) + { + foreach (var item in SumSummaryHeaders) + { + msg.Append("* " + item.SummaryTitle + ":" + "
"); + if (item.SumSummaryContents.Count > 0) + { + var SumSummaryContents = item.SumSummaryContents.ToList(); + foreach (var item2 in SumSummaryContents) + { + msg.Append("(" + SumSummaryContents.IndexOf(item2) + 1 + ")" + item2.SummaryContent + "
"); + } + } + } + } + return msg.ToString(); + } + + + /// + /// 生成总诊建议 + /// + /// + /// + public static string SetSumSuggestion(List SumSuggestionHeaders) + { + StringBuilder msg = new StringBuilder(); + if (SumSuggestionHeaders.Count > 0) + { + foreach (var item in SumSuggestionHeaders) + { + msg.Append("* " + item.SumSuggestionContents + ":" + "
"); + if (item.SumSuggestionContents.Count > 0) + { + var SumSuggestionContents = item.SumSuggestionContents.ToList(); + foreach (var item2 in SumSuggestionContents) + { + msg.Append("(" + SumSuggestionContents.IndexOf(item2) + 1 + ")" + item2.SuggestionContent + "
"); + } + } + } + } + return msg.ToString(); + } + /// /// 验证是否为空或者空字符串 /// @@ -570,5 +624,7 @@ namespace Shentun.Peis #endregion + + } } diff --git a/src/Shentun.Peis.Domain/ReportTemplates/ChartData.cs b/src/Shentun.Peis.Domain/ReportTemplates/ChartData.cs new file mode 100644 index 0000000..27fbe29 --- /dev/null +++ b/src/Shentun.Peis.Domain/ReportTemplates/ChartData.cs @@ -0,0 +1,269 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Shentun.Peis.ReportTemplates +{ + public class Table4 + { + public string DeptName { get; set; } + + public string ProjectName { get; set; } + + public int ProManNum { get; set; } + public int ProWomanNum { get; set; } + public int ProTotalmanNum { get; set; } + + public int ManNum { get; set; } + + public int WomanNum { get; set; } + + public int TotalmanNum { get; set; } + + + public int ProManRate { get; set; } + public int ProWomanRate { get; set; } + public int ProTotalmanRate { get; set; } + + + } + + public class Table5 + { + public string PatientNo { get; set; } + + public string PatientName { get; set; } + + public string SexName { get; set; } + + public string Age { get; set; } + + public string Result { get; set; } + } + + public class Table6 + { + public string Conclusion { get; set; } + + public string Credit { get; set; } + + public int ManNum { get; set; } + + public int WomanNum { get; set; } + + public int TotalmanNum { get; set; } + + + public int ManRate { get; set; } + public int WomanRate { get; set; } + public int AvgRate { get; set; } + } + + + public class Table7 + { + public string IcdName { get; set; } + + public string Notes { get; set; } + } + public class Table8 + { + public string PatientNo { get; set; } + + public string PatientName { get; set; } + + public string SexName { get; set; } + + public string Age { get; set; } + + public string DeptName { get; set; } + } + + public class ChartData + { + public string Category + { + get; + set; + } + public double Expenses + { + get; + set; + } + + + + public static List CreateCanadaExpenses() + { + var canada = new List(); + canada.Add(new ChartData() { Category = "Food", Expenses = 100 }); + canada.Add(new ChartData() { Category = "Housing", Expenses = 120 }); + canada.Add(new ChartData() { Category = "Transportation", Expenses = 140 }); + canada.Add(new ChartData() { Category = "Health Care", Expenses = 150 }); + return canada; + } + + public static List CreateUSAExpenses() + { + var usa = new List(); + usa.Add(new ChartData() { Category = "Food", Expenses = 200 }); + usa.Add(new ChartData() { Category = "Housing", Expenses = 150 }); + usa.Add(new ChartData() { Category = "Transportation", Expenses = 110 }); + usa.Add(new ChartData() { Category = "Health Care", Expenses = 100 }); + return usa; + } + + public static List CreateBrazilExpenses() + { + var brazil = new List(); + brazil.Add(new ChartData() { Category = "Food", Expenses = 125 }); + brazil.Add(new ChartData() { Category = "Housing", Expenses = 80 }); + brazil.Add(new ChartData() { Category = "Transportation", Expenses = 110 }); + brazil.Add(new ChartData() { Category = "Health Care", Expenses = 60 }); + return brazil; + } + + public static List CreateReferenceRate() + { + var brazil = new List(); + brazil.Add(new ChartData() { Category = "未检", Expenses = 50 }); + brazil.Add(new ChartData() { Category = "已检", Expenses = 50 }); + return brazil; + } + + public static List CreateReferenceRateSex() + { + var brazil = new List(); + brazil.Add(new ChartData() { Category = "男性", Expenses = 50 }); + brazil.Add(new ChartData() { Category = "女性", Expenses = 40 }); + brazil.Add(new ChartData() { Category = "其他", Expenses = 10 }); + return brazil; + } + + public static List CreateDisease() + { + var brazil = new List(); + brazil.Add(new ChartData() { Category = "疾病1", Expenses = 1 }); + brazil.Add(new ChartData() { Category = "疾病2", Expenses = 22 }); + brazil.Add(new ChartData() { Category = "疾病3", Expenses = 3 }); + brazil.Add(new ChartData() { Category = "疾病4", Expenses = 4 }); + brazil.Add(new ChartData() { Category = "疾病5", Expenses = 5 }); + brazil.Add(new ChartData() { Category = "疾病6", Expenses = 6 }); + brazil.Add(new ChartData() { Category = "疾病7", Expenses = 7 }); + brazil.Add(new ChartData() { Category = "疾病8", Expenses = 8 }); + brazil.Add(new ChartData() { Category = "疾病9", Expenses = 9 }); + brazil.Add(new ChartData() { Category = "疾病10", Expenses = 10 }); + return brazil; + } + public static List CreateException() + { + var brazil = new List(); + brazil.Add(new ChartData() { Category = "疾病1", Expenses = 22 }); + brazil.Add(new ChartData() { Category = "疾病2", Expenses = 22 }); + brazil.Add(new ChartData() { Category = "疾病3", Expenses = 22 }); + brazil.Add(new ChartData() { Category = "疾病4", Expenses = 4 }); + brazil.Add(new ChartData() { Category = "疾病5", Expenses = 5 }); + brazil.Add(new ChartData() { Category = "疾病6", Expenses = 6 }); + brazil.Add(new ChartData() { Category = "疾病7", Expenses = 7 }); + brazil.Add(new ChartData() { Category = "疾病8", Expenses = 8 }); + brazil.Add(new ChartData() { Category = "疾病9", Expenses = 9 }); + brazil.Add(new ChartData() { Category = "疾病10", Expenses = 10 }); + return brazil; + } + + public static List CreateTable4() + { + var tb4 = new List(); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "血常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "便常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + tb4.Add(new Table4() { DeptName = "门诊内科", ProjectName = "尿常规", ProManNum = 10, ProWomanNum = 3, ProTotalmanNum = 13, ManNum = 20, WomanNum = 6, TotalmanNum = 26, ProManRate = 50, ProWomanRate = 50, ProTotalmanRate = 50 }); + return tb4; + } + + public static List CreateTable5() + { + var tb5 = new List(); + tb5.Add(new Table5() { PatientNo = "2401091235293785", PatientName = "李四", SexName = "男性", Age = "40岁", Result = "正常" }); + tb5.Add(new Table5() { PatientNo = "2401091235293781", PatientName = "李四1", SexName = "男性", Age = "40岁", Result = "正常" }); + tb5.Add(new Table5() { PatientNo = "2401091235293782", PatientName = "李四2", SexName = "男性", Age = "40岁", Result = "正常" }); + tb5.Add(new Table5() { PatientNo = "2401091235293783", PatientName = "李四3", SexName = "男性", Age = "40岁", Result = "正常" }); + tb5.Add(new Table5() { PatientNo = "2401091235293784", PatientName = "李四4", SexName = "男性", Age = "40岁", Result = "正常" }); + tb5.Add(new Table5() { PatientNo = "2401091235293786", PatientName = "李四5", SexName = "男性", Age = "40岁", Result = "正常" }); + tb5.Add(new Table5() { PatientNo = "2401091235293787", PatientName = "李四6", SexName = "男性", Age = "40岁", Result = "正常" }); + tb5.Add(new Table5() { PatientNo = "2401091235293788", PatientName = "李四7", SexName = "男性", Age = "40岁", Result = "正常" }); + tb5.Add(new Table5() { PatientNo = "2401091235293789", PatientName = "李四8", SexName = "男性", Age = "40岁", Result = "正常" }); + tb5.Add(new Table5() { PatientNo = "2401091235293725", PatientName = "李四9", SexName = "男性", Age = "40岁", Result = "正常" }); + return tb5; + } + + public static List CreateTable6() + { + var tb6 = new List(); + tb6.Add(new Table6() { Conclusion = "结论1", Credit = "张三,张三2,张三2,张三2,张三2,张三2,张三2,张三2", ManNum = 20, WomanNum = 6, TotalmanNum = 26, ManRate = 50, WomanRate = 50, AvgRate = 50 }); + tb6.Add(new Table6() { Conclusion = "结论2", Credit = "张三,张三2,张三2,张三2,张三2,张三2,张三2,张三2", ManNum = 20, WomanNum = 6, TotalmanNum = 26, ManRate = 50, WomanRate = 50, AvgRate = 50 }); + tb6.Add(new Table6() { Conclusion = "结论3", Credit = "张三,张三2,张三2,张三2,张三2,张三2,张三2,张三2", ManNum = 20, WomanNum = 6, TotalmanNum = 26, ManRate = 50, WomanRate = 50, AvgRate = 50 }); + tb6.Add(new Table6() { Conclusion = "结论4", Credit = "张三,张三2,张三2,张三2,张三2,张三2,张三2,张三2", ManNum = 20, WomanNum = 6, TotalmanNum = 26, ManRate = 50, WomanRate = 50, AvgRate = 50 }); + tb6.Add(new Table6() { Conclusion = "结论5", Credit = "张三,张三2,张三2,张三2,张三2,张三2,张三2,张三2", ManNum = 20, WomanNum = 6, TotalmanNum = 26, ManRate = 50, WomanRate = 50, AvgRate = 50 }); + tb6.Add(new Table6() { Conclusion = "结论12", Credit = "张三,张三2,张三2,张三2,张三2,张三2,张三2,张三2", ManNum = 20, WomanNum = 6, TotalmanNum = 26, ManRate = 50, WomanRate = 50, AvgRate = 50 }); + tb6.Add(new Table6() { Conclusion = "结论6", Credit = "张三,张三2,张三2,张三2,张三2,张三2,张三2,张三2", ManNum = 20, WomanNum = 6, TotalmanNum = 26, ManRate = 50, WomanRate = 50, AvgRate = 50 }); + tb6.Add(new Table6() { Conclusion = "结论7", Credit = "张三,张三2,张三2,张三2,张三2,张三2,张三2,张三2", ManNum = 20, WomanNum = 6, TotalmanNum = 26, ManRate = 50, WomanRate = 50, AvgRate = 50 }); + tb6.Add(new Table6() { Conclusion = "结论8", Credit = "张三,张三2,张三2,张三2,张三2,张三2,张三2,张三2", ManNum = 20, WomanNum = 6, TotalmanNum = 26, ManRate = 50, WomanRate = 50, AvgRate = 50 }); + tb6.Add(new Table6() { Conclusion = "结论11", Credit = "张三,张三2,张三2,张三2,张三2,张三2,张三2,张三2", ManNum = 20, WomanNum = 6, TotalmanNum = 26, ManRate = 50, WomanRate = 50, AvgRate = 50 }); + return tb6; + } + + public static List CreateTable7() + { + var tb = new List(); + tb.Add(new Table7() { IcdName = "XXXXXX疾病1", Notes = "建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议" }); + tb.Add(new Table7() { IcdName = "XXXXXX疾病2", Notes = "建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议" }); + tb.Add(new Table7() { IcdName = "XXXXXX疾病3", Notes = "建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议" }); + tb.Add(new Table7() { IcdName = "XXXXXX疾病4", Notes = "建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议" }); + tb.Add(new Table7() { IcdName = "XXXXXX疾病5", Notes = "建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议" }); + tb.Add(new Table7() { IcdName = "XXXXXX疾病6", Notes = "建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议" }); + tb.Add(new Table7() { IcdName = "XXXXXX疾病7", Notes = "建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议" }); + tb.Add(new Table7() { IcdName = "XXXXXX疾病8", Notes = "建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议" }); + tb.Add(new Table7() { IcdName = "XXXXXX疾病9", Notes = "建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议" }); + tb.Add(new Table7() { IcdName = "XXXXXX疾病10", Notes = "建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议建议" }); + return tb; + } + + public static List CreateTable8() + { + var tb = new List(); + tb.Add(new Table8() { PatientNo = "2401091235293785", PatientName = "李四", SexName = "男性", Age = "40岁", DeptName = "放射科" }); + tb.Add(new Table8() { PatientNo = "2401091235293785", PatientName = "李四1", SexName = "男性", Age = "40岁", DeptName = "放射科" }); + tb.Add(new Table8() { PatientNo = "2401091235293785", PatientName = "李四2", SexName = "男性", Age = "40岁", DeptName = "放射科" }); + tb.Add(new Table8() { PatientNo = "2401091235293785", PatientName = "李四3", SexName = "男性", Age = "40岁", DeptName = "放射科" }); + tb.Add(new Table8() { PatientNo = "2401091235293785", PatientName = "李四4", SexName = "男性", Age = "40岁", DeptName = "放射科" }); + tb.Add(new Table8() { PatientNo = "2401091235293785", PatientName = "李四5", SexName = "男性", Age = "40岁", DeptName = "放射科" }); + tb.Add(new Table8() { PatientNo = "2401091235293785", PatientName = "李四6", SexName = "男性", Age = "40岁", DeptName = "放射科" }); + tb.Add(new Table8() { PatientNo = "2401091235293785", PatientName = "李四7", SexName = "男性", Age = "40岁", DeptName = "放射科" }); + tb.Add(new Table8() { PatientNo = "2401091235293785", PatientName = "李四8", SexName = "男性", Age = "40岁", DeptName = "放射科" }); + return tb; + } + } + +} diff --git a/src/Shentun.Peis.Domain/ReportTemplates/CreateInspectionPersonnelPara.cs b/src/Shentun.Peis.Domain/ReportTemplates/CreateInspectionPersonnelPara.cs new file mode 100644 index 0000000..0f665bb --- /dev/null +++ b/src/Shentun.Peis.Domain/ReportTemplates/CreateInspectionPersonnelPara.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Shentun.Peis.ReportTemplates +{ + public class CreateInspectionPersonnelPara + { + /// + /// 单位ID 需要包含查出子级ID + /// + public Guid CustomerOrgId { get; set; } + + /// + /// 单位体检次数ID + /// + public Guid CustomerOrgRegisterId { get; set; } + + /// + /// + /// + public List CustomerOrgGroupId { get; set; } = new List(); + + /// + /// 日期类型(1、登记日期 2、体检日期 3、总检日期) + /// + public char DateType { get; set; } + + /// + /// 开始日期 + /// + public string StartDate { get; set; } + + + /// + /// 结束日期 + /// + public string EndDate { get; set; } + } +} diff --git a/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs b/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs new file mode 100644 index 0000000..4a111b5 --- /dev/null +++ b/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs @@ -0,0 +1,2330 @@ +using Microsoft.EntityFrameworkCore; +using Shentun.Peis.CustomerOrgs; +using Shentun.Peis.Enums; +using Shentun.Peis.Models; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TencentCloud.Bda.V20200324.Models; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Domain.Services; +using Xceed.Document.NET; +using Xceed.Words.NET; + +namespace Shentun.Peis.ReportTemplates +{ + /// + /// 单位体检报告管理 + /// + public class CustomerOrgReportManager : DomainService + { + private readonly IRepository _patientRegisterRepository; + private readonly CustomerOrgManager _customerOrgManager; + private readonly IRepository _registerCheckRepository; + private readonly IRepository _registerAsbitemRepository; + private readonly IRepository _asbitemRepository; + private readonly IRepository _itemTypeRepository; + private readonly IRepository _sexRepository; + private readonly IRepository _sumSummaryHeaderRepository; + private readonly IRepository _sumDiagnosisRepository; + private readonly IRepository _sumSuggestionHeaderRepository; + private readonly IRepository _customerOrgRepository; + + private readonly string DirectoryName = System.AppDomain.CurrentDomain.BaseDirectory + @"\ReportFile"; + + public CustomerOrgReportManager( + IRepository patientRegisterRepository, + CustomerOrgManager customerOrgManager, + IRepository registerCheckRepository, + IRepository registerAsbitemRepository, + IRepository asbitemRepository, + IRepository itemTypeRepository, + IRepository sexRepository, + IRepository sumSummaryHeaderRepository, + IRepository sumDiagnosisRepository, + IRepository sumSuggestionHeaderRepository, + IRepository customerOrgRepository) + { + _patientRegisterRepository = patientRegisterRepository; + _customerOrgManager = customerOrgManager; + _registerCheckRepository = registerCheckRepository; + _registerAsbitemRepository = registerAsbitemRepository; + _asbitemRepository = asbitemRepository; + _itemTypeRepository = itemTypeRepository; + _sexRepository = sexRepository; + _sumSummaryHeaderRepository = sumSummaryHeaderRepository; + _sumDiagnosisRepository = sumDiagnosisRepository; + _sumSuggestionHeaderRepository = sumSuggestionHeaderRepository; + _customerOrgRepository = customerOrgRepository; + } + + //public void CreateCustomerOrgPeisTemplateBak() + //{ + // DocX document = DocX.Create(DirectoryName + @"\CustomerOrgTemplate\单位体检报告模板.docx"); + + + // //第一页 + // Table p1Titletable = document.AddTable(1, 2); + // p1Titletable.Design = TableDesign.TableNormal; + // p1Titletable.Alignment = Alignment.center; + // Border b = new Border(); + // b.Color = Color.FromArgb(51, 153, 102); + // b.Size = BorderSize.six; + // p1Titletable.SetBorder(TableBorderType.Bottom, b); + // List rows = p1Titletable.Rows; + + // Row row0 = rows[0]; + // row0.Height = 65f; + // row0.Cells[0].Width = 50f; + // Xceed.Document.NET.Image logo = document.AddImage(DirectoryName + @"\CustomerOrgTemplate\logo_template.jpg"); + // Formatting p1TitleFormatting = new Formatting(); + // p1TitleFormatting.FontFamily = new Xceed.Document.NET.Font("宋体"); + // p1TitleFormatting.FontColor = Color.FromArgb(0, 128, 0); + // row0.Cells[0].Paragraphs[0].AppendPicture(logo.CreatePicture()); + // row0.Cells[0].VerticalAlignment = VerticalAlignment.Center; + // row0.Cells[1].Width = document.PageWidth - document.MarginLeft - document.MarginRight - 30f; + // row0.Cells[1].Paragraphs[0].Append("团体体检健康检查统计报告", p1TitleFormatting).FontSize(22).Alignment = Alignment.center; + // row0.Cells[1].VerticalAlignment = VerticalAlignment.Center; + // var pTitle = document.InsertParagraph(); + // pTitle.InsertTableAfterSelf(p1Titletable); + + // var p1TitleSec = document.InsertParagraph(); + // Formatting p1TitleSecFormatting = new Formatting(); + // p1TitleSecFormatting.FontFamily = new Xceed.Document.NET.Font("楷体"); + // p1TitleSecFormatting.Size = 26; + // CustomProperty org_years = new CustomProperty("org_year", "{体检年度}", p1TitleSecFormatting); + // CustomProperty org_name = new CustomProperty("org_name", "{体检单位}", p1TitleSecFormatting); + // p1TitleSec.Alignment = Alignment.right; + // p1TitleSec.AppendDocProperty(org_years, f: p1TitleSecFormatting); + // p1TitleSec.Append("年度", p1TitleSecFormatting); + // p1TitleSec.AppendDocProperty(org_name, f: p1TitleSecFormatting); + // document.InsertParagraph(); + // var p1TitleSecExt = document.InsertParagraph(); + // p1TitleSecFormatting.FontFamily = new Xceed.Document.NET.Font("隶书"); + // p1TitleSecFormatting.Size = 26; + // p1TitleSecExt.Alignment = Alignment.right; + // p1TitleSecExt.Append("团检报告", p1TitleSecFormatting); + // document.InsertParagraph(); + // Xceed.Document.NET.Image titleImg = document.AddImage(DirectoryName + @"\CustomerOrgTemplate\Page1.jpg"); + // var p1TitleImg = document.InsertParagraph(); + // p1TitleImg.Alignment = Alignment.center; + // p1TitleImg.AppendPicture(titleImg.CreatePicture()); + + // Table p1Contenttable = document.AddTable(5, 4); + // p1Contenttable.Design = TableDesign.TableNormal; + // List rowsContent = p1Contenttable.Rows; + + // Row row0Content = rowsContent[0]; + // Formatting p1TableContentFormatting = new Formatting(); + // p1TableContentFormatting.FontFamily = new Xceed.Document.NET.Font("楷体"); + // Border bTableContent = new Border(); + // bTableContent.Color = Color.FromArgb(0, 128, 0); + // bTableContent.Size = BorderSize.four; + // Formatting p1TableColumn1ContentFormatting = new Formatting(); + // p1TableColumn1ContentFormatting.FontFamily = new Xceed.Document.NET.Font("楷体"); + // p1TableColumn1ContentFormatting.Size = 18; + // CustomProperty cell_times = new CustomProperty("times", "{体检次数}", p1TitleSecFormatting); + // CustomProperty cell_beginDt = new CustomProperty("beginDt", "{体检日期}", p1TitleSecFormatting); + // CustomProperty cell_endDt = new CustomProperty("endDt", "{结束月份}", p1TitleSecFormatting); + // CustomProperty cell_createDt = new CustomProperty("createDt", "{制表日期}", p1TitleSecFormatting); + // CustomProperty cell_printDt = new CustomProperty("printDt", "{打印日期}", p1TitleSecFormatting); + // row0Content.Cells[0].Width = 200f; + // row0Content.Cells[1].Width = 150f; + // row0Content.Cells[2].Width = 300f; + // row0Content.Cells[1].Paragraphs[0].Append("体检次数", p1TableContentFormatting).FontSize(18).Alignment = Alignment.right; + // row0Content.Cells[1].VerticalAlignment = VerticalAlignment.Center; + // row0Content.Cells[2].Paragraphs[0].AppendDocProperty(cell_times, f: p1TableColumn1ContentFormatting).Alignment = Alignment.left; + // row0Content.Cells[2].VerticalAlignment = VerticalAlignment.Center; + // row0Content.Cells[2].SetBorder(TableCellBorderType.Bottom, bTableContent); + + // Row row1Content = rowsContent[1]; + // row1Content.Cells[1].Paragraphs[0].Append("体检日期", p1TableContentFormatting).FontSize(18).Alignment = Alignment.right; + // row1Content.Cells[1].VerticalAlignment = VerticalAlignment.Center; + // row1Content.Cells[2].Paragraphs[0].AppendDocProperty(cell_beginDt, f: p1TableColumn1ContentFormatting).FontSize(18).Alignment = Alignment.left; + // row1Content.Cells[2].VerticalAlignment = VerticalAlignment.Center; + // row1Content.Cells[2].SetBorder(TableCellBorderType.Bottom, bTableContent); + + // Row row2Content = rowsContent[2]; + // row2Content.Cells[1].Paragraphs[0].Append("结束月份", p1TableContentFormatting).FontSize(18).Alignment = Alignment.right; + // row2Content.Cells[1].VerticalAlignment = VerticalAlignment.Center; + // row2Content.Cells[2].Paragraphs[0].AppendDocProperty(cell_endDt, f: p1TableColumn1ContentFormatting).Alignment = Alignment.left; + // row2Content.Cells[2].VerticalAlignment = VerticalAlignment.Center; + // row2Content.Cells[2].SetBorder(TableCellBorderType.Bottom, bTableContent); + + // Row row3Content = rowsContent[3]; + // row3Content.Cells[1].Paragraphs[0].Append("制表日期", p1TableContentFormatting).FontSize(18).Alignment = Alignment.right; + // row3Content.Cells[1].VerticalAlignment = VerticalAlignment.Center; + // row3Content.Cells[2].Paragraphs[0].AppendDocProperty(cell_createDt, f: p1TableColumn1ContentFormatting).Alignment = Alignment.left; + // row3Content.Cells[2].VerticalAlignment = VerticalAlignment.Center; + + // Row row4Content = rowsContent[4]; + // row4Content.Cells[1].Paragraphs[0].Append("打印日期", p1TableContentFormatting).FontSize(18).Alignment = Alignment.right; + // row4Content.Cells[1].VerticalAlignment = VerticalAlignment.Center; + // row4Content.Cells[2].Paragraphs[0].AppendDocProperty(cell_printDt, f: p1TableColumn1ContentFormatting).Alignment = Alignment.left; + // row4Content.Cells[2].VerticalAlignment = VerticalAlignment.Center; + + // var p1Content = document.InsertParagraph(); + // p1Content.InsertTableAfterSelf(p1Contenttable); + + // for (int i = 0; i <= 10; i++) document.InsertParagraph(); + + // Table p1FootTable = document.AddTable(1, 1); + // p1FootTable.Design = TableDesign.TableNormal; + // List rowsFootTable = p1FootTable.Rows; + + // Row row0Foot = rowsFootTable[0]; + // row0Foot.Cells[0].Paragraphs[0].Append("医院体检中心 编制", p1TableContentFormatting).FontSize(14).Alignment = Alignment.right; + // row0Foot.Cells[0].VerticalAlignment = VerticalAlignment.Center; + // row0Foot.Cells[0].SetBorder(TableCellBorderType.Bottom, bTableContent); + + // var p1Foot = document.InsertParagraph(); + // p1Foot.InsertTableAfterSelf(p1FootTable); + + // var p1Foot1 = document.InsertParagraph(); + // p1Foot1.Append("体检中心地址:", p1TableContentFormatting).FontSize(10).Alignment = Alignment.right; + + // //第二页 + // p1Foot1.InsertPageBreakAfterSelf(); + // Xceed.Document.NET.Font f = new Xceed.Document.NET.Font("宋体"); + // var p2_1 = document.InsertParagraph("前言").Font(f).FontSize(14); + // document.InsertParagraph(); + // document.InsertParagraph("这是一本针对贵单位员工体检结果的综合分析资料,希望透过本资料,让贵单位主管能够了解员工的健康状况及可以改善的方向。").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + // document.InsertParagraph(@"这份报告包括五大部份:基础资料、体检异常情况统计、员工健康问题分析及保健建议、女性员工健康问题分析及保健建议、男性员工健康问题分析及保健建议、全体员工体检结果汇总。我们在每个部份都会提供重要的健康与疾病相关知识,以及后续应该如何处理等信息。让非常关心员工健康的您,知道如何再进一步改善或提倡健康促进活动。").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + // document.InsertParagraph(@"第一部份:参检人员构成情况").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + // document.InsertParagraph(@"第二部份:体检项目与体检项目的参检情况").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + // document.InsertParagraph(@"第三部份:全体员工体检结果汇总").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + // document.InsertParagraph(@"第四部份:本次体检异常结果检出统计").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + // document.InsertParagraph(@"第五部份: 本次体检前十大异常结果分析").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + // document.InsertParagraph(@"第六部份: 体检者未完成情况").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + // document.InsertParagraph(@"第七部分:常见体检异常结果分析及健康指导").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + // document.InsertParagraph(); + // document.InsertParagraph(@"医院体检中心另提供完善的后续服务,包括护理咨询服务、特色医院导诊服务、营养咨询等。有任何需要,请电洽相关部门,或拨打咨询专线咨询相关事宜。").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + // document.InsertParagraph(); + // document.InsertParagraph(@"定期健康检查对于员工健康的重要性相信您已知道,然而,更重要的是完成健康检查后,改善健康活动的开始,也就是健康促进的一级预防医学(适当的运动、均衡的饮食、身心休闲),这才是健康检查最终的目标。").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + // document.InsertParagraph(); + // document.InsertParagraph(@"完全依赖治疗的时代已经过去了,应定期健康检查,并落实健康促进的一级预防医学,这将是未来人类健康的不二法门。").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + // //第三页 + // var p2_last = document.InsertParagraph(); + // p2_last.InsertPageBreakAfterSelf(); + // document.InsertParagraph(@"一、参检人员构成情况").Font(f).FontSize(16); + + // Table p3Contenttable = document.AddTable(5, 10); + // p3Contenttable.Design = TableDesign.TableGrid; + // List p3rowsContent = p3Contenttable.Rows; + // Row p3Row0 = p3rowsContent[0]; + + // p3Contenttable.MergeCellsInColumn(0, 0, 1); + // p3Row0.Cells[0].Paragraphs[0].Append("情况类型").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row0.Cells[0].FillColor = Color.FromArgb(209, 245, 203); + // p3Row0.MergeCells(1, 4); + // p3Row0.Cells[1].Paragraphs[0].Append("人数").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row0.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + // p3Row0.MergeCells(2, 3); + // p3Row0.Cells[2].Paragraphs[0].Append("构成比率").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row0.Cells[2].FillColor = Color.FromArgb(209, 245, 203); + // p3Row0.MergeCells(3, 5); + // p3Row0.Cells[3].Paragraphs[0].Append("参检比率").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row0.Cells[3].FillColor = Color.FromArgb(209, 245, 203); + + // p3Contenttable.SetColumnWidth(0, 35f); + + // Row p3Row1 = p3rowsContent[1]; + // p3Row1.Cells[1].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row1.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + // p3Row1.Cells[2].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row1.Cells[2].FillColor = Color.FromArgb(209, 245, 203); + // p3Row1.Cells[3].Paragraphs[0].Append("其它").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row1.Cells[3].FillColor = Color.FromArgb(209, 245, 203); + // p3Row1.Cells[4].Paragraphs[0].Append("合计").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row1.Cells[4].FillColor = Color.FromArgb(209, 245, 203); + // p3Row1.Cells[5].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row1.Cells[5].FillColor = Color.FromArgb(209, 245, 203); + // p3Row1.Cells[6].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row1.Cells[6].FillColor = Color.FromArgb(209, 245, 203); + // p3Row1.Cells[7].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row1.Cells[7].FillColor = Color.FromArgb(209, 245, 203); + // p3Row1.Cells[8].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row1.Cells[8].FillColor = Color.FromArgb(209, 245, 203); + // p3Row1.Cells[9].Paragraphs[0].Append("平均").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row1.Cells[9].FillColor = Color.FromArgb(209, 245, 203); + + // Formatting p3TableFormatting = new Formatting(); + // p3TableFormatting.FontFamily = new Xceed.Document.NET.Font("宋体"); + // p3TableFormatting.Size = 10.5; + + // CustomProperty p3_tb_reg_man_num = new CustomProperty("regManNum", "{男性登记人数}"); + // CustomProperty p3_tb_reg_woman_num = new CustomProperty("regWomanNum", "{女性登记人数}"); + // CustomProperty p3_tb_reg_other_num = new CustomProperty("regOtherNum", "{其它登记人数}"); + // CustomProperty p3_tb_reg_total_num = new CustomProperty("regTotalNum", "{总登记人数}"); + // CustomProperty p3_tb_reg_man_rate = new CustomProperty("regManRate", "{男性登记人数占总登记人数百分比}"); + // CustomProperty p3_tb_reg_woman_rate = new CustomProperty("regWomanRate", "{女性登记人数占总登记人数百分比}"); + // CustomProperty p3_tb_real_man_num = new CustomProperty("realManNum", "{男性实检人数}"); + // CustomProperty p3_tb_real_woman_num = new CustomProperty("realWomanNum", "{女性实检人数}"); + // CustomProperty p3_tb_real_other_num = new CustomProperty("realOtherNum", "{其它实检人数}"); + // CustomProperty p3_tb_real_total_num = new CustomProperty("realTotalNum", "{总实检人数}"); + // CustomProperty p3_tb_real_man_rate = new CustomProperty("realManRate", "{男性实检人数占总实检人数百分比}"); + // CustomProperty p3_tb_real_woman_rate = new CustomProperty("realWomanRate", "{女性实检人数占总实检人数百分比}"); + // CustomProperty p3_tb_real_reg_man_rate = new CustomProperty("realRegManRate", "{男性实检人数占男性登记人数百分比}"); + // CustomProperty p3_tb_real_reg_woman_rate = new CustomProperty("realRegWomanRate", "{女性实检人数占女性登记人数百分比}"); + // CustomProperty p3_tb_real_reg_total_rate = new CustomProperty("realRegTotalRate", "{总实检人数占总登记人数百分比}"); + // CustomProperty p3_tb_notcheck_man_num = new CustomProperty("notcheckManNum", "{男性未检人数}"); + // CustomProperty p3_tb_notcheck_woman_num = new CustomProperty("notcheckWomanNum", "{女性未检人数}"); + // CustomProperty p3_tb_notcheck_other_num = new CustomProperty("notcheckOtherNum", "{其他未检人数}"); + // CustomProperty p3_tb_notcheck_total_num = new CustomProperty("notcheckTotalNum", "{总未检人数}"); + // CustomProperty p3_tb_notcheck_man_rate = new CustomProperty("notcheckManRate", "{男性未检人数占总未检人数百分比}"); + // CustomProperty p3_tb_notcheck_woman_rate = new CustomProperty("notcheckWoanRate", "{女性未检人数占总未检人数百分比}"); + // CustomProperty p3_tb_notcheck_reg_man_rate = new CustomProperty("notcheckRegManRate", "{男性未检人数占男性登记人数百分比}"); + // CustomProperty p3_tb_notcheck_reg_woman_rate = new CustomProperty("notcheckRegWomanRate", "{女性未检人数占女性登记人数百分比}"); + // CustomProperty p3_tb_notcheck_reg_total_rate = new CustomProperty("notcheckRegTotalRate", "{总未检人数占总登记人数百分比}"); + + // Row p3Row2 = p3rowsContent[2]; + // p3Row2.Cells[0].Paragraphs[0].Append("登记").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row2.Cells[1].Paragraphs[0].AppendDocProperty(p3_tb_reg_man_num).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row2.Cells[2].Paragraphs[0].AppendDocProperty(p3_tb_reg_woman_num).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row2.Cells[3].Paragraphs[0].AppendDocProperty(p3_tb_reg_other_num).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row2.Cells[4].Paragraphs[0].AppendDocProperty(p3_tb_reg_total_num).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row2.Cells[5].Paragraphs[0].AppendDocProperty(p3_tb_reg_man_rate).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row2.Cells[6].Paragraphs[0].AppendDocProperty(p3_tb_reg_woman_rate).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row2.Cells[7].Paragraphs[0].Append("100%").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row2.Cells[8].Paragraphs[0].Append("100%").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row2.Cells[9].Paragraphs[0].Append("100%").Font(f).FontSize(10.5).Alignment = Alignment.center; + + // Row p3Row3 = p3rowsContent[3]; + // p3Row3.Cells[0].Paragraphs[0].Append("实检").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row3.Cells[1].Paragraphs[0].AppendDocProperty(p3_tb_real_man_num).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row3.Cells[2].Paragraphs[0].AppendDocProperty(p3_tb_real_woman_num).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row3.Cells[3].Paragraphs[0].AppendDocProperty(p3_tb_real_other_num).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row3.Cells[4].Paragraphs[0].AppendDocProperty(p3_tb_real_total_num).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row3.Cells[5].Paragraphs[0].AppendDocProperty(p3_tb_real_man_rate).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row3.Cells[6].Paragraphs[0].AppendDocProperty(p3_tb_real_woman_rate).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row3.Cells[7].Paragraphs[0].AppendDocProperty(p3_tb_real_reg_man_rate).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row3.Cells[8].Paragraphs[0].AppendDocProperty(p3_tb_real_reg_woman_rate).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row3.Cells[9].Paragraphs[0].AppendDocProperty(p3_tb_real_reg_total_rate).Font(f).FontSize(10.5).Alignment = Alignment.center; + + // Row p3Row4 = p3rowsContent[4]; + // p3Row4.Cells[0].Paragraphs[0].Append("未检").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row4.Cells[1].Paragraphs[0].AppendDocProperty(p3_tb_notcheck_man_num).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row4.Cells[2].Paragraphs[0].AppendDocProperty(p3_tb_notcheck_woman_num).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row4.Cells[3].Paragraphs[0].AppendDocProperty(p3_tb_notcheck_other_num).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row4.Cells[4].Paragraphs[0].AppendDocProperty(p3_tb_notcheck_total_num).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row4.Cells[5].Paragraphs[0].AppendDocProperty(p3_tb_notcheck_man_rate).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row4.Cells[6].Paragraphs[0].AppendDocProperty(p3_tb_notcheck_woman_rate).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row4.Cells[7].Paragraphs[0].AppendDocProperty(p3_tb_notcheck_reg_man_rate).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row4.Cells[8].Paragraphs[0].AppendDocProperty(p3_tb_notcheck_reg_woman_rate).Font(f).FontSize(10.5).Alignment = Alignment.center; + // p3Row4.Cells[9].Paragraphs[0].AppendDocProperty(p3_tb_notcheck_reg_total_rate).Font(f).FontSize(10.5).Alignment = Alignment.center; + + // var p3Content = document.InsertParagraph(); + // p3Content.InsertTableAfterSelf(p3Contenttable); + + // document.InsertParagraph("参检百分比:").Font(f).FontSize(14).Alignment = Alignment.left; + // document.InsertParagraph().Alignment = Alignment.center; + // //var p3Chat1 = document.AddChart(); + // //p3Chat1.AddLegend(ChartLegendPosition.Right, true); + // //var p3ChatData1 = ChartData.CreateReferenceRate(); + + // //// 创建饼图并绑定数据 + // //var p3Chats1 = new Series("参检率"); + // //p3Chats1.Bind(p3ChatData1, "Category", "Expenses"); + // //p3Chat1.AddSeries(p3Chats1); + // //document.InsertChart(p3Chat1, 200f, 150f); + // //document.Paragraphs[document.Paragraphs.Count - 1].Alignment = Alignment.center; + + // document.InsertParagraph("参检性别百分比:").Font(f).FontSize(14).Alignment = Alignment.left; + // document.InsertParagraph().Alignment = Alignment.center; + // //var p3Chat2 = document.AddChart(); + // //p3Chat2.AddLegend(ChartLegendPosition.Right, true); + // //var p3ChatData2 = ChartData.CreateReferenceRateSex(); + + // //// 创建饼图并绑定数据 + // //var p3Chats2 = new Series("参检性别百分比"); + // //p3Chats2.Bind(p3ChatData2, "Category", "Expenses"); + // //p3Chat2.AddSeries(p3Chats2); + // //document.InsertChart(p3Chat2, 200f, 150f); + // //document.Paragraphs[document.Paragraphs.Count - 1].Alignment = Alignment.center; + // //var p3Paragraphs1 = document.Paragraphs.Where(p => p.Text.Equals("参检百分比:")).FirstOrDefault(); + // //第四页 + // document.Paragraphs[document.Paragraphs.Count - 1].InsertPageBreakAfterSelf(); + // document.InsertParagraph(@"二、体检项目与体检项目的参检情况").Font(f).FontSize(16); + // Table p4Contenttable = document.AddTable(3, 11); + // p4Contenttable.Design = TableDesign.TableGrid; + // List p4rowsContent = p4Contenttable.Rows; + + // p4Contenttable.SetColumnWidth(0, 55f); + // p4Contenttable.SetColumnWidth(1, 85f); + + // Row p4Row0 = p4rowsContent[0]; + // p4Row0.MergeCells(0, 1); + // p4Row0.Cells[0].Paragraphs[0].Append("体检项目").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p4Row0.Cells[0].FillColor = Color.FromArgb(209, 245, 203); + // p4Row0.MergeCells(1, 3); + // p4Row0.Cells[1].Paragraphs[0].Append("该项参检人数").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p4Row0.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + // p4Row0.MergeCells(2, 4); + // p4Row0.Cells[2].Paragraphs[0].Append("总体参检人数").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p4Row0.Cells[2].FillColor = Color.FromArgb(209, 245, 203); + // p4Row0.MergeCells(3, 5); + // p4Row0.Cells[3].Paragraphs[0].Append("该项参检百分比").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p4Row0.Cells[3].FillColor = Color.FromArgb(209, 245, 203); + + // Row p4Row1 = p4rowsContent[1]; + // p4Row1.Cells[0].Paragraphs[0].Append("检查科室").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p4Row1.Cells[0].FillColor = Color.FromArgb(209, 245, 203); + // p4Row1.Cells[1].Paragraphs[0].Append("项目名称").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p4Row1.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + // p4Row1.Cells[2].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p4Row1.Cells[2].FillColor = Color.FromArgb(209, 245, 203); + // p4Row1.Cells[3].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p4Row1.Cells[3].FillColor = Color.FromArgb(209, 245, 203); + // p4Row1.Cells[4].Paragraphs[0].Append("合计").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p4Row1.Cells[4].FillColor = Color.FromArgb(209, 245, 203); + // p4Row1.Cells[5].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p4Row1.Cells[5].FillColor = Color.FromArgb(209, 245, 203); + // p4Row1.Cells[6].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p4Row1.Cells[6].FillColor = Color.FromArgb(209, 245, 203); + // p4Row1.Cells[7].Paragraphs[0].Append("合计").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p4Row1.Cells[7].FillColor = Color.FromArgb(209, 245, 203); + // p4Row1.Cells[8].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p4Row1.Cells[8].FillColor = Color.FromArgb(209, 245, 203); + // p4Row1.Cells[9].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p4Row1.Cells[9].FillColor = Color.FromArgb(209, 245, 203); + // p4Row1.Cells[10].Paragraphs[0].Append("合计").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p4Row1.Cells[10].FillColor = Color.FromArgb(209, 245, 203); + // var p4Content = document.InsertParagraph(); + // p4Content.InsertTableAfterSelf(p4Contenttable); + + // //第五页 + // document.InsertParagraph().InsertPageBreakAfterSelf(); + // document.InsertParagraph(@"三、全体员工体检结果汇总").Font(f).FontSize(16); + // var p5Content = document.InsertParagraph(@"个人隐私请保密,仅供贵单位领导参阅").Font(f).FontSize(10.5); + // Table p5Contenttable = document.AddTable(2, 5); + // p5Contenttable.Design = TableDesign.TableGrid; + + // p5Contenttable.SetColumnWidth(0, 110f); + // p5Contenttable.SetColumnWidth(1, 75f); + // p5Contenttable.SetColumnWidth(2, 35f); + // p5Contenttable.SetColumnWidth(3, 45f); + // p5Contenttable.SetColumnWidth(4, document.PageWidth - document.MarginLeft - document.MarginRight - 265f); + // List p5rowsContent = p5Contenttable.Rows; + + // Row p5Row0 = p5rowsContent[0]; + // p5Row0.Cells[0].Paragraphs[0].Append("档案号").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p5Row0.Cells[0].FillColor = Color.FromArgb(209, 245, 203); + // p5Row0.Cells[1].Paragraphs[0].Append("姓名").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p5Row0.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + // p5Row0.Cells[2].Paragraphs[0].Append("性别").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p5Row0.Cells[2].FillColor = Color.FromArgb(209, 245, 203); + // p5Row0.Cells[3].Paragraphs[0].Append("年龄").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p5Row0.Cells[3].FillColor = Color.FromArgb(209, 245, 203); + // p5Row0.Cells[4].Paragraphs[0].Append("体检结果").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p5Row0.Cells[4].FillColor = Color.FromArgb(209, 245, 203); + // p5Content.InsertTableAfterSelf(p5Contenttable); + // document.InsertParagraph("(注: 敬请保护个人隐私, 本档案仅供贵单位负责职工健康体检的人员查阅! 未经员工本人同意, 不得外泄资料, 否则, 造成不良影响由贵单位承担, 与本中心无关!)").Font(f).FontSize(10.5); + + // document.InsertParagraph(); + // document.InsertParagraph(@"四、本次体检异常结果检出统计").Font(f).FontSize(16); + // var p5Content1 = document.InsertParagraph(@"贵单位此次在我中心进行员工体检,内容包括[登记组合项目][实检组合项目],现将检出的按男女综合检出数量最高的部分异常情况进行统计分析,以反映出员工的健康状况。").Font(f).FontSize(10.5); + + // Table p5Contenttable2 = document.AddTable(3, 8); + // p5Contenttable2.Design = TableDesign.TableGrid; + // p5Contenttable2.SetColumnWidth(0, 95f); + // p5Contenttable2.SetColumnWidth(1, 130f); + // p5Contenttable2.SetColumnWidth(2, 40f); + // p5Contenttable2.SetColumnWidth(3, 40f); + // p5Contenttable2.SetColumnWidth(4, 40f); + // p5Contenttable2.SetColumnWidth(5, 40f); + // p5Contenttable2.SetColumnWidth(6, 40f); + // p5Contenttable2.SetColumnWidth(7, 40f); + // List p5rowsContent2 = p5Contenttable2.Rows; + + // Row p5Table2Row0 = p5rowsContent2[0]; + // p5Table2Row0.MergeCells(0, 1); + // p5Table2Row0.Cells[0].Paragraphs[0].Append("体检结论").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p5Table2Row0.Cells[0].FillColor = Color.FromArgb(209, 245, 203); + // p5Table2Row0.MergeCells(1, 3); + // p5Table2Row0.Cells[1].Paragraphs[0].Append("人数").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p5Table2Row0.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + // p5Table2Row0.MergeCells(2, 4); + // p5Table2Row0.Cells[2].Paragraphs[0].Append("百分比").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p5Table2Row0.Cells[2].FillColor = Color.FromArgb(209, 245, 203); + + // Row p5Table2Row1 = p5rowsContent2[1]; + // p5Table2Row1.Cells[0].Paragraphs[0].Append("结论").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p5Table2Row1.Cells[0].FillColor = Color.FromArgb(209, 245, 203); + // p5Table2Row1.Cells[1].Paragraphs[0].Append("人员名单").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p5Table2Row1.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + // p5Table2Row1.Cells[2].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p5Table2Row1.Cells[2].FillColor = Color.FromArgb(209, 245, 203); + // p5Table2Row1.Cells[3].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p5Table2Row1.Cells[3].FillColor = Color.FromArgb(209, 245, 203); + // p5Table2Row1.Cells[4].Paragraphs[0].Append("合计").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p5Table2Row1.Cells[4].FillColor = Color.FromArgb(209, 245, 203); + // p5Table2Row1.Cells[5].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p5Table2Row1.Cells[5].FillColor = Color.FromArgb(209, 245, 203); + // p5Table2Row1.Cells[6].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p5Table2Row1.Cells[6].FillColor = Color.FromArgb(209, 245, 203); + // p5Table2Row1.Cells[7].Paragraphs[0].Append("平均").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p5Table2Row1.Cells[7].FillColor = Color.FromArgb(209, 245, 203); + // p5Content1.InsertTableAfterSelf(p5Contenttable2); + + // //第六页 + // document.InsertParagraph().InsertPageBreakAfterSelf(); + // document.InsertParagraph(@"前十大异常结果柱状图:").Font(f).FontSize(16); + // document.InsertParagraph().Alignment = Alignment.center; + // //var p6Chat1 = document.AddChart(); + // //p6Chat1.AddLegend(ChartLegendPosition.Right, false); + // //p6Chat1.BarDirection = BarDirection.Column;//指示柱状图是横向的还是纵向的:Column纵向,Bar横向 + // //p6Chat1.BarGrouping = BarGrouping.Stacked;//这个不好解释,一个4个枚举值,你一一试一遍就知道了 + // //p6Chat1.GapWidth = 200;//柱状图表的宽度 + // //p6Chat1.GapWidth = 200; + // //var usa = ChartData.CreateDisease(); + // //var p6Chats1 = new Series("疾病人数"); + // //p6Chats1.Color = Color.FromArgb(79, 129, 189); + // //p6Chats1.Bind(usa, "Category", "Expenses"); + // //p6Chat1.AddSeries(p6Chats1); + // //document.InsertChart(p6Chat1); + // document.InsertParagraph(); + // document.InsertParagraph(@"前十大异常结果饼图:").Font(f).FontSize(16); + // document.InsertParagraph().Alignment = Alignment.center; + // //var p6Chat2 = document.AddChart(); + // //p6Chat2.AddLegend(ChartLegendPosition.Right, true); + // //var p6ChatData2 = ChartData.CreateException(); + + // //// 创建饼图并绑定数据 + // //var p6Chats2 = new Series("疾病人数百分比"); + // //p6Chats2.Bind(p6ChatData2, "Category", "Expenses"); + // //p6Chat2.AddSeries(p6Chats2); + // //document.InsertChart(p6Chat2); + + // //第七页 + // document.InsertParagraph().InsertPageBreakAfterSelf(); + // document.InsertParagraph(@"该部分针对贵单位员工在我中心体检时,所检出的各种异常情况提供相关的分析与医疗保健建议").Font(f).FontSize(10.5); + // var p7Content = document.InsertParagraph(@"五、本次体检前十大异常结果分析").Font(f).FontSize(16); + + // Table p7Contenttable = document.AddTable(2, 2); + // p7Contenttable.Design = TableDesign.TableGrid; + // p7Contenttable.SetColumnWidth(0, 130f); + // p7Contenttable.SetColumnWidth(1, document.PageWidth - document.MarginLeft - document.MarginRight - 130f); + // List p7rowsContent = p7Contenttable.Rows; + // Row p7TableRow0 = p7rowsContent[0]; + // p7TableRow0.Cells[0].Paragraphs[0].Append("疾病").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p7TableRow0.Cells[0].FillColor = Color.FromArgb(209, 245, 203); + // p7TableRow0.Cells[1].Paragraphs[0].Append("建议").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p7TableRow0.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + // p7Content.InsertTableAfterSelf(p7Contenttable); + // document.InsertParagraph(); + // var p7Content1 = document.InsertParagraph(@"六、体检者未完成情况").Font(f).FontSize(16); + + // Table p7Contenttable1 = document.AddTable(2, 5); + // p7Contenttable1.Design = TableDesign.TableGrid; + // p7Contenttable1.SetColumnWidth(0, 110f); + // p7Contenttable1.SetColumnWidth(1, 95f); + // p7Contenttable1.SetColumnWidth(2, 45f); + // p7Contenttable1.SetColumnWidth(3, 45f); + // p7Contenttable1.SetColumnWidth(4, document.PageWidth - document.MarginLeft - document.MarginRight - 295f); + // List p7rowsContent1 = p7Contenttable1.Rows; + // Row p7Table2Row0 = p7rowsContent1[0]; + // p7Table2Row0.Cells[0].Paragraphs[0].Append("体检号").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p7Table2Row0.Cells[0].FillColor = Color.FromArgb(209, 245, 203); + // p7Table2Row0.Cells[1].Paragraphs[0].Append("姓名").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p7Table2Row0.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + // p7Table2Row0.Cells[2].Paragraphs[0].Append("性别").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p7Table2Row0.Cells[2].FillColor = Color.FromArgb(209, 245, 203); + // p7Table2Row0.Cells[3].Paragraphs[0].Append("年龄").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p7Table2Row0.Cells[3].FillColor = Color.FromArgb(209, 245, 203); + // p7Table2Row0.Cells[4].Paragraphs[0].Append("部门").Font(f).FontSize(10.5).Alignment = Alignment.center; + // p7Table2Row0.Cells[4].FillColor = Color.FromArgb(209, 245, 203); + + // p7Content1.InsertTableAfterSelf(p7Contenttable1); + // /* + // var numberedList = document.AddList("First List Item.", 0, ListItemType.Numbered); + // //Add a numbered list starting at 2 + // document.AddListItem(numberedList, "Second List Item."); + // document.AddListItem(numberedList, "Third list item."); + // document.AddListItem(numberedList, "First sub list item", 1); + + // document.AddListItem(numberedList, "Nested item.", 3); + // document.AddListItem(numberedList, "Fourth nested item."); + + // var bulletedList = document.AddList("First Bulleted Item.", 0, ListItemType.Bulleted); + // document.AddListItem(bulletedList, "Second bullet item"); + // document.AddListItem(bulletedList, "Sub bullet item", 1); + // document.AddListItem(bulletedList, "Second sub bullet item", 2); + // document.AddListItem(bulletedList, "Third bullet item"); + // document.InsertList(numberedList); + // document.InsertList(bulletedList); + // */ + // document.InsertParagraph(); + // document.InsertParagraph(@"七、常见体检异常结果分析及健康指导").Font(f).FontSize(16).SpacingAfter(10d).SetLineSpacing(LineSpacingType.Line, 13.8f); + // document.InsertParagraph(@"◆ 颈椎疾病健康指导").Font(f).FontSize(14).SpacingAfter(10d).SetLineSpacing(LineSpacingType.Line, 13.8f); + // document.InsertParagraph(@"【健康指导】").Font(f).FontSize(14).SpacingAfter(10d).SetLineSpacing(LineSpacingType.Line, 13.8f); + // int index = document.Paragraphs.Count; + // Formatting p7Formatting = new Formatting(); + // p7Formatting.FontFamily = new Xceed.Document.NET.Font("宋体"); + // p7Formatting.Size = 14; + + + // ListOptions listOptions = new ListOptions(); + // listOptions.ListType = ListItemType.Numbered; + + // var numberedList = document.AddList(listOptions); + // numberedList.AddListItem("颈椎病是指由于各种原因所致的颈椎结构的改变,如椎间盘的变性、突出,颈椎体边缘骨质增生,黄韧带肥厚、钙化或后纵韧带钙化,颈椎曲度异 常、椎间不稳等,直接压迫、刺激或通过压迫影响血液循环,使脊髓颈段、神经根、椎动脉或交感神经的功能损害,进而 发生组织结构损害,出现一系列临床征象,又有颈椎综合征之称。概括起来就是颈椎的椎间盘突出、骨质增生等压迫颈椎周围的神经、血管等导致的各种不适表现。", 0); + // numberedList.AddListItem("哪些人易患颈椎病,从事文字、电脑工作人员及学生最易患颈椎病。颈椎病的发病,年青人主要是外因,即姿势式疲劳和损伤,主要以姿势 疲劳为主。长时间同一姿势伏案工作,颈肩部的肌肉一 下处于紧张强下状态,血液循环不畅,极易导致颈椎肌肉劳损。中学生的书包越来越重,导致姿势不适合人体正常的生理弯曲,久而久之易患颈椎病;喜欢玩电脑、打游戏机的中学生也因长时间颈部保持一个姿势而导致颈部肌肉痉挛、劳损而发生颈椎病;对于中老年人来说,颈椎病则是身体的退行性病变的表现。\n\t 家庭康复治疗法:", 3); + // numberedList.AddListItem("如果不幸得颈椎病也不要紧张,应该及时就医。俗话说“三分治疗七分养”, 养即保养、康复预防之意。对于颈椎病,不要寄托在医院检查一下,吃些药就可以痊愈,该病本身就是一个退变性且极易复发的疾病。不注意疗效的巩固,很快可以再发作,所以应加倍注意。家庭的治疗如下。", 3); + // numberedList.AddListItem("在急性期最好能够少活动。", 3); + // numberedList.AddListItem("家里可以做自我牵引,如购买牵引带,一般情况下取 4~6 千克重 量,20~30 分钟/次,1~2 次/天或再多一点。牵引治疗 2~3 天,颈部肌肉紧张多可得至缓解,疼痛减轻。 或自己双手托住头部做向上拨伸的动作,效果一 样。", 3); + // numberedList.AddListItem("头项部可以外敷中药膏药,必要时可以用中药水热敷,可以疏筋活络, 缓解疼痛, 口服消炎止痛药如扶他林、芬必得等。", 3); + // numberedList.AddListItem("同时可以配合理疗,如微波红外线、针炙等。", 3); + // numberedList.AddListItem("急性期疼痛明显,影响日常工作、生活甚至整夜难眠者,针剌或神经根封闭,不失 为 一种有效的治疗方法,但应选择正规专业医师操作,以免发生意外。", 3); + // numberedList.AddListItem("日常防范方法:“防患于末然”对任何疾病都是适合的,不管有没有出现颈椎病的症状,改变不良工作生活习惯都非常重要,千万别委屈了你的脖子。 别委屈脖子对于经常低头工作的办公室工作人员,正确的姿势是关键,首先在坐姿上尽可能保持 自然的端坐位,头部略微前倾,保持头、颈、胸的正常生理曲 线,切不可头部过度前屈、身体前趴。对于长期伏案工作者,应每隔1小时左右,让颈部向左右转动数次,转动时应轻柔、缓慢,以达到该方向的最大运动范围为准;生活习惯低枕位休息,维持正常颈曲。选择适合自己的卧具,以晨起头颈无不适为度;改正躺在床上或沙发上,用垫子或枕头抬高头部看电视、看书的不良习 惯。", 3); + // numberedList.AddListItem("避免有害的活动 对长时间下象棋、打麻将者,奉劝还是少一些“娱乐”,多一些运动,因此种“娱乐”逐渐导致颈椎病的非常多见。 颈椎保健操要防止颈椎病的发生,除了要纠正不良姿势,注意防潮、防冷外,还应积极加强锻炼, 经常活动颈部,多做伸颈运动。办公室人员没时间锻炼,最 简单的锻炼可以以颈部为笔,头部为笔尖,反复写“米”字。这种伸颈运动可以改善颈部肌肉韧带的供血,使血液循环加 快,使肌肉韧带更加强壮,预防骨质疏松,从而减少颈 椎病的发生。", 3); + // document.InsertList(numberedList); + // document.InsertParagraph(@"◆ 代谢性疾病健康指导").Font(f).FontSize(16); + // document.InsertParagraph(@" 代谢性疾病主要为生活方式病,包括超重、肥胖、血糖偏高、血压偏高、高血脂、脂 肪肝、高尿酸等。").Font(f).FontSize(14); + // document.InsertParagraph(@"【高血脂】").Font(f).FontSize(14); + // document.InsertParagraph(@" 形成原因:膳食结构不合理,食物中胆固醇和饱和脂肪酸摄入过多,总热量过高, 应酬较多;体力活动过少;就个体而言与遗传基因有关。因此防治高血脂和肥胖对减少 冠心病、脑卒中,糖尿病、脂肪肝、胆结石的患病率和心脑血管意外有重要意义。").Font(f).FontSize(14); + // document.InsertParagraph(@" 预防建议:").Font(f).FontSize(14); + + // var numberedList1 = document.AddList(listOptions); + // numberedList1.AddListItem("用低脂、低热、低糖饮食、限制动物性脂肪、肥肉、禽类皮、动物内脏、浓肉汤、鱿鱼、墨斗鱼、鱼籽和蟹黄,少吃蛋黄,甜食,多吃蔬菜、水果和富含纤维素食物,提倡吃八分饱;", 1); + // numberedList1.AddListItem("持之以恒,坚持有氧运动,有氧运动有利于降低血脂,减肥, 降血压,预防糖尿病和减少血栓形成。有氧运动以运动后心率达到最大心率的 50~70% 为宜(最大心率=220-年龄)。运动方式可选择:快走、慢跑、骑车、爬楼梯和游泳等各 种可坚持的运动,每周不少于五天,每天不少于 20-40 分钟。", 1); + // document.InsertList(numberedList1); + // document.InsertParagraph(@"【超重或肥胖】").Font(f).FontSize(14); + + + // var numberedList2 = document.AddList(listOptions); + // numberedList2.AddListItem("概念:体重超重或肥胖是指体内脂肪积聚过多和(或)分布异常、体重增加,是由于遗 传或环境因素共同作用的结果。1999年,世界卫生组织已正式宣布肥胖为一种疾病。", 0); + // numberedList2.AddListItem("危害:", 0); + // numberedList2.AddListItem("寿命缩短:男性肥胖者的死亡率是正常人的1.5倍,女性是1.47倍。", 1); + // numberedList2.AddListItem("危害心理健康:影响美观、生活不便,会产生自卑、焦虑和抑郁等问题。", 1); + // numberedList2.AddListItem("诱发疾病:肥胖是导致2型糖尿病、心血管疾病、高血压、胆结石和癌症、内分泌、 代谢紊乱的重要危险因素。也可以引起关节痛、浮肿、活动耐力降低等。此外,肥胖还易使皮肤脆性增加,易发生皮炎、摩擦伤、并容易合并化脓性或真菌感染。 肥胖严重威胁健康,医学界称肥胖、高血压、高血脂和高血糖为“死亡四重奏”。", 1); + // numberedList2.AddListItem("原因(发病危险因素):\r\tA、遗传因素:家族史。 B、不良生活方式:偏爱高脂肪、高热量饮食,睡前或夜间用餐,体力活动少等。 C、年龄因素:男性中年以后,女性绝经期后生理功能减退,代谢减低,体力活动减少,而饮食摄入量未相应减少,造成摄入量超过消耗量而致肥胖。 D、精神因素:精神过度紧张及心理障碍,可引起食欲亢进,导致肥胖。 E、其他因素:药物、疾病等引起。", 0); + // numberedList2.AddListItem("症状与表现: A、男性肥胖多表现为“苹果型”肥胖,即内脏型或向心型肥胖脂肪沉积在腹部、臀部和背部;女性肥胖多表现为“梨型”肥胖,脂肪主要沉积在臀部、大腿。 B、中度以上肥胖者可出现活动后心悸、气短、嗜睡等症状。重度肥胖者可出现呼吸困难、浮肿、发绀、阵发性睡眠呼吸暂停综合症等。 C、合并高血压、糖尿病、血脂异常、痛风者可出现相应症状。", 0); + // numberedList2.AddListItem("防治: 非药物治疗", 0); + // numberedList2.AddListItem("认识肥胖症的危害;认识到单纯性肥胖是一种生活方式疾病;认识治疗肥胖症是一个自我控制的过程。改变生活方式,矫正饮食、行为习惯。", 1); + // numberedList2.AddListItem("控制摄入量,低脂、低热量、低嘌呤、低盐饮食,戒烟限酒。", 1); + // numberedList2.AddListItem("运动治疗,增加体力活动,加强锻炼。", 1); + // document.InsertList(numberedList2); + // document.InsertParagraph(@"【血糖偏高】").Font(f).FontSize(14); + + // var numberedList3 = document.AddList(listOptions); + // numberedList3.AddListItem("糖尿病诊断标准:", 0); + // numberedList3.AddListItem("症状+随机血糖≥11.1mmol/L;", 1); + // numberedList3.AddListItem("空腹血糖(FPG)≥7.0mmol/L(非同日两次空腹血糖);", 1); + // numberedList3.AddListItem("糖耐量试验(OGTT)中2小时血浆葡萄糖(2HPG)≥11.1mmol/L。", 1); + // numberedList3.AddListItem("血糖增高预防建议:", 0); + // numberedList3.AddListItem("普及糖尿病知识,充分认识糖尿病正在我国已进入多数的严重形势和预防方法。", 1); + // numberedList3.AddListItem("合理膳食避免营养过剩,提倡用低脂,少糖,富含纤维的膳食;C 坚持有氧运动。", 1); + // numberedList3.AddListItem("避免使用影响糖代谢的药物。", 1); + // numberedList3.AddListItem("定期复查血糖。", 1); + // numberedList3.AddListItem("年龄大于40岁,有糖尿病家族史,血糖或尿糖曾经异常者,应查餐后两小时血糖。", 1); + // numberedList3.AddListItem("糖尿病综合治疗原则:", 0); + // numberedList3.AddListItem("糖尿病教育。", 1); + // numberedList3.AddListItem("合理的饮食治疗。", 1); + // numberedList3.AddListItem("坚持运动治疗。", 1); + // numberedList3.AddListItem("正规的 药物治疗。", 1); + // numberedList3.AddListItem("定期病情监测。", 1); + // document.InsertList(numberedList3); + // document.InsertParagraph(@"【高血压】").Font(f).FontSize(14); + + + // var numberedList4 = document.AddList(listOptions); + // numberedList4.AddListItem("诊断标准:1999 年 10 月中国高血压联盟推荐新高血压诊断标准,未服降压药的情况下:收缩压≥140mmHg 和(或)舒张压≥90mmHg,即诊断高血压。以非同日多次(二次或 以上)复测平均值为依据,偶然一次不能诊断高血压。", 0); + // numberedList4.AddListItem("危害:患了高血压病,如果不加以控制,可导致脑卒中或冠心病等,将严重影响生 活质量,甚至威胁到生命。", 0); + // numberedList4.AddListItem("高血压病存在患病率高、致残率高、死亡率高,知晓率低、治疗率低、控制率低的 现象,也就是人们通常所说的“三高”、“三低”。", 0); + // numberedList4.AddListItem("病因或发病危险因素:", 0); + // numberedList4.AddListItem("体重超重或肥胖:体重超重和体重增加过快,是高血压病的危险因素。尤其内脏型肥胖,同时也是糖尿病和血脂异常的危险因素。", 1); + // numberedList4.AddListItem("饮酒:长期饮白酒达 50ml/每天以上,也是高血压病发病的危险因素;少量饮些红 葡萄酒可有预防冠心病的作用。", 1); + // numberedList4.AddListItem("长期高盐、低镁、低钙、低动物蛋白质饮食;膳食钠盐的摄入量与血压水平有显著 的相关性。", 1); + // numberedList4.AddListItem("长期精神紧张或超负荷工作,也是高血压病的危险因素。", 1); + // numberedList4.AddListItem("高血压的防治:", 0); + // numberedList4.AddListItem("增强自我保健意识,学会自我保健知识。", 1); + // numberedList4.AddListItem("定期监测:35岁以上人群至少每年要检查一次血压,以利早期发现血压增高,降低 人群高血压的发病率和患病率。", 1); + // numberedList4.AddListItem("预防超重和肥胖,保持理想体重,其中饮食(低盐、高钾、高钙、高动物蛋白质饮 食如奶类、动制品、鱼类、菜果类)、运动疗法(保持规律有氧运动非常重要),运动降压效 果最直接。", 1); + // numberedList4.AddListItem("讲究精神卫生;E、不吸烟;F、药物治疗原则。", 1); + // document.InsertList(numberedList4); + // document.InsertParagraph(@"【脂肪肝】").Font(f).FontSize(14); + + // var numberedList5 = document.AddList(listOptions); + // numberedList5.AddListItem("病因:目前我国脂肪肝发病率有增高趋势,多数与肥胖、高脂血症(以甘油三脂增 高关系更密切)、糖尿病、肝炎病史及嗜酒有关。", 0); + // numberedList5.AddListItem("建议:脂肪肝可双向发展,有效控制或消除上述促发因素,脂肪肝可明改善,因此建议: A 用低脂膳食,治疗高血脂症;B 坚持有氧运动,控制体重; C 限酒; D 避免对肝脏有害的药物; E 药物治疗:目前尚无明显有效治疗脂肪肝的药物,若肝 功能明显异常可选用保肝药物。", 0); + // document.InsertList(numberedList5); + // document.InsertParagraph(@"【高尿酸】").Font(f).FontSize(14); + + // var numberedList6 = document.AddList(listOptions); + // numberedList6.AddListItem("何谓高尿酸血症:\r\t嘌呤代谢物为尿酸,男性每 100 毫升血液中尿酸值在 8.7 毫克以上,女性 8 毫克以 上时,则称为高尿酸血症。", 0); + // numberedList6.AddListItem("建议:", 0); + // numberedList6.AddListItem("每天至少 2000mI 液体,多摄取低嘌呤、碱性食物,例如蔬菜。", 1); + // numberedList6.AddListItem("避免高嘌呤食物。", 1); + // numberedList6.AddListItem("避免喝酒、油炸食物。", 1); + // numberedList6.AddListItem("避免摄取肉汤或高汤。", 1); + // numberedList6.AddListItem("食欲不佳时,须注意补充含糖液体,以避免身体组织快速分解,诱发痛风。", 1); + // numberedList6.AddListItem("避免暴饮暴食。", 1); + // numberedList6.AddListItem("避免饥饿,因为肌肉被分解,致尿酸排出。", 1); + // numberedList6.AddListItem("避免使用阿司匹林类药物,以免妨碍尿酸排出。", 1); + // numberedList6.AddListItem("急性期:应去医院看病,选择药物治疗。", 1); + // numberedList6.AddListItem("缓解期:促进身体活动,应酌量选择(表二)食物,平时可多选择表一食物,少用高嘌 呤食物(表三)。", 1); + // numberedList6.AddListItem("维持理想体重:理想体重(公斤)=22×身高 2 (平方公尺)。", 1); + // numberedList6.AddListItem("痛风石的部位应注意保护皮肤,维持完整性。", 1); + // document.InsertList(numberedList6); + // document.InsertParagraph(@"◆ 眼科疾病").Font(f).FontSize(14); + + // var numberedList7 = document.AddList(listOptions); + // numberedList7.AddListItem("眼病体检的目的:", 0); + // numberedList7.AddListItem("及早发现眼病隐患:如青光眼、糖尿病视网膜病变。", 1); + // numberedList7.AddListItem("眼病咨询:如白内障是否需手术?视力不好是否需配镜?", 1); + // numberedList7.AddListItem("对全身健康状况评估,眼底是全身情况的缩印,高血压、高血糖、高血脂造成器官损害之前,在眼底会有所表现。我们在眼病筛查中对每一个受检者都进行了解释。", 1); + // numberedList7.AddListItem("建议:", 0); + // numberedList7.AddListItem("结膜炎,请注意用眼卫生,如症状明显,可局部 治疗。", 1); + // numberedList7.AddListItem("眼底杯盘比,建议到专科医院,测眼压,查视 野等。", 1); + // numberedList7.AddListItem("视网膜动脉硬化,建议低盐、清淡饮食,并请关注 血压、血脂、血糖及动脉硬化的防治。", 1); + // numberedList7.AddListItem("青光眼或可疑青光眼,需到医院青光眼专科复查。", 1); + // numberedList7.AddListItem("白内障需,考虑手术治疗。", 1); + // numberedList7.AddListItem("糖尿病性视网膜病变,Ⅲ期以下者需要控制血糖并每半年或一年观察眼底,Ⅲ 期及以上者应尽快到医院就诊。", 1); + // numberedList7.AddListItem("视网膜病变,需要监测血压和血糖情况并做相应治疗。", 1); + // numberedList7.AddListItem("黄斑病变,视力小于 0.3 时到医院就诊(陈旧性者不必复诊)。", 1); + // numberedList7.AddListItem("视网膜血管病变,监测血压和血糖情况做相应处理,非陈旧性者需医院就诊。", 1); + // numberedList7.AddListItem("视神经病变(萎缩/缺血性),需要检测血压血糖,每年随诊观察。", 1); + // document.InsertList(numberedList7); + // document.InsertParagraph(@"◆ 耳鼻喉疾病").Font(f).FontSize(14); + + // var numberedList8 = document.AddList(listOptions); + // numberedList8.AddListItem("过敏性鼻炎:建议查找过敏原,并避免与其接触,必要时专科治疗,平时注意加强锻炼, 增强机体免疫力,预防感冒。", 0); + // numberedList8.AddListItem("慢性咽炎:若症状明显,请专科治疗,平时少吃辛辣食物,少作长谈,避免有害气体及 粉尘的刺激。", 0); + // numberedList8.AddListItem("慢性鼻炎:请专科治疗,平时注意增强体质,提高机体抵抗力,预防感冒,祛除诱因。", 0); + // numberedList8.AddListItem("慢性扁桃体炎:请注意锻炼身体,增强体质,防止感冒,如反复发作请专科进一步治疗。", 0); + // document.InsertList(numberedList8); + // document.InsertParagraph(@"◆ 肝胆疾病").Font(f).FontSize(14); + // document.InsertParagraph(@"【肝功异常】").Font(f).FontSize(14); + // document.InsertParagraph(@"转氨酶除在肝脏外,还可分布在心、肾、骨骼肌、胰等组织中,当这些组织有病时, 也会引起血清转氨酶活性升高。如心肌炎、急性心肌梗塞时,血清转氨酶活性均会升高,除此之外,如胆石症、甲状腺机能亢进、伤寒、疟疾、感冒、大量服用阿斯匹林等,都可使血 清转氨酶升高,甚至在某些生理条件下如剧烈运动等,也会使转氨酶升高。").Font(f).FontSize(14); + // document.InsertParagraph(@"因此我们绝对不能一看到转氨酶升高就诊断为肝炎,而必须结合病人具体情况如症状 体征及其他检查综合分析,做出诊断,应注意以下几个问题:").Font(f).FontSize(14); + + // var numberedList9 = document.AddList(listOptions); + // numberedList9.AddListItem("血清转氨酶升高,仍以病毒性肝炎最为常见,而且转氨酶升高的幅度大(在正常值4 倍以上),且持续时间很长(大于 1 个月)。", 0); + // numberedList9.AddListItem("肝病时,转氨酶升高,只表示肝细胞受损,不能区别肝病的性质。如病毒性肝炎、 药物性肝炎等,都能使转氨酶升高。", 0); + // numberedList9.AddListItem("在临床上如发现转氨酶(特别是 ALT)下降,而胆红素反升高,往往说明病人病情严重,预后不良。如急性或亚急性重症肝炎。", 0); + // numberedList9.AddListItem("某些慢性肝炎或肝炎恢复期,转氨酶可以正常。", 0); + // numberedList9.AddListItem("总之,不能单靠转氨酶来诊断或否定肝炎,必须结合其他化验结果和临床表现进行全方面分析,方能诊断。", 0); + // document.InsertList(numberedList9); + // document.InsertParagraph(@"【肝囊肿、肝血管瘤】").Font(f).FontSize(14); + // document.InsertParagraph(@"应该定期复查,动态观察变化,必要专科时治疗,平时注意不要受外力撞击,以免破裂").Font(f).FontSize(14); + // document.InsertParagraph(@"【胆囊结石】").Font(f).FontSize(14); + + // var numberedList10 = document.AddList(listOptions); + // numberedList10.AddListItem("预防肠道寄生虫和细菌感染;", 0); + // numberedList10.AddListItem("饮食控制,少吃动物内脏鱼籽,蛋黄等高胆固醇膳食,增加膳食中纤维素含量。", 0); + // numberedList10.AddListItem("控制体重;", 0); + // numberedList10.AddListItem("纠正久坐少动的生活习惯。", 0); + // numberedList10.AddListItem("治疗:无并发症的胆结石,可根据个体情况选择;", 0); + // numberedList10.AddListItem("利胆排石综合治疗。", 1); + // numberedList10.AddListItem("药物溶石。", 1); + // numberedList10.AddListItem("体外碎石。", 1); + // numberedList10.AddListItem("内窥镜取石。", 1); + // numberedList10.AddListItem("腹腔镜手术。", 1); + // numberedList10.AddListItem("外科胆囊切除术等治疗。", 1); + // document.InsertList(numberedList10); + // document.InsertParagraph(@"【胆囊息肉】").Font(f).FontSize(14); + // document.InsertParagraph(@"胆囊息肉主要由慢性炎症引起,如息肉进一步增大,和/或合并胆囊多发结石,考虑手术治 疗;一般情况定期复查。").Font(f).FontSize(14); + // document.InsertParagraph(@"◆ 心血管疾病").Font(f).FontSize(14); + + // var numberedList11 = document.AddList(listOptions); + // numberedList11.AddListItem("T 波、ST-T 改变引起 T 波、ST-T 段改变的原因很多,需结合有关临床资料,综合分析做出诊断。有冠心病危险因素的人(A、有冠心病家庭史;B、高胆固醇血症;C、高血 压;D、糖尿病;E 吸烟;F 肥胖)近期出现上述心电图改变,与心肌缺血有关,可疑者需 专科医院进一步检查。", 0); + // numberedList11.AddListItem( "完全性右束支传导阻滞 可见于有器质性心脏病(冠心病、高血压性心脏病)者,偶 见于正常人。应注意复查心电图,有症状及时专科诊治。", 0); + // numberedList11.AddListItem( "房室传导阻滞:是比较常见的心律失常,在正常人群中的检出率约为 2%-5%,在器质 性心脏病患者中约占 20%-30%。它是心脏传导阻滞中最常见,也是很重要的一种。应注意 复查心电图,有症状及时专科诊治。", 0); + // numberedList11.AddListItem( "心脏早搏:无心脏病背景者,多为生理性原因,可半年复查;如频发早搏,请及时就 医;有心脏病者伴有早搏,建议专科治疗。", 0); + // numberedList11.AddListItem( "房颤:是一种十分常见的心律失常。据统计,60 岁以上人群中,房颤发生率 1%,并 随年龄而增加。有症状请专科就诊。", 0); + // numberedList11.AddListItem( "由于人们饮食习惯、生活习惯的改变,造成高脂血症患者增加, 若血脂质过高不加以 控制,再加上高血压、抽烟等因素的影响,使脂质沉淀物沉积在血管壁上,越积越厚,以致 血管管腔狭小,血流不通,使组织缺氧与营养缺乏, 这种情形发生在心脏冠状动脉时,首 先,引起心绞痛。若不积极治疗最后会造成心肌梗塞。", 0); + // numberedList11.AddListItem( "所以一旦出了问题应及早治疗並纠正不良饮食习惯,防止病情恶化,即使进行药物治 疗或医疗手术改善病情,仍然要配合饮食控制才能减少再复发的机会。", 0); + // numberedList11.AddListItem( "心血管疾病饮食原则:", 0); + // numberedList11.AddListItem( "维持理想体重。", 1); + // numberedList11.AddListItem( "控制脂质总摄入量。烹调时应注意用油量,宜多采用清蒸、 水煮、凉拌、燉、滷 等方式,禁用油炸的烹调方式,並少吃肥肉、鸡皮等油脂含量高的食物。", 1); + // numberedList11.AddListItem( "炒菜用油宜选用单元不饱和脂肪酸高者(如:橄榄油、菜籽 油、花生油);少用 饱和脂肪酸高者(如:猪油)。少吃胆固醇含量高的食物,如内脏类、蝦卵、鱼卵等,蛋可以吃但每周不超过二 到三个蛋黄为原则。", 1); + // numberedList11.AddListItem( "避免富含精制糖的食物(如蛋糕、甜食)。(见附表:富含 精制糖的食物)。", 1); + // numberedList11.AddListItem( "攝取富含 W-3 脂肪酸的鱼类(秋刀鱼、鲑鱼、鳗鱼等)。", 1); + // numberedList11.AddListItem( "减少钠量攝取。罐头、醃制食品及各种加工食品含钠量高, 应忌食。宜选择新鲜 食物自行制作,烹调时减少食盐的用量,其它含钠量高的调味品(味精、酱油、乌醋等)应 减少或避免使用。", 1); + // numberedList11.AddListItem( "多摄取含纤维质的食物(全穀类、蔬菜类、水果)。", 1); + // numberedList11.AddListItem( "避免烟、酒、含咖啡因饮料及其他刺激性食品。", 1); + // numberedList11.AddListItem( "有服用抗凝血剂的病患,要减少含维生素 K 多的食物,如绿色蔬菜(菠菜、甘蓝菜、萵苣、绿花椰菜)、肝脏。", 1); + // document.InsertList(numberedList11); + // document.InsertParagraph(@"◆ 肾脏疾病").Font(f).FontSize(14); + + // var numberedList12 = document.AddList(listOptions); + // numberedList12.AddListItem("肾结石\n建议平时多饮水,少吃高草酸食物,可做蹦跳运动,避免感染,请定期复查,必要时排石治疗。", 0); + // numberedList12.AddListItem( "肾囊肿", 0); + // numberedList12.AddListItem( "请定期复查,观察变化,若有症状专科治疗。", 1); + // numberedList12.AddListItem( "肾功能异常:建议控制膳食中蛋白质比例,近期复查,必要时专科诊治。如有肾脏病史,请及时肾内科诊治。", 1); + // numberedList12.AddListItem( "肾错构瘤\n属良性肿瘤,请定期复查,如有症状专科治疗", 0); + // numberedList12.AddListItem( "肾萎缩、肾盂增大\n建议专科进一步诊治", 0); + // document.InsertList(numberedList12); + // for (int i = index; i < document.Paragraphs.Count; i++) + // { + // document.Paragraphs[i].SpacingAfter(10d).SetLineSpacing(LineSpacingType.Line, 13.8f); + // ///document.Paragraphs[i].Alignment = Alignment.both; + // } + // //结束语页 + // document.InsertParagraph().InsertPageBreakAfterSelf(); + // document.InsertParagraph(@"结束语").Font(f).FontSize(14).Bold(true); + // document.InsertParagraph(); + // document.InsertParagraph(@"影响健康的因素很多,包括遗传基因、日常生活习惯、社会环境、医疗资源等等,其中,与一般民众息息相关的医疗资源,仅占影响健康因素的10%,最大的影响因素还是日常生活习惯及社会环境。根据世界卫生组织(WHO)的估计,75%的癌症是已知的环境因素所引起,而这些因素都是可以预防的,例如抽烟、酗酒。").Font(f).FontSize(10.5).IndentationFirstLine = 32.0f; + // document.InsertParagraph(); + // document.InsertParagraph(@"世界卫生组织(WHO)指出:“二十一世纪的医学不应该继续以疾病为主要研究对象,而应该以人类健康作为医学研究的主要方向。” 这个精神旨在宣告预防医学和健康保健将成为医学的主导。").Font(f).FontSize(10.5).IndentationFirstLine = 32f; + // document.InsertParagraph(); + // document.InsertParagraph(@"我中心愿以卓越的服务、优质的技术继续为贵单位提供医疗保健服务,从体检中发现健康问题,从保健中解决健康问题。").Font(f).FontSize(10.5).IndentationFirstLine = 32f; + // document.InsertParagraph(); + // document.InsertParagraph(@"最后,感谢您对国宾的支持,别忘了定期为员工安排健康检查。您的任何意见,都是我们成长的来源!敬请不吝指教。").Font(f).FontSize(10.5).IndentationFirstLine = 32f; + // document.InsertParagraph().InsertPageBreakAfterSelf(); + // //检后服务 + // Xceed.Document.NET.Font f1 = new Xceed.Document.NET.Font("黑体"); + // Xceed.Document.NET.Font f2 = new Xceed.Document.NET.Font("楷体"); + // Formatting pBottomFirstFormatting = new Formatting(); + // pBottomFirstFormatting.FontFamily = new Xceed.Document.NET.Font("黑体"); + // pBottomFirstFormatting.Size = 14; + // Formatting pBottomLastFormatting = new Formatting(); + // pBottomLastFormatting.FontFamily = new Xceed.Document.NET.Font("黑体"); + // pBottomLastFormatting.Size = 10.5; + // document.InsertParagraph(@"检后服务").Font(f1).FontSize(18); + // document.InsertParagraph(@"健康体检后,您需要健康维护和管理:").Font(f1).FontSize(10.5); + // var svr1 = document.InsertParagraph().Font(f1).FontSize(10.5); + // svr1.InsertText("1.", false, pBottomLastFormatting); + // svr1.InsertText("检后就诊", false, pBottomFirstFormatting); + // svr1.InsertText("--体检中发现的疾病由国内著名、省内著名的专家为您对接就诊,真正起到早发现、早诊断、早治疗。", false, pBottomLastFormatting); + // var svr2 = document.InsertParagraph().Font(f1).FontSize(10.5); + // svr2.InsertText("2.", false, pBottomLastFormatting); + // svr2.InsertText("常见病、疑难病预约就诊服务", false, pBottomFirstFormatting); + // svr2.InsertText("--请拨打健康服务热线。我们可以帮您用最短的时间预约上最合适您病情的专家,他们为国内著名、省内著名的专家在您需要时我们还可以通过绿色通道帮您预约外省外院著名专家。", false, pBottomLastFormatting); + // document.InsertParagraph("3.体检报告电话咨询服务。").Font(f1).FontSize(10.5); + // document.InsertParagraph("4.特殊检查预约服务(CT、MR等大型检查设备)。").Font(f1).FontSize(10.5); + // document.InsertParagraph("5.住院预约服务。").Font(f1).FontSize(10.5); + // document.InsertParagraph("6.外院就诊指导。").Font(f1).FontSize(10.5); + // document.InsertParagraph("您 健 康 的 管 家").Font(f1).FontSize(18).Italic(true).Alignment = Alignment.center; + // document.InsertParagraph("人生中偶然的病痛--有我们的关怀").Font(f2).FontSize(18).Bold(true).Italic(true).Alignment = Alignment.center; + // document.InsertParagraph("健康体检中心").Font(f).FontSize(16).Alignment = Alignment.center; + // document.InsertParagraph("团体体检汇总报告").Font(f).FontSize(16).Alignment = Alignment.center; + // document.InsertParagraph("企业员工健康检查统计报告").Font(f1).FontSize(22).Alignment = Alignment.center; + // document.InsertParagraph("【版权所有,翻印必究】").Font(f).FontSize(10.5).Alignment = Alignment.center; + // document.Save(); + //} + + + + /// + /// 根据模板创建报告 + /// + /// + public string CreateCustomerOrgPeisFromTemplate(UnitPhysicalExaminationReportExportWordData documentData) + { + DocX template = DocX.Load(DirectoryName + @"\CustomerOrgTemplate\单位体检报告模板.docx"); + template.DifferentFirstPage = true; + template.AddHeaders(); + Header header = template.Headers.Odd; + // Insert Paragraph in header + Paragraph paragraph = header.InsertParagraph(); + Xceed.Document.NET.Image logo = template.AddImage(DirectoryName + @"\CustomerOrgTemplate\header.jpg"); + var pic = logo.CreatePicture(); + pic.Width = 41.59f; + pic.Height = 30.3f; + paragraph.AppendPicture(pic); + paragraph.Append("\t\t\t\t健康体检中心"); + + template.AddFooters(); + Footer footer = template.Footers.Odd; + // Insert Paragraph in header + Paragraph paragraph1 = footer.InsertParagraph(); + paragraph1.Append("File Format Develoer Guide"); + #region 封面 + + template.ReplaceText(new StringReplaceTextOptions + { + SearchValue = "{MedicalTitle}", + NewValue = documentData.MedicalTitle + }); + + template.ReplaceText(new StringReplaceTextOptions + { + SearchValue = "{MedicalTimes}", + NewValue = documentData.MedicalTimes.ToString() + }); + + template.ReplaceText(new StringReplaceTextOptions + { + SearchValue = "{MedicalStartDate}", + NewValue = documentData.MedicalStartDate + }); + + template.ReplaceText(new StringReplaceTextOptions + { + SearchValue = "{MedicalEndDate}", + NewValue = documentData.MedicalEndDate + }); + + template.ReplaceText(new StringReplaceTextOptions + { + SearchValue = "{TabulationDate}", + NewValue = documentData.TabulationDate + }); + + template.ReplaceText(new StringReplaceTextOptions + { + SearchValue = "{PrintDate}", + NewValue = documentData.PrintDate + }); + + + #endregion + + + #region 参检人员构成情况 + + template.AddCustomProperty(new CustomProperty("Register_MaleNumber", documentData.RegisterDetail.MaleNumber)); + template.AddCustomProperty(new CustomProperty("Register_FemaleNumber", documentData.RegisterDetail.FemaleNumber)); + template.AddCustomProperty(new CustomProperty("Register_OtherNumber", documentData.RegisterDetail.OtherNumber)); + template.AddCustomProperty(new CustomProperty("Register_TotalNumber", documentData.RegisterDetail.TotalNumber)); + template.AddCustomProperty(new CustomProperty("Register_MaleRatio", documentData.RegisterDetail.MaleRatio)); + template.AddCustomProperty(new CustomProperty("Register_FemaleRatio", documentData.RegisterDetail.FemaleRatio)); + + template.AddCustomProperty(new CustomProperty("Checked_MaleNumber", documentData.CheckedDetail.MaleNumber)); + template.AddCustomProperty(new CustomProperty("Checked_FemaleNumber", documentData.CheckedDetail.FemaleNumber)); + template.AddCustomProperty(new CustomProperty("Checked_OtherNumber", documentData.CheckedDetail.OtherNumber)); + template.AddCustomProperty(new CustomProperty("Checked_TotalNumber", documentData.CheckedDetail.TotalNumber)); + template.AddCustomProperty(new CustomProperty("Checked_MaleRatio", documentData.CheckedDetail.MaleRatio)); + template.AddCustomProperty(new CustomProperty("Checked_FemaleRatio", documentData.CheckedDetail.FemaleRatio)); + template.AddCustomProperty(new CustomProperty("Checked_MaleExamineRatio", documentData.CheckedDetail.MaleExamineRatio)); + template.AddCustomProperty(new CustomProperty("Checked_FemaleExamineRatio", documentData.CheckedDetail.FemaleExamineRatio)); + template.AddCustomProperty(new CustomProperty("Checked_AverageExamineRatio", documentData.CheckedDetail.AverageExamineRatio)); + + template.AddCustomProperty(new CustomProperty("UnCheck_MaleNumber", documentData.UnCheckedDetail.MaleNumber)); + template.AddCustomProperty(new CustomProperty("UnCheck_FemaleNumber", documentData.UnCheckedDetail.FemaleNumber)); + template.AddCustomProperty(new CustomProperty("UnCheck_OtherNumber", documentData.UnCheckedDetail.OtherNumber)); + template.AddCustomProperty(new CustomProperty("UnCheck_TotalNumber", documentData.UnCheckedDetail.TotalNumber)); + template.AddCustomProperty(new CustomProperty("UnCheck_MaleRatio", documentData.UnCheckedDetail.MaleRatio)); + template.AddCustomProperty(new CustomProperty("UnCheck_FemaleRatio", documentData.UnCheckedDetail.FemaleRatio)); + template.AddCustomProperty(new CustomProperty("UnCheck_MaleExamineRatio", documentData.UnCheckedDetail.MaleExamineRatio)); + template.AddCustomProperty(new CustomProperty("UnCheck_FemaleExamineRatio", documentData.UnCheckedDetail.FemaleExamineRatio)); + template.AddCustomProperty(new CustomProperty("UnCheck_AverageExamineRatio", documentData.UnCheckedDetail.AverageExamineRatio)); + + #endregion + + #region 参检百分比 + var p3Paragraphs1 = template.Paragraphs.Where(p => p.Text.Equals("参检百分比:")).FirstOrDefault(); + var p3Chat1 = template.AddChart(); + p3Chat1.AddLegend(ChartLegendPosition.Right, true); + var p3ChatData1 = new List(); + p3ChatData1.Add(new ChartData() { Category = "未检", Expenses = documentData.UnCheckedDetail.TotalNumber }); + p3ChatData1.Add(new ChartData() { Category = "已检", Expenses = documentData.CheckedDetail.TotalNumber }); + + + // 创建饼图并绑定数据 + var p3Chats1 = new Series("参检百分比"); + p3Chats1.Bind(p3ChatData1, "Category", "Expenses"); + p3Chat1.AddSeries(p3Chats1); + template.InsertChartAfterParagraph(p3Chat1, p3Paragraphs1.NextParagraph, 200f, 150f); + #endregion + + #region 参检性别百分比 + var p3Paragraphs2 = template.Paragraphs.Where(p => p.Text.Equals("参检性别百分比:")).FirstOrDefault(); + var p3Chat2 = template.AddChart(); + p3Chat2.AddLegend(ChartLegendPosition.Right, true); + var p3ChatData2 = new List(); + p3ChatData2.Add(new ChartData() { Category = "男性", Expenses = documentData.CheckedDetail.MaleNumber }); + p3ChatData2.Add(new ChartData() { Category = "女性", Expenses = documentData.CheckedDetail.FemaleNumber }); + p3ChatData2.Add(new ChartData() { Category = "其他", Expenses = documentData.CheckedDetail.OtherNumber }); + + // 创建饼图并绑定数据 + var p3Chats2 = new Series("参检性别百分比"); + p3Chats2.Bind(p3ChatData2, "Category", "Expenses"); + p3Chat2.AddSeries(p3Chats2); + template.InsertChartAfterParagraph(p3Chat2, p3Paragraphs2.NextParagraph, 200f, 150f); + #endregion + + + #region 第二部分 体检项目得参检情况 + var table4 = template.Tables[4]; + var table4Data = documentData.MedicalItemExamineSituations; + int rowIndex = 2; + if (table4Data.Any()) + { + foreach (var item in table4Data) + { + table4.Rows[rowIndex].Cells[0].Paragraphs[0].Append(item.ItemTypeName); + table4.Rows[rowIndex].Cells[1].Paragraphs[0].Append(item.AsbitemName); + table4.Rows[rowIndex].Cells[2].Paragraphs[0].Append(item.MaleAsbitemCheckNumber.ToString()); + table4.Rows[rowIndex].Cells[3].Paragraphs[0].Append(item.FemaleAsbitemCheckNumber.ToString()); + table4.Rows[rowIndex].Cells[4].Paragraphs[0].Append(item.TotalAsbitemCheckNumber.ToString()); + table4.Rows[rowIndex].Cells[5].Paragraphs[0].Append(item.MaleSumCheckNumber.ToString()); + table4.Rows[rowIndex].Cells[6].Paragraphs[0].Append(item.FemaleSumCheckNumber.ToString()); + table4.Rows[rowIndex].Cells[7].Paragraphs[0].Append(item.TotalSumCheckNumber.ToString()); + table4.Rows[rowIndex].Cells[8].Paragraphs[0].Append(item.MaleAsbitemCheckRatio.ToString()); + table4.Rows[rowIndex].Cells[9].Paragraphs[0].Append(item.FemaleAsbitemCheckRatio.ToString()); + table4.Rows[rowIndex].Cells[10].Paragraphs[0].Append(item.TotalAsbitemCheckRatio.ToString()); + rowIndex++; + if (rowIndex - 2 < table4Data.Count) table4.InsertRow(); + + } + } + #endregion + + + #region 第三部分 全体员工体检结果汇总 + + var table5 = template.Tables[5]; + var table5Data = documentData.MedicalResultSummarys; + rowIndex = 1; + if (table5Data.Any()) + { + foreach (var item in table5Data) + { + table5.Rows[rowIndex].Cells[0].Paragraphs[0].Append(item.PatientNo); + table5.Rows[rowIndex].Cells[1].Paragraphs[0].Append(item.PatientName); + table5.Rows[rowIndex].Cells[2].Paragraphs[0].Append(item.SexName); + table5.Rows[rowIndex].Cells[3].Paragraphs[0].Append(item.Age); + table5.Rows[rowIndex].Cells[4].Paragraphs[0].Append(item.MedicalResult); + rowIndex++; + if (rowIndex - 1 < table5Data.Count) table5.InsertRow(); + } + } + + #endregion + + + #region 第四部分 体检异常结果检出统计 + + var table6 = template.Tables[6]; + var table6Data = documentData.MedicalAbnormalResultStatistics; + rowIndex = 2; + if (table6Data.Any()) + { + foreach (var item in table6Data) + { + table6.Rows[rowIndex].Cells[0].Paragraphs[0].Append(item.DiagnosisName); + table6.Rows[rowIndex].Cells[1].Paragraphs[0].Append(item.PatientDetail); + table6.Rows[rowIndex].Cells[2].Paragraphs[0].Append(item.MaleNumber.ToString()); + table6.Rows[rowIndex].Cells[3].Paragraphs[0].Append(item.FemaleNumber.ToString()); + table6.Rows[rowIndex].Cells[4].Paragraphs[0].Append(item.TotalNumber.ToString()); + table6.Rows[rowIndex].Cells[5].Paragraphs[0].Append(item.MaleRatio); + table6.Rows[rowIndex].Cells[6].Paragraphs[0].Append(item.FemaleRatio); + table6.Rows[rowIndex].Cells[7].Paragraphs[0].Append(item.AverageRatio); + rowIndex++; + if (rowIndex - 2 < table6Data.Count) table6.InsertRow(); + } + } + + #endregion + + + #region 十大异常柱状图 + var p3Paragraphs3 = template.Paragraphs.Where(p => p.Text.Equals("前十大异常结果柱状图:")).FirstOrDefault(); + var p6Chat1 = template.AddChart(); + p6Chat1.AddLegend(ChartLegendPosition.Right, false); + p6Chat1.BarDirection = BarDirection.Column;//指示柱状图是横向的还是纵向的:Column纵向,Bar横向 + p6Chat1.BarGrouping = BarGrouping.Stacked;//这个不好解释,一个4个枚举值,你一一试一遍就知道了 + p6Chat1.GapWidth = 200;//柱状图表的宽度 + p6Chat1.GapWidth = 200; + var p6ChatData = new List(); + if (documentData.MedicalAbnormalResultStatistics.Any()) + { + var medicalAbnormalResultStatisticsTop10 = documentData.MedicalAbnormalResultStatistics.Take(10); + foreach (var item in medicalAbnormalResultStatisticsTop10) + { + p6ChatData.Add(new ChartData() { Category = item.DiagnosisName, Expenses = item.TotalNumber }); + } + } + + var p6Chats1 = new Series("疾病人数"); + p6Chats1.Color = Color.FromArgb(79, 129, 189); + p6Chats1.Bind(p6ChatData, "Category", "Expenses"); + p6Chat1.AddSeries(p6Chats1); + template.InsertChartAfterParagraph(p6Chat1, p3Paragraphs3.NextParagraph); + #endregion + + #region 十大异常饼状图 + var p3Paragraphs4 = template.Paragraphs.Where(p => p.Text.Equals("前十大异常结果饼图:")).FirstOrDefault(); + var p6Chat2 = template.AddChart(); + p6Chat2.AddLegend(ChartLegendPosition.Right, true); + //var p6ChatData2 = new List(); + //p6ChatData2.Add(new ChartData() { Category = "疾病1", Expenses = 22 }); + //p6ChatData2.Add(new ChartData() { Category = "疾病2", Expenses = 22 }); + //p6ChatData2.Add(new ChartData() { Category = "疾病3", Expenses = 22 }); + //p6ChatData2.Add(new ChartData() { Category = "疾病4", Expenses = 4 }); + //p6ChatData2.Add(new ChartData() { Category = "疾病5", Expenses = 5 }); + //p6ChatData2.Add(new ChartData() { Category = "疾病6", Expenses = 6 }); + //p6ChatData2.Add(new ChartData() { Category = "疾病7", Expenses = 7 }); + //p6ChatData2.Add(new ChartData() { Category = "疾病8", Expenses = 8 }); + //p6ChatData2.Add(new ChartData() { Category = "疾病9", Expenses = 9 }); + //p6ChatData2.Add(new ChartData() { Category = "疾病10", Expenses = 10 }); + // 创建饼图并绑定数据 + var p6Chats2 = new Series("疾病人数百分比"); + p6Chats2.Bind(p6ChatData, "Category", "Expenses"); + p6Chat2.AddSeries(p6Chats2); + template.InsertChartAfterParagraph(p6Chat2, p3Paragraphs4.NextParagraph); + + #endregion + + + #region 第五部分 十大异常结果分析 + var table7 = template.Tables[7]; + var table7Data = documentData.MedicalTenAbnormalResults; + rowIndex = 1; + if (table7Data.Any()) + { + foreach (var item in table7Data) + { + table7.Rows[rowIndex].Cells[0].Paragraphs[0].Append(item.DiagnosisName); + table7.Rows[rowIndex].Cells[1].Paragraphs[0].Append(item.DiagnosisSuggestion); + rowIndex++; + if (rowIndex - 1 < table7Data.Count) table7.InsertRow(); + } + } + #endregion + + + #region 第六部分 体检者未完成情况 + var table8 = template.Tables[8]; + var table8Data = documentData.MedicalUnCheckedStatistics; + rowIndex = 1; + if (table8Data.Any()) + { + foreach (var item in table8Data) + { + table8.Rows[rowIndex].Cells[0].Paragraphs[0].Append(item.PatientNo); + table8.Rows[rowIndex].Cells[1].Paragraphs[0].Append(item.PatientName); + table8.Rows[rowIndex].Cells[2].Paragraphs[0].Append(item.SexName); + table8.Rows[rowIndex].Cells[3].Paragraphs[0].Append(item.Age); + table8.Rows[rowIndex].Cells[4].Paragraphs[0].Append(item.DepartmentName); + rowIndex++; + if (rowIndex - 1 < table8Data.Count) table8.InsertRow(); + } + } + #endregion + + + string documentName = $"{documentData.MedicalTitle}单位体检报告{DateTime.Now.ToString("yyyy_MM_dd_HH_mm")}.docx"; + + template.SaveAs(DirectoryName + $@"\CustomerOrgTemplate\docs\{documentName}"); + + return $"/ReportFile/CustomerOrgTemplate/docs/{documentName}"; + } + + + /// + /// 创建模板 + /// + public void CreateCustomerOrgPeisTemplate() + { + DocX document = DocX.Create(DirectoryName + @"\CustomerOrgTemplate\单位体检报告模板.docx"); + + + //第一页 + Table p1Titletable = document.AddTable(1, 2); + p1Titletable.Design = TableDesign.TableNormal; + p1Titletable.Alignment = Alignment.center; + Border b = new Border(); + b.Color = Color.FromArgb(51, 153, 102); + b.Size = BorderSize.six; + p1Titletable.SetBorder(TableBorderType.Bottom, b); + List rows = p1Titletable.Rows; + + Row row0 = rows[0]; + row0.Height = 65f; + row0.Cells[0].Width = 50f; + Xceed.Document.NET.Image logo = document.AddImage(DirectoryName + @"\CustomerOrgTemplate\logo_template.jpg"); + Formatting p1TitleFormatting = new Formatting(); + p1TitleFormatting.FontFamily = new Xceed.Document.NET.Font("宋体"); + p1TitleFormatting.FontColor = Color.FromArgb(0, 128, 0); + row0.Cells[0].Paragraphs[0].AppendPicture(logo.CreatePicture()); + row0.Cells[0].VerticalAlignment = VerticalAlignment.Center; + row0.Cells[1].Width = document.PageWidth - document.MarginLeft - document.MarginRight - 30f; + row0.Cells[1].Paragraphs[0].Append("团体体检健康检查统计报告", p1TitleFormatting).FontSize(22).Alignment = Alignment.center; + row0.Cells[1].VerticalAlignment = VerticalAlignment.Center; + var pTitle = document.InsertParagraph(); + pTitle.InsertTableAfterSelf(p1Titletable); + + + Formatting p1TitleSecFormatting = new Formatting(); + p1TitleSecFormatting.FontFamily = new Xceed.Document.NET.Font("楷体"); + p1TitleSecFormatting.Size = 26; + var p1TitleSec = document.InsertParagraph(); + p1TitleSec.Alignment = Alignment.right; + p1TitleSec.Append("{MedicalTitle}", p1TitleSecFormatting); + + + var p1TitleSecExt = document.InsertParagraph(); + p1TitleSecFormatting.FontFamily = new Xceed.Document.NET.Font("隶书"); + p1TitleSecFormatting.Size = 26; + p1TitleSecExt.Alignment = Alignment.right; + p1TitleSecExt.Append("团检报告", p1TitleSecFormatting); + document.InsertParagraph(); + Xceed.Document.NET.Image titleImg = document.AddImage(DirectoryName + @"\CustomerOrgTemplate\Page1.jpg"); + var p1TitleImg = document.InsertParagraph(); + p1TitleImg.Alignment = Alignment.center; + p1TitleImg.AppendPicture(titleImg.CreatePicture()); + + Table p1Contenttable = document.AddTable(5, 4); + p1Contenttable.Design = TableDesign.TableNormal; + List rowsContent = p1Contenttable.Rows; + + Row row0Content = rowsContent[0]; + Formatting p1TableContentFormatting = new Formatting(); + p1TableContentFormatting.FontFamily = new Xceed.Document.NET.Font("楷体"); + Border bTableContent = new Border(); + bTableContent.Color = Color.FromArgb(0, 128, 0); + bTableContent.Size = BorderSize.four; + Formatting p1TableColumn1ContentFormatting = new Formatting(); + p1TableColumn1ContentFormatting.FontFamily = new Xceed.Document.NET.Font("楷体"); + p1TableColumn1ContentFormatting.Size = 18; + + row0Content.Cells[0].Width = 200f; + row0Content.Cells[1].Width = 150f; + row0Content.Cells[2].Width = 300f; + row0Content.Cells[1].Paragraphs[0].Append("体检次数", p1TableContentFormatting).FontSize(18).Alignment = Alignment.right; + row0Content.Cells[1].VerticalAlignment = VerticalAlignment.Center; + row0Content.Cells[2].Paragraphs[0].Append("{MedicalTimes}", p1TableColumn1ContentFormatting).Alignment = Alignment.left; + row0Content.Cells[2].VerticalAlignment = VerticalAlignment.Center; + row0Content.Cells[2].SetBorder(TableCellBorderType.Bottom, bTableContent); + + Row row1Content = rowsContent[1]; + row1Content.Cells[1].Paragraphs[0].Append("体检日期", p1TableContentFormatting).FontSize(18).Alignment = Alignment.right; + row1Content.Cells[1].VerticalAlignment = VerticalAlignment.Center; + row1Content.Cells[2].Paragraphs[0].Append("{MedicalStartDate}", p1TableColumn1ContentFormatting).FontSize(18).Alignment = Alignment.left; + row1Content.Cells[2].VerticalAlignment = VerticalAlignment.Center; + row1Content.Cells[2].SetBorder(TableCellBorderType.Bottom, bTableContent); + + Row row2Content = rowsContent[2]; + row2Content.Cells[1].Paragraphs[0].Append("结束月份", p1TableContentFormatting).FontSize(18).Alignment = Alignment.right; + row2Content.Cells[1].VerticalAlignment = VerticalAlignment.Center; + row2Content.Cells[2].Paragraphs[0].Append("{MedicalEndDate}", p1TableColumn1ContentFormatting).Alignment = Alignment.left; + row2Content.Cells[2].VerticalAlignment = VerticalAlignment.Center; + row2Content.Cells[2].SetBorder(TableCellBorderType.Bottom, bTableContent); + + Row row3Content = rowsContent[3]; + row3Content.Cells[1].Paragraphs[0].Append("制表日期", p1TableContentFormatting).FontSize(18).Alignment = Alignment.right; + row3Content.Cells[1].VerticalAlignment = VerticalAlignment.Center; + row3Content.Cells[2].Paragraphs[0].Append("{TabulationDate}", p1TableColumn1ContentFormatting).Alignment = Alignment.left; + row3Content.Cells[2].VerticalAlignment = VerticalAlignment.Center; + + Row row4Content = rowsContent[4]; + row4Content.Cells[1].Paragraphs[0].Append("打印日期", p1TableContentFormatting).FontSize(18).Alignment = Alignment.right; + row4Content.Cells[1].VerticalAlignment = VerticalAlignment.Center; + row4Content.Cells[2].Paragraphs[0].Append("{PrintDate}", p1TableColumn1ContentFormatting).Alignment = Alignment.left; + row4Content.Cells[2].VerticalAlignment = VerticalAlignment.Center; + + var p1Content = document.InsertParagraph(); + p1Content.InsertTableAfterSelf(p1Contenttable); + + for (int i = 0; i <= 10; i++) document.InsertParagraph(); + + Table p1FootTable = document.AddTable(1, 1); + p1FootTable.Design = TableDesign.TableNormal; + List rowsFootTable = p1FootTable.Rows; + + Row row0Foot = rowsFootTable[0]; + row0Foot.Cells[0].Paragraphs[0].Append("医院体检中心 编制", p1TableContentFormatting).FontSize(14).Alignment = Alignment.right; + row0Foot.Cells[0].VerticalAlignment = VerticalAlignment.Center; + row0Foot.Cells[0].SetBorder(TableCellBorderType.Bottom, bTableContent); + + var p1Foot = document.InsertParagraph(); + p1Foot.InsertTableAfterSelf(p1FootTable); + + var p1Foot1 = document.InsertParagraph(); + p1Foot1.Append("体检中心地址:", p1TableContentFormatting).FontSize(10).Alignment = Alignment.right; + + //第二页 + p1Foot1.InsertPageBreakAfterSelf(); + Xceed.Document.NET.Font f = new Xceed.Document.NET.Font("宋体"); + var p2_1 = document.InsertParagraph("前言").Font(f).FontSize(14); + document.InsertParagraph(); + document.InsertParagraph("这是一本针对贵单位员工体检结果的综合分析资料,希望透过本资料,让贵单位主管能够了解员工的健康状况及可以改善的方向。").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + document.InsertParagraph(@"这份报告包括五大部份:基础资料、体检异常情况统计、员工健康问题分析及保健建议、女性员工健康问题分析及保健建议、男性员工健康问题分析及保健建议、全体员工体检结果汇总。我们在每个部份都会提供重要的健康与疾病相关知识,以及后续应该如何处理等信息。让非常关心员工健康的您,知道如何再进一步改善或提倡健康促进活动。").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + document.InsertParagraph(@"第一部份:参检人员构成情况").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + document.InsertParagraph(@"第二部份:体检项目与体检项目的参检情况").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + document.InsertParagraph(@"第三部份:全体员工体检结果汇总").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + document.InsertParagraph(@"第四部份:本次体检异常结果检出统计").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + document.InsertParagraph(@"第五部份: 本次体检前十大异常结果分析").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + document.InsertParagraph(@"第六部份: 体检者未完成情况").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + document.InsertParagraph(@"第七部分:常见体检异常结果分析及健康指导").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + document.InsertParagraph(); + document.InsertParagraph(@"医院体检中心另提供完善的后续服务,包括护理咨询服务、特色医院导诊服务、营养咨询等。有任何需要,请电洽相关部门,或拨打咨询专线咨询相关事宜。").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + document.InsertParagraph(); + document.InsertParagraph(@"定期健康检查对于员工健康的重要性相信您已知道,然而,更重要的是完成健康检查后,改善健康活动的开始,也就是健康促进的一级预防医学(适当的运动、均衡的饮食、身心休闲),这才是健康检查最终的目标。").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + document.InsertParagraph(); + document.InsertParagraph(@"完全依赖治疗的时代已经过去了,应定期健康检查,并落实健康促进的一级预防医学,这将是未来人类健康的不二法门。").Font(f).FontSize(12).IndentationFirstLine = 32.0f; + //第三页 + var p2_last = document.InsertParagraph(); + p2_last.InsertPageBreakAfterSelf(); + document.InsertParagraph(@"一、参检人员构成情况").Font(f).FontSize(16); + + Table p3Contenttable = document.AddTable(5, 10); + p3Contenttable.Design = TableDesign.TableGrid; + List p3rowsContent = p3Contenttable.Rows; + Row p3Row0 = p3rowsContent[0]; + + p3Contenttable.MergeCellsInColumn(0, 0, 1); + p3Row0.Cells[0].Paragraphs[0].Append("情况类型").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row0.Cells[0].FillColor = Color.FromArgb(209, 245, 203); + p3Row0.MergeCells(1, 4); + p3Row0.Cells[1].Paragraphs[0].Append("人数").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row0.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + p3Row0.MergeCells(2, 3); + p3Row0.Cells[2].Paragraphs[0].Append("构成比率").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row0.Cells[2].FillColor = Color.FromArgb(209, 245, 203); + p3Row0.MergeCells(3, 5); + p3Row0.Cells[3].Paragraphs[0].Append("参检比率").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row0.Cells[3].FillColor = Color.FromArgb(209, 245, 203); + + p3Contenttable.SetColumnWidth(0, 35f); + + Row p3Row1 = p3rowsContent[1]; + p3Row1.Cells[1].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row1.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + p3Row1.Cells[2].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row1.Cells[2].FillColor = Color.FromArgb(209, 245, 203); + p3Row1.Cells[3].Paragraphs[0].Append("其它").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row1.Cells[3].FillColor = Color.FromArgb(209, 245, 203); + p3Row1.Cells[4].Paragraphs[0].Append("合计").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row1.Cells[4].FillColor = Color.FromArgb(209, 245, 203); + p3Row1.Cells[5].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row1.Cells[5].FillColor = Color.FromArgb(209, 245, 203); + p3Row1.Cells[6].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row1.Cells[6].FillColor = Color.FromArgb(209, 245, 203); + p3Row1.Cells[7].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row1.Cells[7].FillColor = Color.FromArgb(209, 245, 203); + p3Row1.Cells[8].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row1.Cells[8].FillColor = Color.FromArgb(209, 245, 203); + p3Row1.Cells[9].Paragraphs[0].Append("平均").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row1.Cells[9].FillColor = Color.FromArgb(209, 245, 203); + + Formatting p3TableFormatting = new Formatting(); + p3TableFormatting.FontFamily = new Xceed.Document.NET.Font("宋体"); + p3TableFormatting.Size = 10.5; + + CustomProperty p3_Register_MaleNumber = new CustomProperty("Register_MaleNumber", "{男性登记人数}"); + CustomProperty p3_Register_FemaleNumber = new CustomProperty("Register_FemaleNumber", "{女性登记人数}"); + CustomProperty p3_Register_OtherNumber = new CustomProperty("Register_OtherNumber", "{其它登记人数}"); + CustomProperty p3_Register_TotalNumber = new CustomProperty("Register_TotalNumber", "{总登记人数}"); + CustomProperty p3_Register_MaleRatio = new CustomProperty("Register_MaleRatio", "{男性登记人数占总登记人数百分比}"); + CustomProperty p3_Register_FemaleRatio = new CustomProperty("Register_FemaleRatio", "{女性登记人数占总登记人数百分比}"); + + CustomProperty p3_Checked_MaleNumber = new CustomProperty("Checked_MaleNumber", "{男性实检人数}"); + CustomProperty p3_Checked_FemaleNumber = new CustomProperty("Checked_FemaleNumber", "{女性实检人数}"); + CustomProperty p3_Checked_OtherNumber = new CustomProperty("Checked_OtherNumber", "{其它实检人数}"); + CustomProperty p3_Checked_TotalNumber = new CustomProperty("Checked_TotalNumber", "{总实检人数}"); + CustomProperty p3_Checked_MaleRatio = new CustomProperty("Checked_MaleRatio", "{男性实检人数占总实检人数百分比}"); + CustomProperty p3_Checked_FemaleRatio = new CustomProperty("Checked_FemaleRatio", "{女性实检人数占总实检人数百分比}"); + CustomProperty p3_Checked_MaleExamineRatio = new CustomProperty("Checked_MaleExamineRatio", "{男性实检人数占男性登记人数百分比}"); + CustomProperty p3_Checked_FemaleExamineRatio = new CustomProperty("Checked_FemaleExamineRatio", "{女性实检人数占女性登记人数百分比}"); + CustomProperty p3_Checked_AverageExamineRatio = new CustomProperty("Checked_AverageExamineRatio", "{总实检人数占总登记人数百分比}"); + + + CustomProperty p3_UnCheck_MaleNumber = new CustomProperty("UnCheck_MaleNumber", "{男性未检人数}"); + CustomProperty p3_UnCheck_FemaleNumber = new CustomProperty("UnCheck_FemaleNumber", "{女性未检人数}"); + CustomProperty p3_UnCheck_OtherNumber = new CustomProperty("UnCheck_OtherNumber", "{其他未检人数}"); + CustomProperty p3_UnCheck_TotalNumber = new CustomProperty("UnCheck_TotalNumber", "{总未检人数}"); + CustomProperty p3_UnCheck_MaleRatio = new CustomProperty("UnCheck_MaleRatio", "{男性未检人数占总未检人数百分比}"); + CustomProperty p3_UnCheck_FemaleRatio = new CustomProperty("UnCheck_FemaleRatio", "{女性未检人数占总未检人数百分比}"); + CustomProperty p3_UnCheck_MaleExamineRatio = new CustomProperty("UnCheck_MaleExamineRatio", "{男性未检人数占男性登记人数百分比}"); + CustomProperty p3_UnCheck_FemaleExamineRatio = new CustomProperty("UnCheck_FemaleExamineRatio", "{女性未检人数占女性登记人数百分比}"); + CustomProperty p3_UnCheck_AverageExamineRatio = new CustomProperty("UnCheck_AverageExamineRatio", "{总未检人数占总登记人数百分比}"); + + + Row p3Row2 = p3rowsContent[2]; + p3Row2.Cells[0].Paragraphs[0].Append("登记").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row2.Cells[1].Paragraphs[0].AppendDocProperty(p3_Register_MaleNumber).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row2.Cells[2].Paragraphs[0].AppendDocProperty(p3_Register_FemaleNumber).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row2.Cells[3].Paragraphs[0].AppendDocProperty(p3_Register_OtherNumber).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row2.Cells[4].Paragraphs[0].AppendDocProperty(p3_Register_TotalNumber).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row2.Cells[5].Paragraphs[0].AppendDocProperty(p3_Register_MaleRatio).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row2.Cells[6].Paragraphs[0].AppendDocProperty(p3_Register_FemaleRatio).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row2.Cells[7].Paragraphs[0].Append("100%").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row2.Cells[8].Paragraphs[0].Append("100%").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row2.Cells[9].Paragraphs[0].Append("100%").Font(f).FontSize(10.5).Alignment = Alignment.center; + + Row p3Row3 = p3rowsContent[3]; + p3Row3.Cells[0].Paragraphs[0].Append("实检").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row3.Cells[1].Paragraphs[0].AppendDocProperty(p3_Checked_MaleNumber).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row3.Cells[2].Paragraphs[0].AppendDocProperty(p3_Checked_FemaleNumber).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row3.Cells[3].Paragraphs[0].AppendDocProperty(p3_Checked_OtherNumber).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row3.Cells[4].Paragraphs[0].AppendDocProperty(p3_Checked_TotalNumber).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row3.Cells[5].Paragraphs[0].AppendDocProperty(p3_Checked_MaleRatio).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row3.Cells[6].Paragraphs[0].AppendDocProperty(p3_Checked_FemaleRatio).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row3.Cells[7].Paragraphs[0].AppendDocProperty(p3_Checked_MaleExamineRatio).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row3.Cells[8].Paragraphs[0].AppendDocProperty(p3_Checked_FemaleExamineRatio).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row3.Cells[9].Paragraphs[0].AppendDocProperty(p3_Checked_AverageExamineRatio).Font(f).FontSize(10.5).Alignment = Alignment.center; + + + Row p3Row4 = p3rowsContent[4]; + p3Row4.Cells[0].Paragraphs[0].Append("未检").Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row4.Cells[1].Paragraphs[0].AppendDocProperty(p3_UnCheck_MaleNumber).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row4.Cells[2].Paragraphs[0].AppendDocProperty(p3_UnCheck_FemaleNumber).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row4.Cells[3].Paragraphs[0].AppendDocProperty(p3_UnCheck_OtherNumber).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row4.Cells[4].Paragraphs[0].AppendDocProperty(p3_UnCheck_TotalNumber).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row4.Cells[5].Paragraphs[0].AppendDocProperty(p3_UnCheck_MaleRatio).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row4.Cells[6].Paragraphs[0].AppendDocProperty(p3_UnCheck_FemaleRatio).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row4.Cells[7].Paragraphs[0].AppendDocProperty(p3_UnCheck_MaleExamineRatio).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row4.Cells[8].Paragraphs[0].AppendDocProperty(p3_UnCheck_FemaleExamineRatio).Font(f).FontSize(10.5).Alignment = Alignment.center; + p3Row4.Cells[9].Paragraphs[0].AppendDocProperty(p3_UnCheck_AverageExamineRatio).Font(f).FontSize(10.5).Alignment = Alignment.center; + + var p3Content = document.InsertParagraph(); + p3Content.InsertTableAfterSelf(p3Contenttable); + + document.InsertParagraph("参检百分比:").Font(f).FontSize(14).Alignment = Alignment.left; + document.InsertParagraph().Alignment = Alignment.center; + //var p3Chat1 = document.AddChart(); + //p3Chat1.AddLegend(ChartLegendPosition.Right, true); + //var p3ChatData1 = ChartData.CreateReferenceRate(); + + //// 创建饼图并绑定数据 + //var p3Chats1 = new Series("参检率"); + //p3Chats1.Bind(p3ChatData1, "Category", "Expenses"); + //p3Chat1.AddSeries(p3Chats1); + //document.InsertChart(p3Chat1, 200f, 150f); + //document.Paragraphs[document.Paragraphs.Count - 1].Alignment = Alignment.center; + + document.InsertParagraph("参检性别百分比:").Font(f).FontSize(14).Alignment = Alignment.left; + document.InsertParagraph().Alignment = Alignment.center; + //var p3Chat2 = document.AddChart(); + //p3Chat2.AddLegend(ChartLegendPosition.Right, true); + //var p3ChatData2 = ChartData.CreateReferenceRateSex(); + + //// 创建饼图并绑定数据 + //var p3Chats2 = new Series("参检性别百分比"); + //p3Chats2.Bind(p3ChatData2, "Category", "Expenses"); + //p3Chat2.AddSeries(p3Chats2); + //document.InsertChart(p3Chat2, 200f, 150f); + //document.Paragraphs[document.Paragraphs.Count - 1].Alignment = Alignment.center; + //var p3Paragraphs1 = document.Paragraphs.Where(p => p.Text.Equals("参检百分比:")).FirstOrDefault(); + //第四页 + document.Paragraphs[document.Paragraphs.Count - 1].InsertPageBreakAfterSelf(); + document.InsertParagraph(@"二、体检项目与体检项目的参检情况").Font(f).FontSize(16); + Table p4Contenttable = document.AddTable(3, 11); + p4Contenttable.Design = TableDesign.TableGrid; + List p4rowsContent = p4Contenttable.Rows; + + p4Contenttable.SetColumnWidth(0, 55f); + p4Contenttable.SetColumnWidth(1, 85f); + + Row p4Row0 = p4rowsContent[0]; + p4Row0.MergeCells(0, 1); + p4Row0.Cells[0].Paragraphs[0].Append("体检项目").Font(f).FontSize(10.5).Alignment = Alignment.center; + p4Row0.Cells[0].FillColor = Color.FromArgb(209, 245, 203); + p4Row0.MergeCells(1, 3); + p4Row0.Cells[1].Paragraphs[0].Append("该项参检人数").Font(f).FontSize(10.5).Alignment = Alignment.center; + p4Row0.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + p4Row0.MergeCells(2, 4); + p4Row0.Cells[2].Paragraphs[0].Append("总体参检人数").Font(f).FontSize(10.5).Alignment = Alignment.center; + p4Row0.Cells[2].FillColor = Color.FromArgb(209, 245, 203); + p4Row0.MergeCells(3, 5); + p4Row0.Cells[3].Paragraphs[0].Append("该项参检百分比").Font(f).FontSize(10.5).Alignment = Alignment.center; + p4Row0.Cells[3].FillColor = Color.FromArgb(209, 245, 203); + + Row p4Row1 = p4rowsContent[1]; + p4Row1.Cells[0].Paragraphs[0].Append("检查科室").Font(f).FontSize(10.5).Alignment = Alignment.center; + p4Row1.Cells[0].FillColor = Color.FromArgb(209, 245, 203); + p4Row1.Cells[1].Paragraphs[0].Append("项目名称").Font(f).FontSize(10.5).Alignment = Alignment.center; + p4Row1.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + p4Row1.Cells[2].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center; + p4Row1.Cells[2].FillColor = Color.FromArgb(209, 245, 203); + p4Row1.Cells[3].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center; + p4Row1.Cells[3].FillColor = Color.FromArgb(209, 245, 203); + p4Row1.Cells[4].Paragraphs[0].Append("合计").Font(f).FontSize(10.5).Alignment = Alignment.center; + p4Row1.Cells[4].FillColor = Color.FromArgb(209, 245, 203); + p4Row1.Cells[5].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center; + p4Row1.Cells[5].FillColor = Color.FromArgb(209, 245, 203); + p4Row1.Cells[6].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center; + p4Row1.Cells[6].FillColor = Color.FromArgb(209, 245, 203); + p4Row1.Cells[7].Paragraphs[0].Append("合计").Font(f).FontSize(10.5).Alignment = Alignment.center; + p4Row1.Cells[7].FillColor = Color.FromArgb(209, 245, 203); + p4Row1.Cells[8].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center; + p4Row1.Cells[8].FillColor = Color.FromArgb(209, 245, 203); + p4Row1.Cells[9].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center; + p4Row1.Cells[9].FillColor = Color.FromArgb(209, 245, 203); + p4Row1.Cells[10].Paragraphs[0].Append("合计").Font(f).FontSize(10.5).Alignment = Alignment.center; + p4Row1.Cells[10].FillColor = Color.FromArgb(209, 245, 203); + var p4Content = document.InsertParagraph(); + p4Content.InsertTableAfterSelf(p4Contenttable); + + //第五页 + document.InsertParagraph().InsertPageBreakAfterSelf(); + document.InsertParagraph(@"三、全体员工体检结果汇总").Font(f).FontSize(16); + var p5Content = document.InsertParagraph(@"个人隐私请保密,仅供贵单位领导参阅").Font(f).FontSize(10.5); + Table p5Contenttable = document.AddTable(2, 5); + p5Contenttable.Design = TableDesign.TableGrid; + + p5Contenttable.SetColumnWidth(0, 110f); + p5Contenttable.SetColumnWidth(1, 75f); + p5Contenttable.SetColumnWidth(2, 35f); + p5Contenttable.SetColumnWidth(3, 45f); + p5Contenttable.SetColumnWidth(4, document.PageWidth - document.MarginLeft - document.MarginRight - 265f); + List p5rowsContent = p5Contenttable.Rows; + + Row p5Row0 = p5rowsContent[0]; + p5Row0.Cells[0].Paragraphs[0].Append("档案号").Font(f).FontSize(10.5).Alignment = Alignment.center; + p5Row0.Cells[0].FillColor = Color.FromArgb(209, 245, 203); + p5Row0.Cells[1].Paragraphs[0].Append("姓名").Font(f).FontSize(10.5).Alignment = Alignment.center; + p5Row0.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + p5Row0.Cells[2].Paragraphs[0].Append("性别").Font(f).FontSize(10.5).Alignment = Alignment.center; + p5Row0.Cells[2].FillColor = Color.FromArgb(209, 245, 203); + p5Row0.Cells[3].Paragraphs[0].Append("年龄").Font(f).FontSize(10.5).Alignment = Alignment.center; + p5Row0.Cells[3].FillColor = Color.FromArgb(209, 245, 203); + p5Row0.Cells[4].Paragraphs[0].Append("体检结果").Font(f).FontSize(10.5).Alignment = Alignment.center; + p5Row0.Cells[4].FillColor = Color.FromArgb(209, 245, 203); + p5Content.InsertTableAfterSelf(p5Contenttable); + document.InsertParagraph("(注: 敬请保护个人隐私, 本档案仅供贵单位负责职工健康体检的人员查阅! 未经员工本人同意, 不得外泄资料, 否则, 造成不良影响由贵单位承担, 与本中心无关!)").Font(f).FontSize(10.5); + + document.InsertParagraph(); + document.InsertParagraph(@"四、本次体检异常结果检出统计").Font(f).FontSize(16); + var p5Content1 = document.InsertParagraph(@"贵单位此次在我中心进行员工体检,内容包括[登记组合项目][实检组合项目],现将检出的按男女综合检出数量最高的部分异常情况进行统计分析,以反映出员工的健康状况。").Font(f).FontSize(10.5); + + Table p5Contenttable2 = document.AddTable(3, 8); + p5Contenttable2.Design = TableDesign.TableGrid; + p5Contenttable2.SetColumnWidth(0, 95f); + p5Contenttable2.SetColumnWidth(1, 130f); + p5Contenttable2.SetColumnWidth(2, 40f); + p5Contenttable2.SetColumnWidth(3, 40f); + p5Contenttable2.SetColumnWidth(4, 40f); + p5Contenttable2.SetColumnWidth(5, 40f); + p5Contenttable2.SetColumnWidth(6, 40f); + p5Contenttable2.SetColumnWidth(7, 40f); + List p5rowsContent2 = p5Contenttable2.Rows; + + Row p5Table2Row0 = p5rowsContent2[0]; + p5Table2Row0.MergeCells(0, 1); + p5Table2Row0.Cells[0].Paragraphs[0].Append("体检结论").Font(f).FontSize(10.5).Alignment = Alignment.center; + p5Table2Row0.Cells[0].FillColor = Color.FromArgb(209, 245, 203); + p5Table2Row0.MergeCells(1, 3); + p5Table2Row0.Cells[1].Paragraphs[0].Append("人数").Font(f).FontSize(10.5).Alignment = Alignment.center; + p5Table2Row0.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + p5Table2Row0.MergeCells(2, 4); + p5Table2Row0.Cells[2].Paragraphs[0].Append("百分比").Font(f).FontSize(10.5).Alignment = Alignment.center; + p5Table2Row0.Cells[2].FillColor = Color.FromArgb(209, 245, 203); + + Row p5Table2Row1 = p5rowsContent2[1]; + p5Table2Row1.Cells[0].Paragraphs[0].Append("结论").Font(f).FontSize(10.5).Alignment = Alignment.center; + p5Table2Row1.Cells[0].FillColor = Color.FromArgb(209, 245, 203); + p5Table2Row1.Cells[1].Paragraphs[0].Append("人员名单").Font(f).FontSize(10.5).Alignment = Alignment.center; + p5Table2Row1.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + p5Table2Row1.Cells[2].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center; + p5Table2Row1.Cells[2].FillColor = Color.FromArgb(209, 245, 203); + p5Table2Row1.Cells[3].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center; + p5Table2Row1.Cells[3].FillColor = Color.FromArgb(209, 245, 203); + p5Table2Row1.Cells[4].Paragraphs[0].Append("合计").Font(f).FontSize(10.5).Alignment = Alignment.center; + p5Table2Row1.Cells[4].FillColor = Color.FromArgb(209, 245, 203); + p5Table2Row1.Cells[5].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center; + p5Table2Row1.Cells[5].FillColor = Color.FromArgb(209, 245, 203); + p5Table2Row1.Cells[6].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center; + p5Table2Row1.Cells[6].FillColor = Color.FromArgb(209, 245, 203); + p5Table2Row1.Cells[7].Paragraphs[0].Append("平均").Font(f).FontSize(10.5).Alignment = Alignment.center; + p5Table2Row1.Cells[7].FillColor = Color.FromArgb(209, 245, 203); + p5Content1.InsertTableAfterSelf(p5Contenttable2); + + //第六页 + document.InsertParagraph().InsertPageBreakAfterSelf(); + document.InsertParagraph(@"前十大异常结果柱状图:").Font(f).FontSize(16); + document.InsertParagraph().Alignment = Alignment.center; + //var p6Chat1 = document.AddChart(); + //p6Chat1.AddLegend(ChartLegendPosition.Right, false); + //p6Chat1.BarDirection = BarDirection.Column;//指示柱状图是横向的还是纵向的:Column纵向,Bar横向 + //p6Chat1.BarGrouping = BarGrouping.Stacked;//这个不好解释,一个4个枚举值,你一一试一遍就知道了 + //p6Chat1.GapWidth = 200;//柱状图表的宽度 + //p6Chat1.GapWidth = 200; + //var usa = ChartData.CreateDisease(); + //var p6Chats1 = new Series("疾病人数"); + //p6Chats1.Color = Color.FromArgb(79, 129, 189); + //p6Chats1.Bind(usa, "Category", "Expenses"); + //p6Chat1.AddSeries(p6Chats1); + //document.InsertChart(p6Chat1); + document.InsertParagraph(); + document.InsertParagraph(@"前十大异常结果饼图:").Font(f).FontSize(16); + document.InsertParagraph().Alignment = Alignment.center; + //var p6Chat2 = document.AddChart(); + //p6Chat2.AddLegend(ChartLegendPosition.Right, true); + //var p6ChatData2 = ChartData.CreateException(); + + //// 创建饼图并绑定数据 + //var p6Chats2 = new Series("疾病人数百分比"); + //p6Chats2.Bind(p6ChatData2, "Category", "Expenses"); + //p6Chat2.AddSeries(p6Chats2); + //document.InsertChart(p6Chat2); + + //第七页 + document.InsertParagraph().InsertPageBreakAfterSelf(); + document.InsertParagraph(@"该部分针对贵单位员工在我中心体检时,所检出的各种异常情况提供相关的分析与医疗保健建议").Font(f).FontSize(10.5); + var p7Content = document.InsertParagraph(@"五、本次体检前十大异常结果分析").Font(f).FontSize(16); + + Table p7Contenttable = document.AddTable(2, 2); + p7Contenttable.Design = TableDesign.TableGrid; + p7Contenttable.SetColumnWidth(0, 130f); + p7Contenttable.SetColumnWidth(1, document.PageWidth - document.MarginLeft - document.MarginRight - 130f); + List p7rowsContent = p7Contenttable.Rows; + Row p7TableRow0 = p7rowsContent[0]; + p7TableRow0.Cells[0].Paragraphs[0].Append("疾病").Font(f).FontSize(10.5).Alignment = Alignment.center; + p7TableRow0.Cells[0].FillColor = Color.FromArgb(209, 245, 203); + p7TableRow0.Cells[1].Paragraphs[0].Append("建议").Font(f).FontSize(10.5).Alignment = Alignment.center; + p7TableRow0.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + p7Content.InsertTableAfterSelf(p7Contenttable); + document.InsertParagraph(); + var p7Content1 = document.InsertParagraph(@"六、体检者未完成情况").Font(f).FontSize(16); + + Table p7Contenttable1 = document.AddTable(2, 5); + p7Contenttable1.Design = TableDesign.TableGrid; + p7Contenttable1.SetColumnWidth(0, 110f); + p7Contenttable1.SetColumnWidth(1, 95f); + p7Contenttable1.SetColumnWidth(2, 45f); + p7Contenttable1.SetColumnWidth(3, 45f); + p7Contenttable1.SetColumnWidth(4, document.PageWidth - document.MarginLeft - document.MarginRight - 295f); + List p7rowsContent1 = p7Contenttable1.Rows; + Row p7Table2Row0 = p7rowsContent1[0]; + p7Table2Row0.Cells[0].Paragraphs[0].Append("体检号").Font(f).FontSize(10.5).Alignment = Alignment.center; + p7Table2Row0.Cells[0].FillColor = Color.FromArgb(209, 245, 203); + p7Table2Row0.Cells[1].Paragraphs[0].Append("姓名").Font(f).FontSize(10.5).Alignment = Alignment.center; + p7Table2Row0.Cells[1].FillColor = Color.FromArgb(209, 245, 203); + p7Table2Row0.Cells[2].Paragraphs[0].Append("性别").Font(f).FontSize(10.5).Alignment = Alignment.center; + p7Table2Row0.Cells[2].FillColor = Color.FromArgb(209, 245, 203); + p7Table2Row0.Cells[3].Paragraphs[0].Append("年龄").Font(f).FontSize(10.5).Alignment = Alignment.center; + p7Table2Row0.Cells[3].FillColor = Color.FromArgb(209, 245, 203); + p7Table2Row0.Cells[4].Paragraphs[0].Append("部门").Font(f).FontSize(10.5).Alignment = Alignment.center; + p7Table2Row0.Cells[4].FillColor = Color.FromArgb(209, 245, 203); + + p7Content1.InsertTableAfterSelf(p7Contenttable1); + /* + var numberedList = document.AddList("First List Item.", 0, ListItemType.Numbered); + //Add a numbered list starting at 2 + document.AddListItem(numberedList, "Second List Item."); + document.AddListItem(numberedList, "Third list item."); + document.AddListItem(numberedList, "First sub list item", 1); + + document.AddListItem(numberedList, "Nested item.", 3); + document.AddListItem(numberedList, "Fourth nested item."); + + var bulletedList = document.AddList("First Bulleted Item.", 0, ListItemType.Bulleted); + document.AddListItem(bulletedList, "Second bullet item"); + document.AddListItem(bulletedList, "Sub bullet item", 1); + document.AddListItem(bulletedList, "Second sub bullet item", 2); + document.AddListItem(bulletedList, "Third bullet item"); + document.InsertList(numberedList); + document.InsertList(bulletedList); + */ + document.InsertParagraph(); + document.InsertParagraph(@"七、常见体检异常结果分析及健康指导").Font(f).FontSize(16).SpacingAfter(10d).SetLineSpacing(LineSpacingType.Line, 13.8f); + document.InsertParagraph(@"◆ 颈椎疾病健康指导").Font(f).FontSize(14).SpacingAfter(10d).SetLineSpacing(LineSpacingType.Line, 13.8f); + document.InsertParagraph(@"【健康指导】").Font(f).FontSize(14).SpacingAfter(10d).SetLineSpacing(LineSpacingType.Line, 13.8f); + int index = document.Paragraphs.Count; + Formatting p7Formatting = new Formatting(); + p7Formatting.FontFamily = new Xceed.Document.NET.Font("宋体"); + p7Formatting.Size = 14; + + + var numberedList = document.AddList("颈椎病是指由于各种原因所致的颈椎结构的改变,如椎间盘的变性、突出,颈椎体边缘骨质增生,黄韧带肥厚、钙化或后纵韧带钙化,颈椎曲度异 常、椎间不稳等,直接压迫、刺激或通过压迫影响血液循环,使脊髓颈段、神经根、椎动脉或交感神经的功能损害,进而 发生组织结构损害,出现一系列临床征象,又有颈椎综合征之称。概括起来就是颈椎的椎间盘突出、骨质增生等压迫颈椎周围的神经、血管等导致的各种不适表现。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList, "哪些人易患颈椎病,从事文字、电脑工作人员及学生最易患颈椎病。颈椎病的发病,年青人主要是外因,即姿势式疲劳和损伤,主要以姿势 疲劳为主。长时间同一姿势伏案工作,颈肩部的肌肉一 下处于紧张强下状态,血液循环不畅,极易导致颈椎肌肉劳损。中学生的书包越来越重,导致姿势不适合人体正常的生理弯曲,久而久之易患颈椎病;喜欢玩电脑、打游戏机的中学生也因长时间颈部保持一个姿势而导致颈部肌肉痉挛、劳损而发生颈椎病;对于中老年人来说,颈椎病则是身体的退行性病变的表现。\n\t 家庭康复治疗法:", 0, ListItemType.Numbered, null, false, false, p7Formatting); + numberedList = document.AddListItem(numberedList, "如果不幸得颈椎病也不要紧张,应该及时就医。俗话说“三分治疗七分养”, 养即保养、康复预防之意。对于颈椎病,不要寄托在医院检查一下,吃些药就可以痊愈,该病本身就是一个退变性且极易复发的疾病。不注意疗效的巩固,很快可以再发作,所以应加倍注意。家庭的治疗如下。", 3, ListItemType.Numbered, null, false, false, p7Formatting); + numberedList = document.AddListItem(numberedList, "在急性期最好能够少活动。", 3, ListItemType.Numbered, null, false, false, p7Formatting); + numberedList = document.AddListItem(numberedList, "家里可以做自我牵引,如购买牵引带,一般情况下取 4~6 千克重 量,20~30 分钟/次,1~2 次/天或再多一点。牵引治疗 2~3 天,颈部肌肉紧张多可得至缓解,疼痛减轻。 或自己双手托住头部做向上拨伸的动作,效果一 样。", 3, ListItemType.Numbered, null, false, false, p7Formatting); + numberedList = document.AddListItem(numberedList, "头项部可以外敷中药膏药,必要时可以用中药水热敷,可以疏筋活络, 缓解疼痛, 口服消炎止痛药如扶他林、芬必得等。", 3, ListItemType.Numbered, null, false, false, p7Formatting); + numberedList = document.AddListItem(numberedList, "同时可以配合理疗,如微波红外线、针炙等。", 3, ListItemType.Numbered, null, false, false, p7Formatting); + numberedList = document.AddListItem(numberedList, "急性期疼痛明显,影响日常工作、生活甚至整夜难眠者,针剌或神经根封闭,不失 为 一种有效的治疗方法,但应选择正规专业医师操作,以免发生意外。", 3, ListItemType.Numbered, null, false, false, p7Formatting); + numberedList = document.AddListItem(numberedList, "日常防范方法:“防患于末然”对任何疾病都是适合的,不管有没有出现颈椎病的症状,改变不良工作生活习惯都非常重要,千万别委屈了你的脖子。 别委屈脖子对于经常低头工作的办公室工作人员,正确的姿势是关键,首先在坐姿上尽可能保持 自然的端坐位,头部略微前倾,保持头、颈、胸的正常生理曲 线,切不可头部过度前屈、身体前趴。对于长期伏案工作者,应每隔1小时左右,让颈部向左右转动数次,转动时应轻柔、缓慢,以达到该方向的最大运动范围为准;生活习惯低枕位休息,维持正常颈曲。选择适合自己的卧具,以晨起头颈无不适为度;改正躺在床上或沙发上,用垫子或枕头抬高头部看电视、看书的不良习 惯。", 3, ListItemType.Numbered, null, false, false, p7Formatting); + numberedList = document.AddListItem(numberedList, "避免有害的活动 对长时间下象棋、打麻将者,奉劝还是少一些“娱乐”,多一些运动,因此种“娱乐”逐渐导致颈椎病的非常多见。 颈椎保健操要防止颈椎病的发生,除了要纠正不良姿势,注意防潮、防冷外,还应积极加强锻炼, 经常活动颈部,多做伸颈运动。办公室人员没时间锻炼,最 简单的锻炼可以以颈部为笔,头部为笔尖,反复写“米”字。这种伸颈运动可以改善颈部肌肉韧带的供血,使血液循环加 快,使肌肉韧带更加强壮,预防骨质疏松,从而减少颈 椎病的发生。", 3, ListItemType.Numbered, null, false, false, p7Formatting); + document.InsertList(numberedList); + document.InsertParagraph(@"◆ 代谢性疾病健康指导").Font(f).FontSize(16); + document.InsertParagraph(@" 代谢性疾病主要为生活方式病,包括超重、肥胖、血糖偏高、血压偏高、高血脂、脂 肪肝、高尿酸等。").Font(f).FontSize(14); + document.InsertParagraph(@"【高血脂】").Font(f).FontSize(14); + document.InsertParagraph(@" 形成原因:膳食结构不合理,食物中胆固醇和饱和脂肪酸摄入过多,总热量过高, 应酬较多;体力活动过少;就个体而言与遗传基因有关。因此防治高血脂和肥胖对减少 冠心病、脑卒中,糖尿病、脂肪肝、胆结石的患病率和心脑血管意外有重要意义。").Font(f).FontSize(14); + document.InsertParagraph(@" 预防建议:").Font(f).FontSize(14); + var numberedList1 = document.AddList("用低脂、低热、低糖饮食、限制动物性脂肪、肥肉、禽类皮、动物内脏、浓肉汤、鱿鱼、墨斗鱼、鱼籽和蟹黄,少吃蛋黄,甜食,多吃蔬菜、水果和富含纤维素食物,提倡吃八分饱;", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList1, "持之以恒,坚持有氧运动,有氧运动有利于降低血脂,减肥, 降血压,预防糖尿病和减少血栓形成。有氧运动以运动后心率达到最大心率的 50~70% 为宜(最大心率=220-年龄)。运动方式可选择:快走、慢跑、骑车、爬楼梯和游泳等各 种可坚持的运动,每周不少于五天,每天不少于 20-40 分钟。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.InsertList(numberedList1); + document.InsertParagraph(@"【超重或肥胖】").Font(f).FontSize(14); + var numberedList2 = document.AddList("概念:体重超重或肥胖是指体内脂肪积聚过多和(或)分布异常、体重增加,是由于遗 传或环境因素共同作用的结果。1999年,世界卫生组织已正式宣布肥胖为一种疾病。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList2, "危害:", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList2, "寿命缩短:男性肥胖者的死亡率是正常人的1.5倍,女性是1.47倍。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList2, "危害心理健康:影响美观、生活不便,会产生自卑、焦虑和抑郁等问题。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList2, "诱发疾病:肥胖是导致2型糖尿病、心血管疾病、高血压、胆结石和癌症、内分泌、 代谢紊乱的重要危险因素。也可以引起关节痛、浮肿、活动耐力降低等。此外,肥胖还易使皮肤脆性增加,易发生皮炎、摩擦伤、并容易合并化脓性或真菌感染。 肥胖严重威胁健康,医学界称肥胖、高血压、高血脂和高血糖为“死亡四重奏”。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList2, "原因(发病危险因素):\r\tA、遗传因素:家族史。 B、不良生活方式:偏爱高脂肪、高热量饮食,睡前或夜间用餐,体力活动少等。 C、年龄因素:男性中年以后,女性绝经期后生理功能减退,代谢减低,体力活动减少,而饮食摄入量未相应减少,造成摄入量超过消耗量而致肥胖。 D、精神因素:精神过度紧张及心理障碍,可引起食欲亢进,导致肥胖。 E、其他因素:药物、疾病等引起。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList2, "症状与表现: A、男性肥胖多表现为“苹果型”肥胖,即内脏型或向心型肥胖脂肪沉积在腹部、臀部和背部;女性肥胖多表现为“梨型”肥胖,脂肪主要沉积在臀部、大腿。 B、中度以上肥胖者可出现活动后心悸、气短、嗜睡等症状。重度肥胖者可出现呼吸困难、浮肿、发绀、阵发性睡眠呼吸暂停综合症等。 C、合并高血压、糖尿病、血脂异常、痛风者可出现相应症状。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList2, "防治: 非药物治疗", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList2, "认识肥胖症的危害;认识到单纯性肥胖是一种生活方式疾病;认识治疗肥胖症是一个自我控制的过程。改变生活方式,矫正饮食、行为习惯。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList2, "控制摄入量,低脂、低热量、低嘌呤、低盐饮食,戒烟限酒。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList2, "运动治疗,增加体力活动,加强锻炼。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.InsertList(numberedList2); + document.InsertParagraph(@"【血糖偏高】").Font(f).FontSize(14); + var numberedList3 = document.AddList("糖尿病诊断标准:", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList3, "症状+随机血糖≥11.1mmol/L;", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList3, "空腹血糖(FPG)≥7.0mmol/L(非同日两次空腹血糖);", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList3, "糖耐量试验(OGTT)中2小时血浆葡萄糖(2HPG)≥11.1mmol/L。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList3, "血糖增高预防建议:", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList3, "普及糖尿病知识,充分认识糖尿病正在我国已进入多数的严重形势和预防方法。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList3, "合理膳食避免营养过剩,提倡用低脂,少糖,富含纤维的膳食;C 坚持有氧运动。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList3, "避免使用影响糖代谢的药物。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList3, "定期复查血糖。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList3, "年龄大于40岁,有糖尿病家族史,血糖或尿糖曾经异常者,应查餐后两小时血糖。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList3, "糖尿病综合治疗原则:", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList3, "糖尿病教育。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList3, "合理的饮食治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList3, "坚持运动治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList3, "正规的 药物治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList3, "定期病情监测。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.InsertList(numberedList3); + document.InsertParagraph(@"【高血压】").Font(f).FontSize(14); + var numberedList4 = document.AddList("诊断标准:1999 年 10 月中国高血压联盟推荐新高血压诊断标准,未服降压药的情况下:收缩压≥140mmHg 和(或)舒张压≥90mmHg,即诊断高血压。以非同日多次(二次或 以上)复测平均值为依据,偶然一次不能诊断高血压。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList4, "危害:患了高血压病,如果不加以控制,可导致脑卒中或冠心病等,将严重影响生 活质量,甚至威胁到生命。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList4, "高血压病存在患病率高、致残率高、死亡率高,知晓率低、治疗率低、控制率低的 现象,也就是人们通常所说的“三高”、“三低”。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList4, "病因或发病危险因素:", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList4, "体重超重或肥胖:体重超重和体重增加过快,是高血压病的危险因素。尤其内脏型肥胖,同时也是糖尿病和血脂异常的危险因素。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList4, "饮酒:长期饮白酒达 50ml/每天以上,也是高血压病发病的危险因素;少量饮些红 葡萄酒可有预防冠心病的作用。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList4, "长期高盐、低镁、低钙、低动物蛋白质饮食;膳食钠盐的摄入量与血压水平有显著 的相关性。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList4, "长期精神紧张或超负荷工作,也是高血压病的危险因素。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList4, "高血压的防治:", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList4, "增强自我保健意识,学会自我保健知识。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList4, "定期监测:35岁以上人群至少每年要检查一次血压,以利早期发现血压增高,降低 人群高血压的发病率和患病率。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList4, "预防超重和肥胖,保持理想体重,其中饮食(低盐、高钾、高钙、高动物蛋白质饮 食如奶类、动制品、鱼类、菜果类)、运动疗法(保持规律有氧运动非常重要),运动降压效 果最直接。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList4, "讲究精神卫生;E、不吸烟;F、药物治疗原则。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.InsertList(numberedList4); + document.InsertParagraph(@"【脂肪肝】").Font(f).FontSize(14); + var numberedList5 = document.AddList("病因:目前我国脂肪肝发病率有增高趋势,多数与肥胖、高脂血症(以甘油三脂增 高关系更密切)、糖尿病、肝炎病史及嗜酒有关。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList5, "建议:脂肪肝可双向发展,有效控制或消除上述促发因素,脂肪肝可明改善,因此建议: A 用低脂膳食,治疗高血脂症;B 坚持有氧运动,控制体重; C 限酒; D 避免对肝脏有害的药物; E 药物治疗:目前尚无明显有效治疗脂肪肝的药物,若肝 功能明显异常可选用保肝药物。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.InsertList(numberedList5); + document.InsertParagraph(@"【高尿酸】").Font(f).FontSize(14); + var numberedList6 = document.AddList("何谓高尿酸血症:\r\t嘌呤代谢物为尿酸,男性每 100 毫升血液中尿酸值在 8.7 毫克以上,女性 8 毫克以 上时,则称为高尿酸血症。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList6, "建议:", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList6, "每天至少 2000mI 液体,多摄取低嘌呤、碱性食物,例如蔬菜。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList6, "避免高嘌呤食物。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList6, "避免喝酒、油炸食物。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList6, "避免摄取肉汤或高汤。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList6, "食欲不佳时,须注意补充含糖液体,以避免身体组织快速分解,诱发痛风。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList6, "避免暴饮暴食。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList6, "避免饥饿,因为肌肉被分解,致尿酸排出。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList6, "避免使用阿司匹林类药物,以免妨碍尿酸排出。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList6, "急性期:应去医院看病,选择药物治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList6, "缓解期:促进身体活动,应酌量选择(表二)食物,平时可多选择表一食物,少用高嘌 呤食物(表三)。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList6, "维持理想体重:理想体重(公斤)=22×身高 2 (平方公尺)。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList6, "痛风石的部位应注意保护皮肤,维持完整性。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.InsertList(numberedList6); + document.InsertParagraph(@"◆ 眼科疾病").Font(f).FontSize(14); + var numberedList7 = document.AddList("眼病体检的目的:", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList7, "及早发现眼病隐患:如青光眼、糖尿病视网膜病变。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList7, "眼病咨询:如白内障是否需手术?视力不好是否需配镜?", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList7, "对全身健康状况评估,眼底是全身情况的缩印,高血压、高血糖、高血脂造成器官损害之前,在眼底会有所表现。我们在眼病筛查中对每一个受检者都进行了解释。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList7, "建议:", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList7, "结膜炎,请注意用眼卫生,如症状明显,可局部 治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList7, "眼底杯盘比,建议到专科医院,测眼压,查视 野等。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList7, "视网膜动脉硬化,建议低盐、清淡饮食,并请关注 血压、血脂、血糖及动脉硬化的防治。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList7, "青光眼或可疑青光眼,需到医院青光眼专科复查。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList7, "白内障需,考虑手术治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList7, "糖尿病性视网膜病变,Ⅲ期以下者需要控制血糖并每半年或一年观察眼底,Ⅲ 期及以上者应尽快到医院就诊。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList7, "视网膜病变,需要监测血压和血糖情况并做相应治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList7, "黄斑病变,视力小于 0.3 时到医院就诊(陈旧性者不必复诊)。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList7, "视网膜血管病变,监测血压和血糖情况做相应处理,非陈旧性者需医院就诊。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList7, "视神经病变(萎缩/缺血性),需要检测血压血糖,每年随诊观察。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.InsertList(numberedList7); + document.InsertParagraph(@"◆ 耳鼻喉疾病").Font(f).FontSize(14); + var numberedList8 = document.AddList("过敏性鼻炎:建议查找过敏原,并避免与其接触,必要时专科治疗,平时注意加强锻炼, 增强机体免疫力,预防感冒。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList8, "慢性咽炎:若症状明显,请专科治疗,平时少吃辛辣食物,少作长谈,避免有害气体及 粉尘的刺激。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList8, "慢性鼻炎:请专科治疗,平时注意增强体质,提高机体抵抗力,预防感冒,祛除诱因。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList8, "慢性扁桃体炎:请注意锻炼身体,增强体质,防止感冒,如反复发作请专科进一步治疗。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.InsertList(numberedList8); + document.InsertParagraph(@"◆ 肝胆疾病").Font(f).FontSize(14); + document.InsertParagraph(@"【肝功异常】").Font(f).FontSize(14); + document.InsertParagraph(@"转氨酶除在肝脏外,还可分布在心、肾、骨骼肌、胰等组织中,当这些组织有病时, 也会引起血清转氨酶活性升高。如心肌炎、急性心肌梗塞时,血清转氨酶活性均会升高,除此之外,如胆石症、甲状腺机能亢进、伤寒、疟疾、感冒、大量服用阿斯匹林等,都可使血 清转氨酶升高,甚至在某些生理条件下如剧烈运动等,也会使转氨酶升高。").Font(f).FontSize(14); + document.InsertParagraph(@"因此我们绝对不能一看到转氨酶升高就诊断为肝炎,而必须结合病人具体情况如症状 体征及其他检查综合分析,做出诊断,应注意以下几个问题:").Font(f).FontSize(14); + var numberedList9 = document.AddList("血清转氨酶升高,仍以病毒性肝炎最为常见,而且转氨酶升高的幅度大(在正常值4 倍以上),且持续时间很长(大于 1 个月)。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList9, "肝病时,转氨酶升高,只表示肝细胞受损,不能区别肝病的性质。如病毒性肝炎、 药物性肝炎等,都能使转氨酶升高。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList9, "在临床上如发现转氨酶(特别是 ALT)下降,而胆红素反升高,往往说明病人病情严重,预后不良。如急性或亚急性重症肝炎。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList9, "某些慢性肝炎或肝炎恢复期,转氨酶可以正常。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList9, "总之,不能单靠转氨酶来诊断或否定肝炎,必须结合其他化验结果和临床表现进行全方面分析,方能诊断。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.InsertList(numberedList9); + document.InsertParagraph(@"【肝囊肿、肝血管瘤】").Font(f).FontSize(14); + document.InsertParagraph(@"应该定期复查,动态观察变化,必要专科时治疗,平时注意不要受外力撞击,以免破裂").Font(f).FontSize(14); + document.InsertParagraph(@"【胆囊结石】").Font(f).FontSize(14); + var numberedList10 = document.AddList("预防肠道寄生虫和细菌感染;", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList10, "饮食控制,少吃动物内脏鱼籽,蛋黄等高胆固醇膳食,增加膳食中纤维素含量。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList10, "控制体重;", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList10, "纠正久坐少动的生活习惯。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList10, "治疗:无并发症的胆结石,可根据个体情况选择;", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList10, "利胆排石综合治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList10, "药物溶石。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList10, "体外碎石。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList10, "内窥镜取石。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList10, "腹腔镜手术。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList10, "外科胆囊切除术等治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.InsertList(numberedList10); + document.InsertParagraph(@"【胆囊息肉】").Font(f).FontSize(14); + document.InsertParagraph(@"胆囊息肉主要由慢性炎症引起,如息肉进一步增大,和/或合并胆囊多发结石,考虑手术治 疗;一般情况定期复查。").Font(f).FontSize(14); + document.InsertParagraph(@"◆ 心血管疾病").Font(f).FontSize(14); + var numberedList11 = document.AddList("T 波、ST-T 改变引起 T 波、ST-T 段改变的原因很多,需结合有关临床资料,综合分析做出诊断。有冠心病危险因素的人(A、有冠心病家庭史;B、高胆固醇血症;C、高血 压;D、糖尿病;E 吸烟;F 肥胖)近期出现上述心电图改变,与心肌缺血有关,可疑者需 专科医院进一步检查。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList11, "完全性右束支传导阻滞 可见于有器质性心脏病(冠心病、高血压性心脏病)者,偶 见于正常人。应注意复查心电图,有症状及时专科诊治。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList11, "房室传导阻滞:是比较常见的心律失常,在正常人群中的检出率约为 2%-5%,在器质 性心脏病患者中约占 20%-30%。它是心脏传导阻滞中最常见,也是很重要的一种。应注意 复查心电图,有症状及时专科诊治。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList11, "心脏早搏:无心脏病背景者,多为生理性原因,可半年复查;如频发早搏,请及时就 医;有心脏病者伴有早搏,建议专科治疗。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList11, "房颤:是一种十分常见的心律失常。据统计,60 岁以上人群中,房颤发生率 1%,并 随年龄而增加。有症状请专科就诊。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList11, "由于人们饮食习惯、生活习惯的改变,造成高脂血症患者增加, 若血脂质过高不加以 控制,再加上高血压、抽烟等因素的影响,使脂质沉淀物沉积在血管壁上,越积越厚,以致 血管管腔狭小,血流不通,使组织缺氧与营养缺乏, 这种情形发生在心脏冠状动脉时,首 先,引起心绞痛。若不积极治疗最后会造成心肌梗塞。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList11, "所以一旦出了问题应及早治疗並纠正不良饮食习惯,防止病情恶化,即使进行药物治 疗或医疗手术改善病情,仍然要配合饮食控制才能减少再复发的机会。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList11, "心血管疾病饮食原则:", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList11, "维持理想体重。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList11, "控制脂质总摄入量。烹调时应注意用油量,宜多采用清蒸、 水煮、凉拌、燉、滷 等方式,禁用油炸的烹调方式,並少吃肥肉、鸡皮等油脂含量高的食物。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList11, "炒菜用油宜选用单元不饱和脂肪酸高者(如:橄榄油、菜籽 油、花生油);少用 饱和脂肪酸高者(如:猪油)。少吃胆固醇含量高的食物,如内脏类、蝦卵、鱼卵等,蛋可以吃但每周不超过二 到三个蛋黄为原则。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList11, "避免富含精制糖的食物(如蛋糕、甜食)。(见附表:富含 精制糖的食物)。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList11, "攝取富含 W-3 脂肪酸的鱼类(秋刀鱼、鲑鱼、鳗鱼等)。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList11, "减少钠量攝取。罐头、醃制食品及各种加工食品含钠量高, 应忌食。宜选择新鲜 食物自行制作,烹调时减少食盐的用量,其它含钠量高的调味品(味精、酱油、乌醋等)应 减少或避免使用。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList11, "多摄取含纤维质的食物(全穀类、蔬菜类、水果)。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList11, "避免烟、酒、含咖啡因饮料及其他刺激性食品。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList11, "有服用抗凝血剂的病患,要减少含维生素 K 多的食物,如绿色蔬菜(菠菜、甘蓝菜、萵苣、绿花椰菜)、肝脏。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.InsertList(numberedList11); + document.InsertParagraph(@"◆ 肾脏疾病").Font(f).FontSize(14); + var numberedList12 = document.AddList("肾结石\n建议平时多饮水,少吃高草酸食物,可做蹦跳运动,避免感染,请定期复查,必要时排石治疗。", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList12, "肾囊肿", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList12, "请定期复查,观察变化,若有症状专科治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList12, "肾功能异常:建议控制膳食中蛋白质比例,近期复查,必要时专科诊治。如有肾脏病史,请及时肾内科诊治。", 1, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList12, "肾错构瘤\n属良性肿瘤,请定期复查,如有症状专科治疗", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.AddListItem(numberedList12, "肾萎缩、肾盂增大\n建议专科进一步诊治", 0, ListItemType.Numbered, null, false, false, p7Formatting); + document.InsertList(numberedList12); + for (int i = index; i < document.Paragraphs.Count; i++) + { + document.Paragraphs[i].SpacingAfter(10d).SetLineSpacing(LineSpacingType.Line, 13.8f); + ///document.Paragraphs[i].Alignment = Alignment.both; + } + //结束语页 + document.InsertParagraph().InsertPageBreakAfterSelf(); + document.InsertParagraph(@"结束语").Font(f).FontSize(14).Bold(true); + document.InsertParagraph(); + document.InsertParagraph(@"影响健康的因素很多,包括遗传基因、日常生活习惯、社会环境、医疗资源等等,其中,与一般民众息息相关的医疗资源,仅占影响健康因素的10%,最大的影响因素还是日常生活习惯及社会环境。根据世界卫生组织(WHO)的估计,75%的癌症是已知的环境因素所引起,而这些因素都是可以预防的,例如抽烟、酗酒。").Font(f).FontSize(10.5).IndentationFirstLine = 32.0f; + document.InsertParagraph(); + document.InsertParagraph(@"世界卫生组织(WHO)指出:“二十一世纪的医学不应该继续以疾病为主要研究对象,而应该以人类健康作为医学研究的主要方向。” 这个精神旨在宣告预防医学和健康保健将成为医学的主导。").Font(f).FontSize(10.5).IndentationFirstLine = 32f; + document.InsertParagraph(); + document.InsertParagraph(@"我中心愿以卓越的服务、优质的技术继续为贵单位提供医疗保健服务,从体检中发现健康问题,从保健中解决健康问题。").Font(f).FontSize(10.5).IndentationFirstLine = 32f; + document.InsertParagraph(); + document.InsertParagraph(@"最后,感谢您对国宾的支持,别忘了定期为员工安排健康检查。您的任何意见,都是我们成长的来源!敬请不吝指教。").Font(f).FontSize(10.5).IndentationFirstLine = 32f; + document.InsertParagraph().InsertPageBreakAfterSelf(); + //检后服务 + Xceed.Document.NET.Font f1 = new Xceed.Document.NET.Font("黑体"); + Xceed.Document.NET.Font f2 = new Xceed.Document.NET.Font("楷体"); + Formatting pBottomFirstFormatting = new Formatting(); + pBottomFirstFormatting.FontFamily = new Xceed.Document.NET.Font("黑体"); + pBottomFirstFormatting.Size = 14; + Formatting pBottomLastFormatting = new Formatting(); + pBottomLastFormatting.FontFamily = new Xceed.Document.NET.Font("黑体"); + pBottomLastFormatting.Size = 10.5; + document.InsertParagraph(@"检后服务").Font(f1).FontSize(18); + document.InsertParagraph(@"健康体检后,您需要健康维护和管理:").Font(f1).FontSize(10.5); + var svr1 = document.InsertParagraph().Font(f1).FontSize(10.5); + svr1.InsertText("1.", false, pBottomLastFormatting); + svr1.InsertText("检后就诊", false, pBottomFirstFormatting); + svr1.InsertText("--体检中发现的疾病由国内著名、省内著名的专家为您对接就诊,真正起到早发现、早诊断、早治疗。", false, pBottomLastFormatting); + var svr2 = document.InsertParagraph().Font(f1).FontSize(10.5); + svr2.InsertText("2.", false, pBottomLastFormatting); + svr2.InsertText("常见病、疑难病预约就诊服务", false, pBottomFirstFormatting); + svr2.InsertText("--请拨打健康服务热线。我们可以帮您用最短的时间预约上最合适您病情的专家,他们为国内著名、省内著名的专家在您需要时我们还可以通过绿色通道帮您预约外省外院著名专家。", false, pBottomLastFormatting); + document.InsertParagraph("3.体检报告电话咨询服务。").Font(f1).FontSize(10.5); + document.InsertParagraph("4.特殊检查预约服务(CT、MR等大型检查设备)。").Font(f1).FontSize(10.5); + document.InsertParagraph("5.住院预约服务。").Font(f1).FontSize(10.5); + document.InsertParagraph("6.外院就诊指导。").Font(f1).FontSize(10.5); + document.InsertParagraph("您 健 康 的 管 家").Font(f1).FontSize(18).Italic(true).Alignment = Alignment.center; + document.InsertParagraph("人生中偶然的病痛--有我们的关怀").Font(f2).FontSize(18).Bold(true).Italic(true).Alignment = Alignment.center; + document.InsertParagraph("健康体检中心").Font(f).FontSize(16).Alignment = Alignment.center; + document.InsertParagraph("团体体检汇总报告").Font(f).FontSize(16).Alignment = Alignment.center; + document.InsertParagraph("企业员工健康检查统计报告").Font(f1).FontSize(22).Alignment = Alignment.center; + document.InsertParagraph("【版权所有,翻印必究】").Font(f).FontSize(10.5).Alignment = Alignment.center; + document.Save(); + } + + + /// + /// 生成参检人员构成情况数据 1 + /// + public async Task CreateInspectionPersonnelData(UnitPhysicalExaminationReportExportWordData documentData, CreateInspectionPersonnelPara customerOrgs) + { + + var query = await _patientRegisterRepository.GetQueryableAsync(); + + if (customerOrgs.CustomerOrgGroupId.Any()) + { + query = query.Where(m => m.CustomerOrgGroupId != null && customerOrgs.CustomerOrgGroupId.Contains(m.CustomerOrgGroupId.Value)); + } + if (customerOrgs.CustomerOrgRegisterId != GuidFlag.PersonCustomerOrgRegisterId) + { + query = query.Where(m => m.CustomerOrgRegisterId == customerOrgs.CustomerOrgRegisterId); + } + + var customerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(customerOrgs.CustomerOrgId); + query = query.Where(m => customerOrgIds.Contains(m.CustomerOrgId)); + + + if (customerOrgs.DateType == '1') + { + query = query.Where(m => m.CreationTime >= Convert.ToDateTime(customerOrgs.StartDate) && + m.CreationTime < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + else if (customerOrgs.DateType == '2') + { + query = query.Where(m => m.MedicalStartDate != null && m.MedicalStartDate.Value.ToDateTime(TimeOnly.MinValue) >= Convert.ToDateTime(customerOrgs.StartDate) && + m.MedicalStartDate.Value.ToDateTime(TimeOnly.MinValue) < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + else if (customerOrgs.DateType == '3') + { + query = query.Where(m => m.SummaryDate != null && m.SummaryDate.Value.ToDateTime(TimeOnly.MinValue) >= Convert.ToDateTime(customerOrgs.StartDate) && + m.SummaryDate.Value.ToDateTime(TimeOnly.MinValue) < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + + + var queryList = query.ToList(); + + #region 登记 + + int Register_MaleNumber = queryList.Where(m => m.SexId == SexFlag.Male).Count(); + int Register_FemaleNumber = queryList.Where(m => m.SexId == SexFlag.Female).Count(); + int Register_OtherNumber = queryList.Where(m => m.SexId == SexFlag.UnKnown).Count(); + int Register_TotalNumber = Register_MaleNumber + Register_FemaleNumber + Register_OtherNumber; + string Register_MaleRatio = Register_TotalNumber != 0 ? Math.Round(Register_MaleNumber * 100M / Register_TotalNumber, 2).ToString() + "%" : "0%"; + string Register_FemaleRatio = Register_TotalNumber != 0 ? Math.Round(Register_FemaleNumber * 100M / Register_TotalNumber, 2).ToString() + "%" : "0%"; + string Register_MaleExamineRatio = "100%"; + string Register_FemaleExamineRatio = "100%"; + string Register_AverageExamineRatio = "100%"; + + + documentData.RegisterDetail = new InspectionPersonnel_Detail + { + MaleNumber = Register_MaleNumber, + FemaleNumber = Register_FemaleNumber, + OtherNumber = Register_OtherNumber, + TotalNumber = Register_TotalNumber, + MaleRatio = Register_MaleRatio, + FemaleRatio = Register_FemaleRatio, + MaleExamineRatio = Register_MaleExamineRatio, + FemaleExamineRatio = Register_FemaleExamineRatio, + AverageExamineRatio = Register_AverageExamineRatio + }; + #endregion + + #region 实检 + + int Checked_MaleNumber = queryList.Where(m => (m.CompleteFlag == PatientRegisterCompleteFlag.PartInspected || m.CompleteFlag == PatientRegisterCompleteFlag.GeneralInspected) + && m.SexId == SexFlag.Male).Count(); + int Checked_FemaleNumber = queryList.Where(m => (m.CompleteFlag == PatientRegisterCompleteFlag.PartInspected || m.CompleteFlag == PatientRegisterCompleteFlag.GeneralInspected) + && m.SexId == SexFlag.Female).Count(); + int Checked_OtherNumber = queryList.Where(m => (m.CompleteFlag == PatientRegisterCompleteFlag.PartInspected || m.CompleteFlag == PatientRegisterCompleteFlag.GeneralInspected) + && m.SexId == SexFlag.UnKnown).Count(); + int Checked_TotalNumber = Checked_MaleNumber + Checked_FemaleNumber + Checked_OtherNumber; + string Checked_MaleRatio = Checked_TotalNumber != 0 ? Math.Round(Checked_MaleNumber * 100M / Checked_TotalNumber, 2).ToString() + "%" : "0%"; + string Checked_FemaleRatio = Checked_TotalNumber != 0 ? Math.Round(Checked_FemaleNumber * 100M / Checked_TotalNumber, 2).ToString() + "%" : "0%"; + string Checked_MaleExamineRatio = Register_MaleNumber != 0 ? Math.Round(Checked_MaleNumber * 100M / Register_MaleNumber, 2).ToString() + "%" : "0%"; + string Checked_FemaleExamineRatio = Register_FemaleNumber != 0 ? Math.Round(Checked_FemaleNumber * 100M / Register_FemaleNumber, 2).ToString() + "%" : "0%"; + string Checked_AverageExamineRatio = Math.Round( + (Register_MaleNumber != 0 ? Math.Round(Checked_MaleNumber * 100M / Register_MaleNumber, 2) : 0 + + Register_FemaleNumber != 0 ? Math.Round(Checked_FemaleNumber * 100M / Register_FemaleNumber, 2) : 0) / 2, 2 + ).ToString() + "%"; + + documentData.CheckedDetail = new InspectionPersonnel_Detail + { + MaleNumber = Checked_MaleNumber, + FemaleNumber = Checked_FemaleNumber, + OtherNumber = Checked_OtherNumber, + TotalNumber = Checked_TotalNumber, + MaleRatio = Checked_MaleRatio, + FemaleRatio = Checked_FemaleRatio, + MaleExamineRatio = Checked_MaleExamineRatio, + FemaleExamineRatio = Checked_FemaleExamineRatio, + AverageExamineRatio = Checked_AverageExamineRatio + }; + #endregion + + #region 未检 + + int UnChecked_MaleNumber = queryList.Where(m => (m.CompleteFlag == PatientRegisterCompleteFlag.PartInspected || m.CompleteFlag == PatientRegisterCompleteFlag.GeneralInspected) + && m.SexId == SexFlag.Male).Count(); + int UnChecked_FemaleNumber = queryList.Where(m => (m.CompleteFlag == PatientRegisterCompleteFlag.PartInspected || m.CompleteFlag == PatientRegisterCompleteFlag.GeneralInspected) + && m.SexId == SexFlag.Female).Count(); + int UnChecked_OtherNumber = queryList.Where(m => (m.CompleteFlag == PatientRegisterCompleteFlag.PartInspected || m.CompleteFlag == PatientRegisterCompleteFlag.GeneralInspected) + && m.SexId == SexFlag.UnKnown).Count(); + int UnChecked_TotalNumber = UnChecked_MaleNumber + UnChecked_FemaleNumber + UnChecked_OtherNumber; + string UnChecked_MaleRatio = UnChecked_TotalNumber != 0 ? Math.Round(UnChecked_MaleNumber * 100M / UnChecked_TotalNumber, 2).ToString() + "%" : "0%"; + string UnChecked_FemaleRatio = UnChecked_TotalNumber != 0 ? Math.Round(UnChecked_FemaleNumber * 100M / UnChecked_TotalNumber, 2).ToString() + "%" : "0%"; + string UnChecked_MaleExamineRatio = Register_MaleNumber != 0 ? Math.Round(UnChecked_MaleNumber * 100M / Register_MaleNumber, 2).ToString() + "%" : "0%"; + string UnChecked_FemaleExamineRatio = Register_FemaleNumber != 0 ? Math.Round(UnChecked_FemaleNumber * 100M / Register_FemaleNumber, 2).ToString() + "%" : "0%"; + string UnChecked_AverageExamineRatio = Math.Round( + (Register_MaleNumber != 0 ? Math.Round(UnChecked_MaleNumber * 100M / Register_MaleNumber, 2) : 0 + + Register_FemaleNumber != 0 ? Math.Round(UnChecked_FemaleNumber * 100M / Register_FemaleNumber, 2) : 0) / 2, 2).ToString() + "%"; + + documentData.UnCheckedDetail = new InspectionPersonnel_Detail + { + MaleNumber = UnChecked_MaleNumber, + FemaleNumber = UnChecked_FemaleNumber, + OtherNumber = UnChecked_OtherNumber, + TotalNumber = UnChecked_TotalNumber, + MaleRatio = UnChecked_MaleRatio, + FemaleRatio = UnChecked_FemaleRatio, + MaleExamineRatio = UnChecked_MaleExamineRatio, + FemaleExamineRatio = UnChecked_FemaleExamineRatio, + AverageExamineRatio = UnChecked_AverageExamineRatio + }; + #endregion + } + + /// + /// 生成体检项目的参检情况数据 2 + /// + /// + /// + /// + public async Task CreateMedicalItemExamineSituationData(UnitPhysicalExaminationReportExportWordData documentData, CreateInspectionPersonnelPara customerOrgs) + { + var query = from a in await _patientRegisterRepository.GetQueryableAsync() + join b in await _registerCheckRepository.GetQueryableAsync() on a.Id equals b.PatientRegisterId + join c in await _registerAsbitemRepository.GetQueryableAsync() on b.Id equals c.RegisterCheckId + join d in await _asbitemRepository.GetQueryableAsync() on c.AsbitemId equals d.Id + join e in await _itemTypeRepository.GetQueryableAsync() on d.ItemTypeId equals e.Id into ee + from ae in ee.DefaultIfEmpty() + join f in await _sexRepository.GetQueryableAsync() on a.SexId equals f.Id into ff + from af in ff.DefaultIfEmpty() + select new + { + CustomerOrgGroupId = a.CustomerOrgGroupId, + CustomerOrgRegisterId = a.CustomerOrgRegisterId, + CustomerOrgId = a.CustomerOrgId, + PatientRegisterId = a.Id, + CreationTime = a.CreationTime, + MedicalStartDate = a.MedicalStartDate, + SummaryDate = a.SummaryDate, + SexId = a.SexId, + SexName = af != null ? af.DisplayName : "", + ItemTypeName = ae != null ? ae.DisplayName : "", + AsbitemName = d.DisplayName, + c + }; + + + if (customerOrgs.CustomerOrgGroupId.Any()) + { + query = query.Where(m => m.CustomerOrgGroupId != null && customerOrgs.CustomerOrgGroupId.Contains(m.CustomerOrgGroupId.Value)); + } + if (customerOrgs.CustomerOrgRegisterId != GuidFlag.PersonCustomerOrgRegisterId) + { + query = query.Where(m => m.CustomerOrgRegisterId == customerOrgs.CustomerOrgRegisterId); + } + + var customerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(customerOrgs.CustomerOrgId); + query = query.Where(m => customerOrgIds.Contains(m.CustomerOrgId)); + if (customerOrgs.DateType == '1') + { + query = query.Where(m => m.CreationTime >= Convert.ToDateTime(customerOrgs.StartDate) && + m.CreationTime < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + else if (customerOrgs.DateType == '2') + { + query = query.Where(m => m.MedicalStartDate != null && m.MedicalStartDate.Value.ToDateTime(TimeOnly.MinValue) >= Convert.ToDateTime(customerOrgs.StartDate) && + m.MedicalStartDate.Value.ToDateTime(TimeOnly.MinValue) < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + else if (customerOrgs.DateType == '3') + { + query = query.Where(m => m.SummaryDate != null && m.SummaryDate.Value.ToDateTime(TimeOnly.MinValue) >= Convert.ToDateTime(customerOrgs.StartDate) && + m.SummaryDate.Value.ToDateTime(TimeOnly.MinValue) < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + + var medicalItemExamineSituations = query.GroupBy(g => g.PatientRegisterId).Select(s => new UnitPhysicalExaminationReportExportWordData_MedicalItemExamineSituation + { + AsbitemName = s.FirstOrDefault().AsbitemName, + ItemTypeName = s.FirstOrDefault().ItemTypeName, + MaleAsbitemCheckNumber = s.Where(m => m.SexId == SexFlag.Male).Count(), + FemaleAsbitemCheckNumber = s.Where(m => m.SexId == SexFlag.Female).Count(), + TotalAsbitemCheckNumber = s.Where(m => m.SexId == SexFlag.Male || m.SexId == SexFlag.Female).Count(), + MaleSumCheckNumber = documentData.CheckedDetail.MaleNumber, + FemaleSumCheckNumber = documentData.CheckedDetail.FemaleNumber, + TotalSumCheckNumber = documentData.CheckedDetail.MaleNumber + documentData.CheckedDetail.FemaleNumber, + MaleAsbitemCheckRatio = documentData.CheckedDetail.MaleNumber != 0 ? + Math.Round(s.Where(m => m.SexId == SexFlag.Male).Count() * 100M / documentData.CheckedDetail.MaleNumber, 2) + "%" : "0%", + FemaleAsbitemCheckRatio = documentData.CheckedDetail.FemaleNumber != 0 ? + Math.Round(s.Where(m => m.SexId == SexFlag.Female).Count() * 100M / documentData.CheckedDetail.FemaleNumber, 2) + "%" : "0%", + TotalAsbitemCheckRatio = Math.Round((Math.Round(s.Where(m => m.SexId == SexFlag.Male).Count() * 100M / documentData.CheckedDetail.MaleNumber, 2) + Math.Round(s.Where(m => m.SexId == SexFlag.Female).Count() * 100M / documentData.CheckedDetail.FemaleNumber, 2)) / 2, 2) + "%" + }); + + documentData.MedicalItemExamineSituations = medicalItemExamineSituations.ToList(); + } + + + /// + /// 生成全体员工体检结果汇总数据 3 + /// + /// 数据 + /// 参数 + /// + public async Task CreateMedicalResultSummarysData(UnitPhysicalExaminationReportExportWordData documentData, CreateInspectionPersonnelPara customerOrgs) + { + #region 查询 + var query = from a in (await _patientRegisterRepository.GetQueryableAsync()).Include(x => x.Patient) + join b in (await _sumSummaryHeaderRepository.GetQueryableAsync()).Include(x => x.SumSummaryContents) on a.Id equals b.PatientRegisterId + join c in await _sexRepository.GetQueryableAsync() on a.SexId equals c.Id into cc + from ac in cc.DefaultIfEmpty() + where a.CompleteFlag == PatientRegisterCompleteFlag.GeneralInspected + select new + { + CustomerOrgGroupId = a.CustomerOrgGroupId, + CustomerOrgRegisterId = a.CustomerOrgRegisterId, + CustomerOrgId = a.CustomerOrgId, + PatientRegisterId = a.Id, + CreationTime = a.CreationTime, + MedicalStartDate = a.MedicalStartDate, + SummaryDate = a.SummaryDate, + SexName = ac != null ? ac.DisplayName : "", + Age = a.Age, + PatientName = a.PatientName, + PatientNo = a.Patient != null ? a.Patient.PatientNo : "", + b + }; + + + if (customerOrgs.CustomerOrgGroupId.Any()) + { + query = query.Where(m => m.CustomerOrgGroupId != null && customerOrgs.CustomerOrgGroupId.Contains(m.CustomerOrgGroupId.Value)); + } + if (customerOrgs.CustomerOrgRegisterId != GuidFlag.PersonCustomerOrgRegisterId) + { + query = query.Where(m => m.CustomerOrgRegisterId == customerOrgs.CustomerOrgRegisterId); + } + + var customerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(customerOrgs.CustomerOrgId); + query = query.Where(m => customerOrgIds.Contains(m.CustomerOrgId)); + if (customerOrgs.DateType == '1') + { + query = query.Where(m => m.CreationTime >= Convert.ToDateTime(customerOrgs.StartDate) && + m.CreationTime < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + else if (customerOrgs.DateType == '2') + { + query = query.Where(m => m.MedicalStartDate != null && m.MedicalStartDate.Value.ToDateTime(TimeOnly.MinValue) >= Convert.ToDateTime(customerOrgs.StartDate) && + m.MedicalStartDate.Value.ToDateTime(TimeOnly.MinValue) < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + else if (customerOrgs.DateType == '3') + { + query = query.Where(m => m.SummaryDate != null && m.SummaryDate.Value.ToDateTime(TimeOnly.MinValue) >= Convert.ToDateTime(customerOrgs.StartDate) && + m.SummaryDate.Value.ToDateTime(TimeOnly.MinValue) < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + #endregion + + var medicalResultSummarys = query.GroupBy(g => g.PatientRegisterId).Select(s => new UnitPhysicalExaminationReportExportWordData_MedicalResultSummary + { + Age = s.FirstOrDefault().Age != null ? s.FirstOrDefault().Age.ToString() : "", + PatientName = s.FirstOrDefault().PatientName, + PatientNo = s.FirstOrDefault().PatientNo, + SexName = s.FirstOrDefault().SexName, + MedicalResult = DataHelper.SetSumSummarys(s.Select(ss => ss.b).ToList()) + }); + + documentData.MedicalResultSummarys = medicalResultSummarys.ToList(); + } + + + + /// + /// 生成本次体检异常结果检出统计数据 4 + /// + /// 数据 + /// 参数 + /// + public async Task CreateMedicalAbnormalResultStatisticsData(UnitPhysicalExaminationReportExportWordData documentData, CreateInspectionPersonnelPara customerOrgs) + { + #region 查询 + var query = from a in (await _sumDiagnosisRepository.GetQueryableAsync()).Include(x => x.Diagnosis) + join b in await _patientRegisterRepository.GetQueryableAsync() on a.PatientRegisterId equals b.Id + where b.CompleteFlag == PatientRegisterCompleteFlag.GeneralInspected + select new + { + CustomerOrgGroupId = b.CustomerOrgGroupId, + CustomerOrgRegisterId = b.CustomerOrgRegisterId, + CustomerOrgId = b.CustomerOrgId, + CreationTime = b.CreationTime, + MedicalStartDate = b.MedicalStartDate, + SummaryDate = b.SummaryDate, + PatientName = b.PatientName, + DiagnosisId = a.DiagnosisId, + SexId = b.SexId, + DiagnosisName = a.Diagnosis != null ? a.Diagnosis.DisplayName : "" + }; + + + if (customerOrgs.CustomerOrgGroupId.Any()) + { + query = query.Where(m => m.CustomerOrgGroupId != null && customerOrgs.CustomerOrgGroupId.Contains(m.CustomerOrgGroupId.Value)); + } + if (customerOrgs.CustomerOrgRegisterId != GuidFlag.PersonCustomerOrgRegisterId) + { + query = query.Where(m => m.CustomerOrgRegisterId == customerOrgs.CustomerOrgRegisterId); + } + + var customerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(customerOrgs.CustomerOrgId); + query = query.Where(m => customerOrgIds.Contains(m.CustomerOrgId)); + if (customerOrgs.DateType == '1') + { + query = query.Where(m => m.CreationTime >= Convert.ToDateTime(customerOrgs.StartDate) && + m.CreationTime < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + else if (customerOrgs.DateType == '2') + { + query = query.Where(m => m.MedicalStartDate != null && m.MedicalStartDate.Value.ToDateTime(TimeOnly.MinValue) >= Convert.ToDateTime(customerOrgs.StartDate) && + m.MedicalStartDate.Value.ToDateTime(TimeOnly.MinValue) < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + else if (customerOrgs.DateType == '3') + { + query = query.Where(m => m.SummaryDate != null && m.SummaryDate.Value.ToDateTime(TimeOnly.MinValue) >= Convert.ToDateTime(customerOrgs.StartDate) && + m.SummaryDate.Value.ToDateTime(TimeOnly.MinValue) < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + #endregion + + var medicalAbnormalResultStatistics = query.GroupBy(g => g.DiagnosisId).Select(s => new UnitPhysicalExaminationReportExportWordData_MedicalAbnormalResultStatistics + { + DiagnosisName = s.FirstOrDefault().DiagnosisName, + PatientDetail = string.Join("、", s.Select(ss => ss.PatientName)), + MaleNumber = s.Where(m => m.SexId == SexFlag.Male).Count(), + FemaleNumber = s.Where(m => m.SexId == SexFlag.Female).Count(), + TotalNumber = s.Where(m => m.SexId == SexFlag.Male || m.SexId == SexFlag.Female).Count(), + MaleRatio = s.Where(m => m.SexId == SexFlag.Male || m.SexId == SexFlag.Female).Count() != 0 ? + Math.Round(s.Where(m => m.SexId == SexFlag.Male).Count() * 100M / s.Where(m => m.SexId == SexFlag.Male || m.SexId == SexFlag.Female).Count(), 2).ToString() + "%" : "0%", + FemaleRatio = s.Where(m => m.SexId == SexFlag.Male || m.SexId == SexFlag.Female).Count() != 0 ? + Math.Round(s.Where(m => m.SexId == SexFlag.Female).Count() * 100M / s.Where(m => m.SexId == SexFlag.Male || m.SexId == SexFlag.Female).Count(), 2).ToString() + "%" : "0%", + AverageRatio = s.Where(m => m.SexId == SexFlag.Male || m.SexId == SexFlag.Female).Count() != 0 ? + Math.Round((Math.Round(s.Where(m => m.SexId == SexFlag.Male).Count() * 100M / s.Where(m => m.SexId == SexFlag.Male || m.SexId == SexFlag.Female).Count(), 2) + + Math.Round(s.Where(m => m.SexId == SexFlag.Female).Count() * 100M / s.Where(m => m.SexId == SexFlag.Male || m.SexId == SexFlag.Female).Count(), 2)) / 2, 2).ToString() : "0%" + }).OrderByDescending(o => o.TotalNumber); + + documentData.MedicalAbnormalResultStatistics = medicalAbnormalResultStatistics.ToList(); + } + + + + /// + /// 生成本次体检异常结果检出统计数据 5 + /// + /// 数据 + /// 参数 + /// + public async Task CreateMedicalTenAbnormalResultsData(UnitPhysicalExaminationReportExportWordData documentData, CreateInspectionPersonnelPara customerOrgs) + { + #region 查询 + var query = from a in (await _sumDiagnosisRepository.GetQueryableAsync()).Include(x => x.Diagnosis) + join b in await _patientRegisterRepository.GetQueryableAsync() on a.PatientRegisterId equals b.Id + join c in (await _sumSuggestionHeaderRepository.GetQueryableAsync()).Include(x => x.SumSuggestionContents) on a.SumSuggestionHeaderId equals c.Id into cc + from ac in cc.DefaultIfEmpty() + where b.CompleteFlag == PatientRegisterCompleteFlag.GeneralInspected + select new + { + CustomerOrgGroupId = b.CustomerOrgGroupId, + CustomerOrgRegisterId = b.CustomerOrgRegisterId, + CustomerOrgId = b.CustomerOrgId, + CreationTime = b.CreationTime, + MedicalStartDate = b.MedicalStartDate, + SummaryDate = b.SummaryDate, + DiagnosisId = a.DiagnosisId, + DiagnosisName = a.Diagnosis != null ? a.Diagnosis.DisplayName : "", + ac + }; + + + if (customerOrgs.CustomerOrgGroupId.Any()) + { + query = query.Where(m => m.CustomerOrgGroupId != null && customerOrgs.CustomerOrgGroupId.Contains(m.CustomerOrgGroupId.Value)); + } + if (customerOrgs.CustomerOrgRegisterId != GuidFlag.PersonCustomerOrgRegisterId) + { + query = query.Where(m => m.CustomerOrgRegisterId == customerOrgs.CustomerOrgRegisterId); + } + + var customerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(customerOrgs.CustomerOrgId); + query = query.Where(m => customerOrgIds.Contains(m.CustomerOrgId)); + if (customerOrgs.DateType == '1') + { + query = query.Where(m => m.CreationTime >= Convert.ToDateTime(customerOrgs.StartDate) && + m.CreationTime < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + else if (customerOrgs.DateType == '2') + { + query = query.Where(m => m.MedicalStartDate != null && m.MedicalStartDate.Value.ToDateTime(TimeOnly.MinValue) >= Convert.ToDateTime(customerOrgs.StartDate) && + m.MedicalStartDate.Value.ToDateTime(TimeOnly.MinValue) < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + else if (customerOrgs.DateType == '3') + { + query = query.Where(m => m.SummaryDate != null && m.SummaryDate.Value.ToDateTime(TimeOnly.MinValue) >= Convert.ToDateTime(customerOrgs.StartDate) && + m.SummaryDate.Value.ToDateTime(TimeOnly.MinValue) < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + #endregion + + var medicalTenAbnormalResults = query.GroupBy(g => g.DiagnosisId).Select(s => new UnitPhysicalExaminationReportExportWordData_MedicalTenAbnormalResult + { + DiagnosisName = s.FirstOrDefault().DiagnosisName, + DiagnosisSuggestion = DataHelper.SetSumSuggestion(s.Select(ss => ss.ac).ToList()) + }); + + documentData.MedicalTenAbnormalResults = medicalTenAbnormalResults.ToList(); + } + + + + + /// + /// 生成体检者未完成情况数据 6 + /// + /// 数据 + /// 参数 + /// + public async Task CreateMedicalUnCheckedStatisticsData(UnitPhysicalExaminationReportExportWordData documentData, CreateInspectionPersonnelPara customerOrgs) + { + #region 查询 + var query = from a in (await _patientRegisterRepository.GetQueryableAsync()).Include(x => x.Patient) + join b in await _customerOrgRepository.GetQueryableAsync() on a.CustomerOrgId equals b.Id + join c in await _sexRepository.GetQueryableAsync() on a.SexId equals c.Id into cc + from ac in cc.DefaultIfEmpty() + where a.CompleteFlag != PatientRegisterCompleteFlag.GeneralInspected + select new + { + CustomerOrgGroupId = a.CustomerOrgGroupId, + CustomerOrgRegisterId = a.CustomerOrgRegisterId, + CustomerOrgId = a.CustomerOrgId, + CreationTime = a.CreationTime, + MedicalStartDate = a.MedicalStartDate, + SummaryDate = a.SummaryDate, + PatientNo = a.Patient != null ? a.Patient.PatientNo : "", + PatientName = a.PatientName, + SexName = ac != null ? ac.DisplayName : "", + Age = a.Age, + DepartmentName = b.DisplayName + }; + + + if (customerOrgs.CustomerOrgGroupId.Any()) + { + query = query.Where(m => m.CustomerOrgGroupId != null && customerOrgs.CustomerOrgGroupId.Contains(m.CustomerOrgGroupId.Value)); + } + if (customerOrgs.CustomerOrgRegisterId != GuidFlag.PersonCustomerOrgRegisterId) + { + query = query.Where(m => m.CustomerOrgRegisterId == customerOrgs.CustomerOrgRegisterId); + } + + var customerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(customerOrgs.CustomerOrgId); + query = query.Where(m => customerOrgIds.Contains(m.CustomerOrgId)); + if (customerOrgs.DateType == '1') + { + query = query.Where(m => m.CreationTime >= Convert.ToDateTime(customerOrgs.StartDate) && + m.CreationTime < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + else if (customerOrgs.DateType == '2') + { + query = query.Where(m => m.MedicalStartDate != null && m.MedicalStartDate.Value.ToDateTime(TimeOnly.MinValue) >= Convert.ToDateTime(customerOrgs.StartDate) && + m.MedicalStartDate.Value.ToDateTime(TimeOnly.MinValue) < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + else if (customerOrgs.DateType == '3') + { + query = query.Where(m => m.SummaryDate != null && m.SummaryDate.Value.ToDateTime(TimeOnly.MinValue) >= Convert.ToDateTime(customerOrgs.StartDate) && + m.SummaryDate.Value.ToDateTime(TimeOnly.MinValue) < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1)); + } + #endregion + + var medicalUnCheckedStatistics = query.Select(s => new UnitPhysicalExaminationReportExportWordData_MedicalUnCheckedStatistics + { + Age = s.Age != null ? s.Age.ToString() : "", + DepartmentName = s.DepartmentName, + PatientName = s.PatientName, + PatientNo = s.PatientNo, + SexName = s.SexName + }); + + documentData.MedicalUnCheckedStatistics = medicalUnCheckedStatistics.ToList(); + } + + + } +} diff --git a/src/Shentun.Peis.Domain/ReportTemplates/UnitPhysicalExaminationReportExportWordData.cs b/src/Shentun.Peis.Domain/ReportTemplates/UnitPhysicalExaminationReportExportWordData.cs new file mode 100644 index 0000000..a03fae6 --- /dev/null +++ b/src/Shentun.Peis.Domain/ReportTemplates/UnitPhysicalExaminationReportExportWordData.cs @@ -0,0 +1,339 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Shentun.Peis.ReportTemplates +{ + public class UnitPhysicalExaminationReportExportWordData + { + /// + /// 体检年度标题 + /// + public string MedicalTitle { get; set; } + + /// + /// 体检次数 + /// + public int MedicalTimes { get; set; } + + /// + /// 体检开始月份 格式:2009年09月 + /// + public string MedicalStartDate { get; set; } + + /// + /// 体检结束月份 格式:2009年09月 + /// + public string MedicalEndDate { get; set; } + + /// + /// 制表日期 格式:2009年09月09日 + /// + public string TabulationDate { get; set; } + + + /// + /// 打印日期 格式:2009年09月09日 + /// + public string PrintDate { get; set; } + + + + /// + /// 登记明细 参加人员构成情况 第一部分 + /// + public InspectionPersonnel_Detail RegisterDetail { get; set; } + + /// + /// 实检明细 参加人员构成情况 第一部分 + /// + public InspectionPersonnel_Detail CheckedDetail { get; set; } + + /// + /// 未检明细 参加人员构成情况 第一部分 + /// + public InspectionPersonnel_Detail UnCheckedDetail { get; set; } + + + + /// + /// 体检项目得参检情况 第二部分 + /// + public List MedicalItemExamineSituations { get; set; } = new List(); + + /// + /// 全体员工体检结果汇总 第三部分 + /// + public List MedicalResultSummarys { get; set; } = new List(); + + /// + /// 体检异常结果检出统计 第四部分 + /// + public List MedicalAbnormalResultStatistics { get; set; } = new List(); + + /// + /// 十大异常结果分析 第五部分 + /// + public List MedicalTenAbnormalResults { get; set; } = new List(); + + + /// + /// 体检者未完成情况 第六部分 + /// + public List MedicalUnCheckedStatistics { get; set; } = new List(); + } + + + + /// + /// 检查明细 1 + /// + public class InspectionPersonnel_Detail + { + /// + /// 男性人数 + /// + public int MaleNumber { get; set; } + + /// + /// 女性人数 + /// + public int FemaleNumber { get; set; } + + /// + /// 其他人数 + /// + public int OtherNumber { get; set; } + + /// + /// 合计人数 + /// + public int TotalNumber { get; set; } + + /// + /// 男性比例 + /// + public string MaleRatio { get; set; } + + /// + /// 女性比例 + /// + public string FemaleRatio { get; set; } + + /// + /// 男性参检比例 + /// + public string MaleExamineRatio { get; set; } + + /// + /// 女性参检比例 + /// + public string FemaleExamineRatio { get; set; } + + + /// + /// 平均参检比例 + /// + public string AverageExamineRatio { get; set; } + } + + + /// + /// 体检项目得参检情况 2 + /// + public class UnitPhysicalExaminationReportExportWordData_MedicalItemExamineSituation + { + /// + /// 科室 + /// + public string ItemTypeName { get; set; } + + /// + /// 组合项目名称 + /// + public string AsbitemName { get; set; } + + /// + /// 男性该项目参检人数 + /// + public int MaleAsbitemCheckNumber { get; set; } + + /// + /// 女性该项目参检人数 + /// + public int FemaleAsbitemCheckNumber { get; set; } + + /// + /// 合计该项目参检人数 + /// + public int TotalAsbitemCheckNumber { get; set; } + + /// + /// 男性总体参检人数 所有项目 + /// + public int MaleSumCheckNumber { get; set; } + + /// + /// 女性总体参检人数 所有项目 + /// + public int FemaleSumCheckNumber { get; set; } + + /// + /// 合计总体参检人数 所有项目 + /// + public int TotalSumCheckNumber { get; set; } + + + /// + /// 男性该项目参检比例 + /// + public string MaleAsbitemCheckRatio { get; set; } + + /// + /// 女性该项目参检比例 + /// + public string FemaleAsbitemCheckRatio { get; set; } + + /// + /// 合计该项目参检比例 + /// + public string TotalAsbitemCheckRatio { get; set; } + + + } + + /// + /// 全体员工体检结果汇总 统计已总检的名单 3 + /// + public class UnitPhysicalExaminationReportExportWordData_MedicalResultSummary + { + /// + /// 档案号 + /// + public string PatientNo { get; set; } + + /// + /// 姓名 + /// + public string PatientName { get; set; } + + /// + /// 性别 + /// + public string SexName { get; set; } + + /// + /// 年龄 + /// + public string Age { get; set; } + + /// + /// 体检结果 + /// + public string MedicalResult { get; set; } + } + + /// + /// 体检异常结果检出统计 4 + /// + public class UnitPhysicalExaminationReportExportWordData_MedicalAbnormalResultStatistics + { + /// + /// 诊断名称 + /// + public string DiagnosisName { get; set; } + + /// + /// 人员名单 多个、组合到一起 + /// + public string PatientDetail { get; set; } + + /// + /// 男性人数 + /// + public int MaleNumber { get; set; } + + /// + /// 女性人数 + /// + public int FemaleNumber { get; set; } + + /// + /// 合计人数 + /// + public int TotalNumber { get; set; } + + /// + /// 男性比例 + /// + public string MaleRatio { get; set; } + + /// + /// 女性比例 + /// + public string FemaleRatio { get; set; } + + /// + /// 平均比例 + /// + public string AverageRatio { get; set; } + } + + + /// + /// 十大异常结果分析 5 + /// + public class UnitPhysicalExaminationReportExportWordData_MedicalTenAbnormalResult + { + /// + /// 诊断名称 + /// + public string DiagnosisName { get; set; } + + /// + /// 诊断建议 + /// + public string DiagnosisSuggestion { get; set; } + + } + + + + /// + /// 体检者未完成情况 6 + /// + public class UnitPhysicalExaminationReportExportWordData_MedicalUnCheckedStatistics + { + /// + /// 档案号 + /// + public string PatientNo { get; set; } + + /// + /// 姓名 + /// + public string PatientName { get; set; } + + + /// + /// 性别 + /// + public string SexName { get; set; } + + /// + /// 年龄 + /// + public string Age { get; set; } + + /// + /// 部门名称 + /// + public string DepartmentName { get; set; } + + } + + +} diff --git a/src/Shentun.Peis.Domain/Shentun.Peis.Domain.csproj b/src/Shentun.Peis.Domain/Shentun.Peis.Domain.csproj index 317f166..7794466 100644 --- a/src/Shentun.Peis.Domain/Shentun.Peis.Domain.csproj +++ b/src/Shentun.Peis.Domain/Shentun.Peis.Domain.csproj @@ -13,8 +13,10 @@ + + diff --git a/src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs b/src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs index 8a6f340..4a698ce 100644 --- a/src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs +++ b/src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs @@ -87,7 +87,7 @@ public class PeisHttpApiHostModule : AbpModule builder.SetAccessTokenLifetime(TimeSpan.FromDays(30)).SetRefreshTokenLifetime(TimeSpan.FromDays(60)); }); - + } public override void ConfigureServices(ServiceConfigurationContext context) @@ -175,7 +175,7 @@ public class PeisHttpApiHostModule : AbpModule }); }); */ - + } private void ConfigureAuthentication(ServiceConfigurationContext context) @@ -425,13 +425,19 @@ public class PeisHttpApiHostModule : AbpModule app.UseStaticFiles(); + app.UseStaticFiles(new StaticFileOptions + { + FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "ReportFile")), + RequestPath = "/ReportFile" + }); + app.UseStaticFiles(new StaticFileOptions { FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "UpLoad")), RequestPath = "/UpLoad" }); - + //虚拟目录 app.UseStaticFiles(new StaticFileOptions diff --git a/src/Shentun.Peis.HttpApi.Host/ReportFile/CustomerOrgTemplate/Page1.jpg b/src/Shentun.Peis.HttpApi.Host/ReportFile/CustomerOrgTemplate/Page1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c92b2627853959dbe442646ac84707bc6ac752a6 GIT binary patch literal 31749 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 literal 0 HcmV?d00001 diff --git a/src/Shentun.Peis.HttpApi.Host/ReportFile/CustomerOrgTemplate/logo_template.jpg b/src/Shentun.Peis.HttpApi.Host/ReportFile/CustomerOrgTemplate/logo_template.jpg new file mode 100644 index 0000000000000000000000000000000000000000..527f68b88df771926c1a22d283577581b9b191c7 GIT binary patch literal 8904 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 literal 0 HcmV?d00001