HL7 V2 并不原生使用 XML 格式,而是基于分隔符的纯文本格式;XML 仅用于 V3 和 FHIR。现实中存在“HL7 V2 XML”是工程适配方案,用于可视化、解析、集成等场景,其结构按段、字段、组件映射为带编号的嵌套元素。

HL7 V2 并不原生使用 XML 格式——这是个常见误解。严格来说,HL7 V2.x 是基于分隔符的纯文本格式(如用 |、^、~ 等符号组织字段和子组件),而 XML 是 HL7 V3 和 FHIR 才正式采用的默认编码方式。但现实中,很多系统会把 V2 消息“映射”或“封装”成 XML 形式,用于中间件解析、日志记录、配置调试或与 XML 友好型系统集成。
为什么会有“HL7 V2 XML”这种说法?
它不是标准定义的传输格式,而是工程实践中的一种适配方案:
- 开发人员用 XML 结构来可视化、验证或转换原始 V2 消息(例如把
PID||123^Smith^John映射为)123 Smith John - 某些集成引擎(如 IBM App Connect、Mirth Connect)支持将接收到的 V2 消息自动转成 XML 树形结构,方便规则匹配和字段提取
- 医院内部文档或测试用例中,为便于非技术人员阅读,会提供带注释的 XML 版本作为参考示例(比如你知识库提到的“附带的示例XML文件”)
V2 消息映射到 XML 的典型结构特点
这类 XML 不是 HL7 官方 Schema(v3 才有正式 XSD),但通常遵循以下约定:
- 根元素常为
或(对应消息类型) - 每个段(Segment)转为一个同名元素,如
、、 - 字段(Field)按顺序编号命名,如
、;复合字段(Component)可能展开为子元素,如Zhang San - 重复字段用数组式命名或加索引,如
和,或统一包裹在中... - 保留原始分隔符语义:例如
~表示重复组 → 对应多个同名元素;^表示子组件 → 展开为嵌套子元素
实际使用时要注意什么?
这类 XML 是工具层的“视图”,不是交换协议本身:
- 真实生产环境的 V2 接口(如通过 MLLP)仍必须发送原始管道符格式文本,不能直接发 XML
- 不同厂商/工具生成的 V2-XML 映射规则可能不一致(比如字段命名、是否展开复合结构),不可跨系统直接复用
- 若需长期存档或审计,建议同时保存原始 V2 文本 + 对应 XML 映射(并注明映射规则版本)
- 真正需要 XML 原生支持的场景,应考虑升级到 HL7 V3 CDA 或 FHIR(后者更主流,JSON/XML 双支持)
基本上就这些。V2 是“文本协议”,XML 是“表达方式”——理解这个边界,就能避免在接口开发中踩坑。










