| Code | Display | severity | tier | category | expression | invariant | legalBasis | severity | tier | category | expression | invariant | legalBasis | Comments |
|---|
VN-RULE-PAT-001 | Số CCCD phải đúng 12 chữ số | error | error | tier-1 | tier-1 | normative-data-standard | normative-data-standard | Patient.identifier.where(system='.../sid/cccd').value.matches('[0-9]{12}') | Patient.identifier.where(system='.../sid/cccd').value.matches('[0-9]{12}') | vn-cccd-format | vn-cccd-format | Luật Căn cước 2023 Điều 20 | Luật Căn cước 2023 Điều 20 | error | error | tier-1 | tier-1 | normative-data-standard | normative-data-standard | Patient.identifier.where(system='.../sid/cccd').value.matches('[0-9]{12}') | Patient.identifier.where(system='.../sid/cccd').value.matches('[0-9]{12}') | vn-cccd-format | vn-cccd-format | Luật Căn cước 2023 Điều 20 | Luật Căn cước 2023 Điều 20 | |
VN-RULE-PAT-002 | Chữ số thứ 4 của CCCD không phù hợp giới tính | warning | warning | tier-2 | tier-2 | technical-quality-guardrail | technical-quality-guardrail | | | Luật Căn cước 2023 | Luật Căn cước 2023 | warning | warning | tier-2 | tier-2 | technical-quality-guardrail | technical-quality-guardrail | | | Luật Căn cước 2023 | Luật Căn cước 2023 | |
VN-RULE-PAT-003 | Mã xã/phường không thuộc tỉnh/TP đã chọn | error | error | tier-2 | tier-2 | normative-data-standard | normative-data-standard | | | QĐ 19/2025/QĐ-TTg; NQ 202/2025/QH15 | QĐ 19/2025/QĐ-TTg; NQ 202/2025/QH15 | error | error | tier-2 | tier-2 | normative-data-standard | normative-data-standard | | | QĐ 19/2025/QĐ-TTg; NQ 202/2025/QH15 | QĐ 19/2025/QĐ-TTg; NQ 202/2025/QH15 | |
VN-RULE-PAT-004 | Cấp cứu: cho phép Patient chỉ có identifier tạm | information | information | tier-3 | tier-3 | profile-conformance | profile-conformance | | | QĐ 01/2008/QĐ-BYT (cấp cứu xử trí trước) | QĐ 01/2008/QĐ-BYT (cấp cứu xử trí trước) | information | information | tier-3 | tier-3 | profile-conformance | profile-conformance | | | QĐ 01/2008/QĐ-BYT (cấp cứu xử trí trước) | QĐ 01/2008/QĐ-BYT (cấp cứu xử trí trước) | |
VN-RULE-PAT-005 | Hợp nhất hồ sơ phải dùng Patient.link, không tạo định danh trùng | error | error | tier-2 | tier-2 | profile-conformance | profile-conformance | | | | error | error | tier-2 | tier-2 | profile-conformance | profile-conformance | | | | |
VN-RULE-ADDR-001 | Địa chỉ Việt Nam phải có extension:province | warning | warning | tier-1 | tier-1 | profile-conformance | profile-conformance | | vn-addr-province | vn-addr-province | | warning | warning | tier-1 | tier-1 | profile-conformance | profile-conformance | | vn-addr-province | vn-addr-province | | |
VN-RULE-ENC-001 | Encounter.serviceProvider là bắt buộc | error | error | tier-1 | tier-1 | profile-conformance | profile-conformance | Encounter.serviceProvider.exists() | Encounter.serviceProvider.exists() | | QĐ 3176/QĐ-BYT | QĐ 3176/QĐ-BYT | error | error | tier-1 | tier-1 | profile-conformance | profile-conformance | Encounter.serviceProvider.exists() | Encounter.serviceProvider.exists() | | QĐ 3176/QĐ-BYT | QĐ 3176/QĐ-BYT | |
VN-RULE-ENC-002 | Encounter.period không được chồng lấn cho cùng bệnh nhân | warning | warning | tier-3 | tier-3 | technical-quality-guardrail | technical-quality-guardrail | | | | warning | warning | tier-3 | tier-3 | technical-quality-guardrail | technical-quality-guardrail | | | | |
VN-RULE-CON-001 | Mỗi Condition chỉ nên ghi 1 chẩn đoán | warning | warning | tier-3 | tier-3 | profile-conformance | profile-conformance | | | | warning | warning | tier-3 | tier-3 | profile-conformance | profile-conformance | | | | |
VN-RULE-MED-002 | Cấp phát ngoại trú/bán lẻ phải có authorizingPrescription | error | error | tier-3 | tier-3 | profile-conformance | profile-conformance | MedicationDispense.category.coding.where(code='outpatient' or code='community').exists() implies MedicationDispense.authorizingPrescription.exists() | MedicationDispense.category.coding.where(code='outpatient' or code='community').exists() implies MedicationDispense.authorizingPrescription.exists() | | TT 26/2025/TT-BYT; QĐ 3176/QĐ-BYT | TT 26/2025/TT-BYT; QĐ 3176/QĐ-BYT | error | error | tier-3 | tier-3 | profile-conformance | profile-conformance | MedicationDispense.category.coding.where(code='outpatient' or code='community').exists() implies MedicationDispense.authorizingPrescription.exists() | MedicationDispense.category.coding.where(code='outpatient' or code='community').exists() implies MedicationDispense.authorizingPrescription.exists() | | TT 26/2025/TT-BYT; QĐ 3176/QĐ-BYT | TT 26/2025/TT-BYT; QĐ 3176/QĐ-BYT | |
VN-RULE-MED-003 | MedicationAdministration nên liên kết y lệnh (request) | warning | warning | tier-3 | tier-3 | profile-conformance | profile-conformance | | | | warning | warning | tier-3 | tier-3 | profile-conformance | profile-conformance | | | | |
VN-RULE-CLM-001 | Claim phải có đúng 1 thẻ BHYT chính (focal=true) | error | error | tier-1 | tier-1 | profile-conformance | profile-conformance | Claim.insurance.where(focal=true).count() = 1 | Claim.insurance.where(focal=true).count() = 1 | | QĐ 697/QĐ-BYT; NĐ 188/2025/NĐ-CP Đ22 | QĐ 697/QĐ-BYT; NĐ 188/2025/NĐ-CP Đ22 | error | error | tier-1 | tier-1 | profile-conformance | profile-conformance | Claim.insurance.where(focal=true).count() = 1 | Claim.insurance.where(focal=true).count() = 1 | | QĐ 697/QĐ-BYT; NĐ 188/2025/NĐ-CP Đ22 | QĐ 697/QĐ-BYT; NĐ 188/2025/NĐ-CP Đ22 | |
VN-RULE-CLM-014 | Số ngày giường phải khớp số ngày nằm viện | error | error | tier-2 | tier-2 | legal-business-rule | legal-business-rule | | | QĐ 697/QĐ-BYT | QĐ 697/QĐ-BYT | error | error | tier-2 | tier-2 | legal-business-rule | legal-business-rule | | | QĐ 697/QĐ-BYT | QĐ 697/QĐ-BYT | |
VN-RULE-BHYT-001 | Thiếu SO_CCCD nhưng không có mã lý do bất khả kháng | error | error | tier-2 | tier-2 | normative-data-standard | normative-data-standard | | | QĐ 3176/QĐ-BYT | QĐ 3176/QĐ-BYT | error | error | tier-2 | tier-2 | normative-data-standard | normative-data-standard | | | QĐ 3176/QĐ-BYT | QĐ 3176/QĐ-BYT | |
VN-RULE-BHYT-002 | MA_LK phải nhất quán trên toàn bộ hồ sơ gửi | error | error | tier-2 | tier-2 | normative-data-standard | normative-data-standard | | | QĐ 3176/QĐ-BYT | QĐ 3176/QĐ-BYT | error | error | tier-2 | tier-2 | normative-data-standard | normative-data-standard | | | QĐ 3176/QĐ-BYT | QĐ 3176/QĐ-BYT | |
VN-RULE-BHYT-003 | Ngày giờ xuất cổng BHXH phải theo định dạng yyyyMMddHHmm | error | error | tier-2 | tier-2 | normative-data-standard | normative-data-standard | | | QĐ 3176/QĐ-BYT | QĐ 3176/QĐ-BYT | error | error | tier-2 | tier-2 | normative-data-standard | normative-data-standard | | | QĐ 3176/QĐ-BYT | QĐ 3176/QĐ-BYT | |
VN-RULE-BDL-001 | Mỗi entry trong transaction Bundle phải có request.method và request.url | error | error | tier-1 | tier-1 | profile-conformance | profile-conformance | Bundle.where(type='transaction').entry.all(request.method.exists() and request.url.exists()) | Bundle.where(type='transaction').entry.all(request.method.exists() and request.url.exists()) | | FHIR R4 bdl-3; NĐ 164/2025/NĐ-CP | FHIR R4 bdl-3; NĐ 164/2025/NĐ-CP | error | error | tier-1 | tier-1 | profile-conformance | profile-conformance | Bundle.where(type='transaction').entry.all(request.method.exists() and request.url.exists()) | Bundle.where(type='transaction').entry.all(request.method.exists() and request.url.exists()) | | FHIR R4 bdl-3; NĐ 164/2025/NĐ-CP | FHIR R4 bdl-3; NĐ 164/2025/NĐ-CP | |
VN-RULE-TERM-001 | Mã không thuộc ValueSet có binding required | error | error | tier-1 | tier-1 | normative-data-standard | normative-data-standard | | | | error | error | tier-1 | tier-1 | normative-data-standard | normative-data-standard | | | | |