|
@@ -12,11 +12,13 @@ import thyyxxk.webserver.entity.dictionary.SearchDataParam;
|
|
|
import thyyxxk.webserver.service.yibao.DictionaryService;
|
|
|
import thyyxxk.webserver.utils.ExcelUtil;
|
|
|
import thyyxxk.webserver.utils.ResultVoUtil;
|
|
|
+import thyyxxk.webserver.utils.SiUtil;
|
|
|
import thyyxxk.webserver.utils.StringUtil;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Queue;
|
|
|
|
|
|
/**
|
|
|
* @author dj
|
|
@@ -126,93 +128,34 @@ public class SheetSearchService {
|
|
|
* 2. NO41表以CSV文件格式提取,并按季度上传数据。单个上传文件上限为5万条病例数,如果数据量过大,也可按月度上传数据。(文件命名格式:“医疗机构名称_201901.csv”);
|
|
|
* 3. 报送规范以《长株潭数据报送标准-附件1、2》为准,相关编码要按照贯标后报送,疾病编码、手术编码要按照医保编码2.0目录报送,AKC190、AKB020作为唯一联合主键。
|
|
|
* */
|
|
|
- public void fetchStatisticsBySeason(HttpServletResponse response, String season) {
|
|
|
- String begntime, endtime;
|
|
|
- switch (season) {
|
|
|
- case "2019S1":
|
|
|
- begntime = "2019-01-01 00:00:00";
|
|
|
- endtime = "2019-03-31 23:59:59";
|
|
|
- break;
|
|
|
- case "2019S2":
|
|
|
- begntime = "2019-04-01 00:00:00";
|
|
|
- endtime = "2019-06-30 23:59:59";
|
|
|
- break;
|
|
|
- case "2019S3":
|
|
|
- begntime = "2019-07-01 00:00:00";
|
|
|
- endtime = "2019-09-30 23:59:59";
|
|
|
- break;
|
|
|
- case "2019S4":
|
|
|
- begntime = "2019-10-01 00:00:00";
|
|
|
- endtime = "2019-12-31 23:59:59";
|
|
|
- break;
|
|
|
- case "2020S1":
|
|
|
- begntime = "2020-01-01 00:00:00";
|
|
|
- endtime = "2020-03-31 23:59:59";
|
|
|
- break;
|
|
|
- case "2020S2":
|
|
|
- begntime = "2020-04-01 00:00:00";
|
|
|
- endtime = "2020-06-30 23:59:59";
|
|
|
- break;
|
|
|
- case "2020S3":
|
|
|
- begntime = "2020-07-01 00:00:00";
|
|
|
- endtime = "2020-09-30 23:59:59";
|
|
|
- break;
|
|
|
- case "2020S4":
|
|
|
- begntime = "2020-10-01 00:00:00";
|
|
|
- endtime = "2020-12-31 23:59:59";
|
|
|
- break;
|
|
|
- case "2021S1":
|
|
|
- begntime = "2021-01-01 00:00:00";
|
|
|
- endtime = "2021-03-31 23:59:59";
|
|
|
- break;
|
|
|
- case "2021S2":
|
|
|
- begntime = "2021-04-01 00:00:00";
|
|
|
- endtime = "2021-06-30 23:59:59";
|
|
|
- break;
|
|
|
- case "2021S3":
|
|
|
- begntime = "2021-07-01 00:00:00";
|
|
|
- endtime = "2021-09-30 23:59:59";
|
|
|
- break;
|
|
|
- default:
|
|
|
- begntime = "2021-10-01 00:00:00";
|
|
|
- endtime = "2021-12-31 23:59:59";
|
|
|
- break;
|
|
|
- }
|
|
|
- List<StatisticsBySeason> list = dao.selectStatisticsBySeason(begntime, endtime);
|
|
|
- list.removeIf(itm -> StringUtil.isBlank(itm.getJBDM()));
|
|
|
- if (season.equals("2021S4")) {
|
|
|
- list.removeIf(itm -> !itm.getSFZH().startsWith("4301"));
|
|
|
+ public void fetchStatisticsBySeason(HttpServletResponse response) {
|
|
|
+ Queue<String> queue = SiUtil.readTxtFile("D:\\disdiagwrong.txt");
|
|
|
+ if (null == queue) {
|
|
|
+ log.info("读取文本为空!");
|
|
|
+ return;
|
|
|
}
|
|
|
-
|
|
|
- String[] title = {"AKC190", "AKB020", "USERNAME", "ZYCS", "BAH", "XM", "XB", "CSRQ", "NL", "GJ", "XSECSTZ",
|
|
|
- "XSERYTZ", "SFZH", "ZY", "HY", "RYSJ", "CYSJ", "SJZYTS", "ZYZD", "JBDM", "LYFS", "ZFY" };
|
|
|
- String[][] content = new String[list.size()][];
|
|
|
- for (int i = 0; i < list.size(); i++) {
|
|
|
- content[i] = new String[title.length];
|
|
|
- StatisticsBySeason result = list.get(i);
|
|
|
- content[i][0] = result.getAKC190();
|
|
|
- content[i][1] = result.getAKB020();
|
|
|
- content[i][2] = result.getUSERNAME();
|
|
|
- content[i][3] = result.getZYCS();
|
|
|
- content[i][4] = result.getBAH();
|
|
|
- content[i][5] = result.getXM();
|
|
|
- content[i][6] = result.getXB();
|
|
|
- content[i][7] = result.getCSRQ();
|
|
|
- content[i][8] = result.getNL();
|
|
|
- content[i][9] = result.getGJ();
|
|
|
- content[i][10] = result.getXSECSTZ();
|
|
|
- content[i][11] = result.getXSERYTZ();
|
|
|
- content[i][12] = result.getSFZH();
|
|
|
- content[i][13] = result.getZY();
|
|
|
- content[i][14] = result.getHY();
|
|
|
- content[i][15] = result.getRYSJ();
|
|
|
- content[i][16] = result.getCYSJ();
|
|
|
- content[i][17] = result.getSJZYTS();
|
|
|
- content[i][18] = result.getZYZD();
|
|
|
- content[i][19] = result.getJBDM();
|
|
|
- content[i][20] = result.getLYFS();
|
|
|
- content[i][21] = result.getZFY();
|
|
|
+ log.info("读取文本共 {} 行", queue.size());
|
|
|
+ String[][] content = new String[queue.size()][];
|
|
|
+ String[] title = {"patNo", "times", "diag" };
|
|
|
+ int column = 0;
|
|
|
+ int count = 0;
|
|
|
+ while (!queue.isEmpty()) {
|
|
|
+ String info = queue.poll();
|
|
|
+ String[] ifs = info.split("\t");
|
|
|
+ PureCodeName codeName = dao.selectMainDisDiag(ifs[1], ifs[2]);
|
|
|
+ String medinsDiag = dao.selectMedinsDiagByName(codeName.getName());
|
|
|
+ log.info("解析:{}, {}, {}, {}, {}", ifs[1], ifs[2], codeName.getCode(), codeName.getName(), medinsDiag);
|
|
|
+ if (StringUtil.notBlank(medinsDiag)) {
|
|
|
+ count += 1;
|
|
|
+ ifs[3] = medinsDiag;
|
|
|
+ }
|
|
|
+ content[column] = new String[title.length];
|
|
|
+ content[column][0] = ifs[1];
|
|
|
+ content[column][1] = ifs[2];
|
|
|
+ content[column][2] = ifs[3];
|
|
|
+ column += 1;
|
|
|
}
|
|
|
+ log.info("处理共 {} 条", count);
|
|
|
ExcelUtil.exportExcel(response, title, content);
|
|
|
}
|
|
|
}
|