123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- package thyyxxk.webserver.service.casefrontsheet;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import thyyxxk.webserver.dao.his.casefrontsheet.SheetSearchDao;
- import thyyxxk.webserver.entity.ResultVo;
- import thyyxxk.webserver.entity.casefrontsheet.StatisticsBySeason;
- import thyyxxk.webserver.entity.dictionary.PureCodeName;
- 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.StringUtil;
- import javax.servlet.http.HttpServletResponse;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * @author dj
- */
- @Slf4j
- @Service
- public class SheetSearchService {
- private final SheetSearchDao dao;
- private final DictionaryService service;
- @Autowired
- public SheetSearchService(SheetSearchDao dao, DictionaryService service) {
- this.dao = dao;
- this.service = service;
- }
- public ResultVo<List<PureCodeName>> sheetSearch(SearchDataParam param) {
- final String content = '%' + param.getContent().toUpperCase() + '%';
- switch (param.getTarget()) {
- case "surgery":
- return ResultVoUtil.success(searchSurgery(param.getMethod(), content, param.getPage() - 1));
- case "pathologicDiag":
- return ResultVoUtil.success(searchPathologicDiag(param.getMethod(), content, param.getPage() - 1));
- case "place":
- return ResultVoUtil.success(searchBirthPlace(param.getMethod(), content, param.getPage() - 1));
- case "normalDiag":
- case "clinicdiag":
- return ResultVoUtil.success(searchClinicdiag(param.getMethod(), content, param.getPage() - 1));
- case "hurtReason":
- return ResultVoUtil.success(searchHurtReason(param.getMethod(), content, param.getPage() - 1));
- case "employee":
- return ResultVoUtil.success(searchEmployee(param.getMethod(), content, param.getPage() - 1));
- case "diag":
- return service.searchYbDiag(param);
- default:
- return ResultVoUtil.success(new ArrayList<>());
- }
- }
- private List<PureCodeName> searchSurgery(String method, String content, int page) {
- if (method.equals("alpha")) {
- method = "py_code";
- } else if (method.equals("code")) {
- method = "surgical_operation_code";
- } else {
- method = "operation_operation_name";
- }
- return dao.searchSurgery(method, content, page);
- }
- private List<PureCodeName> searchClinicdiag(String method, String content, int page) {
- if (method.equals("alpha")) {
- method = "py_code";
- }
- return dao.searchClinicdiag(method, content, page);
- }
- private List<PureCodeName> searchPathologicDiag(String method, String content, int page) {
- if (method.equals("alpha")) {
- method = "PY_CODE";
- } else if (method.equals("code")) {
- method = "CODE";
- } else {
- method = "NAME";
- }
- return dao.searchPathologicDiag(method, content, page);
- }
- private List<PureCodeName> searchBirthPlace(String method, String content, int page) {
- if (method.equals("alpha")) {
- method = "py_code";
- }
- return dao.searchBirthPlace(method, content, page);
- }
- private List<PureCodeName> searchHurtReason(String method, String content, int page) {
- if (method.equals("alpha")) {
- method = "py_code";
- }
- return dao.searchHurtReason(method, content, page);
- }
- private List<PureCodeName> searchEmployee(String method, String content, int page) {
- if (method.equals("alpha")) {
- method = "py_code";
- }
- return dao.searchEmployee(method, content, page);
- }
- /**
- * 1. 报送范围为出院日期在2019年1月1日—2021年12月31日,包括城镇职工、城乡居民基本医疗保险病人的住院数据(排除全自费、异地就医、工伤、生育保险类住院数据);
- * 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"));
- }
- 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();
- }
- ExcelUtil.exportExcel(response, title, content);
- }
- }
|