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.

671 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
  1. using NPOI.POIFS.Properties;
  2. using Shentun.Peis.CustomerOrgs;
  3. using Shentun.Peis.DiagnosisFunctions;
  4. using Shentun.Peis.Models;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Runtime.ConstrainedExecution;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using TencentCloud.Ame.V20190916.Models;
  12. using Volo.Abp.Domain.Repositories;
  13. using Volo.Abp.Uow;
  14. using Xunit;
  15. using Xunit.Abstractions;
  16. namespace Shentun.Peis
  17. {
  18. public class DiagnosisFunctionAppServiceTest : PeisApplicationTestBase
  19. {
  20. private readonly IRepository<CustomerOrg, Guid> _repository;
  21. private readonly DiagnosisFunctionAppService _appService;
  22. private readonly ITestOutputHelper _output;
  23. private readonly IUnitOfWorkManager _unitOfWorkManager;
  24. public DiagnosisFunctionAppServiceTest(ITestOutputHelper testOutputHelper)
  25. {
  26. _output = testOutputHelper;
  27. _unitOfWorkManager = GetRequiredService<IUnitOfWorkManager>();
  28. _repository = GetRequiredService<IRepository<CustomerOrg, Guid>>();
  29. _appService = GetRequiredService<DiagnosisFunctionAppService>();
  30. }
  31. [Fact]
  32. public async Task GetDiagnosisResultAsync2()
  33. {
  34. using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
  35. {
  36. var getDiagnosisResultRequestDto = new GetDiagnosisResultRequestDto()
  37. {
  38. RegisterCheckId = new Guid("3a11eeb9-81e2-44bc-fd9d-72ca7d3ef9a6"),
  39. Items = new List<GetDiagnosisResultRequest_Item>
  40. {
  41. new GetDiagnosisResultRequest_Item()
  42. {
  43. ItemId = new Guid("3a11eeb8-716b-6103-9e89-dbd9df85227f"),
  44. Result = "180/110"
  45. },
  46. new GetDiagnosisResultRequest_Item()
  47. {
  48. ItemId = new Guid("3a0c5186-2920-6492-c8bf-5908fe6bda56"),
  49. Result = "肥胖;其它病"
  50. }
  51. }
  52. };
  53. var result = await _appService.GetDiagnosisResultAsync2(getDiagnosisResultRequestDto);
  54. foreach (var item in result.DiagnosisResultDetails)
  55. {
  56. _output.WriteLine(item.DiagnosisResult);
  57. }
  58. }
  59. }
  60. [Fact]
  61. public async Task GetDiagnosisResultAsync3()
  62. {
  63. using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
  64. {
  65. var getDiagnosisResultRequestDto = new GetDiagnosisResultRequestDto()
  66. {
  67. RegisterCheckId = new Guid("3a11ee70-0351-8970-5bc5-dc0f72e62339"),
  68. Items = new List<GetDiagnosisResultRequest_Item>
  69. {
  70. new GetDiagnosisResultRequest_Item()
  71. {
  72. ItemId = new Guid("3a0c6555-0dad-55b4-b59f-b11e8074cfdd"),
  73. Result = "阳性"
  74. },
  75. new GetDiagnosisResultRequest_Item()
  76. {
  77. ItemId = new Guid("3a0c6558-e2a6-4aab-e6e9-d34957a7c3ed"),
  78. Result = "阴性"
  79. },
  80. new GetDiagnosisResultRequest_Item()
  81. {
  82. ItemId = new Guid("3a0c655a-1fdc-2447-6dc9-d8ec8e110d2e"),
  83. Result = "阳性"
  84. },
  85. new GetDiagnosisResultRequest_Item()
  86. {
  87. ItemId = new Guid("3a0c655c-1c9f-c8c5-150a-59b3cc351472"),
  88. Result = "阴性"
  89. },
  90. new GetDiagnosisResultRequest_Item()
  91. {
  92. ItemId = new Guid("3a0c655d-6ab7-ca7e-3920-3b493ec83192"),
  93. Result = "阳性"
  94. },
  95. }
  96. };
  97. var result = await _appService.GetDiagnosisResultAsync2(getDiagnosisResultRequestDto);
  98. foreach (var item in result.DiagnosisResultDetails)
  99. {
  100. _output.WriteLine(item.DiagnosisResult);
  101. }
  102. }
  103. }
  104. [Fact]
  105. public async Task GetDiagnosisResultAsync4()
  106. {
  107. using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
  108. {
  109. var getDiagnosisResultRequestDto = new GetDiagnosisResultRequestDto()
  110. {
  111. RegisterCheckId = new Guid("3a11ee70-034c-1ce6-40f9-7eabb02830a9"),
  112. Items = new List<GetDiagnosisResultRequest_Item>
  113. {
  114. new GetDiagnosisResultRequest_Item()
  115. {
  116. ItemId = new Guid("3a0d2916-3706-a22a-69dd-bd80be509d07"),
  117. Result = "30.5"
  118. },
  119. new GetDiagnosisResultRequest_Item()
  120. {
  121. ItemId = new Guid("3a0d2919-49d5-30d3-4373-b3dc1e806732"),
  122. Result = "9"
  123. },
  124. new GetDiagnosisResultRequest_Item()
  125. {
  126. ItemId = new Guid("3a0d2917-40e2-2f81-ebfc-267a9a98b02e"),
  127. Result = "91.3"
  128. },
  129. new GetDiagnosisResultRequest_Item()
  130. {
  131. ItemId = new Guid("3a0d291a-6ab5-8642-9cd3-30353ecb5d15"),
  132. Result = "90"
  133. },
  134. new GetDiagnosisResultRequest_Item()
  135. {
  136. ItemId = new Guid("3a0d2918-344b-0373-a53c-b4888bd6b9a6"),
  137. Result = "13"
  138. },
  139. }
  140. };
  141. var result = await _appService.GetDiagnosisResultAsync2(getDiagnosisResultRequestDto);
  142. foreach (var item in result.DiagnosisResultDetails)
  143. {
  144. _output.WriteLine(item.DiagnosisResult);
  145. }
  146. }
  147. }
  148. [Fact]
  149. public async Task GetDiagnosisResultAsync5()
  150. {
  151. using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
  152. {
  153. var getDiagnosisResultRequestDto = new GetDiagnosisResultRequestDto()
  154. {
  155. RegisterCheckId = new Guid("3a11ee70-034c-1ce6-40f9-7eabb02830a9"),
  156. Items = new List<GetDiagnosisResultRequest_Item>
  157. {
  158. new GetDiagnosisResultRequest_Item()
  159. {
  160. ItemId = new Guid("3a0d2916-3706-a22a-69dd-bd80be509d07"),
  161. Result = "30.5"
  162. },
  163. new GetDiagnosisResultRequest_Item()
  164. {
  165. ItemId = new Guid("3a0d2919-49d5-30d3-4373-b3dc1e806732"),
  166. Result = "9"
  167. },
  168. new GetDiagnosisResultRequest_Item()
  169. {
  170. ItemId = new Guid("3a0d2917-40e2-2f81-ebfc-267a9a98b02e"),
  171. Result = "91.3"
  172. },
  173. new GetDiagnosisResultRequest_Item()
  174. {
  175. ItemId = new Guid("3a0d291a-6ab5-8642-9cd3-30353ecb5d15"),
  176. Result = "90"
  177. },
  178. new GetDiagnosisResultRequest_Item()
  179. {
  180. ItemId = new Guid("3a0d2918-344b-0373-a53c-b4888bd6b9a6"),
  181. Result = "13"
  182. },
  183. }
  184. };
  185. var result = await _appService.GetDiagnosisResultAsync2(getDiagnosisResultRequestDto);
  186. foreach (var item in result.DiagnosisResultDetails)
  187. {
  188. _output.WriteLine(item.DiagnosisResult);
  189. }
  190. }
  191. }
  192. /// <summary>
  193. /// 体重指数测试结果
  194. /// </summary>
  195. [Fact]
  196. public void GetItemCalculateResultTzzsTest()
  197. {
  198. PatientItemCalculateInput patient = new PatientItemCalculateInput();
  199. patient.SexName = "男";
  200. patient.Age = 30;
  201. patient.Items = new List<ItemResultInput>()
  202. {
  203. new ItemResultInput()
  204. {
  205. ItemId = Guid.NewGuid(),
  206. ItemName = "身高",
  207. Result = "122"
  208. },
  209. new ItemResultInput()
  210. {
  211. ItemId = Guid.NewGuid(),
  212. ItemName = "体重",
  213. Result = "221"
  214. },
  215. new ItemResultInput()
  216. {
  217. ItemId = Guid.NewGuid(),
  218. ItemName = "体重指数",
  219. }
  220. };
  221. var result = GetItemCalculateResultTzzs(patient);
  222. _output.WriteLine("结果:" + result);
  223. string code = @"
  224. string result = """";
  225. decimal sg = 0;
  226. decimal tz = 0;
  227. foreach (var item in patient.Items)
  228. {
  229. if (item.ItemName == """")
  230. {
  231. if (decimal.TryParse(item.Result, out sg))
  232. {
  233. if (sg == 0)
  234. {
  235. return null;
  236. }
  237. }
  238. else
  239. {
  240. return null;
  241. }
  242. }
  243. if (item.ItemName == """")
  244. {
  245. if (decimal.TryParse(item.Result, out tz))
  246. {
  247. if (tz == 0)
  248. {
  249. return null;
  250. }
  251. }
  252. else
  253. {
  254. return null;
  255. }
  256. }
  257. }
  258. result = (tz /((sg/100) * (sg / 100))).ToString(""0.00"");
  259. return result;
  260. ";
  261. DiagnosisBuilder diagnosisBuilder = new DiagnosisBuilder();
  262. result = diagnosisBuilder.GetItemCalculateResult(patient, code);
  263. _output.WriteLine("动态结果:" + result);
  264. }
  265. /// <summary>
  266. /// 体重指数
  267. /// </summary>
  268. /// <param name="patient"></param>
  269. /// <returns></returns>
  270. public string GetItemCalculateResultTzzs(PatientItemCalculateInput patient)
  271. {
  272. string result = "";
  273. decimal sg = 0;
  274. decimal tz = 0;
  275. foreach (var item in patient.Items)
  276. {
  277. if (item.ItemName == "身高")
  278. {
  279. if (decimal.TryParse(item.Result, out sg))
  280. {
  281. if (sg == 0)
  282. {
  283. return null;
  284. }
  285. }
  286. else
  287. {
  288. return null;
  289. }
  290. }
  291. if (item.ItemName == "体重")
  292. {
  293. if (decimal.TryParse(item.Result, out tz))
  294. {
  295. if (tz == 0)
  296. {
  297. return null;
  298. }
  299. }
  300. else
  301. {
  302. return null;
  303. }
  304. }
  305. }
  306. result = (tz / ((sg / 100) * (sg / 100))).ToString("0.00");
  307. return result;
  308. }
  309. [Fact]
  310. public void GetItemDiagnosisResultXYTest()
  311. {
  312. PatientItemDiagnosisInput patient = new PatientItemDiagnosisInput();
  313. patient.SexName = "男";
  314. patient.Age = 30;
  315. patient.Item = new ItemResultInput()
  316. {
  317. ItemId = Guid.NewGuid(),
  318. ItemName = "血压",
  319. Result = "180/110"
  320. };
  321. var result = GetItemDiagnosisResultXY(patient);
  322. _output.WriteLine("结果:" + result);
  323. string code = @"
  324. string result = """";
  325. decimal szyDecimal = 0;
  326. decimal ssyDecimal = 0;
  327. var itemResult = patient.Item.Result;
  328. if (string.IsNullOrWhiteSpace(itemResult))
  329. {
  330. return null;
  331. }
  332. if (itemResult == ""/"")
  333. return null;
  334. var pos = itemResult.IndexOf(""/"");
  335. var szy = itemResult.Substring(0, pos);
  336. var ssy = itemResult.Substring(pos + 1);
  337. if (!decimal.TryParse(szy, out szyDecimal))
  338. {
  339. return null;
  340. }
  341. if (!decimal.TryParse(ssy, out ssyDecimal))
  342. {
  343. return null;
  344. }
  345. if (szyDecimal > 180 || ssyDecimal > 110)
  346. {
  347. return """";
  348. }
  349. if (szyDecimal > 160 || ssyDecimal > 100)
  350. {
  351. return """";
  352. }
  353. if (szyDecimal > 140 || ssyDecimal > 90)
  354. {
  355. return """";
  356. }
  357. return result;
  358. ";
  359. DiagnosisBuilder diagnosisBuilder = new DiagnosisBuilder();
  360. result = diagnosisBuilder.GetItemDiagnosisResult(patient, code);
  361. _output.WriteLine("动态结果:" + result);
  362. }
  363. /// <summary>
  364. ///
  365. /// </summary>
  366. /// <param name="patient"></param>
  367. /// <returns></returns>
  368. public string GetItemDiagnosisResultXY(PatientItemDiagnosisInput patient)
  369. {
  370. string result = "";
  371. decimal szyDecimal = 0;
  372. decimal ssyDecimal = 0;
  373. var itemResult = patient.Item.Result;
  374. if (string.IsNullOrWhiteSpace(itemResult))
  375. {
  376. return null;
  377. }
  378. if (itemResult == "/")
  379. return null;
  380. var pos = itemResult.IndexOf("/");
  381. var szy = itemResult.Substring(0, pos);
  382. var ssy = itemResult.Substring(pos + 1);
  383. if (!decimal.TryParse(szy, out szyDecimal))
  384. {
  385. return null;
  386. }
  387. if (!decimal.TryParse(ssy, out ssyDecimal))
  388. {
  389. return null;
  390. }
  391. if (szyDecimal > 180 || ssyDecimal > 110)
  392. {
  393. return "Ⅲ级高血压";
  394. }
  395. if (szyDecimal > 160 || ssyDecimal > 100)
  396. {
  397. return "Ⅱ级高血压";
  398. }
  399. if (szyDecimal > 140 || ssyDecimal > 90)
  400. {
  401. return "Ⅰ级高血压";
  402. }
  403. return result;
  404. }
  405. /// <summary>
  406. /// 乙肝五项
  407. /// </summary>
  408. [Fact]
  409. public void GetAsbitemDiagnosisResultYgwxTest()
  410. {
  411. var patient = new PatientAsbitemDiagnosisInput();
  412. patient.SexName = "男";
  413. patient.Age = 30;
  414. patient.Items = new List<ItemResultInput>()
  415. {
  416. new ItemResultInput()
  417. {
  418. ItemId = Guid.NewGuid(),
  419. ItemName = "乙肝表面抗原(HBsAg)",
  420. Result = "阳性"
  421. },
  422. new ItemResultInput()
  423. {
  424. ItemId = Guid.NewGuid(),
  425. ItemName = "乙肝表面抗体(抗-HBs)",
  426. Result = "阴性"
  427. },
  428. new ItemResultInput()
  429. {
  430. ItemId = Guid.NewGuid(),
  431. ItemName = "乙肝e抗原(HBeAg)",
  432. Result = "阳性"
  433. },
  434. new ItemResultInput()
  435. {
  436. ItemId = Guid.NewGuid(),
  437. ItemName = "乙肝e抗体(抗-HBe)",
  438. Result = "阴性"
  439. },
  440. new ItemResultInput()
  441. {
  442. ItemId = Guid.NewGuid(),
  443. ItemName = "乙肝核心抗体(抗-HBc)",
  444. Result = "阳性"
  445. }
  446. };
  447. var result = GetAsbitemDiagnosisResultYgwx(patient);
  448. _output.WriteLine("结果:" + result);
  449. string code = @"
  450. string msg = null;
  451. string result1 = """";
  452. string result2= """";
  453. string result3 = """";
  454. string result4 = """";
  455. string result5 = """";
  456. foreach (var item in patient.Items)
  457. {
  458. if(item.ItemName == ""(HBsAg)"")
  459. {
  460. result1 = item.Result;
  461. }
  462. if (item.ItemName == ""(-HBs)"")
  463. {
  464. result2 = item.Result;
  465. }
  466. if (item.ItemName == ""e抗原(HBeAg)"")
  467. {
  468. result3 = item.Result;
  469. }
  470. if (item.ItemName == ""e抗体(-HBe)"")
  471. {
  472. result4 = item.Result;
  473. }
  474. if (item.ItemName == ""(-HBc)"")
  475. {
  476. result5 = item.Result;
  477. }
  478. }
  479. switch (result1 + "","" + result2 + "","" + result3 + "","" + result4 + "","" + result5)
  480. {
  481. case "",,,,"":
  482. msg = """";
  483. break;
  484. case "",,,,"":
  485. msg = """";
  486. break;
  487. case "",,,,"":
  488. msg = """";
  489. break;
  490. case "",,,,"":
  491. msg = "",,"";
  492. break;
  493. case "",,,,"":
  494. msg = """";
  495. break;
  496. case "",,,,"":
  497. msg = """";
  498. break;
  499. case "",,,,"":
  500. msg = "",,"";
  501. break;
  502. case "",,,,"":
  503. msg = """";
  504. break;
  505. case "",,,,"":
  506. msg = """";
  507. break;
  508. case "",,,,"":
  509. msg = """";
  510. break;
  511. case "",,,,"":
  512. msg = """";
  513. break;
  514. case "",,,,"":
  515. msg = """";
  516. break;
  517. case "",,,,"":
  518. msg = ""e抗体阳性"";
  519. break;
  520. case "",,,,"":
  521. msg = """";
  522. break;
  523. case "",,,,"":
  524. msg = """";
  525. break;
  526. case "",,,,"":
  527. msg = """";
  528. break;
  529. case "",,,,"":
  530. msg = """";
  531. break;
  532. case "",,,,"":
  533. msg = """";
  534. break;
  535. default:
  536. msg = """";
  537. break;
  538. }
  539. return msg;
  540. ";
  541. DiagnosisBuilder diagnosisBuilder = new DiagnosisBuilder();
  542. result = diagnosisBuilder.GetAsbitemDiagnosisResult(patient, code);
  543. _output.WriteLine("动态结果:" + result);
  544. }
  545. public string GetAsbitemDiagnosisResultYgwx(PatientAsbitemDiagnosisInput patient)
  546. {
  547. string msg = null;
  548. string result1 = "";
  549. string result2 = "";
  550. string result3 = "";
  551. string result4 = "";
  552. string result5 = "";
  553. foreach (var item in patient.Items)
  554. {
  555. if (item.ItemName == "乙肝表面抗原(HBsAg)")
  556. {
  557. result1 = item.Result;
  558. }
  559. if (item.ItemName == "乙肝表面抗体(抗-HBs)")
  560. {
  561. result2 = item.Result;
  562. }
  563. if (item.ItemName == "乙肝e抗原(HBeAg)")
  564. {
  565. result3 = item.Result;
  566. }
  567. if (item.ItemName == "乙肝e抗体(抗-HBe)")
  568. {
  569. result4 = item.Result;
  570. }
  571. if (item.ItemName == "乙肝核心抗体(抗-HBc)")
  572. {
  573. result5 = item.Result;
  574. }
  575. }
  576. switch (result1 + "," + result2 + "," + result3 + "," + result4 + "," + result5)
  577. {
  578. case "阳性,阴性,阳性,阴性,阳性":
  579. msg = "乙肝五项检查大三阳";
  580. break;
  581. case "阳性,阴性,阴性,阳性,阳性":
  582. msg = "乙肝五项检查小三阳";
  583. break;
  584. case "阳性,阴性,阳性,阴性,阴性":
  585. msg = "乙肝五项检查第一项,第三项阳性";
  586. break;
  587. case "阴性,阴性,阳性,阳性,阳性":
  588. msg = "乙肝两对半三,四,五阳性";
  589. break;
  590. case "阳性,阴性,阴性,阴性,阳性":
  591. msg = "乙肝五项检查第一项,第五项阳性";
  592. break;
  593. case "阴性,阴性,阴性,阳性,阳性":
  594. msg = "乙肝五项检查第四项,第五项阳性";
  595. break;
  596. case "阳性,阴性,阳性,阳性,阴性":
  597. msg = "乙肝两对半一,三,四阳性";
  598. break;
  599. case "阴性,阴性,阳性,阴性,阳性":
  600. msg = "乙肝五项检查第三项,第五项阳性";
  601. break;
  602. case "阴性,阴性,阴性,阴性,阴性":
  603. msg = "乙肝五项全阴";
  604. break;
  605. case "阴性,阳性,阴性,阴性,阴性":
  606. msg = "乙肝表面抗体阳性";
  607. break;
  608. case "阳性,阴性,阴性,阴性,阴性":
  609. msg = "乙肝表面抗原阳性";
  610. break;
  611. case "阴性,阳性,阴性,阳性,阳性":
  612. msg = "乙肝五项检查第二,第四,第五项阳性";
  613. break;
  614. case "阴性,阴性,阴性,阳性,阴性":
  615. msg = "乙肝e抗体阳性";
  616. break;
  617. case "阳性,阴性,阴性,阳性,阴性":
  618. msg = "乙肝五项检查第一项,第四项阳性";
  619. break;
  620. case "阴性,阳性,阴性,阴性,阳性":
  621. msg = "乙肝五项检查第二项,第五项阳性";
  622. break;
  623. case "阴性,阴性,阴性,阴性,阳性":
  624. msg = "乙肝核心抗体阳性";
  625. break;
  626. case "阴性,弱阳性,阴性,阴性,阴性":
  627. msg = "乙肝表面抗体弱阳性";
  628. break;
  629. case "阴性,弱阳性,阴性,阴性,阳性":
  630. msg = "乙肝五项检查第二项弱阳性,第五项阳性";
  631. break;
  632. default:
  633. msg = "";
  634. break;
  635. }
  636. return msg;
  637. }
  638. }
  639. }