HL7 Vietnam VN Core FHIR Implementation Guide

Bộ Hướng dẫn Triển khai Core FHIR cho Việt Nam
0.6.0 - Draft for Community Review Viet Nam cờ

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ồ sơ tài nguyên: Bundle chứng nhận sức khỏe (SHC/SHL payload) — VN Core Health Credential Bundle

URL chính thức: http://fhir.hl7.org.vn/core/StructureDefinition/vn-core-health-credential-bundle Phiên bản: 0.6.0
Computable Name: VNCoreHealthCredentialBundle

Profile Bundle type=collection làm PAYLOAD cho chứng nhận sức khỏe số xác minh được (verifiable health credential) — đóng gói TỐI THIỂU để in QR. Vận chuyển/QR theo chuẩn SMART Health Cards (SHC) cho credential nhỏ static offline-verifiable, hoặc SMART Health Links (SHL) cho hồ sơ lớn (KHÔNG nhúng IPS đầy đủ vào QR — IPS là data model/payload, không phải chuẩn QR transport). An toàn: payload tối thiểu hoá (chỉ trường cần thiết); QR có expiry ngắn, ký số issuer (JWKS + key rotation), revocation/status endpoint cho online verify; thẻ vật lý chỉ chứa pointer/credential rất hẹp, KHÔNG full Sổ SKĐT. Use case: chứng nhận đủ điều kiện sức khỏe (lái xe/thuyền viên/học sinh) từ dữ liệu KSK; chứng nhận tiêm chủng. Căn cứ: QĐ 1923/QĐ-BYT (HL7 FHIR); NĐ 137/2024 (chữ ký số).

Usages:

You can also check for usages in the FHIR IG Statistics

Các dạng xem hình thức của nội dung hồ sơ

Mô tả profile, differential, snapshot và các biểu diễn liên quan.

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Bundle C 0..* VNCoreBundle Contains a collection of resources
Constraints: bdl-1, bdl-2, bdl-3, bdl-4, bdl-7, bdl-9, bdl-10, bdl-11, bdl-12, vn-bundle-document-first
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... type SΣ 1..1 code Luôn 'collection' cho payload credential (SHC/SHL)
Binding: BundleType (required): Indicates the purpose of a bundle - how it is intended to be used.
Fixed Value: collection
... timestamp SΣ 1..1 instant Thời điểm tạo
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... fullUrl SΣ 1..1 uri Khuyến nghị 'resource:N' (SHC) hoặc urn:uuid để payload nhỏ, không lộ URL nội bộ
.... resource SΣ 1..1 Resource Resource FHIR

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Bundle.type Base required BundleType 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
bdl-1 error Bundle total only when a search or history total.empty() or (type = 'searchset') or (type = 'history')
bdl-2 error Bundle entry.search only when a search entry.search.empty() or (type = 'searchset')
bdl-3 error Bundle entry.request mandatory for batch/transaction/history, otherwise prohibited entry.all(request.exists() = (%resource.type = 'batch' or %resource.type = 'transaction' or %resource.type = 'history'))
bdl-4 error Bundle entry.response mandatory for batch-response/transaction-response/history, otherwise prohibited entry.all(response.exists() = (%resource.type = 'batch-response' or %resource.type = 'transaction-response' or %resource.type = 'history'))
bdl-5 error Bundle.entry must be a resource unless there's a request or response resource.exists() or request.exists() or response.exists()
bdl-7 error Bundle FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles) (type = 'history') or entry.where(fullUrl.exists()).select(fullUrl&resource.meta.versionId).isDistinct()
bdl-8 error Bundle.entry fullUrl cannot be a version specific reference fullUrl.contains('/_history/').not()
bdl-9 error Bundle A document must have an identifier with a system and a value type = 'document' implies (identifier.system.exists() and identifier.value.exists())
bdl-10 error Bundle A document must have a date type = 'document' implies (timestamp.hasValue())
bdl-11 error Bundle A document must have a Composition as the first resource type = 'document' implies entry.first().resource.is(Composition)
bdl-12 error Bundle A message must have a MessageHeader as the first resource type = 'message' implies entry.first().resource.is(MessageHeader)
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()
vn-bundle-document-first error Bundle Bundle type 'document' phải có Composition là entry đầu tiên (per FHIR Bundle spec) type = 'document' implies entry.first().resource.is(Composition)

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Bundle 0..* VNCoreBundle Contains a collection of resources
... type 1..1 code Luôn 'collection' cho payload credential (SHC/SHL)
Fixed Value: collection
... timestamp 1..1 instant Thời điểm tạo
... entry 1..* BackboneElement Danh sách resources
.... fullUrl S 1..1 uri Khuyến nghị 'resource:N' (SHC) hoặc urn:uuid để payload nhỏ, không lộ URL nội bộ
.... resource S 1..1 Resource Resource FHIR

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Bundle C 0..* VNCoreBundle Contains a collection of resources
Constraints: bdl-1, bdl-2, bdl-3, bdl-4, bdl-7, bdl-9, bdl-10, bdl-11, bdl-12, vn-bundle-document-first
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... identifier Σ 0..1 Identifier Persistent identifier for the bundle
... type SΣ 1..1 code Luôn 'collection' cho payload credential (SHC/SHL)
Binding: BundleType (required): Indicates the purpose of a bundle - how it is intended to be used.
Fixed Value: collection
... timestamp SΣ 1..1 instant Thời điểm tạo
... total ΣC 0..1 unsignedInt If search, the total number of matches
... link Σ 0..* BackboneElement Links related to this Bundle
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... relation Σ 1..1 string See http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1
.... url Σ 1..1 uri Reference details for the link
... entry SΣC 1..* BackboneElement Danh sách resources
Constraints: bdl-5, bdl-8
This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... link Σ 0..* See link (Bundle) Links related to this entry
.... fullUrl SΣ 1..1 uri Khuyến nghị 'resource:N' (SHC) hoặc urn:uuid để payload nhỏ, không lộ URL nội bộ
.... resource SΣ 1..1 Resource Resource FHIR
.... search ΣC 0..1 BackboneElement Search related information
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... mode Σ 0..1 code match | include | outcome - why this is in the result set
Binding: SearchEntryMode (required): Why an entry is in the result set - whether it's included as a match or because of an _include requirement, or to convey information or warning information about the search process.
..... score Σ 0..1 decimal Search ranking (between 0 and 1)
.... request ΣC 0..1 BackboneElement Additional execution information (transaction/batch/history)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... method Σ 1..1 code GET | HEAD | POST | PUT | DELETE | PATCH
Binding: HTTPVerb (required): HTTP verbs (in the HTTP command line). See HTTP rfc for details.
..... url Σ 1..1 uri URL for HTTP equivalent of this entry
..... ifNoneMatch Σ 0..1 string For managing cache currency
..... ifModifiedSince Σ 0..1 instant For managing cache currency
..... ifMatch Σ 0..1 string For managing update contention
..... ifNoneExist Σ 0..1 string For conditional creates
.... response ΣC 0..1 BackboneElement Results of execution (transaction/batch/history)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... status Σ 1..1 string Status response code (text optional)
..... location Σ 0..1 uri The location (if the operation returns a location)
..... etag Σ 0..1 string The Etag for the resource (if relevant)
..... lastModified Σ 0..1 instant Server's date time modified
..... outcome Σ 0..1 Resource OperationOutcome with hints and warnings (for batch/transaction)
... signature Σ 0..1 Signature Digital Signature

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Bundle.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Bundle.type Base required BundleType 📍4.0.1 FHIR Std.
Bundle.entry.search.​mode Base required SearchEntryMode 📍4.0.1 FHIR Std.
Bundle.entry.request.​method Base required HTTPVerb 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
bdl-1 error Bundle total only when a search or history total.empty() or (type = 'searchset') or (type = 'history')
bdl-2 error Bundle entry.search only when a search entry.search.empty() or (type = 'searchset')
bdl-3 error Bundle entry.request mandatory for batch/transaction/history, otherwise prohibited entry.all(request.exists() = (%resource.type = 'batch' or %resource.type = 'transaction' or %resource.type = 'history'))
bdl-4 error Bundle entry.response mandatory for batch-response/transaction-response/history, otherwise prohibited entry.all(response.exists() = (%resource.type = 'batch-response' or %resource.type = 'transaction-response' or %resource.type = 'history'))
bdl-5 error Bundle.entry must be a resource unless there's a request or response resource.exists() or request.exists() or response.exists()
bdl-7 error Bundle FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles) (type = 'history') or entry.where(fullUrl.exists()).select(fullUrl&resource.meta.versionId).isDistinct()
bdl-8 error Bundle.entry fullUrl cannot be a version specific reference fullUrl.contains('/_history/').not()
bdl-9 error Bundle A document must have an identifier with a system and a value type = 'document' implies (identifier.system.exists() and identifier.value.exists())
bdl-10 error Bundle A document must have a date type = 'document' implies (timestamp.hasValue())
bdl-11 error Bundle A document must have a Composition as the first resource type = 'document' implies entry.first().resource.is(Composition)
bdl-12 error Bundle A message must have a MessageHeader as the first resource type = 'message' implies entry.first().resource.is(MessageHeader)
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()
vn-bundle-document-first error Bundle Bundle type 'document' phải có Composition là entry đầu tiên (per FHIR Bundle spec) type = 'document' implies entry.first().resource.is(Composition)

Summary

Mandatory: 4 elements
Must-Support: 2 elements
Fixed: 1 element

Dạng xem phần tử chính

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Bundle C 0..* VNCoreBundle Contains a collection of resources
Constraints: bdl-1, bdl-2, bdl-3, bdl-4, bdl-7, bdl-9, bdl-10, bdl-11, bdl-12, vn-bundle-document-first
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... type SΣ 1..1 code Luôn 'collection' cho payload credential (SHC/SHL)
Binding: BundleType (required): Indicates the purpose of a bundle - how it is intended to be used.
Fixed Value: collection
... timestamp SΣ 1..1 instant Thời điểm tạo
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... fullUrl SΣ 1..1 uri Khuyến nghị 'resource:N' (SHC) hoặc urn:uuid để payload nhỏ, không lộ URL nội bộ
.... resource SΣ 1..1 Resource Resource FHIR

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Bundle.type Base required BundleType 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
bdl-1 error Bundle total only when a search or history total.empty() or (type = 'searchset') or (type = 'history')
bdl-2 error Bundle entry.search only when a search entry.search.empty() or (type = 'searchset')
bdl-3 error Bundle entry.request mandatory for batch/transaction/history, otherwise prohibited entry.all(request.exists() = (%resource.type = 'batch' or %resource.type = 'transaction' or %resource.type = 'history'))
bdl-4 error Bundle entry.response mandatory for batch-response/transaction-response/history, otherwise prohibited entry.all(response.exists() = (%resource.type = 'batch-response' or %resource.type = 'transaction-response' or %resource.type = 'history'))
bdl-5 error Bundle.entry must be a resource unless there's a request or response resource.exists() or request.exists() or response.exists()
bdl-7 error Bundle FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles) (type = 'history') or entry.where(fullUrl.exists()).select(fullUrl&resource.meta.versionId).isDistinct()
bdl-8 error Bundle.entry fullUrl cannot be a version specific reference fullUrl.contains('/_history/').not()
bdl-9 error Bundle A document must have an identifier with a system and a value type = 'document' implies (identifier.system.exists() and identifier.value.exists())
bdl-10 error Bundle A document must have a date type = 'document' implies (timestamp.hasValue())
bdl-11 error Bundle A document must have a Composition as the first resource type = 'document' implies entry.first().resource.is(Composition)
bdl-12 error Bundle A message must have a MessageHeader as the first resource type = 'message' implies entry.first().resource.is(MessageHeader)
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()
vn-bundle-document-first error Bundle Bundle type 'document' phải có Composition là entry đầu tiên (per FHIR Bundle spec) type = 'document' implies entry.first().resource.is(Composition)

Dạng xem Differential

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Bundle 0..* VNCoreBundle Contains a collection of resources
... type 1..1 code Luôn 'collection' cho payload credential (SHC/SHL)
Fixed Value: collection
... timestamp 1..1 instant Thời điểm tạo
... entry 1..* BackboneElement Danh sách resources
.... fullUrl S 1..1 uri Khuyến nghị 'resource:N' (SHC) hoặc urn:uuid để payload nhỏ, không lộ URL nội bộ
.... resource S 1..1 Resource Resource FHIR

doco Documentation for this format

Dạng xem SnapshotView

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Bundle C 0..* VNCoreBundle Contains a collection of resources
Constraints: bdl-1, bdl-2, bdl-3, bdl-4, bdl-7, bdl-9, bdl-10, bdl-11, bdl-12, vn-bundle-document-first
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... identifier Σ 0..1 Identifier Persistent identifier for the bundle
... type SΣ 1..1 code Luôn 'collection' cho payload credential (SHC/SHL)
Binding: BundleType (required): Indicates the purpose of a bundle - how it is intended to be used.
Fixed Value: collection
... timestamp SΣ 1..1 instant Thời điểm tạo
... total ΣC 0..1 unsignedInt If search, the total number of matches
... link Σ 0..* BackboneElement Links related to this Bundle
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... relation Σ 1..1 string See http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1
.... url Σ 1..1 uri Reference details for the link
... entry SΣC 1..* BackboneElement Danh sách resources
Constraints: bdl-5, bdl-8
This repeating element order: For bundles of type 'document' and 'message', the first resource is special (must be Composition or MessageHeader respectively). For all bundles, the meaning of the order of entries depends on the bundle type
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... link Σ 0..* See link (Bundle) Links related to this entry
.... fullUrl SΣ 1..1 uri Khuyến nghị 'resource:N' (SHC) hoặc urn:uuid để payload nhỏ, không lộ URL nội bộ
.... resource SΣ 1..1 Resource Resource FHIR
.... search ΣC 0..1 BackboneElement Search related information
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... mode Σ 0..1 code match | include | outcome - why this is in the result set
Binding: SearchEntryMode (required): Why an entry is in the result set - whether it's included as a match or because of an _include requirement, or to convey information or warning information about the search process.
..... score Σ 0..1 decimal Search ranking (between 0 and 1)
.... request ΣC 0..1 BackboneElement Additional execution information (transaction/batch/history)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... method Σ 1..1 code GET | HEAD | POST | PUT | DELETE | PATCH
Binding: HTTPVerb (required): HTTP verbs (in the HTTP command line). See HTTP rfc for details.
..... url Σ 1..1 uri URL for HTTP equivalent of this entry
..... ifNoneMatch Σ 0..1 string For managing cache currency
..... ifModifiedSince Σ 0..1 instant For managing cache currency
..... ifMatch Σ 0..1 string For managing update contention
..... ifNoneExist Σ 0..1 string For conditional creates
.... response ΣC 0..1 BackboneElement Results of execution (transaction/batch/history)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... status Σ 1..1 string Status response code (text optional)
..... location Σ 0..1 uri The location (if the operation returns a location)
..... etag Σ 0..1 string The Etag for the resource (if relevant)
..... lastModified Σ 0..1 instant Server's date time modified
..... outcome Σ 0..1 Resource OperationOutcome with hints and warnings (for batch/transaction)
... signature Σ 0..1 Signature Digital Signature

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Bundle.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Bundle.type Base required BundleType 📍4.0.1 FHIR Std.
Bundle.entry.search.​mode Base required SearchEntryMode 📍4.0.1 FHIR Std.
Bundle.entry.request.​method Base required HTTPVerb 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
bdl-1 error Bundle total only when a search or history total.empty() or (type = 'searchset') or (type = 'history')
bdl-2 error Bundle entry.search only when a search entry.search.empty() or (type = 'searchset')
bdl-3 error Bundle entry.request mandatory for batch/transaction/history, otherwise prohibited entry.all(request.exists() = (%resource.type = 'batch' or %resource.type = 'transaction' or %resource.type = 'history'))
bdl-4 error Bundle entry.response mandatory for batch-response/transaction-response/history, otherwise prohibited entry.all(response.exists() = (%resource.type = 'batch-response' or %resource.type = 'transaction-response' or %resource.type = 'history'))
bdl-5 error Bundle.entry must be a resource unless there's a request or response resource.exists() or request.exists() or response.exists()
bdl-7 error Bundle FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles) (type = 'history') or entry.where(fullUrl.exists()).select(fullUrl&resource.meta.versionId).isDistinct()
bdl-8 error Bundle.entry fullUrl cannot be a version specific reference fullUrl.contains('/_history/').not()
bdl-9 error Bundle A document must have an identifier with a system and a value type = 'document' implies (identifier.system.exists() and identifier.value.exists())
bdl-10 error Bundle A document must have a date type = 'document' implies (timestamp.hasValue())
bdl-11 error Bundle A document must have a Composition as the first resource type = 'document' implies entry.first().resource.is(Composition)
bdl-12 error Bundle A message must have a MessageHeader as the first resource type = 'message' implies entry.first().resource.is(MessageHeader)
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()
vn-bundle-document-first error Bundle Bundle type 'document' phải có Composition là entry đầu tiên (per FHIR Bundle spec) type = 'document' implies entry.first().resource.is(Composition)

Summary

Mandatory: 4 elements
Must-Support: 2 elements
Fixed: 1 element

 

Biểu diễn khác của hồ sơ: CSV, Excel, Schematron