HAPI FHIR 是 Java 生态中最主流的 HL7 FHIR 实现,既是 FHIR 客户端/服务器开发库,也常被直接用作开源 FHIR 服务器底座。
项目简介
HAPI FHIR 全称 HAPI FHIR - Java API for HL7 FHIR Clients and Servers,由 Smile CDR 团队维护,采用 Apache License 2.0 开源。 它不是传统意义上的电子病历系统,而是把 HL7 FHIR 标准“落地成 Java 代码”的基础设施,用来构建、解析、验证、存储和交换医疗数据。
核心能力
| 模块 | 作用 |
|---|---|
| FHIR 模型 | 提供 Patient、Encounter、Observation、MedicationRequest 等资源对象模型 |
| 解析器 | 支持 JSON / XML 序列化与反序列化 |
| 验证器 | 校验资源是否符合 FHIR 版本或 Profile 规范 |
| 客户端 | 以 RESTful 方式访问其他 FHIR 服务器 |
| JPA Server | 提供带数据库持久化的 FHIR 服务器实现 |
| 拦截器 | 在请求处理链路中插入日志、审计、权限控制等逻辑 |
| 多版本支持 | 覆盖 DSTU2、STU3、R4、R5 等 FHIR 版本 |
技术栈
- 语言:Java(当前较新版本通常需要 JDK 17+)
- 构建:Maven
- 框架:Spring Boot(JPA Server 示例中常见)
- 数据库:PostgreSQL、SQL Server、Oracle 等;MySQL 在部分版本中支持有限
- 协议:HL7 FHIR R2/R3/R4/R5
- 部署:Docker、Docker Compose、Java 应用服务器
典型使用场景
- 医院/区域平台接入 FHIR 接口:把 HIS、LIS、PACS 数据转成 FHIR 资源。
- 患者门户/移动健康 App:通过 FHIR API 获取个人健康记录。
- 科研与数据中台:用 FHIR 统一临床数据模型,再做脱敏、导出和分析。
- 系统互操作测试:用验证器检查资源是否符合标准或实施指南。
- 二次开发底座:在 JPA Server 上扩展自定义 Profile、术语、订阅和审计。
优势
- 开源免费,社区活跃,文档和示例较多。
- Java 生态成熟,适合医院信息化、集成平台和后端服务开发。
- 同时支持客户端、服务器、验证、持久化,接近“FHIR 瑞士军刀”。
- 可作为官方 HL7 FHIR 验证器和 IG Publisher 的核心依赖之一。
- 提供 Docker 快速启动方式,便于本地测试。
局限
- 大规模并发下性能压力较明显,通常需要加缓存、索引和异步日志。
- 中文术语、医保、电子病历评级等本地化需要额外适配。
- 生产环境要重点处理权限、审计、PHI 保护和数据备份。
- 数据库兼容性需要按版本确认,不能默认所有数据库都完全支持。
快速体验
最简单的方式是用官方示例仓库跑 JPA Server:
git clone https://github.com/hapifhir/hapi-fhir-jpaserver-starter.git
cd hapi-fhir-jpaserver-starter
docker compose up -d启动后通常访问:
http://localhost:8080/fhir如果直接用 Maven 跑:
mvn clean install
mvn jetty:run具体端口、数据库配置和 JDK 版本以当前仓库 README 为准。