diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/emr/controller/EmrSyncController.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/emr/controller/EmrSyncController.java index 4af86798b..d1679ad24 100644 --- a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/emr/controller/EmrSyncController.java +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/emr/controller/EmrSyncController.java @@ -78,6 +78,15 @@ public class EmrSyncController { return R.ok("没有病历数据需要同步"); } + log.info("共找到 {} 条病历数据", emrList.size()); + + // 调试:打印前3条数据的字段值 + for (int i = 0; i < Math.min(3, emrList.size()); i++) { + Emr emr = emrList.get(i); + log.info("病历[{}]: id={}, patientId={}, encounterId={}, recordId={}, classEnum={}", + i, emr.getId(), emr.getPatientId(), emr.getEncounterId(), emr.getRecordId(), emr.getClassEnum()); + } + int revisionCount = 0; int searchIndexCount = 0; @@ -107,35 +116,58 @@ public class EmrSyncController { String diagnosis = contentMap.getOrDefault("diagnosis", ""); // 获取患者详细信息 - Patient patient = patientMapper.selectById(emr.getPatientId()); - String patientName = patient != null ? patient.getName() : "未知"; + Patient patient = null; + String patientName = "未知"; String patientGender = ""; String patientAge = ""; String patientPhone = ""; String patientIdCard = ""; - if (patient != null) { - // 性别 - if (patient.getGenderEnum() != null) { - patientGender = patient.getGenderEnum() == 1 ? "男" : "女"; + String encounterNo = ""; + + if (emr.getPatientId() != null) { + patient = patientMapper.selectById(emr.getPatientId()); + if (patient != null) { + patientName = patient.getName() != null ? patient.getName() : "未知"; + // 性别 + if (patient.getGenderEnum() != null) { + patientGender = patient.getGenderEnum() == 1 ? "男" : "女"; + } + // 年龄 + if (patient.getBirthDate() != null) { + try { + int age = java.time.Period.between( + patient.getBirthDate().toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDate(), + java.time.LocalDate.now() + ).getYears(); + patientAge = String.valueOf(age); + } catch (Exception e) { + log.warn("计算年龄失败: patientId={}", emr.getPatientId()); + } + } + patientPhone = patient.getPhone() != null ? patient.getPhone() : ""; + patientIdCard = patient.getIdCard() != null ? patient.getIdCard() : ""; + log.debug("患者信息: name={}, gender={}, age={}, phone={}", patientName, patientGender, patientAge, patientPhone); + } else { + log.warn("未找到患者: patientId={}", emr.getPatientId()); } - // 年龄 - if (patient.getBirthDate() != null) { - int age = java.time.Period.between( - patient.getBirthDate().toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDate(), - java.time.LocalDate.now() - ).getYears(); - patientAge = String.valueOf(age); - } - patientPhone = patient.getPhone(); - patientIdCard = patient.getIdCard(); + } else { + log.warn("病历缺少patientId: emrId={}", emr.getId()); } // 获取就诊信息 - String encounterNo = ""; if (emr.getEncounterId() != null) { var encounter = encounterMapper.selectById(emr.getEncounterId()); if (encounter != null) { - encounterNo = encounter.getBusNo(); + encounterNo = encounter.getBusNo() != null ? encounter.getBusNo() : ""; + } + } + + // 获取医生姓名 + String doctorName = "未知医生"; + if (emr.getRecordId() != null) { + var doctor = sysUserMapper.selectById(emr.getRecordId()); + if (doctor != null) { + doctorName = doctor.getNickName() != null ? doctor.getNickName() : doctor.getUserName(); } } @@ -152,20 +184,12 @@ public class EmrSyncController { index.setEmrType(emr.getClassEnum() == 1 ? "OUTPATIENT" : "INPATIENT"); index.setEmrTitle(chiefComplaint.isEmpty() ? "未命名病历" : chiefComplaint); index.setDiagnosisText(diagnosis); - // 获取医生姓名 - String doctorName = "未知医生"; - if (emr.getRecordId() != null) { - var doctor = sysUserMapper.selectById(emr.getRecordId()); - if (doctor != null) { - doctorName = doctor.getNickName(); - } - } index.setDoctorName(doctorName); index.setCreateTime(emr.getCreateTime()); emrSearchIndexService.save(index); searchIndexCount++; } catch (Exception e) { - log.warn("创建搜索索引失败: emrId={}, error={}", emr.getId(), e.getMessage()); + log.warn("创建搜索索引失败: emrId={}, error={}", emr.getId(), e.getMessage(), e); } }