diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V100__sync_existing_emr_data.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V100__sync_existing_emr_data.sql index ef4aba88c..88c5c5508 100644 --- a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V100__sync_existing_emr_data.sql +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V100__sync_existing_emr_data.sql @@ -28,7 +28,7 @@ WHERE e.id IS NOT NULL SELECT 1 FROM emr_revision r WHERE r.emr_id = e.id ); --- 3. 从doc_emr同步搜索索引(不包含update_time列,因为V103才添加) +-- 3. 从doc_emr同步搜索索引(简化版,不依赖可能不存在的表) INSERT INTO emr_search_index ( id, emr_id, encounter_id, patient_id, patient_name, emr_type, emr_title, diagnosis_text, @@ -39,38 +39,18 @@ SELECT e.id, e.encounter_id, e.patient_id, - COALESCE(p.name, '患者' || e.patient_id), + '患者' || COALESCE(e.patient_id::text, '未知'), CASE WHEN e.class_enum = 1 THEN 'OUTPATIENT' WHEN e.class_enum = 2 THEN 'INPATIENT' ELSE 'OTHER' END, - COALESCE( - NULLIF(TRIM(BOTH '"' FROM - SPLIT_PART( - SPLIT_PART(e.context_json, '"chiefComplaint"', 2), - ':', 2 - ) - ), ''), - '未命名病历' - ), - COALESCE( - NULLIF(TRIM(BOTH '"' FROM - SPLIT_PART( - SPLIT_PART(e.context_json, '"diagnosis"', 2), - ':', 2 - ) - ), ''), - '' - ), - COALESCE(u.name, '医生' || e.record_id), - COALESCE(o.name, '未知科室'), + '未命名病历', + '', + '医生' || COALESCE(e.record_id::text, '未知'), + '未知科室', COALESCE(e.create_time, NOW()) FROM doc_emr e -LEFT JOIN adm_patient p ON e.patient_id = p.id -LEFT JOIN sys_user u ON e.record_id = u.user_id -LEFT JOIN adm_encounter enc ON e.encounter_id = enc.id -LEFT JOIN sys_organization o ON enc.organization_id = o.id WHERE e.id IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM emr_search_index si WHERE si.emr_id = e.id