From 47120926b9c4a4956710aa863ca85df9bdc664c0 Mon Sep 17 00:00:00 2001 From: chenqi Date: Sun, 21 Jun 2026 23:47:11 +0800 Subject: [PATCH] =?UTF-8?q?feat(emr):=20=E5=90=8C=E6=AD=A5=E6=97=B6?= =?UTF-8?q?=E6=B8=85=E7=A9=BA=E5=BD=92=E6=A1=A3=E5=81=87=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=B9=B6=E4=BB=8E=E7=97=85=E5=8E=86=E8=A1=A8=E7=94=9F=E6=88=90?= =?UTF-8?q?=E7=9C=9F=E5=AE=9E=E5=BD=92=E6=A1=A3=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 清空emr_archive_record表假数据 - 从doc_emr同步生成归档记录 - 同步统计增加归档记录数量 --- .../web/emr/controller/EmrSyncController.java | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) 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 a65cfdfca..d0a706658 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 @@ -10,8 +10,10 @@ 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.EmrArchiveRecord; import com.healthlink.his.emr.domain.EmrRevision; import com.healthlink.his.emr.domain.EmrSearchIndex; +import com.healthlink.his.emr.service.IEmrArchiveRecordService; import com.healthlink.his.emr.service.IEmrRevisionService; import com.healthlink.his.emr.service.IEmrSearchIndexService; import io.swagger.v3.oas.annotations.Operation; @@ -36,6 +38,7 @@ public class EmrSyncController { private final IEmrService emrService; private final IEmrRevisionService emrRevisionService; private final IEmrSearchIndexService emrSearchIndexService; + private final IEmrArchiveRecordService emrArchiveRecordService; private final JdbcTemplate jdbcTemplate; private final PatientMapper patientMapper; private final EncounterMapper encounterMapper; @@ -54,7 +57,8 @@ public class EmrSyncController { try { jdbcTemplate.execute("TRUNCATE TABLE emr_revision CASCADE"); jdbcTemplate.execute("TRUNCATE TABLE emr_search_index CASCADE"); - log.info("已清空emr_revision和emr_search_index表"); + jdbcTemplate.execute("TRUNCATE TABLE emr_archive_record CASCADE"); + log.info("已清空emr_revision、emr_search_index和emr_archive_record表"); } catch (Exception e) { log.warn("TRUNCATE失败,尝试使用DELETE: {}", e.getMessage()); // 备用方案:查询所有ID后删除 @@ -68,6 +72,11 @@ public class EmrSyncController { if (!searchIndexIds.isEmpty()) { emrSearchIndexService.removeByIds(searchIndexIds); } + List archiveIds = emrArchiveRecordService.list(new LambdaQueryWrapper().select(EmrArchiveRecord::getId)) + .stream().map(EmrArchiveRecord::getId).toList(); + if (!archiveIds.isEmpty()) { + emrArchiveRecordService.removeByIds(archiveIds); + } } // 2. 从doc_emr获取所有病历 @@ -89,6 +98,7 @@ public class EmrSyncController { int revisionCount = 0; int searchIndexCount = 0; + int archiveCount = 0; for (Emr emr : emrList) { // 3. 创建修订历史 @@ -188,12 +198,29 @@ public class EmrSyncController { index.setCreateTime(emr.getCreateTime()); emrSearchIndexService.save(index); searchIndexCount++; + + // 5. 创建归档记录 + EmrArchiveRecord archive = new EmrArchiveRecord(); + archive.setEmrId(emr.getId()); + archive.setEncounterId(emr.getEncounterId()); + archive.setPatientId(emr.getPatientId()); + archive.setPatientName(patientName); + archive.setEmrType(emr.getClassEnum() != null && emr.getClassEnum() == 1 ? "OUTPATIENT" : "INPATIENT"); + archive.setEmrTitle(chiefComplaint.isEmpty() ? "未命名病历" : chiefComplaint); + archive.setArchiveType("PRINT"); + archive.setArchiveStatus("PRINTED"); + archive.setPrintTime(emr.getCreateTime()); + archive.setPrintBy(doctorName); + archive.setPrintCount(1); + archive.setCreateTime(emr.getCreateTime()); + emrArchiveRecordService.save(archive); + archiveCount++; } catch (Exception e) { log.warn("创建搜索索引失败: emrId={}, error={}", emr.getId(), e.getMessage(), e); } } - String result = String.format("同步完成: 修订历史%d条, 搜索索引%d条", revisionCount, searchIndexCount); + String result = String.format("同步完成: 修订历史%d条, 搜索索引%d条, 归档记录%d条", revisionCount, searchIndexCount, archiveCount); log.info(result); return R.ok(result); } @@ -208,6 +235,7 @@ public class EmrSyncController { stats.put("emrCount", emrService.count()); stats.put("revisionCount", emrRevisionService.count()); stats.put("searchIndexCount", emrSearchIndexService.count()); + stats.put("archiveCount", emrArchiveRecordService.count()); return R.ok(stats); }