PackQcReportEndPoint.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412
  1. package com.yihu.ehr.analyze.controller;
  2. import com.yihu.ehr.analyze.feign.HosAdminServiceClient;
  3. import com.yihu.ehr.analyze.model.AdapterDatasetModel;
  4. import com.yihu.ehr.analyze.model.AdapterMetadataModel;
  5. import com.yihu.ehr.analyze.service.dataQuality.DqDatasetWarningService;
  6. import com.yihu.ehr.analyze.service.pack.PackQcReportService;
  7. import com.yihu.ehr.constants.ApiVersion;
  8. import com.yihu.ehr.constants.ServiceApi;
  9. import com.yihu.ehr.controller.EnvelopRestEndPoint;
  10. import com.yihu.ehr.elasticsearch.ElasticSearchUtil;
  11. import com.yihu.ehr.entity.quality.DqDatasetWarning;
  12. import com.yihu.ehr.model.quality.MProfileInfo;
  13. import com.yihu.ehr.redis.client.RedisClient;
  14. import com.yihu.ehr.util.rest.Envelop;
  15. import io.swagger.annotations.Api;
  16. import io.swagger.annotations.ApiOperation;
  17. import io.swagger.annotations.ApiParam;
  18. import org.apache.commons.lang.StringUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.beans.factory.annotation.Value;
  21. import org.springframework.data.domain.Page;
  22. import org.springframework.http.ResponseEntity;
  23. import org.springframework.web.bind.annotation.RequestMapping;
  24. import org.springframework.web.bind.annotation.RequestMethod;
  25. import org.springframework.web.bind.annotation.RequestParam;
  26. import org.springframework.web.bind.annotation.RestController;
  27. import java.util.*;
  28. /**
  29. * @Author: zhengwei
  30. * @Date: 2018/5/31 16:20
  31. * @Description: 质控报表
  32. */
  33. @RestController
  34. @RequestMapping(ApiVersion.Version1_0)
  35. @Api(value = "PackQcReportEndPoint", description = "档案分析服务", tags = {"档案分析服务-新质控管理报表"})
  36. public class PackQcReportEndPoint extends EnvelopRestEndPoint {
  37. @Autowired
  38. private PackQcReportService packQcReportService;
  39. @Autowired
  40. private DqDatasetWarningService dqDatasetWarningService;
  41. @Autowired
  42. private ElasticSearchUtil elasticSearchUtil;
  43. @Autowired
  44. private HosAdminServiceClient hosAdminServiceClient;
  45. @Value("${quality.cloud}")
  46. private String cloud;
  47. @Autowired
  48. private RedisClient redisClient;
  49. @RequestMapping(value = ServiceApi.PackQcReport.dailyReport, method = RequestMethod.GET)
  50. @ApiOperation(value = "获取医院数据")
  51. public Envelop dailyReport(
  52. @ApiParam(name = "startDate", value = "开始日期")
  53. @RequestParam(name = "startDate") String startDate,
  54. @ApiParam(name = "endDate", value = "结束日期")
  55. @RequestParam(name = "endDate") String endDate,
  56. @ApiParam(name = "orgCode", value = "医院代码", required = false)
  57. @RequestParam(name = "orgCode") String orgCode) throws Exception {
  58. return packQcReportService.dailyReport(startDate, endDate, orgCode);
  59. }
  60. @RequestMapping(value = ServiceApi.PackQcReport.datasetWarningList, method = RequestMethod.GET)
  61. @ApiOperation(value = "预警数据集列表")
  62. public Envelop datasetWarningList(
  63. @ApiParam(name = "orgCode", value = "机构编码")
  64. @RequestParam(name = "orgCode", required = false) String orgCode,
  65. @ApiParam(name = "type", value = "类型(1平台接收,2平台上传)")
  66. @RequestParam(name = "type") String type,
  67. @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
  68. @RequestParam(value = "page") int page,
  69. @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
  70. @RequestParam(value = "size") int size) {
  71. Envelop envelop = new Envelop();
  72. try {
  73. String filters = "type=" + type;
  74. if (!StringUtils.isEmpty(orgCode)&&!cloud.equals(orgCode)) {
  75. filters += ";orgCode=" + orgCode;
  76. }
  77. List<DqDatasetWarning> list = dqDatasetWarningService.search(null, filters, "", page, size);
  78. int count = (int) dqDatasetWarningService.getCount(filters);
  79. envelop = getPageResult(list, count, page, size);
  80. } catch (Exception e) {
  81. e.printStackTrace();
  82. envelop.setSuccessFlg(false);
  83. envelop.setErrorMsg(e.getMessage());
  84. }
  85. return envelop;
  86. }
  87. @RequestMapping(value = ServiceApi.PackQcReport.resourceSuccess, method = RequestMethod.GET)
  88. @ApiOperation(value = "资源化成功的计数统计")
  89. public Envelop resourceSuccess(
  90. @ApiParam(name = "startDate", value = "开始日期")
  91. @RequestParam(name = "startDate") String startDate,
  92. @ApiParam(name = "endDate", value = "结束日期")
  93. @RequestParam(name = "endDate") String endDate,
  94. @ApiParam(name = "orgCode", value = "医院代码")
  95. @RequestParam(name = "orgCode", required = false) String orgCode) throws Exception {
  96. return packQcReportService.resourceSuccess(startDate, endDate, orgCode);
  97. }
  98. @RequestMapping(value = ServiceApi.PackQcReport.resourceSuccessPage, method = RequestMethod.GET)
  99. @ApiOperation(value = "资源化成功的计数统计(分页)")
  100. public Envelop resourceSuccessPage(
  101. @ApiParam(name = "startDate", value = "开始日期")
  102. @RequestParam(name = "startDate") String startDate,
  103. @ApiParam(name = "endDate", value = "结束日期")
  104. @RequestParam(name = "endDate") String endDate,
  105. @ApiParam(name = "orgCode", value = "医院代码")
  106. @RequestParam(name = "orgCode", required = false) String orgCode,
  107. @ApiParam(name = "size", value = "分页大小", defaultValue = "15")
  108. @RequestParam(value = "size", required = false) int size,
  109. @ApiParam(name = "page", value = "页码", defaultValue = "1")
  110. @RequestParam(value = "page", required = false) int page) throws Exception {
  111. return packQcReportService.resourceSuccess(startDate, endDate, orgCode,size,page);
  112. }
  113. @RequestMapping(value = ServiceApi.PackQcReport.archiveReport, method = RequestMethod.GET)
  114. @ApiOperation(value = "获取接收档案数据")
  115. public Envelop archiveReport(
  116. @ApiParam(name = "startDate", value = "开始日期")
  117. @RequestParam(name = "startDate") String startDate,
  118. @ApiParam(name = "endDate", value = "结束日期")
  119. @RequestParam(name = "endDate") String endDate,
  120. @ApiParam(name = "orgCode", value = "医院代码")
  121. @RequestParam(name = "orgCode", required = false) String orgCode) throws Exception {
  122. return packQcReportService.archiveReport(startDate, endDate, orgCode);
  123. }
  124. @RequestMapping(value = ServiceApi.PackQcReport.dataSetList, method = RequestMethod.GET)
  125. @ApiOperation(value = "获取接收数据集列表")
  126. public Envelop dataSetList(
  127. @ApiParam(name = "startDate", value = "开始日期")
  128. @RequestParam(name = "startDate") String startDate,
  129. @ApiParam(name = "endDate", value = "结束日期")
  130. @RequestParam(name = "endDate") String endDate,
  131. @ApiParam(name = "orgCode", value = "医院代码")
  132. @RequestParam(name = "orgCode", required = false) String orgCode) throws Exception {
  133. return packQcReportService.dataSetList(startDate, endDate, orgCode);
  134. }
  135. @RequestMapping(value = ServiceApi.PackQcReport.dataSetListPage, method = RequestMethod.GET)
  136. @ApiOperation(value = "获取接收数据集列表")
  137. public Envelop dataSetListPage(
  138. @ApiParam(name = "startDate", value = "开始日期")
  139. @RequestParam(name = "startDate") String startDate,
  140. @ApiParam(name = "endDate", value = "结束日期")
  141. @RequestParam(name = "endDate") String endDate,
  142. @ApiParam(name = "orgCode", value = "医院代码")
  143. @RequestParam(name = "orgCode", required = false) String orgCode,
  144. @ApiParam(name = "size", value = "分页大小", defaultValue = "15")
  145. @RequestParam(value = "size", required = false) int size,
  146. @ApiParam(name = "page", value = "页码", defaultValue = "1")
  147. @RequestParam(value = "page", required = false) int page) throws Exception {
  148. return packQcReportService.getDataSetListPage(startDate, endDate, orgCode,size,page);
  149. }
  150. @RequestMapping(value = ServiceApi.PackQcReport.archiveFailed, method = RequestMethod.GET)
  151. @ApiOperation(value = "获取资源化解析失败")
  152. public Envelop archiveFailed(
  153. @ApiParam(name = "startDate", value = "开始日期")
  154. @RequestParam(name = "startDate") String startDate,
  155. @ApiParam(name = "endDate", value = "结束日期")
  156. @RequestParam(name = "endDate") String endDate,
  157. @ApiParam(name = "orgCode", value = "医院代码")
  158. @RequestParam(name = "orgCode", required = false) String orgCode) throws Exception {
  159. return packQcReportService.archiveFailed(startDate, endDate, orgCode);
  160. }
  161. @RequestMapping(value = ServiceApi.PackQcReport.archiveFailedPage, method = RequestMethod.GET)
  162. @ApiOperation(value = "获取资源化解析失败")
  163. public Envelop archiveFailedPage(
  164. @ApiParam(name = "startDate", value = "开始日期")
  165. @RequestParam(name = "startDate") String startDate,
  166. @ApiParam(name = "endDate", value = "结束日期")
  167. @RequestParam(name = "endDate") String endDate,
  168. @ApiParam(name = "orgCode", value = "医院代码")
  169. @RequestParam(name = "orgCode", required = false) String orgCode,
  170. @ApiParam(name = "size", value = "分页大小", defaultValue = "15")
  171. @RequestParam(value = "size", required = false) int size,
  172. @ApiParam(name = "page", value = "页码", defaultValue = "1")
  173. @RequestParam(value = "page", required = false) int page) throws Exception {
  174. return packQcReportService.archiveFailed(startDate, endDate, orgCode,size,page);
  175. }
  176. @RequestMapping(value = ServiceApi.PackQcReport.metadataError, method = RequestMethod.GET)
  177. @ApiOperation(value = "获取解析异常")
  178. public Envelop metadataError(
  179. @ApiParam(name = "step", value = "异常环节")
  180. @RequestParam(name = "step") String step,
  181. @ApiParam(name = "startDate", value = "开始日期")
  182. @RequestParam(name = "startDate") String startDate,
  183. @ApiParam(name = "endDate", value = "结束日期")
  184. @RequestParam(name = "endDate") String endDate,
  185. @ApiParam(name = "orgCode", value = "医院代码")
  186. @RequestParam(name = "orgCode", required = false) String orgCode) throws Exception {
  187. return packQcReportService.metadataError(step, startDate, endDate, orgCode);
  188. }
  189. @RequestMapping(value = ServiceApi.PackQcReport.metadataErrorPage, method = RequestMethod.GET)
  190. @ApiOperation(value = "获取解析异常")
  191. public Envelop metadataErrorPage(
  192. @ApiParam(name = "step", value = "异常环节")
  193. @RequestParam(name = "step") String step,
  194. @ApiParam(name = "startDate", value = "开始日期")
  195. @RequestParam(name = "startDate") String startDate,
  196. @ApiParam(name = "endDate", value = "结束日期")
  197. @RequestParam(name = "endDate") String endDate,
  198. @ApiParam(name = "orgCode", value = "医院代码")
  199. @RequestParam(name = "orgCode", required = false) String orgCode,
  200. @ApiParam(name = "size", value = "分页大小", defaultValue = "15")
  201. @RequestParam(value = "size", required = false) int size,
  202. @ApiParam(name = "page", value = "页码", defaultValue = "1")
  203. @RequestParam(value = "page", required = false) int page) throws Exception {
  204. return packQcReportService.metadataError(step, startDate, endDate, orgCode,size,page);
  205. }
  206. @RequestMapping(value = ServiceApi.PackQcReport.analyzeErrorList, method = RequestMethod.GET)
  207. @ApiOperation(value = "解析失败问题查询")
  208. public Envelop analyzeErrorList(
  209. @ApiParam(name = "filters", value = "过滤")
  210. @RequestParam(value = "filters", required = false) String filters,
  211. @ApiParam(name = "sorts", value = "排序")
  212. @RequestParam(value = "sorts", required = false) String sorts,
  213. @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
  214. @RequestParam(value = "page") int page,
  215. @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
  216. @RequestParam(value = "size") int size) throws Exception {
  217. if (StringUtils.isNotEmpty(filters)) {
  218. filters = "analyze_status=2||archive_status=2;" + filters;
  219. } else {
  220. filters = "analyze_status=2||archive_status=2";
  221. }
  222. Page<Map<String, Object>> result = packQcReportService.analyzeErrorList(filters, sorts, page, size);
  223. Envelop envelop = getPageResult(result.getContent(), (int)result.getTotalElements(), page, size);
  224. return envelop;
  225. }
  226. @RequestMapping(value = ServiceApi.PackQcReport.metadataErrorList, method = RequestMethod.GET)
  227. @ApiOperation(value = "异常数据元列表")
  228. public Envelop metadataErrorList(
  229. @ApiParam(name = "filters", value = "过滤")
  230. @RequestParam(value = "filters", required = false) String filters,
  231. @ApiParam(name = "sorts", value = "排序")
  232. @RequestParam(value = "sorts", required = false) String sorts,
  233. @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
  234. @RequestParam(value = "page") int page,
  235. @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
  236. @RequestParam(value = "size") int size) throws Exception {
  237. Page<Map<String, Object>> result = packQcReportService.metadataErrorList(filters, sorts, page, size);
  238. Envelop envelop = getPageResult(result.getContent(), (int)result.getTotalElements(), page, size);
  239. return envelop;
  240. }
  241. @RequestMapping(value = ServiceApi.PackQcReport.metadataErrorDetail, method = RequestMethod.GET)
  242. @ApiOperation(value = "异常数据元详情")
  243. public Envelop metadataErrorDetail(
  244. @ApiParam(name = "id", value = "主键", required = true)
  245. @RequestParam(value = "id") String id) throws Exception {
  246. Envelop envelop = packQcReportService.metadataErrorDetail(id);
  247. return envelop;
  248. }
  249. @RequestMapping(value = ServiceApi.PackQcReport.archiveList, method = RequestMethod.GET)
  250. @ApiOperation(value = "档案包列表")
  251. public Envelop archiveList(
  252. @ApiParam(name = "filters", value = "过滤")
  253. @RequestParam(value = "filters", required = false) String filters,
  254. @ApiParam(name = "sorts", value = "排序")
  255. @RequestParam(value = "sorts", required = false) String sorts,
  256. @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
  257. @RequestParam(value = "page") int page,
  258. @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
  259. @RequestParam(value = "size") int size) throws Exception {
  260. // if(StringUtils.isNotEmpty(filters)){
  261. // filters="archive_status=3;"+filters;
  262. // }else{
  263. // filters="archive_status=3";
  264. // }
  265. Page<Map<String, Object>> result = packQcReportService.archiveList(filters, sorts, page, size);
  266. Envelop envelop = getPageResult(result.getContent(), (int)result.getTotalElements(), page, size);
  267. return envelop;
  268. }
  269. @RequestMapping(value = ServiceApi.PackQcReport.archiveDetail, method = RequestMethod.GET)
  270. @ApiOperation(value = "档案详情")
  271. public Envelop archiveDetail(
  272. @ApiParam(name = "id", value = "主键", required = true)
  273. @RequestParam(value = "id") String id) throws Exception {
  274. Envelop envelop = packQcReportService.archiveDetail(id);
  275. return envelop;
  276. }
  277. @RequestMapping(value = ServiceApi.PackQcReport.uploadRecordList, method = RequestMethod.GET)
  278. @ApiOperation(value = "上传记录列表")
  279. public Envelop uploadRecordList(
  280. @ApiParam(name = "filters", value = "过滤")
  281. @RequestParam(value = "filters", required = false) String filters,
  282. @ApiParam(name = "sorts", value = "排序")
  283. @RequestParam(value = "sorts", required = false) String sorts,
  284. @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
  285. @RequestParam(value = "page") int page,
  286. @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
  287. @RequestParam(value = "size") int size) throws Exception {
  288. Page<Map<String, Object>> result = packQcReportService.uploadRecordList(filters, sorts, page, size);
  289. Envelop envelop = getPageResult(result.getContent(), (int)result.getTotalElements(), page, size);
  290. return envelop;
  291. }
  292. @RequestMapping(value = ServiceApi.PackQcReport.uploadRecordDetail, method = RequestMethod.GET)
  293. @ApiOperation(value = "上传记录详情")
  294. public Envelop uploadRecordDetail(
  295. @ApiParam(name = "id", value = "主键", required = true)
  296. @RequestParam(value = "id") String id) throws Exception {
  297. Envelop envelop = packQcReportService.uploadRecordDetail(id);
  298. return envelop;
  299. }
  300. @RequestMapping(value = "/packQcReport/adapterDatasetList", method = RequestMethod.GET)
  301. @ApiOperation(value = "上传数据集列表")
  302. public Envelop adapterDatasetList(
  303. @ApiParam(name = "version", value = "版本号")
  304. @RequestParam(value = "version", required = true) String version,
  305. @ApiParam(name = "filters", value = "过滤")
  306. @RequestParam(value = "filters", required = false) String filters,
  307. @ApiParam(name = "sorts", value = "排序")
  308. @RequestParam(value = "sorts", required = false) String sorts,
  309. @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
  310. @RequestParam(value = "page") int page,
  311. @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
  312. @RequestParam(value = "size") int size){
  313. if(StringUtils.isNotEmpty(filters)){
  314. filters="needCrawer=1;"+filters;
  315. }else{
  316. filters="needCrawer=1;";
  317. }
  318. ResponseEntity<Collection<AdapterDatasetModel>> res = hosAdminServiceClient.adapterDatasetList(version, null, filters , sorts ,page, size);
  319. List<AdapterDatasetModel> list = (List<AdapterDatasetModel>)res.getBody();
  320. int totalCount = getTotalCount(res);
  321. return getPageResult(list,totalCount,page,size);
  322. }
  323. @RequestMapping(value = "/packQcReport/adapterMetadataList", method = RequestMethod.GET)
  324. @ApiOperation(value = "上传数据元列表")
  325. public Envelop adapterMetadataList(
  326. @ApiParam(name = "version", value = "版本号")
  327. @RequestParam(value = "version", required = true) String version,
  328. @ApiParam(name = "filters", value = "过滤")
  329. @RequestParam(value = "filters", required = false) String filters,
  330. @ApiParam(name = "sorts", value = "排序")
  331. @RequestParam(value = "sorts", required = false) String sorts,
  332. @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
  333. @RequestParam(value = "page") int page,
  334. @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
  335. @RequestParam(value = "size") int size){
  336. if(StringUtils.isNotEmpty(filters)){
  337. filters="needCrawer=1;"+filters;
  338. }else{
  339. filters="needCrawer=1;";
  340. }
  341. ResponseEntity<Collection<AdapterMetadataModel>> res = hosAdminServiceClient.adapterMetadataList(version, null, filters , sorts ,page, size);
  342. List<AdapterMetadataModel> list = (List<AdapterMetadataModel>)res.getBody();
  343. int totalCount = getTotalCount(res);
  344. return getPageResult(list,totalCount,page,size);
  345. }
  346. @RequestMapping(value = "/packQcReport/datasetDetail", method = RequestMethod.GET)
  347. @ApiOperation(value = "抽取数据集")
  348. public Envelop datasetDetail(
  349. @ApiParam(name = "date", value = "日期", required = true)
  350. @RequestParam(value = "date") String date) throws Exception {
  351. Envelop envelop = packQcReportService.datasetDetail(date);
  352. return envelop;
  353. }
  354. @RequestMapping(value = "/packQcReport/setStartTime", method = RequestMethod.GET)
  355. @ApiOperation(value = "设置抽取时间")
  356. public Envelop setStartTime(
  357. @ApiParam(name = "date", value = "日期", required = true)
  358. @RequestParam(value = "date") String date) throws Exception {
  359. Envelop envelop = new Envelop();
  360. redisClient.set("start_date",date);
  361. envelop.setSuccessFlg(true);
  362. return envelop;
  363. }
  364. @RequestMapping(value = "/packQcReport/getProfileInfo", method = RequestMethod.GET)
  365. @ApiOperation(value = "设置抽取时间")
  366. public Envelop getProfileInfo(@ApiParam(name = "startDate", value = "就诊开始日期")
  367. @RequestParam(name = "startDate") String startDate,
  368. @ApiParam(name = "endDate", value = "就诊结束日期")
  369. @RequestParam(name = "endDate") String endDate,
  370. @ApiParam(name = "orgCode", value = "医院代码")
  371. @RequestParam(name = "orgCode", required = false) String orgCode) throws Exception {
  372. List<MProfileInfo> profileInfo = packQcReportService.getProfileInfo(startDate, endDate, orgCode);
  373. Envelop envelop = new Envelop();
  374. envelop.setSuccessFlg(true);
  375. envelop.setDetailModelList(profileInfo);
  376. return envelop;
  377. }
  378. }