LOINC tại Việt Nam: chuẩn mã xét nghiệm và quan sát lâm sàng

LOINC (Logical Observation Identifiers Names and Codes) là bộ mã quốc tế cho xét nghiệm, quan sát lâm sàng, sinh hiệu và loại tài liệu y tế. Bộ mã do Regenstrief Institute phát hành miễn phí từ năm 1994; phiên bản 2.82 (24/02/2026) chứa 109.325 thuật ngữ. Tại Việt Nam, Bộ Y tế đã công bố danh mục 2.964 chỉ số cận lâm sàng đợt 1 qua QĐ 1227/QĐ-BYT (11/4/2025) — đây là lớp mã địa phương dùng song song với LOINC để chuẩn hóa kết quả xét nghiệm liên thông giữa các bệnh viện.

Trang này dành cho lập trình viên LIS/HIS đang map kết quả sang FHIR Observation, CIO bệnh viện cần lộ trình thuật ngữ, và bác sĩ muốn hiểu cách một mã LOINC mô tả chính xác một xét nghiệm. Sau khi đọc, bạn sẽ biết khi nào dùng LOINC, khi nào dùng SNOMED CT, và cách kết hợp mã VN nội bộ với LOINC trong cùng một CodeableConcept.

Tóm tắt nhanh

  • LOINC chuẩn hóa cách gọi tên xét nghiệm, quan sát, sinh hiệu và loại tài liệu y tế.
  • Phiên bản 2.82 (24/02/2026) có 109.325 thuật ngữ; miễn phí theo giấy phép LOINC riêng (không phải Apache).
  • Việt Nam: QĐ 1227/QĐ-BYT (11/4/2025) ban hành 2.964 chỉ số đợt 1, gồm Huyết học - Truyền máu, Hóa sinh, Vi sinh, Giải phẫu bệnh và Điện quang/CĐHA.
  • FHIR R4 ràng buộc Observation.code với LOINC ở mức example; VN Core khuyến nghị bind chặt LOINC cho xét nghiệm khi có thể.
  • Quy ước VN Core: ghi đồng thời mã LOINC và mã CLS nội địa trong cùng CodeableConcept.coding.

1. LOINC là gì

LOINC viết tắt cho Logical Observation Identifiers Names and Codes. Đây là một bộ thuật ngữ chuẩn hóa do Regenstrief Institute tại Đại học Indiana khởi xướng năm 1994, với mục tiêu duy nhất: trả lời câu hỏi "phép đo này là cái gì" bằng một định danh phổ quát thay vì các mã nội bộ rời rạc của từng phòng xét nghiệm.

Phạm vi LOINC bao phủ ba nhóm chính: kết quả xét nghiệm (huyết học, hóa sinh, vi sinh, miễn dịch, giải phẫu bệnh), quan sát lâm sàng (sinh hiệu, đo đạc nhân trắc, kết quả điện tim, công cụ đánh giá thang điểm), và phân loại tài liệu y tế (loại bản tóm tắt ra viện, loại biên bản hội chẩn). Phiên bản 2.82 phát hành ngày 24/02/2026 chứa 109.325 thuật ngữ, trong đó có cả mã đã ngừng dùng (deprecated) để bảo đảm tương thích ngược.

LOINC có bản dịch chính thức ra hơn mười ngôn ngữ — tiếng Anh, Tây Ban Nha, Pháp, Đức, Ý, Hàn, Trung, Nga, Hà Lan, Hy Lạp, Ả Rập — nhưng chưa có bản dịch tiếng Việt chính thức. QĐ 1227/QĐ-BYT là động thái mapping đầu tiên ở quy mô quốc gia, và phần lớn mã CLS có chú thích LOINC tương đương trong cột định nghĩa. Việc Bộ Y tế chọn xây bộ mã địa phương riêng thay vì dịch trực tiếp LOINC phản ánh thực tế: nhiều xét nghiệm thường quy tại Việt Nam (ví dụ một số chỉ số hóa sinh dùng chai test địa phương) chưa có mã LOINC tương đương 1-1.

2. Cấu trúc một mã LOINC

Một bản ghi LOINC gồm một mã ngắn dạng NNNNN-N (số tự tăng kèm chữ số kiểm tra), một Long Common Name mô tả đầy đủ, một Short Name dùng trong các hệ thống có giới hạn ký tự, và sáu trục ngữ nghĩa. Ví dụ kinh điển — định lượng cholesterol toàn phần trong máu — có dạng:

LOINC code: 2093-3
Long Common Name: Cholesterol [Mass/volume] in Serum or Plasma
Short Name: Cholest SerPl-mCnc
Component: Cholesterol
Property:  MCnc (Mass Concentration)
Time:      Pt (Point in time)
System:    Ser/Plas
Scale:     Qn (Quantitative)
Method:    (none specified)
Class:     CHEM (Chemistry)

2093-3 không gắn với một kit thử cụ thể, một máy phân tích cụ thể hay một đơn vị đo cụ thể. Nó chỉ định nghĩa khái niệm phép đo: nồng độ khối lượng cholesterol trong huyết thanh hoặc huyết tương, tại một thời điểm, trên thang định lượng. Đơn vị (mmol/L, mg/dL) ghi riêng trong Observation.valueQuantity.unit với mã UCUM, không nằm trong LOINC.

3. Sáu trục ngữ nghĩa của LOINC

Mọi mã LOINC đều phân rã được thành sáu trục bắt buộc. Đây là phần khác biệt cốt lõi so với các bộ mã phẳng (như ICD-10): hai mã giống nhau ở năm trục đầu nhưng khác phương pháp đo sẽ là hai mã khác nhau, vì kết quả không so sánh được.

Trục Câu hỏi trả lời Ví dụ với 2093-3
ComponentĐo chất gì, hiện tượng gì?Cholesterol
PropertyĐại lượng vật lý/hóa học nào?MCnc — nồng độ khối lượng
TimeTại một thời điểm hay cộng dồn theo khoảng?Pt — point in time
SystemMẫu lấy từ đâu?Ser/Plas — huyết thanh hoặc huyết tương
ScaleThang đo nào?Qn — định lượng
MethodPhương pháp đặc thù (nếu cần phân biệt)?Không quy định

Trục Method là tùy chọn nhưng quan trọng khi kết quả phụ thuộc kỹ thuật — ví dụ Glucose [Mass/volume] in Capillary blood by Glucometer (mã 14743-9) khác với Glucose [Mass/volume] in Serum or Plasma (mã 2345-7): cùng đo đường máu nhưng giá trị tham chiếu, độ chính xác và ý nghĩa lâm sàng không đồng nhất, không nên gộp chung trong báo cáo.

4. LOINC và SNOMED CT — phân biệt và bổ sung

LOINC và SNOMED CT thường bị nhầm là cạnh tranh, nhưng thực ra hai bộ mã chia nhau hai miền khác nhau. Quy ước trong SNOMED CT và FHIR R4 rất rõ:

Tiêu chí LOINC SNOMED CT
MiềnTên xét nghiệm và quan sát ("đo cái gì")Khái niệm lâm sàng tổng quát: bệnh, triệu chứng, thủ thuật, giải phẫu
Mức độ chi tiếtSáu trục, mỗi mã là một phép đo cụ thểMạng lưới khái niệm với quan hệ cha-con phong phú
Thuộc tính FHIR điển hìnhObservation.code, DiagnosticReport.codeCondition.code, AllergyIntolerance.code, Procedure.code, BodySite
Chi phíMiễn phí theo giấy phép LOINCCó phí (membership SNOMED International)

Quy tắc thực hành cho VN Core: tên xét nghiệm dùng LOINC, chẩn đoán dùng SNOMED CT cùng với ICD-10 VN. Một DiagnosticReport sinh hóa máu sẽ ghi code bằng LOINC để mô tả "panel sinh hóa cơ bản"; nhưng nếu kết quả cho thấy đái tháo đường, mã chẩn đoán đi kèm trong Condition phải là SNOMED CT (ví dụ 44054006) cùng với mã ICD-10 VN E11.

5. Giấy phép sử dụng

LOINC miễn phí cho cả mục đích thương mại và phi thương mại trên toàn thế giới, theo giấy phép LOINC riêng của Regenstrief Institute. Đây không phải giấy phép Apache hay MIT — giấy phép LOINC có một số điều kiện đặc thù: phải ghi nguồn (attribution), không được biến LOINC thành cơ sở cho một bộ mã cạnh tranh, không được tự ý đổi nghĩa các trường ngữ nghĩa, và nếu dịch ngôn ngữ thì bản dịch phải gửi lại Regenstrief để xét đưa vào bản phát hành chính thức.

Để tải bản đầy đủ (file .csv 109.325 dòng cùng các bảng tham chiếu), bạn cần đăng ký tài khoản miễn phí trên loinc.org/downloads. Khuyến nghị của OmiGroup cho các bệnh viện và nhà cung cấp LIS tại Việt Nam: dùng LOINC làm mã chính thức cho mọi xét nghiệm, ghi mã nội bộ song song trong CodeableConcept.coding để giữ tương thích nghiệp vụ cũ.

6. QĐ 1227/QĐ-BYT — 2.964 chỉ số đợt 1

Quyết định QĐ 1227/QĐ-BYT ngày 11/4/2025 ban hành "Danh mục mã dùng chung chỉ số cận lâm sàng đợt 1", với 2.964 chỉ số được phân bổ theo năm nhóm chuyên khoa. Đây là động lực chuẩn hóa lớn nhất cho xét nghiệm tại Việt Nam, gắn liền với lộ trình bệnh án điện tử bắt buộc theo Thông tư 13/2025/TT-BYT.

Nhóm chuyên khoa Số chỉ số
Huyết học - Truyền máu1.022
Hóa sinh447
Vi sinh174
Giải phẫu bệnh81
Điện quang / Chẩn đoán hình ảnh1.240
Tổng cộng2.964

Mỗi dòng trong danh mục có một mã CLS, tên xét nghiệm tiếng Việt và (với phần lớn các chỉ số xét nghiệm) ghi chú LOINC tương đương trong phần định nghĩa. Đây là partial mapping: không phải mã CLS nào cũng có LOINC tương ứng, đặc biệt nhóm chẩn đoán hình ảnh và một số kỹ thuật giải phẫu bệnh. Đợt 2 và đợt 3 đang được Bộ Y tế chuẩn bị, dự kiến mở rộng sang các phép đo còn thiếu và cập nhật mapping LOINC khi có bản dịch tiếng Việt chính thức.

VN Core triển khai danh mục này thành CodeSystem vn-cls-cs (canonical http://fhir.hl7.org.vn/core/CodeSystem/vn-cls-cs). Ví dụ mục dành cho cholesterol toàn phần trong máu có mã 1010053, display "Định lượng Cholesterol toàn phần (máu)", định nghĩa ghi rõ LOINC tương đương là 2093-3.

7. Tích hợp FHIR Observation — ví dụ Việt Nam

FHIR R4 ràng buộc Observation.code với LOINC ở mức example binding — nghĩa là LOINC được khuyến nghị nhưng không bắt buộc. Profile VNCoreObservationLab trong VN Core thắt chặt lên extensible cho xét nghiệm: phải dùng LOINC khi tồn tại mã phù hợp, được phép bổ sung mã địa phương song song. Quy ước dưới đây minh họa một bản ghi định lượng cholesterol toàn phần với hai mã đồng thời.

{
  "resourceType": "Observation",
  "status": "final",
  "category": [{
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/observation-category",
      "code": "laboratory",
      "display": "Laboratory"
    }]
  }],
  "code": {
    "coding": [
      {
        "system": "http://loinc.org",
        "code": "2093-3",
        "display": "Cholesterol [Mass/volume] in Serum or Plasma"
      },
      {
        "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-cls-cs",
        "code": "1010053",
        "display": "Định lượng Cholesterol toàn phần (máu)"
      }
    ],
    "text": "Cholesterol toàn phần"
  },
  "subject": { "reference": "Patient/vn-001" },
  "effectiveDateTime": "2026-04-15T08:00:00+07:00",
  "valueQuantity": {
    "value": 5.2,
    "unit": "mmol/L",
    "system": "http://unitsofmeasure.org",
    "code": "mmol/L"
  },
  "referenceRange": [{
    "low":  { "value": 3.0, "unit": "mmol/L", "system": "http://unitsofmeasure.org", "code": "mmol/L" },
    "high": { "value": 5.2, "unit": "mmol/L", "system": "http://unitsofmeasure.org", "code": "mmol/L" }
  }]
}

Ba điểm cần lưu ý trong ví dụ trên: (1) category.coding.system phải là canonical http://terminology.hl7.org/CodeSystem/observation-category, không phải URL rút gọn; (2) valueQuantity dùng UCUM (mmol/L) qua system chuẩn http://unitsofmeasure.org; (3) URL CodeSystem nội địa kết thúc bằng hậu tố -cs theo quy ước đặt tên VN Core — sai một ký tự sẽ khiến validator không resolve được thuật ngữ.

Khi không có LOINC tương đương: ghi mã CLS Việt Nam một mình trong Observation.code.coding và để code.text mô tả phép đo bằng tiếng Việt. Mapping LOINC có thể bổ sung sau qua ConceptMap mà không phá vỡ dữ liệu lịch sử.

8. Công cụ: RELMA và FHIR ConceptMap

RELMA (Regenstrief LOINC Mapping Assistant) là công cụ desktop miễn phí do Regenstrief phát hành, hỗ trợ map mã xét nghiệm nội bộ của một LIS sang LOINC. RELMA gợi ý mã LOINC dựa trên tên xét nghiệm địa phương, cho phép xem chi tiết sáu trục, và xuất bản đồ ánh xạ ra CSV. Đây là điểm khởi đầu thực tế cho mọi dự án "đưa LIS lên FHIR" tại Việt Nam — nếu không có sẵn mapping, phòng xét nghiệm có thể chạy RELMA vài tuần để xây bản đồ cho 200-500 mã thường dùng nhất.

Khi đã có mapping, hãy đóng gói thành tài nguyên FHIR ConceptMap để tái sử dụng giữa các hệ thống. VN Core dự kiến phát hành ConceptMap chính thức từ vn-cls-cs sang http://loinc.org trong các bản tới, đồng bộ với chu kỳ cập nhật danh mục CLS của Bộ Y tế. Các terminology server phổ biến — HAPI FHIR JPA, Ontoserver — đều hỗ trợ thao tác $translate trên ConceptMap, cho phép client gọi một API duy nhất để chuyển mã CLS Việt Nam thành LOINC tại thời điểm gửi dữ liệu sang đối tác quốc tế.

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

Có bắt buộc đổi tất cả mã xét nghiệm sang LOINC không?

Không. VN Core chấp nhận giữ mã nội bộ (mã LIS, mã CLS Việt Nam) trong cùng CodeableConcept.coding cùng với LOINC. Quan trọng là khi đã có LOINC tương đương, hãy ghi cả hai để dữ liệu sẵn sàng liên thông quốc tế.

Hai kit xét nghiệm khác nhau có cùng mã LOINC không?

Có, nếu năm trục Component, Property, Time, System, Scale giống nhau và phương pháp đo cùng tương đương về kết quả. Nếu phương pháp khác làm thay đổi giá trị tham chiếu — ví dụ test nhanh tại giường so với máy tự động trung tâm — LOINC sẽ tách thành hai mã riêng để tránh trộn lẫn dữ liệu không so sánh được.

Khi nào Việt Nam có bản dịch LOINC chính thức?

Tới thời điểm 05/2026, Bộ Y tế chưa công bố lộ trình dịch toàn bộ LOINC sang tiếng Việt. QĐ 1227/QĐ-BYT là bản mapping địa phương, không phải bản dịch — phần mô tả tiếng Việt thuộc về danh mục CLS Việt Nam, không thay thế tên LOINC chuẩn.

LOINC có dùng cho dữ liệu chẩn đoán hình ảnh không?

Có, ở mức tên loại nghiên cứu hình ảnh ("CT ngực có cản quang") nhưng không thay thế DICOM cho ảnh và metadata kỹ thuật. Trong FHIR Observation/DiagnosticReport, LOINC mô tả loại báo cáo; ảnh thực tế tham chiếu qua ImagingStudy tới hệ PACS/DICOM riêng.

Tham khảo