So sánh HL7 v2, HL7 v3, CDA và FHIR — chọn theo use case
Không dòng tiêu chuẩn nào tự động thay thế dòng khác. HL7 v2, v3, CDA và FHIR có thể cùng tồn tại; lựa chọn phải dựa trên use case, hợp đồng giao diện, IG, khả năng của endpoint và yêu cầu vận hành/pháp lý.
Trang này dành cho CIO bệnh viện và lập trình viên đang chuẩn bị RFP hoặc chọn chuẩn cho dự án mới. Sau khi đọc, bạn quyết định được "viết HL7 nào trong RFP" cho từng use case Việt Nam: BHYT, EMR theo Thông tư 13/2025/TT-BYT, ứng dụng cho bệnh nhân và liên thông VNeID.
Tóm tắt nhanh
- HL7 v2 — tiếp tục phù hợp với nhiều luồng message HIS-LIS-RIS-PACS đã vận hành ổn định; hiệu quả cụ thể phụ thuộc profile, transport và thỏa thuận giao diện.
- FHIR R4 — baseline của VN Core hiện tại cho các API thuộc phạm vi IG; dự án khác phải chọn phiên bản theo IG đích, dependency và CapabilityStatement của endpoint.
- CDA R2 — trao đổi tài liệu lâm sàng có cấu trúc; chữ ký và transport là quyết định của kiến trúc triển khai.
- HL7 v3 — phù hợp khi specification hoặc hệ thống đối tác yêu cầu v3/CDA/SPL; không bị FHIR thay thế tự động.
- Mô hình chuyển tiếp thường gặp: giữ v2 cho luồng legacy đã kiểm thử và dùng FHIR cho kênh có IG/API được các bên thống nhất.
1. Quyết định nhanh: bốn use case, bốn chuẩn
Thay vì hỏi một chuẩn cho toàn bệnh viện, RFP nên xác định rõ hệ thống gửi/nhận, dữ liệu, interaction, SLA, security và conformance evidence của từng use case. Nhiều chuẩn có thể cùng tồn tại khi mỗi giao diện có contract rõ ràng.
| Use case | Khuyến nghị | Lý do |
|---|---|---|
| HIS ⇄ LIS / RIS / PACS nội bộ | HL7 v2 hoặc contract khác được hỗ trợ | v2 thường đã có trong thiết bị/HIS; phải xác nhận profile, transport và SLA |
| Bệnh viện ⇄ ứng dụng bệnh nhân (mobile/web) | FHIR | REST/JSON phù hợp với API web; SMART on FHIR chỉ áp dụng khi endpoint công bố hỗ trợ |
| Bệnh viện ⇄ AI service / data fabric | FHIR | FHIR REST hoặc Bulk Data có thể dùng khi CapabilityStatement và IG liên quan công bố tương tác đó |
| Bệnh viện ⇄ bệnh viện (chuyển tuyến, xuất viện) | CDA hoặc FHIR document | Chọn theo template/IG, transport, chữ ký và yêu cầu lưu trữ đã thống nhất |
| Bệnh viện ⇄ BHYT | XML 4210/QĐ 3176/QĐ-BYT hôm nay; FHIR như mapping layer cho tương lai | QĐ 3176/QĐ-BYT vẫn là cơ sở pháp lý hiện hành; chưa có văn bản chính thức thay XML 4210 bằng FHIR |
| EMR theo Thông tư 13/2025/TT-BYT | FHIR (kiến trúc tham chiếu) | Thông tư yêu cầu kết nối thông tin bệnh án với số định danh cá nhân của các nhóm đối tượng được quy định; không bắt buộc FHIR hay API VNeID |
| Tích hợp hệ thống v3 / CDA / SPL hiện hữu | Contract hiện hữu hoặc adapter được kiểm thử | Không đổi wire format chỉ vì FHIR tồn tại; quyết định theo dependency và migration evidence |
Lưu ý pháp lý. Điều 1 khoản 3 Thông tư 13/2025/TT-BYT yêu cầu kết nối thông tin bệnh án điện tử với số định danh cá nhân của công dân Việt Nam và của người nước ngoài đã được cấp tài khoản định danh điện tử; không tạo hai lựa chọn giữa số định danh và tài khoản VNeID. Thông tư không quy định chuẩn dữ liệu phải là FHIR hoặc bắt buộc API VNeID. FHIR là một phương án kiến trúc cần được đánh giá, không phải nghĩa vụ pháp lý từ điều khoản này.
2. Bảng so sánh 12 trục
Bảng dưới đây giúp đánh giá nhanh trước khi đi sâu. Một số trục như "schema strictness" và "learning curve" mang tính tương đối, dựa trên phản hồi từ nhà cung cấp và đội tích hợp Việt Nam.
| # | Trục | HL7 v2 | HL7 v3 | CDA | FHIR R4 |
|---|---|---|---|---|---|
| 1 | Năm phát hành đầu tiên | v2.0: 1988-09; v2.1: 1990-03; v2.3: 1997-03 | 2005 | R2: 2005 | DSTU1: 2014-09; R4: 2019 |
| 2 | Format wire | Pipe-delimited (ER7) | XML (RIM-based) | XML (RIM-based) | JSON / XML / Turtle |
| 3 | Paradigm | Message | Message | Document | Resource (REST + message + document) |
| 4 | Transport thường gặp | MLLP / TCP | SOAP / HTTP | File / HTTP / IHE XDS | HTTPS REST; cũng hỗ trợ message/document |
| 5 | Mô hình bảo mật | Do triển khai và thỏa thuận giao diện quy định | Do transport/profile triển khai quy định | Có thể ký tài liệu; xác thực do lớp trao đổi quy định | FHIR core không đặt cơ chế xác thực mặc định; có thể dùng OAuth 2.0/SMART theo IG |
| 6 | Mô hình conformance | Message structure + conformance profile + thỏa thuận cục bộ | Mô hình/message suy dẫn từ RIM và vocabulary | CDA model + template constraints | Profile, Extension, terminology binding và CapabilityStatement |
| 7 | Phù hợp trực tiếp với web/mobile API | Thường cần adapter/API layer | Thường cần service/API layer | Document exchange; app thường cần API layer | REST/JSON khi endpoint công bố hỗ trợ |
| 8 | Trạng thái normative | v2.9.1 (2024) | Normative Edition 2005+ | R2 normative | R4 (4.0.1) — Mixed Normative + STU; chỉ một số artifact nền tảng đạt Normative |
| 9 | Bối cảnh triển khai điển hình | Luồng message nội bộ và giao diện thiết bị hiện hữu | Hệ thống legacy hoặc hợp đồng tích hợp yêu cầu v3 | Trao đổi tài liệu có cấu trúc | API, message hoặc document theo IG cụ thể |
| 10 | Ví dụ tooling | Mirth, Iguana, Rhapsody | Tooling phụ thuộc sản phẩm | Trifolia, MDHT | HAPI, Firely, Bonfhir, Medplum |
| 11 | Chủ đề cần học | Message/event, segment, profile, acknowledgement | RIM, domain model, vocabulary, interaction | Header/body, template, vocabulary, document lifecycle | Resource, REST, profile, terminology, package/IG |
| 12 | Điều kiện chọn cho dự án mới | Hệ sinh thái đối tác hoặc thiết bị yêu cầu v2 | Specification hoặc đối tác yêu cầu v3 | Use case và contract yêu cầu tài liệu CDA | Có IG/contract tương thích với use case và endpoint |
3. Sâu hơn từng dòng
HL7 v2
HL7 v2 ra đời năm 1988 và liên tục tiến hóa: v2.1 (3/1990), v2.3 (3/1997), tới v2.9.1 (2024). Định dạng ER7 pipe-delimited nhỏ gọn và được nhiều engine tích hợp hỗ trợ. Độ trễ, throughput và độ tin cậy vẫn phụ thuộc transport, acknowledgement, hạ tầng và cấu hình của từng giao diện.
Dùng v2 khi tích hợp nội bộ bệnh viện cần độ trễ thấp, hệ thống đối tác đã có bộ chuyển đổi HL7 v2 sẵn, hoặc luồng ADT/ORM/ORU/MDM truyền thống. Tránh v2 khi cần expose API ra public internet, cần auth zero-trust, hoặc đối tác không đồng ý mở port MLLP qua firewall.
v2 cho phép nhiều optional field và biến thể cục bộ. v2 có conformance profile, nhưng hai nhà cung cấp vẫn phải thống nhất version, message profile, vocabulary và quy tắc dùng segment như OBX. Chi phí mapping vì vậy phụ thuộc mức độ đặc tả và kiểm thử của từng giao diện.
HL7 v3
v3 dựa trên RIM (Reference Information Model) và dùng mô hình, vocabulary cùng thông điệp được đặc tả chặt. Với dự án mới, chỉ nên chọn v3 khi specification hoặc hệ thống đối tác yêu cầu; FHIR có thể phù hợp hơn cho API mới nhưng không tự động thay thế hợp đồng v3/CDA/SPL đang vận hành.
CDA R2
CDA là tiêu chuẩn tài liệu lâm sàng XML có cấu trúc và có thể được ký trong kiến trúc trao đổi phù hợp. Tại Mỹ, C-CDA được dùng cho nhiều tài liệu trao đổi lâm sàng. Tại Việt Nam, việc chọn CDA cho giấy chuyển tuyến, tóm tắt xuất viện hoặc bệnh án phải dựa trên yêu cầu nghiệp vụ, chữ ký điện tử và hồ sơ pháp lý của hệ thống.
FHIR hỗ trợ tài liệu qua Composition trong Bundle kiểu document, nhưng không vì thế mà mọi template CDA tương đương một-một với FHIR. Hệ thống có thể tiếp tục CDA và bổ sung FHIR khi hợp đồng trao đổi, IG và kiểm thử cho phép.
FHIR R4
FHIR R4 (4.0.1) public năm 2019. Quan trọng: R4 không phải hoàn toàn normative — HL7 đặt label "Mixed Normative + STU", trong đó các artifact nền tảng (XML/JSON/RDF format, RESTful API, terminology services, một số resource như Patient và Observation) đạt Normative; phần lớn resource lâm sàng vẫn ở STU (Standard for Trial Use). R4 là baseline của VN Core hiện tại. R5 (5.0.0) là major release mới nhất đã publish và vẫn thuộc Trial Use; R6 hiện chỉ là bản CI/ballot. Lựa chọn production phải theo IG đích và chuỗi tương thích, không theo một mặc định toàn cầu.
FHIR dùng các định dạng và giao thức quen thuộc với đội web như JSON và REST. OAuth/SMART là lớp bảo mật bổ sung, không phải mặc định của FHIR core. Endpoint phải công bố resource, interaction, search parameter và cơ chế bảo mật được hỗ trợ qua CapabilityStatement cùng IG áp dụng. Profile/Extension vẫn cần governance để tránh biến thể không tương thích.
4. Code sample song song: ADT^A01 nhập viện
Cùng một sự kiện — bệnh nhân Nguyễn Thị Lan (MRN0001) nhập viện vào khoa ICU phòng 301 lúc 14:30 ngày 30/4/2026 — được biểu diễn bằng ba chuẩn để bạn cảm nhận khác biệt.
HL7 v2.5 (pipe-delimited)
MSH|^~\&|HIS|HOSP|ADT|HOSP|202604301430||ADT^A01|MSG001|P|2.5
EVN|A01|202604301430
PID|1||MRN0001||NGUYEN^THI LAN||19850315|F|||123 LE LOI^^HCMC^^70000^VN
PV1|1|I|ICU^301^1|||||||||||||||V001 Ví dụ ER7 này ngắn gọn, nhưng một giao diện production còn cần message profile, vocabulary, acknowledgement, xử lý lỗi và kiểm thử liên vận giữa hai bên.
CDA R2 (XML, rút gọn)
<ClinicalDocument xmlns="urn:hl7-org:v3">
<typeId root="2.16.840.1.113883.1.3" extension="POCD_HD000040"/>
<templateId root="2.16.840.1.113883.10.20.22.1.1"/>
<id root="2.16.840.1.113883.19.5.99999.1" extension="DOC0001"/>
<code code="34133-9" codeSystem="2.16.840.1.113883.6.1"
displayName="Summarization of Episode Note"/>
<effectiveTime value="202604301430"/>
<recordTarget>
<patientRole>
<id extension="MRN0001" root="2.16.840.1.113883.19.5"/>
<patient>
<name>
<family>Nguyễn</family>
<given>Thị Lan</given>
</name>
<administrativeGenderCode code="F"
codeSystem="2.16.840.1.113883.5.1"/>
<birthTime value="19850315"/>
</patient>
</patientRole>
</recordTarget>
</ClinicalDocument> CDA cung cấp cấu trúc document; chữ ký số, lưu trữ pháp lý và transport như IHE XDS phải được cấu hình và kiểm chứng ở lớp triển khai tương ứng.
FHIR R4 (Bundle transaction)
{
"resourceType": "Bundle",
"type": "transaction",
"entry": [
{
"fullUrl": "urn:uuid:9b1e5a2c-3f8d-4a1c-8e7b-1c2d3e4f5a6b",
"resource": {
"resourceType": "Patient",
"identifier": [{
"system": "http://fhir.hl7.org.vn/core/sid/mrn",
"value": "MRN0001"
}],
"name": [{
"family": "Nguyễn",
"given": ["Thị", "Lan"]
}],
"gender": "female",
"birthDate": "1985-03-15"
},
"request": { "method": "POST", "url": "Patient" }
},
{
"fullUrl": "urn:uuid:7c2f6b3d-4e9a-5b2d-9f8c-2d3e4f5a6b7c",
"resource": {
"resourceType": "Encounter",
"status": "in-progress",
"class": {
"system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
"code": "IMP",
"display": "inpatient encounter"
},
"subject": {
"reference": "urn:uuid:9b1e5a2c-3f8d-4a1c-8e7b-1c2d3e4f5a6b"
},
"period": { "start": "2026-04-30T14:30:00+07:00" },
"location": [{
"location": { "display": "ICU - Phòng 301" }
}]
},
"request": { "method": "POST", "url": "Encounter" }
}
]
}
FHIR Bundle dài hơn message v2 mẫu và biểu diễn rõ resource, code system cùng reference nội bộ bằng urn:uuid. Client vẫn phải tuân thủ profile, terminology, interaction và quy tắc transaction mà server công bố.
5. Kiến trúc kết hợp v2 + FHIR
Trong nhiều kiến trúc bệnh viện hiện đại, cách tiếp cận thực dụng là giữ HL7 v2 cho các tích hợp nội bộ đã ổn định, đồng thời dùng FHIR cho lớp API, ứng dụng di động, chia sẻ tài liệu và các luồng liên thông mới.
[Lab analyzer] --HL7 v2 ORU---> [HIS / EMR core]
[Pharmacy] --HL7 v2 RDE---> [HIS / EMR core]
[RIS / PACS] --HL7 v2 ORM---> [HIS / EMR core]
|
v
[FHIR Facade / API Gateway]
|
+---------+----------+---------+----------+----------+
v v v v v v
[Mobile app] [AI/ML] [VNeID] [BHXH cổng] [Telehealth] [Đối tác] Kiến trúc kết hợp cho phép giữ các giao diện v2 đã kiểm thử và bổ sung FHIR theo từng use case. Đây là một lựa chọn, không phải mô hình bắt buộc; bridge phải được đánh giá theo mapping, losslessness, vận hành và conformance:
- HAPI FHIR — thư viện và server FHIR Java; mapping v2 cần component hoặc quy tắc chuyển đổi bổ sung.
- NextGen Connect (Mirth Connect) — integration engine có thể cấu hình channel để chuyển đổi giữa các định dạng.
- Microsoft FHIR Converter — dự án template-based tham khảo cho chuyển đổi HL7 v2/C-CDA sang FHIR; cần đánh giá trạng thái bảo trì và phạm vi trước khi dùng.
- Sản phẩm FHIR thương mại — khả năng adapter và SMART/OAuth khác nhau theo phiên bản; xác nhận bằng tài liệu sản phẩm và
CapabilityStatement.
6. Lộ trình chuyển tiếp v2 và FHIR theo stage gate
Không có lịch chung để chuyển mọi giao diện v2 sang FHIR. Mỗi giai đoạn dưới đây chỉ được đóng khi đạt tiêu chí đầu ra; v2 và FHIR có thể tiếp tục chạy song song nếu đó là lựa chọn an toàn hơn.
| Giai đoạn | Phạm vi | Tiêu chí qua gate |
|---|---|---|
| 1. Inventory | Lập danh mục message, version, profile, vocabulary, owner, SLA và dependency của từng giao diện | Inventory được chủ hệ thống và đối tác xác nhận; rủi ro cùng dữ liệu baseline đã ghi nhận |
| 2. Contract | Chọn use case thí điểm, IG/package version, security model và interaction FHIR cần hỗ trợ | CapabilityStatement, test plan và tiêu chí rollback được hai bên thống nhất |
| 3. Pilot | Triển khai FHIR song song cho một luồng có phạm vi và dữ liệu kiểm thử xác định | Qua validation, test liên vận, security và đối soát dữ liệu với baseline |
| 4. Operate | Vận hành quan sát được, giữ v2 làm fallback nếu đánh giá rủi ro yêu cầu | SLA, monitoring, incident response và reconciliation đạt ngưỡng đã phê duyệt |
| 5. Select per use case | Với tích hợp mới, so sánh v2, FHIR hoặc mô hình kết hợp theo hệ sinh thái đối tác | Quyết định kiến trúc có căn cứ; bên nhận công bố khả năng bằng profile/interface contract hoặc CapabilityStatement |
| 6. Retire only when justified | Chỉ ngừng một channel v2 khi FHIR thay thế đủ chức năng và các dependency đã sẵn sàng | Hoàn tất migration, đối soát, rollback drill, phê duyệt vận hành và retention/audit |
Stage gate không phải lịch cứng. Effort phải được ước tính từ số giao diện, chất lượng dữ liệu, mức tùy biến, yêu cầu an toàn và năng lực của các bên; không mặc định rewrite hay sunset v2.
7. Decision matrix theo use case Việt Nam
Bảng này gom các câu hỏi CIO thực sự đối diện trong RFP. Cột "Kết luận" trả lời cho ngữ cảnh Việt Nam 2026.
| Câu hỏi | v2 đáp ứng? | FHIR đáp ứng? | Kết luận |
|---|---|---|---|
| Cần SLA độ trễ thấp giữa HIS-LIS? | Có thể phù hợp nếu interface v2 hiện hữu đạt SLA | Có thể phù hợp; phải benchmark tương tác và hạ tầng cụ thể | Chọn theo SLA đã kiểm thử |
| Cần API cho đối tác ngoài bệnh viện? | Cần gateway và hợp đồng bảo mật riêng | Phù hợp khi có IG, TLS, xác thực, phân quyền và audit | Đánh giá API FHIR theo contract |
| Liên thông VNeID / Sổ sức khoẻ điện tử? | Theo specification giao tiếp chính thức | Có thể làm mô hình tham chiếu; chờ specification API chính thức | Tuân theo contract chính thức khi được ban hành |
| Nộp BHYT theo XML 4210/QĐ 3176/QĐ-BYT? | Không trực tiếp | Không trực tiếp; FHIR cho mapping layer | XML 4210 cho submission, FHIR cho data fabric nội bộ |
| Đáp ứng EMR theo Thông tư 13/2025/TT-BYT? | Chuẩn wire không tự chứng minh tuân thủ | Có thể hỗ trợ liên thông; không phải yêu cầu bắt buộc của Thông tư | Đánh giá toàn bộ kiến trúc và nghĩa vụ pháp lý |
| Cấp dữ liệu cho AI / data lake? | Có thể qua mapping/ETL | Có thể dùng REST hoặc Bulk Data nếu endpoint hỗ trợ | Chọn theo volume, semantics và governance |
| App bệnh nhân trên mobile? | Thường cần API adapter | Có thể dùng SMART on FHIR nếu hệ thống công bố hỗ trợ | Kiểm tra CapabilityStatement và security contract |
| Nhà cung cấp HIS hiện tại đã hỗ trợ FHIR? | Xác nhận interface/profile v2 được hỗ trợ | Yêu cầu CapabilityStatement, package version và test evidence | Đưa conformance evidence vào tiêu chí chấm thầu |
| Có team DEV web/mobile nội bộ? | Cần năng lực v2 và nghiệp vụ message | Tận dụng REST/JSON nhưng vẫn cần kiến thức FHIR/IG | Đánh giá năng lực theo use case |
Một mô hình chuyển tiếp khả thi là "v2 + FHIR". Có thể giữ các luồng thiết bị-HIS v2 hiện hữu đã kiểm thử và bổ sung FHIR cho kênh có IG/API được các bên thống nhất. Phạm vi cụ thể phải dựa trên inventory hệ thống, yêu cầu đối tác và kết quả conformance test.
8. Câu hỏi thường gặp
Có thể bỏ HL7 v2 hoàn toàn không?
Không có mốc chung cho mọi hệ thống. Hỗ trợ v2 của thiết bị và nhà cung cấp khác nhau theo sản phẩm, còn kênh FHIR phải có IG và endpoint tương thích. Lộ trình nên giữ luồng v2 đã kiểm thử, bổ sung FHIR theo use case, rồi rút v2 khi dependency thực tế được thay thế.
FHIR có thay thế hoàn toàn CDA không?
Cả CDA và FHIR Composition + document Bundle đều hỗ trợ tài liệu lâm sàng, nhưng template, semantics và ecosystem không tương đương tự động. Chỉ chuyển khi mapping, chữ ký, lưu trữ, transport và yêu cầu pháp lý đã được kiểm chứng.
Bệnh viện nhỏ chỉ đủ ngân sách cho một chuẩn — chọn cái nào?
Không có câu trả lời chung. Bệnh viện nên chọn contract mà hệ thống nguồn, thiết bị và đối tác thực sự hỗ trợ; có thể giữ v2 cho luồng thiết bị và dùng FHIR cho một API cụ thể. Một bộ chuyển đổi không loại bỏ nhu cầu mapping, validation và kiểm thử liên vận.
Việt Nam đã có Implementation Guide quốc gia chưa?
Có draft VN Core IG dựa trên FHIR R4, do cộng đồng phát triển (canonical http://fhir.hl7.org.vn/core/) song song với bản của Cục CNTT Bộ Y tế (http://fhir.ehealth.gov.vn/core/). Chưa có văn bản pháp lý bắt buộc IG cụ thể nào.
FHIR R5 đã ổn định chưa, có nên nhảy thẳng R5?
R5 (5.0.0) là major release mới nhất đã publish và vẫn thuộc Trial Use; R6 hiện chỉ là bản CI/ballot. VN Core hiện yêu cầu R4 (4.0.1). Dự án mới phải dùng phiên bản do IG đích, package dependency và CapabilityStatement của endpoint yêu cầu; không có quy tắc chờ cố định 2–3 năm.
9. Tham chiếu
- HL7 International — HL7 v2 Product Brief (timeline v2.0/v2.1/v2.3 và v2.9.1 hiện hành).
- HL7 FHIR R4 CapabilityStatement — tuyên bố khả năng của hệ thống FHIR.
- HL7 FHIR R4 spec — hl7.org/fhir/R4/ (label "Mixed Normative + STU").
- HL7 FHIR R4 Bundle — hl7.org/fhir/R4/bundle.html (transaction với fullUrl/urn:uuid).
- HL7 v3 Product Suite — Australian Digital Health Agency tổng quan v3.
- HL7 CDA R2 — Clinical Document Architecture Product Brief.
- HAPI FHIR — hapifhir.io (FHIR server Java open source).
- Microsoft FHIR Converter — github.com/microsoft/FHIR-Converter.
- Thông tư 13/2025/TT-BYT về bệnh án điện tử — Thư viện Pháp luật.
- Quyết định 3176/QĐ-BYT về chuẩn dữ liệu KCB BHYT — Thư viện Pháp luật.
- VN Core FHIR IG (trial-use, do Omi HealthTech khởi xướng) — fhir.hl7.org.vn/core.