# Bảo mật và Quyền riêng tư - Bộ Hướng dẫn Triển khai Core FHIR cho Việt Nam v0.5.0

## Bảo mật và Quyền riêng tư

# Bảo mật và quyền riêng tư — Security and Privacy

Baseline tối thiểu cho privacy, security và governance dữ liệu khi triển khai VN Core gồm 3 lớp: legal baseline, technical control baseline và vận hành theo vai trò triển khai.

**Lưu ý pháp lý**: Luật Bảo vệ dữ liệu cá nhân (91/2025) và Nghị định 356/2025 có hiệu lực từ **01/01/2026**. VN Core cung cấp guidance kỹ thuật để hỗ trợ tuân thủ, nhưng **không thay thế** tư vấn pháp lý hoặc quyết định vận hành của từng đơn vị.

## Legal baseline phải coi là đầu vào kỹ thuật

### Dữ liệu cá nhân cơ bản

| | | |
| :--- | :--- | :--- |
| `Patient.name` | Họ và tên |   |
| `Patient.birthDate` | Ngày sinh |   |
| `Patient.identifier[CCCD]` | Số CCCD | Định danh cá nhân lõi |
| `Patient.identifier[VNEID]` | Tài khoản VNeID | Chỉ xem như tài khoản ứng dụng công dân hoặc lớp tích hợp; không phải định danh bệnh nhân lõi |
| `Patient.telecom` | Số điện thoại, email |   |
| `Patient.address` | Nơi cư trú |   |
| `Patient.identifier[Passport]` | Số hộ chiếu |   |

### Dữ liệu cá nhân nhạy cảm

Toàn bộ dữ liệu y tế phải được xem là **DLCN nhạy cảm**. Các nhóm resource có rủi ro trực tiếp gồm:

| | | |
| :--- | :--- | :--- |
| `Condition` | Chẩn đoán, bệnh sử | Cần kiểm soát truy cập và audit ở mức cao |
| `Observation` | Kết quả xét nghiệm, sinh hiệu | Cần bảo vệ khi truyền, khi lưu và khi chia sẻ |
| `AllergyIntolerance` | Tiền sử dị ứng | Không mở mặc định ngoài phạm vi đã công bố |
| `Procedure` | Thủ thuật, phẫu thuật | Cần provenance và kiểm soát hiển thị phù hợp |
| `Coverage` | Thông tin BHYT | Liên quan cả dữ liệu y tế lẫn dữ liệu payer-facing |
| `Encounter` | Lịch sử khám bệnh | Phải có policy truy cập và retention rõ |

NĐ 356/2025 cũng làm tăng yêu cầu với dữ liệu VNeID, hình ảnh CCCD và lịch sử giao dịch khi chúng đi kèm dữ liệu y tế.

### Quyền của chủ thể dữ liệu

| | |
| :--- | :--- |
| Quyền được biết | Phải công bố ai xử lý dữ liệu, mục đích và phạm vi truy cập |
| Quyền đồng ý | Cần cơ chế ghi nhận`Consent`hoặc cơ chế tương đương có thể truy xuất |
| Quyền truy cập | Chỉ mở đúng tập dữ liệu đã công bố và đúng actor |
| Quyền chỉnh sửa | Có quy trình sửa dữ liệu và hậu kiểm thay đổi |
| Quyền xóa / ngừng xử lý | Không diễn giải máy móc thành FHIR`delete`; có thể là ngừng chia sẻ, ẩn truy cập hoặc xóa theo policy áp dụng |
| Quyền hạn chế xử lý | Phải phản ánh được ở policy và khi cần thì ở`Consent.provision` |
| Quyền khiếu nại | Ngoài phạm vi FHIR, nhưng phải có đầu mối và quy trình vận hành |

### Nghĩa vụ vận hành tối thiểu

* Thực hiện DPIA theo biểu mẫu áp dụng trước khi đưa dữ liệu thật vào vận hành.
* Chỉ định đầu mối hoặc nhân sự phụ trách bảo vệ dữ liệu cá nhân.
* Có quy trình thông báo vi phạm dữ liệu trong **72 giờ**.
* Đánh giá riêng mọi luồng chuyển dữ liệu xuyên biên giới.
* Đánh giá phạm vi áp dụng của Luật 116/2025/QH15 đối với lưu trữ trong nước, phân loại hệ thống và hạ tầng xử lý (**hiệu lực 01/07/2026**; trước mốc đó áp dụng Luật 24/2018/QH14).

Chi tiết legal registry xem tại [Cơ sở pháp lý](legal-basis.md).

## Technical control baseline của VN Core

### Identity, authentication và authorization

* NÊN dùng SMART on FHIR hoặc OAuth 2.0 cho xác thực và ủy quyền.
* Phải tách vai trò `user`, `patient` và `system`.
* Phải tách tài khoản dịch vụ của gateway/payer khỏi tài khoản người dùng lâm sàng.
* Không cấp `system/*.*` nếu chỉ cần một tập quyền hẹp hơn.

### Consent

VN Core ưu tiên dùng [VNCoreConsent](StructureDefinition-vn-core-consent.md) để ghi nhận đồng ý xử lý dữ liệu cá nhân y tế.

Các điểm cần giữ ổn định:

* `Consent.status` phản ánh trạng thái còn hiệu lực, bị rút lại hoặc hết hiệu lực.
* `Consent.category` phải cho biết consent đang phục vụ điều trị, chia sẻ hồ sơ, nghiên cứu, nghĩa vụ pháp lý hay miễn trừ cấp cứu.
* `Consent.patient` là bắt buộc.
* `Consent.provision.purpose` phải đủ để giải thích mục đích xử lý dữ liệu.

Nếu đơn vị chưa dùng `Consent` như resource trao đổi, vẫn phải có cơ chế tương đương để chứng minh trạng thái đồng ý và phạm vi cho phép xử lý.

### Encryption

* Mã hóa khi truyền bằng `TLS 1.2+` hoặc tốt hơn.
* Mã hóa khi lưu trữ bằng chuẩn tương đương `AES-256`.
* Tăng cường kiểm soát khóa và logging cho dữ liệu lâm sàng, dữ liệu payer-facing và dữ liệu tài liệu đã xác nhận.

### Audit

VN Core coi [VNCoreAuditEvent](StructureDefinition-vn-core-audit-event.md) là baseline đối với truy cập, chỉnh sửa và chia sẻ dữ liệu nhạy cảm.

Tối thiểu phải giữ:

* `type`
* `recorded`
* `agent`
* `source`
* `entity`
* `purposeOfEvent`

Mục tiêu không chỉ là log kỹ thuật, mà là chứng minh được ai truy cập gì, khi nào, từ đâu và vì mục đích nào.

### Provenance và chữ ký

VN Core ưu tiên dùng [VNCoreProvenance](StructureDefinition-vn-core-provenance.md) để ghi nhận:

* tài nguyên được xác nhận (`target`)
* người hoặc hệ thống chịu trách nhiệm (`agent`)
* lý do pháp lý hoặc nghiệp vụ (`reason`)
* chữ ký số/chữ ký điện tử (`signature`) khi tài liệu đã được xác nhận

`Provenance` là baseline cho truy vết; `signature` được thêm khi quy trình pháp lý hoặc quy trình nghiệp vụ yêu cầu khả năng không thể chối bỏ.

### Storage, residency và recovery

* Hệ thống phải có backup, disaster recovery và khả năng phục hồi dữ liệu.
* Mặc định nên đánh giá hạ tầng theo hướng lưu trữ tại Việt Nam khi hệ thống hoặc cơ sở dữ liệu thuộc phạm vi điều chỉnh.
* Mọi quyết định đưa dữ liệu thật ra ngoài phạm vi nội địa phải có đánh giá pháp lý và vận hành riêng.

## Baseline theo vai trò triển khai

VN Core công bố các `CapabilityStatement` mức cơ sở theo vai trò:

* `VNCoreEMRServer`
* `VNBHYTGatewayClient`
* `VNBHYTGatewayServer`
* `VNCitizenAppClient`

### Ma trận scope tối thiểu

| | | |
| :--- | :--- | :--- |
| EMR/HIS nội bộ | `user` | `openid`,`profile`,`fhirUser`,`launch`,`user/Patient.read`,`user/Encounter.*`,`user/Condition.*`,`user/Observation.*`,`user/DocumentReference.*`,`user/Composition.*`,`user/Consent.*` |
| Ứng dụng người dân / VNeID connector | `patient` | `openid`,`profile`,`launch/patient`,`patient/Patient.read`,`patient/RelatedPerson.read`,`patient/Coverage.read`,`patient/DocumentReference.read`,`patient/Consent.*`,`patient/AuditEvent.read` |
| Gateway BHYT máy chủ - máy chủ | `system` | `system/Bundle.create`,`system/Bundle.read`,`system/Claim.create`,`system/Claim.read`,`system/Patient.read`,`system/Coverage.read`,`system/Organization.read` |

### Break-glass

Break-glass cho phép truy cập vượt ngoài phân quyền thông thường trong bối cảnh cấp cứu hoặc an toàn người bệnh. Tối thiểu hệ thống phải:

1. Có policy nội bộ xác định rõ điều kiện kích hoạt.
1. Ghi`AuditEvent`cho mọi truy cập break-glass.
1. Cho phép hậu kiểm theo ca bệnh, sự cố hoặc ticket nội bộ.

Khuyến nghị: nếu có cơ chế phê duyệt sau truy cập, hãy gắn mã ticket/case vào `AuditEvent.agent.policy` hoặc cơ chế tương đương.

## Metadata tối thiểu phải giữ để kiểm toán

VN Core không áp đặt cứng thời hạn lưu trữ cho mọi loại tài nguyên, nhưng ở mức cơ sở hệ thống nên giữ tối thiểu:

| | |
| :--- | :--- |
| `AuditEvent` | `type`,`subtype`,`action`,`recorded`,`outcome`,`purposeOfEvent`,`agent.who`,`agent.requestor`,`source.observer`,`entity.what` |
| `Consent` | `status`,`category`,`patient`,`dateTime`,`performer`,`organization`,`policy.uri`,`provision.type`,`provision.period`,`provision.purpose` |
| `Provenance` | `target`,`recorded`,`reason`,`agent.who`,`agent.onBehalfOf`,`signature.when`,`signature.who`,`signature.sigFormat` |

Nếu policy nội bộ yêu cầu xóa hoặc ẩn dữ liệu lâm sàng theo quyền của chủ thể dữ liệu, metadata kiểm toán vẫn nên được giữ theo cách còn đáp ứng nghĩa vụ chứng minh truy cập và trách nhiệm giải trình.

## Khi nào cần Provenance và khi nào cần thêm signature

| | | |
| :--- | :--- | :--- |
| Bệnh án điện tử đã xác nhận | BẮT BUỘC | BẮT BUỘC nếu đơn vị ký số tài liệu/hồ sơ theo quy định áp dụng |
| Tóm tắt ra viện / tài liệu pháp lý giao cho bệnh nhân | BẮT BUỘC | BẮT BUỘC khi là bản phát hành chính thức |
| Kết quả cận lâm sàng final | NÊN có | NÊN có nếu quy trình ký số kết quả đã áp dụng |
| Liên thông hồ sơ BHYT / bằng chứng gửi - thu hồi | NÊN có | NÊN có nếu cần khả năng không thể chối bỏ ở`gateway layer` |
| Consent điện tử / consent qua cha mẹ-người giám hộ | NÊN có | NÊN có khi consent được ký số hoặc cần chứng cứ pháp lý mạnh |

## AI và secondary use

Nếu dữ liệu VN Core được dùng cho hệ thống AI y tế hoặc phân tích thứ cấp:

* Phải phân biệt rõ dữ liệu phục vụ điều trị với dữ liệu phục vụ phân tích hoặc huấn luyện.
* Phải có căn cứ mục đích xử lý, consent hoặc căn cứ pháp lý tương ứng.
* Phải có cơ chế giải trình, kiểm soát truy cập và review rủi ro phù hợp với nhóm sử dụng.

Trang này không tạo profile AI riêng, nhưng coi AI/secondary use là lý do để siết governance dữ liệu từ đầu thay vì bổ sung muộn.

## Liên hệ với các trang khác

| | |
| :--- | :--- |
| Legal registry chi tiết | [Cơ sở pháp lý](legal-basis.md) |
| Nghĩa vụ theo actor | [Tuân thủ theo vai trò triển khai](conformance-by-actor.md) |
| Validation và test scripts | [Hướng dẫn kiểm tra hợp lệ](validation-guidance.md) |
| Vòng đời và mức ổn định release | [Ổn định và tuân thủ](stability-and-conformance.md) |

## English Summary

This page defines the minimum privacy and security baseline for VN Core implementations. It separates the legal baseline, the technical control baseline, and the operating baseline by implementation actor. The page treats `Consent`, `AuditEvent`, `Provenance`, token scope, break-glass, storage assessment, and audit metadata retention as part of core conformance rather than optional add-ons.

