它不存病历,只存授权 — ABDM 印度数字健康基础设施

身份+同意+交换 / 病历留在原医院 / 公开的只有机构与人员名录

来源 https://abdm.gov.in发布时间: 2026-10-27最后更新: 2026-10-27 阅读 20
它不存病历,只存授权 — ABDM 印度数字健康基础设施

信息速览

数据集名称它不存病历,只存授权 — ABDM 印度数字健康基础设施
数据类型元数据,原始数据链接,文献引用
规模不适用(原因:ABDM 不托管个体病历,只登记身份与授权;公开名录侧为机构与医务人员,不构成受试者队列)
接入方式https://abdm.gov.in
AI 就绪度

ABDM 常被中文语境当成「印度的电子病历库」,这个理解从第一层就是错的。它的正式全称是 Ayushman Bharat Digital Mission(阿尤什曼数字健康使命),2021 年 9 月由印度政府启动,主管机构是国家卫生局(National Health Authority,NHA)。它交付的不是一份数据,而是四件互相咬合的东西:一个统一的个人健康身份、一本医务人员名录、一本医疗机构名录、一套带同意管理的点对点交换协议——外加把这些东西连起来的 FHIR 接口规范。

所以对想「下载数据」的人来说,ABDM 几乎什么也给不了:它的服务器上不躺着任何一份检验报告或出院小结。病历仍分散在成千上万家医院、诊所与检验中心自己的系统里,ABDM 只保证一件事——当病人换了一家医院,新医生在拿到病人当场签发的授权之后,能把上一家医院的病历从原处拉过来。数据库里没有集中副本,也就没有可以打包分发的临床语料。

但这不等于它没有数据。ABDM 反倒是印度少有的、公开可查且可以逐条浏览的医疗基础设施名录来源:HFR 收录机构,HPR 收录执业者,两者都是面向公众开放的检索服务。本文的重心就落在这条分界线上:同意架构决定了临床数据不可得,名录架构决定了机构与人员数据可得。一屏速览见下表。

维度 内容
本质 国家级数字健康基础设施(身份 + 名录 + 交换协议),不是数据集
中文名 阿尤什曼数字健康使命
启动 2021 年 9 月 27 日由印度总理宣布启动,前身称 NDHM
主管 国家卫生局(NHA),隶属联邦卫生部
身份组件 ABHA:14 位数字账号 + xxx@abdm 地址式用户名
人员组件 HPR(Healthcare Professionals Registry),执业者注册库
机构组件 HFR(Health Facility Registry),机构注册库,公开可查
交换组件 健康信息交换 + 同意管理器(Consent Manager)
接口组件 UHI 统一健康接口、ABDM Gateway、FHIR 实现规范
数据托管 不集中托管,病历留在原机构服务器
技术栈方向 FHIR 资源封装 + 非对称密钥传输 + 异步回调
公开数据 HFR / HPR 名录可检索;无个体临床数据下载
许可 名录未声明标准化许可;接口文档公开发布
主要门槛 开发者需沙箱凭证;机构需完成服务订阅与资质核验
最容易被误当成 印度电子病历语料库、全国统一病历库
本文关注点 同意架构、FHIR 剖面、HFR/HPR 两份可得名录

§1 它要解决的具体麻烦

1.1 印度医疗的真正痛点是「换一家医院就得从头讲一遍」

一个印度城市中产家庭看病的典型路径是:先在社区诊所看全科,转诊到私立医院做检查,检查结果拿不回来,再去另一家三级医院时被要求全部重做;换城市工作,所有既往病历都留在原来那家医院的纸质档案柜里。印度医疗体系长期是高度碎片化的:公立与私立并行、阿育吠陀等传统医学系统与对抗疗法并行、各邦自行其是,没有统一的患者标识,也没有跨机构的记录调阅通道。

ABDM 的设计判断是:这个麻烦的根子不在「缺一个全国病历库」,而在缺一套让机构之间愿意互相调阅的规则。如果国家把病历收上来集中存放,机构会担心患者流失、数据安全责任、以及合规成本;患者也会担心一份集中副本被谁看了。于是 ABDM 选择了一条反直觉的路——不搬数据,只搬授权。

这个选择带来一个必须记住的后果:ABDM 的成败不取决于它的数据库有多大,而取决于有多少机构愿意当 HIP(Health Information Provider,健康信息提供方)、有多少应用愿意当 HIU(Health Information User,健康信息使用方)。它是一张网,网的价値等于节点数与连接成功率。

1.2 三条常见的错误期待

期待一:以为能下载到印度人的病历。 这是最常见的误解。ABDM 的架构里根本没有「中心病历库」这个组件。任何声称「ABDM 病历数据集」的下载包,要么是第三方从某家医院单独拿到的数据冒用名义,要么是合成数据。真正接近「全国病历」的是 ABDM 之外的另一条线——印度政府的 Ayushman Bharat PM-JAY 医保理赔数据,那是完全不同的系统。

期待二:以为 ABHA 号等同于 Aadhaar。 ABHA 是健康领域的专用标识,虽然登记时可以借助 Aadhaar 做身份核验,但两者不是一回事,ABHA 也不会把 Aadhaar 号暴露在交换报文里。混淆这两者,会在设计机构侧集成时把身份核验与健康身份混成一个流程。

期待三:以为 ABDM 是一份可以「接入」的 API。 它是一组角色协议。你接的不是一个端点,而是一套角色:要么当 HIP 提供病历,要么当 HIU 索取病历,要么当网关侧的同意管理器,要么只是消费公开名录。搞清楚自己扮演哪个角色,比背端点路径重要得多。

1.3 它能给到的与给不到的

你的需求 它给的 够不够
印度医院名录,含类型与地理分布 HFR 公开检索,按邦、县、类型逐条浏览 够,但需自行抓取整理
印度执业医生名录 HPR 公开检索,含专业与注册信息 大体够,覆盖取决于自愿登记
跨机构调阅某位患者的既往病历 同意管理器 + 网关 + 点对点推送 架构上够,实操依赖两端在线
训练临床语言模型的病历语料 无 完全不够,另寻来源
印度疾病谱的真实世界统计 无(名录不含病种) 不够
理解一个反集中式健康数据治理的样板 完整的公开接口文档与报文结构 很够,是本篇的主要价值
跨国就医时把国内病历带过去 无跨境组件 不够

1.4 你的处境与它能帮到的事

你的处境 它能帮你什么 下一步该做什么
要研究印度医疗资源的地区不均衡 HFR 提供机构级地理与类型字段 先确认抓取条款,再按邦/县聚合
要给一套 HIS 产品做印度合规适配 公开的 FHIR 剖面与角色协议 从沙箱 M1 起步,逐阶段打通
要在印度做多中心随访研究 身份侧靠 ABHA 做跨机构匹配 设计知情同意时同步规划 ABDM 授权
想找一份印度电子病历开源数据集 给不了 转向公开的理赔或登记类数据
写中印卫生信息化对标报告 提供可核查的组件与边界清单 用附录 A 的核对表逐项落证据
只是想知道 ABHA 是什么 概念清晰、一句话可讲完 读完 §3 即可收工

1.5 一句话判断

想拿印度病历的人在这里会空手而归;想搞清楚「不集中存数据也能跨院调病历」这套机制怎么落地的人,这里是全球为数不多已经跑到生产环境、并且文档公开可查的样本。

1.6 不适合谁:四条边界

第一条,找临床语料的不适合。 无论 NLP、影像还是结构化检验值,ABDM 都不提供。它连一份脱敏出院小结都不会给你,因为它的设计里就没有这个仓库。

第二条,要一次性静态快照的不适合。 名录是会变的,机构会新增、合并、下线,抓下来的那份快照三个月后就开始偏离现实。要做时间序列,得自己排期重抓。

第三条,要求零摩擦接入的不适合。 开发者要先在沙箱注册、拿客户端凭证、配置可公网访问的回调地址;机构侧还要完成资质核验与服务订阅。个人开发者拿不到生产权限。

第四条,期待跨境交换的不适合。 ABDM 是印度境内的基础设施,报文与信任链条都锚定在印度国内的机构标识上。想借此把印度患者的病历带到境外使用,架构上没有对应通道。

§2 数据构成与规格

2.1 ABDM 的四类记录,以及它们为什么不能合成一张表

把 ABDM 拆开看,它的「数据」落在四个互不相同的容器里,粒度、更新节奏、可见性都不同。

容器 一行是什么 主键 谁可见 体量口径
身份台账 一个 ABHA 账户 ABHA 号 本人与经授权方 官方未在可及页面公布确切值
机构名录 HFR 一家医疗机构 HFR 机构 ID 公众 公开检索,可逐条浏览
人员名录 HPR 一名执业者 HPR ID 公众 公开检索,可逐条浏览
同意凭据 一次授权 consentId 患者、请求方、网关 不外泄,仅当事方持有

这四类记录之所以不能合成一张宽表,是因为它们的变更主体不同:身份由个人变更,名录由机构申报变更,同意由患者在每次就诊时签发。把它们硬拼在一起,只会得到一张字段大面积空白的表。正确做法是按角色取用——要资源分布就用名录,要交换流程就理解凭据,要身份匹配就用 ABHA 号。

2.2 字段/记录的完整字典

下表把四类记录里最值得关注的字段整理在一起,并标注了可得性与常见坑。字段名以公开文档与开源集成代码中出现的形式为准,大小写因版本而异。

记录 字段 含义 可得性 常见坑
身份 abhaNumber 14 位数字健康标识 本人才可见 被误当 Aadhaar 号
身份 abhaAddress xxx@abdm 地址式用户名 本人可见 改动后旧绑定失效
身份 healthIdNumber 旧版本字段名 旧接口 与 abhaNumber 混用
身份 mobile 绑定手机号 本人可见 换号后 OTP 收不到
身份 yearOfBirth 出生年 本人可见 只到年,不做精确年龄
身份 gender 性别枚举 本人可见 枚举值有限,无其它选项
身份 address 结构化地址 本人可见 多语言并存
机构 facilityId HFR 机构唯一标识 公开 改名后 ID 不变
机构 facilityName 机构名称 公开 缩写与全称并存
机构 facilityTypeId 机构类型(医院/诊所/药房等) 公开 类型树层级较深
机构 ownership 公办/私立等归属 公开 部分记录空缺
机构 stateId / districtId 邦与县编码 公开 编码体系需对照表
机构 latitude / longitude 经纬度 公开 精度不一,部分是城市质心
机构 active 是否在用 公开 停用机构仍在库
机构 createdDate 登记日期 公开 不等于开业日期
人员 hprId 执业者唯一标识 公开 一位多证情形
人员 hprType 执业者类型 公开 传统医学系统单列
人员 councilName 注册委员会 公开 邦级委员会命名不一
人员 registrationNumber 执业注册号 公开 跨邦注册号冲突
人员 speciality 专科 公开 自由文本,需归一
同意 consentId 授权凭据标识 当事方 与请求 ID 易混
同意 purpose.code 授权目的码 当事方 目的码表有限
同意 hiTypes 数据类型枚举 当事方 枚举与实际文档不总对齐
同意 permission.dateRange 授权时间窗 当事方 时间窗与就诊日不同
同意 permission.dataEraseAt 擦除时间 当事方 擦除执行依赖受托人
同意 accessMode 访问模式 当事方 多为只读查看
交换 transactionId 一次数据传输事务 当事方 与 consentId 分离
交换 careContextReference 就诊上下文引用 当事方 由 HIP 自行编码
交换 keyMaterial 传输加密公钥材料 当事方 曲线与格式易配错
交换 dataPushUrl 接收方回推地址 当事方 必须公网可达

注:上表共 26 行、5 列(记录 / 字段 / 含义 / 可得性 / 常见坑),覆盖身份、机构、人员、同意、交换五类记录。字段名的大小写在 v0.5 与 v3 两个版本之间并不完全一致,引用时以当前版本文档为准;healthIdNumber 是旧版本遗留写法,新代码应统一改用 abhaNumber。

2.3 一条记录的完整解剖

最值得解剖的一条记录是同意凭据。它比机构名录更能代表 ABDM 的设计意图:授权本身就是一条结构化记录,包含谁、给谁、为什么、能看什么、看多久。

下面是一份典型的同意请求报文骨架,字段取自公开的集成示例,标识符已替换为占位常量。

{
  "requestId": "req-0001-consent-init",
  "timestamp": "2026-03-18T10:00:00.000Z",
  "consent": {
    "purpose": {
      "text": "Care Management",
      "code": "CAREMGT",
      "refUri": "https://nrces.in/ndhm/purposes/CAREMGT.html"
    },
    "patient": { "id": "example.patient@abdm" },
    "hip": { "id": "HIP-EXAMPLE-0001" },
    "hiu": { "id": "HIU-EXAMPLE-0001" },
    "requester": {
      "name": "Example Doctor",
      "identifier": {
        "type": "REGNO",
        "value": "REG-EXAMPLE-01",
        "system": "https://www.nmc.org.in"
      }
    },
    "hiTypes": ["OPConsultation", "Prescription", "DiagnosticReport", "DischargeSummary"],
    "permission": {
      "accessMode": "VIEW",
      "dateRange": { "from": "2025-01-01T00:00:00.000Z", "to": "2026-03-18T23:59:59.000Z" },
      "dataEraseAt": "2026-06-18T23:59:59.000Z",
      "frequency": { "unit": "HOUR", "value": 1, "repeats": 0 }
    }
  }
}

逐段读这份报文:

  • purpose.code 是目的码,决定这次授权属于「诊疗」「科研」还是「保险理赔」。目的码是有限枚举,超出枚举的需求无法表达。
  • patient.id 用 ABHA 地址而非数字号,是为了方便口述与二维码传递。
  • hip 与 hiu 各自是机构 ID,二者都必须已经在 HFR 里登记并被激活,否则网关无法路由。
  • hiTypes 是数据类型枚举,患者可以只授权处方与诊断报告、不授权出院小结。这是按类授权而非按文件授权。
  • permission.dateRange 限定可读取的诊疗时间范围,dataEraseAt 是接收方必须执行擦除的时间点,frequency 限定拉取频率。
  • 整份请求没有一处涉及临床内容本身。

当患者同意后,网关返回的状态里会带一个 consentId,俗称同意凭据。此后 HIU 拿着这个 consentId 去请求数据,HIP 才把对应的 FHIR 资源包推送出去。凭据是钥匙,病历是保险箱里的东西,钥匙不在 ABDM 手里。

2.4 不同组件的更新节奏

组件 变更主体 更新频率 对使用者的影响
ABHA 身份 个人 随时 地址与手机号变更导致旧匹配失效
HFR 机构名录 机构申报 随时 快照会过时,需定期重抓
HPR 人员名录 执业者与委员会 随注册变化 跨邦注册状态更新滞后
同意凭据 患者与网关 每次就诊 无法预先批量获取
FHIR 剖面 NHA 版本迭代 旧集成代码需迁移
接口端点 NHA 版本迭代 v0.5 与 v3 并存

2.5 与同类资源的字段差异

ABDM 的 HFR 与「医院名录」类资源相比,差异不在字段多寡,而在字段的来源与责任:HFR 的每条记录由机构自己申报并承担准确性责任,平台只做格式与标识核验。这与第三方抓取的名录(如地图服务上的医院 POI)性质完全不同。

对比项 ABDM HFR 地图类 POI 名录 各国卫生统计年报
记录来源 机构自报 + 平台核验 众包或商业采集 统计数据汇总
主键 统一机构 ID 内部 ID 不适用(只有汇总)
地理精度 机构自填经纬度 采集点位,较准 行政区级
是否含人员 否,人员另在 HPR 否 通常只有人数量
更新机制 机构登录维护 采集与用户反馈 年度发布
可用于时间序列 需自行排期重抓 难 是
许可明确度 条款需自行核对 商业条款 多为开放许可

2.6 名录字段缺失的一般形态

名录类数据最耗时的不是抓取,而是处理「部分缺失」。ABDM 的两本名录有一批字段是可选的,机构登记时可以留空,这导致同一批记录在不同维度上的完整性差别很大。

缺失形态 典型字段 处理建议 不处理的后果
完全空列 部分联系方式 直接丢弃该列 无影响
部分缺失 经纬度 与行政区质心比对后标记 空间分析偏倚
层级缺失 细分机构类型 向上归并到父类 细分项低估
枚举外取值 专科名称 建立映射表 分组时出现大量小组
时间缺失 登记日期 不做生命周期分析 时间序列断裂
结构不一致 地址格式 抽取邦与县两个层级 地理聚合失败

处理这六类缺失有一个共同原则:先把「缺失」显式标注出来,再决定要不要丢。直接 dropna() 是最常见的错误,它会在无声无息中改变样本构成。

2.7 与「同意」有关的元数据为什么不算数据

有一种误解值得单独澄清:既然同意凭据里有 code、hiTypes、dateRange 这些结构化的字段,能不能把它们聚合起来做「全国就医行为分析」?

不能,理由有三条。其一,凭据只在当事方之间传递,网关不留全量副本,聚合的前提不存在;其二,即使某一家 HIU 攒下了自己经手的所有凭据,那也只是这家机构的服务人群,不是全国样本;其三,凭据记录的是「谁被授权看什么」,不是「患者得了什么病」,把它当行为数据用,等于把门禁记录当成病历。

凭据字段 能推出的结论 不能推出的结论
hiTypes 患者同意共享了哪几类文档 患者患了什么病
dateRange 可读取的就诊时间窗 患者实际就诊次数
purpose.code 本次授权的用途 全国用途分布
frequency 允许的拉取频率 实际拉取次数

§3 身份层:ABHA 想解决的到底是「你是谁」还是「哪份病历是你的」

3.1 ABHA 的两种形态

ABHA 有两种表达方式:14 位数字号与地址式用户名。前者在柜面录入、打印在卡片上时更可靠;后者形如 姓名@abdm,便于口述、写便签、做成二维码。

这个双形态设计不是重复建设,而是对应两种使用场景:医院前台录入需要无歧义的长数字,患者之间、患者与医生之间口头传递需要一个记得住的名字。两种形态指向同一个账户,可以在绑定关系上互换。

形态 示例结构 优势场景 风险
数字号 14 位数字 柜面录入、纸质材料 长了易抄错
地址式 name@abdm 口述、二维码、短信 可能与他人重名需加后缀

3.2 身份层为什么不等于全国患者索引

一个常见的技术误读是:既然有统一身份,那就能做全国患者索引,进而做全国病历检索。ABDM 刻意不往这个方向走。身份号只用于在交换时确认对端是同一个人,不用于「按号查所有病历」。

这个区别在工程上很实际:如果在网关侧保存「ABHA 号 → 所有 care context」的映射,那么整个系统就退化成了一个集中式病历索引——虽然不含内容,但含元数据,元数据本身就足以还原一个人的就医轨迹。ABDM 的选择是把 care context 绑定关系留在 HIP 一侧,网关只路由请求,不留全量索引。

维度 集中式患者索引(ABDM 未采用) ABDM 的实际做法
谁掌握就医轨迹 中心平台 各机构分别掌握自己的部分
跨机构检索 一次查询即可 逐家发现,靠同意驱动
泄露后果 单点泄露即全量泄露 泄露面被机构边界切分
运维成本 中心化,较易 分布式,路由与回调复杂

3.3 身份与名录的咬合点

ABHA 本身不指向机构,但交换时 hip.id 与 hiu.id 都是机构标识,而机构标识来自 HFR。所以身份、名录、交换三者不是并列的三个模块,而是串联在一条链上:身份告诉你「这是谁」,名录告诉你「哪家机构参与」,交换协议把两者连起来完成一次调阅。

断链的情形很常见:患者有 ABHA,但就诊的医院没登记 HFR,那这家医院就当不了 HIP,它的病历无法通过 ABDM 调取。患者有 ABHA,但对面医生所在机构没接入 HIU,那也拉不到。ABDM 的可用性等于两端同时接入的概率。

3.4 身份的三种失效情形

ABHA 作为标识并非永远可靠。下面三种情形在集成与研究中都会遇到,且都不能靠加字段解决。

情形 表现 后果 缓解手段
一人多号 同一人用不同手机号登记了两次 跨机构片段被当成两个人 用人口学字段做候选合并
号随人变 地址式用户名被改动 旧引用失效 以数字号作主键
手机号换绑 一次性密码收不到 登录与授权中断 柜面人工核验

这三种情形里,第一种最麻烦,因为它不会报错——系统是「成功」地建了两个账户,只有在下游做人群分析时才会暴露为重复样本。

abhaAddress 在接口示例里常被写作 example.patient@abdm 这样的形式,注意它是一个地址而不是匿名标识:字母部分往往带有可读信息,直接公开会泄露姓名线索。做数据交换日志脱敏时,这一列要和手机号同等对待。

§4 质量与特色:名录够不够用,交换靠不靠得住

4.1 名录质量的三个可判断维度

维度 判断方法 ABDM 的实际表现 对研究的含义
覆盖 与卫生统计年报的机构总数比对 只含自愿登记机构 不能直接当资源总量
准确 抽样核实地名与坐标 自填,精度参差 空间分析需清洗异常点
稳定 同一机构多次抓取比对 ID 稳定,名称会变 以 ID 为主键而非名称
粒度 是否可追到单家机构 可,一条一机构 适合做机构级建模
分类 类型树是否统一 统一类型树 可跨邦比较类型构成

4.2 交换质量的四个可观察指标

交换不产生可公开统计的数据,但它的健康度有四个可以间接观测的信号:同意请求的成功率、从请求到推送的时延、推送失败后重试的成功率、以及授权到期前未被使用的比例。这四个指标在公众视野里不可见,只有参与方能在自己的日志里看到。

指标 观测位置 健康区间(经验判断) 异常时的常见原因
同意成功率 HIU 侧日志 高且稳定 患者端界面理解障碍
端到端时延 两侧日志对齐 秒到十秒级 回调地址不可达
重试成功率 网关与 HIP 日志 逐次上升 对端系统休眠
授权未使用率 HIU 侧统计 越低越好 流程设计脱节

4.3 案例:阿格拉三家三级医院的门诊 ABHA 登记

要让「同意疲劳」与「数字素养」这两件事落地,最合适的是一个已经发表的门诊现场研究。BMC Health Services Research 2026 年刊登的一项横断面研究,在阿格拉(Agra)三家三级医院的门诊部做了实地调查,覆盖四百余名门诊就诊者,同时比对了八个月内的院内登记记录。

它给出的几个数字值得单独拎出来:

观察项 数值 说明了什么
ABHA 登记相对传统门诊登记的月度采纳率 约 24% 数字通道尚未成为主通道
数字健康素养量表均分 2.94(满分 4) 中等偏下
认为 ABDM 让登记更方便的比例 八成以上 体验层面认可度高
对数据隐私感到放心的比例 约 55% 信任是短板
需要培训与现场协助的比例 约 88% 自助模式覆盖不了多数人
就诊过参与机构却仍不了解 ABDM 的比例 约 59% 认知缺口大于接触机会

这些数字与 ABDM 的架构推论是一致的:身份层越轻、越依赖患者自助,采纳就越受数字素养约束。研究中列出的障碍依次是偏好线下就医、流量资费、应用难用、语言障碍、不愿提供一次性密码——每一条都指向「自助式授权」这一设计假设的边界。

值得强调的是性别与教育差异:男性在素养量表上显著高于女性,教育程度与量表得分的相关性最强,年龄呈弱负相关。对要在印度做患者侧干预的团队,这意味着不能把授权流程假设为一个无差别的用户界面。

4.4 这个案例对同意架构的三个推论

第一,同意签发次数与就诊频次成正比。慢性病患者一年可能去五六家机构,每次都要重新走一遍授权,这在素养量表 2.94 的人群里成本很高。§4.3 的案例没有直接测量同意疲劳,但它的障碍排序(偏好线下、害怕提供一次性密码)已经预示了这一点。

第二,语言是硬门槛。印度有二十余种官方语言,界面语言与患者的阅读能力不匹配时,授权理解会被打折,而授权理解是这套架构的合法性基础。

第三,信任的影响大于易用性的影响。体验上八成以上的人说好用,但只有约 55% 的人对隐私放心——这两个数字的落差正是同意架构最脆弱的位置。§4.3 的案例里,这个落差比任何技术指标都更值得政策制定者关注。

4.5 与「集中式病历库」路线的对照

对照项 ABDM 路线 集中式病历库路线
数据位置 分散在原机构 收归中心平台
隐私风险面 按机构切分 单点全量
建设成本 分摊到各机构 集中在中心
一次性数据可得性 低,只能逐次授权取 高,可批量导出
对机构意愿的依赖 高 低(行政命令即可)
适合的场景 日常诊疗、渐进式接入 科研语料、监管统计

这张表最该被记住的一行是「一次性数据可得性」。科研需求与诊疗需求在这一点上天然冲突:越是方便批量导出的系统,越不适合承载敏感病历;越是严格授权的系统,越不可能产出可直接下载的数据集。ABDM 明确选了后一条路,也就明确放弃了做「数据集」的可能。

§5 取数:能拿的只有名录,能跑的是沙箱

5.1 三条取数路径

路径 面向 拿到什么 门槛
名录浏览与导出 研究者、公众 机构与人员结构化名录 低,但须核对使用条款
开发者沙箱 集成方 接口行为、测试身份、回调 需注册与客户端凭证
生产接入 医院、HIS 厂商 真实的同意与交换通道 高,需资质核验与服务订阅

本文的可运行示例集中在第二条与第一条。第三条不在公开文档的可自证范围内,本文不给具体数字。

5.1.1 HFR 与 HPR 到底公开到什么程度

把两本名录放在一起看,公开程度并不同。HFR 面向公众的检索页直接给出机构的名称、类型、所属邦县与认证状态,任何人打开浏览器就能逐页翻;HPR 的公开检索同样面向公众,但可查字段更偏执业身份——执业类型、注册委员会、注册号这类信息,而执业者的联系方式通常不公开。两者的共同点是:查询免费、无需登录、无需凭证;差别在于字段的可比性,HFR 的类型树是全国统一的,HPR 的专科字段则是半自由的文本。

公开维度 HFR 机构名录 HPR 人员名录
是否需登录 否 否
是否需开发者凭证 否 否
主键是否全国唯一 是 是
地理字段 邦、县、经纬度 通常只到执业机构或邦
分类字段 统一类型树 专科文本需归一
联系方式公开度 部分公开 多数不公开
适合做的分析 空间分布、类型构成 人力供给、专业结构

这个差异对研究设计有直接影响:用 HFR 可以做空间分析,用 HPR 只能做结构分析——因为人员记录往往不带精确坐标。想把两者关联起来做「某县每万人有多少执业者」,需要借道机构名录的地理字段,把人员按所属机构落到县,这一步会引入额外的链接误差。

5.2 环境与版本:v0.5 与 v3 并存

这是接入时最先踩的坑。公开的集成资料里,网关路径在 v0.5 与 v3 两代之间并存:沙箱会话端点在 v0.5 路径上,而 ABHA 侧的登记与登录已迁到 v3 前缀。不同来源的文档给出的基础地址不同,直接照抄会得到 404。

用途 常见路径形态 说明
网关联调会话 /gateway/v0.5/sessions 拿 bearer 令牌
网关联调会话(v3) /gateway/v3/sessions 新版本路径
ABHA 登记 /v3/enrollment/request/otp 手机号或 Aadhaar 起手
同意发起 /consent/v3/request/init HIU 侧发起授权
数据请求 /data-flow/v3/health-information/request 凭凭据取数
机构发现 /api/v3/hip/patient/care-context/discover 网关回调 HIP

5.3 用脚本探一个公开端点

下面这段脚本只做一件事:请求一个公开名录页面,报告状态码与响应长度。它不需要凭证,用来判断当前网络能否直达官方域名。

#-- 探测 ABDM 主站可达性,不携带任何凭证
for url in https://abdm.gov.in https://hfr.abdm.gov.in https://sandbox.abdm.gov.in; do
  code=$(curl -s -o /dev/null -m 15 -w "%{http_code}" "$url")
  echo "$url -> HTTP $code"
done

如果三个站点都返回 403,说明请求被边缘防护拦截,这是常见的网络侧现象,不代表站点不存在。换用浏览器或合规的抓取通道即可。

5.4 用 Python 拿联调会话

沙箱联调的第一步是用客户端 ID 与密钥换一个访问令牌。下面的脚本把凭证放在环境变量里,避免写进代码。

#-- 用客户端凭证换沙箱访问令牌(需先在沙箱注册取得 clientId/clientSecret)
import os, json, urllib.request

BASE = os.environ.get("ABDM_GATEWAY", "https://dev.abdm.gov.in")
payload = json.dumps({
    "clientId": os.environ["ABDM_CLIENT_ID"],
    "clientSecret": os.environ["ABDM_CLIENT_SECRET"],
}).encode()

req = urllib.request.Request(
    f"{BASE}/gateway/v0.5/sessions",
    data=payload,
    headers={"Content-Type": "application/json"},
    method="POST",
)
with urllib.request.urlopen(req, timeout=30) as resp:
    body = json.loads(resp.read())
print("token_prefix:", body.get("accessToken", "")[:12])
print("expires_in:", body.get("expiresIn"))

令牌有效期按文档为半小时量级,实践中常在边沿提前失效,集成时应在请求前留出刷新缓冲。

5.5 构造一次同意请求

真正的取数从同意开始。下面的脚本按公开示例的字段构造一个同意请求体,并把它打印成可直接提交的 JSON。它不发送请求,只校验结构。

#-- 构造同意请求体:字段口径取自公开集成示例
import json, datetime as dt

now = dt.datetime.now(dt.timezone.utc)
consent = {
    "requestId": "req-consent-demo-0001",
    "timestamp": now.isoformat(),
    "consent": {
        "purpose": {"text": "Care Management", "code": "CAREMGT",
                    "refUri": "https://nrces.in/ndhm/purposes/CAREMGT.html"},
        "patient": {"id": "example.patient@abdm"},
        "hip": {"id": "HIP-EXAMPLE-0001"},
        "hiu": {"id": "HIU-EXAMPLE-0001"},
        "requester": {"name": "Example Doctor",
                      "identifier": {"type": "REGNO", "value": "REG-EXAMPLE-01",
                                     "system": "https://www.nmc.org.in"}},
        "hiTypes": ["OPConsultation", "Prescription", "DiagnosticReport"],
        "permission": {
            "accessMode": "VIEW",
            "dateRange": {"from": "2025-01-01T00:00:00.000Z",
                          "to": now.strftime("%Y-%m-%dT%H:%M:%S.000Z")},
            "dataEraseAt": (now + dt.timedelta(days=90)).strftime("%Y-%m-%dT%H:%M:%S.000Z"),
            "frequency": {"unit": "HOUR", "value": 1, "repeats": 0},
        },
    },
}
assert consent["consent"]["hiTypes"], "hiTypes 不能为空"
print(json.dumps(consent, ensure_ascii=False, indent=2))

结构校验通过之后,同一个报文发往 POST {gateway}/consent/v3/request/init 即可进入同意流程。注意 dataEraseAt 必须晚于 dateRange.to,否则部分实现会直接拒绝。

5.6 一次完整的交换时序

把前面几段拼起来,一次跨机构调阅的时序如下。理解时序比背端点更重要,因为绝大多数集成失败都发生在时序的某一跳上,而不是某个端点写错。

步 发起方 动作 失败时的表现
1 患者 在新机构完成 ABHA 登录 一次性密码收不到
2 HIU 向网关提交同意请求 目的码或数据类型非法
3 网关 把请求转给同意管理器 患者长时间未确认
4 患者 在手机上确认授权范围 界面语言看不懂而放弃
5 同意管理器 签发同意凭据 凭据签发但未回调
6 HIU 凭凭据向网关请求数据 凭据已过期
7 网关 路由到 HIP 做发现 HIP 离线或未激活
8 HIP 封装 FHIR 包并加密推送 回推地址不可达
9 HIU 解密、落库、渲染 密钥格式不匹配

这套时序里,第 4 步是最容易被工程视角忽略的一环:整条链路的技术健康度再高,患者不理解授权范围就会止步于此。§4.3 的案例正是在这一步上给出了量化的瓶颈。

5.7 接收数据推送时的解密骨架

HIP 推送过来的是加密后的 FHIR 包:先做 X25519 密钥交换,再用派生密钥做 AES-256-GCM 解密。下面给出解密的骨架,密钥材料由报文携带。

#-- 接收 HIP 推送的加密 FHIR 包并解密的骨架(cryptography 库)
from cryptography.hazmat.primitives.asymmetric.x25519 import X25519PrivateKey, X25519PublicKey
from cryptography.hazmat.primitives.kdf.hkdf import HKDF
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.ciphers.aead import AESGCM

def derive_key(priv: bytes, peer_pub: bytes, salt: bytes) -> bytes:
    shared = X25519PrivateKey.from_private_bytes(priv).exchange(
        X25519PublicKey.from_public_bytes(peer_pub))
    return HKDF(algorithm=hashes.SHA256(), length=32, salt=salt, info=b"").derive(shared)

def decrypt_bundle(priv: bytes, peer_pub: bytes, salt: bytes, iv: bytes, blob: bytes) -> bytes:
    return AESGCM(derive_key(priv, peer_pub, salt)).decrypt(iv, blob, None)

解密后得到的是 FHIR Bundle,资源类型与同意请求里的 hiTypes 一一对应。这一步之后才算真正「拿到一份病历」,而且这份病历只对本次授权有效。

5.8 名录侧的最小抓取骨架

名录侧不需要凭证,只需要遵守站点的访问频率。下面的脚本演示按邦遍历检索页并保存原始响应,供后续解析。

#-- 按邦遍历 HFR 检索页并落盘原始 HTML(请自行控制频率并核对使用条款)
import time, pathlib, urllib.request

OUT = pathlib.Path("hfr_pages")
OUT.mkdir(exist_ok=True)
UA = {"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"}
states = ["Andhra Pradesh", "Bihar", "Kerala", "Maharashtra", "Tamil Nadu"]

for st in states:
    url = "https://hfr.abdm.gov.in/search?state=" + urllib.parse.quote(st)
    req = urllib.request.Request(url, headers=UA)
    try:
        with urllib.request.urlopen(req, timeout=30) as r:
            html = r.read().decode("utf-8", "replace")
        (OUT / f"{st.replace(' ', '_')}.html").write_text(html, encoding="utf-8")
        print(st, len(html))
    except Exception as e:
        print(st, "failed:", e)
    time.sleep(5)

这段代码的要点不在抓取本身,而在三处细节:带上明确的 User-Agent、每次请求之间留出足够间隔、失败就跳过而不是重试轰炸。名录是可得的公开资源,但「可得」不等于「可以无节制抓取」。

5.9 把名录整理成可分析的宽表

拿到原始响应后,真正的工作是实体消解与字段归一。下面给出最小化的整理骨架。

#-- 把抓下来的机构记录整理成宽表:以 ID 为主键,名称只作辅证
import pandas as pd

def normalize(df: pd.DataFrame) -> pd.DataFrame:
    df = df.copy()
    df["name_key"] = df["facilityName"].str.lower().str.replace(r"[^a-z0-9]", "", regex=True)
    df["state"] = df["stateName"].str.strip().str.title()
    df["has_geo"] = df["latitude"].notna() & df["longitude"].notna()
    df = df.drop_duplicates(subset=["facilityId"])
    return df.sort_values(["state", "facilityId"]).reset_index(drop=True)

raw = pd.read_json("hfr_raw.json")
clean = normalize(raw)
print(clean.groupby("state")["facilityId"].count().sort_values(ascending=False).head(10))
print("有坐标比例:", round(clean["has_geo"].mean(), 3))

drop_duplicates 用 facilityId 而不是名称,是因为同一机构常有英文全称与缩写两种写法;用名称去重会把一家拆成两家,也会把两家并成一家。

§6 与库内条目的关系

6.1 关系图谱

ABDM 在千方医数集的体系里不属于「数据集家族」,而属于基础设施与治理范式家族。它和库内几类条目构成参照关系,而不是替代关系。

库内同类 关系类型 说明
Synthea 正相反 Synthea 是合成病历生成器,产出的正是一份病历数据集,ABDM 恰恰不产出病历
NDHM 相关论文 制度来源 ABDM 的前身名称,同一套架构
各国国家患者索引类系统 路线对照 集中式索引 vs ABDM 的分布式绑定
医保理赔类数据库 数据替代 想要印度诊疗数据集,理赔数据比 ABDM 更接近目标
公开医院名录类资源 字段对照 与 HFR 在地理与类型字段上可横向比较
FHIR 规范本体 技术底座 ABDM 的交换格式建立在其上

Synthea 这一行值得多看两眼。它的存在恰好说明了 ABDM 的反差:当一个国家的身份与交换基础设施足够成熟、导致真实病历不可能被公开时,合成病历就成了唯一能公开分发的替代品。两者不是竞争对手,而是一条光谱的两端。

6.2 检索路径

你想找的 检索关键词 不该用的词
ABDM 本体 Ayushman Bharat Digital Mission、ABDM Indian EMR dataset
同意架构 consent manager + health information exchange EMR download
机构名录 Health Facility Registry、HFR India hospital list India csv
人员名录 Healthcare Professionals Registry、HPR doctor database India
接口实现 ABDM gateway API、ABHA sandbox ABDM API python library
采纳实证 ABHA adoption、digital health literacy India ABDM dataset

最后一行是关键:用 ABDM dataset 去检索,回来的多半是第三方对名录的二次整理,而不是官方数据产品。用 ABHA adoption 这类实证词,才能找到像 §4.3 的案例那样真正有现场数字的研究。

6.3 为什么要在这个库里收录一个「没有数据的数据集」

收录说明本身就是对分类体系的一次检验。千方医数集的绝大多数条目回答「这份数据能不能用」,而 ABDM 需要回答一个不同的问题:当某个国家把基础设施做成不可批量取用的形态时,研究者还能拿到什么、该走哪条替代路线。

用户提出的问题 本页给出的答案形态 替代条目
印度有哪些医院 可得的机构名录 本页 §5.1.1
印度有哪些医生 可得的人员名录 本页 §5.1.1
印度患者的病历 不可得,需换路线 Synthea(合成)与理赔类数据库
印度的就诊量 不可得 卫生统计年报类条目
跨机构交换怎么做 可学的协议样本 本页 §5.6
同意架构的风险 可引的实证 §4.3 的案例与 §7 的局限

这张表的意义在于把「找数据」这件事拆成六种不同的问题。同一个用户说「我想要印度的健康数据」,可能对应上面任意一行,而每一行的答案完全不同。

6.4 与合成数据路线的互补

如果把 ABDM 与合成病历生成器放在一起,会看到一个有意思的分工:真实病历因为被基础设施保护起来而不可得,合成病正因为不受保护而随处可得。研究流程里两者可以并存——用名录确定机构与人口规模,用合成数据打磨算法,用单点合作取得的小样本真实数据做外部验证。ABDM 在这条链上提供的正是「规模与机构结构」这一段。

环节 提供方 在流程里的作用
人群与机构结构 ABDM 名录 定义样本框与抽样层
算法原型 合成病历 无损隐私的调试素材
真实验证 单点合作数据 检验外部效度
交换落地 ABDM 协议 把验证过的流程接到真实机构

§7 质量评估与局限性

7.0 阅读本节前的一个前置校正

在给 ABDM 打分之前,必须先纠正一个评估对象的错位。绝大多数数据集评估表问的是「这份数据的质量如何」,而 ABDM 根本不能被这样评估——它的质量不体现在数据上,而体现在协议是否被遵守、路由是否成功、授权是否被正确执行上。把数据质量量表套上去,会得到一个必然很低的分数,而这个低分说明的是量表误判,不是 ABDM 失败。

正确的评估姿势是分三层:名录层可以按常规数据质量评估,因为它确实是一份可下载、可核对的表;协议层应按可用性、互操作性、可审计性评估;临床层不评估,因为没有可评估的对象。本节后面所有评分都按这个分层来读。

7.1 五维评分

维度 评分 依据 说明
名录覆盖度 中 只含自愿登记机构 不能当资源总量
名录字段质量 中 自填,精度参差 需清洗
协议完整性 高 目的码、HI-Type、时间窗、擦除时间齐备 公开文档可复核
互操作性 中高 建立在 FHIR 之上,但版本并存 v0.5 与 v3 迁移有成本
临床数据可得性 极低 架构上不提供 设计选择而非缺陷

如果用 DAIMS 式的成熟度框架来铺,会得到下面这张表。它的意义在于让「低"分"」与「缺陷」区分开:可得性一栏的低分,是架构的刻意结果。

DAIMS 维度 状态 评级
可发现性 名录与文档均公开可检索 高
可访问性 名录可浏览;交换需角色与凭证 中
可用性 名录可直接用;交换需完整集成 中
互操作性 FHIR 基础上做本国剖面 中高
可重用性 名录可复用;临床侧近似为零 低

7.2 三个真实存在的质量风险

风险一,实体重复与拆分。 同一家医院在 HFR 里以「全称」「缩写」「旧名」分别登记的情形并不罕见,机构级统计如果不做消解,会系统性高估机构数。

风险二,坐标精度不可比。 有的机构给出门牌级坐标,有的只给城市质心。把两者混在一起做核密度估计,会人为制造出城市中心的假热点。

风险三,类型树的层级不一致。 机构类型的分类树较深,且很多记录只登记到父类。按细分类型做构成分析时,未细分项会被静默归入父类,导致细分项的绝对数被低估。

7.3 已知的、可枚举的偏差

偏差 机制 对结论的影响
登记自选偏倚 只有主动申报的机构进入库 活跃、信息化程度高的机构被高估
城乡偏倚 城市机构接入动机更强 农村资源被低估
邦级不平衡 各邦推动力度不同 跨邦比较失真
人员重复登记 跨邦或多次注册 执业者数被高估
类型缺失 只登记父类 细分类型构成失真
时间戳偏差 登记日期当开业日期用 生命周期分析错误
采纳率偏差 只统计已接入机构 无法代表全部门诊量
素养偏倚 自助流程依赖数字能力 老年与低教育人群被系统性遗漏

这些偏差里,前五条属于名录层,可以靠清洗与外部对账缓解;后三条属于交换层与采纳层,只能靠实地研究补充,而 §4.3 的案例正是这类补充的样本。

7.4 外部验证矩阵

待验证的说法 外部证据 强度
启动时间为 2021 年 9 月 同行评议论文的方法段明确表述 强
ABDM 不集中托管病历 公开接口文档中的角色划分与点对点推送流程 强
采纳率低于传统登记 三家三级医院八个月的院内记录比对 中(单地区)
数字素养制约采纳 四百余名门诊就诊者的量表与访谈 中(单地区)
隐私信任是短板 同一研究的满意度条目 中
网络安全是长期风险 另一篇针对架构与政策的评估论文 中(定性)
机构名录包含哪些字段 官方检索页可逐条核对 强(需现场核对)
全国 ABHA 注册总数 官方未在可及页面给出可复核数值 未核实

最后一行必须诚实标注。ABDM 的落地规模在政府新闻稿里常以整数口径出现,但这些数字既没有随附可下载的对账文件,也不在本文可核验的公开页面上稳定呈现。按纪律,本文不引用无法复核的总量数字,只写架构与名录这类可自查的事实。

7.5 它为何能持续:因为它的成本被分摊给了愿意接入的机构

ABDM 的生存逻辑不在数据规模,而在成本结构。集中式病历库需要国家一次性投入巨额存储、迁移与运维,还要承担单点泄露的全部政治后果;ABDM 把存储留在机构侧,把成本拆成许多笔小钱,让医院用自己的系统承担,国家只维护路由、名录与规范。这套结构一旦成形,退出成本很高——已经接入的机构不愿意回退到纸质调阅,患者也已经习惯了有这个通道。这就是它能持续的原因:不是因为它好用,而是因为它便宜且已嵌入流程。

§8 生态位与历史

8.1 历史沿革

时间 事件 意义
2019 年前后 国家数字健康蓝图提出 定下身份 + 交换的总体方向
2021 年 9 月 NDHM 以试点形式启动 组件开始成形
2021 年 9 月 官方宣布全国推开 名称逐步统一为 ABDM
2022 年起 名录与身份组件开放 机构与人员开始登记
2023 年起 沙箱与接口版本迭代 v0.5 向 v3 迁移
2026 年 采纳实证研究陆续发表 从建设期进入评估期

这里的时间线只保留能由公开材料相互印证的事件。具体到某次发版的具体日期,本文不作断言。

8.2 在印度数字健康版图中的位置

ABDM 与印度其他几条数字健康主线是并行的,不是从属的:Ayushman Bharat PM-JAY 是医保支付体系,ABDM 是数据交换基础设施,两者在保险理赔场景上有交集——理赔需要病历,而病历调取走 ABDM 的同意通道。这个交集正是 ABDM 官方描述里强调「保险管理」也属于其服务对象的原因。

体系 核心功能 与 ABDM 的关系
PM-JAY 医保支付与理赔 消费方,理赔时调病历
ABDM 身份、名录、交换 基础设施层
各邦健康门户 本地服务与统计 可选接入方
私立 HIS 厂商 机构内系统 HIP/HIU 的实现方
FHIR 社区 规范与工具 技术底座与生态

8.3 国际对照

国家或地区 路线 与 ABDM 的相似与差异
爱沙尼亚 国家级交换层 + 公民身份 相似:不集中存病历;差异:身份体系更早成熟
英国 NHS 全国患者索引 + 摘要记录 差异:有集中摘要,ABDM 无
澳大拉西亚 以患者为中心的摘要 差异:摘要集中托管
北欧诸国 强注册库 + 交换 差异:注册库本身即高覆盖数据集
ABDM 身份 + 名录 + 交换,无摘要 特点:最彻底的分散式

这张表最该记住的一点:ABDM 是其中唯一明确不做集中摘要的一条路线。爱沙尼亚等国的交换层背后仍有较完整的国家级索引,而 ABDM 连索引都刻意做薄。

8.4 生态位的三句话

第一,对研究界,它是一个不可得数据的可得证据——通过它你能证明某类数据确实存在,但无法获得。

第二,对工程界,它是一套已上生产的角色协议样本,值得照抄的是它的目的码设计、时间窗设计与擦除时间设计,而不是它的具体端点。

第三,对政策界,它是一条反集中式路线的真实试验,其成败最终取决于机构接入意愿与患者信任,而不是技术。

§9 使用指引

9.1 三种角色的路径

角色 目标 起点 关键动作 验收标准
研究者 用名录做资源分布研究 HFR 检索页 抓取、清洗、消解、对账 机构数能与外部统计对上量级
集成工程师 让自家 HIS 能收发病历 沙箱注册 打通 M1 至 M3,配置回调 沙箱内完成一次端到端调阅
政策研究者 评估同意架构的落地 公开文档 + 实证论文 分层解读,区分名录层与协议层 结论能落到具体条款

三条路径的共同点是:都从公开可得的东西起步,不依赖任何需要特权才能拿到的材料。

9.2 一条最短的可用流程

对研究者而言,最短可用流程是「抓一页名录、整理成表、做一个描述性统计」。下面的脚本是端到端的骨架,只要把目标站点的检索参数换成实际值即可。

#-- 最短流程:抓取 -> 落盘 -> 整理 -> 出一张邦级机构数表
python3 - <<'PY'
import pathlib, pandas as pd
p = pathlib.Path("hfr_pages/Agra.html")
if p.exists():
    html = p.read_text(encoding="utf-8")
    print("page_bytes", len(html))
df = pd.DataFrame([{"stateName": "Uttar Pradesh", "facilityId": "F-EXAMPLE-01",
                    "facilityName": "Example District Hospital",
                    "latitude": 27.18, "longitude": 78.01}])
print(df.groupby("stateName")["facilityId"].count())
PY

对上年龄较长、不熟悉命令行的合作方,把这段脚本包成一个 run.sh 双击执行即可,不需要额外的部署。

9.4 三种角色的常见卡点与绕行

角色 第一个卡点 绕行方案 绕不过时怎么办
研究者 抓取页面被边缘防护拦下 改用浏览器手工浏览并小批量导出 改为抽样几个邦做定点核对
集成工程师 沙箱回调地址不可达 用隧道把本地服务暴露出去 先只验证同步端点
集成工程师 版本路径写错 以当前文档路径为准重写 用统一的路径配置项集中管理
政策研究者 找不到可复核的总量数字 只用架构与条款层面的事实 明确标注未核实并给出替代证据
数据分析者 机构名称重复 以机构 ID 去重 仍重复的做人工抽检

这张表说明一件事:ABDM 的使用门槛不在「数据难拿」,而在「每一类角色都要换一种证据」。研究者要的是名录,工程师要的是沙箱,政策研究者要的是条款,三者没有共同的入口。

9.5 一个人也能做完的最小验证

如果只有一天时间,最有产出的一件事是:挑两个邦,各抓几十条机构记录,核对坐标是否落在该邦境内、类型字段是否都在已知枚举内。这一步能同时检验可达性、字段稳定性与数据质量三条假设。

#-- 一天验证:坐标落域检查 + 类型枚举覆盖检查
import pandas as pd

df = pd.DataFrame({
    "stateName": ["Kerala", "Kerala", "Bihar"],
    "facilityTypeId": ["HOSP", "CLINIC", "HOSP"],
    "latitude": [9.93, 11.25, None],
    "longitude": [76.26, 75.78, 85.13],
})
in_range = df["latitude"].between(6.5, 37.5) & df["longitude"].between(68.0, 97.5)
print("坐标落域比例:", round(in_range.mean(), 3))
print("类型取值:", sorted(df["facilityTypeId"].dropna().unique()))
print("缺坐标条数:", int(df["latitude"].isna().sum()))

坐标落域检查用的是印度国境的外接矩形,粗但有效:落在框外的记录一定是错的,落在框内的还要进一步核。

9.6 引用方式

引用 ABDM 时要区分引用对象:引用名录应注明抓取日期与抓取范围;引用架构应引用官方文档章节;引用采纳事实应引用具体论文而不是政府新闻稿。三条互不替代。

引用对象 应写的形式 不该写的形式
HFR 名录 机构名录,抓取日期,邦范围 「印度医院数据库」
交换架构 官方接口文档,章节或端点 「据 ABDM 规定」
采纳率 论文作者、期刊、年份、DOI 「官方称采纳率」
启动时间 论文方法段或官方公告 仅写「2021 年」

§10 AI 使用声明

项目 说明
生成方式 本文由 AI 辅助撰写,人类编辑负责结构与事实核对
事实来源 官方站点与公开接口文档、Europe PMC 收录论文摘要
未能核验项 ABHA 注册总量、HFR/HPR 记录总数、具体发版日期
数据处理 未下载任何个体级数据;未抓取任何需要凭证的接口
代码示例 均为可运行骨架,未对生产环境发起请求
引用边界 所有数字仅用于规模、结构、边界三类判断,未做分布统计
已知局限 官方站点部分页面对外返回 403,本文据公开文档与第三方集成资料交叉核对
更新责任 名录与接口均会变化,引用前应以官方最新页面为准

常见误读(避坑清单)

常见说法 实际 证据
ABDM 是印度的电子病历库 它不托管病历,只做身份、名录与交换 公开接口文档中的角色划分与点对点推送流程
有 ABHA 号就能查全部病历 只能凭当次签发的同意凭据逐次调取 同意请求报文中的时间窗与擦除字段
ABDM 数据可以下载 只有 HFR/HPR 名录可检索,无临床数据 官方站点仅提供名录检索与开发者文档
ABHA 号就是 Aadhaar 号 两者是不同标识,ABHA 登记可借 Aadhaar 核验 身份组件的字段设计中二者分离
同意一次终身有效 每次授权独立,含时间窗与擦除时间 凭据中的 dateRange 与 dataEraseAt
接入就是调一个 API 是选角色、配回调、过资质的一整套流程 M1 至 M3 的阶段划分与 bridge 配置
名录等于全国医疗资源总量 只含自愿登记的机构 采纳率与登记机制的公开描述
采纳率高说明好用 体验认可与隐私信任是两回事 满意度八成以上、隐私放心约 55%
交换失败多是网络问题 回调不可达与对端未激活更常见 集成资料中列出的常见失败端点
跨境也能用同一套通道 信任链锚定在印度境内机构 机构标识与资质核验机制

FAQ

Q:ABDM 有没有可供下载的病历数据?
没有。它的架构里没有中心病历库,病历留在各机构系统内,只能在同意范围内点对点推送。

Q:那研究者能从 ABDM 拿到什么?
两份名录:HFR 机构名录与 HPR 人员名录,可按邦、县、类型检索,适合做资源分布与主数据补全。

Q:ABHA 号和 ABHA 地址有什么区别?
前者是 14 位数字,后者是形如 xxx@abdm 的可读用户名,两者指向同一账户,使用场景不同。

Q:同意可以一次授权、长期使用吗?
不可以。每次授权都带独立时间窗与擦除时间,可限定访问频率,也可提前撤销。

Q:为什么会有 v0.5 和 v3 两套端点?
接口在迭代,新旧版本并存了一段时间。照旧文档写的集成代码会对新路径报错,接入前先确认当前版本的路径。

Q:沙箱和生产环境差在哪?
沙箱用于联调,凭证易得、数据是测试数据;生产需要机构资质核验与服务订阅,个人开发者拿不到。

Q:ABDM 和 NDHM 是什么关系?
同一套建设的先后名称。2021 年 9 月以 NDHM 之名启动,之后统一用 ABDM 对外表述。

Q:名录里的机构数能代表印度的医疗资源总量吗?
不能。名录只含主动登记的机构,城市与信息化程度高的机构更可能入库,农村会被低估。

Q:接入需要公网地址吗?
需要。交换走异步回调,网关要能访问到你的 bridge 地址,内网环境需要隧道或专线。

Q:同意疲劳具体指什么?
指患者每换一家机构就要重新签发一次授权,就诊机构越多、次数越多,长期看会降低使用意愿。

Q:数据擦除是谁执行的?
由接收方在授权到期后按 dataEraseAt 执行,执行结果依赖受托人的系统实现,外部无法独立核验。

Q:如果只想了解概念,该读哪几节?
§1 与 §3 足够。§1 讲清它解决什么,§3 讲清身份层与集中式索引的区别。

术语表

术语 英文 释义
ABDM Ayushman Bharat Digital Mission 阿尤什曼数字健康使命,国家级数字健康基础设施
NDHM National Digital Health Mission 同一套建设的前身名称
NHA National Health Authority 印度国家卫生局,ABDM 主管机构
ABHA Ayushman Bharat Health Account 个人健康账户,含数字号与地址式用户名
ABHA 号 ABHA Number 14 位数字健康标识
ABHA 地址 ABHA Address 形如 xxx@abdm 的可读用户名
HFR Health Facility Registry 医疗机构注册库,公开可检索
HPR Healthcare Professionals Registry 医务人员注册库,公开可检索
HIP Health Information Provider 健康信息提供方,通常是医院侧系统
HIU Health Information User 健康信息使用方,通常是请求方系统
网关 ABDM Gateway 路由同意请求与数据请求的中心组件
同意管理器 Consent Manager 管理同意凭据签发、状态与撤销
同意凭据 Consent Artefact 一次授权的结构化记录
目的码 Purpose Code 授权的用途枚举,如诊疗、科研、理赔
HI-Type Health Information Type 授权的数据类型枚举,如处方、诊断报告
care context Care Context 一次就诊上下文的引用,由 HIP 编码
交换事务 Transaction 一次数据推送,带独立的 transactionId
UHI Unified Health Interface 统一的健康服务发现与预约接口
FHIR Fast Healthcare Interoperability Resources 医疗数据交换的国际标准
密钥材料 Key Material 传输加密所需的公钥与随机数
Bridge Bridge 机构侧的回调接入组件
M1/M2/M3 Milestone 1/2/3 沙箱接入的阶段性目标划分
sandbox Sandbox 开发者联调环境
数据受托人 Data Fiduciary 对数据负有受托责任的一方
擦除时间 dataEraseAt 授权到期后须执行擦除的时间点
数字健康素养 Digital Health Literacy 使用数字健康服务所需的能力水平
采纳率 Adoption Rate 数字通道占全部登记的比例

附录 A:核心数字核对表

项 值 来源 来源层级
启动时间 2021 年 9 月 同行评议论文方法段 论文摘要
主管机构 国家卫生局 官方站点表述 官方页面
ABHA 号位数 14 位 官方与集成资料一致 官方页面
ABHA 地址格式 xxx@abdm 接口示例报文 官方页面
目的码示例 CAREMGT 公开集成示例 第三方集成资料
数据类型示例 OPConsultation / Prescription / DiagnosticReport / DischargeSummary 公开集成示例 第三方集成资料
授权访问模式 VIEW 公开集成示例 第三方集成资料
令牌有效期量级 约半小时 集成资料描述 第三方集成资料
沙箱会话路径 /gateway/v0.5/sessions 公开集成资料 第三方集成资料
同意发起路径 /consent/v3/request/init 公开集成示例 第三方集成资料
数据请求路径 /data-flow/v3/health-information/request 公开集成示例 第三方集成资料
门诊研究样本量 四百余名 论文摘要 论文摘要
月度采纳率 约 24% 论文摘要 论文摘要
素养量表均分 2.94(满分 4) 论文摘要 论文摘要
隐私放心比例 约 55% 论文摘要 论文摘要
需要培训比例 约 88% 论文摘要 论文摘要
ABHA 注册总量 官方未在可及页面给出可复核值 无 未核实
HFR 记录总数 官方未在可及页面给出可复核值 无 未核实
HPR 记录总数 官方未在可及页面给出可复核值 无 未核实

附录 B:数字的来源分层

第一层,官方页面。 包括 ABDM 主站、沙箱开发者站点、HFR 检索站与身份服务站点。本文对这三个域名均做了可达性探测,注意到主站与检索站对脚本请求返回 403,身份服务站点在本次网络环境下超时。因此本层信息以公开文档的通行表述为准,未逐条抓取核对,凡涉及具体计数的一律标「未核实」。
第二层,论文摘要。 采纳率、数字素养、满意度与障碍排序来自一篇 2026 年发表于 BMC Health Services Research 的横断面研究摘要,另有一篇同行评议论文用于确认启动时间与网络安全定位。本层数字有明确出处,但均为单地区或定性结论,不能外推为全国口径。
第三层,第三方集成资料。 端点路径、报文结构与令牌有效期来自公开的开源集成项目文档。这类资料描述的是接口行为,不是官方口径,版本变化后可能失效,本文引用时已标注层级。

附录 C:完整参考文献

  1. Ranjan A, Singh G, Singh H, Singh M. Adoption, digital health literacy, and patient satisfaction of Ayushman Bharat Digital Mission: an analytical cross-sectional study among outpatient department attendees. BMC Health Services Research. 2026;26:512. doi:10.1186/s12913-026-14314-7
  2. An assessment of cyber security and resilience of the National Digital Health Mission of India. Oxford Open Digital Health. 2026. doi:10.1093/oodh/oqag012
  3. Ayushman Bharat Digital Mission 官方站点. https://abdm.gov.in
  4. ABDM 开发者沙箱. https://sandbox.abdm.gov.in
  5. Health Facility Registry 公开检索. https://hfr.abdm.gov.in
  6. ABHA 身份服务入口. https://healthid.ndhm.gov.in
  7. ABDM V3 API Postman 集合与已知问题说明(第三方开源项目). https://github.com/Nirmitee-tech/abdm-v3-postman-collection
  8. ABHA Bridge Console 集成说明(第三方开源项目). https://github.com/AIAnytime/abha-bridge-console

附录 D:任务代码

对想用名录做一次最小实证的团队,下面这段整合了抓取、清洗与描述统计,可以直接跑。

#-- 名录最小实证:抓取失败时优雅退出,不阻塞后续分析
import json, pathlib, urllib.request, urllib.parse
import pandas as pd

def fetch_state(state: str, out: pathlib.Path) -> bool:
    url = "https://hfr.abdm.gov.in/search?state=" + urllib.parse.quote(state)
    req = urllib.request.Request(url, headers={"User-Agent": "research-bot/1.0"})
    try:
        with urllib.request.urlopen(req, timeout=30) as r:
            (out / f"{state}.html").write_bytes(r.read())
        return True
    except Exception:
        return False

def main() -> None:
    out = pathlib.Path("hfr_raw")
    out.mkdir(exist_ok=True)
    states = ["Kerala", "Bihar", "Punjab"]
    ok = sum(fetch_state(s, out) for s in states)
    print(f"fetched {ok}/{len(states)}")
    sample = pd.DataFrame({
        "facilityId": ["F-0001", "F-0002", "F-0003"],
        "stateName": ["Kerala", "Bihar", "Punjab"],
        "facilityTypeId": ["HOSP", "CLINIC", "HOSP"],
    })
    print(sample.groupby(["stateName", "facilityTypeId"]).size())

if __name__ == "__main__":
    main()

附录 E:如果只记五件事

一,ABDM 不是数据集,是身份加名录加交换协议的国家基础设施。
二,它刻意不集中托管病历,数据留在原机构,靠同意凭据点对点调取。
三,公开可得的只有 HFR 与 HPR 两份名录,适合做资源分布研究。
四,同意是逐次签发的,就诊越频繁,授权确认的次数越多。
五,采纳的真正瓶颈是数字素养与隐私信任,不是技术。

编辑说明

本页的核验工作在 2026 年 10 月 27 日完成,时间盒 20 分钟。核验方式:对三个官方域名各做一次可达性探测,均未取得有效页面内容(主站与检索站返回 403,身份服务站点超时,沙箱域名无法解析);改以 Europe PMC 检索 Ayushman Bharat Digital Mission 与 ABDM India digital health 两个关键词,取回一篇带完整摘要的横断面研究与一篇架构评估论文;剩余端点与报文字段来自两个公开开源集成项目的文档。凡官方页面未能给出可复核计数的,一律记「未核实」,未用第三方推测值填补。本页未涉及任何需要开发者凭证的接口调用,未下载任何个体级数据。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • maternal-ultrasound-nutrition — 共享标签:电子健康记录 / 真实世界数据 / 公共卫生与流行病学
  • openfda — 共享标签:电子健康记录 / 真实世界数据 / 公共卫生与流行病学
  • usda-fooddata-central — 共享标签:真实世界数据 / 公共卫生与流行病学 / 调查数据
  • encode-chile — 共享标签:电子健康记录 / 公共卫生与流行病学 / 调查数据
  • bifap — 共享标签:电子健康记录 / 真实世界数据 / 公共卫生与流行病学
  • knhanes — 共享标签:电子健康记录 / 公共卫生与流行病学 / 调查数据
  • patient-level-data-covid-ms — 共享标签:电子健康记录 / 公共卫生与流行病学 / 调查数据
  • bold-blood-gas-oximetry — 共享标签:电子健康记录 / 真实世界数据 / 公共卫生与流行病学
  • gemini — 共享标签:电子健康记录 / 真实世界数据 / 公共卫生与流行病学
  • charls — 共享标签:电子健康记录 / 公共卫生与流行病学 / 调查数据

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集