JwSmjkService.java 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727
  1. package com.yihu.figure.service.jw;
  2. import com.fasterxml.jackson.databind.ObjectMapper;
  3. import com.yihu.figure.model.dict.SystemDict;
  4. import com.yihu.figure.service.dict.SystemDictService;
  5. import com.yihu.figure.util.DateUtil;
  6. import com.yihu.figure.util.HttpClientUtil;
  7. import org.apache.commons.lang3.StringUtils;
  8. import org.apache.http.NameValuePair;
  9. import org.apache.http.message.BasicNameValuePair;
  10. import org.json.JSONArray;
  11. import org.json.JSONObject;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.beans.factory.annotation.Value;
  14. import org.springframework.stereotype.Service;
  15. import java.util.ArrayList;
  16. import java.util.HashMap;
  17. import java.util.List;
  18. import java.util.Map;
  19. /**
  20. * Created by hzp on 2016/11/14.
  21. * 基卫健康市民健康服务
  22. */
  23. @Service
  24. public class JwSmjkService {
  25. //基卫服务地址
  26. @Value("${jiwei.url}")
  27. private String jwUrl;
  28. @Autowired
  29. private ObjectMapper objectMapper = new ObjectMapper();
  30. @Autowired
  31. private SystemDictService systemDictService;
  32. /****************************************************************************************************************************/
  33. /**
  34. * 获取门/急诊记录 + 住院记录
  35. */
  36. public String getResidentEventListJson(String strSSID, String type, String page, String pageSize) {
  37. String re = "";
  38. try {
  39. String url = jwUrl + "/third/smjk/ResidentEventList";
  40. List<NameValuePair> params = new ArrayList<>();
  41. params.add(new BasicNameValuePair("strSSID", strSSID));
  42. if (!StringUtils.isEmpty(type)) {
  43. params.add(new BasicNameValuePair("type", type));
  44. }
  45. params.add(new BasicNameValuePair("page", page));
  46. params.add(new BasicNameValuePair("pageSize", pageSize));
  47. String response = HttpClientUtil.post(url, params, "UTF-8");
  48. if (!StringUtils.isEmpty(response)) {
  49. JSONObject responseObject = new JSONObject(response);
  50. int status = responseObject.getInt("status");
  51. if (status == 200) {
  52. String data = responseObject.getString("data");
  53. if (!StringUtils.isEmpty(data) && data.startsWith("error")) {
  54. throw new Exception(data);
  55. } else {
  56. JSONObject jsonData = new JSONObject(data);
  57. Integer count = jsonData.getJSONArray("EventCount").getJSONObject(0).getInt("COUNT");
  58. if (count <= Integer.valueOf(pageSize)) {
  59. JSONArray jsonArray = jsonData.getJSONArray("EventList");
  60. re = jsonArray.toString();
  61. }else{
  62. re=getResidentEventListJson(strSSID,type,page,count+"");
  63. }
  64. }
  65. } else {
  66. throw new Exception(responseObject.getString("msg"));
  67. }
  68. } else {
  69. throw new Exception("null response.");
  70. }
  71. } catch (Exception ex) {
  72. ex.printStackTrace();
  73. }
  74. if (re.equals("[{}]")) {
  75. re = "";
  76. }
  77. return re;
  78. }
  79. /**
  80. * 通过event获取档案类型列表
  81. */
  82. public String getEventCatalog(String strSSID, String strEvent) {
  83. try {
  84. String url = jwUrl + "/third/smjk/EventCatalog";
  85. List<NameValuePair> params = new ArrayList<>();
  86. params.add(new BasicNameValuePair("strSSID", strSSID));
  87. params.add(new BasicNameValuePair("strEvent", strEvent));
  88. String response = HttpClientUtil.post(url, params, "UTF-8");
  89. String result = "";
  90. if (!StringUtils.isEmpty(response)) {
  91. JSONObject jsonObject = new JSONObject(response);
  92. int status = jsonObject.getInt("status");
  93. if (status == 200) {
  94. result = jsonObject.getString("data");
  95. } else {
  96. throw new Exception(jsonObject.getString("msg"));
  97. }
  98. } else {
  99. throw new Exception("null response.");
  100. }
  101. return result;
  102. } catch (Exception ex) {
  103. ex.printStackTrace();
  104. return "";
  105. }
  106. }
  107. /**
  108. * 获取健康档案信息详情
  109. */
  110. public String getHealthData(String strSSID, String strEvent, String strCatalog, String strSerial) {
  111. try {
  112. String url = jwUrl + "/third/smjk/HealthData";
  113. List<NameValuePair> params = new ArrayList<>();
  114. params.add(new BasicNameValuePair("strSSID", strSSID));
  115. params.add(new BasicNameValuePair("strEvent", strEvent));
  116. params.add(new BasicNameValuePair("strCatalog", strCatalog));
  117. params.add(new BasicNameValuePair("strSerial", strSerial));
  118. String response = HttpClientUtil.post(url, params, "UTF-8");
  119. String result = "";
  120. if (!StringUtils.isEmpty(response)) {
  121. JSONObject jsonObject = new JSONObject(response);
  122. int status = jsonObject.getInt("status");
  123. if (status == 200) {
  124. result = jsonObject.getString("data");
  125. result = result.replaceAll("<\\?xml version=\"1.0\" encoding=\"utf-8\"\\?>", "");
  126. if (result.startsWith("error")) {
  127. throw new Exception(result);
  128. }
  129. } else {
  130. throw new Exception(jsonObject.getString("msg"));
  131. }
  132. } else {
  133. throw new Exception("null response.");
  134. }
  135. return result;
  136. } catch (Exception ex) {
  137. ex.printStackTrace();
  138. return "";
  139. }
  140. }
  141. /**
  142. * 获取检查检验列表
  143. */
  144. public String getExamAndLabReport(String strSSID, String page, String pageSize) {
  145. try {
  146. String url = jwUrl + "/third/smjk/ExamAndLabReport";
  147. List<NameValuePair> params = new ArrayList<>();
  148. params.add(new BasicNameValuePair("strSSID", strSSID));
  149. params.add(new BasicNameValuePair("page", page));
  150. params.add(new BasicNameValuePair("pageSize", pageSize));
  151. String response = HttpClientUtil.post(url, params, "UTF-8");
  152. String re = "";
  153. if (!StringUtils.isEmpty(response)) {
  154. JSONObject jsonObject = new JSONObject(response);
  155. int status = jsonObject.getInt("status");
  156. if (status == 200) {
  157. String data = jsonObject.getString("data");
  158. if (!StringUtils.isEmpty(data) && data.startsWith("error")) {
  159. throw new Exception(data);
  160. } else {
  161. JSONObject jsonData = new JSONObject(data);
  162. Integer count = jsonData.getJSONArray("EhrCount").getJSONObject(0).getInt("COUNT");
  163. if (count <= Integer.valueOf(pageSize)) {
  164. JSONArray jsonArray = jsonData.getJSONArray("EhrList");
  165. re = jsonArray.toString();
  166. }else{
  167. re=getExamAndLabReport(strSSID,page,count+"");
  168. }
  169. }
  170. } else {
  171. throw new Exception(jsonObject.getString("msg"));
  172. }
  173. } else {
  174. throw new Exception("null response.");
  175. }
  176. if (re.equals("[{}]")) {
  177. re = "";
  178. }
  179. return re;
  180. } catch (Exception ex) {
  181. ex.printStackTrace();
  182. return "";
  183. }
  184. }
  185. /**
  186. * 获取用药列表
  187. */
  188. public String getDrugsListPage(String strSSID, String page, String pageSize) throws Exception {
  189. String url = jwUrl + "/third/smjk/DrugsListPage";
  190. List<NameValuePair> params = new ArrayList<>();
  191. params.add(new BasicNameValuePair("strSSID", strSSID));
  192. params.add(new BasicNameValuePair("page", page));
  193. params.add(new BasicNameValuePair("pageSize", pageSize));
  194. String response = HttpClientUtil.post(url, params, "UTF-8");
  195. String result = "";
  196. if (!StringUtils.isEmpty(response)) {
  197. JSONObject jsonObject = new JSONObject(response);
  198. int status = jsonObject.getInt("status");
  199. if (status == 200) {
  200. result = jsonObject.getString("data");
  201. } else {
  202. throw new Exception(jsonObject.getString("msg"));
  203. }
  204. } else {
  205. throw new Exception("null response.");
  206. }
  207. if (result.equals("[{}]")) {
  208. result = "";
  209. }
  210. return result;
  211. }
  212. /****************************************************************************************************************************/
  213. /**
  214. * (内网)获取转诊预约医生号源信息
  215. */
  216. public String getRegDeptSpeDoctorSectionList(String OrgCode, String DeptCode, String strStart, String strEnd, String DocCode) throws Exception {
  217. String re = "";
  218. String url = jwUrl + "/third/smjk/RegDeptSpeDoctorSectionList";
  219. List<NameValuePair> params = new ArrayList<>();
  220. params.add(new BasicNameValuePair("OrgCode", OrgCode));
  221. params.add(new BasicNameValuePair("DeptCode", DeptCode));
  222. params.add(new BasicNameValuePair("strStart", strStart));
  223. params.add(new BasicNameValuePair("strEnd", strEnd));
  224. params.add(new BasicNameValuePair("DocCode", DocCode));
  225. String response = HttpClientUtil.post(url, params, "UTF-8");
  226. if (!StringUtils.isEmpty(response)) {
  227. JSONObject jsonObject = new JSONObject(response);
  228. int status = jsonObject.getInt("status");
  229. if (status == 200) {
  230. String data = jsonObject.getString("data");
  231. if (!StringUtils.isEmpty(data) && (data.startsWith("error") || data.startsWith("System-Error"))) {
  232. throw new Exception(data);
  233. } else {
  234. re = data;
  235. }
  236. } else {
  237. throw new Exception(jsonObject.getString("msg"));
  238. }
  239. } else {
  240. throw new Exception("null response.");
  241. }
  242. return re;
  243. }
  244. /**
  245. * (内网)预约挂号接口
  246. */
  247. public String webRegisterByFamily(String idcard, String patientName, String ssid, String sectionType, String startTime, String orgCode, String deptCode, String deptName, String doctorCode, String doctorName, String patientPhone) throws Exception {
  248. String re = "";
  249. String url = jwUrl + "/third/smjk/WebRegisterByFamily";
  250. List<NameValuePair> params = new ArrayList<>();
  251. params.add(new BasicNameValuePair("idcard", idcard));
  252. params.add(new BasicNameValuePair("patientName", patientName));
  253. params.add(new BasicNameValuePair("ssid", ssid));
  254. params.add(new BasicNameValuePair("sectionType", sectionType));
  255. params.add(new BasicNameValuePair("startTime", startTime));
  256. params.add(new BasicNameValuePair("orgCode", orgCode));
  257. params.add(new BasicNameValuePair("deptCode", deptCode));
  258. params.add(new BasicNameValuePair("deptName", deptName));
  259. params.add(new BasicNameValuePair("doctorCode", doctorCode));
  260. params.add(new BasicNameValuePair("doctorName", doctorName));
  261. params.add(new BasicNameValuePair("patientPhone", patientPhone));
  262. String response = HttpClientUtil.post(url, params, "UTF-8");
  263. if (!StringUtils.isEmpty(response)) {
  264. JSONObject jsonObject = new JSONObject(response);
  265. int status = jsonObject.getInt("status");
  266. if (status == 200) {
  267. String data = jsonObject.getString("data");
  268. if (!StringUtils.isEmpty(data) && (data.startsWith("error") || data.startsWith("System-Error"))) {
  269. throw new Exception(data);
  270. } else {
  271. re = data;
  272. }
  273. } else {
  274. throw new Exception(jsonObject.getString("msg"));
  275. }
  276. } else {
  277. throw new Exception("null response.");
  278. }
  279. //返回挂号单
  280. return re;
  281. }
  282. /*************************************** 旧版本函数 *************************************************************************/
  283. /**
  284. * 获取住院记录(X)
  285. */
  286. public String getHospitalizationRecord(String strSSID, String startNum, String endNum) throws Exception {
  287. String startDate = "1900-01-01";
  288. String endDate = DateUtil.dateToStr(DateUtil.getNowDate(), DateUtil.YYYY_MM_DD);
  289. String url = jwUrl + "/third/smjk/InpatientRecord";
  290. List<NameValuePair> params = new ArrayList<>();
  291. params.add(new BasicNameValuePair("strSSID", strSSID));
  292. params.add(new BasicNameValuePair("startDate", startDate));
  293. params.add(new BasicNameValuePair("endDate", endDate));
  294. params.add(new BasicNameValuePair("startNum", startNum));
  295. params.add(new BasicNameValuePair("endNum", endNum));
  296. String response = HttpClientUtil.post(url, params, "UTF-8");
  297. JSONArray resultArray = new JSONArray();
  298. List<SystemDict> systemDictList = systemDictService.getDictByDictName("EHR_CATALOG");
  299. Map<String, String> systemDictMap = new HashMap<>();
  300. for (SystemDict systemDict : systemDictList) {
  301. systemDictMap.put(systemDict.getCode(), systemDict.getValue());
  302. }
  303. if (!StringUtils.isEmpty(response)) {
  304. JSONObject responseObject = new JSONObject(response);
  305. int status = responseObject.getInt("status");
  306. if (status == 200) {
  307. String data = responseObject.getString("data");
  308. if (!StringUtils.isEmpty(data)) {
  309. if (data.startsWith("error")) {
  310. return data;
  311. }
  312. JSONObject jsonData = new JSONObject(data);
  313. JSONArray jsonArray = jsonData.getJSONArray("EhrList");
  314. if (!jsonArray.isNull(0) && jsonArray.getJSONObject(0).length() != 0) {
  315. Map<String, JSONObject> jsonObjectMap = new HashMap<>();
  316. for (int i = 0; i < jsonArray.length(); i++) {
  317. JSONObject jsonObject = jsonArray.getJSONObject(i);
  318. String patientId = jsonObject.getString("XMAN_ID");
  319. String eventNo = jsonObject.getString("EVENT");
  320. Integer orgId = jsonObject.getInt("ORG_ID");
  321. String key = patientId + eventNo + orgId;
  322. JSONObject catalogObject = new JSONObject();
  323. String catalogCode = jsonObject.get("CATALOG_CODE").toString();
  324. String endTimeNew = jsonObject.get("END_TIME").toString();
  325. String catalogValue = systemDictMap.get(catalogCode);
  326. jsonObject.remove("CATALOG_CODE");
  327. if (jsonObjectMap.containsKey(key)) {
  328. jsonObject = jsonObjectMap.get(key);
  329. String endTimeOld = jsonObject.get("END_TIME").toString();
  330. if (endTimeNew.compareTo(endTimeOld) < 0) {
  331. endTimeNew = endTimeOld;
  332. }
  333. catalogObject = jsonObject.getJSONObject("CATALOG");
  334. }
  335. catalogObject.put(catalogCode, catalogValue);
  336. jsonObject.put("CATALOG", catalogObject);
  337. jsonObject.put("END_TIME", endTimeNew);
  338. jsonObjectMap.put(key, jsonObject);
  339. }
  340. for (String key : jsonObjectMap.keySet()) {
  341. resultArray.put(jsonObjectMap.get(key));
  342. }
  343. JSONObject temp;
  344. for (int i = 0; i < resultArray.length(); i++) {
  345. for (int j = i + 1; j < resultArray.length(); j++) {
  346. String endTimeNew = resultArray.getJSONObject(j).get("END_TIME").toString();
  347. String endTimeOld = resultArray.getJSONObject(i).get("END_TIME").toString();
  348. if (endTimeNew.compareTo(endTimeOld) > 0) {
  349. temp = resultArray.getJSONObject(i);
  350. resultArray.put(i, resultArray.getJSONObject(j));
  351. resultArray.put(j, temp); // 两个数交换位置
  352. }
  353. }
  354. }
  355. }
  356. }
  357. }
  358. }
  359. return resultArray.toString();
  360. }
  361. /**
  362. * 获取门/急诊记录(X)
  363. */
  364. public String getOutpatientRecord(String strSSID, String startNum, String endNum) throws Exception {
  365. String startDate = "1900-01-01";
  366. String endDate = DateUtil.dateToStr(DateUtil.getNowDate(), DateUtil.YYYY_MM_DD);
  367. String url = jwUrl + "/third/smjk/OutpatientRecord";
  368. List<NameValuePair> params = new ArrayList<>();
  369. params.add(new BasicNameValuePair("strSSID", strSSID));
  370. params.add(new BasicNameValuePair("startDate", startDate));
  371. params.add(new BasicNameValuePair("endDate", endDate));
  372. params.add(new BasicNameValuePair("startNum", startNum));
  373. params.add(new BasicNameValuePair("endNum", endNum));
  374. String response = HttpClientUtil.post(url, params, "UTF-8");
  375. JSONArray resultArray = new JSONArray();
  376. List<SystemDict> systemDictList = systemDictService.getDictByDictName("EHR_CATALOG");
  377. Map<String, String> systemDictMap = new HashMap<>();
  378. for (SystemDict systemDict : systemDictList) {
  379. systemDictMap.put(systemDict.getCode(), systemDict.getValue());
  380. }
  381. if (!StringUtils.isEmpty(response)) {
  382. JSONObject responseObject = new JSONObject(response);
  383. int status = responseObject.getInt("status");
  384. if (status == 200) {
  385. String data = responseObject.getString("data");
  386. if (!StringUtils.isEmpty(data)) {
  387. if (data.startsWith("error")) {
  388. return data;
  389. }
  390. JSONObject jsonData = new JSONObject(data);
  391. JSONArray jsonArray = jsonData.getJSONArray("EhrList");
  392. if (!jsonArray.isNull(0) && jsonArray.getJSONObject(0).length() != 0) {
  393. Map<String, JSONObject> jsonObjectMap = new HashMap<>();
  394. for (int i = 0; i < jsonArray.length(); i++) {
  395. JSONObject jsonObject = jsonArray.getJSONObject(i);
  396. String patientId = jsonObject.getString("XMAN_ID");
  397. String eventNo = jsonObject.getString("EVENT");
  398. Integer orgId = jsonObject.getInt("ORG_ID");
  399. String key = patientId + eventNo + orgId;
  400. JSONObject catalogObject = new JSONObject();
  401. String catalogCode = jsonObject.get("CATALOG_CODE").toString();
  402. String endTimeNew = jsonObject.get("END_TIME").toString();
  403. String catalogValue = systemDictMap.get(catalogCode);
  404. jsonObject.remove("CATALOG_CODE");
  405. if (jsonObjectMap.containsKey(key)) {
  406. jsonObject = jsonObjectMap.get(key);
  407. String endTimeOld = jsonObject.get("END_TIME").toString();
  408. if (endTimeNew.compareTo(endTimeOld) < 0) {
  409. endTimeNew = endTimeOld;
  410. }
  411. catalogObject = jsonObject.getJSONObject("CATALOG");
  412. }
  413. catalogObject.put(catalogCode, catalogValue);
  414. jsonObject.put("CATALOG", catalogObject);
  415. jsonObject.put("END_TIME", endTimeNew);
  416. jsonObjectMap.put(key, jsonObject);
  417. }
  418. for (String key : jsonObjectMap.keySet()) {
  419. resultArray.put(jsonObjectMap.get(key));
  420. }
  421. JSONObject temp;
  422. for (int i = 0; i < resultArray.length(); i++) {
  423. for (int j = i + 1; j < resultArray.length(); j++) {
  424. String endTimeNew = resultArray.getJSONObject(j).get("END_TIME").toString();
  425. String endTimeOld = resultArray.getJSONObject(i).get("END_TIME").toString();
  426. if (endTimeNew.compareTo(endTimeOld) > 0) {
  427. temp = resultArray.getJSONObject(i);
  428. resultArray.put(i, resultArray.getJSONObject(j));
  429. resultArray.put(j, temp); // 两个数交换位置
  430. }
  431. }
  432. }
  433. }
  434. }
  435. }
  436. }
  437. return resultArray.toString();
  438. }
  439. /**
  440. * 获取检查报告信息 (X)
  441. */
  442. private JSONArray getChecking(String strSSID, String startNum, String endNum) throws Exception {
  443. String api = "/third/smjk/ExamReport";
  444. return getResult(api, strSSID, startNum, endNum);
  445. }
  446. /**
  447. * 获取检验报告信息(X)
  448. */
  449. private JSONArray getInspection(String strSSID, String startNum, String endNum) throws Exception {
  450. String api = "/third/smjk/LabReport";
  451. return getResult(api, strSSID, startNum, endNum);
  452. }
  453. private JSONArray getResult(String api, String strSSID, String startNum, String endNum) {
  454. String startDate = "1900-01-01";
  455. String endDate = DateUtil.dateToStr(DateUtil.getNowDate(), DateUtil.YYYY_MM_DD);
  456. String url = jwUrl + api;
  457. List<NameValuePair> params = new ArrayList<>();
  458. params.add(new BasicNameValuePair("strSSID", strSSID));
  459. params.add(new BasicNameValuePair("startDate", startDate));
  460. params.add(new BasicNameValuePair("endDate", endDate));
  461. params.add(new BasicNameValuePair("startNum", startNum));
  462. params.add(new BasicNameValuePair("endNum", endNum));
  463. String response = HttpClientUtil.post(url, params, "UTF-8");
  464. JSONArray resultArray = new JSONArray();
  465. List<SystemDict> systemDictList = systemDictService.getDictByDictName("EHR_CATALOG");
  466. Map<String, String> systemDictMap = new HashMap<>();
  467. for (SystemDict systemDict : systemDictList) {
  468. systemDictMap.put(systemDict.getCode(), systemDict.getValue());
  469. }
  470. if (!StringUtils.isEmpty(response)) {
  471. JSONObject responseObject = new JSONObject(response);
  472. int status = responseObject.getInt("status");
  473. if (status == 200) {
  474. String data = responseObject.getString("data");
  475. if (!StringUtils.isEmpty(data)) {
  476. if (data.startsWith("error")) {
  477. JSONObject jsonObject = new JSONObject();
  478. jsonObject.put("error", data);
  479. resultArray.put(jsonObject);
  480. return resultArray;
  481. }
  482. JSONObject jsonData = new JSONObject(data);
  483. JSONArray jsonArray = jsonData.getJSONArray("EhrList");
  484. if (!jsonArray.isNull(0) && jsonArray.getJSONObject(0).length() != 0) {
  485. Map<String, JSONObject> jsonObjectMap = new HashMap<>();
  486. for (int i = 0; i < jsonArray.length(); i++) {
  487. JSONObject jsonObject = jsonArray.getJSONObject(i);
  488. String patientId = jsonObject.getString("XMAN_ID");
  489. String eventNo = jsonObject.getString("EVENT");
  490. Integer orgId = jsonObject.getInt("ORG_ID");
  491. String key = patientId + eventNo + orgId;
  492. JSONObject catalogObject = new JSONObject();
  493. String catalogCode = jsonObject.get("CATALOG_CODE").toString();
  494. String endTimeNew = jsonObject.get("END_TIME").toString();
  495. String catalogValue = systemDictMap.get(catalogCode);
  496. jsonObject.remove("CATALOG_CODE");
  497. if (jsonObjectMap.containsKey(key)) {
  498. jsonObject = jsonObjectMap.get(key);
  499. String endTimeOld = jsonObject.get("END_TIME").toString();
  500. if (endTimeNew.compareTo(endTimeOld) < 0) {
  501. endTimeNew = endTimeOld;
  502. }
  503. catalogObject = jsonObject.getJSONObject("CATALOG");
  504. }
  505. catalogObject.put(catalogCode, catalogValue);
  506. jsonObject.put("CATALOG", catalogObject);
  507. jsonObject.put("END_TIME", endTimeNew);
  508. jsonObjectMap.put(key, jsonObject);
  509. }
  510. for (String key : jsonObjectMap.keySet()) {
  511. resultArray.put(jsonObjectMap.get(key));
  512. }
  513. }
  514. }
  515. }
  516. }
  517. return resultArray;
  518. }
  519. /**
  520. * 获取检查检验 信息(X)
  521. *
  522. * @param strSSID
  523. * @param startNum
  524. * @param endNum
  525. * @return
  526. * @throws Exception
  527. */
  528. public String getInspectionAndChecking(String strSSID, String startNum, String endNum) throws Exception {
  529. JSONArray total = new JSONArray();
  530. JSONArray check = getChecking(strSSID, startNum, endNum);
  531. if (!check.isNull(0)) {
  532. JSONObject jsonObject = check.getJSONObject(0);
  533. if (jsonObject.has("error")) {
  534. return jsonObject.get("error").toString();
  535. }
  536. }
  537. JSONArray inspect = getInspection(strSSID, startNum, endNum);
  538. if (!inspect.isNull(0)) {
  539. JSONObject jsonObject = inspect.getJSONObject(0);
  540. if (jsonObject.has("error")) {
  541. return jsonObject.get("error").toString();
  542. }
  543. }
  544. //TODO 检查检验数据合并
  545. for (int i = 0; i < check.length(); i++) {
  546. total.put(check.getJSONObject(i));
  547. }
  548. for (int i = 0; i < inspect.length(); i++) {
  549. total.put(inspect.getJSONObject(i));
  550. }
  551. JSONObject temp;
  552. for (int i = 0; i < total.length(); i++) {
  553. for (int j = i + 1; j < total.length(); j++) {
  554. String endTimeNew = total.getJSONObject(j).get("END_TIME").toString();
  555. String endTimeOld = total.getJSONObject(i).get("END_TIME").toString();
  556. if (endTimeNew.compareTo(endTimeOld) > 0) {
  557. temp = total.getJSONObject(i);
  558. total.put(i, total.getJSONObject(j));
  559. total.put(j, temp); // 两个数交换位置
  560. }
  561. }
  562. }
  563. return total.toString();
  564. }
  565. /**
  566. * 获取用药记录(X)
  567. */
  568. public String getDrugsList(String strSSID, String startNum, String endNum) throws Exception {
  569. String startDate = "1900-01-01";
  570. String endDate = DateUtil.dateToStr(DateUtil.getNowDate(), DateUtil.YYYY_MM_DD);
  571. String url = jwUrl + "/third/smjk/DrugsList";
  572. List<NameValuePair> params = new ArrayList<>();
  573. params.add(new BasicNameValuePair("strSSID", strSSID));
  574. params.add(new BasicNameValuePair("startDate", startDate));
  575. params.add(new BasicNameValuePair("endDate", endDate));
  576. params.add(new BasicNameValuePair("startNum", startNum));
  577. params.add(new BasicNameValuePair("endNum", endNum));
  578. String response = HttpClientUtil.post(url, params, "UTF-8");
  579. JSONArray resultArray = new JSONArray();
  580. List<SystemDict> systemDictList = systemDictService.getDictByDictName("EHR_CATALOG");
  581. Map<String, String> systemDictMap = new HashMap<>();
  582. for (SystemDict systemDict : systemDictList) {
  583. systemDictMap.put(systemDict.getCode(), systemDict.getValue());
  584. }
  585. if (!StringUtils.isEmpty(response)) {
  586. JSONObject responseObject = new JSONObject(response);
  587. int status = responseObject.getInt("status");
  588. if (status == 200) {
  589. String data = responseObject.getString("data");
  590. if (!StringUtils.isEmpty(data)) {
  591. if (data.startsWith("error")) {
  592. return data;
  593. }
  594. JSONObject jsonData = new JSONObject(data);
  595. JSONArray jsonArray = jsonData.getJSONArray("EhrList");
  596. if (!jsonArray.isNull(0) && jsonArray.getJSONObject(0).length() != 0) {
  597. Map<String, JSONObject> jsonObjectMap = new HashMap<>();
  598. for (int i = 0; i < jsonArray.length(); i++) {
  599. JSONObject jsonObject = jsonArray.getJSONObject(i);
  600. String patientId = jsonObject.getString("XMAN_ID");
  601. String eventNo = jsonObject.getString("EVENT");
  602. Integer orgId = jsonObject.getInt("ORG_ID");
  603. String key = patientId + eventNo + orgId;
  604. JSONObject catalogObject = new JSONObject();
  605. String catalogCode = jsonObject.get("CATALOG_CODE").toString();
  606. String endTimeNew = jsonObject.get("END_TIME").toString();
  607. String catalogValue = systemDictMap.get(catalogCode);
  608. jsonObject.remove("CATALOG_CODE");
  609. if (jsonObjectMap.containsKey(key)) {
  610. jsonObject = jsonObjectMap.get(key);
  611. String endTimeOld = jsonObject.get("END_TIME").toString();
  612. if (endTimeNew.compareTo(endTimeOld) < 0) {
  613. endTimeNew = endTimeOld;
  614. }
  615. catalogObject = jsonObject.getJSONObject("CATALOG");
  616. }
  617. catalogObject.put(catalogCode, catalogValue);
  618. jsonObject.put("CATALOG", catalogObject);
  619. jsonObject.put("END_TIME", endTimeNew);
  620. jsonObjectMap.put(key, jsonObject);
  621. }
  622. for (String key : jsonObjectMap.keySet()) {
  623. resultArray.put(jsonObjectMap.get(key));
  624. }
  625. JSONObject temp;
  626. for (int i = 0; i < resultArray.length(); i++) {
  627. for (int j = i + 1; j < resultArray.length(); j++) {
  628. String endTimeNew = resultArray.getJSONObject(j).get("END_TIME").toString();
  629. String endTimeOld = resultArray.getJSONObject(i).get("END_TIME").toString();
  630. if (endTimeNew.compareTo(endTimeOld) > 0) {
  631. temp = resultArray.getJSONObject(i);
  632. resultArray.put(i, resultArray.getJSONObject(j));
  633. resultArray.put(j, temp); // 两个数交换位置
  634. }
  635. }
  636. }
  637. }
  638. }
  639. }
  640. }
  641. return resultArray.toString();
  642. }
  643. }