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)FHIRREST/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 fabricFHIRFHIR 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 documentChọn theo template/IG, transport, chữ ký và yêu cầu lưu trữ đã thống nhất
Bệnh viện ⇄ BHYTXML 4210/QĐ 3176/QĐ-BYT hôm nay; FHIR như mapping layer cho tương laiQĐ 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-BYTFHIR (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ữuContract 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
1Năm phát hành đầu tiênv2.0: 1988-09; v2.1: 1990-03; v2.3: 1997-032005R2: 2005DSTU1: 2014-09; R4: 2019
2Format wirePipe-delimited (ER7)XML (RIM-based)XML (RIM-based)JSON / XML / Turtle
3ParadigmMessageMessageDocumentResource (REST + message + document)
4Transport thường gặpMLLP / TCPSOAP / HTTPFile / HTTP / IHE XDSHTTPS REST; cũng hỗ trợ message/document
5Mô hình bảo mậtDo triển khai và thỏa thuận giao diện quy địnhDo transport/profile triển khai quy địnhCó thể ký tài liệu; xác thực do lớp trao đổi quy địnhFHIR core không đặt cơ chế xác thực mặc định; có thể dùng OAuth 2.0/SMART theo IG
6Mô hình conformanceMessage structure + conformance profile + thỏa thuận cục bộMô hình/message suy dẫn từ RIM và vocabularyCDA model + template constraintsProfile, Extension, terminology binding và CapabilityStatement
7Phù hợp trực tiếp với web/mobile APIThường cần adapter/API layerThường cần service/API layerDocument exchange; app thường cần API layerREST/JSON khi endpoint công bố hỗ trợ
8Trạng thái normativev2.9.1 (2024)Normative Edition 2005+R2 normativeR4 (4.0.1) — Mixed Normative + STU; chỉ một số artifact nền tảng đạt Normative
9Bối cảnh triển khai điển hìnhLuồng message nội bộ và giao diện thiết bị hiện hữuHệ thống legacy hoặc hợp đồng tích hợp yêu cầu v3Trao đổi tài liệu có cấu trúcAPI, message hoặc document theo IG cụ thể
10Ví dụ toolingMirth, Iguana, RhapsodyTooling phụ thuộc sản phẩmTrifolia, MDHTHAPI, Firely, Bonfhir, Medplum
11Chủ đề cần họcMessage/event, segment, profile, acknowledgementRIM, domain model, vocabulary, interactionHeader/body, template, vocabulary, document lifecycleResource, REST, profile, terminology, package/IG
12Điều kiện chọn cho dự án mớiHệ sinh thái đối tác hoặc thiết bị yêu cầu v2Specification hoặc đối tác yêu cầu v3Use case và contract yêu cầu tài liệu CDACó 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. InventoryLập danh mục message, version, profile, vocabulary, owner, SLA và dependency của từng giao diệnInventory đượ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. ContractChọ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. PilotTriển khai FHIR song song cho một luồng có phạm vi và dữ liệu kiểm thử xác địnhQua validation, test liên vận, security và đối soát dữ liệu với baseline
4. OperateVận hành quan sát được, giữ v2 làm fallback nếu đánh giá rủi ro yêu cầuSLA, monitoring, incident response và reconciliation đạt ngưỡng đã phê duyệt
5. Select per use caseVớ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ácQuyế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 justifiedChỉ ngừng một channel v2 khi FHIR thay thế đủ chức năng và các dependency đã sẵn sàngHoà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 SLACó 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êngPhù 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ứcCó thể làm mô hình tham chiếu; chờ specification API chính thứcTuâ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ếpKhông trực tiếp; FHIR cho mapping layerXML 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/ETLCó 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 adapterCó 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ụ messageTậ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