HL7 Vietnam VN Core FHIR Implementation Guide

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

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

Phần mở rộng: Thẩm quyền đại diện truy cập dữ liệu — Representation Authority Extension

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

Usage info

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 phần mở rộng

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Extension 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
... extension 5..* Extension Extension
... Slices for extension Content/Rules for all slices
.... extension:domain S 1..1 Extension Miền thẩm quyền: quyết định KCB hay quyền chủ thể dữ liệu
..... extension 0..0 Extension
..... url 1..1 uri "domain"
..... value[x] 1..1 Coding Value of extension
Binding: Miền thẩm quyền đại diện — Vietnam Representation Authority Domain ValueSet (required)
.... extension:type 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)
..... extension 0..0 Extension
..... url 1..1 uri "type"
..... value[x] 1..1 Coding Value of extension
Binding: Loại thẩm quyền đại diện — Vietnam Representation Authority Type ValueSet (required)
.... extension:selectionBasis 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)
..... extension 0..0 Extension
..... url 1..1 uri "selectionBasis"
..... value[x] 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)
.... extension:source S 1..1 Extension Nguồn xác minh QUAN HỆ (CSDLQGDC/Toà án/công chứng/CSYT khai báo)
..... extension 0..0 Extension
..... url 1..1 uri "source"
..... value[x] 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)
.... extension:evidence S 0..* Extension Bằng chứng thẩm quyền — lặp được; mỗi mục mang issuer/document/scope/purpose/validity
..... extension 2..* Extension Extension
..... Slices for extension Content/Rules for all slices
...... extension:issuer S 1..1 Extension Cơ quan/tổ chức cấp hoặc xác lập bằng chứng
....... extension 0..0 Extension
....... url 1..1 uri "issuer"
....... value[x] 1..1 string Value of extension
...... extension:document S 1..1 Extension Số hiệu/định danh văn bản bằng chứng
....... extension 0..0 Extension
....... url 1..1 uri "document"
....... value[x] 1..1 Identifier Value of extension
........ value 1..1 string Số hiệu văn bản — bắt buộc, để tra ngược được
...... extension:scope S 0..1 Extension Phạm vi được trao trong bằng chứng này
....... extension 0..0 Extension
....... url 1..1 uri "scope"
....... value[x] 1..1 string Value of extension
...... extension:purpose S 0..1 Extension Mục đích sử dụng thẩm quyền theo bằng chứng
....... extension 0..0 Extension
....... url 1..1 uri "purpose"
....... value[x] 1..1 CodeableConcept Value of extension
...... extension:validity S 0..1 Extension Thời hạn hiệu lực ghi trong bằng chứng
....... extension 0..0 Extension
....... url 1..1 uri "validity"
....... value[x] 1..1 Period Value of extension
..... url 1..1 uri "evidence"
..... value[x] 0..0 Value of extension
.... extension:verifiedDate S 1..1 Extension Thời điểm xác minh quan hệ gần nhất
..... extension 0..0 Extension
..... url 1..1 uri "verifiedDate"
..... value[x] 1..1 dateTime Value of extension
.... extension:period S 0..1 Extension Thời hạn hiệu lực của thẩm quyền (PDP hết hạn → deny)
..... extension 0..0 Extension
..... url 1..1 uri "period"
..... value[x] 1..1 Period Value of extension
.... extension:legalProvision 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
..... extension 2..* Extension Extension
..... Slices for extension Content/Rules for all slices
...... extension:document S 1..1 Extension Văn bản căn cứ (mã trong VNLegalDocumentRefCS)
....... extension 0..0 Extension
....... url 1..1 uri "document"
....... value[x] 1..1 Coding Value of extension
Binding: Văn bản pháp lý VN — Vietnam Legal Document Reference VS (required)
...... extension:locator S 1..1 Extension Điều/khoản/điểm cụ thể trong văn bản đó
....... extension 0..0 Extension
....... url 1..1 uri "locator"
....... value[x] 1..1 string Value of extension
..... url 1..1 uri "legalProvision"
..... value[x] 0..0 Value of extension
... url 1..1 uri "http://fhir.hl7.org.vn/core/StructureDefinition/vn-ext-representation-authority"

doco Documentation for this format

Terminology Bindings (Differential)

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

Constraints

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')
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Extension 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
... id 0..1 string Unique id for inter-element referencing
... Slices for extension 5..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:domain S 1..1 Extension Miền thẩm quyền: quyết định KCB hay quyền chủ thể dữ liệu
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "domain"
..... value[x] 1..1 Coding Value of extension
Binding: Miền thẩm quyền đại diện — Vietnam Representation Authority Domain ValueSet (required)
.... extension:type 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)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "type"
..... value[x] 1..1 Coding Value of extension
Binding: Loại thẩm quyền đại diện — Vietnam Representation Authority Type ValueSet (required)
.... extension:selectionBasis 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)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "selectionBasis"
..... value[x] 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)
.... extension:source S 1..1 Extension Nguồn xác minh QUAN HỆ (CSDLQGDC/Toà án/công chứng/CSYT khai báo)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "source"
..... value[x] 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)
.... extension:evidence S 0..* Extension Bằng chứng thẩm quyền — lặp được; mỗi mục mang issuer/document/scope/purpose/validity
..... id 0..1 string Unique id for inter-element referencing
..... Slices for extension 2..* Extension Extension
Slice: Unordered, Open by value:url
..... Slices for extension Content/Rules for all slices
...... extension:issuer S 1..1 Extension Cơ quan/tổ chức cấp hoặc xác lập bằng chứng
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..0 Extension
Slice: Unordered, Open by value:url
....... url 1..1 uri "issuer"
....... value[x] 1..1 string Value of extension
...... extension:document S 1..1 Extension Số hiệu/định danh văn bản bằng chứng
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..0 Extension
Slice: Unordered, Open by value:url
....... url 1..1 uri "document"
....... value[x] 1..1 Identifier Value of extension
........ id 0..1 string Unique id for inter-element referencing
........ extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
........ use ?!Σ 0..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .
........ type Σ 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.
........ system Σ 0..1 uri The namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
........ value Σ 1..1 string Số hiệu văn bản — bắt buộc, để tra ngược được
Example General: 123456
........ period Σ 0..1 Period Time period when id is/was valid for use
........ assigner Σ 0..1 Reference(Organization) Organization that issued id (may be just text)
...... extension:scope S 0..1 Extension Phạm vi được trao trong bằng chứng này
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..0 Extension
Slice: Unordered, Open by value:url
....... url 1..1 uri "scope"
....... value[x] 1..1 string Value of extension
...... extension:purpose S 0..1 Extension Mục đích sử dụng thẩm quyền theo bằng chứng
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..0 Extension
Slice: Unordered, Open by value:url
....... url 1..1 uri "purpose"
....... value[x] 1..1 CodeableConcept Value of extension
...... extension:validity S 0..1 Extension Thời hạn hiệu lực ghi trong bằng chứng
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..0 Extension
Slice: Unordered, Open by value:url
....... url 1..1 uri "validity"
....... value[x] 1..1 Period Value of extension
..... url 1..1 uri "evidence"
.... extension:verifiedDate S 1..1 Extension Thời điểm xác minh quan hệ gần nhất
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "verifiedDate"
..... value[x] 1..1 dateTime Value of extension
.... extension:period S 0..1 Extension Thời hạn hiệu lực của thẩm quyền (PDP hết hạn → deny)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "period"
..... value[x] 1..1 Period Value of extension
.... extension:legalProvision 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
..... id 0..1 string Unique id for inter-element referencing
..... Slices for extension 2..* Extension Extension
Slice: Unordered, Open by value:url
..... Slices for extension Content/Rules for all slices
...... extension:document S 1..1 Extension Văn bản căn cứ (mã trong VNLegalDocumentRefCS)
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..0 Extension
Slice: Unordered, Open by value:url
....... url 1..1 uri "document"
....... value[x] 1..1 Coding Value of extension
Binding: Văn bản pháp lý VN — Vietnam Legal Document Reference VS (required)
...... extension:locator S 1..1 Extension Điều/khoản/điểm cụ thể trong văn bản đó
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..0 Extension
Slice: Unordered, Open by value:url
....... url 1..1 uri "locator"
....... value[x] 1..1 string Value of extension
..... url 1..1 uri "legalProvision"
... url 1..1 uri "http://fhir.hl7.org.vn/core/StructureDefinition/vn-ext-representation-authority"

doco Documentation for this format

Terminology Bindings

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

Constraints

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

  • domain: Coding: Miền mà token này có hiệu lực — hai miền là hai loại quyền khác nhau, không suy ra nhau. PDP chỉ được chấp nhận token cho hành động thuộc đúng miền của nó: token healthcare-decision không mở quyền truy cập dữ liệu, token data-subject-rights không trao quyền quyết định điều trị.
  • type: Coding: An Extension
  • selectionBasis: Coding: Trả lời câu hỏi thẩm quyền phát sinh theo nhánh pháp lý nào, khác với 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.
  • source: Coding: An Extension
  • issuer: string: An Extension
  • document: Identifier: An Extension
  • scope: string: An Extension
  • purpose: CodeableConcept: An Extension
  • validity: Period: An Extension
  • verifiedDate: dateTime: Bắt buộc (1..1 từ 06/08/2026): token này dùng làm đầu vào cho quyết định truy cập, nên phải biết quan hệ được xác minh khi nào. Một token không có thời điểm xác minh thì bên dựa vào nó không đánh giá được độ cũ của bằng chứng.
  • period: Period: An Extension
  • document: Coding: An Extension
  • locator: string: An Extension

Dạng xem DifferentialDifferential View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Extension 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
... extension 5..* Extension Extension
... Slices for extension Content/Rules for all slices
.... extension:domain S 1..1 Extension Miền thẩm quyền: quyết định KCB hay quyền chủ thể dữ liệu
..... extension 0..0 Extension
..... url 1..1 uri "domain"
..... value[x] 1..1 Coding Value of extension
Binding: Miền thẩm quyền đại diện — Vietnam Representation Authority Domain ValueSet (required)
.... extension:type 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)
..... extension 0..0 Extension
..... url 1..1 uri "type"
..... value[x] 1..1 Coding Value of extension
Binding: Loại thẩm quyền đại diện — Vietnam Representation Authority Type ValueSet (required)
.... extension:selectionBasis 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)
..... extension 0..0 Extension
..... url 1..1 uri "selectionBasis"
..... value[x] 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)
.... extension:source S 1..1 Extension Nguồn xác minh QUAN HỆ (CSDLQGDC/Toà án/công chứng/CSYT khai báo)
..... extension 0..0 Extension
..... url 1..1 uri "source"
..... value[x] 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)
.... extension:evidence S 0..* Extension Bằng chứng thẩm quyền — lặp được; mỗi mục mang issuer/document/scope/purpose/validity
..... extension 2..* Extension Extension
..... Slices for extension Content/Rules for all slices
...... extension:issuer S 1..1 Extension Cơ quan/tổ chức cấp hoặc xác lập bằng chứng
....... extension 0..0 Extension
....... url 1..1 uri "issuer"
....... value[x] 1..1 string Value of extension
...... extension:document S 1..1 Extension Số hiệu/định danh văn bản bằng chứng
....... extension 0..0 Extension
....... url 1..1 uri "document"
....... value[x] 1..1 Identifier Value of extension
........ value 1..1 string Số hiệu văn bản — bắt buộc, để tra ngược được
...... extension:scope S 0..1 Extension Phạm vi được trao trong bằng chứng này
....... extension 0..0 Extension
....... url 1..1 uri "scope"
....... value[x] 1..1 string Value of extension
...... extension:purpose S 0..1 Extension Mục đích sử dụng thẩm quyền theo bằng chứng
....... extension 0..0 Extension
....... url 1..1 uri "purpose"
....... value[x] 1..1 CodeableConcept Value of extension
...... extension:validity S 0..1 Extension Thời hạn hiệu lực ghi trong bằng chứng
....... extension 0..0 Extension
....... url 1..1 uri "validity"
....... value[x] 1..1 Period Value of extension
..... url 1..1 uri "evidence"
..... value[x] 0..0 Value of extension
.... extension:verifiedDate S 1..1 Extension Thời điểm xác minh quan hệ gần nhất
..... extension 0..0 Extension
..... url 1..1 uri "verifiedDate"
..... value[x] 1..1 dateTime Value of extension
.... extension:period S 0..1 Extension Thời hạn hiệu lực của thẩm quyền (PDP hết hạn → deny)
..... extension 0..0 Extension
..... url 1..1 uri "period"
..... value[x] 1..1 Period Value of extension
.... extension:legalProvision 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
..... extension 2..* Extension Extension
..... Slices for extension Content/Rules for all slices
...... extension:document S 1..1 Extension Văn bản căn cứ (mã trong VNLegalDocumentRefCS)
....... extension 0..0 Extension
....... url 1..1 uri "document"
....... value[x] 1..1 Coding Value of extension
Binding: Văn bản pháp lý VN — Vietnam Legal Document Reference VS (required)
...... extension:locator S 1..1 Extension Điều/khoản/điểm cụ thể trong văn bản đó
....... extension 0..0 Extension
....... url 1..1 uri "locator"
....... value[x] 1..1 string Value of extension
..... url 1..1 uri "legalProvision"
..... value[x] 0..0 Value of extension
... url 1..1 uri "http://fhir.hl7.org.vn/core/StructureDefinition/vn-ext-representation-authority"

doco Documentation for this format

Terminology Bindings (Differential)

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

Constraints

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Extension 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
... id 0..1 string Unique id for inter-element referencing
... Slices for extension 5..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:domain S 1..1 Extension Miền thẩm quyền: quyết định KCB hay quyền chủ thể dữ liệu
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "domain"
..... value[x] 1..1 Coding Value of extension
Binding: Miền thẩm quyền đại diện — Vietnam Representation Authority Domain ValueSet (required)
.... extension:type 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)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "type"
..... value[x] 1..1 Coding Value of extension
Binding: Loại thẩm quyền đại diện — Vietnam Representation Authority Type ValueSet (required)
.... extension:selectionBasis 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)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "selectionBasis"
..... value[x] 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)
.... extension:source S 1..1 Extension Nguồn xác minh QUAN HỆ (CSDLQGDC/Toà án/công chứng/CSYT khai báo)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "source"
..... value[x] 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)
.... extension:evidence S 0..* Extension Bằng chứng thẩm quyền — lặp được; mỗi mục mang issuer/document/scope/purpose/validity
..... id 0..1 string Unique id for inter-element referencing
..... Slices for extension 2..* Extension Extension
Slice: Unordered, Open by value:url
..... Slices for extension Content/Rules for all slices
...... extension:issuer S 1..1 Extension Cơ quan/tổ chức cấp hoặc xác lập bằng chứng
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..0 Extension
Slice: Unordered, Open by value:url
....... url 1..1 uri "issuer"
....... value[x] 1..1 string Value of extension
...... extension:document S 1..1 Extension Số hiệu/định danh văn bản bằng chứng
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..0 Extension
Slice: Unordered, Open by value:url
....... url 1..1 uri "document"
....... value[x] 1..1 Identifier Value of extension
........ id 0..1 string Unique id for inter-element referencing
........ extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
........ use ?!Σ 0..1 code usual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required): Identifies the purpose for this identifier, if known .
........ type Σ 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.
........ system Σ 0..1 uri The namespace for the identifier value
Example General: http://www.acme.com/identifiers/patient
........ value Σ 1..1 string Số hiệu văn bản — bắt buộc, để tra ngược được
Example General: 123456
........ period Σ 0..1 Period Time period when id is/was valid for use
........ assigner Σ 0..1 Reference(Organization) Organization that issued id (may be just text)
...... extension:scope S 0..1 Extension Phạm vi được trao trong bằng chứng này
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..0 Extension
Slice: Unordered, Open by value:url
....... url 1..1 uri "scope"
....... value[x] 1..1 string Value of extension
...... extension:purpose S 0..1 Extension Mục đích sử dụng thẩm quyền theo bằng chứng
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..0 Extension
Slice: Unordered, Open by value:url
....... url 1..1 uri "purpose"
....... value[x] 1..1 CodeableConcept Value of extension
...... extension:validity S 0..1 Extension Thời hạn hiệu lực ghi trong bằng chứng
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..0 Extension
Slice: Unordered, Open by value:url
....... url 1..1 uri "validity"
....... value[x] 1..1 Period Value of extension
..... url 1..1 uri "evidence"
.... extension:verifiedDate S 1..1 Extension Thời điểm xác minh quan hệ gần nhất
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "verifiedDate"
..... value[x] 1..1 dateTime Value of extension
.... extension:period S 0..1 Extension Thời hạn hiệu lực của thẩm quyền (PDP hết hạn → deny)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "period"
..... value[x] 1..1 Period Value of extension
.... extension:legalProvision 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
..... id 0..1 string Unique id for inter-element referencing
..... Slices for extension 2..* Extension Extension
Slice: Unordered, Open by value:url
..... Slices for extension Content/Rules for all slices
...... extension:document S 1..1 Extension Văn bản căn cứ (mã trong VNLegalDocumentRefCS)
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..0 Extension
Slice: Unordered, Open by value:url
....... url 1..1 uri "document"
....... value[x] 1..1 Coding Value of extension
Binding: Văn bản pháp lý VN — Vietnam Legal Document Reference VS (required)
...... extension:locator S 1..1 Extension Điều/khoản/điểm cụ thể trong văn bản đó
....... id 0..1 string Unique id for inter-element referencing
....... extension 0..0 Extension
Slice: Unordered, Open by value:url
....... url 1..1 uri "locator"
....... value[x] 1..1 string Value of extension
..... url 1..1 uri "legalProvision"
... url 1..1 uri "http://fhir.hl7.org.vn/core/StructureDefinition/vn-ext-representation-authority"

doco Documentation for this format

Terminology Bindings

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

Constraints

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

  • domain: Coding: Miền mà token này có hiệu lực — hai miền là hai loại quyền khác nhau, không suy ra nhau. PDP chỉ được chấp nhận token cho hành động thuộc đúng miền của nó: token healthcare-decision không mở quyền truy cập dữ liệu, token data-subject-rights không trao quyền quyết định điều trị.
  • type: Coding: An Extension
  • selectionBasis: Coding: Trả lời câu hỏi thẩm quyền phát sinh theo nhánh pháp lý nào, khác với 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.
  • source: Coding: An Extension
  • issuer: string: An Extension
  • document: Identifier: An Extension
  • scope: string: An Extension
  • purpose: CodeableConcept: An Extension
  • validity: Period: An Extension
  • verifiedDate: dateTime: Bắt buộc (1..1 từ 06/08/2026): token này dùng làm đầu vào cho quyết định truy cập, nên phải biết quan hệ được xác minh khi nào. Một token không có thời điểm xác minh thì bên dựa vào nó không đánh giá được độ cũ của bằng chứng.
  • period: Period: An Extension
  • document: Coding: An Extension
  • locator: string: An Extension

 

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