DataQualityStatisticsEndPoint.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. package com.yihu.ehr.analyze.controller.dataQuality;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.yihu.ehr.analyze.service.dataQuality.DataQualityStatisticsService;
  6. import com.yihu.ehr.analyze.service.dataQuality.WarningProblemService;
  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.util.datetime.DateTimeUtil;
  11. import com.yihu.ehr.util.rest.Envelop;
  12. import io.swagger.annotations.Api;
  13. import io.swagger.annotations.ApiOperation;
  14. import io.swagger.annotations.ApiParam;
  15. import org.apache.commons.collections.map.HashedMap;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.beans.factory.annotation.Value;
  18. import org.springframework.http.MediaType;
  19. import org.springframework.web.bind.annotation.RequestMapping;
  20. import org.springframework.web.bind.annotation.RequestMethod;
  21. import org.springframework.web.bind.annotation.RequestParam;
  22. import org.springframework.web.bind.annotation.RestController;
  23. import java.util.*;
  24. /**
  25. * @author yeshijie on 2018/6/1.
  26. */
  27. @RestController
  28. @RequestMapping(value = ApiVersion.Version1_0, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
  29. @Api(value = "DataQualityStatisticsEndPoint", description = "质控-统计", tags = {"档案分析服务-质控-统计"})
  30. public class DataQualityStatisticsEndPoint extends EnvelopRestEndPoint {
  31. @Value("${quality.orgCode}")
  32. private String defaultQualityOrgCode;
  33. @Value("${quality.cloud}")
  34. private String defaultCloud;
  35. @Autowired
  36. private DataQualityStatisticsService dataQualityStatisticsService;
  37. @Autowired
  38. private WarningProblemService warningProblemService;
  39. @RequestMapping(value = ServiceApi.DataQuality.QualityMonitorProvincePlatform, method = RequestMethod.GET)
  40. @ApiOperation(value = "质量监控查询--省平台上传")
  41. public Envelop provincePaltformUpload(
  42. @ApiParam(name = "start", value = "开始时间")
  43. @RequestParam(value = "start", required = false) String start,
  44. @ApiParam(name = "end", value = "结束时间", defaultValue = "")
  45. @RequestParam(value = "end", required = false) String end,
  46. @ApiParam(name = "toPlatForm", value = "上传目标平台", defaultValue = "")
  47. @RequestParam(value = "toPlatForm", required = false) String toPlatForm) throws Exception {
  48. Envelop envelop = new Envelop();
  49. try {
  50. return success(dataQualityStatisticsService.findUploadStatistics(start,end,toPlatForm));
  51. }catch (Exception e){
  52. e.printStackTrace();
  53. envelop.setSuccessFlg(false);
  54. envelop.setErrorMsg(e.getMessage());
  55. }
  56. return envelop;
  57. }
  58. @RequestMapping(value = ServiceApi.DataQuality.QualityMonitoringList, method = RequestMethod.GET)
  59. @ApiOperation(value = "质量监控查询--平台接收")
  60. public Envelop qualityMonitoringList(
  61. @ApiParam(name = "start", value = "开始时间")
  62. @RequestParam(value = "start", required = false) String start,
  63. @ApiParam(name = "end", value = "结束时间", defaultValue = "")
  64. @RequestParam(value = "end", required = false) String end,
  65. @ApiParam(name = "eventType", value = "就诊类型 0门诊 1住院 2体检,null全部", defaultValue = "")
  66. @RequestParam(value = "eventType", required = false) Integer eventType) throws Exception {
  67. Envelop envelop = new Envelop();
  68. try {
  69. return success(dataQualityStatisticsService.dataset(start, end, eventType));
  70. }catch (Exception e){
  71. e.printStackTrace();
  72. envelop.setSuccessFlg(false);
  73. envelop.setErrorMsg(e.getMessage());
  74. }
  75. return envelop;
  76. }
  77. @RequestMapping(value = ServiceApi.DataQuality.ReceptionList, method = RequestMethod.GET)
  78. @ApiOperation(value = "质量监控查询--接收情况")
  79. public Envelop receptionList(
  80. @ApiParam(name = "start", value = "开始时间")
  81. @RequestParam(value = "start", required = false) String start,
  82. @ApiParam(name = "end", value = "结束时间", defaultValue = "")
  83. @RequestParam(value = "end", required = false) String end) throws Exception {
  84. Envelop envelop = new Envelop();
  85. try {
  86. return success(dataQualityStatisticsService.inTimeAndIntegrityRate(start,end));
  87. }catch (Exception e){
  88. e.printStackTrace();
  89. envelop.setSuccessFlg(false);
  90. envelop.setErrorMsg(e.getMessage());
  91. }
  92. return envelop;
  93. }
  94. @RequestMapping(value = ServiceApi.DataQuality.ReceivedPacketNumList, method = RequestMethod.GET)
  95. @ApiOperation(value = "及时/完整采集的档案包数量集合")
  96. public Envelop receivedPacketNumList(
  97. @ApiParam(name = "pageIndex", value = "第几页", required = true)
  98. @RequestParam(name = "pageIndex") Integer pageIndex,
  99. @ApiParam(name = "pageSize", value = "每页数", required = true)
  100. @RequestParam(name = "pageSize") Integer pageSize,
  101. @ApiParam(name = "type", value = "类型,1及时率,2完整率", required = false)
  102. @RequestParam(name = "type") String type,
  103. @ApiParam(name = "orgCode", value = "机构编码", required = true)
  104. @RequestParam(name = "orgCode") String orgCode,
  105. @ApiParam(name = "eventDateStart", value = "就诊时间(起始),格式 yyyy-MM-dd", required = true)
  106. @RequestParam(name = "eventDateStart") String eventDateStart,
  107. @ApiParam(name = "eventDateEnd", value = "就诊时间(截止),格式 yyyy-MM-dd", required = true)
  108. @RequestParam(name = "eventDateEnd") String eventDateEnd,
  109. @ApiParam(name = "eventType", value = "就诊类型,0门诊、1住院、2体检,不传则查全部就诊类型的")
  110. @RequestParam(name = "eventType", required = false) Integer eventType) {
  111. Envelop envelop = new Envelop();
  112. try {
  113. Map<String,Object> re = dataQualityStatisticsService.receivedPacketNumList(pageIndex, pageSize, orgCode, eventDateStart, eventDateEnd, eventType);
  114. List<Map<String, Object>> resultList = (List<Map<String, Object>>)re.get("list");
  115. int count = Integer.valueOf(re.get("count").toString());
  116. return getPageResult(resultList, count, pageIndex, pageSize);
  117. }catch (Exception e){
  118. e.printStackTrace();
  119. envelop.setSuccessFlg(false);
  120. envelop.setErrorMsg(e.getMessage());
  121. }
  122. return envelop;
  123. }
  124. @RequestMapping(value = ServiceApi.DataQuality.ReceivedPacketReportData, method = RequestMethod.GET)
  125. @ApiOperation(value = "档案包接收情况报告数据接口")
  126. public Envelop receivedPacketReportData(
  127. @ApiParam(name = "reporter", value = "报告人", required = true)
  128. @RequestParam(name = "reporter") String reporter,
  129. @ApiParam(name = "orgInfoList", value = "机构编码、名称,例:[{\"orgName\":\"xx\",\"orgCode\":\"jkzl\"}]。", required = true)
  130. @RequestParam(name = "orgInfoList") String orgInfoList,
  131. @ApiParam(name = "eventDateStart", value = "就诊时间(起始),格式 yyyy-MM-dd", required = true)
  132. @RequestParam(name = "eventDateStart") String eventDateStart,
  133. @ApiParam(name = "eventDateEnd", value = "就诊时间(截止),格式 yyyy-MM-dd", required = true)
  134. @RequestParam(name = "eventDateEnd") String eventDateEnd) throws Exception {
  135. Envelop envelop = new Envelop();
  136. try{
  137. eventDateStart = eventDateStart + " 00:00:00";
  138. eventDateEnd = eventDateEnd + " 23:59:59";
  139. Map<String, Object> resultMap = new HashMap<>();
  140. JSONArray jsonArray = JSON.parseArray(orgInfoList);
  141. List<Map<String, String>> list = new ArrayList<>();
  142. for(int i=0;i<jsonArray.size();i++){
  143. JSONObject json = jsonArray.getJSONObject(i);
  144. Map<String, String> map = new HashedMap();
  145. map.put("orgCode",json.getString("orgCode"));
  146. map.put("orgName",json.getString("orgName"));
  147. list.add(map);
  148. }
  149. // 接收档案包总量
  150. Long receivedCount = dataQualityStatisticsService.packetCount(list, null, eventDateStart, eventDateEnd);
  151. // 成功解析档案包总量
  152. Long successfulAnalysisCount = dataQualityStatisticsService.packetCount(list, "3", eventDateStart, eventDateEnd);
  153. // 机构档案包报告汇总
  154. List<Map<String, Object>> orgPackReportDataList = dataQualityStatisticsService.orgPackReportData(list, eventDateStart, eventDateEnd);
  155. resultMap.put("searchedDateRange", eventDateStart.replace("-", "") + "-" + eventDateEnd.replace("-", ""));
  156. resultMap.put("reportDate", DateTimeUtil.simpleDateFormat(new Date()));
  157. resultMap.put("reporter", reporter);
  158. resultMap.put("receivedCount", receivedCount);
  159. resultMap.put("successfulAnalysisCount", successfulAnalysisCount);
  160. resultMap.put("orgPackReportDataList", orgPackReportDataList);
  161. return success(resultMap);
  162. }catch (Exception e){
  163. e.printStackTrace();
  164. envelop.setSuccessFlg(false);
  165. envelop.setErrorMsg(e.getMessage());
  166. }
  167. return envelop;
  168. }
  169. @RequestMapping(value = ServiceApi.DataQuality.ReceiveDataset, method = RequestMethod.GET)
  170. @ApiOperation(value = "档案包接收情况报告数据接口")
  171. public Envelop receiveDataset(
  172. @ApiParam(name = "orgCode", value = "机构编码", required = true)
  173. @RequestParam(name = "orgCode") String orgCode,
  174. @ApiParam(name = "date", value = "时间 - 精确到天yyyy-MM-dd", required = true)
  175. @RequestParam(name = "date") String date,
  176. @ApiParam(name = "page", value = "页码", required = true)
  177. @RequestParam(name = "page") Integer page,
  178. @ApiParam(name = "size", value = "页数", required = true)
  179. @RequestParam(name = "size") Integer size) throws Exception {
  180. List<Map<String, Object>> list = warningProblemService.receiveDataset(orgCode, date);
  181. Envelop envelop = new Envelop();
  182. envelop.setSuccessFlg(true);
  183. envelop.setCurrPage(page);
  184. envelop.setPageSize(size);
  185. envelop.setTotalPage(list.size() % size > 0 ? list.size() / size + 1 : list.size() / size);
  186. envelop.setTotalCount(list.size());
  187. List result = new ArrayList();
  188. for (int i = (page - 1) * size; i < page * size; i ++) {
  189. if (i > list.size() - 1) {
  190. break;
  191. }
  192. result.add(list.get(i));
  193. }
  194. envelop.setDetailModelList(result);
  195. return envelop;
  196. }
  197. @RequestMapping(value = ServiceApi.DataQuality.uploadRecordDetail, method = RequestMethod.GET)
  198. @ApiOperation(value = "【上传统计】-- 获取上传档案统计数据")
  199. public Envelop uploadRecordList(
  200. @ApiParam(name = "startDate", value = "开始日期")
  201. @RequestParam(name = "startDate") String startDate,
  202. @ApiParam(name = "endDate", value = "结束日期")
  203. @RequestParam(name = "endDate") String endDate,
  204. @ApiParam(name = "orgCode", value = "医院代码")
  205. @RequestParam(name = "orgCode", required = false) String orgCode) throws Exception {
  206. Envelop envelop = new Envelop();
  207. List<Map<String, Object>> list = dataQualityStatisticsService.getUploadSuccessList(startDate, endDate, orgCode);
  208. envelop.setSuccessFlg(true);
  209. envelop.setDetailModelList(list);
  210. return envelop;
  211. }
  212. @RequestMapping(value = ServiceApi.DataQuality.uploadRecordDetailPage, method = RequestMethod.GET)
  213. @ApiOperation(value = "【上传统计】-- 获取上传档案统计数据")
  214. public Envelop uploadRecordListPage(
  215. @ApiParam(name = "startDate", value = "开始日期")
  216. @RequestParam(name = "startDate") String startDate,
  217. @ApiParam(name = "endDate", value = "结束日期")
  218. @RequestParam(name = "endDate") String endDate,
  219. @ApiParam(name = "orgCode", value = "医院代码")
  220. @RequestParam(name = "orgCode", required = false) String orgCode,
  221. @ApiParam(name = "size", value = "分页大小", defaultValue = "15")
  222. @RequestParam(value = "size", required = false) int size,
  223. @ApiParam(name = "page", value = "页码", defaultValue = "1")
  224. @RequestParam(value = "page", required = false) int page) throws Exception {
  225. return dataQualityStatisticsService.getUploadSuccessListPage(startDate, endDate, orgCode,size,page);
  226. }
  227. @RequestMapping(value = ServiceApi.DataQuality.UploadDataSetList, method = RequestMethod.GET)
  228. @ApiOperation(value = "【上传统计】-- 获取上传数据集统计数据")
  229. public Envelop uploadDataSetList(
  230. @ApiParam(name = "startDate", value = "开始日期")
  231. @RequestParam(name = "startDate") String startDate,
  232. @ApiParam(name = "endDate", value = "结束日期")
  233. @RequestParam(name = "endDate") String endDate,
  234. @ApiParam(name = "orgCode", value = "医院代码")
  235. @RequestParam(name = "orgCode", required = false) String orgCode) throws Exception {
  236. Envelop envelop = new Envelop();
  237. List<Map<String, Object>> list = dataQualityStatisticsService.getUploadDataSetList(startDate, endDate, orgCode);
  238. envelop.setSuccessFlg(true);
  239. envelop.setDetailModelList(list);
  240. return envelop;
  241. }
  242. @RequestMapping(value = ServiceApi.DataQuality.UploadDataSetListPage, method = RequestMethod.GET)
  243. @ApiOperation(value = "【上传统计】-- 获取上传数据集统计数据")
  244. public Envelop uploadDataSetListPage(
  245. @ApiParam(name = "startDate", value = "开始日期")
  246. @RequestParam(name = "startDate") String startDate,
  247. @ApiParam(name = "endDate", value = "结束日期")
  248. @RequestParam(name = "endDate") String endDate,
  249. @ApiParam(name = "orgCode", value = "医院代码")
  250. @RequestParam(name = "orgCode", required = false) String orgCode,
  251. @ApiParam(name = "size", value = "分页大小", defaultValue = "15")
  252. @RequestParam(value = "size", required = false) int size,
  253. @ApiParam(name = "page", value = "页码", defaultValue = "1")
  254. @RequestParam(value = "page", required = false) int page) throws Exception {
  255. return dataQualityStatisticsService.getUploadDataSetListPage(startDate,endDate,orgCode,size,page);
  256. }
  257. @RequestMapping(value = ServiceApi.DataQuality.UploadErrorList, method = RequestMethod.GET)
  258. @ApiOperation(value = "【上传统计】-- 获取上传失败档案统计数据")
  259. public Envelop uploadErrorList(
  260. @ApiParam(name = "startDate", value = "开始日期")
  261. @RequestParam(name = "startDate") String startDate,
  262. @ApiParam(name = "endDate", value = "结束日期")
  263. @RequestParam(name = "endDate") String endDate,
  264. @ApiParam(name = "orgCode", value = "医院代码")
  265. @RequestParam(name = "orgCode", required = false) String orgCode) throws Exception {
  266. Envelop envelop = new Envelop();
  267. List<Map<String, Object>> list = dataQualityStatisticsService.getUploadErrorList(startDate, endDate, orgCode);
  268. envelop.setSuccessFlg(true);
  269. envelop.setDetailModelList(list);
  270. return envelop;
  271. }
  272. @RequestMapping(value = ServiceApi.DataQuality.UploadErrorListPage, method = RequestMethod.GET)
  273. @ApiOperation(value = "【上传统计】-- 获取上传失败档案统计数据")
  274. public Envelop uploadErrorListPage(
  275. @ApiParam(name = "startDate", value = "开始日期")
  276. @RequestParam(name = "startDate") String startDate,
  277. @ApiParam(name = "endDate", value = "结束日期")
  278. @RequestParam(name = "endDate") String endDate,
  279. @ApiParam(name = "orgCode", value = "医院代码")
  280. @RequestParam(name = "orgCode", required = false) String orgCode,
  281. @ApiParam(name = "size", value = "分页大小", defaultValue = "15")
  282. @RequestParam(value = "size", required = false) int size,
  283. @ApiParam(name = "page", value = "页码", defaultValue = "1")
  284. @RequestParam(value = "page", required = false) int page) throws Exception {
  285. return dataQualityStatisticsService.getUploadErrorListPage(startDate, endDate, orgCode,size,page);
  286. }
  287. }