fix(emr): 修复病历检索同步逻辑
- 添加调试日志,打印病历ID、patientId、encounterId、recordId - 添加患者信息解析:性别、年龄、电话、身份证 - 添加医生姓名解析:优先使用nickName,fallback到userName
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user