HL7 Vietnam VN Core FHIR Implementation Guide

Hướng dẫn triển khai FHIR cốt lõi Việt Nam — VN Core FHIR Implementation Guide
0.9.0 - Draft for Community Review Viet Nam cờ

Hướng dẫn triển khai FHIR cốt lõi Việt Nam — VN Core FHIR Implementation Guide - Local Development build (v0.9.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Playbook Ngoại trú

Playbook Ngoại trú — KCB ngoại trú (Outpatient)

Hướng dẫn 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. Trang minh họa phương án gửi bằng Bundle.type = transaction khi CapabilityStatement áp dụng cho máy chủ công bố hỗ trợ transaction.

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 tổng hợp: 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. Tất cả Example Instance là dữ liệu tổng hợp, không phải hồ sơ người bệnh thật.

1. Phạm vi

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).

2. Vai trò triển khai và hệ thống

HIS/EMR ngoại trú (chủ luồng), LIS, RIS/PACS, khoa Dược, cổng giám định BHXH.

3. Căn cứ pháp lý

TT 13/2025/TT-BYT (bệnh án điện tử); QĐ 4210/QĐ-BYT (legacy MA_LYDO_VVIEN); QĐ 3176/QĐ-BYT (MA_DOI_TUONG_KCB, KET_QUA_DTRI, MA_LOAI_RV và khóa MA_LK); MA_LUOT_KCB là convention VN Core tương thích MA_LK khi trao đổi BHYT; 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).

4. Điều kiện tiên quyết

| # | 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 | GPHN hiện hành; CCHN chỉ dùng cho dữ liệu lịch sử | | P4 | Bệnh nhân | VNCorePatient | CCCD là định danh cốt lõi; VNeID chỉ dùng cho xác thực/tích hợp | | P5 | Thẻ BHYT | VNCoreCoverage | số thẻ; nơi ĐKKCB ban đầu (đúng tuyến) |

5. Phương án gửi bằng Transaction Bundle

Khi máy chủ công bố hỗ trợ transaction, có thể gửi lượt khám bằng transaction Bundle (type=transaction) để áp dụng atomic. Ví dụ tổng hợp: Bundle-ExampleBundleOutpatientTransaction (8 entry PUT update-as-create). Hệ thống MAY dùng tương tác khác nếu CapabilityStatement và hợp đồng tích hợp cho phép. Hai pattern entry (PUT update-as-create, idempotent; POST + ifNoneExist) và ba loại Bundle được trình bày tại Playbook Nội trú §5.

6. Sơ đồ luồng

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 ─────────────┘

7. Các bước gửi dữ liệu

| # | Bước | Profile | Element chính | Terminology | Example | |—|—|—|—|—|—| | 1 | Lượt khám | VNCoreEncounter | class=AMB, extension[insuranceVisitType] (mã 5 KCB ban đầu là mở rộng dự án trong danh mục legacy), identifier[maLuotKcb] (convention VN Core) | Legacy MA_LYDO_VVIEN: QĐ 4210/QĐ-BYT; trao đổi hiện hành dùng MA_DOI_TUONG_KCB và MA_LK | Outpatient | | 2 | Chẩn đoán | VNCoreConditionDiagnosis | code ICD-10 J18.9 (+ SNOMED), category=encounter-diagnosis | QĐ 4469/QĐ-BYT | Pneumonia | | 3 | Chỉ định XN | VNCoreServiceRequest | intent=order, code LOINC | QĐ 1227/QĐ-BYT | 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/QĐ-BYT | LabGlucose | | 6 | CĐHA (nhánh) | VNCoreServiceRequestVNCoreImagingStudyVNCoreDiagnosticReportImaging | StudyInstanceUID, resultsInterpreter | — | ChestCT | | 7 | Kê đơn | VNCoreMedicationRequest | medicationCodeableConcept (ATC), dosageInstruction | TT 26/2025/TT-BYT | Amoxicillin | | 8 | Thủ thuật (nếu có) | VNCoreProcedure | code DVKT | TT 23/2024/TT-BYT; QĐ 387/QĐ-BYT | — |

8. Đóng lượt khám

VNCoreEncounter.status = finished + extension[treatmentOutcome] (KET_QUA_DTRI) + Encounter.diagnosis (chẩn đoán chính). Ngoại trú thường không có hospitalization.

9. Tích hợp BHYT/Claim

VNCoreClaim (type=institutional/professional, item.category từ vn-cost-category-vs — khám/XN/CĐHA/thuốc, QĐ 697/QĐ-BYT; ngoại trú thường 2–4 item, đúng 1 thẻ focal=true) → VNCoreClaimResponseVNCoreExplanationOfBenefit → gói gửi VNCoreBHYTSubmissionBundle (ExampleBHYTSubmissionOutpatient). Lớp ánh xạ hiện hành bám chuẩn dữ liệu đầu ra KCB theo QĐ 3176/QĐ-BYT; QĐ 4210/QĐ-BYT chỉ dùng để giải nghĩa hoặc chuyển đổi dữ liệu lịch sử.

10. Phụ lục terminology

ICD-10 VN (QĐ 4469/QĐ-BYT), LOINC/cận lâm sàng (QĐ 1227/QĐ-BYT), DVKT (TT 23/2024/TT-BYT), MA_LYDO_VVIEN legacy (QĐ 4210/QĐ-BYT), KET_QUA_DTRI (QĐ 3176/QĐ-BYT), nhóm chi phí (QĐ 697/QĐ-BYT). Xem Hướng dẫn terminology.

11. Danh sách kiểm tra hợp lệ + lỗi thường gặp

  • Encounter có subject + serviceProvider + class=AMB (VN-RULE-ENC-001).
  • Mỗi Condition biểu diễn một vấn đề/chẩn đoán lâm sàng; Condition.code có một coding ICD-10 VN bắt buộc và có thể có thêm coding tương đương như SNOMED CT, không gộp nhiều chẩn đoán khác nghĩa vào một resource (VN-RULE-CON-001, VN-RULE-TERM-001).
  • Observation.code khớp đơn vị valueQuantity.
  • datetime có offset +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"]}]}

12. Khoảng trống profile (GAP)

| 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ó.

Liên hệ với các trang khá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 |

English Summary

Outpatient integration playbook for a coherent synthetic pneumonia (J18.9) scenario. It illustrates an atomic transaction Bundle (ExampleBundleOutpatientTransaction) when the applicable server CapabilityStatement advertises transaction support. The page lists prerequisites, the resource sequence, published synthetic Example Instances, terminology with Vietnamese legal basis, and a validation checklist referencing the VN-RULE registry.