Hướng dẫn triển khai FHIR cốt lõi Việt Nam — VN Core FHIR Implementation Guide
0.10.0 - Draft for Community Review
Hướng dẫn triển khai FHIR cốt lõi Việt Nam — VN Core FHIR Implementation Guide - Draft for Community Review (v0.10.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/vn-ext-representation-authority | Phiên bản: 0.10.0 | ||||
| Computable Name: VNCoreExtRepresentationAuthority | |||||
| Định danh khác: OID:2.25.161089673617632664299011809196868855799.42.184 | |||||
Extension ghi nhận THẨM QUYỀN PHÁP LÝ để một người đại diện/giám hộ/được uỷ quyền hành động thay người khác. Mô hình hoá 'token đại diện' phục vụ Policy Decision Point (PDP): miền thẩm quyền, loại thẩm quyền, nguồn xác minh, bằng chứng, thời điểm xác minh, thời hạn. PDP deny-by-default khi quan hệ mâu thuẫn/hết hạn.
THAY ĐỔI 0.10.0 đợt 2 (breaking — kiểm toán 06-07/08/2026, analysis/90 §6.2): tách HAI MIỀN thẩm quyền bằng domain 1..1, vì hai loại quyền không đồng nhất và không suy ra nhau:
(1) healthcare-decision — quyết định thay về khám chữa bệnh (Luật KCB 15/2023/QH15 Điều 8);
(2) data-subject-rights — thực hiện quyền chủ thể dữ liệu thay chủ thể: đồng ý, truy cập, chỉnh sửa, xoá dữ liệu (Luật 91/2025/QH15 Điều 24; Bộ luật Dân sự Điều 134-143) — vd cha/mẹ xem Sổ SKĐT của con qua VNeID.
Một người giữ cả hai quyền = HAI instance extension, mỗi instance một miền với căn cứ, bằng chứng, thời hạn riêng. selectionBasis hạ 1..1 → 0..1: nó là khung của Luật KCB Điều 8 khoản 2 nên bắt buộc trong miền healthcare-decision và phải vắng trong miền data-subject-rights (invariant vn-representation-domain-basis). Thêm evidence 0..* — bằng chứng lặp được mang issuer/document/scope/purpose/validity; quan hệ gia đình hoặc bản ghi quan hệ dân cư KHÔNG tự chứng minh thẩm quyền (uỷ quyền bắt buộc có evidence — invariant vn-representation-proxy-evidence).
THAY ĐỔI 0.10.0 đợt 1 (breaking): thêm selectionBasis — một trong năm nhóm căn cứ lựa chọn tại Luật KCB 15/2023/QH15 Điều 8 khoản 2 điểm a-đ; thêm legalProvision 1..* để ghi văn bản và điều/khoản cụ thể, cho phép lặp vì một thẩm quyền thường dựa trên nhiều quy định đồng thời; nâng verifiedDate từ 0..1 lên 1..1. Kèm invariant vn-representation-type-selection-basis ràng loại thẩm quyền với nhóm căn cứ. Quy tắc một người bệnh chỉ có một người đại diện tại một thời điểm (Điều 8 khoản 1) CỐ Ý không invariant-hoá: nó cần truy vấn toàn bộ authority đang hiệu lực của cùng người bệnh, việc một instance đơn lẻ không thấy được — thuộc tầng PDP/service.
THAY ĐỔI 0.8.0 (breaking — hậu kiểm toán Codex): sub-extension restrictedSensitivity đã XOÁ — ngữ nghĩa hạn chế truy cập là QUYẾT ĐỊNH CHÍNH SÁCH, không phải thuộc tính token: biểu diễn bằng VNCoreConsent.provision (type=deny + securityLabel theo vn-data-sensitivity-class-vs + actor[representative] gắn chính extension này để link token↔consent — PDP resolve một chiều qua Consent). Căn cứ: Bộ luật Dân sự 2015 (đại diện/giám hộ/uỷ quyền); Luật Căn cước 2023 (quan hệ nhân thân CSDLQGDC); Luật 91/2025/QH15 Điều 24 (đại diện theo pháp luật) + Luật Trẻ em 2016 (dữ liệu trẻ em, lớp nhạy cảm).
Context of Use
This extension may be used on the following element(s)
RelatedPerson
Consent.provision.actor
Consent.provision.provision.actor
Usage info
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: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Extension | Thẩm quyền đại diện truy cập dữ liệu — Representation Authority Extension Constraints: vn-representation-domain-basis, vn-representation-type-selection-basis, vn-representation-proxy-evidence, vn-representation-proxy-bounded |
![]() ![]() |
5..* | Extension | Extension | |
![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() |
S | 1..1 | Extension | Miền thẩm quyền: quyết định KCB hay quyền chủ thể dữ liệu |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "domain" | |
![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Miền thẩm quyền đại diện — Vietnam Representation Authority Domain ValueSet (required) | |
![]() ![]() ![]() |
S | 1..1 | Extension | Loại thẩm quyền (đại diện pháp luật/giám hộ/uỷ quyền/đại diện KCB) |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "type" | |
![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Loại thẩm quyền đại diện — Vietnam Representation Authority Type ValueSet (required) | |
![]() ![]() ![]() |
S | 0..1 | Extension | Căn cứ lựa chọn người đại diện — một trong năm nhóm tại Luật KCB Điều 8 khoản 2 (chỉ miền healthcare-decision) |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "selectionBasis" | |
![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Căn cứ lựa chọn người đại diện — Patient Representative Selection Basis ValueSet (required) | |
![]() ![]() ![]() |
S | 1..1 | Extension | Nguồn xác minh QUAN HỆ (CSDLQGDC/Toà án/công chứng/CSYT khai báo) |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "source" | |
![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Nguồn xác minh thẩm quyền đại diện — Vietnam Representation Verification Source ValueSet (required) | |
![]() ![]() ![]() |
S | 0..* | Extension | Bằng chứng thẩm quyền — lặp được; mỗi mục mang issuer/document/scope/purpose/validity |
![]() ![]() ![]() ![]() |
2..* | Extension | Extension | |
![]() ![]() ![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | Extension | Cơ quan/tổ chức cấp hoặc xác lập bằng chứng |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "issuer" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | Extension | Số hiệu/định danh văn bản bằng chứng |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "document" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | Identifier | Value of extension | |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Số hiệu văn bản — bắt buộc, để tra ngược được | |
![]() ![]() ![]() ![]() ![]() |
S | 0..1 | Extension | Phạm vi được trao trong bằng chứng này |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "scope" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() ![]() ![]() |
S | 0..1 | Extension | Mục đích sử dụng thẩm quyền theo bằng chứng |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "purpose" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | CodeableConcept | Value of extension | |
![]() ![]() ![]() ![]() ![]() |
S | 0..1 | Extension | Thời hạn hiệu lực ghi trong bằng chứng |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "validity" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | Period | Value of extension | |
![]() ![]() ![]() ![]() |
1..1 | uri | "evidence" | |
![]() ![]() ![]() ![]() |
0..0 | Value of extension | ||
![]() ![]() ![]() |
S | 1..1 | Extension | Thời điểm xác minh quan hệ gần nhất |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "verifiedDate" | |
![]() ![]() ![]() ![]() |
1..1 | dateTime | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | Thời hạn hiệu lực của thẩm quyền (PDP hết hạn → deny) |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "period" | |
![]() ![]() ![]() ![]() |
1..1 | Period | Value of extension | |
![]() ![]() ![]() |
S | 1..* | Extension | Văn bản và điều/khoản cụ thể làm căn cứ; lặp cho mỗi provision |
![]() ![]() ![]() ![]() |
2..* | Extension | Extension | |
![]() ![]() ![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | Extension | Văn bản căn cứ (mã trong VNLegalDocumentRefCS) |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "document" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Văn bản pháp lý VN — Vietnam Legal Document Reference VS (required) | |
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | Extension | Điều/khoản/điểm cụ thể trong văn bản đó |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "locator" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() ![]() |
1..1 | uri | "legalProvision" | |
![]() ![]() ![]() ![]() |
0..0 | Value of extension | ||
![]() ![]() |
1..1 | uri | "http://fhir.hl7.org.vn/core/StructureDefinition/vn-ext-representation-authority" | |
![]() ![]() |
0..0 | Value of extension | ||
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Extension.extension:domain.value[x] | Base | required | Miền thẩm quyền đại diện — Vietnam Representation Authority Domain ValueSet | 📦0.10.0 | This IG |
| Extension.extension:type.value[x] | Base | required | Loại thẩm quyền đại diện — Vietnam Representation Authority Type ValueSet | 📦0.10.0 | This IG |
| Extension.extension:selectionBasis.value[x] | Base | required | Căn cứ lựa chọn người đại diện — Patient Representative Selection Basis ValueSet | 📦0.10.0 | This IG |
| Extension.extension:source.value[x] | Base | required | Nguồn xác minh thẩm quyền đại diện — Vietnam Representation Verification Source ValueSet | 📦0.10.0 | This IG |
| Extension.extension:legalProvision.extension:document.value[x] | Base | required | Văn bản pháp lý VN — Vietnam Legal Document Reference VS | 📦0.10.0 | This IG |
| Id | Grade | Path(s) | Description | Expression |
| vn-representation-domain-basis | error | Extension | Miền quyết định khám chữa bệnh bắt buộc có căn cứ lựa chọn theo Luật KCB Điều 8 khoản 2; miền quyền chủ thể dữ liệu không dùng trục căn cứ đó. The healthcare-decision domain SHALL carry a selectionBasis; the data-subject-rights domain SHALL NOT. |
(extension.where(url='domain').value.ofType(Coding).code = 'healthcare-decision' implies extension.where(url='selectionBasis').exists()) and (extension.where(url='domain').value.ofType(Coding).code = 'data-subject-rights' implies extension.where(url='selectionBasis').empty())
|
| vn-representation-proxy-bounded | error | Extension | Thẩm quyền theo uỷ quyền phải có GIỚI HẠN máy-đọc: NGÀY KẾT THÚC (period.end của token hoặc validity.end trong bằng chứng — chỉ có ngày bắt đầu là uỷ quyền vô thời hạn) VÀ phạm vi (scope trong ít nhất một bằng chứng) — Bộ luật Dân sự Điều 138/140/141. A delegated-proxy authority SHALL carry a machine-readable validity bound AND scope. |
extension.where(url='type').value.ofType(Coding).code != 'delegated-proxy' or ((extension.where(url='period').value.ofType(Period).end.exists() or extension.where(url='evidence').extension.where(url='validity').value.ofType(Period).end.exists()) and extension.where(url='evidence').extension.where(url='scope').exists())
|
| vn-representation-proxy-evidence | error | Extension | Thẩm quyền theo uỷ quyền phải kèm ít nhất một bằng chứng (văn bản uỷ quyền). A delegated-proxy authority SHALL carry at least one evidence entry. |
extension.where(url='type').value.ofType(Coding).code = 'delegated-proxy' implies extension.where(url='evidence').exists()
|
| vn-representation-type-selection-basis | error | Extension | Loại thẩm quyền phải tương thích với nhóm căn cứ lựa chọn tại Luật KCB Điều 8 khoản 2. The authority type SHALL be consistent with the statutory selection basis. |
extension.where(url='selectionBasis').empty() or ((extension.where(url='selectionBasis').value.ofType(Coding).code = 'civil-code-representative') and (extension.where(url='type').value.ofType(Coding).code = 'legal-representative' or extension.where(url='type').value.ofType(Coding).code = 'guardian' or extension.where(url='type').value.ofType(Coding).code = 'delegated-proxy')) or ((extension.where(url='selectionBasis').value.ofType(Coding).code = 'responsible-legal-entity-appointed') and (extension.where(url='type').value.ofType(Coding).code = 'legal-representative' or extension.where(url='type').value.ofType(Coding).code = 'healthcare-agent')) or ((extension.where(url='selectionBasis').value.ofType(Coding).code = 'adult-patient-selected' or extension.where(url='selectionBasis').value.ofType(Coding).code = 'family-selected' or extension.where(url='selectionBasis').value.ofType(Coding).code = 'voluntary-obligation-performer') and extension.where(url='type').value.ofType(Coding).code = 'healthcare-agent')
|
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Extension | Thẩm quyền đại diện truy cập dữ liệu — Representation Authority Extension Constraints: vn-representation-domain-basis, vn-representation-type-selection-basis, vn-representation-proxy-evidence, vn-representation-proxy-bounded |
![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() |
5..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
S | 1..1 | Extension | Miền thẩm quyền: quyết định KCB hay quyền chủ thể dữ liệu |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "domain" | |
![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Miền thẩm quyền đại diện — Vietnam Representation Authority Domain ValueSet (required) | |
![]() ![]() ![]() |
S | 1..1 | Extension | Loại thẩm quyền (đại diện pháp luật/giám hộ/uỷ quyền/đại diện KCB) |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "type" | |
![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Loại thẩm quyền đại diện — Vietnam Representation Authority Type ValueSet (required) | |
![]() ![]() ![]() |
S | 0..1 | Extension | Căn cứ lựa chọn người đại diện — một trong năm nhóm tại Luật KCB Điều 8 khoản 2 (chỉ miền healthcare-decision) |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "selectionBasis" | |
![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Căn cứ lựa chọn người đại diện — Patient Representative Selection Basis ValueSet (required) | |
![]() ![]() ![]() |
S | 1..1 | Extension | Nguồn xác minh QUAN HỆ (CSDLQGDC/Toà án/công chứng/CSYT khai báo) |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "source" | |
![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Nguồn xác minh thẩm quyền đại diện — Vietnam Representation Verification Source ValueSet (required) | |
![]() ![]() ![]() |
S | 0..* | Extension | Bằng chứng thẩm quyền — lặp được; mỗi mục mang issuer/document/scope/purpose/validity |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
2..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | Extension | Cơ quan/tổ chức cấp hoặc xác lập bằng chứng |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "issuer" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | Extension | Số hiệu/định danh văn bản bằng chứng |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "document" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | Identifier | Value of extension | |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
?!Σ | 0..1 | code | usual | official | temp | secondary | old (If known) Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known . |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | CodeableConcept | Description of identifier Binding: Identifier Type Codes (extensible): A coded type for an identifier that can be used to determine which identifier to use for a specific purpose. |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | uri | The namespace for the identifier value Example General: http://www.acme.com/identifiers/patient |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | string | Số hiệu văn bản — bắt buộc, để tra ngược được Example General: 123456 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | Period | Time period when id is/was valid for use |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | Reference(Organization) | Organization that issued id (may be just text) |
![]() ![]() ![]() ![]() ![]() |
S | 0..1 | Extension | Phạm vi được trao trong bằng chứng này |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "scope" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() ![]() ![]() |
S | 0..1 | Extension | Mục đích sử dụng thẩm quyền theo bằng chứng |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "purpose" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | CodeableConcept | Value of extension | |
![]() ![]() ![]() ![]() ![]() |
S | 0..1 | Extension | Thời hạn hiệu lực ghi trong bằng chứng |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "validity" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | Period | Value of extension | |
![]() ![]() ![]() ![]() |
1..1 | uri | "evidence" | |
![]() ![]() ![]() |
S | 1..1 | Extension | Thời điểm xác minh quan hệ gần nhất |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "verifiedDate" | |
![]() ![]() ![]() ![]() |
1..1 | dateTime | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | Thời hạn hiệu lực của thẩm quyền (PDP hết hạn → deny) |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "period" | |
![]() ![]() ![]() ![]() |
1..1 | Period | Value of extension | |
![]() ![]() ![]() |
S | 1..* | Extension | Văn bản và điều/khoản cụ thể làm căn cứ; lặp cho mỗi provision |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
2..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | Extension | Văn bản căn cứ (mã trong VNLegalDocumentRefCS) |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "document" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Văn bản pháp lý VN — Vietnam Legal Document Reference VS (required) | |
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | Extension | Điều/khoản/điểm cụ thể trong văn bản đó |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "locator" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() ![]() |
1..1 | uri | "legalProvision" | |
![]() ![]() |
1..1 | uri | "http://fhir.hl7.org.vn/core/StructureDefinition/vn-ext-representation-authority" | |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Extension.extension:domain.value[x] | Base | required | Miền thẩm quyền đại diện — Vietnam Representation Authority Domain ValueSet | 📦0.10.0 | This IG |
| Extension.extension:type.value[x] | Base | required | Loại thẩm quyền đại diện — Vietnam Representation Authority Type ValueSet | 📦0.10.0 | This IG |
| Extension.extension:selectionBasis.value[x] | Base | required | Căn cứ lựa chọn người đại diện — Patient Representative Selection Basis ValueSet | 📦0.10.0 | This IG |
| Extension.extension:source.value[x] | Base | required | Nguồn xác minh thẩm quyền đại diện — Vietnam Representation Verification Source ValueSet | 📦0.10.0 | This IG |
| Extension.extension:evidence.extension:document.value[x].use | Base | required | IdentifierUse | 📍4.0.1 | FHIR Std. |
| Extension.extension:evidence.extension:document.value[x].type | Base | extensible | IdentifierType | 📍4.0.1 | FHIR Std. |
| Extension.extension:legalProvision.extension:document.value[x] | Base | required | Văn bản pháp lý VN — Vietnam Legal Document Reference VS | 📦0.10.0 | This IG |
| 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()
|
| vn-representation-domain-basis | error | Extension | Miền quyết định khám chữa bệnh bắt buộc có căn cứ lựa chọn theo Luật KCB Điều 8 khoản 2; miền quyền chủ thể dữ liệu không dùng trục căn cứ đó. The healthcare-decision domain SHALL carry a selectionBasis; the data-subject-rights domain SHALL NOT. |
(extension.where(url='domain').value.ofType(Coding).code = 'healthcare-decision' implies extension.where(url='selectionBasis').exists()) and (extension.where(url='domain').value.ofType(Coding).code = 'data-subject-rights' implies extension.where(url='selectionBasis').empty())
|
| vn-representation-proxy-bounded | error | Extension | Thẩm quyền theo uỷ quyền phải có GIỚI HẠN máy-đọc: NGÀY KẾT THÚC (period.end của token hoặc validity.end trong bằng chứng — chỉ có ngày bắt đầu là uỷ quyền vô thời hạn) VÀ phạm vi (scope trong ít nhất một bằng chứng) — Bộ luật Dân sự Điều 138/140/141. A delegated-proxy authority SHALL carry a machine-readable validity bound AND scope. |
extension.where(url='type').value.ofType(Coding).code != 'delegated-proxy' or ((extension.where(url='period').value.ofType(Period).end.exists() or extension.where(url='evidence').extension.where(url='validity').value.ofType(Period).end.exists()) and extension.where(url='evidence').extension.where(url='scope').exists())
|
| vn-representation-proxy-evidence | error | Extension | Thẩm quyền theo uỷ quyền phải kèm ít nhất một bằng chứng (văn bản uỷ quyền). A delegated-proxy authority SHALL carry at least one evidence entry. |
extension.where(url='type').value.ofType(Coding).code = 'delegated-proxy' implies extension.where(url='evidence').exists()
|
| vn-representation-type-selection-basis | error | Extension | Loại thẩm quyền phải tương thích với nhóm căn cứ lựa chọn tại Luật KCB Điều 8 khoản 2. The authority type SHALL be consistent with the statutory selection basis. |
extension.where(url='selectionBasis').empty() or ((extension.where(url='selectionBasis').value.ofType(Coding).code = 'civil-code-representative') and (extension.where(url='type').value.ofType(Coding).code = 'legal-representative' or extension.where(url='type').value.ofType(Coding).code = 'guardian' or extension.where(url='type').value.ofType(Coding).code = 'delegated-proxy')) or ((extension.where(url='selectionBasis').value.ofType(Coding).code = 'responsible-legal-entity-appointed') and (extension.where(url='type').value.ofType(Coding).code = 'legal-representative' or extension.where(url='type').value.ofType(Coding).code = 'healthcare-agent')) or ((extension.where(url='selectionBasis').value.ofType(Coding).code = 'adult-patient-selected' or extension.where(url='selectionBasis').value.ofType(Coding).code = 'family-selected' or extension.where(url='selectionBasis').value.ofType(Coding).code = 'voluntary-obligation-performer') and extension.where(url='type').value.ofType(Coding).code = 'healthcare-agent')
|
Summary
Complex Extension: Extension ghi nhận THẨM QUYỀN PHÁP LÝ để một người đại diện/giám hộ/được uỷ quyền hành động thay người khác. Mô hình hoá 'token đại diện' phục vụ Policy Decision Point (PDP): miền thẩm quyền, loại thẩm quyền, nguồn xác minh, bằng chứng, thời điểm xác minh, thời hạn. PDP deny-by-default khi quan hệ mâu thuẫn/hết hạn.
THAY ĐỔI 0.10.0 đợt 2 (breaking — kiểm toán 06-07/08/2026, analysis/90 §6.2): tách HAI MIỀN thẩm quyền bằng domain 1..1, vì hai loại quyền không đồng nhất và không suy ra nhau:
(1) healthcare-decision — quyết định thay về khám chữa bệnh (Luật KCB 15/2023/QH15 Điều 8);
(2) data-subject-rights — thực hiện quyền chủ thể dữ liệu thay chủ thể: đồng ý, truy cập, chỉnh sửa, xoá dữ liệu (Luật 91/2025/QH15 Điều 24; Bộ luật Dân sự Điều 134-143) — vd cha/mẹ xem Sổ SKĐT của con qua VNeID.
Một người giữ cả hai quyền = HAI instance extension, mỗi instance một miền với căn cứ, bằng chứng, thời hạn riêng. selectionBasis hạ 1..1 → 0..1: nó là khung của Luật KCB Điều 8 khoản 2 nên bắt buộc trong miền healthcare-decision và phải vắng trong miền data-subject-rights (invariant vn-representation-domain-basis). Thêm evidence 0..* — bằng chứng lặp được mang issuer/document/scope/purpose/validity; quan hệ gia đình hoặc bản ghi quan hệ dân cư KHÔNG tự chứng minh thẩm quyền (uỷ quyền bắt buộc có evidence — invariant vn-representation-proxy-evidence).
THAY ĐỔI 0.10.0 đợt 1 (breaking): thêm selectionBasis — một trong năm nhóm căn cứ lựa chọn tại Luật KCB 15/2023/QH15 Điều 8 khoản 2 điểm a-đ; thêm legalProvision 1..* để ghi văn bản và điều/khoản cụ thể, cho phép lặp vì một thẩm quyền thường dựa trên nhiều quy định đồng thời; nâng verifiedDate từ 0..1 lên 1..1. Kèm invariant vn-representation-type-selection-basis ràng loại thẩm quyền với nhóm căn cứ. Quy tắc một người bệnh chỉ có một người đại diện tại một thời điểm (Điều 8 khoản 1) CỐ Ý không invariant-hoá: nó cần truy vấn toàn bộ authority đang hiệu lực của cùng người bệnh, việc một instance đơn lẻ không thấy được — thuộc tầng PDP/service.
THAY ĐỔI 0.8.0 (breaking — hậu kiểm toán Codex): sub-extension restrictedSensitivity đã XOÁ —
ngữ nghĩa hạn chế truy cập là QUYẾT ĐỊNH CHÍNH SÁCH, không phải thuộc tính token: biểu diễn bằng
VNCoreConsent.provision (type=deny + securityLabel theo vn-data-sensitivity-class-vs + actor[representative]
gắn chính extension này để link token↔consent — PDP resolve một chiều qua Consent).
Căn cứ: Bộ luật Dân sự 2015 (đại diện/giám hộ/uỷ quyền); Luật Căn cước 2023 (quan hệ nhân thân CSDLQGDC); Luật 91/2025/QH15 Điều 24 (đại diện theo pháp luật) + Luật Trẻ em 2016 (dữ liệu trẻ em, lớp nhạy cảm).
type (loại thẩm quyền) và source (nguồn xác minh quan hệ). Năm nhóm lấy đúng điểm a-đ Điều 8 khoản 2 Luật 15/2023/QH15 — là khung của miền healthcare-decision: bắt buộc trong miền đó, phải vắng trong miền data-subject-rights (invariant vn-representation-domain-basis; căn cứ của miền dữ liệu ghi ở legalProvision). Điều khoản chi tiết ghi ở legalProvision, cho phép lặp vì một thẩm quyền thường dựa trên nhiều quy định đồng thời.Dạng xem DifferentialDifferential View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Extension | Thẩm quyền đại diện truy cập dữ liệu — Representation Authority Extension Constraints: vn-representation-domain-basis, vn-representation-type-selection-basis, vn-representation-proxy-evidence, vn-representation-proxy-bounded |
![]() ![]() |
5..* | Extension | Extension | |
![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() |
S | 1..1 | Extension | Miền thẩm quyền: quyết định KCB hay quyền chủ thể dữ liệu |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "domain" | |
![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Miền thẩm quyền đại diện — Vietnam Representation Authority Domain ValueSet (required) | |
![]() ![]() ![]() |
S | 1..1 | Extension | Loại thẩm quyền (đại diện pháp luật/giám hộ/uỷ quyền/đại diện KCB) |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "type" | |
![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Loại thẩm quyền đại diện — Vietnam Representation Authority Type ValueSet (required) | |
![]() ![]() ![]() |
S | 0..1 | Extension | Căn cứ lựa chọn người đại diện — một trong năm nhóm tại Luật KCB Điều 8 khoản 2 (chỉ miền healthcare-decision) |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "selectionBasis" | |
![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Căn cứ lựa chọn người đại diện — Patient Representative Selection Basis ValueSet (required) | |
![]() ![]() ![]() |
S | 1..1 | Extension | Nguồn xác minh QUAN HỆ (CSDLQGDC/Toà án/công chứng/CSYT khai báo) |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "source" | |
![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Nguồn xác minh thẩm quyền đại diện — Vietnam Representation Verification Source ValueSet (required) | |
![]() ![]() ![]() |
S | 0..* | Extension | Bằng chứng thẩm quyền — lặp được; mỗi mục mang issuer/document/scope/purpose/validity |
![]() ![]() ![]() ![]() |
2..* | Extension | Extension | |
![]() ![]() ![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | Extension | Cơ quan/tổ chức cấp hoặc xác lập bằng chứng |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "issuer" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | Extension | Số hiệu/định danh văn bản bằng chứng |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "document" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | Identifier | Value of extension | |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Số hiệu văn bản — bắt buộc, để tra ngược được | |
![]() ![]() ![]() ![]() ![]() |
S | 0..1 | Extension | Phạm vi được trao trong bằng chứng này |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "scope" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() ![]() ![]() |
S | 0..1 | Extension | Mục đích sử dụng thẩm quyền theo bằng chứng |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "purpose" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | CodeableConcept | Value of extension | |
![]() ![]() ![]() ![]() ![]() |
S | 0..1 | Extension | Thời hạn hiệu lực ghi trong bằng chứng |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "validity" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | Period | Value of extension | |
![]() ![]() ![]() ![]() |
1..1 | uri | "evidence" | |
![]() ![]() ![]() ![]() |
0..0 | Value of extension | ||
![]() ![]() ![]() |
S | 1..1 | Extension | Thời điểm xác minh quan hệ gần nhất |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "verifiedDate" | |
![]() ![]() ![]() ![]() |
1..1 | dateTime | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | Thời hạn hiệu lực của thẩm quyền (PDP hết hạn → deny) |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "period" | |
![]() ![]() ![]() ![]() |
1..1 | Period | Value of extension | |
![]() ![]() ![]() |
S | 1..* | Extension | Văn bản và điều/khoản cụ thể làm căn cứ; lặp cho mỗi provision |
![]() ![]() ![]() ![]() |
2..* | Extension | Extension | |
![]() ![]() ![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | Extension | Văn bản căn cứ (mã trong VNLegalDocumentRefCS) |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "document" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Văn bản pháp lý VN — Vietnam Legal Document Reference VS (required) | |
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | Extension | Điều/khoản/điểm cụ thể trong văn bản đó |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "locator" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() ![]() |
1..1 | uri | "legalProvision" | |
![]() ![]() ![]() ![]() |
0..0 | Value of extension | ||
![]() ![]() |
1..1 | uri | "http://fhir.hl7.org.vn/core/StructureDefinition/vn-ext-representation-authority" | |
![]() ![]() |
0..0 | Value of extension | ||
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Extension.extension:domain.value[x] | Base | required | Miền thẩm quyền đại diện — Vietnam Representation Authority Domain ValueSet | 📦0.10.0 | This IG |
| Extension.extension:type.value[x] | Base | required | Loại thẩm quyền đại diện — Vietnam Representation Authority Type ValueSet | 📦0.10.0 | This IG |
| Extension.extension:selectionBasis.value[x] | Base | required | Căn cứ lựa chọn người đại diện — Patient Representative Selection Basis ValueSet | 📦0.10.0 | This IG |
| Extension.extension:source.value[x] | Base | required | Nguồn xác minh thẩm quyền đại diện — Vietnam Representation Verification Source ValueSet | 📦0.10.0 | This IG |
| Extension.extension:legalProvision.extension:document.value[x] | Base | required | Văn bản pháp lý VN — Vietnam Legal Document Reference VS | 📦0.10.0 | This IG |
| Id | Grade | Path(s) | Description | Expression |
| vn-representation-domain-basis | error | Extension | Miền quyết định khám chữa bệnh bắt buộc có căn cứ lựa chọn theo Luật KCB Điều 8 khoản 2; miền quyền chủ thể dữ liệu không dùng trục căn cứ đó. The healthcare-decision domain SHALL carry a selectionBasis; the data-subject-rights domain SHALL NOT. |
(extension.where(url='domain').value.ofType(Coding).code = 'healthcare-decision' implies extension.where(url='selectionBasis').exists()) and (extension.where(url='domain').value.ofType(Coding).code = 'data-subject-rights' implies extension.where(url='selectionBasis').empty())
|
| vn-representation-proxy-bounded | error | Extension | Thẩm quyền theo uỷ quyền phải có GIỚI HẠN máy-đọc: NGÀY KẾT THÚC (period.end của token hoặc validity.end trong bằng chứng — chỉ có ngày bắt đầu là uỷ quyền vô thời hạn) VÀ phạm vi (scope trong ít nhất một bằng chứng) — Bộ luật Dân sự Điều 138/140/141. A delegated-proxy authority SHALL carry a machine-readable validity bound AND scope. |
extension.where(url='type').value.ofType(Coding).code != 'delegated-proxy' or ((extension.where(url='period').value.ofType(Period).end.exists() or extension.where(url='evidence').extension.where(url='validity').value.ofType(Period).end.exists()) and extension.where(url='evidence').extension.where(url='scope').exists())
|
| vn-representation-proxy-evidence | error | Extension | Thẩm quyền theo uỷ quyền phải kèm ít nhất một bằng chứng (văn bản uỷ quyền). A delegated-proxy authority SHALL carry at least one evidence entry. |
extension.where(url='type').value.ofType(Coding).code = 'delegated-proxy' implies extension.where(url='evidence').exists()
|
| vn-representation-type-selection-basis | error | Extension | Loại thẩm quyền phải tương thích với nhóm căn cứ lựa chọn tại Luật KCB Điều 8 khoản 2. The authority type SHALL be consistent with the statutory selection basis. |
extension.where(url='selectionBasis').empty() or ((extension.where(url='selectionBasis').value.ofType(Coding).code = 'civil-code-representative') and (extension.where(url='type').value.ofType(Coding).code = 'legal-representative' or extension.where(url='type').value.ofType(Coding).code = 'guardian' or extension.where(url='type').value.ofType(Coding).code = 'delegated-proxy')) or ((extension.where(url='selectionBasis').value.ofType(Coding).code = 'responsible-legal-entity-appointed') and (extension.where(url='type').value.ofType(Coding).code = 'legal-representative' or extension.where(url='type').value.ofType(Coding).code = 'healthcare-agent')) or ((extension.where(url='selectionBasis').value.ofType(Coding).code = 'adult-patient-selected' or extension.where(url='selectionBasis').value.ofType(Coding).code = 'family-selected' or extension.where(url='selectionBasis').value.ofType(Coding).code = 'voluntary-obligation-performer') and extension.where(url='type').value.ofType(Coding).code = 'healthcare-agent')
|
Dạng xem Snapshot
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Extension | Thẩm quyền đại diện truy cập dữ liệu — Representation Authority Extension Constraints: vn-representation-domain-basis, vn-representation-type-selection-basis, vn-representation-proxy-evidence, vn-representation-proxy-bounded |
![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() |
5..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
S | 1..1 | Extension | Miền thẩm quyền: quyết định KCB hay quyền chủ thể dữ liệu |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "domain" | |
![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Miền thẩm quyền đại diện — Vietnam Representation Authority Domain ValueSet (required) | |
![]() ![]() ![]() |
S | 1..1 | Extension | Loại thẩm quyền (đại diện pháp luật/giám hộ/uỷ quyền/đại diện KCB) |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "type" | |
![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Loại thẩm quyền đại diện — Vietnam Representation Authority Type ValueSet (required) | |
![]() ![]() ![]() |
S | 0..1 | Extension | Căn cứ lựa chọn người đại diện — một trong năm nhóm tại Luật KCB Điều 8 khoản 2 (chỉ miền healthcare-decision) |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "selectionBasis" | |
![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Căn cứ lựa chọn người đại diện — Patient Representative Selection Basis ValueSet (required) | |
![]() ![]() ![]() |
S | 1..1 | Extension | Nguồn xác minh QUAN HỆ (CSDLQGDC/Toà án/công chứng/CSYT khai báo) |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "source" | |
![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Nguồn xác minh thẩm quyền đại diện — Vietnam Representation Verification Source ValueSet (required) | |
![]() ![]() ![]() |
S | 0..* | Extension | Bằng chứng thẩm quyền — lặp được; mỗi mục mang issuer/document/scope/purpose/validity |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
2..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | Extension | Cơ quan/tổ chức cấp hoặc xác lập bằng chứng |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "issuer" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | Extension | Số hiệu/định danh văn bản bằng chứng |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "document" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | Identifier | Value of extension | |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
?!Σ | 0..1 | code | usual | official | temp | secondary | old (If known) Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known . |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | CodeableConcept | Description of identifier Binding: Identifier Type Codes (extensible): A coded type for an identifier that can be used to determine which identifier to use for a specific purpose. |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | uri | The namespace for the identifier value Example General: http://www.acme.com/identifiers/patient |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | string | Số hiệu văn bản — bắt buộc, để tra ngược được Example General: 123456 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | Period | Time period when id is/was valid for use |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | Reference(Organization) | Organization that issued id (may be just text) |
![]() ![]() ![]() ![]() ![]() |
S | 0..1 | Extension | Phạm vi được trao trong bằng chứng này |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "scope" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() ![]() ![]() |
S | 0..1 | Extension | Mục đích sử dụng thẩm quyền theo bằng chứng |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "purpose" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | CodeableConcept | Value of extension | |
![]() ![]() ![]() ![]() ![]() |
S | 0..1 | Extension | Thời hạn hiệu lực ghi trong bằng chứng |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "validity" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | Period | Value of extension | |
![]() ![]() ![]() ![]() |
1..1 | uri | "evidence" | |
![]() ![]() ![]() |
S | 1..1 | Extension | Thời điểm xác minh quan hệ gần nhất |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "verifiedDate" | |
![]() ![]() ![]() ![]() |
1..1 | dateTime | Value of extension | |
![]() ![]() ![]() |
S | 0..1 | Extension | Thời hạn hiệu lực của thẩm quyền (PDP hết hạn → deny) |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "period" | |
![]() ![]() ![]() ![]() |
1..1 | Period | Value of extension | |
![]() ![]() ![]() |
S | 1..* | Extension | Văn bản và điều/khoản cụ thể làm căn cứ; lặp cho mỗi provision |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
2..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | Extension | Văn bản căn cứ (mã trong VNLegalDocumentRefCS) |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "document" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | Coding | Value of extension Binding: Văn bản pháp lý VN — Vietnam Legal Document Reference VS (required) | |
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | Extension | Điều/khoản/điểm cụ thể trong văn bản đó |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | "locator" | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() ![]() |
1..1 | uri | "legalProvision" | |
![]() ![]() |
1..1 | uri | "http://fhir.hl7.org.vn/core/StructureDefinition/vn-ext-representation-authority" | |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Extension.extension:domain.value[x] | Base | required | Miền thẩm quyền đại diện — Vietnam Representation Authority Domain ValueSet | 📦0.10.0 | This IG |
| Extension.extension:type.value[x] | Base | required | Loại thẩm quyền đại diện — Vietnam Representation Authority Type ValueSet | 📦0.10.0 | This IG |
| Extension.extension:selectionBasis.value[x] | Base | required | Căn cứ lựa chọn người đại diện — Patient Representative Selection Basis ValueSet | 📦0.10.0 | This IG |
| Extension.extension:source.value[x] | Base | required | Nguồn xác minh thẩm quyền đại diện — Vietnam Representation Verification Source ValueSet | 📦0.10.0 | This IG |
| Extension.extension:evidence.extension:document.value[x].use | Base | required | IdentifierUse | 📍4.0.1 | FHIR Std. |
| Extension.extension:evidence.extension:document.value[x].type | Base | extensible | IdentifierType | 📍4.0.1 | FHIR Std. |
| Extension.extension:legalProvision.extension:document.value[x] | Base | required | Văn bản pháp lý VN — Vietnam Legal Document Reference VS | 📦0.10.0 | This IG |
| 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()
|
| vn-representation-domain-basis | error | Extension | Miền quyết định khám chữa bệnh bắt buộc có căn cứ lựa chọn theo Luật KCB Điều 8 khoản 2; miền quyền chủ thể dữ liệu không dùng trục căn cứ đó. The healthcare-decision domain SHALL carry a selectionBasis; the data-subject-rights domain SHALL NOT. |
(extension.where(url='domain').value.ofType(Coding).code = 'healthcare-decision' implies extension.where(url='selectionBasis').exists()) and (extension.where(url='domain').value.ofType(Coding).code = 'data-subject-rights' implies extension.where(url='selectionBasis').empty())
|
| vn-representation-proxy-bounded | error | Extension | Thẩm quyền theo uỷ quyền phải có GIỚI HẠN máy-đọc: NGÀY KẾT THÚC (period.end của token hoặc validity.end trong bằng chứng — chỉ có ngày bắt đầu là uỷ quyền vô thời hạn) VÀ phạm vi (scope trong ít nhất một bằng chứng) — Bộ luật Dân sự Điều 138/140/141. A delegated-proxy authority SHALL carry a machine-readable validity bound AND scope. |
extension.where(url='type').value.ofType(Coding).code != 'delegated-proxy' or ((extension.where(url='period').value.ofType(Period).end.exists() or extension.where(url='evidence').extension.where(url='validity').value.ofType(Period).end.exists()) and extension.where(url='evidence').extension.where(url='scope').exists())
|
| vn-representation-proxy-evidence | error | Extension | Thẩm quyền theo uỷ quyền phải kèm ít nhất một bằng chứng (văn bản uỷ quyền). A delegated-proxy authority SHALL carry at least one evidence entry. |
extension.where(url='type').value.ofType(Coding).code = 'delegated-proxy' implies extension.where(url='evidence').exists()
|
| vn-representation-type-selection-basis | error | Extension | Loại thẩm quyền phải tương thích với nhóm căn cứ lựa chọn tại Luật KCB Điều 8 khoản 2. The authority type SHALL be consistent with the statutory selection basis. |
extension.where(url='selectionBasis').empty() or ((extension.where(url='selectionBasis').value.ofType(Coding).code = 'civil-code-representative') and (extension.where(url='type').value.ofType(Coding).code = 'legal-representative' or extension.where(url='type').value.ofType(Coding).code = 'guardian' or extension.where(url='type').value.ofType(Coding).code = 'delegated-proxy')) or ((extension.where(url='selectionBasis').value.ofType(Coding).code = 'responsible-legal-entity-appointed') and (extension.where(url='type').value.ofType(Coding).code = 'legal-representative' or extension.where(url='type').value.ofType(Coding).code = 'healthcare-agent')) or ((extension.where(url='selectionBasis').value.ofType(Coding).code = 'adult-patient-selected' or extension.where(url='selectionBasis').value.ofType(Coding).code = 'family-selected' or extension.where(url='selectionBasis').value.ofType(Coding).code = 'voluntary-obligation-performer') and extension.where(url='type').value.ofType(Coding).code = 'healthcare-agent')
|
Summary
Complex Extension: Extension ghi nhận THẨM QUYỀN PHÁP LÝ để một người đại diện/giám hộ/được uỷ quyền hành động thay người khác. Mô hình hoá 'token đại diện' phục vụ Policy Decision Point (PDP): miền thẩm quyền, loại thẩm quyền, nguồn xác minh, bằng chứng, thời điểm xác minh, thời hạn. PDP deny-by-default khi quan hệ mâu thuẫn/hết hạn.
THAY ĐỔI 0.10.0 đợt 2 (breaking — kiểm toán 06-07/08/2026, analysis/90 §6.2): tách HAI MIỀN thẩm quyền bằng domain 1..1, vì hai loại quyền không đồng nhất và không suy ra nhau:
(1) healthcare-decision — quyết định thay về khám chữa bệnh (Luật KCB 15/2023/QH15 Điều 8);
(2) data-subject-rights — thực hiện quyền chủ thể dữ liệu thay chủ thể: đồng ý, truy cập, chỉnh sửa, xoá dữ liệu (Luật 91/2025/QH15 Điều 24; Bộ luật Dân sự Điều 134-143) — vd cha/mẹ xem Sổ SKĐT của con qua VNeID.
Một người giữ cả hai quyền = HAI instance extension, mỗi instance một miền với căn cứ, bằng chứng, thời hạn riêng. selectionBasis hạ 1..1 → 0..1: nó là khung của Luật KCB Điều 8 khoản 2 nên bắt buộc trong miền healthcare-decision và phải vắng trong miền data-subject-rights (invariant vn-representation-domain-basis). Thêm evidence 0..* — bằng chứng lặp được mang issuer/document/scope/purpose/validity; quan hệ gia đình hoặc bản ghi quan hệ dân cư KHÔNG tự chứng minh thẩm quyền (uỷ quyền bắt buộc có evidence — invariant vn-representation-proxy-evidence).
THAY ĐỔI 0.10.0 đợt 1 (breaking): thêm selectionBasis — một trong năm nhóm căn cứ lựa chọn tại Luật KCB 15/2023/QH15 Điều 8 khoản 2 điểm a-đ; thêm legalProvision 1..* để ghi văn bản và điều/khoản cụ thể, cho phép lặp vì một thẩm quyền thường dựa trên nhiều quy định đồng thời; nâng verifiedDate từ 0..1 lên 1..1. Kèm invariant vn-representation-type-selection-basis ràng loại thẩm quyền với nhóm căn cứ. Quy tắc một người bệnh chỉ có một người đại diện tại một thời điểm (Điều 8 khoản 1) CỐ Ý không invariant-hoá: nó cần truy vấn toàn bộ authority đang hiệu lực của cùng người bệnh, việc một instance đơn lẻ không thấy được — thuộc tầng PDP/service.
THAY ĐỔI 0.8.0 (breaking — hậu kiểm toán Codex): sub-extension restrictedSensitivity đã XOÁ —
ngữ nghĩa hạn chế truy cập là QUYẾT ĐỊNH CHÍNH SÁCH, không phải thuộc tính token: biểu diễn bằng
VNCoreConsent.provision (type=deny + securityLabel theo vn-data-sensitivity-class-vs + actor[representative]
gắn chính extension này để link token↔consent — PDP resolve một chiều qua Consent).
Căn cứ: Bộ luật Dân sự 2015 (đại diện/giám hộ/uỷ quyền); Luật Căn cước 2023 (quan hệ nhân thân CSDLQGDC); Luật 91/2025/QH15 Điều 24 (đại diện theo pháp luật) + Luật Trẻ em 2016 (dữ liệu trẻ em, lớp nhạy cảm).
type (loại thẩm quyền) và source (nguồn xác minh quan hệ). Năm nhóm lấy đúng điểm a-đ Điều 8 khoản 2 Luật 15/2023/QH15 — là khung của miền healthcare-decision: bắt buộc trong miền đó, phải vắng trong miền data-subject-rights (invariant vn-representation-domain-basis; căn cứ của miền dữ liệu ghi ở legalProvision). Điều khoản chi tiết ghi ở legalProvision, cho phép lặp vì một thẩm quyền thường dựa trên nhiều quy định đồng thời.
Biểu diễn khác của hồ sơ: CSV, Excel, Schematron