病案数据导入技能。导入基础数据表、住院费用分类和费用明细单。当用户需要导入病案数据、处理费用数据或执行数据初始化时调用。
本技能用于指导如何正确导入病案相关数据,包括基础数据表、住院费用分类和费用明细单。
重要:必须按照以下顺序导入数据
基础数据文件位于项目根目录的 基础数据/ 文件夹:
基础数据/
├── 病案出院病人.xlsx # 病案出院数据(患者基本信息)
├── 病案分析基础表.xlsx # 病案分析基础数据
├── 费用_住院号.xlsx # 费用汇总数据
├── 费用清单.xlsx # 费用明细数据
└── 费用清单(1).xlsx # 费用明细数据(续)
基础数据表包含患者的基本信息和诊断信息。
病案出院病人字段(实际列名):
| 原字段名 | 映射字段 | 说明 |
|---|
| 住院号 | patient_id | 患者唯一标识(核心关联键) |
| 患者姓名 | patient_name | 患者姓名 |
| 医师 | doctor_name | 主治医师 |
| 科室编号 | dept_code | 科室编码 |
| 出院科室 | dept_name | 出院科室 |
| 入院科室 | admission_dept | 入院科室 |
| 入院日期 | admission_date | 入院时间 |
| 出院日期 | discharge_date | 出院时间 |
| 诊断类型 | diagnosis_type | 主要诊断/其他诊断 |
| 诊断ICD | diagnosis_code | 诊断ICD-10编码 |
| 诊断名称 | diagnosis_name | 诊断描述 |
| icd | icd_code | ICD编码(用于DIP分组) |
| icd3 | icd3_code | ICD-3位编码 |
| 手术icd | surgery_code | 手术ICD编码 |
| 手术名称 | surgery_name | 手术名称 |
处理逻辑:
费用汇总表(费用_住院号.xlsx)用于快速导入患者的总费用。
费用汇总表字段:
| 原字段名 | 映射字段 | 说明 |
|---|---|---|
| 住院号 | patient_id | 住院号(关联键) |
| 总花费 | total_cost | 患者总费用 |
处理逻辑:
注意:费用汇总表只用于导入总费用,各类分类费用(药品费、检查费等)由费用明细导入时自动汇总计算,确保数据一致性。
费用分类用于统计不同类型的医疗费用。费用清单中的"费用类别"列已包含详细分类。
重要:草药费单独统计,与药品费(非草药费)分开
原始费用类别(24种)及归类:
| 费用类别 | 归类 | 说明 |
|---|---|---|
| 西药费 | 药品费 | 非草药费 |
| 成药费 | 药品费 | 非草药费 |
| 草药费 | 草药费 | 单独统计 |
| 材料费 | 材料费 | |
| 检查费 | 检查费 | |
| CT费 | 检查费 | |
| 心电图 | 检查费 | |
| 彩超费 | 检查费 | |
| B超费 | 检查费 | |
| 放射费 | 检查费 | |
| 胃镜费 | 检查费 | |
| 化验费 | 检验费 | |
| 治疗费 | 治疗费 | |
| 理疗费 | 治疗费 | |
| 换药费 | 治疗费 | |
| 注射费 | 治疗费 | |
| 处置费 | 治疗费 | |
| 手术费 | 手术费 | |
| 麻醉费 | 手术费 | |
| 护理费 | 护理费 | |
| 床位费 | 服务费 | |
| 诊查费 | 服务费 | |
| 输氧费 | 其他费用 | |
| 输血费 | 其他费用 |
分类归并函数示例:
def classify_cost_group(category):
if pd.isna(category):
return '其他费用'
category = str(category).strip()
if category in ['西药费', '成药费']:
return '药品费'
elif category == '草药费':
return '草药费'
elif category == '材料费':
return '材料费'
elif category in ['检查费', 'CT费', '心电图', '彩超费', 'B超费', '放射费', '胃镜费']:
return '检查费'
elif category == '化验费':
return '检验费'
elif category in ['治疗费', '理疗费', '换药费', '注射费', '处置费']:
return '治疗费'
elif category in ['手术费', '麻醉费']:
return '手术费'
elif category == '护理费':
return '护理费'
elif category in ['床位费', '诊查费']:
return '服务费'
else:
return '其他费用'
费用明细单包含每项收费的详细信息。
费用清单字段(实际列名):
| 原字段名 | 映射字段 | 说明 |
|---|---|---|
| 住院号 | patient_id | 住院号(关联键) |
| 收费对象 | patient_name | 患者姓名 |
| 项目名称 | item_name | 收费项目名称 |
| 收费项目编码 | item_code | 项目编码 |
| 收费数量 | quantity | 数量 |
| 收费标准 | unit_price | 单价 |
| 收费额 | amount | 金额 |
| 计费单位 | unit | 单位 |
| 收费科室 | dept_name | 科室 |
| 费用类别 | cost_category | 费用分类(原始24种) |
| brlx | patient_type | 病人类型 |
处理逻辑:
┌─────────────────┐
│ 病案出院病人 │
│ (patient_id) │
└────────┬────────┘
│
│ 住院号关联
│
▼
┌─────────────────┐ ┌─────────────────┐
│ 费用_住院号 │ │ 费用清单 │
│ (只导入总费用) │ │ (明细+自动汇总) │
└─────────────────┘ └─────────────────┘
数据来源优先级:
| 字段 | 类型 | 说明 |
|---|---|---|
| case_id | bigint | 病案ID |
| patient_id | varchar(50) | 住院号 |
| patient_name | varchar(100) | 患者姓名 |
| dept_code | varchar(50) | 科室编码 |
| dept_name | varchar(100) | 科室名称 |
| admission_date | date | 入院日期 |
| discharge_date | date | 出院日期 |
| los | int | 住院天数(出院日期-入院日期+1) |
| main_diagnosis_code | varchar(50) | 主诊断编码(诊断ICD) |
| main_diagnosis_name | varchar(500) | 主诊断名称 |
| icd_code | varchar(50) | ICD编码(用于DIP分组) |
| icd3_code | varchar(20) | ICD-3位编码 |
| surgery_code | varchar(50) | 手术ICD编码 |
| surgery_name | varchar(500) | 手术名称 |
| other_diagnosis | text | 其他诊断 |
| total_cost | decimal(12,2) | 总费用 |
| drug_cost | decimal(12,2) | 药品费(非草药费) |
| herb_cost | decimal(12,2) | 草药费(单独统计) |
| material_cost | decimal(12,2) | 材料费 |
| exam_cost | decimal(12,2) | 检查费 |
| test_cost | decimal(12,2) | 检验费 |
| treatment_cost | decimal(12,2) | 治疗费 |
| surgery_cost | decimal(12,2) | 手术费 |
| nursing_cost | decimal(12,2) | 护理费 |
| service_cost | decimal(12,2) | 服务费 |
| other_cost | decimal(12,2) | 其他费用 |
| dip_code | varchar(50) | DIP分组编码 |
POST /api/v1/data/import
Content-Type: multipart/form-data
参数:
- file: 上传的文件
- importType: 导入类型
- CASE_INFO: 病案首页数据
- COST_DETAIL: 费用明细数据
- DIP_GROUP: DIP分组数据
GET /v1/cases/page # 分页查询病案
GET /v1/cases/{id} # 获取病案详情
POST /v1/cases # 新增病案
PUT /v1/cases/{id} # 修改病案
DELETE /v1/cases/{id} # 删除病案
POST /v1/cases/{id}/calculate # 重新计算DIP分值
处理后的数据输出到 基础数据/processed/ 目录:
| 文件名 | 说明 |
|---|---|
| 患者信息_完整.csv | 合并后的完整患者信息 |
| 费用明细_合并.csv | 合并后的费用明细数据 |
| 费用汇总_按住院号.csv | 按住院号汇总的费用分类统计 |
YYYY-MM-DD 格式检查费用数据中的住院号是否与病案数据一致,可能存在格式差异(如前导零)
检查费用归类字段,根据关键词规则进行分类,无法识别的归入"其他费用"
确保日期字段格式统一,处理空值和异常日期
同一住院号可能有多条诊断记录,需要区分主要诊断和其他诊断