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("没有病历数据需要同步");
}
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);
}
}