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 edc28c872..4af86798b 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 @@ -2,6 +2,12 @@ package com.healthlink.his.web.emr.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.core.common.core.domain.R; +import com.core.common.core.domain.entity.SysUser; +import com.core.system.mapper.SysUserMapper; +import com.healthlink.his.administration.domain.Encounter; +import com.healthlink.his.administration.domain.Patient; +import com.healthlink.his.administration.mapper.EncounterMapper; +import com.healthlink.his.administration.mapper.PatientMapper; import com.healthlink.his.document.domain.Emr; import com.healthlink.his.document.service.IEmrService; import com.healthlink.his.emr.domain.EmrRevision; @@ -31,6 +37,9 @@ public class EmrSyncController { private final IEmrRevisionService emrRevisionService; private final IEmrSearchIndexService emrSearchIndexService; private final JdbcTemplate jdbcTemplate; + private final PatientMapper patientMapper; + private final EncounterMapper encounterMapper; + private final SysUserMapper sysUserMapper; /** * 同步EMR数据 @@ -97,15 +106,61 @@ public class EmrSyncController { String chiefComplaint = contentMap.getOrDefault("chiefComplaint", ""); String diagnosis = contentMap.getOrDefault("diagnosis", ""); + // 获取患者详细信息 + Patient patient = patientMapper.selectById(emr.getPatientId()); + String patientName = patient != null ? patient.getName() : "未知"; + String patientGender = ""; + String patientAge = ""; + String patientPhone = ""; + String patientIdCard = ""; + if (patient != null) { + // 性别 + if (patient.getGenderEnum() != null) { + patientGender = patient.getGenderEnum() == 1 ? "男" : "女"; + } + // 年龄 + 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(); + } + + // 获取就诊信息 + String encounterNo = ""; + if (emr.getEncounterId() != null) { + var encounter = encounterMapper.selectById(emr.getEncounterId()); + if (encounter != null) { + encounterNo = encounter.getBusNo(); + } + } + EmrSearchIndex index = new EmrSearchIndex(); index.setEmrId(emr.getId()); index.setEncounterId(emr.getEncounterId()); index.setPatientId(emr.getPatientId()); - index.setPatientName("患者" + emr.getPatientId()); + index.setPatientName(patientName); + index.setPatientGender(patientGender); + index.setPatientAge(patientAge); + index.setPatientPhone(patientPhone); + index.setPatientIdCard(patientIdCard); + index.setEncounterNo(encounterNo); index.setEmrType(emr.getClassEnum() == 1 ? "OUTPATIENT" : "INPATIENT"); index.setEmrTitle(chiefComplaint.isEmpty() ? "未命名病历" : chiefComplaint); index.setDiagnosisText(diagnosis); - index.setDoctorName("医生" + emr.getRecordId()); + // 获取医生姓名 + 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++; diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V103__add_patient_info_to_emr_search_index.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V103__add_patient_info_to_emr_search_index.sql new file mode 100644 index 000000000..cd073f982 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V103__add_patient_info_to_emr_search_index.sql @@ -0,0 +1,13 @@ +-- V103__add_patient_info_to_emr_search_index.sql +-- 为病历检索索引添加患者基本信息 + +-- 添加患者信息字段 +ALTER TABLE emr_search_index ADD COLUMN IF NOT EXISTS patient_gender VARCHAR(10); +ALTER TABLE emr_search_index ADD COLUMN IF NOT EXISTS patient_age VARCHAR(10); +ALTER TABLE emr_search_index ADD COLUMN IF NOT EXISTS patient_phone VARCHAR(20); +ALTER TABLE emr_search_index ADD COLUMN IF NOT EXISTS patient_id_card VARCHAR(20); +ALTER TABLE emr_search_index ADD COLUMN IF NOT EXISTS encounter_no VARCHAR(50); + +-- 添加索引 +CREATE INDEX IF NOT EXISTS idx_emr_search_patient_name ON emr_search_index(patient_name); +CREATE INDEX IF NOT EXISTS idx_emr_search_encounter_no ON emr_search_index(encounter_no); diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/emr/domain/EmrSearchIndex.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/emr/domain/EmrSearchIndex.java index 45eefdfcd..a0451c707 100644 --- a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/emr/domain/EmrSearchIndex.java +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/emr/domain/EmrSearchIndex.java @@ -5,6 +5,8 @@ import com.core.common.core.domain.HisBaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; +import java.util.Date; + @Data @EqualsAndHashCode(callSuper = true) @TableName("emr_search_index") @@ -19,6 +21,14 @@ public class EmrSearchIndex extends HisBaseEntity { private Long patientId; @TableField("patient_name") private String patientName; + @TableField("patient_gender") + private String patientGender; + @TableField("patient_age") + private String patientAge; + @TableField("patient_phone") + private String patientPhone; + @TableField("patient_id_card") + private String patientIdCard; @TableField("emr_type") private String emrType; @TableField("emr_title") @@ -29,4 +39,6 @@ public class EmrSearchIndex extends HisBaseEntity { private String doctorName; @TableField("department_name") private String departmentName; + @TableField("encounter_no") + private String encounterNo; } diff --git a/healthlink-his-ui/src/views/emrsearch/index.vue b/healthlink-his-ui/src/views/emrsearch/index.vue index 35f67b8cd..ed052c381 100644 --- a/healthlink-his-ui/src/views/emrsearch/index.vue +++ b/healthlink-his-ui/src/views/emrsearch/index.vue @@ -1,143 +1,296 @@ + +