You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1646 lines
129 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. using Microsoft.EntityFrameworkCore;
  2. using Shentun.Peis.CustomerOrgs;
  3. using Shentun.Peis.Enums;
  4. using Shentun.Peis.Models;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Drawing;
  8. using System.IO;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using Volo.Abp.Domain.Repositories;
  13. using Volo.Abp.Domain.Services;
  14. using Xceed.Document.NET;
  15. using Xceed.Words.NET;
  16. namespace Shentun.Peis.ReportTemplates
  17. {
  18. /// <summary>
  19. /// 单位体检报告管理
  20. /// </summary>
  21. public class CustomerOrgReportManager : DomainService
  22. {
  23. private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
  24. private readonly CustomerOrgManager _customerOrgManager;
  25. private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
  26. private readonly IRepository<RegisterCheckAsbitem, Guid> _registerAsbitemRepository;
  27. private readonly IRepository<Asbitem, Guid> _asbitemRepository;
  28. private readonly IRepository<ItemType, Guid> _itemTypeRepository;
  29. private readonly IRepository<Sex> _sexRepository;
  30. private readonly IRepository<SumSummaryHeader, Guid> _sumSummaryHeaderRepository;
  31. private readonly IRepository<SumDiagnosis> _sumDiagnosisRepository;
  32. private readonly IRepository<SumSuggestionHeader> _sumSuggestionHeaderRepository;
  33. private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
  34. private readonly CacheService _cacheService;
  35. private readonly string DirectoryName = System.AppDomain.CurrentDomain.BaseDirectory + @"\ReportFile";
  36. public CustomerOrgReportManager(
  37. IRepository<PatientRegister, Guid> patientRegisterRepository,
  38. CustomerOrgManager customerOrgManager,
  39. IRepository<RegisterCheck, Guid> registerCheckRepository,
  40. IRepository<RegisterCheckAsbitem, Guid> registerAsbitemRepository,
  41. IRepository<Asbitem, Guid> asbitemRepository,
  42. IRepository<ItemType, Guid> itemTypeRepository,
  43. IRepository<Sex> sexRepository,
  44. IRepository<SumSummaryHeader, Guid> sumSummaryHeaderRepository,
  45. IRepository<SumDiagnosis> sumDiagnosisRepository,
  46. IRepository<SumSuggestionHeader> sumSuggestionHeaderRepository,
  47. IRepository<CustomerOrg, Guid> customerOrgRepository,
  48. CacheService cacheService)
  49. {
  50. _patientRegisterRepository = patientRegisterRepository;
  51. _customerOrgManager = customerOrgManager;
  52. _registerCheckRepository = registerCheckRepository;
  53. _registerAsbitemRepository = registerAsbitemRepository;
  54. _asbitemRepository = asbitemRepository;
  55. _itemTypeRepository = itemTypeRepository;
  56. _sexRepository = sexRepository;
  57. _sumSummaryHeaderRepository = sumSummaryHeaderRepository;
  58. _sumDiagnosisRepository = sumDiagnosisRepository;
  59. _sumSuggestionHeaderRepository = sumSuggestionHeaderRepository;
  60. _customerOrgRepository = customerOrgRepository;
  61. _cacheService = cacheService;
  62. }
  63. /// <summary>
  64. /// 根据模板创建报告
  65. /// </summary>
  66. /// <param name="documentData"></param>
  67. public string CreateCustomerOrgPeisFromTemplate(UnitPhysicalExaminationReportExportWordData documentData)
  68. {
  69. DocX template = DocX.Load(DirectoryName + @"\CustomerOrgTemplate\单位体检报告模板.docx");
  70. template.DifferentFirstPage = true;
  71. template.AddHeaders();
  72. Header header = template.Headers.Odd;
  73. // Insert Paragraph in header
  74. Paragraph paragraph = header.InsertParagraph();
  75. Xceed.Document.NET.Image logo = template.AddImage(DirectoryName + @"\CustomerOrgTemplate\logo.jpg");
  76. var pic = logo.CreatePicture();
  77. pic.Width = 40f;
  78. pic.Height = 40f;
  79. paragraph.AppendPicture(pic);
  80. paragraph.Append("\t\t\t\t健康体检中心");
  81. template.AddFooters();
  82. Footer footer = template.Footers.Odd;
  83. // Insert Paragraph in header
  84. //Paragraph paragraph1 = footer.InsertParagraph();
  85. //paragraph1.Append("File Format Develoer Guide");
  86. #region 封面
  87. template.ReplaceText(new StringReplaceTextOptions
  88. {
  89. SearchValue = "{MedicalTitle}",
  90. NewValue = documentData.MedicalTitle
  91. });
  92. template.ReplaceText(new StringReplaceTextOptions
  93. {
  94. SearchValue = "{MedicalTimes}",
  95. NewValue = documentData.MedicalTimes.ToString()
  96. });
  97. template.ReplaceText(new StringReplaceTextOptions
  98. {
  99. SearchValue = "{MedicalStartDate}",
  100. NewValue = documentData.MedicalStartDate
  101. });
  102. template.ReplaceText(new StringReplaceTextOptions
  103. {
  104. SearchValue = "{MedicalEndDate}",
  105. NewValue = documentData.MedicalEndDate
  106. });
  107. template.ReplaceText(new StringReplaceTextOptions
  108. {
  109. SearchValue = "{TabulationDate}",
  110. NewValue = documentData.TabulationDate
  111. });
  112. template.ReplaceText(new StringReplaceTextOptions
  113. {
  114. SearchValue = "{PrintDate}",
  115. NewValue = documentData.PrintDate
  116. });
  117. #endregion
  118. #region 参检人员构成情况
  119. template.AddCustomProperty(new CustomProperty("Register_MaleNumber", documentData.RegisterDetail.MaleNumber));
  120. template.AddCustomProperty(new CustomProperty("Register_FemaleNumber", documentData.RegisterDetail.FemaleNumber));
  121. template.AddCustomProperty(new CustomProperty("Register_OtherNumber", documentData.RegisterDetail.OtherNumber));
  122. template.AddCustomProperty(new CustomProperty("Register_TotalNumber", documentData.RegisterDetail.TotalNumber));
  123. template.AddCustomProperty(new CustomProperty("Register_MaleRatio", documentData.RegisterDetail.MaleRatio));
  124. template.AddCustomProperty(new CustomProperty("Register_FemaleRatio", documentData.RegisterDetail.FemaleRatio));
  125. template.AddCustomProperty(new CustomProperty("Checked_MaleNumber", documentData.CheckedDetail.MaleNumber));
  126. template.AddCustomProperty(new CustomProperty("Checked_FemaleNumber", documentData.CheckedDetail.FemaleNumber));
  127. template.AddCustomProperty(new CustomProperty("Checked_OtherNumber", documentData.CheckedDetail.OtherNumber));
  128. template.AddCustomProperty(new CustomProperty("Checked_TotalNumber", documentData.CheckedDetail.TotalNumber));
  129. template.AddCustomProperty(new CustomProperty("Checked_MaleRatio", documentData.CheckedDetail.MaleRatio));
  130. template.AddCustomProperty(new CustomProperty("Checked_FemaleRatio", documentData.CheckedDetail.FemaleRatio));
  131. template.AddCustomProperty(new CustomProperty("Checked_MaleExamineRatio", documentData.CheckedDetail.MaleExamineRatio));
  132. template.AddCustomProperty(new CustomProperty("Checked_FemaleExamineRatio", documentData.CheckedDetail.FemaleExamineRatio));
  133. template.AddCustomProperty(new CustomProperty("Checked_AverageExamineRatio", documentData.CheckedDetail.AverageExamineRatio));
  134. template.AddCustomProperty(new CustomProperty("UnCheck_MaleNumber", documentData.UnCheckedDetail.MaleNumber));
  135. template.AddCustomProperty(new CustomProperty("UnCheck_FemaleNumber", documentData.UnCheckedDetail.FemaleNumber));
  136. template.AddCustomProperty(new CustomProperty("UnCheck_OtherNumber", documentData.UnCheckedDetail.OtherNumber));
  137. template.AddCustomProperty(new CustomProperty("UnCheck_TotalNumber", documentData.UnCheckedDetail.TotalNumber));
  138. template.AddCustomProperty(new CustomProperty("UnCheck_MaleRatio", documentData.UnCheckedDetail.MaleRatio));
  139. template.AddCustomProperty(new CustomProperty("UnCheck_FemaleRatio", documentData.UnCheckedDetail.FemaleRatio));
  140. template.AddCustomProperty(new CustomProperty("UnCheck_MaleExamineRatio", documentData.UnCheckedDetail.MaleExamineRatio));
  141. template.AddCustomProperty(new CustomProperty("UnCheck_FemaleExamineRatio", documentData.UnCheckedDetail.FemaleExamineRatio));
  142. template.AddCustomProperty(new CustomProperty("UnCheck_AverageExamineRatio", documentData.UnCheckedDetail.AverageExamineRatio));
  143. #endregion
  144. #region 参检百分比
  145. var p3Paragraphs1 = template.Paragraphs.Where(p => p.Text.Equals("参检百分比:")).FirstOrDefault();
  146. var p3Chat1 = template.AddChart<PieChart>();
  147. p3Chat1.AddLegend(ChartLegendPosition.Right, true);
  148. var p3ChatData1 = new List<ChartData>();
  149. p3ChatData1.Add(new ChartData() { Category = "未检", Expenses = documentData.UnCheckedDetail.TotalNumber });
  150. p3ChatData1.Add(new ChartData() { Category = "已检", Expenses = documentData.CheckedDetail.TotalNumber });
  151. // 创建饼图并绑定数据
  152. var p3Chats1 = new Series("参检百分比");
  153. p3Chats1.Bind(p3ChatData1, "Category", "Expenses");
  154. p3Chat1.AddSeries(p3Chats1);
  155. template.InsertChartAfterParagraph(p3Chat1, p3Paragraphs1.NextParagraph, 200f, 150f);
  156. #endregion
  157. #region 参检性别百分比
  158. var p3Paragraphs2 = template.Paragraphs.Where(p => p.Text.Equals("参检性别百分比:")).FirstOrDefault();
  159. var p3Chat2 = template.AddChart<PieChart>();
  160. p3Chat2.AddLegend(ChartLegendPosition.Right, true);
  161. var p3ChatData2 = new List<ChartData>();
  162. p3ChatData2.Add(new ChartData() { Category = "男性", Expenses = documentData.CheckedDetail.MaleNumber });
  163. p3ChatData2.Add(new ChartData() { Category = "女性", Expenses = documentData.CheckedDetail.FemaleNumber });
  164. p3ChatData2.Add(new ChartData() { Category = "其他", Expenses = documentData.CheckedDetail.OtherNumber });
  165. // 创建饼图并绑定数据
  166. var p3Chats2 = new Series("参检性别百分比");
  167. p3Chats2.Bind(p3ChatData2, "Category", "Expenses");
  168. p3Chat2.AddSeries(p3Chats2);
  169. template.InsertChartAfterParagraph(p3Chat2, p3Paragraphs2.NextParagraph, 200f, 150f);
  170. #endregion
  171. #region 第二部分 体检项目得参检情况
  172. var table4 = template.Tables[4];
  173. var table4Data = documentData.MedicalItemExamineSituations;
  174. int rowIndex = 2;
  175. if (table4Data.Any())
  176. {
  177. foreach (var item in table4Data)
  178. {
  179. table4.Rows[rowIndex].Cells[0].Paragraphs[0].Append(item.ItemTypeName);
  180. table4.Rows[rowIndex].Cells[1].Paragraphs[0].Append(item.AsbitemName);
  181. table4.Rows[rowIndex].Cells[2].Paragraphs[0].Append(item.MaleAsbitemCheckNumber.ToString());
  182. table4.Rows[rowIndex].Cells[3].Paragraphs[0].Append(item.FemaleAsbitemCheckNumber.ToString());
  183. table4.Rows[rowIndex].Cells[4].Paragraphs[0].Append(item.TotalAsbitemCheckNumber.ToString());
  184. table4.Rows[rowIndex].Cells[5].Paragraphs[0].Append(item.MaleSumCheckNumber.ToString());
  185. table4.Rows[rowIndex].Cells[6].Paragraphs[0].Append(item.FemaleSumCheckNumber.ToString());
  186. table4.Rows[rowIndex].Cells[7].Paragraphs[0].Append(item.TotalSumCheckNumber.ToString());
  187. table4.Rows[rowIndex].Cells[8].Paragraphs[0].Append(item.MaleAsbitemCheckRatio.ToString());
  188. table4.Rows[rowIndex].Cells[9].Paragraphs[0].Append(item.FemaleAsbitemCheckRatio.ToString());
  189. table4.Rows[rowIndex].Cells[10].Paragraphs[0].Append(item.TotalAsbitemCheckRatio.ToString());
  190. rowIndex++;
  191. if (rowIndex - 2 < table4Data.Count) table4.InsertRow();
  192. }
  193. }
  194. #endregion
  195. #region 第三部分 全体员工体检结果汇总
  196. var table5 = template.Tables[5];
  197. var table5Data = documentData.MedicalResultSummarys;
  198. rowIndex = 1;
  199. if (table5Data.Any())
  200. {
  201. foreach (var item in table5Data)
  202. {
  203. table5.Rows[rowIndex].Cells[0].Paragraphs[0].Append(item.PatientNo);
  204. table5.Rows[rowIndex].Cells[1].Paragraphs[0].Append(item.PatientName);
  205. table5.Rows[rowIndex].Cells[2].Paragraphs[0].Append(item.SexName);
  206. table5.Rows[rowIndex].Cells[3].Paragraphs[0].Append(item.Age);
  207. table5.Rows[rowIndex].Cells[4].Paragraphs[0].Append(item.MedicalResult);
  208. rowIndex++;
  209. if (rowIndex - 1 < table5Data.Count) table5.InsertRow();
  210. }
  211. }
  212. #endregion
  213. #region 第四部分 体检异常结果检出统计
  214. var table6 = template.Tables[6];
  215. var table6Data = documentData.MedicalAbnormalResultStatistics;
  216. rowIndex = 2;
  217. if (table6Data.Any())
  218. {
  219. foreach (var item in table6Data)
  220. {
  221. table6.Rows[rowIndex].Cells[0].Paragraphs[0].Append(item.DiagnosisName);
  222. table6.Rows[rowIndex].Cells[1].Paragraphs[0].Append(item.PatientDetail);
  223. table6.Rows[rowIndex].Cells[2].Paragraphs[0].Append(item.MaleNumber.ToString());
  224. table6.Rows[rowIndex].Cells[3].Paragraphs[0].Append(item.FemaleNumber.ToString());
  225. table6.Rows[rowIndex].Cells[4].Paragraphs[0].Append(item.TotalNumber.ToString());
  226. table6.Rows[rowIndex].Cells[5].Paragraphs[0].Append(item.MaleRatio);
  227. table6.Rows[rowIndex].Cells[6].Paragraphs[0].Append(item.FemaleRatio);
  228. table6.Rows[rowIndex].Cells[7].Paragraphs[0].Append(item.AverageRatio);
  229. rowIndex++;
  230. if (rowIndex - 2 < table6Data.Count) table6.InsertRow();
  231. }
  232. }
  233. #endregion
  234. #region 十大异常柱状图
  235. var p3Paragraphs3 = template.Paragraphs.Where(p => p.Text.Equals("前十大异常结果柱状图:")).FirstOrDefault();
  236. var p6Chat1 = template.AddChart<BarChart>();
  237. p6Chat1.AddLegend(ChartLegendPosition.Right, false);
  238. p6Chat1.BarDirection = BarDirection.Column;//指示柱状图是横向的还是纵向的:Column纵向,Bar横向
  239. p6Chat1.BarGrouping = BarGrouping.Stacked;//这个不好解释,一个4个枚举值,你一一试一遍就知道了
  240. p6Chat1.GapWidth = 200;//柱状图表的宽度
  241. p6Chat1.GapWidth = 200;
  242. var p6ChatData = new List<ChartData>();
  243. if (documentData.MedicalAbnormalResultStatistics.Any())
  244. {
  245. var medicalAbnormalResultStatisticsTop10 = documentData.MedicalAbnormalResultStatistics.Take(10);
  246. foreach (var item in medicalAbnormalResultStatisticsTop10)
  247. {
  248. p6ChatData.Add(new ChartData() { Category = item.DiagnosisName, Expenses = item.TotalNumber });
  249. }
  250. }
  251. var p6Chats1 = new Series("疾病人数");
  252. p6Chats1.Color = Color.FromArgb(79, 129, 189);
  253. p6Chats1.Bind(p6ChatData, "Category", "Expenses");
  254. p6Chat1.AddSeries(p6Chats1);
  255. template.InsertChartAfterParagraph(p6Chat1, p3Paragraphs3.NextParagraph);
  256. #endregion
  257. #region 十大异常饼状图
  258. var p3Paragraphs4 = template.Paragraphs.Where(p => p.Text.Equals("前十大异常结果饼图:")).FirstOrDefault();
  259. var p6Chat2 = template.AddChart<PieChart>();
  260. p6Chat2.AddLegend(ChartLegendPosition.Right, true);
  261. //var p6ChatData2 = new List<ChartData>();
  262. //p6ChatData2.Add(new ChartData() { Category = "疾病1", Expenses = 22 });
  263. //p6ChatData2.Add(new ChartData() { Category = "疾病2", Expenses = 22 });
  264. //p6ChatData2.Add(new ChartData() { Category = "疾病3", Expenses = 22 });
  265. //p6ChatData2.Add(new ChartData() { Category = "疾病4", Expenses = 4 });
  266. //p6ChatData2.Add(new ChartData() { Category = "疾病5", Expenses = 5 });
  267. //p6ChatData2.Add(new ChartData() { Category = "疾病6", Expenses = 6 });
  268. //p6ChatData2.Add(new ChartData() { Category = "疾病7", Expenses = 7 });
  269. //p6ChatData2.Add(new ChartData() { Category = "疾病8", Expenses = 8 });
  270. //p6ChatData2.Add(new ChartData() { Category = "疾病9", Expenses = 9 });
  271. //p6ChatData2.Add(new ChartData() { Category = "疾病10", Expenses = 10 });
  272. // 创建饼图并绑定数据
  273. var p6Chats2 = new Series("疾病人数百分比");
  274. p6Chats2.Bind(p6ChatData, "Category", "Expenses");
  275. p6Chat2.AddSeries(p6Chats2);
  276. template.InsertChartAfterParagraph(p6Chat2, p3Paragraphs4.NextParagraph);
  277. #endregion
  278. #region 第五部分 十大异常结果分析
  279. var table7 = template.Tables[7];
  280. var table7Data = documentData.MedicalTenAbnormalResults;
  281. rowIndex = 1;
  282. if (table7Data.Any())
  283. {
  284. foreach (var item in table7Data)
  285. {
  286. table7.Rows[rowIndex].Cells[0].Paragraphs[0].Append(item.DiagnosisName);
  287. table7.Rows[rowIndex].Cells[1].Paragraphs[0].Append(item.DiagnosisSuggestion);
  288. rowIndex++;
  289. if (rowIndex - 1 < table7Data.Count) table7.InsertRow();
  290. }
  291. }
  292. #endregion
  293. #region 第六部分 体检者未完成情况
  294. var table8 = template.Tables[8];
  295. var table8Data = documentData.MedicalUnCheckedStatistics;
  296. rowIndex = 1;
  297. if (table8Data.Any())
  298. {
  299. foreach (var item in table8Data)
  300. {
  301. table8.Rows[rowIndex].Cells[0].Paragraphs[0].Append(item.PatientNo);
  302. table8.Rows[rowIndex].Cells[1].Paragraphs[0].Append(item.PatientName);
  303. table8.Rows[rowIndex].Cells[2].Paragraphs[0].Append(item.SexName);
  304. table8.Rows[rowIndex].Cells[3].Paragraphs[0].Append(item.Age);
  305. table8.Rows[rowIndex].Cells[4].Paragraphs[0].Append(item.DepartmentName);
  306. rowIndex++;
  307. if (rowIndex - 1 < table8Data.Count) table8.InsertRow();
  308. }
  309. }
  310. #endregion
  311. string documentName = $"{documentData.MedicalTitle}单位体检报告_{Guid.NewGuid().ToString()}.docx";
  312. string savaUrl = DirectoryName + $@"\CustomerOrgTemplate\docs\{DateTime.Now.Year}\{DateTime.Now.Month}\{DateTime.Now.Day}";
  313. if (!Directory.Exists(savaUrl))
  314. {
  315. Directory.CreateDirectory(savaUrl); //创建新文件夹
  316. }
  317. template.SaveAs($@"{savaUrl}\{documentName}");
  318. return $"/ReportFile/CustomerOrgTemplate/docs/{DateTime.Now.Year}/{DateTime.Now.Month}/{DateTime.Now.Day}/{documentName}";
  319. }
  320. /// <summary>
  321. /// 创建模板
  322. /// </summary>
  323. public void CreateCustomerOrgPeisTemplate()
  324. {
  325. DocX document = DocX.Create(DirectoryName + @"\CustomerOrgTemplate\单位体检报告模板.docx");
  326. //第一页
  327. Table p1Titletable = document.AddTable(1, 2);
  328. p1Titletable.Design = TableDesign.TableNormal;
  329. p1Titletable.Alignment = Alignment.center;
  330. Border b = new Border();
  331. b.Color = Color.FromArgb(51, 153, 102);
  332. b.Size = BorderSize.six;
  333. p1Titletable.SetBorder(TableBorderType.Bottom, b);
  334. List<Row> rows = p1Titletable.Rows;
  335. Row row0 = rows[0];
  336. row0.Height = 65f;
  337. row0.Cells[0].Width = 50f;
  338. Xceed.Document.NET.Image logo = document.AddImage(DirectoryName + @"\CustomerOrgTemplate\logo_template.jpg");
  339. Formatting p1TitleFormatting = new Formatting();
  340. p1TitleFormatting.FontFamily = new Xceed.Document.NET.Font("宋体");
  341. p1TitleFormatting.FontColor = Color.FromArgb(0, 128, 0);
  342. var pic = logo.CreatePicture();
  343. pic.Width = 65f;
  344. pic.Height = 65f;
  345. row0.Cells[0].Paragraphs[0].AppendPicture(pic);
  346. row0.Cells[0].VerticalAlignment = VerticalAlignment.Center;
  347. row0.Cells[1].Width = document.PageWidth - document.MarginLeft - document.MarginRight - 30f;
  348. row0.Cells[1].Paragraphs[0].Append("团体体检健康检查统计报告", p1TitleFormatting).FontSize(22).Alignment = Alignment.center;
  349. row0.Cells[1].VerticalAlignment = VerticalAlignment.Center;
  350. var pTitle = document.InsertParagraph();
  351. pTitle.InsertTableAfterSelf(p1Titletable);
  352. Formatting p1TitleSecFormatting = new Formatting();
  353. p1TitleSecFormatting.FontFamily = new Xceed.Document.NET.Font("楷体");
  354. p1TitleSecFormatting.Size = 26;
  355. var p1TitleSec = document.InsertParagraph();
  356. p1TitleSec.Alignment = Alignment.right;
  357. p1TitleSec.Append("{MedicalTitle}", p1TitleSecFormatting);
  358. var p1TitleSecExt = document.InsertParagraph();
  359. p1TitleSecFormatting.FontFamily = new Xceed.Document.NET.Font("隶书");
  360. p1TitleSecFormatting.Size = 26;
  361. p1TitleSecExt.Alignment = Alignment.right;
  362. p1TitleSecExt.Append("团检报告", p1TitleSecFormatting);
  363. document.InsertParagraph();
  364. Xceed.Document.NET.Image titleImg = document.AddImage(DirectoryName + @"\CustomerOrgTemplate\Page1.jpg");
  365. var p1TitleImg = document.InsertParagraph();
  366. p1TitleImg.Alignment = Alignment.center;
  367. p1TitleImg.AppendPicture(titleImg.CreatePicture());
  368. Table p1Contenttable = document.AddTable(5, 4);
  369. p1Contenttable.Design = TableDesign.TableNormal;
  370. List<Row> rowsContent = p1Contenttable.Rows;
  371. Row row0Content = rowsContent[0];
  372. Formatting p1TableContentFormatting = new Formatting();
  373. p1TableContentFormatting.FontFamily = new Xceed.Document.NET.Font("楷体");
  374. Border bTableContent = new Border();
  375. bTableContent.Color = Color.FromArgb(0, 128, 0);
  376. bTableContent.Size = BorderSize.four;
  377. Formatting p1TableColumn1ContentFormatting = new Formatting();
  378. p1TableColumn1ContentFormatting.FontFamily = new Xceed.Document.NET.Font("楷体");
  379. p1TableColumn1ContentFormatting.Size = 18;
  380. row0Content.Cells[0].Width = 200f;
  381. row0Content.Cells[1].Width = 150f;
  382. row0Content.Cells[2].Width = 300f;
  383. row0Content.Cells[1].Paragraphs[0].Append("体检次数", p1TableContentFormatting).FontSize(18).Alignment = Alignment.right;
  384. row0Content.Cells[1].VerticalAlignment = VerticalAlignment.Center;
  385. row0Content.Cells[2].Paragraphs[0].Append("{MedicalTimes}", p1TableColumn1ContentFormatting).Alignment = Alignment.left;
  386. row0Content.Cells[2].VerticalAlignment = VerticalAlignment.Center;
  387. row0Content.Cells[2].SetBorder(TableCellBorderType.Bottom, bTableContent);
  388. Row row1Content = rowsContent[1];
  389. row1Content.Cells[1].Paragraphs[0].Append("体检日期", p1TableContentFormatting).FontSize(18).Alignment = Alignment.right;
  390. row1Content.Cells[1].VerticalAlignment = VerticalAlignment.Center;
  391. row1Content.Cells[2].Paragraphs[0].Append("{MedicalStartDate}", p1TableColumn1ContentFormatting).FontSize(18).Alignment = Alignment.left;
  392. row1Content.Cells[2].VerticalAlignment = VerticalAlignment.Center;
  393. row1Content.Cells[2].SetBorder(TableCellBorderType.Bottom, bTableContent);
  394. Row row2Content = rowsContent[2];
  395. row2Content.Cells[1].Paragraphs[0].Append("结束月份", p1TableContentFormatting).FontSize(18).Alignment = Alignment.right;
  396. row2Content.Cells[1].VerticalAlignment = VerticalAlignment.Center;
  397. row2Content.Cells[2].Paragraphs[0].Append("{MedicalEndDate}", p1TableColumn1ContentFormatting).Alignment = Alignment.left;
  398. row2Content.Cells[2].VerticalAlignment = VerticalAlignment.Center;
  399. row2Content.Cells[2].SetBorder(TableCellBorderType.Bottom, bTableContent);
  400. Row row3Content = rowsContent[3];
  401. row3Content.Cells[1].Paragraphs[0].Append("制表日期", p1TableContentFormatting).FontSize(18).Alignment = Alignment.right;
  402. row3Content.Cells[1].VerticalAlignment = VerticalAlignment.Center;
  403. row3Content.Cells[2].Paragraphs[0].Append("{TabulationDate}", p1TableColumn1ContentFormatting).Alignment = Alignment.left;
  404. row3Content.Cells[2].VerticalAlignment = VerticalAlignment.Center;
  405. Row row4Content = rowsContent[4];
  406. row4Content.Cells[1].Paragraphs[0].Append("打印日期", p1TableContentFormatting).FontSize(18).Alignment = Alignment.right;
  407. row4Content.Cells[1].VerticalAlignment = VerticalAlignment.Center;
  408. row4Content.Cells[2].Paragraphs[0].Append("{PrintDate}", p1TableColumn1ContentFormatting).Alignment = Alignment.left;
  409. row4Content.Cells[2].VerticalAlignment = VerticalAlignment.Center;
  410. var p1Content = document.InsertParagraph();
  411. p1Content.InsertTableAfterSelf(p1Contenttable);
  412. for (int i = 0; i <= 10; i++) document.InsertParagraph();
  413. Table p1FootTable = document.AddTable(1, 1);
  414. p1FootTable.Design = TableDesign.TableNormal;
  415. List<Row> rowsFootTable = p1FootTable.Rows;
  416. Row row0Foot = rowsFootTable[0];
  417. row0Foot.Cells[0].Paragraphs[0].Append("医院体检中心 编制", p1TableContentFormatting).FontSize(14).Alignment = Alignment.right;
  418. row0Foot.Cells[0].VerticalAlignment = VerticalAlignment.Center;
  419. row0Foot.Cells[0].SetBorder(TableCellBorderType.Bottom, bTableContent);
  420. var p1Foot = document.InsertParagraph();
  421. p1Foot.InsertTableAfterSelf(p1FootTable);
  422. var p1Foot1 = document.InsertParagraph();
  423. p1Foot1.Append("体检中心地址:", p1TableContentFormatting).FontSize(10).Alignment = Alignment.right;
  424. //第二页
  425. p1Foot1.InsertPageBreakAfterSelf();
  426. Xceed.Document.NET.Font f = new Xceed.Document.NET.Font("宋体");
  427. var p2_1 = document.InsertParagraph("前言").Font(f).FontSize(14);
  428. document.InsertParagraph();
  429. document.InsertParagraph("这是一本针对贵单位员工体检结果的综合分析资料,希望透过本资料,让贵单位主管能够了解员工的健康状况及可以改善的方向。").Font(f).FontSize(12).IndentationFirstLine = 32.0f;
  430. document.InsertParagraph(@"这份报告包括五大部份:基础资料、体检异常情况统计、员工健康问题分析及保健建议、女性员工健康问题分析及保健建议、男性员工健康问题分析及保健建议、全体员工体检结果汇总。我们在每个部份都会提供重要的健康与疾病相关知识,以及后续应该如何处理等信息。让非常关心员工健康的您,知道如何再进一步改善或提倡健康促进活动。").Font(f).FontSize(12).IndentationFirstLine = 32.0f;
  431. document.InsertParagraph(@"第一部份:参检人员构成情况").Font(f).FontSize(12).IndentationFirstLine = 32.0f;
  432. document.InsertParagraph(@"第二部份:体检项目与体检项目的参检情况").Font(f).FontSize(12).IndentationFirstLine = 32.0f;
  433. document.InsertParagraph(@"第三部份:全体员工体检结果汇总").Font(f).FontSize(12).IndentationFirstLine = 32.0f;
  434. document.InsertParagraph(@"第四部份:本次体检异常结果检出统计").Font(f).FontSize(12).IndentationFirstLine = 32.0f;
  435. document.InsertParagraph(@"第五部份: 本次体检前十大异常结果分析").Font(f).FontSize(12).IndentationFirstLine = 32.0f;
  436. document.InsertParagraph(@"第六部份: 体检者未完成情况").Font(f).FontSize(12).IndentationFirstLine = 32.0f;
  437. document.InsertParagraph(@"第七部分:常见体检异常结果分析及健康指导").Font(f).FontSize(12).IndentationFirstLine = 32.0f;
  438. document.InsertParagraph();
  439. document.InsertParagraph(@"医院体检中心另提供完善的后续服务,包括护理咨询服务、特色医院导诊服务、营养咨询等。有任何需要,请电洽相关部门,或拨打咨询专线咨询相关事宜。").Font(f).FontSize(12).IndentationFirstLine = 32.0f;
  440. document.InsertParagraph();
  441. document.InsertParagraph(@"定期健康检查对于员工健康的重要性相信您已知道,然而,更重要的是完成健康检查后,改善健康活动的开始,也就是健康促进的一级预防医学(适当的运动、均衡的饮食、身心休闲),这才是健康检查最终的目标。").Font(f).FontSize(12).IndentationFirstLine = 32.0f;
  442. document.InsertParagraph();
  443. document.InsertParagraph(@"完全依赖治疗的时代已经过去了,应定期健康检查,并落实健康促进的一级预防医学,这将是未来人类健康的不二法门。").Font(f).FontSize(12).IndentationFirstLine = 32.0f;
  444. //第三页
  445. var p2_last = document.InsertParagraph();
  446. p2_last.InsertPageBreakAfterSelf();
  447. document.InsertParagraph(@"一、参检人员构成情况").Font(f).FontSize(16);
  448. Table p3Contenttable = document.AddTable(5, 10);
  449. p3Contenttable.Design = TableDesign.TableGrid;
  450. List<Row> p3rowsContent = p3Contenttable.Rows;
  451. Row p3Row0 = p3rowsContent[0];
  452. p3Contenttable.MergeCellsInColumn(0, 0, 1);
  453. p3Row0.Cells[0].Paragraphs[0].Append("情况类型").Font(f).FontSize(10.5).Alignment = Alignment.center;
  454. p3Row0.Cells[0].FillColor = Color.FromArgb(209, 245, 203);
  455. p3Row0.MergeCells(1, 4);
  456. p3Row0.Cells[1].Paragraphs[0].Append("人数").Font(f).FontSize(10.5).Alignment = Alignment.center;
  457. p3Row0.Cells[1].FillColor = Color.FromArgb(209, 245, 203);
  458. p3Row0.MergeCells(2, 3);
  459. p3Row0.Cells[2].Paragraphs[0].Append("构成比率").Font(f).FontSize(10.5).Alignment = Alignment.center;
  460. p3Row0.Cells[2].FillColor = Color.FromArgb(209, 245, 203);
  461. p3Row0.MergeCells(3, 5);
  462. p3Row0.Cells[3].Paragraphs[0].Append("参检比率").Font(f).FontSize(10.5).Alignment = Alignment.center;
  463. p3Row0.Cells[3].FillColor = Color.FromArgb(209, 245, 203);
  464. p3Contenttable.SetColumnWidth(0, 35f);
  465. Row p3Row1 = p3rowsContent[1];
  466. p3Row1.Cells[1].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center;
  467. p3Row1.Cells[1].FillColor = Color.FromArgb(209, 245, 203);
  468. p3Row1.Cells[2].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center;
  469. p3Row1.Cells[2].FillColor = Color.FromArgb(209, 245, 203);
  470. p3Row1.Cells[3].Paragraphs[0].Append("其它").Font(f).FontSize(10.5).Alignment = Alignment.center;
  471. p3Row1.Cells[3].FillColor = Color.FromArgb(209, 245, 203);
  472. p3Row1.Cells[4].Paragraphs[0].Append("合计").Font(f).FontSize(10.5).Alignment = Alignment.center;
  473. p3Row1.Cells[4].FillColor = Color.FromArgb(209, 245, 203);
  474. p3Row1.Cells[5].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center;
  475. p3Row1.Cells[5].FillColor = Color.FromArgb(209, 245, 203);
  476. p3Row1.Cells[6].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center;
  477. p3Row1.Cells[6].FillColor = Color.FromArgb(209, 245, 203);
  478. p3Row1.Cells[7].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center;
  479. p3Row1.Cells[7].FillColor = Color.FromArgb(209, 245, 203);
  480. p3Row1.Cells[8].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center;
  481. p3Row1.Cells[8].FillColor = Color.FromArgb(209, 245, 203);
  482. p3Row1.Cells[9].Paragraphs[0].Append("平均").Font(f).FontSize(10.5).Alignment = Alignment.center;
  483. p3Row1.Cells[9].FillColor = Color.FromArgb(209, 245, 203);
  484. Formatting p3TableFormatting = new Formatting();
  485. p3TableFormatting.FontFamily = new Xceed.Document.NET.Font("宋体");
  486. p3TableFormatting.Size = 10.5;
  487. CustomProperty p3_Register_MaleNumber = new CustomProperty("Register_MaleNumber", "{男性登记人数}");
  488. CustomProperty p3_Register_FemaleNumber = new CustomProperty("Register_FemaleNumber", "{女性登记人数}");
  489. CustomProperty p3_Register_OtherNumber = new CustomProperty("Register_OtherNumber", "{其它登记人数}");
  490. CustomProperty p3_Register_TotalNumber = new CustomProperty("Register_TotalNumber", "{总登记人数}");
  491. CustomProperty p3_Register_MaleRatio = new CustomProperty("Register_MaleRatio", "{男性登记人数占总登记人数百分比}");
  492. CustomProperty p3_Register_FemaleRatio = new CustomProperty("Register_FemaleRatio", "{女性登记人数占总登记人数百分比}");
  493. CustomProperty p3_Checked_MaleNumber = new CustomProperty("Checked_MaleNumber", "{男性实检人数}");
  494. CustomProperty p3_Checked_FemaleNumber = new CustomProperty("Checked_FemaleNumber", "{女性实检人数}");
  495. CustomProperty p3_Checked_OtherNumber = new CustomProperty("Checked_OtherNumber", "{其它实检人数}");
  496. CustomProperty p3_Checked_TotalNumber = new CustomProperty("Checked_TotalNumber", "{总实检人数}");
  497. CustomProperty p3_Checked_MaleRatio = new CustomProperty("Checked_MaleRatio", "{男性实检人数占总实检人数百分比}");
  498. CustomProperty p3_Checked_FemaleRatio = new CustomProperty("Checked_FemaleRatio", "{女性实检人数占总实检人数百分比}");
  499. CustomProperty p3_Checked_MaleExamineRatio = new CustomProperty("Checked_MaleExamineRatio", "{男性实检人数占男性登记人数百分比}");
  500. CustomProperty p3_Checked_FemaleExamineRatio = new CustomProperty("Checked_FemaleExamineRatio", "{女性实检人数占女性登记人数百分比}");
  501. CustomProperty p3_Checked_AverageExamineRatio = new CustomProperty("Checked_AverageExamineRatio", "{总实检人数占总登记人数百分比}");
  502. CustomProperty p3_UnCheck_MaleNumber = new CustomProperty("UnCheck_MaleNumber", "{男性未检人数}");
  503. CustomProperty p3_UnCheck_FemaleNumber = new CustomProperty("UnCheck_FemaleNumber", "{女性未检人数}");
  504. CustomProperty p3_UnCheck_OtherNumber = new CustomProperty("UnCheck_OtherNumber", "{其他未检人数}");
  505. CustomProperty p3_UnCheck_TotalNumber = new CustomProperty("UnCheck_TotalNumber", "{总未检人数}");
  506. CustomProperty p3_UnCheck_MaleRatio = new CustomProperty("UnCheck_MaleRatio", "{男性未检人数占总未检人数百分比}");
  507. CustomProperty p3_UnCheck_FemaleRatio = new CustomProperty("UnCheck_FemaleRatio", "{女性未检人数占总未检人数百分比}");
  508. CustomProperty p3_UnCheck_MaleExamineRatio = new CustomProperty("UnCheck_MaleExamineRatio", "{男性未检人数占男性登记人数百分比}");
  509. CustomProperty p3_UnCheck_FemaleExamineRatio = new CustomProperty("UnCheck_FemaleExamineRatio", "{女性未检人数占女性登记人数百分比}");
  510. CustomProperty p3_UnCheck_AverageExamineRatio = new CustomProperty("UnCheck_AverageExamineRatio", "{总未检人数占总登记人数百分比}");
  511. Row p3Row2 = p3rowsContent[2];
  512. p3Row2.Cells[0].Paragraphs[0].Append("登记").Font(f).FontSize(10.5).Alignment = Alignment.center;
  513. p3Row2.Cells[1].Paragraphs[0].AppendDocProperty(p3_Register_MaleNumber).Font(f).FontSize(10.5).Alignment = Alignment.center;
  514. p3Row2.Cells[2].Paragraphs[0].AppendDocProperty(p3_Register_FemaleNumber).Font(f).FontSize(10.5).Alignment = Alignment.center;
  515. p3Row2.Cells[3].Paragraphs[0].AppendDocProperty(p3_Register_OtherNumber).Font(f).FontSize(10.5).Alignment = Alignment.center;
  516. p3Row2.Cells[4].Paragraphs[0].AppendDocProperty(p3_Register_TotalNumber).Font(f).FontSize(10.5).Alignment = Alignment.center;
  517. p3Row2.Cells[5].Paragraphs[0].AppendDocProperty(p3_Register_MaleRatio).Font(f).FontSize(10.5).Alignment = Alignment.center;
  518. p3Row2.Cells[6].Paragraphs[0].AppendDocProperty(p3_Register_FemaleRatio).Font(f).FontSize(10.5).Alignment = Alignment.center;
  519. p3Row2.Cells[7].Paragraphs[0].Append("100%").Font(f).FontSize(10.5).Alignment = Alignment.center;
  520. p3Row2.Cells[8].Paragraphs[0].Append("100%").Font(f).FontSize(10.5).Alignment = Alignment.center;
  521. p3Row2.Cells[9].Paragraphs[0].Append("100%").Font(f).FontSize(10.5).Alignment = Alignment.center;
  522. Row p3Row3 = p3rowsContent[3];
  523. p3Row3.Cells[0].Paragraphs[0].Append("实检").Font(f).FontSize(10.5).Alignment = Alignment.center;
  524. p3Row3.Cells[1].Paragraphs[0].AppendDocProperty(p3_Checked_MaleNumber).Font(f).FontSize(10.5).Alignment = Alignment.center;
  525. p3Row3.Cells[2].Paragraphs[0].AppendDocProperty(p3_Checked_FemaleNumber).Font(f).FontSize(10.5).Alignment = Alignment.center;
  526. p3Row3.Cells[3].Paragraphs[0].AppendDocProperty(p3_Checked_OtherNumber).Font(f).FontSize(10.5).Alignment = Alignment.center;
  527. p3Row3.Cells[4].Paragraphs[0].AppendDocProperty(p3_Checked_TotalNumber).Font(f).FontSize(10.5).Alignment = Alignment.center;
  528. p3Row3.Cells[5].Paragraphs[0].AppendDocProperty(p3_Checked_MaleRatio).Font(f).FontSize(10.5).Alignment = Alignment.center;
  529. p3Row3.Cells[6].Paragraphs[0].AppendDocProperty(p3_Checked_FemaleRatio).Font(f).FontSize(10.5).Alignment = Alignment.center;
  530. p3Row3.Cells[7].Paragraphs[0].AppendDocProperty(p3_Checked_MaleExamineRatio).Font(f).FontSize(10.5).Alignment = Alignment.center;
  531. p3Row3.Cells[8].Paragraphs[0].AppendDocProperty(p3_Checked_FemaleExamineRatio).Font(f).FontSize(10.5).Alignment = Alignment.center;
  532. p3Row3.Cells[9].Paragraphs[0].AppendDocProperty(p3_Checked_AverageExamineRatio).Font(f).FontSize(10.5).Alignment = Alignment.center;
  533. Row p3Row4 = p3rowsContent[4];
  534. p3Row4.Cells[0].Paragraphs[0].Append("未检").Font(f).FontSize(10.5).Alignment = Alignment.center;
  535. p3Row4.Cells[1].Paragraphs[0].AppendDocProperty(p3_UnCheck_MaleNumber).Font(f).FontSize(10.5).Alignment = Alignment.center;
  536. p3Row4.Cells[2].Paragraphs[0].AppendDocProperty(p3_UnCheck_FemaleNumber).Font(f).FontSize(10.5).Alignment = Alignment.center;
  537. p3Row4.Cells[3].Paragraphs[0].AppendDocProperty(p3_UnCheck_OtherNumber).Font(f).FontSize(10.5).Alignment = Alignment.center;
  538. p3Row4.Cells[4].Paragraphs[0].AppendDocProperty(p3_UnCheck_TotalNumber).Font(f).FontSize(10.5).Alignment = Alignment.center;
  539. p3Row4.Cells[5].Paragraphs[0].AppendDocProperty(p3_UnCheck_MaleRatio).Font(f).FontSize(10.5).Alignment = Alignment.center;
  540. p3Row4.Cells[6].Paragraphs[0].AppendDocProperty(p3_UnCheck_FemaleRatio).Font(f).FontSize(10.5).Alignment = Alignment.center;
  541. p3Row4.Cells[7].Paragraphs[0].AppendDocProperty(p3_UnCheck_MaleExamineRatio).Font(f).FontSize(10.5).Alignment = Alignment.center;
  542. p3Row4.Cells[8].Paragraphs[0].AppendDocProperty(p3_UnCheck_FemaleExamineRatio).Font(f).FontSize(10.5).Alignment = Alignment.center;
  543. p3Row4.Cells[9].Paragraphs[0].AppendDocProperty(p3_UnCheck_AverageExamineRatio).Font(f).FontSize(10.5).Alignment = Alignment.center;
  544. var p3Content = document.InsertParagraph();
  545. p3Content.InsertTableAfterSelf(p3Contenttable);
  546. document.InsertParagraph("参检百分比:").Font(f).FontSize(14).Alignment = Alignment.left;
  547. document.InsertParagraph().Alignment = Alignment.center;
  548. //var p3Chat1 = document.AddChart<PieChart>();
  549. //p3Chat1.AddLegend(ChartLegendPosition.Right, true);
  550. //var p3ChatData1 = ChartData.CreateReferenceRate();
  551. //// 创建饼图并绑定数据
  552. //var p3Chats1 = new Series("参检率");
  553. //p3Chats1.Bind(p3ChatData1, "Category", "Expenses");
  554. //p3Chat1.AddSeries(p3Chats1);
  555. //document.InsertChart(p3Chat1, 200f, 150f);
  556. //document.Paragraphs[document.Paragraphs.Count - 1].Alignment = Alignment.center;
  557. document.InsertParagraph("参检性别百分比:").Font(f).FontSize(14).Alignment = Alignment.left;
  558. document.InsertParagraph().Alignment = Alignment.center;
  559. //var p3Chat2 = document.AddChart<PieChart>();
  560. //p3Chat2.AddLegend(ChartLegendPosition.Right, true);
  561. //var p3ChatData2 = ChartData.CreateReferenceRateSex();
  562. //// 创建饼图并绑定数据
  563. //var p3Chats2 = new Series("参检性别百分比");
  564. //p3Chats2.Bind(p3ChatData2, "Category", "Expenses");
  565. //p3Chat2.AddSeries(p3Chats2);
  566. //document.InsertChart(p3Chat2, 200f, 150f);
  567. //document.Paragraphs[document.Paragraphs.Count - 1].Alignment = Alignment.center;
  568. //var p3Paragraphs1 = document.Paragraphs.Where(p => p.Text.Equals("参检百分比:")).FirstOrDefault();
  569. //第四页
  570. document.Paragraphs[document.Paragraphs.Count - 1].InsertPageBreakAfterSelf();
  571. document.InsertParagraph(@"二、体检项目与体检项目的参检情况").Font(f).FontSize(16);
  572. Table p4Contenttable = document.AddTable(3, 11);
  573. p4Contenttable.Design = TableDesign.TableGrid;
  574. List<Row> p4rowsContent = p4Contenttable.Rows;
  575. p4Contenttable.SetColumnWidth(0, 55f);
  576. p4Contenttable.SetColumnWidth(1, 85f);
  577. Row p4Row0 = p4rowsContent[0];
  578. p4Row0.MergeCells(0, 1);
  579. p4Row0.Cells[0].Paragraphs[0].Append("体检项目").Font(f).FontSize(10.5).Alignment = Alignment.center;
  580. p4Row0.Cells[0].FillColor = Color.FromArgb(209, 245, 203);
  581. p4Row0.MergeCells(1, 3);
  582. p4Row0.Cells[1].Paragraphs[0].Append("该项参检人数").Font(f).FontSize(10.5).Alignment = Alignment.center;
  583. p4Row0.Cells[1].FillColor = Color.FromArgb(209, 245, 203);
  584. p4Row0.MergeCells(2, 4);
  585. p4Row0.Cells[2].Paragraphs[0].Append("总体参检人数").Font(f).FontSize(10.5).Alignment = Alignment.center;
  586. p4Row0.Cells[2].FillColor = Color.FromArgb(209, 245, 203);
  587. p4Row0.MergeCells(3, 5);
  588. p4Row0.Cells[3].Paragraphs[0].Append("该项参检百分比").Font(f).FontSize(10.5).Alignment = Alignment.center;
  589. p4Row0.Cells[3].FillColor = Color.FromArgb(209, 245, 203);
  590. Row p4Row1 = p4rowsContent[1];
  591. p4Row1.Cells[0].Paragraphs[0].Append("检查科室").Font(f).FontSize(10.5).Alignment = Alignment.center;
  592. p4Row1.Cells[0].FillColor = Color.FromArgb(209, 245, 203);
  593. p4Row1.Cells[1].Paragraphs[0].Append("项目名称").Font(f).FontSize(10.5).Alignment = Alignment.center;
  594. p4Row1.Cells[1].FillColor = Color.FromArgb(209, 245, 203);
  595. p4Row1.Cells[2].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center;
  596. p4Row1.Cells[2].FillColor = Color.FromArgb(209, 245, 203);
  597. p4Row1.Cells[3].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center;
  598. p4Row1.Cells[3].FillColor = Color.FromArgb(209, 245, 203);
  599. p4Row1.Cells[4].Paragraphs[0].Append("合计").Font(f).FontSize(10.5).Alignment = Alignment.center;
  600. p4Row1.Cells[4].FillColor = Color.FromArgb(209, 245, 203);
  601. p4Row1.Cells[5].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center;
  602. p4Row1.Cells[5].FillColor = Color.FromArgb(209, 245, 203);
  603. p4Row1.Cells[6].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center;
  604. p4Row1.Cells[6].FillColor = Color.FromArgb(209, 245, 203);
  605. p4Row1.Cells[7].Paragraphs[0].Append("合计").Font(f).FontSize(10.5).Alignment = Alignment.center;
  606. p4Row1.Cells[7].FillColor = Color.FromArgb(209, 245, 203);
  607. p4Row1.Cells[8].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center;
  608. p4Row1.Cells[8].FillColor = Color.FromArgb(209, 245, 203);
  609. p4Row1.Cells[9].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center;
  610. p4Row1.Cells[9].FillColor = Color.FromArgb(209, 245, 203);
  611. p4Row1.Cells[10].Paragraphs[0].Append("合计").Font(f).FontSize(10.5).Alignment = Alignment.center;
  612. p4Row1.Cells[10].FillColor = Color.FromArgb(209, 245, 203);
  613. var p4Content = document.InsertParagraph();
  614. p4Content.InsertTableAfterSelf(p4Contenttable);
  615. //第五页
  616. document.InsertParagraph().InsertPageBreakAfterSelf();
  617. document.InsertParagraph(@"三、全体员工体检结果汇总").Font(f).FontSize(16);
  618. var p5Content = document.InsertParagraph(@"个人隐私请保密,仅供贵单位领导参阅").Font(f).FontSize(10.5);
  619. Table p5Contenttable = document.AddTable(2, 5);
  620. p5Contenttable.Design = TableDesign.TableGrid;
  621. p5Contenttable.SetColumnWidth(0, 110f);
  622. p5Contenttable.SetColumnWidth(1, 75f);
  623. p5Contenttable.SetColumnWidth(2, 35f);
  624. p5Contenttable.SetColumnWidth(3, 45f);
  625. p5Contenttable.SetColumnWidth(4, document.PageWidth - document.MarginLeft - document.MarginRight - 265f);
  626. List<Row> p5rowsContent = p5Contenttable.Rows;
  627. Row p5Row0 = p5rowsContent[0];
  628. p5Row0.Cells[0].Paragraphs[0].Append("档案号").Font(f).FontSize(10.5).Alignment = Alignment.center;
  629. p5Row0.Cells[0].FillColor = Color.FromArgb(209, 245, 203);
  630. p5Row0.Cells[1].Paragraphs[0].Append("姓名").Font(f).FontSize(10.5).Alignment = Alignment.center;
  631. p5Row0.Cells[1].FillColor = Color.FromArgb(209, 245, 203);
  632. p5Row0.Cells[2].Paragraphs[0].Append("性别").Font(f).FontSize(10.5).Alignment = Alignment.center;
  633. p5Row0.Cells[2].FillColor = Color.FromArgb(209, 245, 203);
  634. p5Row0.Cells[3].Paragraphs[0].Append("年龄").Font(f).FontSize(10.5).Alignment = Alignment.center;
  635. p5Row0.Cells[3].FillColor = Color.FromArgb(209, 245, 203);
  636. p5Row0.Cells[4].Paragraphs[0].Append("体检结果").Font(f).FontSize(10.5).Alignment = Alignment.center;
  637. p5Row0.Cells[4].FillColor = Color.FromArgb(209, 245, 203);
  638. p5Content.InsertTableAfterSelf(p5Contenttable);
  639. document.InsertParagraph("(注: 敬请保护个人隐私, 本档案仅供贵单位负责职工健康体检的人员查阅! 未经员工本人同意, 不得外泄资料, 否则, 造成不良影响由贵单位承担, 与本中心无关!)").Font(f).FontSize(10.5);
  640. document.InsertParagraph();
  641. document.InsertParagraph(@"四、本次体检异常结果检出统计").Font(f).FontSize(16);
  642. var p5Content1 = document.InsertParagraph(@"贵单位此次在我中心进行员工体检,内容包括[登记组合项目][实检组合项目],现将检出的按男女综合检出数量最高的部分异常情况进行统计分析,以反映出员工的健康状况。").Font(f).FontSize(10.5);
  643. Table p5Contenttable2 = document.AddTable(3, 8);
  644. p5Contenttable2.Design = TableDesign.TableGrid;
  645. p5Contenttable2.SetColumnWidth(0, 95f);
  646. p5Contenttable2.SetColumnWidth(1, 130f);
  647. p5Contenttable2.SetColumnWidth(2, 40f);
  648. p5Contenttable2.SetColumnWidth(3, 40f);
  649. p5Contenttable2.SetColumnWidth(4, 40f);
  650. p5Contenttable2.SetColumnWidth(5, 40f);
  651. p5Contenttable2.SetColumnWidth(6, 40f);
  652. p5Contenttable2.SetColumnWidth(7, 40f);
  653. List<Row> p5rowsContent2 = p5Contenttable2.Rows;
  654. Row p5Table2Row0 = p5rowsContent2[0];
  655. p5Table2Row0.MergeCells(0, 1);
  656. p5Table2Row0.Cells[0].Paragraphs[0].Append("体检结论").Font(f).FontSize(10.5).Alignment = Alignment.center;
  657. p5Table2Row0.Cells[0].FillColor = Color.FromArgb(209, 245, 203);
  658. p5Table2Row0.MergeCells(1, 3);
  659. p5Table2Row0.Cells[1].Paragraphs[0].Append("人数").Font(f).FontSize(10.5).Alignment = Alignment.center;
  660. p5Table2Row0.Cells[1].FillColor = Color.FromArgb(209, 245, 203);
  661. p5Table2Row0.MergeCells(2, 4);
  662. p5Table2Row0.Cells[2].Paragraphs[0].Append("百分比").Font(f).FontSize(10.5).Alignment = Alignment.center;
  663. p5Table2Row0.Cells[2].FillColor = Color.FromArgb(209, 245, 203);
  664. Row p5Table2Row1 = p5rowsContent2[1];
  665. p5Table2Row1.Cells[0].Paragraphs[0].Append("结论").Font(f).FontSize(10.5).Alignment = Alignment.center;
  666. p5Table2Row1.Cells[0].FillColor = Color.FromArgb(209, 245, 203);
  667. p5Table2Row1.Cells[1].Paragraphs[0].Append("人员名单").Font(f).FontSize(10.5).Alignment = Alignment.center;
  668. p5Table2Row1.Cells[1].FillColor = Color.FromArgb(209, 245, 203);
  669. p5Table2Row1.Cells[2].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center;
  670. p5Table2Row1.Cells[2].FillColor = Color.FromArgb(209, 245, 203);
  671. p5Table2Row1.Cells[3].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center;
  672. p5Table2Row1.Cells[3].FillColor = Color.FromArgb(209, 245, 203);
  673. p5Table2Row1.Cells[4].Paragraphs[0].Append("合计").Font(f).FontSize(10.5).Alignment = Alignment.center;
  674. p5Table2Row1.Cells[4].FillColor = Color.FromArgb(209, 245, 203);
  675. p5Table2Row1.Cells[5].Paragraphs[0].Append("男性").Font(f).FontSize(10.5).Alignment = Alignment.center;
  676. p5Table2Row1.Cells[5].FillColor = Color.FromArgb(209, 245, 203);
  677. p5Table2Row1.Cells[6].Paragraphs[0].Append("女性").Font(f).FontSize(10.5).Alignment = Alignment.center;
  678. p5Table2Row1.Cells[6].FillColor = Color.FromArgb(209, 245, 203);
  679. p5Table2Row1.Cells[7].Paragraphs[0].Append("平均").Font(f).FontSize(10.5).Alignment = Alignment.center;
  680. p5Table2Row1.Cells[7].FillColor = Color.FromArgb(209, 245, 203);
  681. p5Content1.InsertTableAfterSelf(p5Contenttable2);
  682. //第六页
  683. document.InsertParagraph().InsertPageBreakAfterSelf();
  684. document.InsertParagraph(@"前十大异常结果柱状图:").Font(f).FontSize(16);
  685. document.InsertParagraph().Alignment = Alignment.center;
  686. //var p6Chat1 = document.AddChart<BarChart>();
  687. //p6Chat1.AddLegend(ChartLegendPosition.Right, false);
  688. //p6Chat1.BarDirection = BarDirection.Column;//指示柱状图是横向的还是纵向的:Column纵向,Bar横向
  689. //p6Chat1.BarGrouping = BarGrouping.Stacked;//这个不好解释,一个4个枚举值,你一一试一遍就知道了
  690. //p6Chat1.GapWidth = 200;//柱状图表的宽度
  691. //p6Chat1.GapWidth = 200;
  692. //var usa = ChartData.CreateDisease();
  693. //var p6Chats1 = new Series("疾病人数");
  694. //p6Chats1.Color = Color.FromArgb(79, 129, 189);
  695. //p6Chats1.Bind(usa, "Category", "Expenses");
  696. //p6Chat1.AddSeries(p6Chats1);
  697. //document.InsertChart(p6Chat1);
  698. document.InsertParagraph();
  699. document.InsertParagraph(@"前十大异常结果饼图:").Font(f).FontSize(16);
  700. document.InsertParagraph().Alignment = Alignment.center;
  701. //var p6Chat2 = document.AddChart<PieChart>();
  702. //p6Chat2.AddLegend(ChartLegendPosition.Right, true);
  703. //var p6ChatData2 = ChartData.CreateException();
  704. //// 创建饼图并绑定数据
  705. //var p6Chats2 = new Series("疾病人数百分比");
  706. //p6Chats2.Bind(p6ChatData2, "Category", "Expenses");
  707. //p6Chat2.AddSeries(p6Chats2);
  708. //document.InsertChart(p6Chat2);
  709. //第七页
  710. document.InsertParagraph().InsertPageBreakAfterSelf();
  711. document.InsertParagraph(@"该部分针对贵单位员工在我中心体检时,所检出的各种异常情况提供相关的分析与医疗保健建议").Font(f).FontSize(10.5);
  712. var p7Content = document.InsertParagraph(@"五、本次体检前十大异常结果分析").Font(f).FontSize(16);
  713. Table p7Contenttable = document.AddTable(2, 2);
  714. p7Contenttable.Design = TableDesign.TableGrid;
  715. p7Contenttable.SetColumnWidth(0, 130f);
  716. p7Contenttable.SetColumnWidth(1, document.PageWidth - document.MarginLeft - document.MarginRight - 130f);
  717. List<Row> p7rowsContent = p7Contenttable.Rows;
  718. Row p7TableRow0 = p7rowsContent[0];
  719. p7TableRow0.Cells[0].Paragraphs[0].Append("疾病").Font(f).FontSize(10.5).Alignment = Alignment.center;
  720. p7TableRow0.Cells[0].FillColor = Color.FromArgb(209, 245, 203);
  721. p7TableRow0.Cells[1].Paragraphs[0].Append("建议").Font(f).FontSize(10.5).Alignment = Alignment.center;
  722. p7TableRow0.Cells[1].FillColor = Color.FromArgb(209, 245, 203);
  723. p7Content.InsertTableAfterSelf(p7Contenttable);
  724. document.InsertParagraph();
  725. var p7Content1 = document.InsertParagraph(@"六、体检者未完成情况").Font(f).FontSize(16);
  726. Table p7Contenttable1 = document.AddTable(2, 5);
  727. p7Contenttable1.Design = TableDesign.TableGrid;
  728. p7Contenttable1.SetColumnWidth(0, 110f);
  729. p7Contenttable1.SetColumnWidth(1, 95f);
  730. p7Contenttable1.SetColumnWidth(2, 45f);
  731. p7Contenttable1.SetColumnWidth(3, 45f);
  732. p7Contenttable1.SetColumnWidth(4, document.PageWidth - document.MarginLeft - document.MarginRight - 295f);
  733. List<Row> p7rowsContent1 = p7Contenttable1.Rows;
  734. Row p7Table2Row0 = p7rowsContent1[0];
  735. p7Table2Row0.Cells[0].Paragraphs[0].Append("体检号").Font(f).FontSize(10.5).Alignment = Alignment.center;
  736. p7Table2Row0.Cells[0].FillColor = Color.FromArgb(209, 245, 203);
  737. p7Table2Row0.Cells[1].Paragraphs[0].Append("姓名").Font(f).FontSize(10.5).Alignment = Alignment.center;
  738. p7Table2Row0.Cells[1].FillColor = Color.FromArgb(209, 245, 203);
  739. p7Table2Row0.Cells[2].Paragraphs[0].Append("性别").Font(f).FontSize(10.5).Alignment = Alignment.center;
  740. p7Table2Row0.Cells[2].FillColor = Color.FromArgb(209, 245, 203);
  741. p7Table2Row0.Cells[3].Paragraphs[0].Append("年龄").Font(f).FontSize(10.5).Alignment = Alignment.center;
  742. p7Table2Row0.Cells[3].FillColor = Color.FromArgb(209, 245, 203);
  743. p7Table2Row0.Cells[4].Paragraphs[0].Append("部门").Font(f).FontSize(10.5).Alignment = Alignment.center;
  744. p7Table2Row0.Cells[4].FillColor = Color.FromArgb(209, 245, 203);
  745. p7Content1.InsertTableAfterSelf(p7Contenttable1);
  746. /*
  747. var numberedList = document.AddList("First List Item.", 0, ListItemType.Numbered);
  748. //Add a numbered list starting at 2
  749. document.AddListItem(numberedList, "Second List Item.");
  750. document.AddListItem(numberedList, "Third list item.");
  751. document.AddListItem(numberedList, "First sub list item", 1);
  752. document.AddListItem(numberedList, "Nested item.", 3);
  753. document.AddListItem(numberedList, "Fourth nested item.");
  754. var bulletedList = document.AddList("First Bulleted Item.", 0, ListItemType.Bulleted);
  755. document.AddListItem(bulletedList, "Second bullet item");
  756. document.AddListItem(bulletedList, "Sub bullet item", 1);
  757. document.AddListItem(bulletedList, "Second sub bullet item", 2);
  758. document.AddListItem(bulletedList, "Third bullet item");
  759. document.InsertList(numberedList);
  760. document.InsertList(bulletedList);
  761. */
  762. document.InsertParagraph();
  763. document.InsertParagraph(@"七、常见体检异常结果分析及健康指导").Font(f).FontSize(16).SpacingAfter(10d).SetLineSpacing(LineSpacingType.Line, 13.8f);
  764. document.InsertParagraph(@"◆ 颈椎疾病健康指导").Font(f).FontSize(14).SpacingAfter(10d).SetLineSpacing(LineSpacingType.Line, 13.8f);
  765. document.InsertParagraph(@"【健康指导】").Font(f).FontSize(14).SpacingAfter(10d).SetLineSpacing(LineSpacingType.Line, 13.8f);
  766. int index = document.Paragraphs.Count;
  767. Formatting p7Formatting = new Formatting();
  768. p7Formatting.FontFamily = new Xceed.Document.NET.Font("宋体");
  769. p7Formatting.Size = 14;
  770. var numberedList = document.AddList("颈椎病是指由于各种原因所致的颈椎结构的改变,如椎间盘的变性、突出,颈椎体边缘骨质增生,黄韧带肥厚、钙化或后纵韧带钙化,颈椎曲度异 常、椎间不稳等,直接压迫、刺激或通过压迫影响血液循环,使脊髓颈段、神经根、椎动脉或交感神经的功能损害,进而 发生组织结构损害,出现一系列临床征象,又有颈椎综合征之称。概括起来就是颈椎的椎间盘突出、骨质增生等压迫颈椎周围的神经、血管等导致的各种不适表现。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  771. document.AddListItem(numberedList, "哪些人易患颈椎病,从事文字、电脑工作人员及学生最易患颈椎病。颈椎病的发病,年青人主要是外因,即姿势式疲劳和损伤,主要以姿势 疲劳为主。长时间同一姿势伏案工作,颈肩部的肌肉一 下处于紧张强下状态,血液循环不畅,极易导致颈椎肌肉劳损。中学生的书包越来越重,导致姿势不适合人体正常的生理弯曲,久而久之易患颈椎病;喜欢玩电脑、打游戏机的中学生也因长时间颈部保持一个姿势而导致颈部肌肉痉挛、劳损而发生颈椎病;对于中老年人来说,颈椎病则是身体的退行性病变的表现。\n\t 家庭康复治疗法:", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  772. numberedList = document.AddListItem(numberedList, "如果不幸得颈椎病也不要紧张,应该及时就医。俗话说“三分治疗七分养”, 养即保养、康复预防之意。对于颈椎病,不要寄托在医院检查一下,吃些药就可以痊愈,该病本身就是一个退变性且极易复发的疾病。不注意疗效的巩固,很快可以再发作,所以应加倍注意。家庭的治疗如下。", 3, ListItemType.Numbered, null, false, false, p7Formatting);
  773. numberedList = document.AddListItem(numberedList, "在急性期最好能够少活动。", 3, ListItemType.Numbered, null, false, false, p7Formatting);
  774. numberedList = document.AddListItem(numberedList, "家里可以做自我牵引,如购买牵引带,一般情况下取 4~6 千克重 量,20~30 分钟/次,1~2 次/天或再多一点。牵引治疗 2~3 天,颈部肌肉紧张多可得至缓解,疼痛减轻。 或自己双手托住头部做向上拨伸的动作,效果一 样。", 3, ListItemType.Numbered, null, false, false, p7Formatting);
  775. numberedList = document.AddListItem(numberedList, "头项部可以外敷中药膏药,必要时可以用中药水热敷,可以疏筋活络, 缓解疼痛, 口服消炎止痛药如扶他林、芬必得等。", 3, ListItemType.Numbered, null, false, false, p7Formatting);
  776. numberedList = document.AddListItem(numberedList, "同时可以配合理疗,如微波红外线、针炙等。", 3, ListItemType.Numbered, null, false, false, p7Formatting);
  777. numberedList = document.AddListItem(numberedList, "急性期疼痛明显,影响日常工作、生活甚至整夜难眠者,针剌或神经根封闭,不失 为 一种有效的治疗方法,但应选择正规专业医师操作,以免发生意外。", 3, ListItemType.Numbered, null, false, false, p7Formatting);
  778. numberedList = document.AddListItem(numberedList, "日常防范方法:“防患于末然”对任何疾病都是适合的,不管有没有出现颈椎病的症状,改变不良工作生活习惯都非常重要,千万别委屈了你的脖子。 别委屈脖子对于经常低头工作的办公室工作人员,正确的姿势是关键,首先在坐姿上尽可能保持 自然的端坐位,头部略微前倾,保持头、颈、胸的正常生理曲 线,切不可头部过度前屈、身体前趴。对于长期伏案工作者,应每隔1小时左右,让颈部向左右转动数次,转动时应轻柔、缓慢,以达到该方向的最大运动范围为准;生活习惯低枕位休息,维持正常颈曲。选择适合自己的卧具,以晨起头颈无不适为度;改正躺在床上或沙发上,用垫子或枕头抬高头部看电视、看书的不良习 惯。", 3, ListItemType.Numbered, null, false, false, p7Formatting);
  779. numberedList = document.AddListItem(numberedList, "避免有害的活动 对长时间下象棋、打麻将者,奉劝还是少一些“娱乐”,多一些运动,因此种“娱乐”逐渐导致颈椎病的非常多见。 颈椎保健操要防止颈椎病的发生,除了要纠正不良姿势,注意防潮、防冷外,还应积极加强锻炼, 经常活动颈部,多做伸颈运动。办公室人员没时间锻炼,最 简单的锻炼可以以颈部为笔,头部为笔尖,反复写“米”字。这种伸颈运动可以改善颈部肌肉韧带的供血,使血液循环加 快,使肌肉韧带更加强壮,预防骨质疏松,从而减少颈 椎病的发生。", 3, ListItemType.Numbered, null, false, false, p7Formatting);
  780. document.InsertList(numberedList);
  781. document.InsertParagraph(@"◆ 代谢性疾病健康指导").Font(f).FontSize(16);
  782. document.InsertParagraph(@" 代谢性疾病主要为生活方式病,包括超重、肥胖、血糖偏高、血压偏高、高血脂、脂 肪肝、高尿酸等。").Font(f).FontSize(14);
  783. document.InsertParagraph(@"【高血脂】").Font(f).FontSize(14);
  784. document.InsertParagraph(@" 形成原因:膳食结构不合理,食物中胆固醇和饱和脂肪酸摄入过多,总热量过高, 应酬较多;体力活动过少;就个体而言与遗传基因有关。因此防治高血脂和肥胖对减少 冠心病、脑卒中,糖尿病、脂肪肝、胆结石的患病率和心脑血管意外有重要意义。").Font(f).FontSize(14);
  785. document.InsertParagraph(@" 预防建议:").Font(f).FontSize(14);
  786. var numberedList1 = document.AddList("用低脂、低热、低糖饮食、限制动物性脂肪、肥肉、禽类皮、动物内脏、浓肉汤、鱿鱼、墨斗鱼、鱼籽和蟹黄,少吃蛋黄,甜食,多吃蔬菜、水果和富含纤维素食物,提倡吃八分饱;", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  787. document.AddListItem(numberedList1, "持之以恒,坚持有氧运动,有氧运动有利于降低血脂,减肥, 降血压,预防糖尿病和减少血栓形成。有氧运动以运动后心率达到最大心率的 50~70% 为宜(最大心率=220-年龄)。运动方式可选择:快走、慢跑、骑车、爬楼梯和游泳等各 种可坚持的运动,每周不少于五天,每天不少于 20-40 分钟。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  788. document.InsertList(numberedList1);
  789. document.InsertParagraph(@"【超重或肥胖】").Font(f).FontSize(14);
  790. var numberedList2 = document.AddList("概念:体重超重或肥胖是指体内脂肪积聚过多和(或)分布异常、体重增加,是由于遗 传或环境因素共同作用的结果。1999年,世界卫生组织已正式宣布肥胖为一种疾病。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  791. document.AddListItem(numberedList2, "危害:", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  792. document.AddListItem(numberedList2, "寿命缩短:男性肥胖者的死亡率是正常人的1.5倍,女性是1.47倍。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  793. document.AddListItem(numberedList2, "危害心理健康:影响美观、生活不便,会产生自卑、焦虑和抑郁等问题。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  794. document.AddListItem(numberedList2, "诱发疾病:肥胖是导致2型糖尿病、心血管疾病、高血压、胆结石和癌症、内分泌、 代谢紊乱的重要危险因素。也可以引起关节痛、浮肿、活动耐力降低等。此外,肥胖还易使皮肤脆性增加,易发生皮炎、摩擦伤、并容易合并化脓性或真菌感染。 肥胖严重威胁健康,医学界称肥胖、高血压、高血脂和高血糖为“死亡四重奏”。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  795. document.AddListItem(numberedList2, "原因(发病危险因素):\r\tA、遗传因素:家族史。 B、不良生活方式:偏爱高脂肪、高热量饮食,睡前或夜间用餐,体力活动少等。 C、年龄因素:男性中年以后,女性绝经期后生理功能减退,代谢减低,体力活动减少,而饮食摄入量未相应减少,造成摄入量超过消耗量而致肥胖。 D、精神因素:精神过度紧张及心理障碍,可引起食欲亢进,导致肥胖。 E、其他因素:药物、疾病等引起。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  796. document.AddListItem(numberedList2, "症状与表现: A、男性肥胖多表现为“苹果型”肥胖,即内脏型或向心型肥胖脂肪沉积在腹部、臀部和背部;女性肥胖多表现为“梨型”肥胖,脂肪主要沉积在臀部、大腿。 B、中度以上肥胖者可出现活动后心悸、气短、嗜睡等症状。重度肥胖者可出现呼吸困难、浮肿、发绀、阵发性睡眠呼吸暂停综合症等。 C、合并高血压、糖尿病、血脂异常、痛风者可出现相应症状。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  797. document.AddListItem(numberedList2, "防治: 非药物治疗", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  798. document.AddListItem(numberedList2, "认识肥胖症的危害;认识到单纯性肥胖是一种生活方式疾病;认识治疗肥胖症是一个自我控制的过程。改变生活方式,矫正饮食、行为习惯。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  799. document.AddListItem(numberedList2, "控制摄入量,低脂、低热量、低嘌呤、低盐饮食,戒烟限酒。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  800. document.AddListItem(numberedList2, "运动治疗,增加体力活动,加强锻炼。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  801. document.InsertList(numberedList2);
  802. document.InsertParagraph(@"【血糖偏高】").Font(f).FontSize(14);
  803. var numberedList3 = document.AddList("糖尿病诊断标准:", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  804. document.AddListItem(numberedList3, "症状+随机血糖≥11.1mmol/L;", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  805. document.AddListItem(numberedList3, "空腹血糖(FPG)≥7.0mmol/L(非同日两次空腹血糖);", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  806. document.AddListItem(numberedList3, "糖耐量试验(OGTT)中2小时血浆葡萄糖(2HPG)≥11.1mmol/L。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  807. document.AddListItem(numberedList3, "血糖增高预防建议:", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  808. document.AddListItem(numberedList3, "普及糖尿病知识,充分认识糖尿病正在我国已进入多数的严重形势和预防方法。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  809. document.AddListItem(numberedList3, "合理膳食避免营养过剩,提倡用低脂,少糖,富含纤维的膳食;C 坚持有氧运动。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  810. document.AddListItem(numberedList3, "避免使用影响糖代谢的药物。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  811. document.AddListItem(numberedList3, "定期复查血糖。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  812. document.AddListItem(numberedList3, "年龄大于40岁,有糖尿病家族史,血糖或尿糖曾经异常者,应查餐后两小时血糖。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  813. document.AddListItem(numberedList3, "糖尿病综合治疗原则:", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  814. document.AddListItem(numberedList3, "糖尿病教育。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  815. document.AddListItem(numberedList3, "合理的饮食治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  816. document.AddListItem(numberedList3, "坚持运动治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  817. document.AddListItem(numberedList3, "正规的 药物治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  818. document.AddListItem(numberedList3, "定期病情监测。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  819. document.InsertList(numberedList3);
  820. document.InsertParagraph(@"【高血压】").Font(f).FontSize(14);
  821. var numberedList4 = document.AddList("诊断标准:1999 年 10 月中国高血压联盟推荐新高血压诊断标准,未服降压药的情况下:收缩压≥140mmHg 和(或)舒张压≥90mmHg,即诊断高血压。以非同日多次(二次或 以上)复测平均值为依据,偶然一次不能诊断高血压。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  822. document.AddListItem(numberedList4, "危害:患了高血压病,如果不加以控制,可导致脑卒中或冠心病等,将严重影响生 活质量,甚至威胁到生命。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  823. document.AddListItem(numberedList4, "高血压病存在患病率高、致残率高、死亡率高,知晓率低、治疗率低、控制率低的 现象,也就是人们通常所说的“三高”、“三低”。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  824. document.AddListItem(numberedList4, "病因或发病危险因素:", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  825. document.AddListItem(numberedList4, "体重超重或肥胖:体重超重和体重增加过快,是高血压病的危险因素。尤其内脏型肥胖,同时也是糖尿病和血脂异常的危险因素。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  826. document.AddListItem(numberedList4, "饮酒:长期饮白酒达 50ml/每天以上,也是高血压病发病的危险因素;少量饮些红 葡萄酒可有预防冠心病的作用。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  827. document.AddListItem(numberedList4, "长期高盐、低镁、低钙、低动物蛋白质饮食;膳食钠盐的摄入量与血压水平有显著 的相关性。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  828. document.AddListItem(numberedList4, "长期精神紧张或超负荷工作,也是高血压病的危险因素。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  829. document.AddListItem(numberedList4, "高血压的防治:", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  830. document.AddListItem(numberedList4, "增强自我保健意识,学会自我保健知识。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  831. document.AddListItem(numberedList4, "定期监测:35岁以上人群至少每年要检查一次血压,以利早期发现血压增高,降低 人群高血压的发病率和患病率。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  832. document.AddListItem(numberedList4, "预防超重和肥胖,保持理想体重,其中饮食(低盐、高钾、高钙、高动物蛋白质饮 食如奶类、动制品、鱼类、菜果类)、运动疗法(保持规律有氧运动非常重要),运动降压效 果最直接。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  833. document.AddListItem(numberedList4, "讲究精神卫生;E、不吸烟;F、药物治疗原则。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  834. document.InsertList(numberedList4);
  835. document.InsertParagraph(@"【脂肪肝】").Font(f).FontSize(14);
  836. var numberedList5 = document.AddList("病因:目前我国脂肪肝发病率有增高趋势,多数与肥胖、高脂血症(以甘油三脂增 高关系更密切)、糖尿病、肝炎病史及嗜酒有关。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  837. document.AddListItem(numberedList5, "建议:脂肪肝可双向发展,有效控制或消除上述促发因素,脂肪肝可明改善,因此建议: A 用低脂膳食,治疗高血脂症;B 坚持有氧运动,控制体重; C 限酒; D 避免对肝脏有害的药物; E 药物治疗:目前尚无明显有效治疗脂肪肝的药物,若肝 功能明显异常可选用保肝药物。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  838. document.InsertList(numberedList5);
  839. document.InsertParagraph(@"【高尿酸】").Font(f).FontSize(14);
  840. var numberedList6 = document.AddList("何谓高尿酸血症:\r\t嘌呤代谢物为尿酸,男性每 100 毫升血液中尿酸值在 8.7 毫克以上,女性 8 毫克以 上时,则称为高尿酸血症。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  841. document.AddListItem(numberedList6, "建议:", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  842. document.AddListItem(numberedList6, "每天至少 2000mI 液体,多摄取低嘌呤、碱性食物,例如蔬菜。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  843. document.AddListItem(numberedList6, "避免高嘌呤食物。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  844. document.AddListItem(numberedList6, "避免喝酒、油炸食物。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  845. document.AddListItem(numberedList6, "避免摄取肉汤或高汤。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  846. document.AddListItem(numberedList6, "食欲不佳时,须注意补充含糖液体,以避免身体组织快速分解,诱发痛风。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  847. document.AddListItem(numberedList6, "避免暴饮暴食。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  848. document.AddListItem(numberedList6, "避免饥饿,因为肌肉被分解,致尿酸排出。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  849. document.AddListItem(numberedList6, "避免使用阿司匹林类药物,以免妨碍尿酸排出。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  850. document.AddListItem(numberedList6, "急性期:应去医院看病,选择药物治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  851. document.AddListItem(numberedList6, "缓解期:促进身体活动,应酌量选择(表二)食物,平时可多选择表一食物,少用高嘌 呤食物(表三)。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  852. document.AddListItem(numberedList6, "维持理想体重:理想体重(公斤)=22×身高 2 (平方公尺)。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  853. document.AddListItem(numberedList6, "痛风石的部位应注意保护皮肤,维持完整性。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  854. document.InsertList(numberedList6);
  855. document.InsertParagraph(@"◆ 眼科疾病").Font(f).FontSize(14);
  856. var numberedList7 = document.AddList("眼病体检的目的:", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  857. document.AddListItem(numberedList7, "及早发现眼病隐患:如青光眼、糖尿病视网膜病变。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  858. document.AddListItem(numberedList7, "眼病咨询:如白内障是否需手术?视力不好是否需配镜?", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  859. document.AddListItem(numberedList7, "对全身健康状况评估,眼底是全身情况的缩印,高血压、高血糖、高血脂造成器官损害之前,在眼底会有所表现。我们在眼病筛查中对每一个受检者都进行了解释。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  860. document.AddListItem(numberedList7, "建议:", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  861. document.AddListItem(numberedList7, "结膜炎,请注意用眼卫生,如症状明显,可局部 治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  862. document.AddListItem(numberedList7, "眼底杯盘比,建议到专科医院,测眼压,查视 野等。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  863. document.AddListItem(numberedList7, "视网膜动脉硬化,建议低盐、清淡饮食,并请关注 血压、血脂、血糖及动脉硬化的防治。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  864. document.AddListItem(numberedList7, "青光眼或可疑青光眼,需到医院青光眼专科复查。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  865. document.AddListItem(numberedList7, "白内障需,考虑手术治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  866. document.AddListItem(numberedList7, "糖尿病性视网膜病变,Ⅲ期以下者需要控制血糖并每半年或一年观察眼底,Ⅲ 期及以上者应尽快到医院就诊。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  867. document.AddListItem(numberedList7, "视网膜病变,需要监测血压和血糖情况并做相应治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  868. document.AddListItem(numberedList7, "黄斑病变,视力小于 0.3 时到医院就诊(陈旧性者不必复诊)。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  869. document.AddListItem(numberedList7, "视网膜血管病变,监测血压和血糖情况做相应处理,非陈旧性者需医院就诊。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  870. document.AddListItem(numberedList7, "视神经病变(萎缩/缺血性),需要检测血压血糖,每年随诊观察。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  871. document.InsertList(numberedList7);
  872. document.InsertParagraph(@"◆ 耳鼻喉疾病").Font(f).FontSize(14);
  873. var numberedList8 = document.AddList("过敏性鼻炎:建议查找过敏原,并避免与其接触,必要时专科治疗,平时注意加强锻炼, 增强机体免疫力,预防感冒。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  874. document.AddListItem(numberedList8, "慢性咽炎:若症状明显,请专科治疗,平时少吃辛辣食物,少作长谈,避免有害气体及 粉尘的刺激。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  875. document.AddListItem(numberedList8, "慢性鼻炎:请专科治疗,平时注意增强体质,提高机体抵抗力,预防感冒,祛除诱因。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  876. document.AddListItem(numberedList8, "慢性扁桃体炎:请注意锻炼身体,增强体质,防止感冒,如反复发作请专科进一步治疗。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  877. document.InsertList(numberedList8);
  878. document.InsertParagraph(@"◆ 肝胆疾病").Font(f).FontSize(14);
  879. document.InsertParagraph(@"【肝功异常】").Font(f).FontSize(14);
  880. document.InsertParagraph(@"转氨酶除在肝脏外,还可分布在心、肾、骨骼肌、胰等组织中,当这些组织有病时, 也会引起血清转氨酶活性升高。如心肌炎、急性心肌梗塞时,血清转氨酶活性均会升高,除此之外,如胆石症、甲状腺机能亢进、伤寒、疟疾、感冒、大量服用阿斯匹林等,都可使血 清转氨酶升高,甚至在某些生理条件下如剧烈运动等,也会使转氨酶升高。").Font(f).FontSize(14);
  881. document.InsertParagraph(@"因此我们绝对不能一看到转氨酶升高就诊断为肝炎,而必须结合病人具体情况如症状 体征及其他检查综合分析,做出诊断,应注意以下几个问题:").Font(f).FontSize(14);
  882. var numberedList9 = document.AddList("血清转氨酶升高,仍以病毒性肝炎最为常见,而且转氨酶升高的幅度大(在正常值4 倍以上),且持续时间很长(大于 1 个月)。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  883. document.AddListItem(numberedList9, "肝病时,转氨酶升高,只表示肝细胞受损,不能区别肝病的性质。如病毒性肝炎、 药物性肝炎等,都能使转氨酶升高。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  884. document.AddListItem(numberedList9, "在临床上如发现转氨酶(特别是 ALT)下降,而胆红素反升高,往往说明病人病情严重,预后不良。如急性或亚急性重症肝炎。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  885. document.AddListItem(numberedList9, "某些慢性肝炎或肝炎恢复期,转氨酶可以正常。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  886. document.AddListItem(numberedList9, "总之,不能单靠转氨酶来诊断或否定肝炎,必须结合其他化验结果和临床表现进行全方面分析,方能诊断。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  887. document.InsertList(numberedList9);
  888. document.InsertParagraph(@"【肝囊肿、肝血管瘤】").Font(f).FontSize(14);
  889. document.InsertParagraph(@"应该定期复查,动态观察变化,必要专科时治疗,平时注意不要受外力撞击,以免破裂").Font(f).FontSize(14);
  890. document.InsertParagraph(@"【胆囊结石】").Font(f).FontSize(14);
  891. var numberedList10 = document.AddList("预防肠道寄生虫和细菌感染;", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  892. document.AddListItem(numberedList10, "饮食控制,少吃动物内脏鱼籽,蛋黄等高胆固醇膳食,增加膳食中纤维素含量。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  893. document.AddListItem(numberedList10, "控制体重;", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  894. document.AddListItem(numberedList10, "纠正久坐少动的生活习惯。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  895. document.AddListItem(numberedList10, "治疗:无并发症的胆结石,可根据个体情况选择;", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  896. document.AddListItem(numberedList10, "利胆排石综合治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  897. document.AddListItem(numberedList10, "药物溶石。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  898. document.AddListItem(numberedList10, "体外碎石。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  899. document.AddListItem(numberedList10, "内窥镜取石。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  900. document.AddListItem(numberedList10, "腹腔镜手术。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  901. document.AddListItem(numberedList10, "外科胆囊切除术等治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  902. document.InsertList(numberedList10);
  903. document.InsertParagraph(@"【胆囊息肉】").Font(f).FontSize(14);
  904. document.InsertParagraph(@"胆囊息肉主要由慢性炎症引起,如息肉进一步增大,和/或合并胆囊多发结石,考虑手术治 疗;一般情况定期复查。").Font(f).FontSize(14);
  905. document.InsertParagraph(@"◆ 心血管疾病").Font(f).FontSize(14);
  906. var numberedList11 = document.AddList("T 波、ST-T 改变引起 T 波、ST-T 段改变的原因很多,需结合有关临床资料,综合分析做出诊断。有冠心病危险因素的人(A、有冠心病家庭史;B、高胆固醇血症;C、高血 压;D、糖尿病;E 吸烟;F 肥胖)近期出现上述心电图改变,与心肌缺血有关,可疑者需 专科医院进一步检查。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  907. document.AddListItem(numberedList11, "完全性右束支传导阻滞 可见于有器质性心脏病(冠心病、高血压性心脏病)者,偶 见于正常人。应注意复查心电图,有症状及时专科诊治。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  908. document.AddListItem(numberedList11, "房室传导阻滞:是比较常见的心律失常,在正常人群中的检出率约为 2%-5%,在器质 性心脏病患者中约占 20%-30%。它是心脏传导阻滞中最常见,也是很重要的一种。应注意 复查心电图,有症状及时专科诊治。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  909. document.AddListItem(numberedList11, "心脏早搏:无心脏病背景者,多为生理性原因,可半年复查;如频发早搏,请及时就 医;有心脏病者伴有早搏,建议专科治疗。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  910. document.AddListItem(numberedList11, "房颤:是一种十分常见的心律失常。据统计,60 岁以上人群中,房颤发生率 1%,并 随年龄而增加。有症状请专科就诊。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  911. document.AddListItem(numberedList11, "由于人们饮食习惯、生活习惯的改变,造成高脂血症患者增加, 若血脂质过高不加以 控制,再加上高血压、抽烟等因素的影响,使脂质沉淀物沉积在血管壁上,越积越厚,以致 血管管腔狭小,血流不通,使组织缺氧与营养缺乏, 这种情形发生在心脏冠状动脉时,首 先,引起心绞痛。若不积极治疗最后会造成心肌梗塞。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  912. document.AddListItem(numberedList11, "所以一旦出了问题应及早治疗並纠正不良饮食习惯,防止病情恶化,即使进行药物治 疗或医疗手术改善病情,仍然要配合饮食控制才能减少再复发的机会。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  913. document.AddListItem(numberedList11, "心血管疾病饮食原则:", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  914. document.AddListItem(numberedList11, "维持理想体重。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  915. document.AddListItem(numberedList11, "控制脂质总摄入量。烹调时应注意用油量,宜多采用清蒸、 水煮、凉拌、燉、滷 等方式,禁用油炸的烹调方式,並少吃肥肉、鸡皮等油脂含量高的食物。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  916. document.AddListItem(numberedList11, "炒菜用油宜选用单元不饱和脂肪酸高者(如:橄榄油、菜籽 油、花生油);少用 饱和脂肪酸高者(如:猪油)。少吃胆固醇含量高的食物,如内脏类、蝦卵、鱼卵等,蛋可以吃但每周不超过二 到三个蛋黄为原则。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  917. document.AddListItem(numberedList11, "避免富含精制糖的食物(如蛋糕、甜食)。(见附表:富含 精制糖的食物)。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  918. document.AddListItem(numberedList11, "攝取富含 W-3 脂肪酸的鱼类(秋刀鱼、鲑鱼、鳗鱼等)。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  919. document.AddListItem(numberedList11, "减少钠量攝取。罐头、醃制食品及各种加工食品含钠量高, 应忌食。宜选择新鲜 食物自行制作,烹调时减少食盐的用量,其它含钠量高的调味品(味精、酱油、乌醋等)应 减少或避免使用。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  920. document.AddListItem(numberedList11, "多摄取含纤维质的食物(全穀类、蔬菜类、水果)。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  921. document.AddListItem(numberedList11, "避免烟、酒、含咖啡因饮料及其他刺激性食品。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  922. document.AddListItem(numberedList11, "有服用抗凝血剂的病患,要减少含维生素 K 多的食物,如绿色蔬菜(菠菜、甘蓝菜、萵苣、绿花椰菜)、肝脏。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  923. document.InsertList(numberedList11);
  924. document.InsertParagraph(@"◆ 肾脏疾病").Font(f).FontSize(14);
  925. var numberedList12 = document.AddList("肾结石\n建议平时多饮水,少吃高草酸食物,可做蹦跳运动,避免感染,请定期复查,必要时排石治疗。", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  926. document.AddListItem(numberedList12, "肾囊肿", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  927. document.AddListItem(numberedList12, "请定期复查,观察变化,若有症状专科治疗。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  928. document.AddListItem(numberedList12, "肾功能异常:建议控制膳食中蛋白质比例,近期复查,必要时专科诊治。如有肾脏病史,请及时肾内科诊治。", 1, ListItemType.Numbered, null, false, false, p7Formatting);
  929. document.AddListItem(numberedList12, "肾错构瘤\n属良性肿瘤,请定期复查,如有症状专科治疗", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  930. document.AddListItem(numberedList12, "肾萎缩、肾盂增大\n建议专科进一步诊治", 0, ListItemType.Numbered, null, false, false, p7Formatting);
  931. document.InsertList(numberedList12);
  932. for (int i = index; i < document.Paragraphs.Count; i++)
  933. {
  934. document.Paragraphs[i].SpacingAfter(10d).SetLineSpacing(LineSpacingType.Line, 13.8f);
  935. ///document.Paragraphs[i].Alignment = Alignment.both;
  936. }
  937. //结束语页
  938. document.InsertParagraph().InsertPageBreakAfterSelf();
  939. document.InsertParagraph(@"结束语").Font(f).FontSize(14).Bold(true);
  940. document.InsertParagraph();
  941. document.InsertParagraph(@"影响健康的因素很多,包括遗传基因、日常生活习惯、社会环境、医疗资源等等,其中,与一般民众息息相关的医疗资源,仅占影响健康因素的10%,最大的影响因素还是日常生活习惯及社会环境。根据世界卫生组织(WHO)的估计,75%的癌症是已知的环境因素所引起,而这些因素都是可以预防的,例如抽烟、酗酒。").Font(f).FontSize(10.5).IndentationFirstLine = 32.0f;
  942. document.InsertParagraph();
  943. document.InsertParagraph(@"世界卫生组织(WHO)指出:“二十一世纪的医学不应该继续以疾病为主要研究对象,而应该以人类健康作为医学研究的主要方向。” 这个精神旨在宣告预防医学和健康保健将成为医学的主导。").Font(f).FontSize(10.5).IndentationFirstLine = 32f;
  944. document.InsertParagraph();
  945. document.InsertParagraph(@"我中心愿以卓越的服务、优质的技术继续为贵单位提供医疗保健服务,从体检中发现健康问题,从保健中解决健康问题。").Font(f).FontSize(10.5).IndentationFirstLine = 32f;
  946. document.InsertParagraph();
  947. document.InsertParagraph(@"最后,感谢您对国宾的支持,别忘了定期为员工安排健康检查。您的任何意见,都是我们成长的来源!敬请不吝指教。").Font(f).FontSize(10.5).IndentationFirstLine = 32f;
  948. document.InsertParagraph().InsertPageBreakAfterSelf();
  949. //检后服务
  950. Xceed.Document.NET.Font f1 = new Xceed.Document.NET.Font("黑体");
  951. Xceed.Document.NET.Font f2 = new Xceed.Document.NET.Font("楷体");
  952. Formatting pBottomFirstFormatting = new Formatting();
  953. pBottomFirstFormatting.FontFamily = new Xceed.Document.NET.Font("黑体");
  954. pBottomFirstFormatting.Size = 14;
  955. Formatting pBottomLastFormatting = new Formatting();
  956. pBottomLastFormatting.FontFamily = new Xceed.Document.NET.Font("黑体");
  957. pBottomLastFormatting.Size = 10.5;
  958. document.InsertParagraph(@"检后服务").Font(f1).FontSize(18);
  959. document.InsertParagraph(@"健康体检后,您需要健康维护和管理:").Font(f1).FontSize(10.5);
  960. var svr1 = document.InsertParagraph().Font(f1).FontSize(10.5);
  961. svr1.InsertText("1.", false, pBottomLastFormatting);
  962. svr1.InsertText("检后就诊", false, pBottomFirstFormatting);
  963. svr1.InsertText("--体检中发现的疾病由国内著名、省内著名的专家为您对接就诊,真正起到早发现、早诊断、早治疗。", false, pBottomLastFormatting);
  964. var svr2 = document.InsertParagraph().Font(f1).FontSize(10.5);
  965. svr2.InsertText("2.", false, pBottomLastFormatting);
  966. svr2.InsertText("常见病、疑难病预约就诊服务", false, pBottomFirstFormatting);
  967. svr2.InsertText("--请拨打健康服务热线。我们可以帮您用最短的时间预约上最合适您病情的专家,他们为国内著名、省内著名的专家在您需要时我们还可以通过绿色通道帮您预约外省外院著名专家。", false, pBottomLastFormatting);
  968. document.InsertParagraph("3.体检报告电话咨询服务。").Font(f1).FontSize(10.5);
  969. document.InsertParagraph("4.特殊检查预约服务(CT、MR等大型检查设备)。").Font(f1).FontSize(10.5);
  970. document.InsertParagraph("5.住院预约服务。").Font(f1).FontSize(10.5);
  971. document.InsertParagraph("6.外院就诊指导。").Font(f1).FontSize(10.5);
  972. document.InsertParagraph("您 健 康 的 管 家").Font(f1).FontSize(18).Italic(true).Alignment = Alignment.center;
  973. document.InsertParagraph("人生中偶然的病痛--有我们的关怀").Font(f2).FontSize(18).Bold(true).Italic(true).Alignment = Alignment.center;
  974. document.InsertParagraph("健康体检中心").Font(f).FontSize(16).Alignment = Alignment.center;
  975. document.InsertParagraph("团体体检汇总报告").Font(f).FontSize(16).Alignment = Alignment.center;
  976. document.InsertParagraph("企业员工健康检查统计报告").Font(f1).FontSize(22).Alignment = Alignment.center;
  977. document.InsertParagraph("【版权所有,翻印必究】").Font(f).FontSize(10.5).Alignment = Alignment.center;
  978. document.Save();
  979. }
  980. /// <summary>
  981. /// 生成参检人员构成情况数据 1
  982. /// </summary>
  983. public async Task CreateInspectionPersonnelData(UnitPhysicalExaminationReportExportWordData documentData, CreateInspectionPersonnelPara customerOrgs)
  984. {
  985. var query = await _patientRegisterRepository.GetQueryableAsync();
  986. if (customerOrgs.CustomerOrgGroupId.Any())
  987. {
  988. query = query.Where(m => m.CustomerOrgGroupId != null && customerOrgs.CustomerOrgGroupId.Contains(m.CustomerOrgGroupId.Value));
  989. }
  990. if (customerOrgs.CustomerOrgRegisterId != GuidFlag.PersonCustomerOrgRegisterId)
  991. {
  992. query = query.Where(m => m.CustomerOrgRegisterId == customerOrgs.CustomerOrgRegisterId);
  993. }
  994. var customerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(customerOrgs.CustomerOrgId);
  995. query = query.Where(m => customerOrgIds.Contains(m.CustomerOrgId));
  996. if (customerOrgs.DateType == '1')
  997. {
  998. query = query.Where(m => m.CreationTime >= Convert.ToDateTime(customerOrgs.StartDate) &&
  999. m.CreationTime < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1000. }
  1001. else if (customerOrgs.DateType == '2')
  1002. {
  1003. query = query.Where(m => m.MedicalStartDate != null && m.MedicalStartDate.Value >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1004. m.MedicalStartDate.Value < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1005. }
  1006. else if (customerOrgs.DateType == '3')
  1007. {
  1008. query = query.Where(m => m.SummaryDate != null && m.SummaryDate.Value >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1009. m.SummaryDate.Value < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1010. }
  1011. var queryList = query.ToList();
  1012. #region 登记
  1013. int Register_MaleNumber = queryList.Where(m => m.SexId == SexFlag.Male).Count();
  1014. int Register_FemaleNumber = queryList.Where(m => m.SexId == SexFlag.Female).Count();
  1015. int Register_OtherNumber = queryList.Where(m => m.SexId == SexFlag.UnKnown).Count();
  1016. int Register_TotalNumber = Register_MaleNumber + Register_FemaleNumber + Register_OtherNumber;
  1017. string Register_MaleRatio = Register_TotalNumber != 0 ? Math.Round(Register_MaleNumber * 100M / Register_TotalNumber, 2).ToString() + "%" : "0%";
  1018. string Register_FemaleRatio = Register_TotalNumber != 0 ? Math.Round(Register_FemaleNumber * 100M / Register_TotalNumber, 2).ToString() + "%" : "0%";
  1019. string Register_MaleExamineRatio = "100%";
  1020. string Register_FemaleExamineRatio = "100%";
  1021. string Register_AverageExamineRatio = "100%";
  1022. documentData.RegisterDetail = new InspectionPersonnel_Detail
  1023. {
  1024. MaleNumber = Register_MaleNumber,
  1025. FemaleNumber = Register_FemaleNumber,
  1026. OtherNumber = Register_OtherNumber,
  1027. TotalNumber = Register_TotalNumber,
  1028. MaleRatio = Register_MaleRatio,
  1029. FemaleRatio = Register_FemaleRatio,
  1030. MaleExamineRatio = Register_MaleExamineRatio,
  1031. FemaleExamineRatio = Register_FemaleExamineRatio,
  1032. AverageExamineRatio = Register_AverageExamineRatio
  1033. };
  1034. #endregion
  1035. #region 实检
  1036. int Checked_MaleNumber = queryList.Where(m => (m.CompleteFlag == PatientRegisterCompleteFlag.PartCheck || m.CompleteFlag == PatientRegisterCompleteFlag.SumCheck)
  1037. && m.SexId == SexFlag.Male).Count();
  1038. int Checked_FemaleNumber = queryList.Where(m => (m.CompleteFlag == PatientRegisterCompleteFlag.PartCheck || m.CompleteFlag == PatientRegisterCompleteFlag.SumCheck)
  1039. && m.SexId == SexFlag.Female).Count();
  1040. int Checked_OtherNumber = queryList.Where(m => (m.CompleteFlag == PatientRegisterCompleteFlag.PartCheck || m.CompleteFlag == PatientRegisterCompleteFlag.SumCheck)
  1041. && m.SexId == SexFlag.UnKnown).Count();
  1042. int Checked_TotalNumber = Checked_MaleNumber + Checked_FemaleNumber + Checked_OtherNumber;
  1043. string Checked_MaleRatio = Checked_TotalNumber != 0 ? Math.Round(Checked_MaleNumber * 100M / Checked_TotalNumber, 2).ToString() + "%" : "0%";
  1044. string Checked_FemaleRatio = Checked_TotalNumber != 0 ? Math.Round(Checked_FemaleNumber * 100M / Checked_TotalNumber, 2).ToString() + "%" : "0%";
  1045. string Checked_MaleExamineRatio = Register_MaleNumber != 0 ? Math.Round(Checked_MaleNumber * 100M / Register_MaleNumber, 2).ToString() + "%" : "0%";
  1046. string Checked_FemaleExamineRatio = Register_FemaleNumber != 0 ? Math.Round(Checked_FemaleNumber * 100M / Register_FemaleNumber, 2).ToString() + "%" : "0%";
  1047. string Checked_AverageExamineRatio = Math.Round(
  1048. (
  1049. (Register_MaleNumber != 0 ? Math.Round(Checked_MaleNumber * 100M / Register_MaleNumber, 2) : 0)
  1050. + (Register_FemaleNumber != 0 ? Math.Round(Checked_FemaleNumber * 100M / Register_FemaleNumber, 2) : 0)
  1051. ) / 2
  1052. , 2).ToString() + "%";
  1053. documentData.CheckedDetail = new InspectionPersonnel_Detail
  1054. {
  1055. MaleNumber = Checked_MaleNumber,
  1056. FemaleNumber = Checked_FemaleNumber,
  1057. OtherNumber = Checked_OtherNumber,
  1058. TotalNumber = Checked_TotalNumber,
  1059. MaleRatio = Checked_MaleRatio,
  1060. FemaleRatio = Checked_FemaleRatio,
  1061. MaleExamineRatio = Checked_MaleExamineRatio,
  1062. FemaleExamineRatio = Checked_FemaleExamineRatio,
  1063. AverageExamineRatio = Checked_AverageExamineRatio
  1064. };
  1065. #endregion
  1066. #region 未检
  1067. int UnChecked_MaleNumber = queryList.Where(m => (m.CompleteFlag == PatientRegisterCompleteFlag.Registration || m.CompleteFlag == PatientRegisterCompleteFlag.PreRegistration)
  1068. && m.SexId == SexFlag.Male).Count();
  1069. int UnChecked_FemaleNumber = queryList.Where(m => (m.CompleteFlag == PatientRegisterCompleteFlag.Registration || m.CompleteFlag == PatientRegisterCompleteFlag.PreRegistration)
  1070. && m.SexId == SexFlag.Female).Count();
  1071. int UnChecked_OtherNumber = queryList.Where(m => (m.CompleteFlag == PatientRegisterCompleteFlag.Registration || m.CompleteFlag == PatientRegisterCompleteFlag.PreRegistration)
  1072. && m.SexId == SexFlag.UnKnown).Count();
  1073. int UnChecked_TotalNumber = UnChecked_MaleNumber + UnChecked_FemaleNumber + UnChecked_OtherNumber;
  1074. string UnChecked_MaleRatio = UnChecked_TotalNumber != 0 ? Math.Round(UnChecked_MaleNumber * 100M / UnChecked_TotalNumber, 2).ToString() + "%" : "0%";
  1075. string UnChecked_FemaleRatio = UnChecked_TotalNumber != 0 ? Math.Round(UnChecked_FemaleNumber * 100M / UnChecked_TotalNumber, 2).ToString() + "%" : "0%";
  1076. string UnChecked_MaleExamineRatio = Register_MaleNumber != 0 ? Math.Round(UnChecked_MaleNumber * 100M / Register_MaleNumber, 2).ToString() + "%" : "0%";
  1077. string UnChecked_FemaleExamineRatio = Register_FemaleNumber != 0 ? Math.Round(UnChecked_FemaleNumber * 100M / Register_FemaleNumber, 2).ToString() + "%" : "0%";
  1078. string UnChecked_AverageExamineRatio = Math.Round(
  1079. (
  1080. (Register_MaleNumber != 0 ? Math.Round(UnChecked_MaleNumber * 100M / Register_MaleNumber, 2) : 0)
  1081. + (Register_FemaleNumber != 0 ? Math.Round(UnChecked_FemaleNumber * 100M / Register_FemaleNumber, 2) : 0)
  1082. ) / 2, 2
  1083. ).ToString() + "%";
  1084. documentData.UnCheckedDetail = new InspectionPersonnel_Detail
  1085. {
  1086. MaleNumber = UnChecked_MaleNumber,
  1087. FemaleNumber = UnChecked_FemaleNumber,
  1088. OtherNumber = UnChecked_OtherNumber,
  1089. TotalNumber = UnChecked_TotalNumber,
  1090. MaleRatio = UnChecked_MaleRatio,
  1091. FemaleRatio = UnChecked_FemaleRatio,
  1092. MaleExamineRatio = UnChecked_MaleExamineRatio,
  1093. FemaleExamineRatio = UnChecked_FemaleExamineRatio,
  1094. AverageExamineRatio = UnChecked_AverageExamineRatio
  1095. };
  1096. #endregion
  1097. }
  1098. /// <summary>
  1099. /// 生成体检项目的参检情况数据 2
  1100. /// </summary>
  1101. /// <param name="documentData"></param>
  1102. /// <param name="customerOrgs"></param>
  1103. /// <returns></returns>
  1104. public async Task CreateMedicalItemExamineSituationData(UnitPhysicalExaminationReportExportWordData documentData, CreateInspectionPersonnelPara customerOrgs)
  1105. {
  1106. var query = from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
  1107. join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
  1108. join registerAsbitem in await _registerAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerAsbitem.RegisterCheckId
  1109. join asbitem in await _asbitemRepository.GetQueryableAsync() on registerAsbitem.AsbitemId equals asbitem.Id
  1110. join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitem.ItemTypeId equals itemType.Id into itemTypeTemp
  1111. from itemTypeHaveEmpty in itemTypeTemp.DefaultIfEmpty()
  1112. where registerCheck.CompleteFlag != RegisterCheckCompleteFlag.UnChecked
  1113. select new
  1114. {
  1115. CustomerOrgGroupId = patientRegister.CustomerOrgGroupId,
  1116. CustomerOrgRegisterId = patientRegister.CustomerOrgRegisterId,
  1117. CustomerOrgId = patientRegister.CustomerOrgId,
  1118. PatientRegisterId = patientRegister.Id,
  1119. CreationTime = patientRegister.CreationTime,
  1120. MedicalStartDate = patientRegister.MedicalStartDate,
  1121. SummaryDate = patientRegister.SummaryDate,
  1122. SexId = patientRegister.SexId,
  1123. ItemTypeName = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.DisplayName : "",
  1124. AsbitemName = asbitem.DisplayName,
  1125. registerAsbitem
  1126. };
  1127. if (customerOrgs.CustomerOrgGroupId.Any())
  1128. {
  1129. query = query.Where(m => m.CustomerOrgGroupId != null && customerOrgs.CustomerOrgGroupId.Contains(m.CustomerOrgGroupId.Value));
  1130. }
  1131. if (customerOrgs.CustomerOrgRegisterId != GuidFlag.PersonCustomerOrgRegisterId)
  1132. {
  1133. query = query.Where(m => m.CustomerOrgRegisterId == customerOrgs.CustomerOrgRegisterId);
  1134. }
  1135. var customerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(customerOrgs.CustomerOrgId);
  1136. query = query.Where(m => customerOrgIds.Contains(m.CustomerOrgId));
  1137. if (customerOrgs.DateType == '1')
  1138. {
  1139. query = query.Where(m => m.CreationTime >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1140. m.CreationTime < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1141. }
  1142. else if (customerOrgs.DateType == '2')
  1143. {
  1144. query = query.Where(m => m.MedicalStartDate != null && m.MedicalStartDate.Value >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1145. m.MedicalStartDate.Value < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1146. }
  1147. else if (customerOrgs.DateType == '3')
  1148. {
  1149. query = query.Where(m => m.SummaryDate != null && m.SummaryDate.Value >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1150. m.SummaryDate.Value < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1151. }
  1152. List<UnitPhysicalExaminationReportExportWordData_MedicalItemExamineSituation> medicalItemExamineSituations = new List<UnitPhysicalExaminationReportExportWordData_MedicalItemExamineSituation>();
  1153. foreach (var item in query.ToList().GroupBy(g => g.registerAsbitem.AsbitemId))
  1154. {
  1155. string AsbitemName = item.FirstOrDefault().AsbitemName;
  1156. string ItemTypeName = item.FirstOrDefault().ItemTypeName;
  1157. int MaleAsbitemCheckNumber = item.Where(m => m.SexId == SexFlag.Male).Count();
  1158. int FemaleAsbitemCheckNumber = item.Where(m => m.SexId == SexFlag.Female).Count();
  1159. int TotalAsbitemCheckNumber = item.Where(m => m.SexId == SexFlag.Male || m.SexId == SexFlag.Female).Count();
  1160. int MaleSumCheckNumber = documentData.CheckedDetail.MaleNumber;
  1161. int FemaleSumCheckNumber = documentData.CheckedDetail.FemaleNumber;
  1162. int TotalSumCheckNumber = MaleSumCheckNumber + FemaleSumCheckNumber;
  1163. decimal MaleAsbitemCheckRatioValue = 0M;
  1164. if (MaleSumCheckNumber != 0)
  1165. {
  1166. MaleAsbitemCheckRatioValue = Math.Round(MaleAsbitemCheckNumber * 100M / MaleSumCheckNumber, 2);
  1167. }
  1168. decimal FemaleAsbitemCheckRatioValue = 0M;
  1169. if (FemaleSumCheckNumber != 0)
  1170. {
  1171. FemaleAsbitemCheckRatioValue = Math.Round(FemaleAsbitemCheckNumber * 100M / FemaleSumCheckNumber, 2);
  1172. }
  1173. string MaleAsbitemCheckRatio = MaleAsbitemCheckRatioValue + "%";
  1174. string FemaleAsbitemCheckRatio = FemaleAsbitemCheckRatioValue + "%";
  1175. string TotalAsbitemCheckRatio = Math.Round((MaleAsbitemCheckRatioValue + FemaleAsbitemCheckRatioValue) / 2) + "%";
  1176. medicalItemExamineSituations.Add(new UnitPhysicalExaminationReportExportWordData_MedicalItemExamineSituation
  1177. {
  1178. AsbitemName = AsbitemName,
  1179. FemaleAsbitemCheckNumber = FemaleAsbitemCheckNumber,
  1180. FemaleAsbitemCheckRatio = FemaleAsbitemCheckRatio,
  1181. FemaleSumCheckNumber = FemaleSumCheckNumber,
  1182. ItemTypeName = ItemTypeName,
  1183. MaleAsbitemCheckNumber = MaleAsbitemCheckNumber,
  1184. MaleAsbitemCheckRatio = MaleAsbitemCheckRatio,
  1185. MaleSumCheckNumber = MaleSumCheckNumber,
  1186. TotalAsbitemCheckNumber = TotalAsbitemCheckNumber,
  1187. TotalAsbitemCheckRatio = TotalAsbitemCheckRatio,
  1188. TotalSumCheckNumber = TotalSumCheckNumber
  1189. });
  1190. }
  1191. //var medicalItemExamineSituations = query.ToList().GroupBy(g => g.registerAsbitem.AsbitemId)
  1192. // .Select(s => new UnitPhysicalExaminationReportExportWordData_MedicalItemExamineSituation
  1193. // {
  1194. // AsbitemName = s.FirstOrDefault().AsbitemName,
  1195. // ItemTypeName = s.FirstOrDefault().ItemTypeName,
  1196. // MaleAsbitemCheckNumber = s.Where(m => m.SexId == SexFlag.Male).Count(),
  1197. // FemaleAsbitemCheckNumber = s.Where(m => m.SexId == SexFlag.Female).Count(),
  1198. // TotalAsbitemCheckNumber = s.Where(m => m.SexId == SexFlag.Male || m.SexId == SexFlag.Female).Count(),
  1199. // MaleSumCheckNumber = documentData.CheckedDetail.MaleNumber,
  1200. // FemaleSumCheckNumber = documentData.CheckedDetail.FemaleNumber,
  1201. // TotalSumCheckNumber = documentData.CheckedDetail.MaleNumber + documentData.CheckedDetail.FemaleNumber,
  1202. // MaleAsbitemCheckRatio = documentData.CheckedDetail.MaleNumber != 0 ?
  1203. // Math.Round(s.Where(m => m.SexId == SexFlag.Male).Count() * 100M / documentData.CheckedDetail.MaleNumber, 2) + "%" : "0%",
  1204. // FemaleAsbitemCheckRatio = documentData.CheckedDetail.FemaleNumber != 0 ?
  1205. // Math.Round(s.Where(m => m.SexId == SexFlag.Female).Count() * 100M / documentData.CheckedDetail.FemaleNumber, 2) + "%" : "0%",
  1206. // TotalAsbitemCheckRatio = Math.Round(
  1207. // ((documentData.CheckedDetail.MaleNumber != 0 ? Math.Round(s.Where(m => m.SexId == SexFlag.Male).Count() * 100M / documentData.CheckedDetail.MaleNumber, 2) : 0)
  1208. // + (documentData.CheckedDetail.FemaleNumber != 0 ? Math.Round(s.Where(m => m.SexId == SexFlag.Female).Count() * 100M / documentData.CheckedDetail.FemaleNumber, 2) : 0)) / 2, 2
  1209. // ) + "%"
  1210. // });
  1211. documentData.MedicalItemExamineSituations = medicalItemExamineSituations.ToList();
  1212. }
  1213. /// <summary>
  1214. /// 生成全体员工体检结果汇总数据 3
  1215. /// </summary>
  1216. /// <param name="documentData">数据</param>
  1217. /// <param name="customerOrgs">参数</param>
  1218. /// <returns></returns>
  1219. public async Task CreateMedicalResultSummarysData(UnitPhysicalExaminationReportExportWordData documentData, CreateInspectionPersonnelPara customerOrgs)
  1220. {
  1221. #region 查询
  1222. var query = from a in (await _patientRegisterRepository.GetQueryableAsync()).Include(x => x.Patient)
  1223. join b in (await _sumSummaryHeaderRepository.GetQueryableAsync()).Include(x => x.SumSummaryContents) on a.Id equals b.PatientRegisterId
  1224. join c in await _sexRepository.GetQueryableAsync() on a.SexId equals c.Id into cc
  1225. from ac in cc.DefaultIfEmpty()
  1226. where a.CompleteFlag == PatientRegisterCompleteFlag.SumCheck
  1227. select new
  1228. {
  1229. CustomerOrgGroupId = a.CustomerOrgGroupId,
  1230. CustomerOrgRegisterId = a.CustomerOrgRegisterId,
  1231. CustomerOrgId = a.CustomerOrgId,
  1232. PatientRegisterId = a.Id,
  1233. CreationTime = a.CreationTime,
  1234. MedicalStartDate = a.MedicalStartDate,
  1235. SummaryDate = a.SummaryDate,
  1236. SexName = ac != null ? ac.DisplayName : "",
  1237. Age = a.Age,
  1238. PatientName = a.PatientName,
  1239. PatientNo = a.Patient != null ? a.Patient.PatientNo : "",
  1240. b
  1241. };
  1242. if (customerOrgs.CustomerOrgGroupId.Any())
  1243. {
  1244. query = query.Where(m => m.CustomerOrgGroupId != null && customerOrgs.CustomerOrgGroupId.Contains(m.CustomerOrgGroupId.Value));
  1245. }
  1246. if (customerOrgs.CustomerOrgRegisterId != GuidFlag.PersonCustomerOrgRegisterId)
  1247. {
  1248. query = query.Where(m => m.CustomerOrgRegisterId == customerOrgs.CustomerOrgRegisterId);
  1249. }
  1250. var customerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(customerOrgs.CustomerOrgId);
  1251. query = query.Where(m => customerOrgIds.Contains(m.CustomerOrgId));
  1252. if (customerOrgs.DateType == '1')
  1253. {
  1254. query = query.Where(m => m.CreationTime >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1255. m.CreationTime < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1256. }
  1257. else if (customerOrgs.DateType == '2')
  1258. {
  1259. query = query.Where(m => m.MedicalStartDate != null && m.MedicalStartDate.Value >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1260. m.MedicalStartDate.Value < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1261. }
  1262. else if (customerOrgs.DateType == '3')
  1263. {
  1264. query = query.Where(m => m.SummaryDate != null && m.SummaryDate.Value >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1265. m.SummaryDate.Value < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1266. }
  1267. #endregion
  1268. var medicalResultSummarys = query.ToList().GroupBy(g => g.PatientRegisterId).Select(s => new UnitPhysicalExaminationReportExportWordData_MedicalResultSummary
  1269. {
  1270. Age = s.FirstOrDefault().Age != null ? s.FirstOrDefault().Age.ToString() : "",
  1271. PatientName = s.FirstOrDefault().PatientName,
  1272. PatientNo = s.FirstOrDefault().PatientNo,
  1273. SexName = s.FirstOrDefault().SexName,
  1274. MedicalResult = DataHelper.SetSumSummarysInReport(s.Select(ss => ss.b).ToList())
  1275. });
  1276. documentData.MedicalResultSummarys = medicalResultSummarys.ToList();
  1277. }
  1278. /// <summary>
  1279. /// 生成本次体检异常结果检出统计数据 4
  1280. /// </summary>
  1281. /// <param name="documentData">数据</param>
  1282. /// <param name="customerOrgs">参数</param>
  1283. /// <returns></returns>
  1284. public async Task CreateMedicalAbnormalResultStatisticsData(UnitPhysicalExaminationReportExportWordData documentData, CreateInspectionPersonnelPara customerOrgs)
  1285. {
  1286. #region 查询
  1287. var query = from a in (await _sumDiagnosisRepository.GetQueryableAsync()).Include(x => x.Diagnosis)
  1288. join b in await _patientRegisterRepository.GetQueryableAsync() on a.PatientRegisterId equals b.Id
  1289. where b.CompleteFlag == PatientRegisterCompleteFlag.SumCheck
  1290. select new
  1291. {
  1292. CustomerOrgGroupId = b.CustomerOrgGroupId,
  1293. CustomerOrgRegisterId = b.CustomerOrgRegisterId,
  1294. CustomerOrgId = b.CustomerOrgId,
  1295. CreationTime = b.CreationTime,
  1296. MedicalStartDate = b.MedicalStartDate,
  1297. SummaryDate = b.SummaryDate,
  1298. PatientName = b.PatientName,
  1299. DiagnosisId = a.DiagnosisId,
  1300. SexId = b.SexId,
  1301. DiagnosisName = a.Diagnosis != null ? a.Diagnosis.DisplayName : ""
  1302. };
  1303. if (customerOrgs.CustomerOrgGroupId.Any())
  1304. {
  1305. query = query.Where(m => m.CustomerOrgGroupId != null && customerOrgs.CustomerOrgGroupId.Contains(m.CustomerOrgGroupId.Value));
  1306. }
  1307. if (customerOrgs.CustomerOrgRegisterId != GuidFlag.PersonCustomerOrgRegisterId)
  1308. {
  1309. query = query.Where(m => m.CustomerOrgRegisterId == customerOrgs.CustomerOrgRegisterId);
  1310. }
  1311. var customerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(customerOrgs.CustomerOrgId);
  1312. query = query.Where(m => customerOrgIds.Contains(m.CustomerOrgId));
  1313. if (customerOrgs.DateType == '1')
  1314. {
  1315. query = query.Where(m => m.CreationTime >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1316. m.CreationTime < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1317. }
  1318. else if (customerOrgs.DateType == '2')
  1319. {
  1320. query = query.Where(m => m.MedicalStartDate != null && m.MedicalStartDate.Value >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1321. m.MedicalStartDate.Value < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1322. }
  1323. else if (customerOrgs.DateType == '3')
  1324. {
  1325. query = query.Where(m => m.SummaryDate != null && m.SummaryDate.Value >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1326. m.SummaryDate.Value < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1327. }
  1328. #endregion
  1329. var medicalAbnormalResultStatistics = query.ToList().GroupBy(g => g.DiagnosisId).Select(s => new UnitPhysicalExaminationReportExportWordData_MedicalAbnormalResultStatistics
  1330. {
  1331. DiagnosisName = s.FirstOrDefault().DiagnosisName,
  1332. PatientDetail = string.Join("、", s.Select(ss => ss.PatientName)),
  1333. MaleNumber = s.Where(m => m.SexId == SexFlag.Male).Count(),
  1334. FemaleNumber = s.Where(m => m.SexId == SexFlag.Female).Count(),
  1335. TotalNumber = s.Where(m => m.SexId == SexFlag.Male || m.SexId == SexFlag.Female).Count(),
  1336. MaleRatio = s.Where(m => m.SexId == SexFlag.Male || m.SexId == SexFlag.Female).Count() != 0 ?
  1337. 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%",
  1338. FemaleRatio = s.Where(m => m.SexId == SexFlag.Male || m.SexId == SexFlag.Female).Count() != 0 ?
  1339. 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%",
  1340. AverageRatio = s.Where(m => m.SexId == SexFlag.Male || m.SexId == SexFlag.Female).Count() != 0 ?
  1341. 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)
  1342. + 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%"
  1343. }).OrderByDescending(o => o.TotalNumber);
  1344. documentData.MedicalAbnormalResultStatistics = medicalAbnormalResultStatistics.ToList();
  1345. }
  1346. /// <summary>
  1347. /// 生成本次体检异常结果检出统计数据 5
  1348. /// </summary>
  1349. /// <param name="documentData">数据</param>
  1350. /// <param name="customerOrgs">参数</param>
  1351. /// <returns></returns>
  1352. public async Task CreateMedicalTenAbnormalResultsData(UnitPhysicalExaminationReportExportWordData documentData, CreateInspectionPersonnelPara customerOrgs)
  1353. {
  1354. #region 查询
  1355. var query = from a in (await _sumDiagnosisRepository.GetQueryableAsync()).Include(x => x.Diagnosis)
  1356. join b in await _patientRegisterRepository.GetQueryableAsync() on a.PatientRegisterId equals b.Id
  1357. join c in (await _sumSuggestionHeaderRepository.GetQueryableAsync()).Include(x => x.SumSuggestionContents) on a.SumSuggestionHeaderId equals c.Id into cc
  1358. from ac in cc.DefaultIfEmpty()
  1359. where b.CompleteFlag == PatientRegisterCompleteFlag.SumCheck
  1360. select new
  1361. {
  1362. CustomerOrgGroupId = b.CustomerOrgGroupId,
  1363. CustomerOrgRegisterId = b.CustomerOrgRegisterId,
  1364. CustomerOrgId = b.CustomerOrgId,
  1365. CreationTime = b.CreationTime,
  1366. MedicalStartDate = b.MedicalStartDate,
  1367. SummaryDate = b.SummaryDate,
  1368. DiagnosisId = a.DiagnosisId,
  1369. DiagnosisName = a.Diagnosis != null ? a.Diagnosis.DisplayName : "",
  1370. ac
  1371. };
  1372. if (customerOrgs.CustomerOrgGroupId.Any())
  1373. {
  1374. query = query.Where(m => m.CustomerOrgGroupId != null && customerOrgs.CustomerOrgGroupId.Contains(m.CustomerOrgGroupId.Value));
  1375. }
  1376. if (customerOrgs.CustomerOrgRegisterId != GuidFlag.PersonCustomerOrgRegisterId)
  1377. {
  1378. query = query.Where(m => m.CustomerOrgRegisterId == customerOrgs.CustomerOrgRegisterId);
  1379. }
  1380. var customerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(customerOrgs.CustomerOrgId);
  1381. query = query.Where(m => customerOrgIds.Contains(m.CustomerOrgId));
  1382. if (customerOrgs.DateType == '1')
  1383. {
  1384. query = query.Where(m => m.CreationTime >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1385. m.CreationTime < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1386. }
  1387. else if (customerOrgs.DateType == '2')
  1388. {
  1389. query = query.Where(m => m.MedicalStartDate != null && m.MedicalStartDate.Value >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1390. m.MedicalStartDate.Value < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1391. }
  1392. else if (customerOrgs.DateType == '3')
  1393. {
  1394. query = query.Where(m => m.SummaryDate != null && m.SummaryDate.Value >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1395. m.SummaryDate.Value < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1396. }
  1397. #endregion
  1398. var medicalTenAbnormalResults = query.ToList().GroupBy(g => g.DiagnosisId).Select(s => new UnitPhysicalExaminationReportExportWordData_MedicalTenAbnormalResult
  1399. {
  1400. DiagnosisName = s.FirstOrDefault().DiagnosisName,
  1401. DiagnosisSuggestion = DataHelper.SetSumSuggestionInReport(s.Where(m => m.ac != null).Select(ss => ss.ac).ToList())
  1402. });
  1403. documentData.MedicalTenAbnormalResults = medicalTenAbnormalResults.ToList();
  1404. }
  1405. /// <summary>
  1406. /// 生成体检者未完成情况数据 6
  1407. /// </summary>
  1408. /// <param name="documentData">数据</param>
  1409. /// <param name="customerOrgs">参数</param>
  1410. /// <returns></returns>
  1411. public async Task CreateMedicalUnCheckedStatisticsData(UnitPhysicalExaminationReportExportWordData documentData, CreateInspectionPersonnelPara customerOrgs)
  1412. {
  1413. #region 查询
  1414. var query = from a in (await _patientRegisterRepository.GetQueryableAsync()).Include(x => x.Patient)
  1415. join b in await _customerOrgRepository.GetQueryableAsync() on a.CustomerOrgId equals b.Id
  1416. join c in await _sexRepository.GetQueryableAsync() on a.SexId equals c.Id into cc
  1417. from ac in cc.DefaultIfEmpty()
  1418. where a.CompleteFlag != PatientRegisterCompleteFlag.SumCheck
  1419. select new
  1420. {
  1421. CustomerOrgGroupId = a.CustomerOrgGroupId,
  1422. CustomerOrgRegisterId = a.CustomerOrgRegisterId,
  1423. CustomerOrgId = a.CustomerOrgId,
  1424. CreationTime = a.CreationTime,
  1425. MedicalStartDate = a.MedicalStartDate,
  1426. SummaryDate = a.SummaryDate,
  1427. PatientNo = a.Patient != null ? a.Patient.PatientNo : "",
  1428. PatientName = a.PatientName,
  1429. SexName = ac != null ? ac.DisplayName : "",
  1430. Age = a.Age,
  1431. DepartmentName = b.DisplayName
  1432. };
  1433. if (customerOrgs.CustomerOrgGroupId.Any())
  1434. {
  1435. query = query.Where(m => m.CustomerOrgGroupId != null && customerOrgs.CustomerOrgGroupId.Contains(m.CustomerOrgGroupId.Value));
  1436. }
  1437. if (customerOrgs.CustomerOrgRegisterId != GuidFlag.PersonCustomerOrgRegisterId)
  1438. {
  1439. query = query.Where(m => m.CustomerOrgRegisterId == customerOrgs.CustomerOrgRegisterId);
  1440. }
  1441. var customerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(customerOrgs.CustomerOrgId);
  1442. query = query.Where(m => customerOrgIds.Contains(m.CustomerOrgId));
  1443. if (customerOrgs.DateType == '1')
  1444. {
  1445. query = query.Where(m => m.CreationTime >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1446. m.CreationTime < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1447. }
  1448. else if (customerOrgs.DateType == '2')
  1449. {
  1450. query = query.Where(m => m.MedicalStartDate != null && m.MedicalStartDate.Value >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1451. m.MedicalStartDate.Value < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1452. }
  1453. else if (customerOrgs.DateType == '3')
  1454. {
  1455. query = query.Where(m => m.SummaryDate != null && m.SummaryDate.Value >= Convert.ToDateTime(customerOrgs.StartDate) &&
  1456. m.SummaryDate.Value < Convert.ToDateTime(customerOrgs.EndDate).AddDays(1));
  1457. }
  1458. #endregion
  1459. var medicalUnCheckedStatistics = query.Select(s => new UnitPhysicalExaminationReportExportWordData_MedicalUnCheckedStatistics
  1460. {
  1461. Age = s.Age != null ? s.Age.ToString() : "",
  1462. DepartmentName = s.DepartmentName,
  1463. PatientName = s.PatientName,
  1464. PatientNo = s.PatientNo,
  1465. SexName = s.SexName
  1466. });
  1467. documentData.MedicalUnCheckedStatistics = medicalUnCheckedStatistics.ToList();
  1468. }
  1469. }
  1470. }