ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HNGatherPatArchiveController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
smartor/src/main/java/com/smartor/domain/HnDataGatherVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
smartor/src/main/java/com/smartor/service/IHNGatherPatArchiveService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
smartor/src/main/java/com/smartor/service/IXHGatherPatArchiveService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
smartor/src/main/java/com/smartor/service/impl/XHGatherPatArchiveServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HNGatherPatArchiveController.java
@@ -9,10 +9,7 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.smartor.domain.PatMedInhosp; import com.smartor.domain.PatMedOuthosp; import com.smartor.domain.PatMedReq; import com.smartor.domain.PatMedRes; import com.smartor.domain.*; import com.smartor.service.IHNGatherPatArchiveService; import com.smartor.service.IPatMedOuthospService; import com.smartor.service.impl.HNGatherPatArchiveServiceImpl; @@ -48,35 +45,12 @@ /** * æ²³åæ°æ®éé */ //@PreAuthorize("@ss.hasPermi('smartor:patouthosp:list')") @PostMapping("/selectGatherList") @PostMapping("/hnDataGather") @ApiOperation("æ²³åæ°æ®éé") public Integer selectUserList(@RequestBody PatMedInhosp patMedInhosp) { // Integer sd = ihnGatherPatArchiveService.selectDeptList(null); // Integer su = ihnGatherPatArchiveService.selectUserList(null); // Integer icd = ihnGatherPatArchiveService.selectIcd10List(null); log.info("å¼å§æå¤©åæ¥ç¨æ·æ°æ®ï¼æ¶é´èå´: {} å° {}", patMedInhosp.getStartOutHospTime(), patMedInhosp.getEndOutHospTime()); LocalDate startDate = patMedInhosp.getStartOutHospTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); LocalDate endDate = patMedInhosp.getEndOutHospTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); Integer po = null; // 循ç¯å¤çæ¯ä¸å¤© for (LocalDate currentDate = startDate; !currentDate.isAfter(endDate); currentDate = currentDate.plusDays(1)) { PatMedInhosp dailyCondition = new PatMedInhosp(); LocalDateTime dayStart = currentDate.atStartOfDay(); LocalDateTime dayEnd = currentDate.atTime(23, 59, 59); dailyCondition.setStartOutHospTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant())); dailyCondition.setEndOutHospTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant())); Integer pi = ihnGatherPatArchiveService.selectPatMedInhospList(dailyCondition); PatMedOuthosp patMedOuthosp = new PatMedOuthosp(); patMedOuthosp.setBeginTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant())); patMedOuthosp.setEndTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant())); po = ihnGatherPatArchiveService.selectPatMedOuthospList(patMedOuthosp); } return po; public AjaxResult hnDataGather(@RequestBody HnDataGatherVO hnDataGatherVO) { log.info("å¼å§æå¤©åæ¥ç¨æ·æ°æ®ï¼æ¶é´èå´: {} å° {}", hnDataGatherVO.getStartOutHospTime(), hnDataGatherVO.getEndOutHospTime()); Boolean aBoolean = ihnGatherPatArchiveService.hnDataGather(hnDataGatherVO); return AjaxResult.success(aBoolean); } } ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -2,6 +2,7 @@ import javax.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; @@ -33,6 +34,7 @@ * * @author ruoyi */ @Slf4j @Component public class SysLoginService { @Autowired ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -87,7 +87,7 @@ private IServicePatientTempService iServicePatientTempService; @Autowired private PlatformTransactionManager transactionManager; private IHNGatherPatArchiveService ihnGatherPatArchiveService; @Autowired private SysUserImportMapper sysUserImportMapper; @@ -125,8 +125,6 @@ @Autowired IPatArchiveService patArchiveService; @Autowired IPatMedInhospService patMedInhospService; @Autowired IPatMedOuthospService patMedOuthospService; @@ -137,14 +135,19 @@ @Autowired IIvrTaskTemplateService iIvrTaskTemplateService; @Value("${hosp_info_url}") private String hospInfoUrl; @Autowired IXHGatherPatArchiveService ixhGatherPatArchiveService; @Value("${appid}") private String appid; @Value("${server.port}") private String port; @Value("${spring.profiles.active}") private String active; public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) { System.out.println(StringUtils.format("æ§è¡å¤åæ¹æ³ï¼ å符串类å{}ï¼å¸å°ç±»å{}ï¼é¿æ´å{}ï¼æµ®ç¹å{}ï¼æ´å½¢{}", s, b, l, d, i)); @@ -211,34 +214,42 @@ */ public void dealHisData() { log.info("ãdealHisDataãå¼å§æ§è¡HISæ°æ®ééä»»å¡"); long startTime = System.currentTimeMillis(); // è·åæ¨å¤©0ç¹å°ä»å¤©0ç¹çæ¶é´èå´ LocalDateTime todayZero = LocalDateTime.now().with(LocalTime.MIN); LocalDateTime yesterdayZero = todayZero.minusDays(1); log.info("ãdealHisDataãééæ¶é´èå´ï¼{} ~ {}", yesterdayZero, todayZero); try { // è·åæ¨å¤©0ç¹å°ä»å¤©0ç¹çæ¶é´èå´ LocalDateTime todayZero = LocalDateTime.now().with(LocalTime.MIN); LocalDateTime yesterdayZero = todayZero.minusDays(1); if (active.trim().equals("xh")) { try { // ééå ¥é¢æ°æ® log.info("ãdealHisDataãæ°åå¼å§ééå ¥é¢æ°æ®"); ixhGatherPatArchiveService.getInHospDataGather("0", yesterdayZero, todayZero); log.info("ãdealHisDataãæ°åå ¥é¢æ°æ®éé宿"); log.info("ãdealHisDataãééæ¶é´èå´ï¼{} ~ {}", yesterdayZero, todayZero); // ééåºé¢æ°æ® log.info("ãdealHisDataãæ°åå¼å§ééåºé¢æ°æ®"); ixhGatherPatArchiveService.getInHospDataGather("1", yesterdayZero, todayZero); log.info("ãdealHisDataãæ°ååºé¢æ°æ®éé宿"); // ééå ¥é¢æ°æ® log.info("ãdealHisDataãå¼å§ééå ¥é¢æ°æ®"); getInHospInfo("0", yesterdayZero, todayZero); log.info("ãdealHisDataãå ¥é¢æ°æ®éé宿"); // ééåºé¢æ°æ® log.info("ãdealHisDataãå¼å§ééåºé¢æ°æ®"); getInHospInfo("1", yesterdayZero, todayZero); log.info("ãdealHisDataãåºé¢æ°æ®éé宿"); long endTime = System.currentTimeMillis(); log.info("ãdealHisDataãHISæ°æ®ééä»»å¡å®æï¼æ»èæ¶ï¼{}ms", endTime - startTime); } catch (Exception e) { log.error("ãdealHisDataãHISæ°æ®ééå¼å¸¸", e); // è¿éå¯ä»¥æ·»å åè¦éç¥é»è¾ï¼æ¯å¦åéé®ä»¶æçä¿¡ } catch (Exception e) { log.error("ãdealHisDataãæ°åæ°æ®ééå¼å¸¸", e); } } else if (active.trim().equals("hn")) { try { // æ²³åæ°æ®éé HnDataGatherVO hnDataGatherVO = new HnDataGatherVO(); log.info("ãdealHisDataãæ²³åå¼å§ééæ°æ®"); ihnGatherPatArchiveService.hnDataGather(hnDataGatherVO); log.info("ãdealHisDataãæ²³åç»æééæ°æ®"); } catch (Exception e) { log.error("ãdealHisDataãæ²³åæ°æ®ééå¼å¸¸", e); } } } /** * è¿ä¸ªåªæ¯æ°å临æ¶ä½¿ç¨ï¼å¹³æ¶ç¨ä¸å° */ public void dealHisData2() { //å°æ£è ä¿¡æ¯ãåºå ¥é¢æ°æ®å ¨é¨éé // æå®çå¼å§æ¥æ @@ -251,8 +262,8 @@ // ä»å¼å§æ¥æå°å½åæ¥æé天æå° for (LocalDate date = endDate; !date.isAfter(currentDate); date = date.plusDays(1)) { System.out.println(date.format(formatter)); getInHospInfo("0", date.minusDays(1).atStartOfDay(), date.atStartOfDay()); getInHospInfo("1", date.minusDays(1).atStartOfDay(), date.atStartOfDay()); ixhGatherPatArchiveService.getInHospDataGather("0", date.minusDays(1).atStartOfDay(), date.atStartOfDay()); ixhGatherPatArchiveService.getInHospDataGather("1", date.minusDays(1).atStartOfDay(), date.atStartOfDay()); } } @@ -639,389 +650,6 @@ } } } /** * è·åæ£è åºå ¥é¢ä¿¡æ¯ * * @param cry åºå ¥é¢ç±»åï¼0-å ¥é¢ï¼1-åºé¢ * @param startTime å¼å§æ¶é´ * @param endTime ç»ææ¶é´ */ @Transactional public void getInHospInfo(String cry, LocalDateTime startTime, LocalDateTime endTime) { String typeName = "0".equals(cry) ? "å ¥é¢" : "åºé¢"; log.info("ãgetInHospInfoãå¼å§è·å{}æ£è ä¿¡æ¯ï¼æ¶é´èå´ï¼{} ~ {}", typeName, startTime, endTime); long startTimeMillis = System.currentTimeMillis(); try { // ç¬¬ä¸æ¥ï¼æå»ºè¯·æ±åæ°å¹¶è°ç¨HISæ¥å£ List<ThiedInhospInfo> thiedInhospInfoList = fetchHisData(cry, startTime, endTime); if (CollectionUtils.isEmpty(thiedInhospInfoList)) { log.info("ãgetInHospInfoã{}æ£è ä¿¡æ¯ä¸ºç©ºï¼è·³è¿å¤ç", typeName); return; } log.info("ãgetInHospInfoãè·åå°{}æ¡{}æ£è ä¿¡æ¯", thiedInhospInfoList.size(), typeName); // ç¬¬äºæ¥ï¼ä¿ååå§æ°æ®å°æä»¶ï¼ç¨äºå¤ä»½ï¼ saveRawDataToFile(cry, thiedInhospInfoList); // ç¬¬ä¸æ¥ï¼å¤çæ£è æ°æ® processPatientData(thiedInhospInfoList, cry); long endTimeMillis = System.currentTimeMillis(); log.info("ãgetInHospInfoã{}æ£è ä¿¡æ¯å¤ç宿ï¼èæ¶ï¼{}ms", typeName, endTimeMillis - startTimeMillis); } catch (Exception e) { log.error("ãgetInHospInfoãè·å{}æ£è ä¿¡æ¯å¼å¸¸", typeName, e); throw new RuntimeException("è·å" + typeName + "æ£è ä¿¡æ¯å¤±è´¥", e); } } /** * ç¬¬ä¸æ¥ï¼è°ç¨HISæ¥å£è·åæ°æ® */ private List<ThiedInhospInfo> fetchHisData(String cry, LocalDateTime startTime, LocalDateTime endTime) { try { // æå»ºè¯·æ±åæ° Map<String, String> requestParams = buildRequestParams(cry, startTime, endTime); // æå»ºè¯·æ±å¤´ Map<String, String> headers = buildRequestHeaders(startTime); // åéHTTPè¯·æ± String result = HttpUtils.sendPostByHeader(hospInfoUrl, new Gson().toJson(requestParams), headers); // è§£æååºæ°æ® return parseResponseData(result); } catch (Exception e) { log.error("ãfetchHisDataãè°ç¨HISæ¥å£å¼å¸¸", e); throw e; } } /** * æå»ºè¯·æ±åæ° */ private Map<String, String> buildRequestParams(String cry, LocalDateTime startTime, LocalDateTime endTime) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"); Map<String, String> req = new HashMap<>(); if ("1".equals(cry)) { // åºé¢åæ° req.put("cashStartDate", startTime.format(formatter)); req.put("cashEndDate", endTime.format(formatter)); req.put("currStatus", "4"); } else { // å ¥é¢åæ° req.put("admissStartDate", startTime.format(formatter)); req.put("admissEndDate", endTime.format(formatter)); req.put("currStatus", "2"); } return req; } /** * æå»ºè¯·æ±å¤´ */ private Map<String, String> buildRequestHeaders(LocalDateTime startTime) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"); Map<String, String> header = new HashMap<>(); header.put("x-hcsb-serviceno", "IS002347"); header.put("x-hcsb-version", "2.0"); header.put("x-hcsb-sourcesyscode", "14"); header.put("x-hcsb-token", "ArGE2JnHtxG/Zx5nrnGY4eOfMUJGGJokAJHigG1BrCY="); header.put("x-hcsb-msgdate", startTime.format(formatter)); return header; } /** * è§£æååºæ°æ® */ private List<ThiedInhospInfo> parseResponseData(String result) { try { Gson gson = new Gson(); JsonObject jsonObject = gson.fromJson(result, JsonObject.class); JsonArray resultArray = jsonObject.getAsJsonObject("data").getAsJsonArray("result"); Type resultType = new TypeToken<List<ThiedInhospInfo>>() { }.getType(); return gson.fromJson(resultArray, resultType); } catch (Exception e) { log.error("ãparseResponseDataãè§£æååºæ°æ®å¼å¸¸ï¼åå§æ°æ®ï¼{}", result, e); throw e; } } /** * ç¬¬äºæ¥ï¼ä¿ååå§æ°æ®å°æä»¶ */ private void saveRawDataToFile(String cry, List<ThiedInhospInfo> dataList) { try { String typeName = "0".equals(cry) ? "å ¥é¢ä¿¡æ¯" : "åºé¢ä¿¡æ¯"; String filename = typeName + "_" + System.currentTimeMillis() + ".json"; String filePath = "D:\\public\\HISæ°æ®éé\\" + filename; File file = new File(filePath); File parentDir = file.getParentFile(); if (!parentDir.exists()) { parentDir.mkdirs(); } if (!file.exists()) { file.createNewFile(); } // å°æ°æ®åå ¥æä»¶ try (FileWriter writer = new FileWriter(file)) { writer.write(new Gson().toJson(dataList)); } log.info("ãsaveRawDataToFileãåå§æ°æ®å·²ä¿åå°æä»¶ï¼{}", filePath); } catch (Exception e) { log.error("ãsaveRawDataToFileãä¿ååå§æ°æ®å°æä»¶å¼å¸¸", e); // æä»¶ä¿å失败ä¸å½±å主æµç¨ï¼åªè®°å½æ¥å¿ } } /** * ç¬¬ä¸æ¥ï¼å¤çæ£è æ°æ® */ private void processPatientData(List<ThiedInhospInfo> thiedInhospInfoList, String cry) { int successCount = 0; int skipCount = 0; int errorCount = 0; for (ThiedInhospInfo thiedInhospInfo : thiedInhospInfoList) { try { if (processSinglePatient(thiedInhospInfo, cry)) { successCount++; } else { skipCount++; } } catch (Exception e) { errorCount++; log.error("ãprocessPatientDataãå¤çæ£è æ°æ®å¼å¸¸ï¼æ£è IDï¼{}", thiedInhospInfo.getPatiMediaNo(), e); } } log.info("ãprocessPatientDataãæ£è æ°æ®å¤çå®æï¼æåï¼{}ï¼è·³è¿ï¼{}ï¼å¤±è´¥ï¼{}", successCount, skipCount, errorCount); } /** * å¤çå个æ£è æ°æ® */ private boolean processSinglePatient(ThiedInhospInfo thiedInhospInfo, String cry) { // éªè¯èº«ä»½è¯å· if (StringUtils.isEmpty(thiedInhospInfo.getPatiIdCardNo())) { log.warn("ãprocessSinglePatientãæ£è 身份è¯å·ä¸ºç©ºï¼è·³è¿å¤çï¼æ£è ç¼å·ï¼{}", thiedInhospInfo.getPatiMediaNo()); return false; } // å¤çæ£è æ¡£æ¡ä¿¡æ¯ PatArchive patArchive = processPatientArchive(thiedInhospInfo, cry); // å¤çæ£è ä½é¢ä¿¡æ¯ processPatientInhospInfo(thiedInhospInfo, patArchive, cry); return true; } /** * å¤çæ£è æ¡£æ¡ä¿¡æ¯ */ private PatArchive processPatientArchive(ThiedInhospInfo thiedInhospInfo, String cry) { // æ¥è¯¢æ£è æ¯å¦å·²åå¨ PatArchive queryArchive = new PatArchive(); queryArchive.setIdcardno(thiedInhospInfo.getPatiIdCardNo().trim()); List<PatArchive> existingArchives = patArchiveService.selectPatArchiveList(queryArchive); // æå»ºæ£è æ¡£æ¡ä¿¡æ¯ PatArchive patArchive = buildPatientArchive(thiedInhospInfo, cry); // ä¿åææ´æ°æ£è æ¡£æ¡ if (CollectionUtils.isEmpty(existingArchives)) { patArchiveService.insertPatArchive(patArchive); log.debug("ãprocessPatientArchiveãæ°å¢æ£è æ¡£æ¡ï¼æ£è ç¼å·ï¼{}", patArchive.getPatientno()); } else { patArchive.setId(existingArchives.get(0).getId()); patArchiveService.updateArchive(patArchive); log.debug("ãprocessPatientArchiveãæ´æ°æ£è æ¡£æ¡ï¼æ£è ç¼å·ï¼{}", patArchive.getPatientno()); } return patArchive; } /** * æå»ºæ£è æ¡£æ¡ä¿¡æ¯ */ private PatArchive buildPatientArchive(ThiedInhospInfo thiedInhospInfo, String cry) { PatArchive patArchive = new PatArchive(); // åºæ¬ä¿¡æ¯ patArchive.setPatientno(thiedInhospInfo.getPatiMediaNo()); patArchive.setIdcardno(thiedInhospInfo.getPatiIdCardNo().trim()); patArchive.setName(thiedInhospInfo.getPatiRecordName()); patArchive.setSourcefrom(2); patArchive.setPattype("2"); // æ§å« patArchive.setSex("ç·".equals(thiedInhospInfo.getPatiRecordGender()) ? 1L : 2L); // æ°æåç±è´¯ patArchive.setNation(thiedInhospInfo.getPatiNation()); patArchive.setNativePlace(thiedInhospInfo.getPatiNationality()); // å± ä½å°å String homeAddr = thiedInhospInfo.getPatiHomeAddr(); patArchive.setPlaceOfResidence(StringUtils.isNotEmpty(homeAddr) ? homeAddr.replace("null", "") : ""); // åºçæ¥æ if (StringUtils.isNotEmpty(thiedInhospInfo.getPatiBirthday())) { try { patArchive.setBirthdate(new SimpleDateFormat("yyyy-MM-dd").parse(thiedInhospInfo.getPatiBirthday())); } catch (ParseException e) { log.warn("ãbuildPatientArchiveãè§£æåºçæ¥æå¤±è´¥ï¼{}", thiedInhospInfo.getPatiBirthday(), e); } } // å¹´é¾ if (thiedInhospInfo.getTreateAge() != null) { patArchive.setAge(Long.valueOf(thiedInhospInfo.getTreateAge())); } patArchive.setAgeUnit(thiedInhospInfo.getTreatAgeunit()); // èç³»æ¹å¼ patArchive.setTelcode(thiedInhospInfo.getCompanyTelNum()); patArchive.setRelativetelcode(thiedInhospInfo.getContactPersonPhone()); // åºé¢æ¹å¼å¤çï¼æ»äº¡çç¹æ®æ åµï¼ if (StringUtils.isNotEmpty(thiedInhospInfo.getOutWayId()) && "4".equals(thiedInhospInfo.getOutWayId())) { patArchive.setNotrequiredFlag("1"); patArchive.setNotrequiredreason(thiedInhospInfo.getOutWayName()); } if ("1".equals(cry) && StringUtils.isEmpty(thiedInhospInfo.getOutWayId())) { patArchive.setNotrequiredFlag("1"); patArchive.setNotrequiredreason("åºé¢æ¹å¼ä¸ºç©º"); } // ç³»ç»å段 patArchive.setDelFlag("0"); patArchive.setCreateTime(new Date()); patArchive.setUpdateTime(new Date()); return patArchive; } /** * å¤çæ£è ä½é¢ä¿¡æ¯ */ private void processPatientInhospInfo(ThiedInhospInfo thiedInhospInfo, PatArchive patArchive, String cry) { // æå»ºä½é¢ä¿¡æ¯ PatMedInhosp patMedInhosp = buildPatientInhospInfo(thiedInhospInfo, patArchive, cry); // æ¥è¯¢æ¯å¦å·²åå¨ä½é¢è®°å½ PatMedInhosp queryInhosp = new PatMedInhosp(); queryInhosp.setPatno(patArchive.getPatientno()); queryInhosp.setSerialnum(patMedInhosp.getSerialnum()); List<PatMedInhosp> existingInhosps = patMedInhospService.selectPatMedInhospList(queryInhosp); // ä¿åææ´æ°ä½é¢ä¿¡æ¯ if (CollectionUtils.isNotEmpty(existingInhosps)) { patMedInhosp.setInhospid(existingInhosps.get(0).getInhospid()); patMedInhospService.updatePatMedInhosp(patMedInhosp); log.debug("ãprocessPatientInhospInfoãæ´æ°ä½é¢ä¿¡æ¯ï¼æ£è ç¼å·ï¼{}ï¼æµæ°´å·ï¼{}", patArchive.getPatientno(), patMedInhosp.getSerialnum()); } else { patMedInhospService.insertPatMedInhosp(patMedInhosp); log.debug("ãprocessPatientInhospInfoãæ°å¢ä½é¢ä¿¡æ¯ï¼æ£è ç¼å·ï¼{}ï¼æµæ°´å·ï¼{}", patArchive.getPatientno(), patMedInhosp.getSerialnum()); } } /** * æå»ºæ£è ä½é¢ä¿¡æ¯ */ private PatMedInhosp buildPatientInhospInfo(ThiedInhospInfo thiedInhospInfo, PatArchive patArchive, String cry) { PatMedInhosp patMedInhosp = new PatMedInhosp(); // æ£è åºæ¬ä¿¡æ¯ patMedInhosp.setPatid(patArchive.getId()); patMedInhosp.setPatno(patArchive.getPatientno()); patMedInhosp.setPatname(patArchive.getName()); // æ¤çä¿¡æ¯ patMedInhosp.setNurseId(thiedInhospInfo.getNurseId()); patMedInhosp.setNurseName(thiedInhospInfo.getNurseName()); // ä½é¢ä¿¡æ¯ patMedInhosp.setSerialnum(thiedInhospInfo.getInpatientId()); patMedInhosp.setFuflag("1"); patMedInhosp.setInhospstate("0".equals(cry) ? "0" : "1"); // å»é¢ååºä½ä¿¡æ¯ patMedInhosp.setHospitalcode(thiedInhospInfo.getAreaId()); patMedInhosp.setBedNo(thiedInhospInfo.getAdmissBedNo()); // æ¶é´ä¿¡æ¯ if (StringUtils.isNotEmpty(thiedInhospInfo.getAdmissDate())) { try { patMedInhosp.setStarttime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getAdmissDate())); } catch (ParseException e) { log.warn("ãbuildPatientInhospInfoãè§£æå ¥é¢æ¶é´å¤±è´¥ï¼{}", thiedInhospInfo.getAdmissDate(), e); } } if (StringUtils.isNotEmpty(thiedInhospInfo.getOutDate())) { try { patMedInhosp.setEndtime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getOutDate())); } catch (ParseException e) { log.warn("ãbuildPatientInhospInfoãè§£æåºé¢æ¶é´å¤±è´¥ï¼{}", thiedInhospInfo.getOutDate(), e); } } // åºé¢ä¿¡æ¯ if (cry.equals("1")) { patMedInhosp.setLeaveldeptcode(thiedInhospInfo.getCurrDeptId()); patMedInhosp.setLeaveldeptname(thiedInhospInfo.getCurrDeptName()); patMedInhosp.setLeavediagname(thiedInhospInfo.getDiagName()); patMedInhosp.setLeaveicd10code(thiedInhospInfo.getDiagIcd10()); patMedInhosp.setOutWayId(thiedInhospInfo.getOutWayId()); patMedInhosp.setOutWayName(thiedInhospInfo.getOutWayName()); // ç åºä¿¡æ¯ patMedInhosp.setLeavehospitaldistrictid(thiedInhospInfo.getCurrWardCode()); patMedInhosp.setLeavehospitaldistrictcode(thiedInhospInfo.getCurrWardId()); patMedInhosp.setLeavehospitaldistrictname(thiedInhospInfo.getCurrWardName()); patMedInhosp.setLeaveldeptid(thiedInhospInfo.getCurrDeptCode()); } else { //å ¥é¢ patMedInhosp.setDeptcode(thiedInhospInfo.getCurrDeptId()); patMedInhosp.setDeptname(thiedInhospInfo.getCurrDeptName()); patMedInhosp.setDiagname(thiedInhospInfo.getDiagName()); patMedInhosp.setIcd10code(thiedInhospInfo.getDiagIcd10()); patMedInhosp.setHospitaldistrictid(thiedInhospInfo.getAdmissWardCode()); patMedInhosp.setHospitaldistrictcode(thiedInhospInfo.getAdmissWardId()); patMedInhosp.setHospitaldistrictname(thiedInhospInfo.getAdmissWardName()); } // å»çä¿¡æ¯ patMedInhosp.setDrname(thiedInhospInfo.getDoctName()); patMedInhosp.setDrcode(thiedInhospInfo.getDoctId()); // ç¶æä¿¡æ¯ patMedInhosp.setSchemestatus("0".equals(cry) ? 1L : 2L); // ç³»ç»å段 patMedInhosp.setDelFlag("0"); patMedInhosp.setOrgid("1"); return patMedInhosp; } private String getKey() { Map<String, String> map = new HashMap<>(); smartor/src/main/java/com/smartor/domain/HnDataGatherVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,40 @@ package com.smartor.domain; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; import java.util.List; /** * æ²³åæ°æ®ééå ¥å对象 * * @author smartor * @date 2023-03-04 */ @ApiModel(value = "HnDataGatherVO", description = "æ²³åæ°æ®ééå ¥å对象") @Data public class HnDataGatherVO extends BaseEntity { /** * å¼å§åºé¢æ¥æ */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = " ", width = 30, dateFormat = "yyyy-MM-dd") @ApiModelProperty(value = "å¼å§åºé¢æ¥æ") private Date startOutHospTime; /** * ç»æåºé¢æ¥æ */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = " ", width = 30, dateFormat = "yyyy-MM-dd") @ApiModelProperty(value = "ç»æåºé¢æ¥æ") private Date endOutHospTime; } smartor/src/main/java/com/smartor/service/IHNGatherPatArchiveService.java
@@ -32,6 +32,14 @@ public Integer selectPatMedInhospList(PatMedInhosp patMedInhosp); /** * æ²³åæ°æ®éé * * @param patMedInhosp * @return */ public Boolean hnDataGather(HnDataGatherVO patMedInhosp); /** * 鍿¥è¯ä¿¡æ¯ * * @param id smartor/src/main/java/com/smartor/service/IXHGatherPatArchiveService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.smartor.service; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysUser; import com.smartor.domain.*; import java.time.LocalDateTime; import java.util.List; /** * æ²³åé鿣è ä¿¡æ¯æ¥å£ * * @author smartor * @date 2023-03-04 */ public interface IXHGatherPatArchiveService { /** * æ²³åæ°æ®éé * * @param patMedInhosp * @return */ public void getInHospDataGather(String cry, LocalDateTime startTime, LocalDateTime endTime); } smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java
@@ -14,6 +14,9 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.*; /** @@ -106,6 +109,30 @@ return 0; } @Override public Boolean hnDataGather(HnDataGatherVO hnDataGatherVO) { LocalDate startDate = hnDataGatherVO.getStartOutHospTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); LocalDate endDate = hnDataGatherVO.getEndOutHospTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); Integer po = null; // 循ç¯å¤çæ¯ä¸å¤© for (LocalDate currentDate = startDate; !currentDate.isAfter(endDate); currentDate = currentDate.plusDays(1)) { PatMedInhosp dailyCondition = new PatMedInhosp(); LocalDateTime dayStart = currentDate.atStartOfDay(); LocalDateTime dayEnd = currentDate.atTime(23, 59, 59); dailyCondition.setStartOutHospTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant())); dailyCondition.setEndOutHospTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant())); Integer pi = selectPatMedInhospList(dailyCondition); PatMedOuthosp patMedOuthosp = new PatMedOuthosp(); patMedOuthosp.setBeginTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant())); patMedOuthosp.setEndTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant())); po = selectPatMedOuthospList(patMedOuthosp); } return true; } @Override public Integer selectPatMedOuthospList(PatMedOuthosp patMedOuthosp) { smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -397,8 +397,6 @@ PatArchive patArchive = addPatArchive(externalInHospPatientInfo, externalInHospPatientAddrInfo, externalInHospPatientLiaisonInfo); PatMedInhosp patMedInhosp = new PatMedInhosp(); patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao()); patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID()); @@ -1201,6 +1199,9 @@ PatArchive patArchive = new PatArchive(); //妿æ¯ååºççå°å©åï¼æ¯æ²¡æèº«ä»½è¯çï¼æä¹å¤çï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ patArchive.setIdcardno(externalInHospPatientInfo.getZhengJianHM()); //å¦æèº«ä»½è¯ä¸ºç©ºçè¯ï¼å°±ç¨å°±è¯å¡å·ä»£æ¿ if (StringUtils.isEmpty(externalInHospPatientInfo.getZhengJianHM())) patArchive.setIdcardno(externalInHospPatientInfo.getJiuZhenKH()); patArchive.setOrgid(externalInHospPatientInfo.getZuZhiJGID()); List<PatArchive> patArchives = null; if (ObjectUtils.isNotEmpty(patArchive.getIdcardno())) smartor/src/main/java/com/smartor/service/impl/XHGatherPatArchiveServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,445 @@ package com.smartor.service.impl; import com.google.common.reflect.TypeToken; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUserDept; import com.ruoyi.common.core.domain.entity.SysUserRole; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.http.HttpUtils; import com.smartor.domain.*; import com.smartor.mapper.*; import com.smartor.service.IHNGatherPatArchiveService; import com.smartor.service.IPatArchiveService; import com.smartor.service.IPatMedInhospService; import com.smartor.service.IXHGatherPatArchiveService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.File; import java.io.FileWriter; import java.lang.reflect.Type; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.*; /** * æ°åæ°æ®ééå¤ç * * @author smartor * @date 2023-03-04 */ @Slf4j @Service public class XHGatherPatArchiveServiceImpl implements IXHGatherPatArchiveService { @Value("${hosp_info_url}") private String hospInfoUrl; @Autowired IPatMedInhospService patMedInhospService; @Autowired IPatArchiveService patArchiveService; /** * è·åæ£è åºå ¥é¢ä¿¡æ¯ * * @param cry åºå ¥é¢ç±»åï¼0-å ¥é¢ï¼1-åºé¢ * @param startTime å¼å§æ¶é´ * @param endTime ç»ææ¶é´ */ @Transactional public void getInHospDataGather(String cry, LocalDateTime startTime, LocalDateTime endTime) { String typeName = "0".equals(cry) ? "å ¥é¢" : "åºé¢"; log.info("ãgetInHospInfoãå¼å§è·å{}æ£è ä¿¡æ¯ï¼æ¶é´èå´ï¼{} ~ {}", typeName, startTime, endTime); long startTimeMillis = System.currentTimeMillis(); try { // ç¬¬ä¸æ¥ï¼æå»ºè¯·æ±åæ°å¹¶è°ç¨HISæ¥å£ List<ThiedInhospInfo> thiedInhospInfoList = fetchHisData(cry, startTime, endTime); if (CollectionUtils.isEmpty(thiedInhospInfoList)) { log.info("ãgetInHospInfoã{}æ£è ä¿¡æ¯ä¸ºç©ºï¼è·³è¿å¤ç", typeName); return; } log.info("ãgetInHospInfoãè·åå°{}æ¡{}æ£è ä¿¡æ¯", thiedInhospInfoList.size(), typeName); // ç¬¬äºæ¥ï¼ä¿ååå§æ°æ®å°æä»¶ï¼ç¨äºå¤ä»½ï¼ saveRawDataToFile(cry, thiedInhospInfoList); // ç¬¬ä¸æ¥ï¼å¤çæ£è æ°æ® processPatientData(thiedInhospInfoList, cry); long endTimeMillis = System.currentTimeMillis(); log.info("ãgetInHospInfoã{}æ£è ä¿¡æ¯å¤ç宿ï¼èæ¶ï¼{}ms", typeName, endTimeMillis - startTimeMillis); } catch (Exception e) { log.error("ãgetInHospInfoãè·å{}æ£è ä¿¡æ¯å¼å¸¸", typeName, e); throw new RuntimeException("è·å" + typeName + "æ£è ä¿¡æ¯å¤±è´¥", e); } } /** * ç¬¬ä¸æ¥ï¼è°ç¨HISæ¥å£è·åæ°æ® */ private List<ThiedInhospInfo> fetchHisData(String cry, LocalDateTime startTime, LocalDateTime endTime) { try { // æå»ºè¯·æ±åæ° Map<String, String> requestParams = buildRequestParams(cry, startTime, endTime); // æå»ºè¯·æ±å¤´ Map<String, String> headers = buildRequestHeaders(startTime); // åéHTTPè¯·æ± String result = HttpUtils.sendPostByHeader(hospInfoUrl, new Gson().toJson(requestParams), headers); // è§£æååºæ°æ® return parseResponseData(result); } catch (Exception e) { log.error("ãfetchHisDataãè°ç¨HISæ¥å£å¼å¸¸", e); throw e; } } /** * ç¬¬äºæ¥ï¼ä¿ååå§æ°æ®å°æä»¶ */ private void saveRawDataToFile(String cry, List<ThiedInhospInfo> dataList) { try { String typeName = "0".equals(cry) ? "å ¥é¢ä¿¡æ¯" : "åºé¢ä¿¡æ¯"; String filename = typeName + "_" + System.currentTimeMillis() + ".json"; String filePath = "D:\\public\\HISæ°æ®éé\\" + filename; File file = new File(filePath); File parentDir = file.getParentFile(); if (!parentDir.exists()) { parentDir.mkdirs(); } if (!file.exists()) { file.createNewFile(); } // å°æ°æ®åå ¥æä»¶ try (FileWriter writer = new FileWriter(file)) { writer.write(new Gson().toJson(dataList)); } log.info("ãsaveRawDataToFileãåå§æ°æ®å·²ä¿åå°æä»¶ï¼{}", filePath); } catch (Exception e) { log.error("ãsaveRawDataToFileãä¿ååå§æ°æ®å°æä»¶å¼å¸¸", e); // æä»¶ä¿å失败ä¸å½±å主æµç¨ï¼åªè®°å½æ¥å¿ } } /** * ç¬¬ä¸æ¥ï¼å¤çæ£è æ°æ® */ private void processPatientData(List<ThiedInhospInfo> thiedInhospInfoList, String cry) { int successCount = 0; int skipCount = 0; int errorCount = 0; for (ThiedInhospInfo thiedInhospInfo : thiedInhospInfoList) { try { if (processSinglePatient(thiedInhospInfo, cry)) { successCount++; } else { skipCount++; } } catch (Exception e) { errorCount++; log.error("ãprocessPatientDataãå¤çæ£è æ°æ®å¼å¸¸ï¼æ£è IDï¼{}", thiedInhospInfo.getPatiMediaNo(), e); } } log.info("ãprocessPatientDataãæ£è æ°æ®å¤çå®æï¼æåï¼{}ï¼è·³è¿ï¼{}ï¼å¤±è´¥ï¼{}", successCount, skipCount, errorCount); } /** * æå»ºè¯·æ±å¤´ */ private Map<String, String> buildRequestHeaders(LocalDateTime startTime) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"); Map<String, String> header = new HashMap<>(); header.put("x-hcsb-serviceno", "IS002347"); header.put("x-hcsb-version", "2.0"); header.put("x-hcsb-sourcesyscode", "14"); header.put("x-hcsb-token", "ArGE2JnHtxG/Zx5nrnGY4eOfMUJGGJokAJHigG1BrCY="); header.put("x-hcsb-msgdate", startTime.format(formatter)); return header; } /** * æå»ºè¯·æ±åæ° */ private Map<String, String> buildRequestParams(String cry, LocalDateTime startTime, LocalDateTime endTime) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"); Map<String, String> req = new HashMap<>(); if ("1".equals(cry)) { // åºé¢åæ° req.put("cashStartDate", startTime.format(formatter)); req.put("cashEndDate", endTime.format(formatter)); req.put("currStatus", "4"); } else { // å ¥é¢åæ° req.put("admissStartDate", startTime.format(formatter)); req.put("admissEndDate", endTime.format(formatter)); req.put("currStatus", "2"); } return req; } /** * è§£æååºæ°æ® */ private List<ThiedInhospInfo> parseResponseData(String result) { try { Gson gson = new Gson(); JsonObject jsonObject = gson.fromJson(result, JsonObject.class); JsonArray resultArray = jsonObject.getAsJsonObject("data").getAsJsonArray("result"); Type resultType = new TypeToken<List<ThiedInhospInfo>>() { }.getType(); return gson.fromJson(resultArray, resultType); } catch (Exception e) { log.error("ãparseResponseDataãè§£æååºæ°æ®å¼å¸¸ï¼åå§æ°æ®ï¼{}", result, e); throw e; } } /** * å¤çå个æ£è æ°æ® */ private boolean processSinglePatient(ThiedInhospInfo thiedInhospInfo, String cry) { // éªè¯èº«ä»½è¯å· if (StringUtils.isEmpty(thiedInhospInfo.getPatiIdCardNo())) { log.warn("ãprocessSinglePatientãæ£è 身份è¯å·ä¸ºç©ºï¼è·³è¿å¤çï¼æ£è ç¼å·ï¼{}", thiedInhospInfo.getPatiMediaNo()); return false; } // å¤çæ£è æ¡£æ¡ä¿¡æ¯ PatArchive patArchive = processPatientArchive(thiedInhospInfo, cry); // å¤çæ£è ä½é¢ä¿¡æ¯ processPatientInhospInfo(thiedInhospInfo, patArchive, cry); return true; } /** * å¤çæ£è æ¡£æ¡ä¿¡æ¯ */ private PatArchive processPatientArchive(ThiedInhospInfo thiedInhospInfo, String cry) { // æ¥è¯¢æ£è æ¯å¦å·²åå¨ PatArchive queryArchive = new PatArchive(); queryArchive.setIdcardno(thiedInhospInfo.getPatiIdCardNo().trim()); List<PatArchive> existingArchives = patArchiveService.selectPatArchiveList(queryArchive); // æå»ºæ£è æ¡£æ¡ä¿¡æ¯ PatArchive patArchive = buildPatientArchive(thiedInhospInfo, cry); // ä¿åææ´æ°æ£è æ¡£æ¡ if (CollectionUtils.isEmpty(existingArchives)) { patArchiveService.insertPatArchive(patArchive); log.debug("ãprocessPatientArchiveãæ°å¢æ£è æ¡£æ¡ï¼æ£è ç¼å·ï¼{}", patArchive.getPatientno()); } else { patArchive.setId(existingArchives.get(0).getId()); patArchiveService.updateArchive(patArchive); log.debug("ãprocessPatientArchiveãæ´æ°æ£è æ¡£æ¡ï¼æ£è ç¼å·ï¼{}", patArchive.getPatientno()); } return patArchive; } /** * å¤çæ£è ä½é¢ä¿¡æ¯ */ private void processPatientInhospInfo(ThiedInhospInfo thiedInhospInfo, PatArchive patArchive, String cry) { // æå»ºä½é¢ä¿¡æ¯ PatMedInhosp patMedInhosp = buildPatientInhospInfo(thiedInhospInfo, patArchive, cry); // æ¥è¯¢æ¯å¦å·²åå¨ä½é¢è®°å½ PatMedInhosp queryInhosp = new PatMedInhosp(); queryInhosp.setPatno(patArchive.getPatientno()); queryInhosp.setSerialnum(patMedInhosp.getSerialnum()); List<PatMedInhosp> existingInhosps = patMedInhospService.selectPatMedInhospList(queryInhosp); // ä¿åææ´æ°ä½é¢ä¿¡æ¯ if (CollectionUtils.isNotEmpty(existingInhosps)) { patMedInhosp.setInhospid(existingInhosps.get(0).getInhospid()); patMedInhospService.updatePatMedInhosp(patMedInhosp); log.debug("ãprocessPatientInhospInfoãæ´æ°ä½é¢ä¿¡æ¯ï¼æ£è ç¼å·ï¼{}ï¼æµæ°´å·ï¼{}", patArchive.getPatientno(), patMedInhosp.getSerialnum()); } else { patMedInhospService.insertPatMedInhosp(patMedInhosp); log.debug("ãprocessPatientInhospInfoãæ°å¢ä½é¢ä¿¡æ¯ï¼æ£è ç¼å·ï¼{}ï¼æµæ°´å·ï¼{}", patArchive.getPatientno(), patMedInhosp.getSerialnum()); } } /** * æå»ºæ£è ä½é¢ä¿¡æ¯ */ private PatMedInhosp buildPatientInhospInfo(ThiedInhospInfo thiedInhospInfo, PatArchive patArchive, String cry) { PatMedInhosp patMedInhosp = new PatMedInhosp(); // æ£è åºæ¬ä¿¡æ¯ patMedInhosp.setPatid(patArchive.getId()); patMedInhosp.setPatno(patArchive.getPatientno()); patMedInhosp.setPatname(patArchive.getName()); // æ¤çä¿¡æ¯ patMedInhosp.setNurseId(thiedInhospInfo.getNurseId()); patMedInhosp.setNurseName(thiedInhospInfo.getNurseName()); // ä½é¢ä¿¡æ¯ patMedInhosp.setSerialnum(thiedInhospInfo.getInpatientId()); patMedInhosp.setFuflag("1"); patMedInhosp.setInhospstate("0".equals(cry) ? "0" : "1"); // å»é¢ååºä½ä¿¡æ¯ patMedInhosp.setHospitalcode(thiedInhospInfo.getAreaId()); patMedInhosp.setBedNo(thiedInhospInfo.getAdmissBedNo()); // æ¶é´ä¿¡æ¯ if (StringUtils.isNotEmpty(thiedInhospInfo.getAdmissDate())) { try { patMedInhosp.setStarttime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getAdmissDate())); } catch (ParseException e) { log.warn("ãbuildPatientInhospInfoãè§£æå ¥é¢æ¶é´å¤±è´¥ï¼{}", thiedInhospInfo.getAdmissDate(), e); } } if (StringUtils.isNotEmpty(thiedInhospInfo.getOutDate())) { try { patMedInhosp.setEndtime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getOutDate())); } catch (ParseException e) { log.warn("ãbuildPatientInhospInfoãè§£æåºé¢æ¶é´å¤±è´¥ï¼{}", thiedInhospInfo.getOutDate(), e); } } // åºé¢ä¿¡æ¯ if (cry.equals("1")) { patMedInhosp.setLeaveldeptcode(thiedInhospInfo.getCurrDeptId()); patMedInhosp.setLeaveldeptname(thiedInhospInfo.getCurrDeptName()); patMedInhosp.setLeavediagname(thiedInhospInfo.getDiagName()); patMedInhosp.setLeaveicd10code(thiedInhospInfo.getDiagIcd10()); patMedInhosp.setOutWayId(thiedInhospInfo.getOutWayId()); patMedInhosp.setOutWayName(thiedInhospInfo.getOutWayName()); // ç åºä¿¡æ¯ patMedInhosp.setLeavehospitaldistrictid(thiedInhospInfo.getCurrWardCode()); patMedInhosp.setLeavehospitaldistrictcode(thiedInhospInfo.getCurrWardId()); patMedInhosp.setLeavehospitaldistrictname(thiedInhospInfo.getCurrWardName()); patMedInhosp.setLeaveldeptid(thiedInhospInfo.getCurrDeptCode()); } else { //å ¥é¢ patMedInhosp.setDeptcode(thiedInhospInfo.getCurrDeptId()); patMedInhosp.setDeptname(thiedInhospInfo.getCurrDeptName()); patMedInhosp.setDiagname(thiedInhospInfo.getDiagName()); patMedInhosp.setIcd10code(thiedInhospInfo.getDiagIcd10()); patMedInhosp.setHospitaldistrictid(thiedInhospInfo.getAdmissWardCode()); patMedInhosp.setHospitaldistrictcode(thiedInhospInfo.getAdmissWardId()); patMedInhosp.setHospitaldistrictname(thiedInhospInfo.getAdmissWardName()); } // å»çä¿¡æ¯ patMedInhosp.setDrname(thiedInhospInfo.getDoctName()); patMedInhosp.setDrcode(thiedInhospInfo.getDoctId()); // ç¶æä¿¡æ¯ patMedInhosp.setSchemestatus("0".equals(cry) ? 1L : 2L); // ç³»ç»å段 patMedInhosp.setDelFlag("0"); patMedInhosp.setOrgid("1"); return patMedInhosp; } /** * æå»ºæ£è æ¡£æ¡ä¿¡æ¯ */ private PatArchive buildPatientArchive(ThiedInhospInfo thiedInhospInfo, String cry) { PatArchive patArchive = new PatArchive(); // åºæ¬ä¿¡æ¯ patArchive.setPatientno(thiedInhospInfo.getPatiMediaNo()); patArchive.setIdcardno(thiedInhospInfo.getPatiIdCardNo().trim()); patArchive.setName(thiedInhospInfo.getPatiRecordName()); patArchive.setSourcefrom(2); patArchive.setPattype("2"); // æ§å« patArchive.setSex("ç·".equals(thiedInhospInfo.getPatiRecordGender()) ? 1L : 2L); // æ°æåç±è´¯ patArchive.setNation(thiedInhospInfo.getPatiNation()); patArchive.setNativePlace(thiedInhospInfo.getPatiNationality()); // å± ä½å°å String homeAddr = thiedInhospInfo.getPatiHomeAddr(); patArchive.setPlaceOfResidence(StringUtils.isNotEmpty(homeAddr) ? homeAddr.replace("null", "") : ""); // åºçæ¥æ if (StringUtils.isNotEmpty(thiedInhospInfo.getPatiBirthday())) { try { patArchive.setBirthdate(new SimpleDateFormat("yyyy-MM-dd").parse(thiedInhospInfo.getPatiBirthday())); } catch (ParseException e) { log.warn("ãbuildPatientArchiveãè§£æåºçæ¥æå¤±è´¥ï¼{}", thiedInhospInfo.getPatiBirthday(), e); } } // å¹´é¾ if (thiedInhospInfo.getTreateAge() != null) { patArchive.setAge(Long.valueOf(thiedInhospInfo.getTreateAge())); } patArchive.setAgeUnit(thiedInhospInfo.getTreatAgeunit()); // èç³»æ¹å¼ patArchive.setTelcode(thiedInhospInfo.getCompanyTelNum()); patArchive.setRelativetelcode(thiedInhospInfo.getContactPersonPhone()); // åºé¢æ¹å¼å¤çï¼æ»äº¡çç¹æ®æ åµï¼ if (StringUtils.isNotEmpty(thiedInhospInfo.getOutWayId()) && "4".equals(thiedInhospInfo.getOutWayId())) { patArchive.setNotrequiredFlag("1"); patArchive.setNotrequiredreason(thiedInhospInfo.getOutWayName()); } if ("1".equals(cry) && StringUtils.isEmpty(thiedInhospInfo.getOutWayId())) { patArchive.setNotrequiredFlag("1"); patArchive.setNotrequiredreason("åºé¢æ¹å¼ä¸ºç©º"); } // ç³»ç»å段 patArchive.setDelFlag("0"); patArchive.setCreateTime(new Date()); patArchive.setUpdateTime(new Date()); return patArchive; } }