📋通平台数据处理工具说明文档(标准版本)

📋 目录导航

📋工具概述

通平台数据处理工具(标准版本)是一个专业的医疗数据标准化处理系统,能够将多个医疗相关的Excel文件转换为标准化的目标表格,支持复杂的科室结构识别和医保编码匹配。本版本采用动态科室结构识别算法,具有强大的适应性和灵活性。

🔧功能特点

1. 核心功能

2. 高级特性

动态科室结构识别

支持四级科室结构的智能识别和分类

科室结构总表维护

自动维护桌面科室结构总表,确保科室ID一致性

智能医保编码匹配

通过多种算法精确匹配医保编码

前导零格式保护

确保科室ID保持正确格式(如029000而非29000.0)

新增科室高亮

新增科室在总表中自动标记为绿色高亮

临时文件自动清理

处理完成后自动清理临时文件

3. 用户界面特性

🏥标准版本特色:动态科室结构识别

四级结构识别系统

标准版本采用先进的正则表达式和模式匹配算法,能够智能识别复杂的科室层级结构:

1. 四级结构识别模式

# 模式1:科室名+数字+单位 (.+?)(一|二|三|四|五|六|七|八|九|十|1|2|3|4|5|6|7|8|9|10|11|12)(病房|区|科|病区|监护室|重症|ICU)$ # 模式2:科室名+纯数字结尾 (.+?)(一|二|三|四|五|六|七|八|九|十|1|2|3|4|5|6|7|8|9|10|11|12)$

2. 识别示例

3. 白名单排除机制

以下科室即使匹配四级结构模式,也不会被识别为四级结构:

whitelist_depts = [ 'MICU住院', 'SICU住院', 'LDR住院', 'CT室', 'MICU', 'SICU', 'LDR', 'ICU住院', 'ICU', 'NICU住院', 'NICU', 'MRI室', 'DR室', 'DSA室', 'B超室' ]

科室ID分配规则

科室分组逻辑

📁数据要求

必需文件(4个)

  1. 科室药品使用金额及使用量DDDs排名表
    • 格式:Excel文件(.xlsx/.xls)
    • 包含科室药品使用数据和DDDs排名信息
  2. 门诊病人指标文件
    • 格式:Excel文件
    • 包含门诊患者统计数据
  3. 住院病人指标文件
    • 格式:Excel文件
    • 包含住院患者统计数据
  4. 公立医疗机构药品目录
    • 格式:Excel文件
    • 用于医保编码映射和药品信息匹配

可选文件(2个)

  1. 住院患者静脉输液使用监测指标调查表
    • 用于计算平均住院天数和住院总人天数
  2. 科室结构总表
    • 自定义科室结构,不选择时使用桌面默认表

📊数据格式要求

科室药品使用数据表必须列

DDS表格式兼容性

标准版本支持两种DDS表格式:

16列完整格式(推荐)

  • 包含完整的16列,包括单价列
  • 列顺序:排名、科室名称、科室药品总金额、药品排名、药品名称、药品编码、医保编码、药品通用名、剂型、规格、厂家、使用量DDDs、数量、计价单位、单价、总金额

15列兼容格式

  • 缺少单价列的DDS表格式
  • 系统自动检测并使用兼容模式处理
  • 列顺序:排名、科室名称、科室药品总金额、药品排名、药品名称、药品编码、医保编码、药品通用名、剂型、规格、厂家、使用量DDDs、数量、计价单位、总金额

智能检测机制

  • 自动识别:系统根据实际列数自动选择处理模板
  • 15列检测:自动使用兼容模式,跳过单价列处理
  • 16列检测:使用完整模式,包含单价列处理
  • 其他列数:尝试使用完整模板并进行适配

必须列说明

列名 说明 格式支持
排名药品排名信息15列/16列
科室名称科室完整名称15列/16列
科室药品总金额(元)科室药品总费用15列/16列
排名具体药品排名15列/16列
药品名称药品完整名称15列/16列
药品编码院内药品唯一标识码15列/16列
医保贯标码国家医保统一编码15列/16列
药品通用名称药品通用名称15列/16列
剂型药品剂型信息15列/16列
规格药品规格描述15列/16列
厂家生产厂家信息15列/16列
使用量(DDDs)DDDs使用量数据15列/16列
数量使用数量(支持"114+-120"等格式)15列/16列
计价单位计价单位15列/16列
单价药品单价仅16列格式包含
总金额(元)使用总金额15列/16列

DDS表医保贯标码处理逻辑

医保贯标码智能识别机制

当输入的DDS表包含医保贯标码列且该列有数据时,系统将启用特殊的处理模式:

1. 医保贯标码列检测

脚本会自动检测DDS表中是否存在以下列名:

  • 医保贯标码
  • 医保编码
  • 统一编码
  • 国家编码

2. 数据有效性验证

  • 检查非空值数量
  • 排除空字符串和'nan'值
  • 至少需要1条有效数据才启用新逻辑

3. DDS表模式处理特点

公立医院对应关系表处理

  • 状态:完全忽略
  • 行为:即使用户传入了公立医院对应关系表文件,系统也不会读取或使用
  • 占位符机制:用户可以传入任何表文件作为占位符,包括DDS表本身

格式校验

  • 状态:跳过所有格式校验
  • 行为:任何Excel表格都能通过处理,不进行列名、数据格式等校验

4. 数据映射规则

目标表 目标列 数据来源 说明
医院药品信息表 医保编码 DDS表的医保贯标码列 直接映射
医院药品ID DDS表的药品编码列 确保字符串格式,去除.0后缀
药品名称 DDS表的药品名称列 直接映射
规格或规格x包装 DDS表的规格列 直接映射
规格转换系数 默认值:1 固定值
成本价格(元) 默认值:空 固定值
药品使用信息表 医保编码 DDS表的医保贯标码列 直接映射
医院药品ID DDS表的药品编码列 确保字符串格式,去除.0后缀
使用量 DDS表的数量列 直接映射
使用金额 DDS表的总金额(元)列 直接映射

5. 处理逻辑分支

if DDS表包含医保贯标码列 AND 该列有有效数据: 启用DDS表模式 - 忽略公立医院对应关系表 - 跳过格式校验 - 直接数据映射 else: 使用传统处理模式 - 读取公立医院对应关系表 - 进行格式校验 - 通过药品编码进行匹配映射

6. 使用场景对比

场景1:DDS表包含医保贯标码

  • 输入:包含医保贯标码列的DDS表 + 任意占位符表(可选)
  • 处理:DDS表模式,直接数据映射
  • 输出:医保编码来自医保贯标码列,医院药品ID来自药品编码列

场景2:DDS表不包含医保贯标码

  • 输入:普通DDS表 + 公立医院对应关系表(必需)
  • 处理:传统模式,药品编码匹配
  • 输出:医保编码通过药品编码匹配获得

公立医疗机构药品目录格式

标准版本支持多种药品目录格式,能够智能识别和处理不同的列结构:

支持的格式类型

1. 三列标准格式

  • A列:药品编码(院内药品唯一码)
  • B列:药品名称(产品名称)
  • C列:医保编码
  • 识别条件:A列包含"药品编码"或"编码",B列包含"药品名称"或"名称",C列包含"医保编码"或"编码"
  • 特殊处理:系统自动检测此格式并重新映射列关系

2. 四列扩展格式

  • 必需列:药品编码、药品名称、医保编码
  • 可选列:制剂规格
  • 识别方式:通过列名关键词智能匹配

3. 多列完整格式

  • 必需列:药品编码、药品名称、医保编码
  • 可选列:制剂规格、成本价格
  • 扩展列:其他药品相关信息
  • 识别方式:智能列名识别算法

列名识别规则

医保编码列(必需)

  • 优先匹配:同时包含"医保"和"编码"的列名
  • 备选匹配:包含"医保编码"、"统一编码"、"国家编码"的列名
  • 兜底匹配:包含"编码"的列名

药品编码列(必需)

  • 优先匹配:包含"院内药品唯一码"、"药品唯一码"的列名
  • 常见匹配:包含"药品编码"、"院内编码"、"内部编码"的列名
  • 简化匹配:包含"唯一码"、"药品"的列名

产品名称列(必需)

  • 严格匹配:完全匹配"产品名称"
  • 标准匹配:完全匹配"名称"
  • 备选匹配:完全匹配"药品名称"

制剂规格列(可选)

  • 匹配关键词:包含"制剂规格"、"规格"、"包装规格"、"药品规格"的列名

成本价格列(可选)

  • 匹配关键词:包含"成本价格"或同时包含"成本"和"价格"的列名

格式示例

三列标准格式示例:

药品编码 药品名称 医保编码
001001 阿司匹林 H123456
001002 青霉素 H123457

四列扩展格式示例:

院内药品唯一码 产品名称 制剂规格 医保编码
001001 阿司匹林 100mg H123456
001002 青霉素 80万单位 H123457

智能识别机制

科室名称格式要求

🎯输出格式

输出文件结构

各工作表内容

  1. 医院药品信息:医院药品基础信息表
  2. 药品使用信息:详细的药品使用记录
  3. 科室信息:科室层级结构(包含单元格合并)
  4. 药费及人次:按科室汇总的费用和人次统计

⚙️特殊处理机制

智能列名检测

ID格式保护

数据类型兼容

成本价格处理

def convert_cost_price_to_number(cost_price_str): """将成本价格字符串转换为数值类型,严格保留原始小数位数""" # 清理字符串:去除空格和可能的货币符号 clean_str = str(cost_price_str).strip().replace('¥', '').replace('¥', '').replace('元', '').replace(',', '') # 转换为浮点数,保持原始精度 price_value = float(clean_str) # 检查原始字符串是否包含小数点 if '.' not in clean_str: return int(price_value) # 没有小数点,返回整数 else: return price_value # 有小数点,保持浮点数格式

🏥门诊/住院判断标准

判断逻辑(按优先级)

def determine_dept_type(dept_name): if pd.isna(dept_name): return '' dept_str = str(dept_name).strip() # 1. 以"门诊"结尾的科室 → 门诊 if dept_str.endswith('门诊'): return '门诊' # 2. 以"住院"结尾的科室 → 住院 elif dept_str.endswith('住院'): return '住院' # 3. 以"病房"结尾的科室 → 住院 elif dept_str.endswith('病房'): return '住院' # 4. 其他科室 → 默认为门诊 else: return '门诊'

具体判断标准

门诊科室识别

住院科室识别

🏗️四级结构识别标准

识别原理

四级结构用于识别同一基础科室下的多个病房或科室单元,如"心内科一病房"、"心内科二病房"等。

白名单排除机制

以下科室即使匹配四级结构模式,也不会被识别为四级结构:

whitelist_depts = [ 'MICU住院', 'SICU住院', 'LDR住院', 'CT室', 'MICU', 'SICU', 'LDR', # 不带住院后缀的版本 'ICU住院', 'ICU', 'NICU住院', 'NICU', # 其他ICU类科室 'MRI室', 'DR室', 'DSA室', 'B超室', # 医技科室 ]

特殊处理科室

# 消化内科特殊四级结构 digestive_whitelist = { '消化内科住院': ('消化内科', '消化内科住院', '住院', '消化内科'), '消化内科二住院': ('消化内科', '消化内科二住院', '住院', '消化内科') }

四级结构识别模式

1. 正则表达式模式

fourth_level_patterns = [ # 模式1: 科室名+数字+后缀 r'(.+?)(一|二|三|四|五|六|七|八|九|十|1|2|3|4|5|6|7|8|9|10|11|12)(病房|区|科|病区|监护室|重症|ICU)', # 模式2: 科室名+纯数字或中文数字结尾 r'(.+?)(一|二|三|四|五|六|七|八|九|十|1|2|3|4|5|6|7|8|9|10|11|12)$' ]

2. 具体识别标准

支持的数字标识

  • 中文数字:一、二、三、四、五、六、七、八、九、十
  • 阿拉伯数字:1、2、3、4、5、6、7、8、9、10、11、12

支持的后缀标识

  • 病房:心内科一病房、心内科2病房
  • :心内科一区、心内科2区
  • :心内科一科、心内科2科
  • 病区:心内科一病区、心内科2病区
  • 监护室:心内科一监护室
  • 重症:心内科一重症
  • ICU:心内科一ICU

四级结构识别示例

✅ 会被识别为四级结构的科室

心内科一病房 → 基础科室: 心内科, 子单元: 一病房 心内科二病房 → 基础科室: 心内科, 子单元: 二病房 泌尿外科1区 → 基础科室: 泌尿外科, 子单元: 1区 神经内科三科 → 基础科室: 神经内科, 子单元: 三科 骨科2病区 → 基础科室: 骨科, 子单元: 2病区 心内科一监护室 → 基础科室: 心内科, 子单元: 一监护室 消化内科二住院 → 基础科室: 消化内科, 子单元: 消化内科二住院 (特殊处理)

❌ 不会被识别为四级结构的科室

MICU住院 → 白名单排除,识别为三级结构 SICU住院 → 白名单排除,识别为三级结构 CT室 → 白名单排除,识别为三级结构 心内科门诊 → 无数字标识,识别为三级结构 神经内科住院 → 无数字标识,识别为三级结构

四级结构处理逻辑

1. 结构层级

2. ID分配规则

# 混合科室(既有门诊又有住院) 门诊三级ID = f"{二级ID}0" # 如: 0010 住院三级ID = f"{二级ID}1" # 如: 0011 四级ID = f"{三级ID}{计数器}" # 如: 00101, 00102 # 其他门诊组 三级ID = f"{二级ID}{计数器:03d}" # 如: 001001 # 其他住院组 三级ID = f"{二级ID}{计数器:03d}" # 如: 002001 四级ID = f"{三级ID}{计数器:01d}" # 如: 0020011

3. 科室归类逻辑

实际应用示例

示例1:心内科(混合科室+四级结构)

原始数据: 心内科门诊, 心内科一病房, 心内科二病房

处理结果:
- 二级结构: 心内科 (ID: 001)
- 三级结构: 心内科门诊 (ID: 0010), 心内科病房 (ID: 0011)
- 四级结构: 心内科一病房 (ID: 00111), 心内科二病房 (ID: 00112)

示例2:泌尿外科(仅四级结构住院)

原始数据: 泌尿外科一病房, 泌尿外科二区

处理结果:
- 二级结构: 其他病房 (ID: 010)
- 三级结构: 泌尿外科病房 (ID: 010001)
- 四级结构: 泌尿外科一病房 (ID: 0100011), 泌尿外科二区 (ID: 0100012)

🔧版本特性

通平台版本支持

1.4版本

使用"规格转换系数"列名

1.5版本

使用"规格转换系数(非包装转换比)"列名

动态切换

GUI界面支持版本选择

v3.0新特性

  • Logo集成:GUI界面集成120x120像素高清logo显示
  • 颜色标识系统:新增科室绿色高亮显示
  • 临时文件自动清理:处理完成后自动清理临时文件
  • 术语标准化:统一使用"住院"替代"病房"
  • 时间格式统一:使用"2025年9月"格式显示

🚀使用步骤

  1. 选择必需文件:选择4个必需的Excel文件
  2. 配置可选文件:根据需要勾选并选择可选文件
  3. 选择通平台版本:在下拉框中选择1.4或1.5版本
  4. 设置时间参数:输入时间(格式:2025年9月)
  5. 设置输出位置:选择输出文件的保存位置和名称
  6. 开始处理:点击"开始处理数据"按钮
  7. 等待完成:查看处理进度和日志信息

⚠️注意事项

  • 确保输入文件格式正确
  • 处理期间请勿关闭程序
  • 大数据量处理时确保内存充足
  • 新增科室在科室结构总表中自动标记为绿色高亮
  • 智能白名单机制:肿瘤门诊和神经内科门诊特殊处理
  • 白名单科室如在总表中已存在,将不会被重复高亮

🆕标准版本特性

核心优势

动态科室识别

采用先进的正则表达式和模式匹配算法

智能医保编码匹配

三层智能识别算法,提高匹配准确率

四级结构支持

完整支持复杂的医院科室层级结构

版本兼容性

支持通平台1.4和1.5版本的差异化处理

界面优化

处理优化

自动化功能


版本: 3.0.0(标准版本)

更新时间: 2025年

开发说明: 这个工具是基于动态科室结构识别的医疗数据处理系统,具有强大的数据标准化和格式转换能力,特别适合需要灵活处理各种科室结构的医疗机构进行数据整理和上报工作。标准版本通过先进的算法和智能识别技术,确保了数据处理的准确性和灵活性。