在 DRG/DIP 2.0 时代的医院成本管理中,数据抽取与转换(ETL)是将医院各个业务系统中的原始数据转化为可供成本管理分析利用的关键环节。这一过程涉及从医院 HIS 系统中抽取患者诊疗数据,并对其进行格式转换、字段映射等处理,以满足后续成本核算和分析的需求。
医院 HIS 系统是医院信息化管理的核心,包罗患者诊疗的全方位信息,如患者基本信息、诊疗记录、费用明细等。与 HIS 系统对接时,可接纳 API 接口或中心库的方式进行数据抽取。利用 API 接口对接时,需先与 HIS 系统的开发团队沟通,获取详细的接口文档,明白接口的请求方式(如 GET、POST)、请求参数以及返回数据的格式(如 JSON、XML)。以获取患者诊疗信息为例,若 HIS 系统提供的 API 接口为https://his.example.com/api/patient_info,请求方式为 POST,请求参数为患者的住院号inpatient_no,则在 PostgreSQL 中可利用http_request函数(需安装干系扩展,如http_post)来发送请求,示例代码如下:
上述代码通过http_post函数向 HIS 系统的 API 接口发送 POST 请求,传递患者住院号信息,接口返回的患者诊疗信息可进一步处理和存储到 PostgreSQL 数据库中。
接纳中心库方式对接时,HIS 系统将数据定期同步到中心库(如 MySQL 数据库),PostgreSQL 再从中心库中抽取数据。可以利用dblink扩展来实现跨数据库连接和数据抽取。假设中心库为 MySQL,已安装mysql_fdw扩展并配置好连接参数,示例代码如下:
-- 安装mysql_fdw扩展(若未安装)
CREATE EXTENSION IF NOT EXISTS mysql_fdw;
-- 创建外部服务器
CREATE SERVER his_mysql_server
FOREIGN DATA WRAPPER mysql_fdw
OPTIONS (host '192.168.1.100', port '3306', dbname 'his_database');
上述代码通过mysql_fdw扩展创建了与 MySQL 中心库的连接,导入了中心库中的患者诊疗信息表到 PostgreSQL 数据库中,以便后续进行数据处理。
从 HIS 系统抽取的数据往往需要进行格式转换和字段映射,以符合成本管理系统的数据模型。数据格式转换方面,日期格式可能在 HIS 系统中以不同的格式存储,如YYYY-MM-DD、MM/DD/YYYY等,而成本管理系统要求同一的日期格式。在 PostgreSQL 中,可利用to_date函数进行日期格式转换,示例代码如下:
-- 将HIS系统中格式为MM/DD/YYYY的日期转换为YYYY-MM-DD格式
UPDATE patient_info
SET admission_date = to_date(his_admission_date, 'MM/DD/YYYY')
WHERE his_admission_date ~ '^\d{2}/\d{2}/\d{4}$';
复制代码
字段映射是将 HIS 系统中的字段对应到成本管理系统中的字段。HIS 系统中的患者姓名字段可能为patient_name,而成本管理系统中为name,则可通过UPDATE语句进行字段映射,示例代码如下:
-- 字段映射,将HIS系统中的patient_name映射到成本管理系统中的name
UPDATE patient_info
SET name = his_patient_name;
复制代码
在实际应用中,可能还需要处理复杂的数据结构,如 HIS 系统中可能将患者的多个诊断信息存储在一个字段中,以逗号分隔,而成本管理系统要求将每个诊断信息存储在单独的字段或数组中。可利用string_to_array函数将逗号分隔的诊断信息拆分为数组,示例代码如下:
-- 将HIS系统中逗号分隔的诊断信息拆分为数组
UPDATE patient_info
SET diagnosis_array = string_to_array(his_diagnoses, ',');
复制代码
通过以上数据抽取与转换的编程实现,能够将医院 HIS 系统中的原始数据转化为符合成本管理系统要求的数据格式和结构,为后续的成本核算、分析和管理提供精确、可靠的数据基础。
5.2 时间窗口处理与增量抽取