Bộ Hướng dẫn Triển khai Core FHIR cho Việt Nam
0.6.0 - Draft for Community Review
Bộ Hướng dẫn Triển khai Core FHIR cho Việt Nam - Draft for Community Review (v0.6.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
Quy ước cách máy chủ FHIR trả kết quả kiểm tra hợp lệ về cho hệ thống gửi (HIS/EMR/vendor), và registry mã quy tắc (rule code) để mọi lỗi liên thông có ngữ nghĩa thống nhất giữa các nhà cung cấp.
Trang này bổ trợ — không thay thế — Hướng dẫn kiểm tra hợp lệ. Phân vai:
- validation-guidance.html = các tầng & chi tiết từng quy tắc (FHIRPath invariant, server-side, business rule).
- trang này = quy ước phản hồi (OperationOutcome) + registry mã rule machine-readable để tham chiếu.
Mô hình hóa theo thông lệ nền tảng liên thông quốc gia (đối sánh "Daftar Response Validasi" + "Kamus Rule Number" của SATUSEHAT Indonesia), nhưng FHIR-native: registry là CodeSystem versionable thay vì bảng tính phân tán.
Khi triển khai đa-vendor, một lỗi như "thiếu serviceProvider" phải được mọi hệ thống hiểu giống nhau. VN Core gán cho mỗi quy tắc một mã rule ổn định (vd VN-RULE-ENC-001), kèm sẵn severity, tầng kiểm tra, căn cứ pháp lý và biểu thức. Vendor có thể:
Registry là CodeSystem VNValidationRuleCS (http://fhir.hl7.org.vn/core/CodeSystem/vn-validation-rule-cs).
Mọi lỗi/cảnh báo kiểm tra hợp lệ trả về dưới dạng OperationOutcome, mỗi issue tuân thủ:
| Trường | Quy ước VN Core |
|---|---|
issue.severity |
Lấy theo property severity của mã rule: error / warning / information |
issue.code |
Mã phân loại FHIR (required, value, invalid, duplicate, business-rule, code-invalid…) |
issue.details.coding |
system = registry; code = mã rule (vd VN-RULE-ENC-001) |
issue.details.text |
Thông điệp tiếng Việt (= display của mã rule) |
issue.expression |
FHIRPath trỏ đúng phần tử vi phạm (vd Bundle.entry[4].resource.serviceProvider) |
issue.diagnostics |
(tùy chọn) thông tin debug bổ sung |
Nguyên tắc kiểm soát căn cứ (kế thừa từ validation-guidance): chỉ những rule có category = normative-data-standard, legal-business-rule hoặc profile-conformance mới được dùng làm lý do từ chối hồ sơ thật. Rule technical-quality-guardrail / source-exception chỉ ở mức warning/regression.
{
"resourceType": "OperationOutcome",
"issue": [{
"severity": "error",
"code": "required",
"details": {
"coding": [{
"system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-validation-rule-cs",
"code": "VN-RULE-ENC-001"
}],
"text": "Encounter.serviceProvider là bắt buộc"
},
"expression": ["Encounter.serviceProvider"]
}]
}
{
"resourceType": "OperationOutcome",
"issue": [{
"severity": "information",
"code": "informational",
"details": { "text": "Hồ sơ hợp lệ theo VN Core" }
}]
}
Khi nộp một lượt khám = một transaction Bundle (xem Playbook Nội trú), nếu bất kỳ resource nào sai thì toàn bộ Bundle bị từ chối (atomic) — máy chủ trả OperationOutcome với expression trỏ vào entry cụ thể:
{
"resourceType": "OperationOutcome",
"issue": [{
"severity": "error",
"code": "business-rule",
"details": {
"coding": [{
"system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-validation-rule-cs",
"code": "VN-RULE-CLM-014"
}],
"text": "Số ngày giường phải khớp số ngày nằm viện"
},
"expression": ["Bundle.entry[11].resource.item.where(category.coding.code='2.2')"]
}]
}
Mỗi entry của transaction Bundle phải có request.method + request.url (rule VN-RULE-BDL-001, FHIR bdl-3).
Bộ mã khởi tạo (tiếp tục mở rộng). Bản đầy đủ + property tại CodeSystem-vn-validation-rule-cs.
| Mã rule | Severity | Tier | Category | Quy tắc | Căn cứ |
|---|---|---|---|---|---|
VN-RULE-PAT-001 |
error | 1 | normative-data-standard | CCCD đúng 12 chữ số | Luật Căn cước 2023 |
VN-RULE-PAT-002 |
warning | 2 | technical-quality-guardrail | Chữ số 4 CCCD ↔ giới tính | Luật Căn cước 2023 |
VN-RULE-PAT-003 |
error | 2 | normative-data-standard | Xã thuộc tỉnh đã chọn | QĐ 19/2025; NQ 202/2025 |
VN-RULE-PAT-004 |
info | 3 | profile-conformance | Cấp cứu: cho phép identifier tạm (không chặn) | QĐ 01/2008 |
VN-RULE-PAT-005 |
error | 2 | profile-conformance | Merge hồ sơ bằng Patient.link, không trùng định danh |
— |
VN-RULE-ADDR-001 |
warning | 1 | profile-conformance | Địa chỉ VN có extension:province | — |
VN-RULE-ENC-001 |
error | 1 | profile-conformance | Encounter.serviceProvider bắt buộc | QĐ 3176 |
VN-RULE-ENC-002 |
warning | 3 | technical-quality-guardrail | Encounter.period không overlap | — |
VN-RULE-CON-001 |
warning | 3 | profile-conformance | 1 Condition = 1 chẩn đoán | — |
VN-RULE-MED-002 |
error | 3 | profile-conformance | Dispense phải có authorizingPrescription | TT 26/2025; QĐ 3176 |
VN-RULE-MED-003 |
warning | 3 | profile-conformance | Administration nên có request | TT 13/2025 |
VN-RULE-CLM-001 |
error | 1 | profile-conformance | Đúng 1 thẻ BHYT focal=true | QĐ 697; NĐ 188/2025 |
VN-RULE-CLM-014 |
error | 2 | legal-business-rule | Ngày giường khớp số ngày nằm | QĐ 697 |
VN-RULE-BHYT-001 |
error | 2 | normative-data-standard | SO_CCCD bắt buộc trừ bất khả kháng | QĐ 3176 |
VN-RULE-BHYT-002 |
error | 2 | normative-data-standard | MA_LK nhất quán toàn hồ sơ | QĐ 3176 |
VN-RULE-BHYT-003 |
error | 2 | normative-data-standard | Ngày giờ xuất yyyyMMddHHmm |
QĐ 3176 |
VN-RULE-BDL-001 |
error | 1 | profile-conformance | Entry transaction có request.method/url | FHIR bdl-3; NĐ 164/2025 |
VN-RULE-TERM-001 |
error | 1 | normative-data-standard | Mã thuộc ValueSet required | — |
Quy ước đặt mã: VN-RULE-{DOMAIN}-{NNN} — DOMAIN: PAT (Patient), ADDR (Address), ENC (Encounter), CON (Condition), MED (Medication chain), CLM (Claim), BHYT (liên thông BHXH), BDL (Bundle), TERM (Terminology). Mã đã cấp không tái sử dụng kể cả khi rule bị bãi bỏ (đánh dấu deprecated).
| Cách | Công cụ |
|---|---|
| Validate resource/Bundle theo profile (tier-1) | FHIR $validate với package hl7.fhir.vn.core |
| Kiểm tra tier-2 trong repo | ./scripts/validate-tier2.sh (xem validation-guidance) |
| Đối chiếu mã lỗi | Tra VN-RULE-* trong registry |
Vendor NÊN chạy hết rule error ở category bắt buộc trước khi xin truy cập production.
| Nếu cần | Đọc tiếp |
|---|---|
| Chi tiết từng quy tắc theo 3 tầng | Hướng dẫn kiểm tra hợp lệ |
| Cơ chế nộp transaction Bundle | Playbook Nội trú |
| Liên thông hồ sơ BHYT | BHYT Submission |
| Căn cứ pháp lý các rule | Cơ sở pháp lý |
This page defines how VN Core servers return validation results to client systems via OperationOutcome, and introduces a machine-readable validation rule registry (VNValidationRuleCS). Each rule has a stable code (e.g., VN-RULE-ENC-001) carrying severity, validation tier, evidence category, FHIRPath expression, linked invariant, and legal basis — referenced from OperationOutcome.issue.details.coding. This FHIR-native registry (inspired by SATUSEHAT's rule-number dictionary but versionable rather than spreadsheet-based) gives multi-vendor implementations a shared error vocabulary, including atomic transaction-Bundle rejection semantics. It complements the detailed three-tier validation guidance page and supports vendor self-testing before production access.