4. 临床数据仓库分层架构设计

临床数据仓库的分层不是把数据多存几遍,而是把“原始留存、整合治理、业务建模、场景服务”这四类职责拆开,让每一层只解决一类问题。若不分层,每个科室或每个分析需求都直接从业务库抽数、各自清洗、各自定义指标,就会形成烟囱式集市:口径不一致、重复开发、血缘断裂、上游一改下游全崩。分层的核心价值,是让数据从“能取到”逐步变成“可信、可复用、可追溯”。

四层职责与边界

ODS(Operational Data Store,操作数据存储)负责贴源留存。它按业务系统原始结构接入,尽量不做业务加工,保留源系统主键、时间戳、变更标识和抽取批次。ODS 的关键是“可回溯”:当上游数据被修改或删除时,仍能还原当时抽取到的样子。常见做法是保留全量快照或增量变更,并附加 etl_batch_id、extract_time、source_system 等元数据字段。

EDW(Enterprise Data Warehouse,企业数据仓库)负责整合与治理。它把不同系统的患者、就诊、医嘱、检验、费用等实体统一到企业级主数据模型下,完成编码归一、去重、主数据映射、跨系统关联。EDW 通常采用第三范式或适度范式建模,强调一致性维度与原子粒度事实,是“单一事实来源”的落点。

CDM(Clinical Data Model,临床数据模型)负责面向临床语义的建模。它在 EDW 基础上按临床主题组织,如患者、就诊、诊断、手术、用药、检验、检查、生命体征等,形成可被临床研究、质量指标、专科分析直接理解的宽表或维度模型。CDM 更贴近业务语言,字段命名、值域、时间语义都按临床口径定义。

ADS(Application Data Store,应用数据存储)负责场景化服务。它面向具体应用输出结果,如指标看板、科研队列、单病种报表、实时预警。ADS 允许冗余、允许预聚合、允许按查询模式优化,但必须能追溯到 CDM 或 EDW 的加工逻辑,不能成为新的“黑盒”。

数据血缘与流向

四层之间是单向、可追溯的流向:业务系统 → ODS → EDW → CDM → ADS。每一层都应记录字段级血缘,至少包括来源表、来源字段、转换规则、执行批次、责任人。血缘不是文档附件,而应作为元数据随任务一起落库,才能在排障时回答“这个指标为什么变了”。

临床数据仓库四层架构与数据流向 业务系统 HIS / LIS / EMR / RIS ODS 贴源留存 · 可回溯 全量/增量 · 批次标识 EDW 整合治理 · 单一事实源 主数据映射 · 原子粒度 CDM 临床语义 · 主题建模 诊断/用药/检验/手术 ADS 场景服务 · 预聚合 看板/科研/预警/报表 字段级血缘回溯:ADS → CDM → EDW → ODS 分层粒度与存储策略 ODS:原始粒度,保留源结构,近线存储,保留周期按合规要求 EDW:原子粒度,第三范式/适度范式,温存储,长期保留 CDM:主题粒度,维度建模/宽表,温存储,按主题分区 ADS:聚合粒度,预计算/物化视图,热存储,按查询模式优化 ⚠ 烟囱式集市的典型症状 ① 同一指标在多个集市口径不一致,无法对账 ② 上游字段变更导致多个下游任务同时失败 ③ 血缘断裂,问题定位只能靠人工翻脚本 分层落地要点 · 每层只做本层职责,不越界加工 · 血缘元数据随任务落库 · ADS 必须可回溯到 CDM/EDW

分层粒度与存储策略

粒度决定存储成本和查询效率。ODS 保留原始粒度,按源系统结构存储,通常采用近线存储,保留周期依据法规和医院数据管理要求确定,例如在线保留 6~12 个月,历史归档到对象存储。EDW 保持原子粒度,采用第三范式或适度范式,避免过早聚合导致信息丢失,存储上使用温存储,按时间分区。CDM 按临床主题组织,可以是维度模型或宽表,粒度到“一次就诊、一条医嘱、一项检验结果”,按主题和时间分区。ADS 面向查询模式,允许预聚合、物化视图、宽表冗余,使用热存储保证响应速度。

存储策略还要考虑冷热分离:ADS 热数据放高性能存储,EDW/CDM 温数据放标准存储,ODS 冷数据放低成本存储。分区键通常选择 dt(业务日期)或 etl_date(抽取日期),两者语义不同,必须明确区分。例如检验结果按 report_date 分区用于临床分析,按 etl_date 分区用于增量回溯。

避免烟囱式集市的工程手段

第一,建立统一的主数据与编码映射。患者、就诊、科室、诊断、药品、检验项目等主数据在 EDW 层完成归一,CDM 和 ADS 只引用统一编码,不允许各自维护一套映射。第二,指标口径集中管理。每个指标在 CDM 或 EDW 中定义一次,ADS 只做展示和轻量计算,避免同一指标在多个集市重复实现。第三,血缘与影响分析自动化。当上游字段变更时,系统能自动列出受影响的下游任务和报表,而不是靠人工排查。第四,ADS 准入评审。新建 ADS 集市前,必须说明数据来源、口径依据、复用范围,防止“一个需求一个集市”。

分层不是越多越好。四层是常见基线,实际项目中可根据数据量和团队能力合并或拆分,但“贴源、整合、语义、服务”四类职责不能混在一起。判断分层是否合理,可以问三个问题:能否追溯到原始数据?同一指标是否只有一处定义?上游变更能否快速评估影响?

一个简化的落地示例

假设要建设“急性心肌梗死单病种质量指标”。ODS 层从 HIS 抽取患者、就诊、诊断、手术、医嘱、检验记录,保留原始字段和抽取批次。EDW 层完成患者主索引匹配、诊断编码归一(ICD-10)、手术编码归一(ICD-9-CM-3)、科室映射。CDM 层构建“心梗患者就诊宽表”,包含入院时间、首次医疗接触时间、溶栓时间、PCI 时间、出院时间、用药记录、检验结果等字段。ADS 层计算“门球时间达标率”“再灌注治疗率”等指标,并输出到质量看板。整个链路中,每个指标都能通过血缘回溯到 CDM 字段,再回溯到 EDW 的原子记录,最终定位到 ODS 的原始抽取批次。

分层架构的最终目标,是让数据从“各自为战”变成“一次治理、多次复用”。ODS 保证不丢数据,EDW 保证口径统一,CDM 保证临床可理解,ADS 保证场景可交付。四层各司其职,血缘贯穿始终,才能避免烟囱式集市带来的重复建设和信任危机。