| | |
| | | import java.time.Period; |
| | | import java.time.ZoneId; |
| | | import java.time.temporal.ChronoUnit; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | |
| | | @Value("${defaultPwd}") |
| | | private String defaultPwd; |
| | | |
| | | @Value("${noLongTask}") |
| | | private List<String> noLongTask; |
| | | |
| | | public Boolean generalInterface(Map dataMap) { |
| | | Map XiaoXiTou = (Map) dataMap.get("XiaoXiTou"); |
| | |
| | | } |
| | | if (StringUtils.isNotEmpty(externalDept.getShiJianDM()) && externalDept.getShiJianDM().equals("1")) { |
| | | int i = sysDeptMapper.insertDept(sysDept); |
| | | log.info("ServiceExternalServiceImpl---addDeptInfo是否新增成功:{}", i); |
| | | log.info("ServiceExternalServiceImpl---addDeptInfo01是否新增成功:{}", i); |
| | | } else { |
| | | int i = sysDeptMapper.updateDept(sysDept); |
| | | log.info("ServiceExternalServiceImpl---addDeptInfo是否修改成功:{}", i); |
| | | log.info("ServiceExternalServiceImpl---addDeptInfo02是否修改成功:{}", i); |
| | | } |
| | | return true; |
| | | } |
| | |
| | | sysUser.setUserName(externalUserInfo.getYongHuDLM()); |
| | | sysUser.setOrgid(externalUserInfo.getZuZhiJGID()); |
| | | //根据userName判断一下,是不是之前有新增 |
| | | SysUser sysUser1 = sysUserMapper.selectUserByUserName(externalUserInfo.getYongHuDLM()); |
| | | |
| | | SysUser sysUser1 = null; |
| | | List<SysUser> sysUserList = sysUserMapper.selectUserList(sysUser); |
| | | if (CollectionUtils.isNotEmpty(sysUserList)) { |
| | | sysUser1 = sysUserList.get(0); |
| | | if (sysUserList.size() > 1) sysUser1 = getUser(sysUserList); |
| | | } |
| | | sysUser.setGuid(externalUserInfo.getZuZhiJGID()); |
| | | sysUser.setNickName(externalUserInfo.getYongHuXM()); |
| | | sysUser.setUserType(""); |
| | | sysUser.setDeptId(null); |
| | | sysUser.setTitle(null); |
| | | |
| | | BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); |
| | | sysUser.setPassword(passwordEncoder.encode(defaultPwd)); |
| | | |
| | | sysUser.setHisUserId(externalUserInfo.getYongHuID()); |
| | | sysUser.setPhonenumber(externalUserInfo.getLianXiDH()); |
| | |
| | | } |
| | | sysUser.setBirthday(externalUserInfo.getChuShengRQ()); |
| | | if (ObjectUtils.isEmpty(sysUser1)) { |
| | | BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); |
| | | sysUser.setPassword(passwordEncoder.encode(defaultPwd)); |
| | | int i = sysUserMapper.insertUser(sysUser); |
| | | log.info("ServiceExternalServiceImpl---addDeptInfo是否新增成功:{}", i); |
| | | } else { |
| | | sysUser.setUserId(sysUser1.getUserId()); |
| | | int i = sysUserMapper.updateUser(sysUser); |
| | | log.info("ServiceExternalServiceImpl---addDeptInfo是否修改成功:{}", i); |
| | | log.info("ServiceExternalServiceImpl---addDeptInfo是否修改成功03:{}", i); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | |
| | | private SysUser getUser(List<SysUser> sysUserList) { |
| | | SysUser sysUser = null; |
| | | if (CollectionUtils.isNotEmpty(sysUserList) && sysUserList.size() > 1) { |
| | | // 按create_time降序排序,获取最新的记录 |
| | | List<SysUser> sortedList = sysUserList.stream().sorted(Comparator.comparing(SysUser::getCreateTime).reversed()).collect(Collectors.toList()); |
| | | |
| | | // 第一条(最新的)赋值给sysUser1 |
| | | sysUser = sortedList.get(0); |
| | | |
| | | // 获取需要删除的ID(从第二条开始) |
| | | List<Long> idsToDelete = sortedList.stream().skip(1).map(SysUser::getUserId).collect(Collectors.toList()); |
| | | Long[] idArray = idsToDelete.toArray(new Long[0]); |
| | | // 批量删除其他记录 |
| | | if (!idsToDelete.isEmpty()) { |
| | | sysUserMapper.deleteUserByIds(idArray); |
| | | } |
| | | } |
| | | return sysUser; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean addOrganInfo(Map dataMap) { |
| | |
| | | externalInHospPatientInfo.setZhuZhiYSID(externalInDeptPatientInfo.getZhuZhiYSID()); |
| | | externalInHospPatientInfo.setZhuZhiYSXM(externalInDeptPatientInfo.getZhuZhiYSXM()); |
| | | externalInHospPatientInfo.setRuYuanSJ(externalInDeptPatientInfo.getRuYuanSJ()); |
| | | externalInHospPatientInfo.setJingGuanYSID(externalInDeptPatientInfo.getJingGuanYSID()); |
| | | externalInHospPatientInfo.setJingGuanYSXM(externalInDeptPatientInfo.getJingGuanYSXM()); |
| | | externalInHospPatientInfo.setLianXiDH(ObjectUtils.isNotEmpty(BingRenXX.get("LianXiDH")) ? BingRenXX.get("LianXiDH").toString() : null); |
| | | externalInHospPatientInfo.setDangQianCWID(ObjectUtils.isNotEmpty(BingRenXX.get("DangQianCWID")) ? BingRenXX.get("DangQianCWID").toString() : null); |
| | | externalInHospPatientInfo.setDangQianCWMC(ObjectUtils.isNotEmpty(BingRenXX.get("DangQianCWMC")) ? BingRenXX.get("DangQianCWMC").toString() : null); |
| | |
| | | //新增患者基本信息新增或修改 |
| | | PatArchive patArchive = addPatArchive(externalInHospPatientInfo, externalInHospPatientAddrInfo, externalInHospPatientLiaisonInfo); |
| | | |
| | | |
| | | PatMedInhosp patMedInhosp = new PatMedInhosp(); |
| | | patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao()); |
| | | patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID()); |
| | |
| | | if (CollectionUtils.isNotEmpty(patMedInhospList)) { |
| | | patMedInhosp1.setUpdateTime(new Date()); |
| | | patMedInhosp1.setOrgid(ObjectUtils.isNotEmpty(BingRenXX) && ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null); |
| | | if (CollectionUtils.isNotEmpty(noLongTask) && noLongTask.contains(patMedInhosp1.getOrgid())) { |
| | | //不需要长期任务随访 |
| | | patMedInhosp1.setFuflag("1"); |
| | | } |
| | | int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | if (i != 1) return false; |
| | | } else { |
| | |
| | | patMedInhosp1.setPatname(patArchive.getName()); |
| | | |
| | | patMedInhosp1.setCreateTime(new Date()); |
| | | if (CollectionUtils.isNotEmpty(noLongTask) && noLongTask.contains(patMedInhosp1.getOrgid())) { |
| | | //不需要长期任务随访 |
| | | patMedInhosp1.setFuflag("1"); |
| | | } |
| | | |
| | | int i = patMedInhospMapper.insertPatMedInhosp(patMedInhosp1); |
| | | if (i != 1) return false; |
| | | } |
| | |
| | | } |
| | | } |
| | | try { |
| | | patMedInhosp1.setFudate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(SuiFangJH.get("SuiFangRQ").toString())); |
| | | if (!Objects.isNull(SuiFangJH.get("SuiFangRQ"))) |
| | | patMedInhosp1.setFudate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(SuiFangJH.get("SuiFangRQ").toString())); |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | if (CollectionUtils.isNotEmpty(patMedInhospList)) { |
| | | patMedInhosp1.setUpdateTime(new Date()); |
| | | patMedInhosp1.setOrgid(ObjectUtils.isNotEmpty(BingRenXX) && ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null); |
| | | if (CollectionUtils.isNotEmpty(noLongTask) && noLongTask.contains(patMedInhosp1.getOrgid())) { |
| | | //不需要长期任务随访 |
| | | patMedInhosp1.setFuflag("1"); |
| | | } |
| | | int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); |
| | | if (i != 1) return false; |
| | | } else { |
| | |
| | | patMedInhosp1.setPatname(patArchive.getName()); |
| | | |
| | | patMedInhosp1.setCreateTime(new Date()); |
| | | if (CollectionUtils.isNotEmpty(noLongTask) && noLongTask.contains(patMedInhosp1.getOrgid())) { |
| | | //不需要长期任务随访 |
| | | patMedInhosp1.setFuflag("1"); |
| | | } |
| | | int i = patMedInhospMapper.insertPatMedInhosp(patMedInhosp1); |
| | | if (i != 1) return false; |
| | | } |
| | |
| | | @Override |
| | | public Boolean addFinshJZInfo(Map dataMap) { |
| | | log.info("ServiceExternalServiceImpl---addFinshJZInfo的新增的值为:{}", dataMap); |
| | | //先对表进行维护 |
| | | tableMaintenance(); |
| | | |
| | | Map yeWuXX = (Map) dataMap.get("YeWuXX"); |
| | | Map XiaoXiTou = (Map) dataMap.get("XiaoXiTou"); |
| | | String FaSongJGID = ObjectUtils.isNotEmpty(XiaoXiTou.get("FaSongJGID")) ? XiaoXiTou.get("FaSongJGID").toString() : null; |
| | |
| | | patMedOuthosp.setOuthospno(externalInHospPatientInfo.getBingAnHao()); |
| | | patMedOuthosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID()); |
| | | List<PatMedOuthosp> patMedOuthosps = patMedOuthospMapper.selectPatMedOuthospList(patMedOuthosp); |
| | | for (PatMedOuthosp patMedOuthosp1 : patMedOuthosps) { |
| | | PatArchive pa = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosp1.getPatid()); |
| | | if (patArchive.getBirthdate() != null) { |
| | | Map<String, String> map = calculateAge(pa.getBirthdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now()); |
| | | pa.setAge(ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null); |
| | | pa.setAgeUnit(map.get("ageUnit")); |
| | | pa.setAge2(ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null); |
| | | pa.setAgeUnit2(map.get("ageUnit2")); |
| | | patMedOuthosp1.setAge(pa.getAge() + pa.getAgeUnit() + pa.getAge2() + pa.getAgeUnit2()); |
| | | patMedOuthosp1.setTelcode(patArchive.getTelcode()); |
| | | patMedOuthosp1.setIdcardno(patArchive.getIdcardno()); |
| | | } |
| | | } |
| | | |
| | | patMedOuthosp.setPatid(patArchive.getId()); |
| | | patMedOuthosp.setPatno(externalInHospPatientInfo.getBingAnHao()); |
| | |
| | | patMedOuthosp.setAdmitdate(externalJZInfo.getJiuZhenRQ()); |
| | | patMedOuthosp.setOrgid(FaSongJGID); |
| | | patMedOuthosp.setHospitalname(FaSongJGMC); |
| | | patMedOuthosp.setIdcardno(patArchive.getIdcardno()); |
| | | |
| | | //这个需要等HIS那边告诉取哪个字段,现在还是不对的 |
| | | patMedOuthosp.setFudate(externalJZInfo.getSfrq()); |
| | | |
| | | for (ExternalDiagnosisInfo externalDiagnosisInfo : externalDiagnosisInfoList) { |
| | | if (externalDiagnosisInfo.getZhenDuanLBMC().equals("主诊断")) { |
| | |
| | | patMedOuthosp.setDrcode(externalDiagnosisInfo.getZhenDuanYSID()); |
| | | patMedOuthosp.setDrname(externalDiagnosisInfo.getZhenDuanYSXM()); |
| | | patMedOuthosp.setIcd10code(externalDiagnosisInfo.getIcd10()); |
| | | patMedOuthosp.setFuflag("0"); |
| | | } |
| | | } |
| | | for (ExternalWZInfo externalWZInfo : ExternalWZInfoList) { |
| | |
| | | if (CollectionUtils.isNotEmpty(patMedOuthosps)) { |
| | | patMedOuthosp.setId(patMedOuthosps.get(0).getId()); |
| | | patMedOuthosp.setUpdateTime(new Date()); |
| | | if (CollectionUtils.isNotEmpty(noLongTask) && noLongTask.contains(patMedOuthosp.getOrgid())) { |
| | | //不需要长期任务随访,由医生自己去随访(丽水中医院首次提出) |
| | | patMedOuthosp.setFuflag("1"); |
| | | } |
| | | i = patMedOuthospMapper.updatePatMedOuthosp(patMedOuthosp); |
| | | } else { |
| | | patMedOuthosp.setCreateTime(new Date()); |
| | | patMedOuthosp.setUpdateTime(new Date()); |
| | | if (CollectionUtils.isNotEmpty(noLongTask) && noLongTask.contains(patMedOuthosp.getOrgid())) { |
| | | //不需要长期任务随访 |
| | | patMedOuthosp.setFuflag("1"); |
| | | } |
| | | i = patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp); |
| | | } |
| | | |
| | | // //先通过身份证和科室查询该患者是否有需要随访的(景宁提出来的) |
| | | // if (patMedOuthosp.getOrgid().equals("47255004333112711A1001") && StringUtils.isNotEmpty(patMedOuthosp.getIdcardno()) && StringUtils.isNotEmpty(patMedOuthosp.getDeptcode())) { |
| | | // ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO(); |
| | | // serviceSubtaskVO.setSfzh(patMedOuthosp.getIdcardno()); |
| | | // serviceSubtaskVO.setDeptcode(patMedOuthosp.getDeptcode()); |
| | | // serviceSubtaskVO.setSendstate(2L); |
| | | // List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); |
| | | // if (CollectionUtils.isNotEmpty(serviceSubtaskList)) { |
| | | // for (ServiceSubtask serviceSubtask : serviceSubtaskList) { |
| | | // serviceSubtask.setSendstate(6L); |
| | | // serviceSubtask.setRemark("患者已经回来复诊"); |
| | | // serviceSubtask.setUpdateTime(new Date()); |
| | | // serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | if (i > 0) { |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | |
| | | public void tableMaintenance() { |
| | | // 1. 判断表数据量 |
| | | int count = patMedOuthospMapper.countPatMedOuthosp(); |
| | | if (count > 3000000) { |
| | | // 2. 冷藏表并新建 |
| | | String timeSuffix = new SimpleDateFormat("yyyyMM").format(new Date()); |
| | | String oldName = "pat_med_outhosp"; |
| | | String newName = oldName + "_" + timeSuffix; |
| | | |
| | | // 冷藏 |
| | | patMedOuthospMapper.renameTable(oldName, newName); |
| | | |
| | | // 3. 计算所有表的最大id |
| | | List<String> tableNames = patMedOuthospMapper.getAllOuthospTableNames(); |
| | | long maxId = 0; |
| | | for (String tableName : tableNames) { |
| | | Long tableMaxId = patMedOuthospMapper.getMaxIdFromTable(tableName); |
| | | if (tableMaxId != null && tableMaxId > maxId) { |
| | | maxId = tableMaxId; |
| | | } |
| | | } |
| | | |
| | | // 4. 新建(此时只剩冷表,PatMedOuthosp没了,需要新建一个) |
| | | patMedOuthospMapper.createPatMedOuthosp(newName, oldName); |
| | | |
| | | //5.设置新表自增主键 |
| | | patMedOuthospMapper.createPatMedOuthospAutoAdd(oldName); |
| | | //6. 设置新表自增起始值 |
| | | patMedOuthospMapper.setAutoIncrement(oldName, maxId + 1); |
| | | |
| | | // 7. 更新/新建视图 |
| | | // 重新获取所有表名(包含刚新建的主表) |
| | | List<String> allTables = patMedOuthospMapper.getAllOuthospTableNames(); |
| | | StringBuilder sb = new StringBuilder(); |
| | | sb.append("CREATE OR REPLACE VIEW v_pat_med_outhosp AS "); |
| | | for (int i = 0; i < allTables.size(); i++) { |
| | | sb.append("SELECT * FROM ").append(allTables.get(i)); |
| | | if (i < allTables.size() - 1) { |
| | | sb.append(" UNION ALL "); |
| | | } |
| | | } |
| | | patMedOuthospMapper.createOrReplaceView(sb.toString()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | 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())) |
| | |
| | | patMedInhosp.setDrcode(externalInHospPatientInfo.getZhuZhiYSID()); |
| | | patMedInhosp.setNurseId(externalInHospPatientInfo.getZeRenHSID()); |
| | | patMedInhosp.setNurseName(externalInHospPatientInfo.getZeRenHSXM()); |
| | | patMedInhosp.setManagementDoctor(externalInHospPatientInfo.getJingGuanYSXM()); |
| | | patMedInhosp.setManagementDoctorCode(externalInHospPatientInfo.getJingGuanYSID()); |
| | | } |
| | | if (ObjectUtils.isNotEmpty(externalInHospPatientDiagnoseInfo)) { |
| | | // patMedInhosp.setIcd10code(StringUtils.isNotEmpty(patMedInhosp.getIcd10code()) ? patMedInhosp.getIcd10code() + "," + externalInHospPatientDiagnoseInfo.getZhenDuanID() : externalInHospPatientDiagnoseInfo.getZhenDuanID()); |
| | |
| | | log.info("药品产地价格入参类型为:{}", type); |
| | | return true; |
| | | case "JZ_MZ_WanChengJZ": |
| | | log.info("完成接诊入参类型为:{}", type); |
| | | log.info("(门急诊)完成接诊入参类型为:{}", type); |
| | | return addFinshJZInfo(dataMap); |
| | | case "JZ_ZY_RuYuanDJ": |
| | | log.info("入院登记入参类型为:{}", type); |