-- ============================================================================= -- 住院随访完成生成妇科/儿科专科档案 -- 1. 档案主表/详情表增加来源字段 -- 2. 新增专科档案生成日志表(幂等 + 补偿 + 追溯) -- 3. 增加患者档案查询索引 -- 日期:2026-11-11 -- ============================================================================= -- ----------------------------------------------------------------------------- -- 1. 档案主表来源字段 -- ----------------------------------------------------------------------------- ALTER TABLE pat_maternity_archive ADD COLUMN source_type CHAR(1) DEFAULT NULL COMMENT '来源类型:1门诊接诊 2住院随访 3手工新增', ADD COLUMN source_biz_id BIGINT DEFAULT NULL COMMENT '来源业务ID:门诊记录ID/住院记录ID', ADD COLUMN source_biz_no VARCHAR(64) DEFAULT NULL COMMENT '来源业务编号:门诊号/住院号', ADD COLUMN source_sub_id BIGINT DEFAULT NULL COMMENT '来源随访子任务ID:service_subtask.id'; ALTER TABLE pat_child_archive ADD COLUMN source_type CHAR(1) DEFAULT NULL COMMENT '来源类型:1门诊接诊 2住院随访 3手工新增', ADD COLUMN source_biz_id BIGINT DEFAULT NULL COMMENT '来源业务ID:门诊记录ID/住院记录ID', ADD COLUMN source_biz_no VARCHAR(64) DEFAULT NULL COMMENT '来源业务编号:门诊号/住院号', ADD COLUMN source_sub_id BIGINT DEFAULT NULL COMMENT '来源随访子任务ID:service_subtask.id'; -- ----------------------------------------------------------------------------- -- 2. 档案详情表补充来源业务ID/编号(source_type 原表已有) -- ----------------------------------------------------------------------------- ALTER TABLE pat_maternity_archive_detail ADD COLUMN source_biz_id BIGINT DEFAULT NULL COMMENT '来源业务ID:门诊记录ID/住院记录ID', ADD COLUMN source_biz_no VARCHAR(64) DEFAULT NULL COMMENT '来源业务编号:门诊号/住院号', ADD COLUMN source_sub_id BIGINT DEFAULT NULL COMMENT '来源随访子任务ID:service_subtask.id'; ALTER TABLE pat_child_archive_detail ADD COLUMN source_biz_id BIGINT DEFAULT NULL COMMENT '来源业务ID:门诊记录ID/住院记录ID', ADD COLUMN source_biz_no VARCHAR(64) DEFAULT NULL COMMENT '来源业务编号:门诊号/住院号', ADD COLUMN source_sub_id BIGINT DEFAULT NULL COMMENT '来源随访子任务ID:service_subtask.id'; -- ----------------------------------------------------------------------------- -- 3. 生成日志表 -- ----------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS pat_specific_archive_generate_log ( id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', source_type CHAR(1) NOT NULL DEFAULT '2' COMMENT '来源类型:1门诊接诊 2住院随访', source_biz_id BIGINT DEFAULT NULL COMMENT '来源业务ID:门诊记录ID/住院记录ID', source_biz_no VARCHAR(64) DEFAULT NULL COMMENT '来源业务编号:门诊号/住院号', source_sub_id BIGINT DEFAULT NULL COMMENT '来源随访子任务ID:service_subtask.id', patid BIGINT DEFAULT NULL COMMENT '患者ID', orgid VARCHAR(64) DEFAULT NULL COMMENT '机构ID', campusid VARCHAR(64) DEFAULT NULL COMMENT '院区ID', dept_category CHAR(1) DEFAULT NULL COMMENT '部门分类:1妇科 2儿科', archive_type VARCHAR(32) DEFAULT NULL COMMENT '档案类型', config_id INT NOT NULL DEFAULT 0 COMMENT '命中的配置ID;未命中配置时为0', archive_id BIGINT DEFAULT NULL COMMENT '生成或命中的档案主表ID', process_result CHAR(1) NOT NULL COMMENT '处理结果:1生成 2已存在跳过 3未匹配 4失败', process_msg VARCHAR(1000) DEFAULT NULL COMMENT '处理说明', retry_count INT NOT NULL DEFAULT 0 COMMENT '重试次数', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (id), UNIQUE KEY uk_pasgl_source_sub_config (source_type, source_sub_id, config_id), KEY idx_pasgl_biz_id (source_biz_id), KEY idx_pasgl_patid (patid, dept_category, archive_type), KEY idx_pasgl_archive (archive_id) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='专科档案生成日志表'; -- ----------------------------------------------------------------------------- -- 4. 患者已有档案查询索引 -- ----------------------------------------------------------------------------- ALTER TABLE pat_maternity_archive ADD INDEX idx_pma_patid_type (orgid, patid, archive_type, del_flag); ALTER TABLE pat_child_archive ADD INDEX idx_pca_patid_type (orgid, patid, archive_type, del_flag); -- ----------------------------------------------------------------------------- -- 5. 来源类型字典(如字典表已有同类型数据,可跳过) -- ----------------------------------------------------------------------------- INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark) SELECT '专科档案来源', 'pat_archive_source_type', '0', 'system', NOW(), '专科档案生成来源' FROM DUAL WHERE NOT EXISTS ( SELECT 1 FROM sys_dict_type WHERE dict_type = 'pat_archive_source_type' ); INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark) SELECT 1, '门诊接诊', '1', 'pat_archive_source_type', 'N', '0', 'system', NOW(), '门诊接诊完成生成' FROM DUAL WHERE NOT EXISTS ( SELECT 1 FROM sys_dict_data WHERE dict_type = 'pat_archive_source_type' AND dict_value = '1' ); INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark) SELECT 2, '住院随访', '2', 'pat_archive_source_type', 'N', '0', 'system', NOW(), '住院随访完成生成' FROM DUAL WHERE NOT EXISTS ( SELECT 1 FROM sys_dict_data WHERE dict_type = 'pat_archive_source_type' AND dict_value = '2' ); INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark) SELECT 3, '手工新增', '3', 'pat_archive_source_type', 'N', '0', 'system', NOW(), '手工新增/导入' FROM DUAL WHERE NOT EXISTS ( SELECT 1 FROM sys_dict_data WHERE dict_type = 'pat_archive_source_type' AND dict_value = '3' );