Bộ Hướng dẫn Triển khai Core FHIR cho Việt Nam
0.8.0 - Draft for Community Review
Bộ Hướng dẫn Triển khai Core FHIR cho Việt Nam - Draft for Community Review (v0.8.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
| URL chính thức: http://fhir.hl7.org.vn/core/StructureDefinition/vnHealthCheckupDataSyncEnvelopeLm | Phiên bản: 0.8.0 | ||||
| Computable Name: VNHealthCheckupDataSyncEnvelopeLM | |||||
| Định danh khác: OID:2.25.161089673617632664299011809196868855799.42.142 | |||||
Logical model cho bản tin (envelope) đồng bộ tự động tập dữ liệu khám sức khỏe định kỳ từ cơ sở KCB lên Cổng/Trục dữ liệu sức khỏe Bộ Y tế (api.emrhub.vn). API: POST /api/platform/data-sync/push. Xác thực: OAuth2 + Bearer Token (lấy từ /api/auth/login). Định dạng JSON (UTF-8). KHÁC với luồng BHYT Gateway (gdbhyt.baohiemxahoi.gov.vn, XML 4210) — đây là surface liên thông KSK quốc gia. INFORMATIVE / non-normative: đây là mô hình ánh xạ transport envelope (không phải FHIR resource normative). Các National Core IG (KR/JP) chỉ chuẩn hóa profile/search/capability RESTful; envelope được giữ làm mapping aid để implementer ánh xạ payload FHIR ↔ bản tin đồng bộ. Căn cứ: QĐ 2062/QĐ-BYT (07/7/2026) Phụ lục 02 (Hướng dẫn kết nối, liên thông dữ liệu) — THAY Phụ lục 02 QĐ 1551/QĐ-BYT (31/5/2026); đọc hợp nhất. API OAuth2 + Bearer, POST /api/platform/data-sync/push (service-type=100, msg_type=101/102, txn_type=sync_checkup), checksum RSASHA256.
Usages:
You can also check for usages in the FHIR IG Statistics
Mô tả profile, differential, snapshot và các biểu diễn liên quan.
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Base | Bản tin đồng bộ dữ liệu KSK lên Trục dữ liệu BYT — Logical Model (Phụ lục 02) | |
![]() ![]() |
1..1 | BackboneElement | HTTP headers của request | |
![]() ![]() ![]() |
1..1 | string | Content-Type = application/json | |
![]() ![]() ![]() |
1..1 | string | Accept = */* | |
![]() ![]() ![]() |
1..1 | string | Accept-Encoding = gzip,deflate,br | |
![]() ![]() ![]() |
1..1 | string | Authorization = Bearer + Access Token (lấy từ POST /api/auth/login, role=facility|doh) | |
![]() ![]() ![]() |
1..1 | string | service-type = 100 (Dịch vụ data sync vào Trục dữ liệu Bộ Y tế) | |
![]() ![]() |
1..1 | BackboneElement | header - Thông tin header bản tin (JSON Object) | |
![]() ![]() ![]() |
1..1 | string | version - Phiên bản hệ thống Trục dữ liệu BYT | |
![]() ![]() ![]() |
1..1 | string | sender_id - Mã định danh bên phát tin (13 số mã định danh CSKCB từ Cục KCB) | |
![]() ![]() ![]() |
1..1 | string | receiver_id - Mã bên nhận tin (vd: TDLBYT) | |
![]() ![]() ![]() |
1..1 | string | txn_type - Loại giao dịch. Giá trị cố định: sync_checkup (đồng bộ tập dữ liệu KSK định kỳ) | |
![]() ![]() ![]() |
1..1 | string | msg_id - Mã giao dịch = sender_id + YY (2 ký tự năm) + MM (2 ký tự tháng) + DD (2 ký tự ngày) + UUIDv4 (không gạch) | |
![]() ![]() ![]() |
1..1 | string | msg_type - REQUEST cố định = 101 (thông điệp phát tin đồng bộ). Response dùng 102 (xem nhóm response bên dưới). service-type=100 | |
![]() ![]() ![]() |
1..1 | string | data_type - Định dạng file. Giá trị: xml/base64 HOẶC json/base64 (chỉ 2 giá trị này theo Phụ lục 02) | |
![]() ![]() ![]() |
1..1 | string | send_datetime - Thời điểm đẩy dữ liệu, Unix timestamp 13 số (ms). VĂN BẢN GỐC kiểu Long; mô hình hóa string vì vượt phạm vi FHIR R4 integer 32-bit (INFORMATIVE) | |
![]() ![]() |
1..1 | string | data - File dữ liệu (XML/JSON) đã encode Base64 | |
![]() ![]() |
1..1 | string | signature - Chữ ký số checksum RSASHA256 giữa header và data (bên phát tin tạo). Công thức: bỏ whitespace/newline → Uppercase(SHA256(header)) + '.' + Uppercase(SHA256(data)) → RSASHA256 bằng private key → Uppercase(base64) | |
![]() ![]() |
0..1 | BackboneElement | Bản tin phản hồi từ Trục BYT (msg_type=102) | |
![]() ![]() ![]() |
0..1 | string | msg_type (response) = 102 | |
![]() ![]() ![]() |
0..1 | string | ref_msg_id - msg_id của bên phát tin gốc | |
![]() ![]() ![]() |
0..1 | string | res_code - Mã trạng thái tiếp nhận (CM_SUCCESS | CM_INVALID_REQUEST | PS_DS_RSA_SIGNATURE_* | PS_DS_VERIFY_* | PS_DS_SAVE_*) | |
![]() ![]() ![]() |
0..1 | string | res_msg - Diễn giải trạng thái tiếp nhận | |
![]() ![]() ![]() |
0..1 | string | res_datetime - Ngày phản hồi (Unix timestamp 13 số) | |
![]() ![]() ![]() |
0..1 | string | signature (response) - Chữ ký RSASHA256 của Trục BYT | |
Documentation for this format | ||||
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Base | Bản tin đồng bộ dữ liệu KSK lên Trục dữ liệu BYT — Logical Model (Phụ lục 02) | |
![]() ![]() |
1..1 | BackboneElement | HTTP headers của request | |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() |
1..1 | string | Content-Type = application/json | |
![]() ![]() ![]() |
1..1 | string | Accept = */* | |
![]() ![]() ![]() |
1..1 | string | Accept-Encoding = gzip,deflate,br | |
![]() ![]() ![]() |
1..1 | string | Authorization = Bearer + Access Token (lấy từ POST /api/auth/login, role=facility|doh) | |
![]() ![]() ![]() |
1..1 | string | service-type = 100 (Dịch vụ data sync vào Trục dữ liệu Bộ Y tế) | |
![]() ![]() |
1..1 | BackboneElement | header - Thông tin header bản tin (JSON Object) | |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() |
1..1 | string | version - Phiên bản hệ thống Trục dữ liệu BYT | |
![]() ![]() ![]() |
1..1 | string | sender_id - Mã định danh bên phát tin (13 số mã định danh CSKCB từ Cục KCB) | |
![]() ![]() ![]() |
1..1 | string | receiver_id - Mã bên nhận tin (vd: TDLBYT) | |
![]() ![]() ![]() |
1..1 | string | txn_type - Loại giao dịch. Giá trị cố định: sync_checkup (đồng bộ tập dữ liệu KSK định kỳ) | |
![]() ![]() ![]() |
1..1 | string | msg_id - Mã giao dịch = sender_id + YY (2 ký tự năm) + MM (2 ký tự tháng) + DD (2 ký tự ngày) + UUIDv4 (không gạch) | |
![]() ![]() ![]() |
1..1 | string | msg_type - REQUEST cố định = 101 (thông điệp phát tin đồng bộ). Response dùng 102 (xem nhóm response bên dưới). service-type=100 | |
![]() ![]() ![]() |
1..1 | string | data_type - Định dạng file. Giá trị: xml/base64 HOẶC json/base64 (chỉ 2 giá trị này theo Phụ lục 02) | |
![]() ![]() ![]() |
1..1 | string | send_datetime - Thời điểm đẩy dữ liệu, Unix timestamp 13 số (ms). VĂN BẢN GỐC kiểu Long; mô hình hóa string vì vượt phạm vi FHIR R4 integer 32-bit (INFORMATIVE) | |
![]() ![]() |
1..1 | string | data - File dữ liệu (XML/JSON) đã encode Base64 | |
![]() ![]() |
1..1 | string | signature - Chữ ký số checksum RSASHA256 giữa header và data (bên phát tin tạo). Công thức: bỏ whitespace/newline → Uppercase(SHA256(header)) + '.' + Uppercase(SHA256(data)) → RSASHA256 bằng private key → Uppercase(base64) | |
![]() ![]() |
0..1 | BackboneElement | Bản tin phản hồi từ Trục BYT (msg_type=102) | |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() |
0..1 | string | msg_type (response) = 102 | |
![]() ![]() ![]() |
0..1 | string | ref_msg_id - msg_id của bên phát tin gốc | |
![]() ![]() ![]() |
0..1 | string | res_code - Mã trạng thái tiếp nhận (CM_SUCCESS | CM_INVALID_REQUEST | PS_DS_RSA_SIGNATURE_* | PS_DS_VERIFY_* | PS_DS_SAVE_*) | |
![]() ![]() ![]() |
0..1 | string | res_msg - Diễn giải trạng thái tiếp nhận | |
![]() ![]() ![]() |
0..1 | string | res_datetime - Ngày phản hồi (Unix timestamp 13 số) | |
![]() ![]() ![]() |
0..1 | string | signature (response) - Chữ ký RSASHA256 của Trục BYT | |
Documentation for this format | ||||
| Id | Grade | Path(s) | Description | Expression |
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
Dạng xem Differential
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Base | Bản tin đồng bộ dữ liệu KSK lên Trục dữ liệu BYT — Logical Model (Phụ lục 02) | |
![]() ![]() |
1..1 | BackboneElement | HTTP headers của request | |
![]() ![]() ![]() |
1..1 | string | Content-Type = application/json | |
![]() ![]() ![]() |
1..1 | string | Accept = */* | |
![]() ![]() ![]() |
1..1 | string | Accept-Encoding = gzip,deflate,br | |
![]() ![]() ![]() |
1..1 | string | Authorization = Bearer + Access Token (lấy từ POST /api/auth/login, role=facility|doh) | |
![]() ![]() ![]() |
1..1 | string | service-type = 100 (Dịch vụ data sync vào Trục dữ liệu Bộ Y tế) | |
![]() ![]() |
1..1 | BackboneElement | header - Thông tin header bản tin (JSON Object) | |
![]() ![]() ![]() |
1..1 | string | version - Phiên bản hệ thống Trục dữ liệu BYT | |
![]() ![]() ![]() |
1..1 | string | sender_id - Mã định danh bên phát tin (13 số mã định danh CSKCB từ Cục KCB) | |
![]() ![]() ![]() |
1..1 | string | receiver_id - Mã bên nhận tin (vd: TDLBYT) | |
![]() ![]() ![]() |
1..1 | string | txn_type - Loại giao dịch. Giá trị cố định: sync_checkup (đồng bộ tập dữ liệu KSK định kỳ) | |
![]() ![]() ![]() |
1..1 | string | msg_id - Mã giao dịch = sender_id + YY (2 ký tự năm) + MM (2 ký tự tháng) + DD (2 ký tự ngày) + UUIDv4 (không gạch) | |
![]() ![]() ![]() |
1..1 | string | msg_type - REQUEST cố định = 101 (thông điệp phát tin đồng bộ). Response dùng 102 (xem nhóm response bên dưới). service-type=100 | |
![]() ![]() ![]() |
1..1 | string | data_type - Định dạng file. Giá trị: xml/base64 HOẶC json/base64 (chỉ 2 giá trị này theo Phụ lục 02) | |
![]() ![]() ![]() |
1..1 | string | send_datetime - Thời điểm đẩy dữ liệu, Unix timestamp 13 số (ms). VĂN BẢN GỐC kiểu Long; mô hình hóa string vì vượt phạm vi FHIR R4 integer 32-bit (INFORMATIVE) | |
![]() ![]() |
1..1 | string | data - File dữ liệu (XML/JSON) đã encode Base64 | |
![]() ![]() |
1..1 | string | signature - Chữ ký số checksum RSASHA256 giữa header và data (bên phát tin tạo). Công thức: bỏ whitespace/newline → Uppercase(SHA256(header)) + '.' + Uppercase(SHA256(data)) → RSASHA256 bằng private key → Uppercase(base64) | |
![]() ![]() |
0..1 | BackboneElement | Bản tin phản hồi từ Trục BYT (msg_type=102) | |
![]() ![]() ![]() |
0..1 | string | msg_type (response) = 102 | |
![]() ![]() ![]() |
0..1 | string | ref_msg_id - msg_id của bên phát tin gốc | |
![]() ![]() ![]() |
0..1 | string | res_code - Mã trạng thái tiếp nhận (CM_SUCCESS | CM_INVALID_REQUEST | PS_DS_RSA_SIGNATURE_* | PS_DS_VERIFY_* | PS_DS_SAVE_*) | |
![]() ![]() ![]() |
0..1 | string | res_msg - Diễn giải trạng thái tiếp nhận | |
![]() ![]() ![]() |
0..1 | string | res_datetime - Ngày phản hồi (Unix timestamp 13 số) | |
![]() ![]() ![]() |
0..1 | string | signature (response) - Chữ ký RSASHA256 của Trục BYT | |
Documentation for this format | ||||
Dạng xem SnapshotView
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Base | Bản tin đồng bộ dữ liệu KSK lên Trục dữ liệu BYT — Logical Model (Phụ lục 02) | |
![]() ![]() |
1..1 | BackboneElement | HTTP headers của request | |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() |
1..1 | string | Content-Type = application/json | |
![]() ![]() ![]() |
1..1 | string | Accept = */* | |
![]() ![]() ![]() |
1..1 | string | Accept-Encoding = gzip,deflate,br | |
![]() ![]() ![]() |
1..1 | string | Authorization = Bearer + Access Token (lấy từ POST /api/auth/login, role=facility|doh) | |
![]() ![]() ![]() |
1..1 | string | service-type = 100 (Dịch vụ data sync vào Trục dữ liệu Bộ Y tế) | |
![]() ![]() |
1..1 | BackboneElement | header - Thông tin header bản tin (JSON Object) | |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() |
1..1 | string | version - Phiên bản hệ thống Trục dữ liệu BYT | |
![]() ![]() ![]() |
1..1 | string | sender_id - Mã định danh bên phát tin (13 số mã định danh CSKCB từ Cục KCB) | |
![]() ![]() ![]() |
1..1 | string | receiver_id - Mã bên nhận tin (vd: TDLBYT) | |
![]() ![]() ![]() |
1..1 | string | txn_type - Loại giao dịch. Giá trị cố định: sync_checkup (đồng bộ tập dữ liệu KSK định kỳ) | |
![]() ![]() ![]() |
1..1 | string | msg_id - Mã giao dịch = sender_id + YY (2 ký tự năm) + MM (2 ký tự tháng) + DD (2 ký tự ngày) + UUIDv4 (không gạch) | |
![]() ![]() ![]() |
1..1 | string | msg_type - REQUEST cố định = 101 (thông điệp phát tin đồng bộ). Response dùng 102 (xem nhóm response bên dưới). service-type=100 | |
![]() ![]() ![]() |
1..1 | string | data_type - Định dạng file. Giá trị: xml/base64 HOẶC json/base64 (chỉ 2 giá trị này theo Phụ lục 02) | |
![]() ![]() ![]() |
1..1 | string | send_datetime - Thời điểm đẩy dữ liệu, Unix timestamp 13 số (ms). VĂN BẢN GỐC kiểu Long; mô hình hóa string vì vượt phạm vi FHIR R4 integer 32-bit (INFORMATIVE) | |
![]() ![]() |
1..1 | string | data - File dữ liệu (XML/JSON) đã encode Base64 | |
![]() ![]() |
1..1 | string | signature - Chữ ký số checksum RSASHA256 giữa header và data (bên phát tin tạo). Công thức: bỏ whitespace/newline → Uppercase(SHA256(header)) + '.' + Uppercase(SHA256(data)) → RSASHA256 bằng private key → Uppercase(base64) | |
![]() ![]() |
0..1 | BackboneElement | Bản tin phản hồi từ Trục BYT (msg_type=102) | |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() |
0..1 | string | msg_type (response) = 102 | |
![]() ![]() ![]() |
0..1 | string | ref_msg_id - msg_id của bên phát tin gốc | |
![]() ![]() ![]() |
0..1 | string | res_code - Mã trạng thái tiếp nhận (CM_SUCCESS | CM_INVALID_REQUEST | PS_DS_RSA_SIGNATURE_* | PS_DS_VERIFY_* | PS_DS_SAVE_*) | |
![]() ![]() ![]() |
0..1 | string | res_msg - Diễn giải trạng thái tiếp nhận | |
![]() ![]() ![]() |
0..1 | string | res_datetime - Ngày phản hồi (Unix timestamp 13 số) | |
![]() ![]() ![]() |
0..1 | string | signature (response) - Chữ ký RSASHA256 của Trục BYT | |
Documentation for this format | ||||
| Id | Grade | Path(s) | Description | Expression |
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|