OpenMRS 快速上手教程
OpenMRS 上手建议先跑通一个可访问的实例,再理解"概念字典—就诊—观察值"这条数据主线,最后再碰模块和前端。
1. 先选一个运行方式
| 方式 | 适合 | 说明 |
|---|---|---|
| OpenMRS 3 Reference Application + Docker | 想体验现代界面 | 适合看 O3 前端、REST API、模块配置 |
| OpenMRS Standalone | 想最快跑起来 | 一体化包,适合教学、测试、本地试用 |
| OpenMRS Core WAR + Tomcat | 想二次开发后端 | 需要 Java、Maven、MySQL |
| OpenMRS SDK | 想做模块开发 | 官方推荐的开发者工具链 |
如果只是第一次接触,优先用 Docker + Reference Application 或 Standalone。
2. 用 Docker 跑 OpenMRS 3
OpenMRS 3 的 Reference Application 通常由后端和前端共同组成,后端加载模块和元数据,前端通过 SPA 界面访问。
具体镜像、端口和 Compose 文件请以官方 O3 Docs 为准。一般步骤是:
git clone https://github.com/openmrs/openmrs-distro-referenceapplication.git
cd openmrs-distro-referenceapplication
docker compose up -d启动后通常可以访问:
- 后端:
http://localhost:8080/openmrs - 前端:
http://localhost:3000或文档中指定的端口
默认账号常见为:
admin / Admin123但不同版本可能不同,一定要看当前仓库的 README。
3. 用 Standalone 快速试用
如果不想折腾 Docker,可以下载 OpenMRS Standalone 包。它自带应用服务器、数据库和初始化数据,适合第一次体验。
启动后一般访问:
http://localhost:8080/openmrsStandalone 版本通常偏旧,界面和功能不一定和 OpenMRS 3 一致,但用来理解患者、就诊、概念字典已经够用。
4. 登录后先做这几件事
进入系统后,按这个顺序熟悉:
- 注册患者:创建第一个患者档案。
- 开始一次就诊:理解 Visit 和 Encounter 的区别。
- 录入观察值:比如体温、血压、诊断。
- 查看患者主页:看就诊历史、诊断、医嘱。
- 进入管理后台:查看用户、角色、模块、全局属性。
这一步不需要急着改代码,先把临床数据流跑通。
5. 理解三个核心概念
OpenMRS 的数据模型和常见 HIS 不太一样,关键是这三个概念:
| 概念 | 作用 |
|---|---|
| Concept 概念字典 | 定义所有临床术语,比如“体温”“疟疾检测”“阳性” |
| Encounter 就诊事件 | 记录一次具体交互,比如挂号、问诊、发药 |
| Obs 观察值 | 记录具体数据,比如体温 37.5、诊断“疟疾” |
可以这样理解:
患者 → 就诊 → 观察值
↑
观察值引用概念字典比如录入一次就诊时,系统不会直接存“体温=37.5”这种自由字段,而是通过 Concept 定义“体温”这个指标,再用 Obs 记录具体数值。
6. 尝试调用 REST API
OpenMRS 提供 REST API,可以用来对接前端、数据导出或科研系统。
常见接口示例:
# 查询患者
curl -u admin:Admin123 \
"http://localhost:8080/openmrs/ws/rest/v1/patient?q=Alice"
# 查询概念
curl -u admin:Admin123 \
"http://localhost:8080/openmrs/ws/rest/v1/concept?q=Temperature"
# 查询就诊
curl -u admin:Admin123 \
"http://localhost:8080/openmrs/ws/rest/v1/encounter?patient=患者UUID"如果用的是 OpenMRS 3,前端端口和 API 路径可能略有差异,以实际部署为准。
7. 了解模块和配置
OpenMRS 的功能主要通过模块扩展。O3 中常用 Initializer 模块,用 CSV、JSON、XML 文件加载概念、地点、表单、药品等元数据。
这样做的好处是:
- 配置可版本化管理;
- 多环境可复用;
- 启动时自动加载;
- 比纯后台手工配置更稳定。
8. 二次开发路线
如果你想继续深入,可以按这个顺序来:
- 先用 Docker 跑通 Reference Application。
- 再读 OpenMRS Core,理解 Patient、Encounter、Obs、Concept。
- 然后看 REST API,做数据读写。
- 接着看 Initializer,学习元数据配置。
- 最后再看 O3 前端模块 或传统模块开发。
9. 常见坑
- 不要把 OpenMRS 直接当国内 HIS 用:医保、收费、电子病历评级流程需要大量定制。
- 账号密码以官方文档为准:不同版本默认账号可能不同。
- Standalone 和 O3 不是一回事:Standalone 更适合快速体验,O3 更适合现代部署。
- 端口和镜像版本会变:不要死记命令,优先看当前仓库 README。
- 概念字典是学习门槛:刚开始会觉得绕,但它是 OpenMRS 最核心的设计。
如果你愿意,我可以按你的目标继续细化:比如给你一份 macOS 上 Docker 跑 OpenMRS 3 的完整命令清单,或者整理一份 OpenMRS 数据模型速查表。