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
Hợp đồng tích hợp đầu–cuối cho một lượt khám ngoại trú: đăng ký → khám → cận lâm sàng → kê đơn → thanh toán BHYT, nộp lên FHIR server bằng một transaction Bundle atomic.
Trang này là integration spec. Walkthrough lâm sàng kể chuyện ở Tình huống lâm sàng (Tình huống 1). Cùng bộ playbook: Nội trú · Cấp cứu · Dược.
Ca minh họa: Nguyễn Văn An (CCCD 001085012345, BHYT loại DN 80%) khám ngoại trú đúng tuyến tại BV Chợ Rẫy ngày 19/3/2026 vì sốt/ho/khó thở; chẩn đoán viêm phổi J18.9, xét nghiệm glucose, kê Amoxicillin. Mọi resource là Example Instance thật.
KCB ngoại trú có/không BHYT: khám, cận lâm sàng (XN/CĐHA), kê đơn, thủ thuật ngoại trú. Không bao gồm nhập viện (→ Nội trú) hay cấp cứu (→ Cấp cứu).
HIS/EMR ngoại trú (chủ luồng), LIS, RIS/PACS, khoa Dược, cổng giám định BHXH.
TT 13/2025/TT-BYT (bệnh án điện tử); QĐ 3176/QĐ-BYT (MALYDO/KETQUA/MA_LUOT_KCB); NĐ 188/2025/NĐ-CP (BHYT, đúng tuyến); QĐ 697/QĐ-BYT (bảng kê chi phí); QĐ 4469/QĐ-BYT (ICD-10 VN); QĐ 1227/QĐ-BYT (cận lâm sàng).
| # | Resource | Profile | Ghi chú VN | |—|—|—|—| | P1 | Cơ sở + khoa | VNCoreOrganization + VNCoreOrganizationDepartment | mã cơ sở KCB; hạng/tuyến | | P2 | Phòng khám | VNCoreLocation | poli/phòng khám | | P3 | Bác sĩ | VNCorePractitioner | số CCHN | | P4 | Bệnh nhân | VNCorePatient | CCCD/VNeID | | P5 | Thẻ BHYT | VNCoreCoverage | số thẻ; nơi ĐKKCB ban đầu (đúng tuyến) |
Một lượt khám = một transaction Bundle (type=transaction), áp dụng atomic. Ví dụ: Bundle-ExampleBundleOutpatientTransaction (8 entry PUT update-as-create). Hai pattern entry (PUT update-as-create — mặc định, idempotent; POST + ifNoneExist) và 3 loại Bundle (transaction nộp / document bệnh án / collection BHYT) — xem chi tiết tại Playbook Nội trú §5.
Patient ─▶ Coverage ─▶ Encounter(AMB) ─▶ Condition(J18.9)
│
┌────────────────────┼─────────────────────┐
▼ ▼ ▼
ServiceRequest(XN) ▶ Specimen ▶ Observation MedicationRequest (CĐHA: ImagingStudy ▶ DiagReport)
▼
Encounter(finished + treatmentOutcome) ─▶ Claim(BHYT) ─▶ ClaimResponse/EOB
└───────────── gói trong 1 transaction Bundle ─────────────┘
| # | Bước | Profile | Element chính | Terminology | Example |
|—|—|—|—|—|—|
| 1 | Lượt khám | VNCoreEncounter | class=AMB, extension[insuranceVisitType] (MALYDO=5 KCB ban đầu), encounterCode | QĐ 3176 | Outpatient |
| 2 | Chẩn đoán | VNCoreConditionDiagnosis | code ICD-10 J18.9 (+ SNOMED), category=encounter-diagnosis | QĐ 4469 | Pneumonia |
| 3 | Chỉ định XN | VNCoreServiceRequest | intent=order, code LOINC | QĐ 1227 | LabGlucose |
| 4 | Mẫu bệnh phẩm | VNCoreSpecimen | type, collection, request | — | SerumChemistry |
| 5 | Kết quả XN | VNCoreObservationLab | code LOINC, valueQuantity, interpretation, referenceRange | QĐ 1227 | LabGlucose |
| 6 | CĐHA (nhánh) | VNCoreServiceRequest → VNCoreImagingStudy → VNCoreDiagnosticReportImaging | StudyInstanceUID, resultsInterpreter | — | ChestCT |
| 7 | Kê đơn | VNCoreMedicationRequest | medicationCodeableConcept (ATC), dosageInstruction | TT 26/2025 | Amoxicillin |
| 8 | Thủ thuật (nếu có) | VNCoreProcedure | code DVKT | TT 23/2024; QĐ 387 | — |
VNCoreEncounter.status = finished + extension[treatmentOutcome] (KETQUA) + Encounter.diagnosis (chẩn đoán chính). Ngoại trú thường không có hospitalization.
VNCoreClaim (type=institutional/professional, item.category từ vn-cost-category-vs — khám/XN/CĐHA/thuốc, QĐ 697; ngoại trú thường 2–4 item, đúng 1 thẻ focal=true) → VNCoreClaimResponse → VNCoreExplanationOfBenefit → gói gửi VNCoreBHYTSubmissionBundle (ExampleBHYTSubmissionOutpatient, bridge XML 4210).
ICD-10 VN (QĐ 4469), LOINC/cận lâm sàng (QĐ 1227), DVKT (TT 23/2024), MALYDO/KETQUA (QĐ 3176), nhóm chi phí (QĐ 697). Xem Hướng dẫn terminology.
subject + serviceProvider + class=AMB (VN-RULE-ENC-001).valueQuantity.+07:00; Claim đúng 1 thẻ BHYT focal=true (VN-RULE-CLM-001).Mã lỗi tra tại Registry quy tắc. Ví dụ OperationOutcome — Encounter thiếu serviceProvider:
{"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":["Bundle.entry[2].resource.serviceProvider"]}]}
| GAP | Ảnh hưởng | Priority |
|—|—|—|
| CarePlan | ✅ Đã bổ sung VNCoreCarePlan (kế hoạch chăm sóc) | resolved |
| MedicationStatement (tiền sử dùng thuốc) | ✅ Đã bổ sung VNCoreMedicationStatement | resolved |
| ClinicalImpression, Goal | ✅ Đã bổ sung VNCoreClinicalImpression + VNCoreGoal | resolved |
Luồng lõi ngoại trú chạy đủ với profile sẵn có.
| Nếu cần | Đọc tiếp | |—|—| | Walkthrough kể chuyện | Tình huống lâm sàng | | Cơ chế transaction Bundle chi tiết | Playbook Nội trú | | Quy ước OperationOutcome | OperationOutcome & Registry | | Liên thông BHYT | BHYT Submission |
Outpatient integration playbook: end-to-end FHIR workflow for one outpatient visit (registration → exam → diagnostics → prescription → BHYT claim), submitted as a single atomic transaction Bundle (ExampleBundleOutpatientTransaction) over a real pneumonia (J18.9) case. Lists prerequisites, resource sequence anchored on real Example Instances, terminology with Vietnamese legal basis, and a validation checklist referencing the VN-RULE registry.