-- ============================================================================ -- 省立同德门急诊采集失败记录表 -- -- 背景:HIS 门急诊数据只能按天查,采集任务每半小时把当天全量(一万多条)拉一遍。 -- 单条记录如果转换失败/档案处理失败/入库失败,原来会整页失败并卡住采集进度。 -- 现在改为写入本表交给人工处理,采集进度不受影响。 -- -- 同一条记录同一类错误只保留一行:唯一索引 uk_serialnum_type(serialnum, error_type), -- 重复失败累加 fail_count(可以看出它连续失败了多少轮),异常信息和原始 JSON 会被最新一次覆盖。 -- 人工把 handle_status 改成 1(已处理)后如果该记录再次失败,会自动回到 0(待处理); -- 改成 2(已忽略)的不会再被打扰。 -- -- 人工处理常用 SQL: -- 查看待处理:select * from pat_med_outhosp_error where handle_status = '0' order by fail_count desc, id; -- 看原始数据:select serialnum, error_type, error_msg, raw_data from pat_med_outhosp_error where handle_status = '0'; -- 标记已处理:update pat_med_outhosp_error set handle_status = '1', handle_remark = '原因+处理人' where id = ?; -- ============================================================================ CREATE TABLE IF NOT EXISTS pat_med_outhosp_error ( id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', serialnum VARCHAR(64) DEFAULT NULL COMMENT '诊疗记录号(healthcareRecordNo)', outhospno VARCHAR(64) DEFAULT NULL COMMENT '门诊号', patname VARCHAR(100) DEFAULT NULL COMMENT '患者姓名', patno VARCHAR(64) DEFAULT NULL COMMENT '病历号', campusid VARCHAR(32) DEFAULT NULL COMMENT '院区ID', orgid VARCHAR(32) DEFAULT NULL COMMENT '机构ID', admitdate DATETIME DEFAULT NULL COMMENT '就诊时间', gather_date VARCHAR(20) DEFAULT NULL COMMENT '采集日期 yyyy-MM-dd', error_type VARCHAR(20) NOT NULL COMMENT '错误类型:CONVERT-数据转换失败 ARCHIVE-患者档案处理失败 INSERT-入库失败', error_msg VARCHAR(1000) DEFAULT NULL COMMENT '异常信息', raw_data TEXT COMMENT '接口返回的原始记录JSON,人工修复后可据此重推', fail_count INT NOT NULL DEFAULT 1 COMMENT '累计失败次数', handle_status CHAR(1) NOT NULL DEFAULT '0' COMMENT '处理状态:0待处理 1已处理 2已忽略', handle_remark VARCHAR(500) DEFAULT NULL COMMENT '处理备注', create_time DATETIME DEFAULT NULL COMMENT '创建时间', update_time DATETIME DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (id), UNIQUE KEY uk_serialnum_type (serialnum, error_type), KEY idx_handle_status (handle_status), KEY idx_error_type (error_type), KEY idx_create_time (create_time) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='省立同德门急诊采集失败记录(人工处理)';