fix(emr): 修复病历检索同步逻辑

- 添加调试日志,打印病历ID、patientId、encounterId、recordId
- 添加患者信息解析:性别、年龄、电话、身份证
- 添加医生姓名解析:优先使用nickName,fallback到userName
This commit is contained in:
2026-06-21 14:57:54 +08:00
parent 2956296301
commit 0f6df6047b

View File

@@ -78,6 +78,15 @@ public class EmrSyncController {
return R.ok("没有病历数据需要同步"); 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 revisionCount = 0;
int searchIndexCount = 0; int searchIndexCount = 0;
@@ -107,35 +116,58 @@ public class EmrSyncController {
String diagnosis = contentMap.getOrDefault("diagnosis", ""); String diagnosis = contentMap.getOrDefault("diagnosis", "");
// 获取患者详细信息 // 获取患者详细信息
Patient patient = patientMapper.selectById(emr.getPatientId()); Patient patient = null;
String patientName = patient != null ? patient.getName() : "未知"; String patientName = "未知";
String patientGender = ""; String patientGender = "";
String patientAge = ""; String patientAge = "";
String patientPhone = ""; String patientPhone = "";
String patientIdCard = ""; String patientIdCard = "";
if (patient != null) { String encounterNo = "";
// 性别
if (patient.getGenderEnum() != null) { if (emr.getPatientId() != null) {
patientGender = patient.getGenderEnum() == 1 ? "" : ""; 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());
} }
// 年龄 } else {
if (patient.getBirthDate() != null) { log.warn("病历缺少patientId: emrId={}", emr.getId());
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();
} }
// 获取就诊信息 // 获取就诊信息
String encounterNo = "";
if (emr.getEncounterId() != null) { if (emr.getEncounterId() != null) {
var encounter = encounterMapper.selectById(emr.getEncounterId()); var encounter = encounterMapper.selectById(emr.getEncounterId());
if (encounter != null) { 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.setEmrType(emr.getClassEnum() == 1 ? "OUTPATIENT" : "INPATIENT");
index.setEmrTitle(chiefComplaint.isEmpty() ? "未命名病历" : chiefComplaint); index.setEmrTitle(chiefComplaint.isEmpty() ? "未命名病历" : chiefComplaint);
index.setDiagnosisText(diagnosis); 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.setDoctorName(doctorName);
index.setCreateTime(emr.getCreateTime()); index.setCreateTime(emr.getCreateTime());
emrSearchIndexService.save(index); emrSearchIndexService.save(index);
searchIndexCount++; searchIndexCount++;
} catch (Exception e) { } catch (Exception e) {
log.warn("创建搜索索引失败: emrId={}, error={}", emr.getId(), e.getMessage()); log.warn("创建搜索索引失败: emrId={}, error={}", emr.getId(), e.getMessage(), e);
} }
} }