RestApiController.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525
  1. package com.lemon.lifecenter.controller;
  2. import java.text.DateFormat;
  3. import java.text.SimpleDateFormat;
  4. import java.util.ArrayList;
  5. import java.util.Calendar;
  6. import java.util.Date;
  7. import java.util.HashMap;
  8. import java.util.LinkedHashMap;
  9. import java.util.List;
  10. import java.util.Map;
  11. import java.util.TreeMap;
  12. import javax.servlet.http.HttpServletRequest;
  13. import org.json.JSONArray;
  14. import org.json.JSONObject;
  15. import org.json.simple.JSONValue;
  16. import org.slf4j.Logger;
  17. import org.slf4j.LoggerFactory;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.web.bind.annotation.RequestBody;
  20. import org.springframework.web.bind.annotation.RequestMapping;
  21. import org.springframework.web.bind.annotation.RequestMethod;
  22. import org.springframework.web.bind.annotation.RequestParam;
  23. import org.springframework.web.bind.annotation.ResponseBody;
  24. import org.springframework.web.bind.annotation.RestController;
  25. import com.lemon.lifecenter.common.LifeCenterConfigVO;
  26. import com.lemon.lifecenter.common.LifeCenterFunction;
  27. import com.lemon.lifecenter.dto.ApiPhrResponseDTO;
  28. import com.lemon.lifecenter.dto.ApiStatisticsDTO;
  29. import com.lemon.lifecenter.dto.ApiSymptomDTO;
  30. import com.lemon.lifecenter.dto.AppVersionDTO;
  31. import com.lemon.lifecenter.dto.DeviceInfoDTO;
  32. import com.lemon.lifecenter.dto.HlRequestDTO;
  33. import com.lemon.lifecenter.dto.PatientDTO;
  34. import com.lemon.lifecenter.service.RestApiService;
  35. @RestController
  36. @RequestMapping("/lifeCenter/api")
  37. public class RestApiController {
  38. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  39. @Autowired
  40. private RestApiService service;
  41. @RequestMapping(value="/tokenTest", method = RequestMethod.POST)
  42. public String tokenTest(@RequestBody HlRequestDTO dto) {
  43. String apiKey = service.selectApiKey(dto);
  44. String token = "";
  45. String id = dto.getManagerId();
  46. String time = LifeCenterFunction.getNow();
  47. int centerCode = dto.getCenterCode();
  48. String careAgencyCode = dto.getCareAgencyCode();
  49. try {
  50. token = LifeCenterFunction.aesEncrypt(apiKey, LifeCenterConfigVO.IV, id+"|"+careAgencyCode+"|"+time);
  51. } catch (Exception e) {
  52. // TODO Auto-generated catch block
  53. e.printStackTrace();
  54. }
  55. return token;
  56. }
  57. /**
  58. * api 분기
  59. * @param dto
  60. * resourceType
  61. * bloodPressure : 혈압
  62. * bloodSugar : 혈당
  63. * oxygenSaturation : 산소포화도
  64. * pulseRate : 맥박수
  65. * temperature : 체온
  66. * patientInfoList : 환자정보
  67. * munjin : 문진 정보
  68. * symptom : 환자 임상정보
  69. * @return json String
  70. */
  71. @RequestMapping(value="/toAction", method = RequestMethod.POST)
  72. public String moveToAction(@RequestBody HlRequestDTO dto, HttpServletRequest request) {
  73. ApiStatisticsDTO sDto = new ApiStatisticsDTO();
  74. String ip = LifeCenterFunction.getRemoteAddr(request);
  75. String result = "";
  76. String message = "";
  77. String token = dto.getToken();
  78. LinkedHashMap<String, Object> object = new LinkedHashMap<>();
  79. if (!token.equals("")) {
  80. String apiKey = service.selectApiKey(dto);
  81. if (apiKey.equals("")) {
  82. object.put("error", "invalidToken");
  83. message = "invalidToken";
  84. result = object.toString();
  85. } else {
  86. try {
  87. token = LifeCenterFunction.aesDecrypt(apiKey, LifeCenterConfigVO.IV, token);
  88. String[] splitToken = token.split("[|]");
  89. String managerId = splitToken[0];
  90. //int centerCode = Integer.parseInt(splitToken[1]);
  91. String careAgencyCode = splitToken[1];
  92. String time = splitToken[2];
  93. String resourceType = dto.getResourceType();
  94. if (managerId.equals(dto.getManagerId()) && careAgencyCode.equals(dto.getCareAgencyCode())) {
  95. DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  96. Calendar cal = Calendar.getInstance();
  97. Date getDate = dateFormat.parse(time);
  98. cal.setTime(getDate);
  99. cal.add(Calendar.MINUTE, 15);
  100. String tokenDateTime = dateFormat.format(cal.getTime());
  101. getDate = dateFormat.parse(tokenDateTime);
  102. Date nowDate = new Date();
  103. if (nowDate.getTime() < getDate.getTime()) {
  104. if (resourceType.equals("")) {
  105. object.put("error", "emptyResourceType");
  106. message = "emptyResourceType";
  107. result = object.toString();
  108. } else {
  109. String phone = dto.getPatientPhone();
  110. if (!phone.equals("")) {
  111. phone = LifeCenterFunction.setPhoneFormat(phone);
  112. dto.setPatientPhone2(phone);
  113. }
  114. logger.error("dto.setPatientPhone2 -- > " + dto.getPatientPhone2());
  115. if (resourceType.equals("bloodPressure") || resourceType.equals("bloodSugar") ||
  116. resourceType.equals("oxygenSaturation") || resourceType.equals("pulseRate") || resourceType.equals("temperature")) {
  117. result = selectPhrData(dto);
  118. } else if (resourceType.equals("clinicMemo")) {
  119. result = selectClinicMemoList(dto);
  120. } else if (resourceType.equals("patientInfo")) {
  121. result = selectHLPatientList(dto);
  122. } else if (resourceType.equals("survey")) {
  123. result = selectMunjinDataList(dto);
  124. } else if (resourceType.equals("symptom")) {
  125. result = selectSymptomDataList(dto);
  126. // } else if (resourceType.equals("vitalSign")) {
  127. //String[] strAr = {"temperature", "bloodPressure", "bloodSugar", "oxygenSaturation", "pulseRate"};
  128. // result = selectVitalSign(dto);
  129. } else {
  130. object.put("error", "invalidResourceType");
  131. message = "invalidResourceType";
  132. result = object.toString();
  133. }
  134. }
  135. } else {
  136. object.put("error", "expireToken");
  137. message = "expireToken";
  138. result = object.toString();
  139. }
  140. } else {
  141. object.put("error", "invalidParameters");
  142. message = "invalidParameters";
  143. result = object.toString();
  144. }
  145. } catch (Exception e) {
  146. object.put("error", "invalidParameters");
  147. message = "invalidParameters";
  148. result = object.toString();
  149. }
  150. }
  151. } else {
  152. object.put("error", "emptyToken");
  153. message = "emptyToken";
  154. result = object.toString();
  155. }
  156. if (message.equals("")) {
  157. message = "success";
  158. }
  159. sDto = service.selectCodeData(dto.getCareAgencyCode());
  160. sDto.setResourceType(dto.getResourceType());
  161. sDto.setResult(message);
  162. sDto.setIp(ip);
  163. if (message.equals("success")) {
  164. JSONArray jsArray = new JSONArray(result);
  165. sDto.setApiCount(jsArray.length());
  166. } else {
  167. sDto.setApiCount(0);
  168. }
  169. service.insertStatisticsData(sDto);
  170. return result;
  171. }
  172. //@RequestMapping(value="/patientList" , method = RequestMethod.POST)
  173. private String selectHLPatientList(HlRequestDTO dto) {
  174. List<PatientDTO> list = service.selectHLPatientList(dto);
  175. JSONArray array = new JSONArray();
  176. for (int i = 0; i < list.size(); i ++) {
  177. LinkedHashMap<String, Object> object = new LinkedHashMap<>();
  178. String patientNumber = list.get(i).getPatientNumber();
  179. String patientName = list.get(i).getPatientName();
  180. String gender = list.get(i).getGender();
  181. String wardNumber = list.get(i).getWardNumber();
  182. String roomNumber = list.get(i).getRoomNumber();
  183. String finalClinicDate = list.get(i).getFinamClinicDate();
  184. String hospitalizationDate = list.get(i).getHospitalizationDate();
  185. String state = list.get(i).getState();
  186. String centerCode = String.valueOf(list.get(i).getCenterCode());
  187. String jumin = list.get(i).getJumin();
  188. String patientPhone = list.get(i).getPatientPhone();
  189. String guardianPhone = list.get(i).getGuardianPhone();
  190. String symptomStartDate = list.get(i).getSymptomStartDate();
  191. String confirmationDate = list.get(i).getConfirmationDate();
  192. String disisolationDate = list.get(i).getDisisolationDate();
  193. String basalDiseaseYn = list.get(i).getBasalDiseaseYn();
  194. String drugYn = list.get(i).getDrugYn();
  195. String drugContent = list.get(i).getDrugContent();
  196. String pregnancyStatus = list.get(i).getPregnancyStatus();
  197. String pregnancyWeek = list.get(i).getPregnancyWeek();
  198. String managerId = list.get(i).getManagerId();
  199. String expectedDischargeDate = list.get(i).getExpectedDischargeDate();
  200. object.put("resourceType", "patientInfoList");
  201. object.put("patinetId", patientNumber);
  202. object.put("patientName", patientName);
  203. object.put("gender", gender);
  204. object.put("wardNumber", wardNumber);
  205. object.put("roomNumber", roomNumber);
  206. object.put("state", state);
  207. object.put("centerCode", centerCode);
  208. object.put("birthDate", jumin);
  209. object.put("patientPhone", patientPhone);
  210. object.put("guardianPhone", guardianPhone);
  211. object.put("finalClinicDate", finalClinicDate);
  212. object.put("hospitalizationDate", hospitalizationDate);
  213. object.put("symptomDate", symptomStartDate);
  214. object.put("confirmationDate", confirmationDate);
  215. object.put("disisolationDate", disisolationDate);
  216. object.put("dischargeDate", expectedDischargeDate);
  217. object.put("basalDiseaseYn", basalDiseaseYn);
  218. object.put("drugYn", drugYn);
  219. object.put("drugContent", drugContent);
  220. object.put("pregnancyStatus", pregnancyStatus);
  221. object.put("pregnancyWeek", pregnancyWeek);
  222. object.put("doctorId", managerId);
  223. String jsonText = JSONValue.toJSONString(object);
  224. array.put(jsonText);
  225. }
  226. return array.toString();
  227. }
  228. private String selectPhrData(HlRequestDTO dto) {
  229. String resourceType = dto.getResourceType();
  230. List<ApiPhrResponseDTO> list = service.selectPhrData(dto);
  231. JSONArray array = new JSONArray();
  232. for (int i = 0; i < list.size(); i++) {
  233. LinkedHashMap<String, Object> object = new LinkedHashMap<>();
  234. String patientNumber = list.get(i).getPatientNumber();
  235. String patientName = list.get(i).getPatientName();
  236. String patientPhone = list.get(i).getPatientPhone();
  237. String jumin = list.get(i).getJumin();
  238. String recordedByName = list.get(i).getRecordedByName();
  239. String recordedById = list.get(i).getRecordedById();
  240. String recordedDate = list.get(i).getRecordedDate();
  241. String createDate = list.get(i).getCreateDate();
  242. String phrValue1 = list.get(i).getValueType1();
  243. String phrValue2 = list.get(i).getValueType2();
  244. object.put("resourceType", resourceType);
  245. object.put("patinetId", patientNumber);
  246. object.put("patientName", patientName);
  247. object.put("patientPhone", patientPhone);
  248. object.put("birthDate", jumin);
  249. if (resourceType.equals("bloodPressure")) {
  250. object.put("bloodSbp", phrValue1);
  251. object.put("bloodDbp", phrValue2);
  252. } else {
  253. object.put(resourceType, phrValue1);
  254. }
  255. object.put("recordedByName", recordedByName);
  256. object.put("recordedById", recordedById);
  257. object.put("recodedDate", recordedDate);
  258. object.put("createDate", createDate);
  259. String jsonText = JSONValue.toJSONString(object);
  260. array.put(jsonText);
  261. }
  262. return array.toString();
  263. }
  264. private String selectClinicMemoList(HlRequestDTO dto) {
  265. List<ApiPhrResponseDTO> list = service.selectClinicMemo(dto);
  266. JSONArray array = new JSONArray();
  267. String resourceType = dto.getResourceType();
  268. for (int i = 0; i < list.size(); i++) {
  269. LinkedHashMap<String, Object> object = new LinkedHashMap<>();
  270. String patientNumber = list.get(i).getPatientNumber();
  271. String patientName = list.get(i).getPatientName();
  272. String patientPhone = list.get(i).getPatientPhone();
  273. String jumin = list.get(i).getJumin();
  274. String clinicMemo = list.get(i).getValueType1();
  275. String recordedByName = list.get(i).getRecordedByName();
  276. String recordedById = list.get(i).getRecordedById();
  277. String createDate = list.get(i).getCreateDate();
  278. object.put("resourceType", resourceType);
  279. object.put("patinetId", patientNumber);
  280. object.put("patientName", patientName);
  281. object.put("patientPhone", patientPhone);
  282. object.put("birthDate", jumin);
  283. object.put("clinicMemo", clinicMemo);
  284. object.put("recordedByName", recordedByName);
  285. object.put("recordedById", recordedById);
  286. object.put("createDate", createDate);
  287. String jsonText = JSONValue.toJSONString(object);
  288. array.put(jsonText);
  289. }
  290. return array.toString();
  291. }
  292. private String selectMunjinDataList(HlRequestDTO dto) {
  293. String resourceType = dto.getResourceType();
  294. List<PatientDTO> list = service.selectMunjinDataList(dto);
  295. JSONArray array = new JSONArray();
  296. for (int i = 0; i < list.size(); i++) {
  297. LinkedHashMap<String, Object> object = new LinkedHashMap<>();
  298. String patientNumber = list.get(i).getPatientNumber();
  299. String patientName = list.get(i).getPatientName();
  300. String patientPhone = list.get(i).getPatientPhone();
  301. String jumin = list.get(i).getJumin();
  302. String feverCheck = list.get(i).getFeverCheck();
  303. String coughCheck = list.get(i).getCoughCheck();
  304. String colic = list.get(i).getColic();
  305. String coldFitCheck = list.get(i).getColdFitCheck();
  306. String sputumCheck = list.get(i).getSputumCheck();
  307. String ocinCheck = list.get(i).getOcinCheck();
  308. String feverRight = list.get(i).getFeverRight();
  309. String feverLeft = list.get(i).getFeverLeft();
  310. String fatigueCheck = list.get(i).getFatigueCheck();
  311. String etcCheck = list.get(i).getEtcCheck();
  312. String etcContent = list.get(i).getEtcContent();
  313. String chestPain = list.get(i).getChestPain();
  314. String noseCheck = list.get(i).getNoseCheck();
  315. String vomitingCheck = list.get(i).getVomitingCheck();
  316. String musclePain = list.get(i).getMusclePainCheck();
  317. String soreThroatCheck = list.get(i).getSoreThroatCheck();
  318. String diarrheaCheck = list.get(i).getDiarrheaCheck();
  319. String headacheCheck = list.get(i).getHeadacheCheck();
  320. String dyspenaCheck = list.get(i).getDyspneaCheck();
  321. String pulseRate = list.get(i).getPulseRate();
  322. String respirationRate = list.get(i).getRespirationRate();
  323. String bloodPressureLevel = list.get(i).getBloodPressureLevel();
  324. String oxygenSaturatio = list.get(i).getOxygenSaturation();
  325. object.put("resourceType", resourceType);
  326. object.put("patinetId", patientNumber);
  327. object.put("patientName", patientName);
  328. object.put("patientPhone", patientPhone);
  329. object.put("birthDate", jumin);
  330. object.put("feverCheck", feverCheck);
  331. object.put("coughCheck", coughCheck);
  332. object.put("colic", colic);
  333. object.put("coldFitCheck", coldFitCheck);
  334. object.put("sputumCheck", sputumCheck);
  335. object.put("ocinCheck", ocinCheck);
  336. object.put("feverRight", feverRight);
  337. object.put("feverLeft", feverLeft);
  338. object.put("fatigueCheck", fatigueCheck);
  339. object.put("etcCheck", etcCheck);
  340. object.put("etcContent", etcContent);
  341. object.put("chestPain", chestPain);
  342. object.put("noseCheck", noseCheck);
  343. object.put("vomitingCheck", vomitingCheck);
  344. object.put("musclePain", musclePain);
  345. object.put("soreThroatCheck", soreThroatCheck);
  346. object.put("diarrheaCheck", diarrheaCheck);
  347. object.put("headacheCheck", headacheCheck);
  348. object.put("dyspenaCheck", dyspenaCheck);
  349. object.put("pulseRate", pulseRate);
  350. object.put("respirationRate", respirationRate);
  351. object.put("bloodPressureLevel", bloodPressureLevel);
  352. object.put("oxygenSaturation", oxygenSaturatio);
  353. String jsonText = JSONValue.toJSONString(object);
  354. array.put(jsonText);
  355. }
  356. return array.toString();
  357. }
  358. private String selectSymptomDataList(HlRequestDTO dto) {
  359. String resourceType = dto.getResourceType();
  360. List<ApiSymptomDTO> list = service.selectSymptomDataList(dto);
  361. JSONArray array = new JSONArray();
  362. for (int i = 0; i < list.size(); i++) {
  363. LinkedHashMap<String, Object> object = new LinkedHashMap<>();
  364. String patientNumber = list.get(i).getPatientNumber();
  365. String patientName = list.get(i).getPatientName();
  366. String patientPhone = list.get(i).getPatientPhone();
  367. String jumin = list.get(i).getJumin();
  368. String coughCheck = list.get(i).getCoughCheck();
  369. String dyspneaCheck = list.get(i).getDyspneaCheck();
  370. String coldFitCheck = list.get(i).getColdFitCheck();
  371. String musclePainCheck = list.get(i).getMusclePainCheck();
  372. String headacheCheck = list.get(i).getHeadacheCheck();
  373. String soreThroatCheck = list.get(i).getSoreThroatCheck();
  374. String smellPlateCheck = list.get(i).getSmellPlateCheck();
  375. String fatigueCheck = list.get(i).getFatigueCheck();
  376. String appetiteLossCheck = list.get(i).getAppetiteLossCheck();
  377. String sputumCheck = list.get(i).getSputumCheck();
  378. String ocinCheck = list.get(i).getOcinCheck();
  379. String vomitingCheck = list.get(i).getVomitingCheck();
  380. String diarrheaCheck = list.get(i).getDiarrheaCheck();
  381. String dizzinessCheck = list.get(i).getDizzinessCheck();
  382. String noseCheck = list.get(i).getNoseCheck();
  383. String etcCheck = list.get(i).getEtcCheck();
  384. String etcContent = list.get(i).getEtcContent();
  385. String recordedById = list.get(i).getRecordedById();
  386. String recordedByName = list.get(i).getRecordedByName();
  387. String recordedByDate = list.get(i).getRecordedByDate();
  388. String createDate = list.get(i).getCreateDate();
  389. object.put("resourceType", resourceType);
  390. object.put("patinetId", patientNumber);
  391. object.put("patientName", patientName);
  392. object.put("patientPhone", patientPhone);
  393. object.put("birthDate", jumin);
  394. object.put("coughCheck", coughCheck);
  395. object.put("dyspenaCheck", dyspneaCheck);
  396. object.put("coldFitCheck", coldFitCheck);
  397. object.put("musclePain", musclePainCheck);
  398. object.put("headacheCheck", headacheCheck);
  399. object.put("soreThroatCheck", soreThroatCheck);
  400. object.put("smellPlateCheck", smellPlateCheck);
  401. object.put("fatigueCheck", fatigueCheck);
  402. object.put("appetiteLossCheck", appetiteLossCheck);
  403. object.put("sputumCheck", sputumCheck);
  404. object.put("ocinCheck", ocinCheck);
  405. object.put("vomitingCheck", vomitingCheck);
  406. object.put("diarrheaCheck", diarrheaCheck);
  407. object.put("dizzinessCheck", dizzinessCheck);
  408. object.put("noseCheck", noseCheck);
  409. object.put("etcCheck", etcCheck);
  410. object.put("etcContent", etcContent);
  411. object.put("recordedById", recordedById);
  412. object.put("recordedByName", recordedByName);
  413. object.put("recordedByDate", recordedByDate);
  414. object.put("createDate", createDate);
  415. String jsonText = JSONValue.toJSONString(object);
  416. array.put(jsonText);
  417. }
  418. return array.toString();
  419. }
  420. private String selectVitalSign(HlRequestDTO dto) {
  421. dto.setCenterCode(63);
  422. List<ApiPhrResponseDTO> patientList = service.selectPatientInfoList(dto);
  423. JSONArray array = new JSONArray();
  424. for (int i = 0; i < patientList.size(); i++) {
  425. LinkedHashMap<String, Object> object = new LinkedHashMap<>();
  426. int patientIdx = patientList.get(i).getPatientIdx();
  427. String patientId = patientList.get(i).getPatientNumber();
  428. String patientName = patientList.get(i).getPatientName();
  429. String patientPhone = patientList.get(i).getPatientPhone();
  430. String jumin = patientList.get(i).getJumin();
  431. List<ApiPhrResponseDTO> phrList = service.selectPatientPhrData(patientIdx);
  432. object.put("patinetId", patientId);
  433. object.put("patientName", patientName);
  434. object.put("patientPhone", patientPhone);
  435. object.put("birthDate", jumin);
  436. for (int j = 0; j < phrList.size(); j++ ) {
  437. LinkedHashMap<String, Object> object2 = new LinkedHashMap<>();
  438. String phrType = phrList.get(j).getPhrType();
  439. String valueType1 = phrList.get(j).getValueType1();
  440. String valueType2 = phrList.get(j).getValueType2();
  441. String recordedByName = phrList.get(j).getRecordedByName();
  442. String recordedById = phrList.get(j).getRecordedById();
  443. String createDate = phrList.get(j).getCreateDate();
  444. if (phrType.equals("bloodPressure")) {
  445. object2.put("bloodSbp", valueType1);
  446. object2.put("bloodDbp", valueType2);
  447. } else {
  448. object2.put(phrType, valueType1);
  449. }
  450. object2.put("recordedByName", recordedByName);
  451. object2.put("recordedById", recordedById);
  452. object2.put("createDate", createDate);
  453. object.put(phrType, object2);
  454. }
  455. String jsonText = JSONValue.toJSONString(object);
  456. array.put(jsonText);
  457. }
  458. return array.toString();
  459. }
  460. }