SNOMED CT tại Việt Nam: nội dung Việt hóa và triển khai FHIR

SNOMED CT là thuật ngữ tham chiếu lâm sàng quốc tế, có cấu trúc logic và đa thứ bậc, do SNOMED International duy trì. Ba danh mục tiếng Việt được ban hành năm 2025 có tổng cộng 77.393 dòng nguồn; sau khi khử trùng theo snomed_ct_id, artifact supplement của VN Core có 76.066 SCTID duy nhất. Các tập này cung cấp designation tiếng Việt cho một số binding lâm sàng, tùy phạm vi artifact và điều kiện cấp phép áp dụng.

Trang này tổng hợp định nghĩa, kiến trúc concept, so sánh với ICD-10, phạm vi nội dung Bộ Y tế đã ban hành, cách binding trong FHIR VN Core và bộ tooling thực tế (Snowstorm, Ontoserver). Đối tượng đọc: kỹ sư FHIR, kiến trúc sư hệ thống y tế, cán bộ quản lý chuẩn dữ liệu và bác sĩ lâm sàng quan tâm thuật ngữ.

Tóm tắt nhanh

  • Ba đợt ban hành 2025: QĐ 2427/QĐ-BYT (25/07/2025) có 35.889 dòng Body Structure, QĐ 2493/QĐ-BYT (04/08/2025) có 5.155 dòng Morphologic Abnormality, QĐ 2805/QĐ-BYT (04/09/2025) có 36.349 dòng Clinical Finding và Allergy.
  • 77.393 là tổng số dòng của ba danh mục nguồn, không phải số SCTID duy nhất. Artifact đầy đủ khử trùng còn 76.066 SCTID; không nên quy đổi con số này thành tỷ lệ của International Edition vì nội dung quốc tế thay đổi theo release.
  • July 2026 SNOMED CT International Edition đã được phát hành production ngày 01/07/2026.
  • Danh sách Member chính thức, với bản đồ ghi ngày 01/06/2026, có 53 Member và không liệt kê Việt Nam; triển khai tại Việt Nam vì vậy phải kiểm tra điều kiện cấp phép dành cho vùng lãnh thổ không phải Member.
  • Trong VN Core, Condition.code và AllergyIntolerance.code bind extensible vào ValueSet chứa coding với system http://snomed.info/sct, không phải URI extension VN.
  • Tooling tham chiếu: Snowstorm (mã nguồn mở của SNOMED International) và Ontoserver (CSIRO, thương mại) cho terminology server hỗ trợ ECL.

1. SNOMED CT là gì

SNOMED CT là viết tắt của Systematized Nomenclature of Medicine — Clinical Terms, một thuật ngữ tham chiếu lâm sàng quốc tế có cấu trúc logic và đa thứ bậc do tổ chức phi lợi nhuận SNOMED International quản trị. International Edition được phát hành theo phiên bản; bản production mới nhất tại thời điểm chụp nội dung này là July 2026, phát hành ngày 01/07/2026 qua MLDS.

SNOMED International là tổ chức phi lợi nhuận đăng ký tại England and Wales, trụ sở tại London. Nội dung SNOMED CT được hình thành năm 2002 từ việc hợp nhất SNOMED RT (do CAP của Mỹ phát triển) với Clinical Terms Version 3 — Read Codes (do NHS của Anh phát triển). Tổ chức quản trị — ban đầu mang tên "International Health Terminology Standards Development Organisation" (IHTSDO) — được một nhóm quốc gia thành viên sáng lập (trong đó có Đan Mạch) thành lập năm 2007, và đổi tên thành SNOMED International năm 2017.

Theo tài liệu kỹ thuật chính thức, SNOMED CT là thuật ngữ tham chiếu quốc tế dựa trên logic, dùng để biểu diễn thông tin có ý nghĩa lâm sàng. Bản International Edition, các extension quốc gia, bản dịch và reference set là những artifact có phiên bản riêng; hệ thống phải ghi nhận edition, version và module thay vì chỉ lưu SCTID rời rạc.

2. Cấu trúc concept và hierarchy

Mỗi concept SNOMED CT được định danh bởi SCTID, một số nguyên duy nhất, ví dụ 38341003 tương ứng "Hypertensive disorder". Concept đi kèm tập description (Fully Specified Name và các Synonym), tập relationship định nghĩa quan hệ với các concept khác và metadata module xác định nguồn phát hành.

Concept 38341003 |Hypertensive disorder|
  description[]
    FSN     "Hypertensive disorder, systemic arterial (disorder)"
    Synonym "Hypertension"
    Synonym "HTN"
  relationship[]
    IS-A             → 64572001  |Disease|
    Finding site     → 113257007 |Cardiovascular system structure|
  module
    900000000000207008 |SNOMED CT core|

Quan hệ IS-A tạo thành cây đa kế thừa, cho phép một concept thuộc nhiều nhánh cha. Bên cạnh đó, các thuộc tính như Finding site, Causative agent, Associated morphology tạo thành mô hình post-coordination giàu ngữ nghĩa, vượt xa các bộ phân loại tuyến tính.

Phiên bản quốc tế chia kho concept thành 19 hierarchy gốc, bao gồm Body Structure, Clinical Finding, Procedure, Substance, Pharmaceutical / Biologic Product, Observable Entity, Specimen, Physical Object, Physical Force, Event, Environment / Geographical Location, Social Context, Situation with Explicit Context, Staging and Scales, Qualifier Value, Record Artifact, SNOMED CT Model Component, Special Concept và Organism. Lưu ý "Disorder" không phải hierarchy gốc; các concept disorder hay diagnosis là sub-tree nằm trong Clinical Finding.

3. SNOMED CT so với ICD-10

ICD-10 và SNOMED CT phục vụ hai mục tiêu khác nhau và bổ sung cho nhau, không thay thế. ICD-10 là bộ phân loại dùng cho thống kê bệnh tật, báo cáo dịch tễ và thanh toán bảo hiểm; SNOMED CT là thuật ngữ lâm sàng dùng để ghi chép sự kiện y khoa với độ chính xác cao.

Tiêu chí SNOMED CT ICD-10
Mục đích Ghi chép lâm sàng, hỗ trợ quyết định Phân loại bệnh, thanh toán BHYT
Quy mô Kho thuật ngữ đa thứ bậc, thay đổi theo từng release ~14.000 mã
Cấu trúc Đa kế thừa, post-coordination Phân loại đơn cấp
Chu kỳ phát hành 6 tháng (1/1 và 1/7) Bản WHO ổn định, sửa đổi định kỳ
Tại Việt Nam 3 đợt Việt hóa 2025 (QĐ 2427/QĐ-BYT, 2493, 2805) QĐ 4469/QĐ-BYT (28/10/2020)
Use case FHIR Condition.code, Observation.code, BodyStructure Condition.code (billing), thống kê

Thực tiễn tốt nhất trong FHIR VN Core là gửi đồng thời cả hai coding trong cùng một CodeableConcept. ICD-10 đảm bảo nghĩa vụ thanh toán BHYT theo QĐ 4469/QĐ-BYT, còn SNOMED CT giữ ngữ nghĩa lâm sàng giàu thông tin cho hệ thống hỗ trợ quyết định và phân tích dữ liệu.

{
  "resourceType": "Condition",
  "subject": { "reference": "Patient/example" },
  "code": {
    "coding": [
      {
        "system": "http://snomed.info/sct",
        "code": "38341003",
        "display": "Hypertensive disorder"
      },
      {
        "system": "http://hl7.org/fhir/sid/icd-10",
        "code": "I10",
        "display": "Essential (primary) hypertension"
      },
      {
        "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-icd10-cs",
        "code": "I10",
        "display": "Tăng huyết áp vô căn (nguyên phát)"
      }
    ]
  }
}

4. Membership và bản quyền

Theo hướng dẫn cấp phép của SNOMED International, Member là cơ quan chính phủ quốc gia hoặc tổ chức được cơ quan có thẩm quyền của quốc gia bảo trợ. SNOMED International không thu phí sử dụng trong vùng lãnh thổ Member; quy trình đăng ký có thể đi qua National Release Center hoặc MLDS tùy quốc gia.

Snapshot từ trang Member chính thức (bản đồ ghi ngày 01/06/2026) liệt kê 53 Member và không có Việt Nam. SNOMED International quy định triển khai tại vùng lãnh thổ không phải Member phải đăng ký giấy phép hằng năm qua MLDS; phí có thể phát sinh và trường hợp miễn phí phải được xét theo cơ chế fee exemption. Ba Quyết định Việt Nam năm 2025 không tự động thay thế các điều kiện đối với International Edition. Đơn vị triển khai cần lưu vết edition, version, nguồn nội dung và phạm vi giấy phép.

SNOMED CT IPS Terminology là sản phẩm mở riêng, phát hành theo CC BY 4.0. Tài liệu triển khai hiện hành mô tả tập này có hơn 15.000 concept và dành cho phạm vi International Patient Summary; đây không phải là bản thay thế toàn bộ International Edition cho mọi use case lâm sàng.

5. Các đợt nội dung tiếng Việt đã ban hành

Bộ Y tế đặt nền móng pháp lý qua Quyết định 1928/QĐ-BYT (2023) về Kiến trúc Chính phủ điện tử Y tế phiên bản 2.1, trong đó SNOMED CT được xác lập là một trong những bộ mã thuật ngữ chuẩn quốc gia. Năm 2025 đánh dấu chuyển động thực sự với ba đợt ban hành liên tiếp.

Đợt Văn bản Phạm vi Số dòng nguồn
1 QĐ 2427/QĐ-BYT (25/07/2025) Body Structure — cấu trúc giải phẫu 35.889
2 QĐ 2493/QĐ-BYT (04/08/2025) Morphologic Abnormality — bất thường hình thái 5.155
3 QĐ 2805/QĐ-BYT (04/09/2025) Clinical Finding (35.022) + Allergy (1.327) 36.349
Tổng ba danh mục nguồn 77.393 dòng

Mỗi dòng nguồn trong gói Việt hóa có bốn trường lõi: vn_code là mã quản lý do Bộ Y tế cấp, snomed_ct_id là SCTID quốc tế, name_vn là tên tiếng Việt và name_en là tên tiếng Anh từ nguồn. Có 1.327 SCTID xuất hiện ở hơn một phạm vi nguồn; pipeline giữ các designation liên quan nhưng chỉ tạo một concept cho mỗi SCTID, nên artifact đầy đủ có 76.066 concept duy nhất.

Ba Quyết định trên xác lập phạm vi nội dung đã công bố. Trong corpus pháp lý được trích dẫn trên trang này, chưa có văn bản nguồn sơ cấp xác nhận thứ tự các hierarchy tiếp theo, thời điểm thành lập National Release Center hoặc kế hoạch Việt Nam trở thành Member. Vì vậy, các đề xuất mở rộng thuật ngữ chỉ nên được trình bày như phương án kỹ thuật và phải được cập nhật khi cơ quan có thẩm quyền công bố văn bản mới.

6. Phạm vi đã Việt hóa

VN Core khai báo VNSNOMEDSubsetCS tại canonical http://fhir.hl7.org.vn/core/CodeSystem/vn-snomed-subset-cs dưới dạng CodeSystem supplement: content = #supplementsupplements = http://snomed.info/sct. Trang IG public chỉ mang metadata; artifact JSON đầy đủ trong package hl7.fhir.vn.terminology.clinical có 76.066 concept duy nhất, bổ sung designation tiếng Việt và thuộc tính vn-code cho các SCTID từ 77.393 dòng nguồn.

Lưu ý cách dùng coding

Trong mọi FHIR instance, coding SNOMED CT phải dùng system = http://snomed.info/sct kèm code = snomed_ct_id. Canonical của supplement VN Core không được dùng làm Coding.system. Trường vn_code là thuộc tính quản lý của nguồn Việt Nam, không phải SCTID; display có thể chọn designation tiếng Việt hoặc tiếng Anh phù hợp ngữ cảnh.

VN Core đính kèm các ValueSet đồng hành để binding chính xác theo bối cảnh: vn-body-site-vs cho Procedure.bodySite và Condition.bodySite, vn-condition-code-vs cho Condition.code, vn-allergy-code-vs cho AllergyIntolerance.code. Trang đính chính bản dịch SNOMED CT VN được phát hành riêng trên IG để cộng đồng phản hồi sai sót.

7. Tích hợp với FHIR VN Core

Profile VNCoreCondition bind code vào vn-condition-code-vs ở mức extensible, cho phép gửi đồng thời ICD-10 và SNOMED CT theo phạm vi binding. Profile VNCoreAllergyIntolerance dùng SNOMED CT IPS Terminology cho code, cũng ở mức extensible. IPS Terminology là sản phẩm mở có phạm vi riêng; nếu dùng concept ngoài phạm vi đó, đơn vị triển khai phải áp dụng edition và giấy phép SNOMED CT phù hợp.

// VNCoreCondition.fsh — extract
* code 1..1 MS
* code from $vn-condition-code-vs (extensible)

// VNCoreAllergyIntolerance.fsh — extract
* code 1..1 MS
* code from $vn-allergy-code-vs (extensible)

// VN Body Site cho Condition.bodySite
* bodySite from $vn-body-site-vs (preferred)

Bộ binding extensible cho phép hệ thống fallback về ICD-10 hoặc text mô tả nếu chưa có concept SNOMED phù hợp, đồng thời vẫn báo cáo conformance khi đã có. Đối với hệ thống yêu cầu mã hóa song song để báo cáo BHYT, profile VNCoreConditionDiagnosis mở rộng VNCoreCondition đặt ICD-10 ở vai trò bắt buộc và SNOMED CT ở vai trò tùy chọn nhưng khuyến khích.

Khi biểu diễn một concept thuộc tập đã ban hành, coding SNOMED CT dùng system = http://snomed.info/sct và một trong 76.066 SCTID duy nhất của artifact; supplement chỉ cung cấp designation/thuộc tính bổ sung. Với chẩn đoán phục vụ thanh toán BHYT, coding ICD-10 VN được thêm theo profile và workflow áp dụng. Nếu nhiều coding cùng xuất hiện, hệ thống phải lưu phiên bản thuật ngữ, quan hệ ánh xạ và kiểm thử tính tương đương thay vì suy ra chúng đồng nghĩa chỉ vì nằm trong cùng một CodeableConcept.

8. ECL — ngôn ngữ truy vấn

Expression Constraint Language (ECL) là ngôn ngữ truy vấn chính thức của SNOMED International, cho phép định nghĩa subset concept dựa trên quan hệ trong cây thuật ngữ. ECL được dùng để xây dựng ValueSet động, lọc concept theo thuộc tính và viết rule kiểm tra ngữ nghĩa.

// Ví dụ ECL
< 38341003 |Hypertensive disorder|
   // mọi concept descendant (không bao gồm chính nó)

<< 38341003 |Hypertensive disorder|
   // descendant kèm chính concept

< 64572001 |Disease| : 363698007 |Finding site| = << 80891009 |Heart structure|
   // Disease có Finding site là Heart hoặc descendant của Heart

Trong FHIR R4, ECL được lồng vào ValueSet thông qua filter operator. VN Core sử dụng cú pháp chuẩn của FHIR với descendent-of hoặc is-a, lưu ý spelling theo đúng spec FHIR R4 (descendent, không phải descendant).

Ví dụ minh hoạ (không phải artifact thực tế của VN Core):

ValueSet: ExampleHypertensionVS
Id: example-hypertension-vs
* include codes from system http://snomed.info/sct
    where concept descendent-of #38341003

Khi terminology server hỗ trợ ECL gốc (Snowstorm và Ontoserver đều hỗ trợ), bạn có thể truyền ECL phức tạp qua tham số filter của $expand, ví dụ filter=<<233604007|Pneumonia|. Bộ tham số này được dùng phổ biến trong các ứng dụng nhập liệu lâm sàng để gợi ý concept phù hợp ngữ cảnh.

9. Tooling Snowstorm và Ontoserver

Hai terminology server thường gặp khi triển khai SNOMED CT trong FHIR là Snowstorm và Ontoserver. Snowstorm do SNOMED International phát triển và phát hành mã nguồn mở theo giấy phép Apache 2.0 trên GitHub tại github.com/IHTSDO/snowstorm. Snowstorm hỗ trợ ECL đầy đủ, FHIR Terminology Service operations $lookup, $validate-code, $expand, $translate và là engine chạy chính SNOMED Browser.

Ontoserver do CSIRO của Australia phát triển và cung cấp theo mô hình thương mại. Tài liệu sản phẩm mô tả hỗ trợ nhiều terminology như SNOMED CT, LOINC và các classification; capability, edition, ECL/FHIR operation, license và mô hình vận hành phải được kiểm theo phiên bản triển khai.

Với dự án nguồn mở hoặc giai đoạn đầu, HAPI FHIR cung cấp implementation JPA cho terminology service và hỗ trợ một phần SNOMED CT (lookup và validation cơ bản, không có ECL native). Nếu use case yêu cầu ECL phức tạp, lựa chọn an toàn là cài Snowstorm sidecar và để HAPI gọi qua FHIR Terminology Service.

Với VN Core, cách kiểm chứng ValueSet SNOMED khả thi nhất là dựng terminology server hỗ trợ ECL rồi nạp artifact JSON từ package hl7.fhir.vn.terminology.clinical — package này đồng bộ với ba đợt Quyết định của Bộ Y tế, nên expansion kiểm được đúng theo nội dung đã ban hành. Bản thân quá trình build IG hiện dùng terminology server công cộng và vẫn gặp timeout khi validate mã SNOMED CT; đây là lý do khuyến nghị dựng server riêng cho môi trường kiểm thử nghiêm túc.

10. Câu hỏi thường gặp

Dùng SNOMED CT có miễn phí ở Việt Nam không?

Ba Quyết định năm 2025 xác định các danh mục nội dung tiếng Việt, nhưng không tự động xác lập quyền dùng toàn bộ International Edition. Theo hướng dẫn chính thức, triển khai tại vùng lãnh thổ không phải Member phải đăng ký giấy phép qua MLDS; phí có thể áp dụng và một số trường hợp có thể xin fee exemption. Tổ chức triển khai cần kiểm tra điều khoản cho đúng sản phẩm, phiên bản và use case.

ICD-10 đã đủ cho VN Core chưa?

Với workflow báo cáo, thống kê hoặc thanh toán đang yêu cầu ICD-10 VN theo văn bản/contract áp dụng, hệ thống phải giữ đúng classification và version đó. SNOMED CT có thể bổ sung chi tiết trong Condition.code, AllergyIntolerance.code hoặc các element quan sát phù hợp; Observation.code thường dùng LOINC hay mã xét nghiệm theo binding của profile, nên không mặc định thay bằng SNOMED CT.

Khi nào VN Core sẽ bắt buộc SNOMED CT?

Chưa có mốc chính thức để VN Core bắt buộc SNOMED CT. Release hiện tại duy trì binding theo strength được công bố trong từng profile. Mọi thay đổi lên preferred hoặc required phải đi qua quản trị IG, đánh giá độ phủ thuật ngữ, tương thích ngược và điều kiện cấp phép, rồi được công bố trong một release có phiên bản.

Có thể test SNOMED CT trước khi membership không?

Có thể dùng SNOMED Browser để khảo sát nội dung, nhưng truy cập browser không tự tạo quyền triển khai. Với International Edition tại vùng lãnh thổ không phải Member, SNOMED International yêu cầu đăng ký qua MLDS và phí có thể áp dụng; dự án nghiên cứu hoặc lợi ích công cộng có thể nộp hồ sơ xin miễn phí. Nếu use case chỉ thuộc IPS, có thể đánh giá IPS Terminology theo giấy phép CC BY 4.0 và phạm vi hướng dẫn riêng.

11. Tham chiếu và đọc tiếp

Văn bản pháp lý Việt Nam

  • QĐ 2427/QĐ-BYT (25/07/2025) — Danh mục thuật ngữ SNOMED CT Đợt 1, Body Structure, 35.889 dòng nguồn. Xem khung pháp lý.
  • QĐ 2493/QĐ-BYT (04/08/2025) — SNOMED CT Đợt 2, Morphologic Abnormality, 5.155 dòng nguồn. Xem khung pháp lý.
  • QĐ 2805/QĐ-BYT (04/09/2025) — SNOMED CT Đợt 3, Clinical Finding và Allergy, 36.349 dòng nguồn. Xem khung pháp lý.
  • QĐ 1928/QĐ-BYT (2023) — Kiến trúc Chính phủ điện tử Y tế phiên bản 2.1 (tham khảo bối cảnh, ngoài corpus chính thức của VN Core IG).
  • QĐ 4469/QĐ-BYT (28/10/2020) — ICD-10 Việt Nam.
  • Thông tư 13/2025/TT-BYT (06/06/2025) — Bệnh án điện tử.

Tài liệu SNOMED và FHIR

Đọc tiếp trong knowledge hub