VN Core Deep Dive

Bản đồ artifact VN Core v0.6.0: đọc gì trước khi vào IG

VN Core IG là nguồn chuẩn để validate dữ liệu. Trang này là bản đồ đọc: giúp CIO, lập trình viên và đội nghiệp vụ hiểu mỗi loại artifact dùng để làm gì, đọc theo thứ tự nào, và khi nào cần đi sâu vào trang IG tương ứng.

Tóm tắt nhanh

  • Không đọc IG theo alphabet. Hãy đọc theo workflow: định danh, EMR, BHYT, terminology, server capability, rồi mới đến từng profile chi tiết.
  • Profile nói dữ liệu phải có hình dạng gì; CodeSystem/ValueSet nói mã nào được dùng; CapabilityStatement nói server phải hỗ trợ gì.
  • Example và Bundle là cầu nối quan trọng giữa constraint và dữ liệu thật; đọc example trước khi viết bộ chuyển đổi giúp tránh hiểu sai slicing hoặc binding.
  • Knowledge Hub giải thích cách đọc; IG vẫn là nguồn normative cho StructureDefinition, snapshot/differential, package và validator.

1. VN Core không chỉ là tập profile

Khi mới mở IG, người đọc thường nhìn thấy danh sách dài artifact và tưởng rằng VN Core là một thư viện profile. Cách đọc đó dễ bỏ sót ý đồ thiết kế. Một profile như VNCorePatient chỉ có nghĩa đầy đủ khi đi cùng NamingSystem cho CCCD/BHYT/BHXH, CodeSystem dân tộc, ValueSet địa chỉ, SearchParameter tìm theo định danh, example Patient Việt Nam, và CapabilityStatement mô tả server phải hỗ trợ search nào.

Vì vậy cần đọc VN Core như một hệ thống gồm ba lớp. Lớp conformance trả lời "dữ liệu hợp lệ là gì". Lớp terminology trả lời "mã này có nghĩa gì và lấy từ đâu". Lớp implementation trả lời "server/client phải hỗ trợ API nào, validate ra sao, gói dữ liệu đi như thế nào". IG là nơi chứa tất cả; Knowledge Hub là lớp giúp định hướng trước khi đọc sâu.

2. Bảng artifact và vai trò

Artifact Số lượng Đọc để hiểu gì FHIR type
Profiles 73 Ràng buộc Resource FHIR cho Việt Nam: Patient, Coverage, Claim, EMR, KSK, IPS, thiết bị, dữ liệu lâm sàng. StructureDefinition
Extensions 48 Các trường FHIR base chưa có: dân tộc, mã xã/phường, BHYT, dữ liệu đặc thù Việt Nam. StructureDefinition
CodeSystems 139 Bộ mã gốc: dân tộc, pháp lý, BHYT, hành chính, ICD-10 VN, thuật ngữ dùng chung. CodeSystem
ValueSets 144 Tập mã bind vào element cụ thể, quyết định mã nào được phép dùng trong từng ngữ cảnh. ValueSet
ConceptMaps 6 Ánh xạ giữa các hệ thống mã hoặc giữa dữ liệu legacy và FHIR-native. ConceptMap
NamingSystems 32 Đăng ký URI cho định danh: CCCD, BHYT, BHXH, mã cơ sở KCB, MRN. NamingSystem
SearchParameters 19 API contract để tìm kiếm theo CCCD, BHYT, MA_LK, MA_CSKCB và các identifier Việt Nam. SearchParameter
CapabilityStatements 5 Tuyên bố năng lực tối thiểu cho server, EMR, gateway BHYT, citizen app. CapabilityStatement
OperationDefinitions 4 Các operation có hợp đồng rõ: validate/submit/reverse BHYT, generate IPS summary. OperationDefinition
LogicalModels 16 Mô hình trung gian cho XML BHYT, KSK, dataset pháp lý hoặc biểu mẫu trước khi map sang FHIR. StructureDefinition

3. Đọc theo workflow Việt Nam

Định danh người bệnh

Bắt đầu với VNCorePatient, NamingSystem CCCD/BHYT/BHXH, SearchParameter patient-cccd và các extension dân tộc/địa chỉ.

BHYT và dữ liệu đầu ra KCB

Đọc Coverage, Claim, ClaimResponse, EOB, Invoice, logical models XML1-XML12 và operation validate/submit/reverse.

Bệnh án điện tử và hồ sơ sức khỏe

Đọc Composition, DocumentReference, DiagnosticReport, Observation, Provenance và Bundle document cho EMR/IPS/VNeID.

Terminology và pháp lý

Đọc CodeSystem/ValueSet trước khi đọc constraint: nhiều lỗi FHIR không nằm ở JSON shape mà nằm ở mã dùng sai hệ thống.

4. Thứ tự đọc khuyến nghị

  1. Đọc page narrative trước. Trang chủ IG, Profiles, Terminology và Package Architecture cho biết ranh giới release và module.
  2. Đọc example trước profile. Ví dụ thật cho thấy profile được dùng trong workflow nào, các reference nối với nhau ra sao.
  3. Đọc differential để biết VN Core thêm gì. Snapshot rất dài vì gồm toàn bộ base FHIR; differential mới cho thấy phần Việt Nam thực sự ràng buộc.
  4. Kiểm tra terminology sau khi đọc profile. Lỗi production thường đến từ dùng đúng element nhưng sai system/code/version.
  5. Cuối cùng chạy validator. Không coi một payload hợp lệ chỉ vì app đọc được JSON; phải validate với package VN Core cùng version release.