当前位置:首页>python>领导就爱看大屏:一个Python脚本,把DRG结算数据变成运营驾驶舱

领导就爱看大屏:一个Python脚本,把DRG结算数据变成运营驾驶舱

  • 2026-09-10 11:26:28
领导就爱看大屏:一个Python脚本,把DRG结算数据变成运营驾驶舱
       数据表有了,SQL也会写,为什么领导还是觉得信息化成果“不直观”?     
       很多时候,不是数据没有价值,而是数据仍然躺在数据库、Excel和传统报表里。     
       同样一批DRG数据,做成可筛选、可钻取、有趋势、有排名的大屏,呈现效果就会完全不同。     
  1     01       
 这套大盘要解决什么问题?       
       医院已经拿到了医保DRG结算数据(据笔者调查,基本都是医保局每月线下返回上个月的结算数据),但日常分析通常还停留在以下几个阶段:     
① 临时编写SQL查询病例和金额
② 导出Excel后进行人工汇总
③ 不同科室使用不同统计口径
④ 只能看到结果,不能快速定位原因
⑤ 每次汇报都要重新整理数据
       因此,我希望用一个Python脚本,把DRG结算数据直接转换为可交互的运营分析大盘。
  2      02       
为什么选择Streamlit?       
       如果按照传统方式开发,需要准备后端接口、前端框架、图表组件、权限控制和部署环境。该思路可直接在任何医院复用。
         本次使用的技术组合       
         Oracle:提供DRG结算数据       
         Python:完成数据读取与指标计算       
         Pandas:完成筛选、分组和汇总       
         Streamlit:生成交互式网页界面       
         Plotly:生成趋势图、排名图和四象限图       
       最大的优势是:不需要单独开发前端,一个Python文件就能运行。
         05       
核心代码并不复杂       
       首先安装需要的Python依赖:     
pip install streamlit pandas plotly oracledb
       然后通过Oracle驱动读取DRG结算数据:     
import os
import oracledb
import pandas as pd
DB_CONFIG = {
"user": os.getenv("HIS_DB_USER"),
"password": os.getenv("HIS_DB_PASSWORD"),
"dsn": os.getenv("HIS_DB_DSN")
}
with oracledb.connect(**DB_CONFIG) as connection:
with connection.cursor() as cursor:
        cursor.execute(
            sql,
            start_month="202601",
            end_month="202608"
        )
        columns = [
            item[0].lower()
for item in cursor.description
        ]
        df = pd.DataFrame(
            cursor.fetchall(),
            columns=columns
        )
       读取数据后,计算核心指标:     
# DRG病例数
case_count = len(filtered)
# 总权重
total_weight = filtered["drg_weight"].sum()
# 病例组合指数
cmi = (
    total_weight / case_count
if case_count else 0
)
# 盈亏金额直接取extend10
profit = filtered["drg_balance"].sum()
# 亏损病例数
loss_count = (
    filtered["drg_balance"] < 0
).sum()
# 亏损病例占比
loss_rate = (
    loss_count / case_count * 100
if case_count else 0
)
         06       
大盘最终展示哪些指标?       
       当前大盘首先展示医院DRG运营的核心结果:     
DRG病例数
总费用
垫付金额
DRG返款
盈亏金额
病例组合指数
总体结付率
亏损病例占比
         09       
如何启动大盘?       
本机启动:(测试代码:https://meditlabs.github.io/code/drg_dashboard.py)
python -m streamlit run drg_dashboard.py
       如果需要供院内其他电脑访问:     
python -m streamlit run drg_dashboard.py \
    --server.address 0.0.0.0 \
    --server.port 8501
       写在最后     
       领导喜欢看大屏,并不只是因为大屏“好看”。     
       真正有价值的大屏,应该把散落在数据库中的数据转换成清晰的指标、趋势和问题线索,让管理者快速知道发生了什么、问题在哪里、下一步应该关注谁。     
       对医院信息科来说,Python加Streamlit提供了一条非常适合内部数据工具的实现路径:开发快、修改快、上线快,也便于根据业务反馈持续迭代。有那么多的大模型,几乎没有了学习成本。

最新文章

随机文章