HandleData.java 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package com.jyxt.getdatabyview;
  2. import com.jyxt.getdatabyview.view.repository.IBPSRepository;
  3. import com.jyxt.getdatabyview.view.repository.LISViewRepository;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.beans.factory.annotation.Value;
  8. import org.springframework.stereotype.Component;
  9. import java.util.*;
  10. @Component
  11. public class HandleData {
  12. private static final Logger log = LoggerFactory.getLogger(GetDataByViewApplication.class);
  13. @Autowired
  14. private LISViewRepository lisViewRepository;
  15. @Autowired
  16. private IBPSRepository ibpsRepository;
  17. private static final String RESULT_DELIMITER = "\\^";
  18. private static final List<String> qualityIndicatorList = Collections.unmodifiableList(
  19. Arrays.asList(
  20. "总标本不合格率", // 0
  21. "抗凝标本凝集率", // 1
  22. "标本类型错误率", // 2
  23. "标本容器错误率", // 3
  24. "标本溶血率", // 4
  25. "标本采集量错误率", // 5
  26. "急诊常规实验室内TAT中位数", // 6
  27. "急诊生化免疫实验室内TAT中位数", // 7
  28. "急诊凝血实验室内TAT中位数", // 8
  29. "急诊血常规检验前周转时间中位数", // 9
  30. "急诊血常规实验室内周转时间中位数", // 10
  31. "常规检验报告发放TAT时间符合率", // 11
  32. "检验报告不正确率", // 12
  33. "危急值通报率", // 13
  34. "危急值通报及时率", // 14
  35. "标本合格率", // 15
  36. "TAT时间合格率", // 16
  37. "报告准确率", // 17
  38. "危急值通报符合率" // 18
  39. )
  40. );
  41. public void startHandleData(String pingjiaId,String zhiliangzhibia,String bianzhishijian, String yuanshishuju) {
  42. if (qualityIndicatorList.contains(zhiliangzhibia)){
  43. // System.out.println(output);
  44. log.info("ID: {}, zhiliangzhibia: {}, bianzhishijian: {}", pingjiaId, zhiliangzhibia, bianzhishijian);
  45. int QIIndex = qualityIndicatorList.indexOf(zhiliangzhibia);
  46. String DataDetail = "";
  47. String dateRange = DateRangeUtil.getDateRange(bianzhishijian);
  48. String[] resultParts = lisViewRepository.query(QIIndex,dateRange).split(RESULT_DELIMITER);
  49. // String[] resultParts = new String[] {"", "", ""};
  50. // if (pingjiaId.equals("1367710945618427904")) {
  51. // resultParts = new String[] {"100", "10000", "10000"};
  52. // }
  53. String resultValue = resultParts[0];
  54. if (resultValue.startsWith(".")) {
  55. resultValue = "0" + resultValue;
  56. }
  57. String IsQualified = null;
  58. if ((!Objects.equals(resultValue, ""))){
  59. IsQualified = ValueEvaluator.evaluateValue(resultValue,yuanshishuju);
  60. }
  61. //总数统计
  62. if (resultParts.length==2){
  63. String total = resultParts[1];
  64. if ((!Objects.equals(resultValue, ""))&&(!Objects.equals(resultValue,null))&&(!Objects.equals(resultValue,"-1"))) {
  65. // System.out.println("output:"+ResultValue);
  66. log.info("Get LIS RetVal:{},zhiliangzhibiao:{},bianzhishijian:{}",resultParts,zhiliangzhibia,bianzhishijian);
  67. if (QIIndex==6){
  68. DataDetail = "同期临检(住院)及临检(门诊)的三大常规(血、尿、便)标本共 "+resultParts[1]+" 例";
  69. } else if (QIIndex==7){
  70. DataDetail = "同期临检急诊组的急诊生化、免疫标本共 "+resultParts[1]+" 例";
  71. } else if (QIIndex==8){
  72. DataDetail = "同期临检(住院)及临检(门诊) 的急诊血凝标本共 "+resultParts[1]+" 例";
  73. } else if ((QIIndex==9)||(QIIndex==10)){
  74. DataDetail = "同期临检(住院)及临检(门诊) 的急诊血常规标本共 "+resultParts[1]+" 例";
  75. }
  76. // qualityIndicatorRepository.save(pingjiaId, resultValue,total,DataDetail,IsQualified);
  77. //分子不需要整数
  78. //ibpsRepository.save(pingjiaId, resultValue,resultValue,DataDetail,IsQualified);
  79. }
  80. } else if (resultParts.length==3){
  81. String numerator = resultParts[1];
  82. String denominator = resultParts[2];
  83. if ((!Objects.equals(resultValue, ""))&&(!Objects.equals(resultValue,null))&&(!Objects.equals(resultValue,"-1"))){
  84. log.info("Get LIS RetVal:{},zhiliangzhibiao:{},bianzhishijian:{}",resultParts,zhiliangzhibia,bianzhishijian);
  85. if (QIIndex==0){
  86. DataDetail = "不合格标本数 "+resultParts[1]+" 例,同期标本总数 "+resultParts[2]+" 例";
  87. } else if (QIIndex==1){
  88. DataDetail = "凝集的标本数 "+resultParts[1]+" 例,同期需抗凝的标本总数 "+resultParts[2]+" 例";
  89. } else if (QIIndex==2){
  90. DataDetail = "类型错误或不适当的标本数 "+resultParts[1]+" 例,同期标本总数 "+resultParts[2]+" 例";
  91. } else if (QIIndex==3){
  92. DataDetail = "采集容器错误的标本数 "+resultParts[1]+" 例,同期标本总数 "+resultParts[2]+" 例";
  93. } else if (QIIndex==4){
  94. DataDetail = "溶血的标本 "+resultParts[1]+" 例,同期标本总数 "+resultParts[2]+" 例";
  95. } else if (QIIndex==5){
  96. DataDetail = "量不足或过多(抗凝标本)的标本数 "+resultParts[1]+" 例,同期标本总数 "+resultParts[2]+" 例";
  97. } else if (QIIndex==12){
  98. DataDetail = "实验室发出的不正确报告数 "+resultParts[1]+" 例,报告总数 "+resultParts[2]+" 例";
  99. } else if (QIIndex==13){
  100. DataDetail = "已通报危急值数 "+resultParts[1]+" 例,同期需要通报危急值总数 "+resultParts[2]+" 例";
  101. } else if (QIIndex==14){
  102. DataDetail = "危急值通报时间(从结果确认到与临床医生交流的时间)满足规定时间的检验项目数 "+resultParts[1]+" 例,同期需要危急值通报的检验项目总数 "+resultParts[2]+" 例";
  103. } else if (QIIndex==15){
  104. DataDetail = "全年合格标本总数 "+resultParts[1]+" 例,全年标本总数 "+resultParts[2]+" 例";
  105. } else if (QIIndex==17){
  106. DataDetail = "实验室发出的正确报告数 "+resultParts[1]+" 例,同期实验室发出报告总数 "+resultParts[2]+" 例";
  107. } else if (QIIndex==18){
  108. DataDetail = "危急值通报时间(从结果确认到与临床医生交流的时间)满足规定时间的检验项目数 "+resultParts[1]+" 例,同期需要危急值通报的检验项目总数 "+resultParts[2]+" 例";
  109. }
  110. //ibpsRepository.save(pingjiaId,resultValue,numerator,denominator,DataDetail,IsQualified);
  111. }
  112. } else {
  113. log.info("no result to save:zhiliangzhibiao:{},bianzhishijian:{}",zhiliangzhibia,bianzhishijian);
  114. }
  115. }
  116. }
  117. }