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.

480 lines
25 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
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
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 JetBrains.Annotations;
  2. using Microsoft.AspNetCore.Authorization;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Microsoft.EntityFrameworkCore;
  5. using Microsoft.VisualBasic;
  6. using NPOI.OpenXmlFormats.Wordprocessing;
  7. using Shentun.Peis.Enums;
  8. using Shentun.Peis.Models;
  9. using Shentun.Peis.PatientRegisters;
  10. using SqlSugar;
  11. using System;
  12. using System.Collections.Generic;
  13. using System.Collections.Immutable;
  14. using System.Linq;
  15. using System.Text;
  16. using System.Threading.Tasks;
  17. using Volo.Abp.Account;
  18. using Volo.Abp.Application.Services;
  19. using Volo.Abp.Domain.Repositories;
  20. using Volo.Abp.Identity;
  21. namespace Shentun.Peis.SumSummaryReports
  22. {
  23. /// <summary>
  24. /// 总诊台报告
  25. /// </summary>
  26. [ApiExplorerSettings(GroupName = "Work")]
  27. [Authorize]
  28. public class SumSummaryReportAppService : ApplicationService
  29. {
  30. private readonly IRepository<Patient, Guid> _patientRepository;
  31. private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
  32. private readonly IRepository<IdentityUser, Guid> _identityUserRepository;
  33. private readonly IRepository<ItemType, Guid> _itemTypeRepository;
  34. private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
  35. private readonly IRepository<Item, Guid> _itemRepository;
  36. private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
  37. private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
  38. private readonly IRepository<ResultStatus> _resultStatusRepository;
  39. private readonly ISumSummaryReportRepository _sumSummaryReportRepository;
  40. private readonly CacheService _cacheService;
  41. private readonly IRepository<RegisterCheckSummary, Guid> _registerCheckSummaryRepository;
  42. private readonly IRepository<Asbitem, Guid> _asbitemRepository;
  43. public SumSummaryReportAppService(
  44. IRepository<Patient, Guid> patientRepository,
  45. IRepository<RegisterCheck, Guid> registerCheckRepository,
  46. IRepository<IdentityUser, Guid> identityUserRepository,
  47. IRepository<ItemType, Guid> itemTypeRepository,
  48. IRepository<PatientRegister, Guid> patientRegisterRepository,
  49. IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
  50. ISumSummaryReportRepository sumSummaryReportRepository,
  51. IRepository<ResultStatus> resultStatusRepository,
  52. CacheService cacheService,
  53. IRepository<RegisterCheckSummary, Guid> registerCheckSummaryRepository,
  54. IRepository<Asbitem, Guid> asbitemRepository,
  55. IRepository<Item, Guid> itemRepository,
  56. IRepository<RegisterCheckItem> registerCheckItemRepository)
  57. {
  58. this._registerCheckRepository = registerCheckRepository;
  59. this._identityUserRepository = identityUserRepository;
  60. this._itemTypeRepository = itemTypeRepository;
  61. this._patientRegisterRepository = patientRegisterRepository;
  62. this._registerCheckAsbitemRepository = registerCheckAsbitemRepository;
  63. this._sumSummaryReportRepository = sumSummaryReportRepository;
  64. _cacheService = cacheService;
  65. _resultStatusRepository = resultStatusRepository;
  66. _registerCheckSummaryRepository = registerCheckSummaryRepository;
  67. _asbitemRepository = asbitemRepository;
  68. _itemRepository = itemRepository;
  69. _registerCheckItemRepository = registerCheckItemRepository;
  70. _patientRepository = patientRepository;
  71. }
  72. /// <summary>
  73. /// 获取明细结果报告
  74. /// </summary>
  75. /// <param name="input">人员登记ID</param>
  76. /// <returns></returns>
  77. [HttpPost("api/app/SumSummaryReport/GetDetailResults")]
  78. public async Task<List<SumSummaryReportDetailResultDto>> GetDetailResultsAsync(PatientRegisterIdInputDto input)
  79. {
  80. List<SumSummaryReportDetailResultDto> msg = new List<SumSummaryReportDetailResultDto>();
  81. var userlist = await _identityUserRepository.GetListAsync();
  82. var resultStatus = await _resultStatusRepository.GetListAsync();
  83. var list = (from patient in await _patientRepository.GetQueryableAsync()
  84. join patientRegister in await _patientRegisterRepository.GetQueryableAsync()
  85. on patient.Id equals patientRegister.PatientId
  86. join registerCheck in await _registerCheckRepository.GetQueryableAsync()
  87. on patientRegister.Id equals registerCheck.PatientRegisterId
  88. join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
  89. on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
  90. join registerCheckSummary in await _registerCheckSummaryRepository.GetQueryableAsync()
  91. on registerCheck.Id equals registerCheckSummary.RegisterCheckId
  92. join asbitem in await _asbitemRepository.GetQueryableAsync()
  93. on registerCheckAsbitem.AsbitemId equals asbitem.Id
  94. join registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync()
  95. on registerCheck.Id equals registerCheckItem.RegisterCheckId
  96. join item in await _itemRepository.GetQueryableAsync()
  97. on registerCheckItem.ItemId equals item.Id
  98. join itemType in await _itemTypeRepository.GetQueryableAsync()
  99. on asbitem.ItemTypeId equals itemType.Id
  100. where patientRegister.Id == input.PatientRegisterId
  101. select new
  102. {
  103. patient,
  104. patientRegister,
  105. registerCheck,
  106. registerCheckSummary,
  107. registerCheckAsbitem,
  108. asbitem,
  109. registerCheckItem,
  110. item,
  111. itemType
  112. }).AsNoTracking().ToList();
  113. if (!list.Any())
  114. {
  115. return null;
  116. }
  117. //获取历次结果
  118. var histroyList = (from patient in await _patientRepository.GetQueryableAsync()
  119. join patientRegister in await _patientRegisterRepository.GetQueryableAsync()
  120. on patient.Id equals patientRegister.PatientId
  121. join registerCheck in await _registerCheckRepository.GetQueryableAsync()
  122. on patientRegister.Id equals registerCheck.PatientRegisterId
  123. join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
  124. on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
  125. join registerCheckSummary in await _registerCheckSummaryRepository.GetQueryableAsync()
  126. on registerCheck.Id equals registerCheckSummary.RegisterCheckId
  127. join asbitem in await _asbitemRepository.GetQueryableAsync()
  128. on registerCheckAsbitem.AsbitemId equals asbitem.Id
  129. join registerCheckItem in await _registerCheckItemRepository.GetQueryableAsync()
  130. on registerCheck.Id equals registerCheckItem.RegisterCheckId
  131. join item in await _itemRepository.GetQueryableAsync()
  132. on registerCheckItem.ItemId equals item.Id
  133. join itemType in await _itemTypeRepository.GetQueryableAsync()
  134. on asbitem.ItemTypeId equals itemType.Id
  135. where patient.Id == list.First().patient.Id
  136. && (patientRegister.CompleteFlag == PatientRegisterCompleteFlag.SumCheck || patientRegister.CompleteFlag == PatientRegisterCompleteFlag.Audit)
  137. && patientRegister.MedicalTimes < list.First().patientRegister.MedicalTimes
  138. select new
  139. {
  140. patient,
  141. patientRegister,
  142. registerCheck,
  143. registerCheckSummary,
  144. registerCheckAsbitem,
  145. asbitem,
  146. registerCheckItem,
  147. item,
  148. itemType
  149. }).OrderByDescending(o => o.patientRegister.MedicalTimes).ToList();
  150. //将子项目类别设置为父项目类别
  151. var itemTypes = await _itemTypeRepository.GetListAsync();
  152. foreach (var listItem in list)
  153. {
  154. var parentItemType = itemTypes.Where(o => o.Id == listItem.itemType.ParentId).FirstOrDefault();
  155. if (parentItemType != null)
  156. {
  157. listItem.asbitem.DisplayOrder = listItem.itemType.DisplayOrder * 1000 + listItem.asbitem.DisplayOrder;
  158. listItem.itemType.DisplayName = parentItemType.DisplayName;
  159. listItem.itemType.DisplayOrder = parentItemType.DisplayOrder;
  160. }
  161. }
  162. var detailedResultsList_Asbitems = new List<SumSummaryReportDetailResultWithAsbitem>();
  163. var registerCheckIds = list.OrderBy(o => o.itemType.DisplayOrder)
  164. .OrderBy(o => o.asbitem.DisplayOrder)
  165. .Select(o => o.registerCheck.Id).Distinct().ToList();
  166. foreach (var registerCheckId in registerCheckIds)
  167. {
  168. var listItem = list.Where(o => o.registerCheck.Id == registerCheckId).First();
  169. var detailedResultsList_Asbitem = new SumSummaryReportDetailResultWithAsbitem()
  170. {
  171. ItemTypeName = listItem.itemType.DisplayName,
  172. AsbitemName = string.Join(",", list.Where(o => o.registerCheck.Id == registerCheckId)
  173. .OrderBy(o => o.itemType.DisplayOrder).OrderBy(o => o.asbitem.DisplayOrder)
  174. .Select(o => o.asbitem.DisplayName).Distinct().ToList()),
  175. ItemTypeDisplayOrder = listItem.itemType.DisplayOrder,
  176. AsbitemDisplayOrder = listItem.asbitem.DisplayOrder,
  177. CheckDate = ((DateTime)listItem.registerCheck.CheckDate).Date,
  178. CheckDoctorName = EntityHelper.GetCheckDoctorName(listItem.registerCheck.CheckDoctorId, userlist),
  179. Items = list.Where(o => o.registerCheck.Id == registerCheckId)
  180. .OrderBy(o => o.itemType.DisplayOrder).OrderBy(o => o.asbitem.DisplayOrder).OrderBy(o => o.item.DisplayOrder)
  181. .Select(o => new SumSummaryReportDetailResultWithItem()
  182. {
  183. ItemId = o.registerCheckItem.ItemId,
  184. ItemName = o.item.DisplayName,
  185. ItemResult = o.registerCheckItem.Result,
  186. ReferenceRangeValue = o.registerCheckItem.ReferenceRangeValue,
  187. CriticalRangeValue = o.registerCheckItem.CriticalRangeValue,
  188. Unit = o.registerCheckItem.Unit,
  189. ResultStatusId = o.registerCheckItem.ResultStatusId,
  190. ResultStatusName = (resultStatus.Where(x => x.Id == o.registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? "" : resultStatus.Where(x => x.Id == o.registerCheckItem.ResultStatusId).FirstOrDefault().ReportPrompt,
  191. ReportFontColor = (resultStatus.Where(x => x.Id == o.registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? 0 : resultStatus.Where(x => x.Id == o.registerCheckItem.ResultStatusId).FirstOrDefault().ReportFontColor,
  192. ReportBackgroundColor = (resultStatus.Where(x => x.Id == o.registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? 16777215 : resultStatus.Where(x => x.Id == o.registerCheckItem.ResultStatusId).FirstOrDefault().ReportBackgroundColor,
  193. }).Distinct().ToList(),
  194. Summarys = list.Where(o => o.registerCheck.Id == registerCheckId)
  195. .OrderBy(o=>o.registerCheckSummary.DisplayOrder)
  196. .GroupBy(o=>o.registerCheckSummary.Summary)
  197. .Select(o=> new SumSummaryReportDetailResultWithSummary(){
  198. Summary = o.FirstOrDefault().registerCheckSummary.Summary })
  199. .ToList<SumSummaryReportDetailResultWithSummary>(),
  200. };
  201. detailedResultsList_Asbitem.Summarys = detailedResultsList_Asbitem.Summarys.Distinct().ToList();
  202. foreach (var registerCheckItem in detailedResultsList_Asbitem.Items)
  203. {
  204. var historyRegisterCheckItems = histroyList.GroupBy(o=>o.registerCheckItem)
  205. .Select(o => o.First().registerCheckItem )
  206. .Where(o => o.ItemId == registerCheckItem.ItemId)
  207. .Distinct().ToList();
  208. for (var i = 0; i < historyRegisterCheckItems.Count; i++)
  209. {
  210. if(i== 0)
  211. {
  212. registerCheckItem.PreviousItemResult = historyRegisterCheckItems[i].Result;
  213. registerCheckItem.PreviousReportFontColor = (resultStatus.Where(x => x.Id == historyRegisterCheckItems[i].ResultStatusId).FirstOrDefault() == null) ? 0 : resultStatus.Where(x => x.Id == historyRegisterCheckItems[i].ResultStatusId).FirstOrDefault().ReportFontColor;
  214. registerCheckItem.PreviousReportBackgroundColor = (resultStatus.Where(x => x.Id == historyRegisterCheckItems[i].ResultStatusId).FirstOrDefault() == null) ? 16777215 : resultStatus.Where(x => x.Id == historyRegisterCheckItems[i].ResultStatusId).FirstOrDefault().ReportBackgroundColor;
  215. }
  216. else if(i== 1)
  217. {
  218. registerCheckItem.PreviousTwoItemResult = historyRegisterCheckItems[i].Result;
  219. registerCheckItem.PreviousTwoReportFontColor = (resultStatus.Where(x => x.Id == historyRegisterCheckItems[i].ResultStatusId).FirstOrDefault() == null) ? 0 : resultStatus.Where(x => x.Id == historyRegisterCheckItems[i].ResultStatusId).FirstOrDefault().ReportFontColor;
  220. registerCheckItem.PreviousTwoReportBackgroundColor = (resultStatus.Where(x => x.Id == historyRegisterCheckItems[i].ResultStatusId).FirstOrDefault() == null) ? 16777215 : resultStatus.Where(x => x.Id == historyRegisterCheckItems[i].ResultStatusId).FirstOrDefault().ReportBackgroundColor;
  221. }
  222. }
  223. }
  224. detailedResultsList_Asbitems.Add(detailedResultsList_Asbitem);
  225. }
  226. var grouplist = detailedResultsList_Asbitems.OrderBy(o=>o.ItemTypeDisplayOrder)
  227. .OrderBy(o=>o.AsbitemDisplayOrder)
  228. .GroupBy(g => g.ItemTypeName);
  229. foreach (var g in grouplist)
  230. {
  231. var glist = g.ToList();
  232. var resultlist = new SumSummaryReportDetailResultDto
  233. {
  234. ItemTypeName = glist.FirstOrDefault().ItemTypeName,
  235. Asbitems = glist
  236. };
  237. msg.Add(resultlist);
  238. }
  239. return msg;
  240. }
  241. /// <summary>
  242. /// 获取项目类别对比报告
  243. /// </summary>
  244. /// <param name="PatientId">档案ID(不是档案号)</param>
  245. /// <returns></returns>
  246. [HttpGet("api/app/sumsummaryreport/getitemtypecontrastlist")]
  247. public async Task<List<ItemTypeContrastListDto>> GetItemTypeContrastListAsync(Guid PatientId)
  248. {
  249. List<ItemTypeContrastListDto> msg = new List<ItemTypeContrastListDto>();
  250. var query = from a in await _patientRegisterRepository.GetQueryableAsync()
  251. join b in await _registerCheckRepository.GetQueryableAsync() on a.Id equals b.PatientRegisterId
  252. join c in await _registerCheckAsbitemRepository.GetQueryableAsync() on b.Id equals c.RegisterCheckId
  253. join d in await _asbitemRepository.GetQueryableAsync() on c.AsbitemId equals d.Id into dd
  254. from ad in dd.DefaultIfEmpty()
  255. join e in await _itemTypeRepository.GetQueryableAsync() on ad.ItemTypeId equals e.Id
  256. join f in await _registerCheckSummaryRepository.GetQueryableAsync() on b.Id equals f.RegisterCheckId into ff
  257. from af in ff.DefaultIfEmpty()
  258. where a.PatientId == PatientId && a.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration
  259. select new
  260. {
  261. RegisterDate = a.CreationTime,
  262. PatientRegisterId = a.Id,
  263. ItemTypeName = e.DisplayName,
  264. Summary = af != null ? af.Summary : ""
  265. };
  266. var grouplist = query.ToList().GroupBy(g => new { g.PatientRegisterId, g.ItemTypeName });
  267. foreach (var g in grouplist)
  268. {
  269. var glist = g.ToList();
  270. var resultlist = new ItemTypeContrastListDto
  271. {
  272. ItemTypeName = glist.FirstOrDefault().ItemTypeName,
  273. RegisterDate = DataHelper.ConversionDateToString(glist.FirstOrDefault().RegisterDate),
  274. Summarys = string.Join("\n", glist.Select(s => s.Summary).ToList())
  275. };
  276. msg.Add(resultlist);
  277. }
  278. return msg.OrderBy(o => o.ItemTypeName).ThenBy(o => o.RegisterDate).ToList();
  279. }
  280. /// <summary>
  281. /// 获取历次综述
  282. /// </summary>
  283. /// <param name="PatientId">档案ID(不是档案号)</param>
  284. /// <returns></returns>
  285. [HttpGet("api/app/sumsummaryreport/gethistoricalreviewlist")]
  286. public async Task<List<HistoricalReviewListDto>> GetHistoricalReviewListAsync(Guid PatientId)
  287. {
  288. List<ItemTypeContrastListDto> msg = new List<ItemTypeContrastListDto>();
  289. var userlist = await _identityUserRepository.GetListAsync();
  290. var entlist = (await _patientRegisterRepository.GetDbSetAsync())
  291. .Include(x => x.SumSummaryHeaders)
  292. .ThenInclude(x => x.SumSummaryContents)
  293. .Include(x => x.SumSuggestionHeaders)
  294. .ThenInclude(x => x.SumSuggestionContents)
  295. .Where(m => m.PatientId == PatientId && (m.SumSummaryHeaders.Count > 0 || m.SumSuggestionHeaders.Count > 0)
  296. && m.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration)
  297. .ToList();
  298. //以registercheck表为主
  299. var registercheckList = entlist.Select(s => new HistoricalReviewListDto
  300. {
  301. MedicalTimes = s.MedicalTimes,
  302. SummaryDate = DataHelper.ConversionDateToString(s.SummaryDate),
  303. SummaryDoctor = _cacheService.GetSurnameAsync(s.SummaryDoctorId).Result,
  304. SumSuggestions = SetSumSuggestions(s.SumSuggestionHeaders.ToList()),
  305. SumSummarys = SetSumSummarys(s.SumSummaryHeaders.ToList())
  306. }).OrderByDescending(o => o.MedicalTimes).ToList();
  307. return registercheckList;
  308. }
  309. /// <summary>
  310. /// 获取横向对比 左侧组合项目
  311. /// </summary>
  312. /// <param name="PatientId"></param>
  313. /// <returns></returns>
  314. [HttpGet("api/app/sumsummaryreport/gethorizontalcomparisonasbitemlist")]
  315. public async Task<List<HorizontalComparisonAsbitemListDto>> GetHorizontalComparisonAsbitemListAsync(Guid PatientId)
  316. {
  317. List<HorizontalComparisonAsbitemListDto> entdto = new List<HorizontalComparisonAsbitemListDto>();
  318. var entlist = (await _registerCheckAsbitemRepository.GetDbSetAsync())
  319. .Include(x => x.Asbitem)
  320. .Include(x => x.RegisterCheck)
  321. .Include(x => x.PatientRegister)
  322. .Where(m => m.PatientRegister.PatientId == PatientId && m.PatientRegister.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration)
  323. .ToList();
  324. var grouplist = entlist.GroupBy(o => o.AsbitemId);
  325. foreach (var g in grouplist)
  326. {
  327. //var resultlist = new ItemTypeContrastListDto
  328. //{
  329. // ItemTypeName = glist.FirstOrDefault().ItemTypeName,
  330. // RegisterDate = glist.FirstOrDefault().RegisterDate,
  331. // Summarys = string.Join("\n", glist.Select(s => s.Summarys).ToList())
  332. //};
  333. var glist = g.ToList();
  334. var ent = new HorizontalComparisonAsbitemListDto
  335. {
  336. AsbitemId = glist.Any() ? glist.FirstOrDefault().AsbitemId : Guid.Empty,
  337. AsbitemName = glist.Any() ? glist.FirstOrDefault().Asbitem.DisplayName : "",
  338. CompleteFlag = glist.Any() ? glist.OrderByDescending(m => m.CreationTime).FirstOrDefault().RegisterCheck.CompleteFlag : RegisterCheckCompleteFlag.UnChecked
  339. };
  340. entdto.Add(ent);
  341. }
  342. //var entdto = entlist.Select(s => new HorizontalComparisonAsbitemListDto
  343. //{
  344. // AsbitemId = s.AsbitemId,
  345. // AsbitemName = s.Asbitem.DisplayName,
  346. // CompleteFlag = s.RegisterChecks.FirstOrDefault(m => m.CreationTime)
  347. //}).ToList();
  348. return entdto;
  349. }
  350. /// <summary>
  351. /// 获取横向对比数据
  352. /// </summary>
  353. /// <param name="PatientId"></param>
  354. /// <param name="AsbitemId"></param>
  355. /// <returns></returns>
  356. [HttpGet("api/app/sumsummaryreport/gethorizontalcomparisonlist")]
  357. public async Task<List<HorizontalComparisonListDto>> GetHorizontalComparisonListAsync(Guid PatientId, Guid AsbitemId)
  358. {
  359. var entlist = await _sumSummaryReportRepository.GetHorizontalComparisonListAsync(PatientId, AsbitemId);
  360. var entdto = ObjectMapper.Map<List<HorizontalComparisonListEntity>, List<HorizontalComparisonListDto>>(entlist);
  361. return entdto;
  362. }
  363. /// <summary>
  364. /// 生成历次综述医生小结
  365. /// </summary>
  366. /// <param name="SumSummaryHeaders"></param>
  367. /// <returns></returns>
  368. private string SetSumSummarys(List<SumSummaryHeader> SumSummaryHeaders)
  369. {
  370. StringBuilder msg = new StringBuilder();
  371. if (SumSummaryHeaders.Count > 0)
  372. {
  373. foreach (var item in SumSummaryHeaders)
  374. {
  375. msg.Append("* " + item.SummaryTitle + ":" + "<br/>");
  376. if (item.SumSummaryContents.Count > 0)
  377. {
  378. var SumSummaryContents = item.SumSummaryContents.ToList();
  379. foreach (var item2 in SumSummaryContents)
  380. {
  381. msg.Append("(" + SumSummaryContents.IndexOf(item2) + 1 + ")" + item2.SummaryContent + "<br/>");
  382. }
  383. }
  384. }
  385. }
  386. return msg.ToString();
  387. }
  388. /// <summary>
  389. /// 生成历次综述医生建议
  390. /// </summary>
  391. /// <param name="SumSuggestionHeaders"></param>
  392. /// <returns></returns>
  393. private string SetSumSuggestions(List<SumSuggestionHeader> SumSuggestionHeaders)
  394. {
  395. StringBuilder msg = new StringBuilder();
  396. if (SumSuggestionHeaders.Count > 0)
  397. {
  398. foreach (var item in SumSuggestionHeaders)
  399. {
  400. msg.Append("* " + item.SuggestionTitle + ":" + "<br/>");
  401. if (item.SumSuggestionContents.Count > 0)
  402. {
  403. var SumSuggestionContents = item.SumSuggestionContents.ToList();
  404. foreach (var item2 in SumSuggestionContents)
  405. {
  406. msg.Append("(" + SumSuggestionContents.IndexOf(item2) + 1 + ")" + item2.SuggestionContent + "<br/>");
  407. }
  408. }
  409. }
  410. }
  411. return msg.ToString();
  412. }
  413. }
  414. }