HL7V3ToJson - 医院信息平台交互标准 (V3)
基于 WS/T 846-2024 国家卫生行业标准,将 HL7 V3 消息从 XML 格式转换为更简洁、易用的 JSON 格式,方便医院信息平台各系统间对接和接口测试。
目录
项目概述
本项目将《医院信息平台交互标准》(WS/T 846-2024)系列 PDF 文档中定义的 XML 消息格式,转换为结构化的 JSON 格式,包含以下两类数据:
- json-examples/:带有字段注释的 JSON 示例,用于理解和学习消息结构
- json-demo/:纯净测试数据,可直接用于接口开发和自动化测试
同时提供 Java 版的 JSON/XML 互转工具和 Python 数据生成脚本。
标准文档
说明:WS/T 846 系列标准共 11 个部分,其中第 1 部分为总则,第 9 部分(费用信息交互服务)尚未发布,本项目覆盖其余 9 个部分。
| 部分 |
标准编号 |
名称 |
页数 |
| 第2部分 |
WS/T 846.2-2024 |
个人信息注册、查询服务 |
38页 |
| 第3部分 |
WS/T 846.3-2024 |
医疗卫生机构注册、查询服务 |
21页 |
| 第4部分 |
WS/T 846.4-2024 |
医疗卫生人员注册、查询服务 |
24页 |
| 第5部分 |
WS/T 846.5-2024 |
术语注册、查询服务 |
18页 |
| 第6部分 |
WS/T 846.6-2024 |
文档注册、查询服务 |
27页 |
| 第7部分 |
WS/T 846.7-2024 |
就诊信息交互服务 |
128页 |
| 第8部分 |
WS/T 846.8-2024 |
医嘱信息交互服务 |
44页 |
| 第10部分 |
WS/T 846.10-2024 |
预约信息交互服务 |
66页 |
| 第11部分 |
WS/T 846.11-2024 |
状态信息交互服务 |
91页 |
前置依赖
JSON 数据使用
无依赖,直接使用任意 HTTP 客户端或编程语言解析 JSON 文件即可。
Java 转换器
| 依赖 |
版本要求 |
说明 |
| JDK |
11+ |
编译和运行 Java 程序 |
| org.json |
20231013+ |
JSON 解析库(仅 HospitalXmlJsonConverter 需要) |
HospitalConverter 和 SimpleConverter 无需第三方依赖,仅使用 JDK 内置库。
# 下载 org.json 依赖(仅编译 HospitalXmlJsonConverter 时需要)
curl -L -o json.jar 'https://repo1.maven.org/maven2/org/json/json/20231013/json-20231013.jar'
编译全部类
javac -cp json.jar -d out/ src/main/java/com/hospital/converter/*.java
运行
java -cp out:json.jar com.hospital.converter.HospitalXmlJsonConverter json2xml input.json output.xml
Python 脚本
| 依赖 |
版本要求 |
说明 |
| Python |
3.8+ |
运行数据生成脚本 |
python3 scripts/generate_test_data.py
目录结构
HL7V3ToJson/
├── README.md # 项目说明(中文)
├── README_EN.md # 项目说明(英文)
│
├── json-examples/ # JSON示例文件(含字段说明)
│ ├── README.md # 目录说明
│ ├── 字段说明.md # 完整字段说明文档
│ ├── 第2部分_个人信息/ # 个人信息服务 (10个文件)
│ │ ├── 注册请求.json
│ │ ├── 注册应答成功.json
│ │ ├── 注册应答异常.json
│ │ ├── 更新请求.json
│ │ ├── 查询请求.json
│ │ ├── 查询应答成功.json
│ │ ├── 查询应答异常.json
│ │ ├── 合并请求.json
│ │ ├── 字段说明.json
│ │ └── 字段说明.md
│ ├── 第3部分_医疗机构/ # 医疗机构服务 (8个文件)
│ │ ├── 注册请求.json
│ │ ├── 更新请求.json
│ │ ├── 查询请求.json
│ │ ├── 查询应答.json
│ │ ├── 通用应答.json
│ │ ├── 字段说明.json
│ │ ├── 字段说明.md
│ │ └── schema.json
│ ├── 第4部分_医护人员/ # 医护人员服务 (7个文件)
│ │ ├── 注册请求.json
│ │ ├── 更新请求.json
│ │ ├── 查询请求.json
│ │ ├── 查询应答.json
│ │ ├── 通用应答.json
│ │ ├── 字段说明.json
│ │ └── 字段说明.md
│ ├── 第5部分_术语/ # 术语服务 (7个文件)
│ │ ├── 注册请求.json
│ │ ├── 更新请求.json
│ │ ├── 查询请求.json
│ │ ├── 查询应答.json
│ │ ├── 通用应答.json
│ │ ├── 字段说明.json
│ │ └── 字段说明.md
│ ├── 第6部分_文档/ # 文档服务 (6个文件)
│ │ ├── 注册请求.json
│ │ ├── 查询请求.json
│ │ ├── 查询应答.json
│ │ ├── 通用应答.json
│ │ ├── 字段说明.json
│ │ └── 字段说明.md
│ ├── 第7部分_就诊信息/ # 就诊信息服务 (22个文件)
│ │ ├── 就诊卡新增请求.json
│ │ ├── 就诊卡更新请求.json
│ │ ├── 就诊卡查询请求.json
│ │ ├── 就诊卡查询应答.json
│ │ ├── 门诊挂号新增请求.json
│ │ ├── 门诊挂号更新请求.json
│ │ ├── 门诊挂号查询请求.json
│ │ ├── 门诊挂号查询应答.json
│ │ ├── 住院登记请求.json
│ │ ├── 住院更新请求.json
│ │ ├── 住院查询请求.json
│ │ ├── 住院查询应答.json
│ │ ├── 住院转科新增请求.json
│ │ ├── 住院转科更新请求.json
│ │ ├── 住院转科查询请求.json
│ │ ├── 住院转科查询应答.json
│ │ ├── 出院登记新增请求.json
│ │ ├── 出院登记更新请求.json
│ │ ├── 出院信息查询请求.json
│ │ ├── 出院信息查询应答.json
│ │ ├── 字段说明.json
│ │ └── 字段说明.md
│ ├── 第8部分_医嘱/ # 医嘱服务 (7个文件)
│ │ ├── 开立请求.json
│ │ ├── 查询请求.json
│ │ ├── 查询应答.json
│ │ ├── 通用应答.json
│ │ ├── 字段说明.json
│ │ ├── 字段说明.md
│ │ └── schema.json
│ ├── 第10部分_预约/ # 预约服务 (8个文件)
│ │ ├── 申请请求.json
│ │ ├── 申请应答.json
│ │ ├── 取消请求.json
│ │ ├── 取消应答.json
│ │ ├── 查询请求.json
│ │ ├── 查询应答.json
│ │ ├── 字段说明.json
│ │ └── 字段说明.md
│ └── 第11部分_状态/ # 状态服务 (6个文件)
│ ├── 更新请求.json
│ ├── 更新应答.json
│ ├── 查询请求.json
│ ├── 查询应答.json
│ ├── 字段说明.json
│ └── 字段说明.md
│
├── json-demo/ # 纯净测试数据(可用于接口测试)
│ ├── README.md
│ ├── 字段说明.md
│ ├── 第2部分_个人信息/ # 8个JSON文件
│ ├── 第3部分_医疗机构/ # 5个JSON文件
│ ├── 第4部分_医护人员/ # 5个JSON文件
│ ├── 第5部分_术语/ # 5个JSON文件
│ ├── 第6部分_文档/ # 4个JSON文件
│ ├── 第7部分_就诊信息/ # 20个JSON文件
│ ├── 第8部分_医嘱/ # 4个JSON文件
│ ├── 第10部分_预约/ # 6个JSON文件
│ └── 第11部分_状态/ # 4个JSON文件
│
├── java-converter/ # Java JSON/XML互转工具
│ ├── README.md
│ ├── converter.sh
│ └── src/main/java/com/hospital/converter/
│ ├── HospitalConverter.java # 基础转换器(无外部依赖)
│ ├── SimpleConverter.java # 简化转换器
│ └── HospitalXmlJsonConverter.java # 完整转换器(需 org.json)
│
└── scripts/ # 工具脚本
├── xml_to_json.py # XML转JSON脚本
├── generate_test_data.py # 测试数据生成器
├── fill_values.py # 字段填充工具
├── generate_comprehensive_json.py # 综合JSON生成器
├── generate_part7_json.py # 第7部分专用生成器
├── extract_and_generate.py # PDF提取与生成
├── analyze_pdfs.py # PDF分析工具
└── add_sample_values.py # 示例值填充
文件统计
| 目录 |
JSON文件 |
MD文件 |
说明 |
| json-examples/ |
72个 |
11个 |
含字段说明的JSON示例 |
| json-demo/ |
61个 |
11个 |
纯净测试数据 |
| 总计 |
133个 |
22个 |
|
消息类型汇总
第2部分:个人信息服务
| 服务 |
交互标识符 |
说明 |
| 个人信息注册 |
PRPA_IN201311UV02 |
新患者信息注册 |
| 个人信息更新 |
PRPA_IN201314UV02 |
患者信息更新 |
| 个人信息查询 |
PRPA_IN201305UV02 |
患者信息查询 |
| 个人信息合并 |
PRPA_IN201304UV02 |
重复记录合并 |
第3部分:医疗机构服务
| 服务 |
交互标识符 |
说明 |
| 机构注册 |
PRPM_IN401030UV01 |
新机构信息注册 |
| 机构更新 |
PRPM_IN403010UV01 |
机构信息更新 |
| 机构查询 |
PRPM_IN406010UV01 |
机构信息查询 |
第4部分:医护人员服务
| 服务 |
交互标识符 |
说明 |
| 人员注册 |
PRPM_IN301010UV01 |
新人员信息注册 |
| 人员更新 |
PRPM_IN303010UV01 |
人员信息更新 |
| 人员查询 |
PRPM_IN306010UV01 |
人员信息查询 |
第5部分:术语服务
| 服务 |
交互标识符 |
说明 |
| 术语注册 |
PRVS_IN000001UV01 |
新术语注册 |
| 术语更新 |
PRVS_IN000002UV01 |
术语信息更新 |
| 术语查询 |
PRVS_IN000003UV01 |
术语信息查询 |
第6部分:文档服务
| 服务 |
交互标识符 |
说明 |
| 文档注册 |
RCMR_IN000002UV02 |
医疗文档注册 |
| 文档查询 |
RCMR_IN000031UV01 |
医疗文档查询 |
第7部分:就诊信息服务
| 服务 |
交互标识符 |
说明 |
| 就诊卡信息新增 |
PRPA_IN201311UV02 |
就诊卡信息注册 |
| 就诊卡信息更新 |
PRPA_IN201314UV02 |
就诊卡信息更新 |
| 就诊卡信息查询 |
PRPA_IN201305UV02 |
就诊卡信息查询 |
| 门诊挂号信息新增 |
PRPA_IN400001UV |
门诊挂号登记 |
| 门诊挂号信息更新 |
PRPA_IN400002UV |
门诊挂号更新 |
| 门诊挂号信息查询 |
PRPA_IN900300UV |
门诊挂号查询 |
| 住院就诊信息登记 |
PRPA_IN400001UV |
住院入院登记 |
| 住院就诊信息更新 |
PRPA_IN400002UV |
住院信息更新 |
| 住院就诊信息查询 |
PRPA_IN900300UV |
住院信息查询 |
| 住院转科信息新增 |
PRPA_IN302011UV |
住院转科登记 |
| 住院转科信息更新 |
PRPA_IN302012UV |
住院转科更新 |
| 住院转科信息查询 |
PRPA_IN900300UV |
住院转科查询 |
| 出院登记信息新增 |
PRPA_IN400003UV01 |
出院登记 |
| 出院登记信息更新 |
PRPA_IN400002UV |
出院信息更新 |
| 出院信息查询 |
PRPA_IN900300UV |
出院信息查询 |
第8部分:医嘱服务
| 服务 |
交互标识符 |
说明 |
| 医嘱新增 |
POOR_IN200901UV |
医嘱信息开立 |
| 医嘱更新 |
POOR_IN200902UV |
医嘱信息更新 |
| 医嘱查询 |
QUMT_IN020030UV01 |
医嘱信息查询 |
第10部分:预约服务
| 服务 |
交互标识符 |
说明 |
| 预约申请 |
POOR_IN200910UV |
预约挂号申请 |
| 预约取消 |
POOR_IN200911UV |
预约挂号取消 |
| 预约查询 |
QUMT_IN020050UV01 |
预约信息查询 |
第11部分:状态服务
| 服务 |
交互标识符 |
说明 |
| 状态更新 |
POOR_IN200920UV |
业务状态更新 |
| 状态查询 |
QUMT_IN020070UV01 |
业务状态查询 |
通用字段说明
消息头 (messageHeader)
| 字段 |
类型 |
必填 |
说明 |
| id.root |
string |
是 |
固定值 2.16.156.10011.2.5.1.1 |
| id.extension |
string |
是 |
消息流水号 |
| creationTime |
datetime |
是 |
格式:yyyyMMddHHmmss |
| interactionId.extension |
string |
是 |
服务标识代码 |
| processingCode |
string |
是 |
D-调试 / P-产品 / T-训练 |
| acceptAckCode |
string |
是 |
AL-总是 / ER-仅错误 / NE-从不 |
应答消息 (acknowledgement)
| 字段 |
类型 |
必填 |
说明 |
| typeCode |
string |
是 |
AA-成功 / AE-失败 / AR-拒绝 |
| targetMessage.id.extension |
string |
是 |
请求消息流水号 |
| acknowledgementDetail.text |
string |
是 |
处理结果说明 |
OID标识符对照表
| OID |
说明 |
| 2.16.156.10011.2.5.1.1 |
消息流水号 |
| 2.16.156.10011.2.5.1.2 |
消息服务标识 |
| 2.16.156.10011.2.5.1.3 |
系统标识 |
| 2.16.156.10011.2.5.1.4 |
患者编号 |
| 2.16.156.10011.1.3 |
身份证件号码 |
| 2.16.156.10011.1.4 |
医护人员工号 |
| 2.16.156.10011.1.5 |
医院编码 |
| 2.16.156.10011.1.10 |
门(急)诊号 |
| 2.16.156.10011.1.12 |
住院号 |
| 2.16.156.10011.1.19 |
居民健康卡号 |
| 2.16.156.10011.1.26 |
科室编码 |
| 2.16.156.10011.1.27 |
病区编码 |
| 2.16.156.10011.1.28 |
医嘱编码 |
使用说明
1. 查看JSON示例
# 查看医嘱开立请求示例(含字段说明)
cat json-examples/第8部分_医嘱/开立请求.json
查看纯净测试数据
cat json-demo/第8部分_医嘱/开立请求.json
2. 使用测试数据进行接口测试
# 使用curl测试接口
curl -X POST http://your-api/order/create \
-H "Content-Type: application/json" \
-d @json-demo/第8部分_医嘱/开立请求.json
3. 使用Java转换器
cd java-converter/src/main/java
编译(无需第三方依赖)
javac com/hospital/converter/HospitalConverter.java
JSON转XML
java com.hospital.converter.HospitalConverter json2xml input.json output.xml
XML转JSON
java com.hospital.converter.HospitalConverter xml2json input.xml output.json
4. 使用Python脚本
# 生成测试数据
python3 scripts/generate_test_data.py
版本信息
- 标准版本: WS/T 846-2024
- 发布日期: 2024-10-28
- 实施日期: 2025-04-01
- 项目状态: 已完成