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
Hướng dẫn tích hợp cho một lần chuyển người bệnh: phát hành giấy chuyển → gửi cơ sở dự kiến tiếp nhận → được nhận hoặc bị từ chối → người bệnh đến → hoàn thành → chuyển về. Trang này tập trung vào phần mà ba playbook kia không trả lời được: ai đang chịu trách nhiệm về người bệnh tại từng thời điểm.
Cùng bộ playbook: Ngoại trú · Nội trú · Cấp cứu · Dược.
Điểm khác biệt VN cốt lõi: một giấy chuyển có thể phải gửi tới nhiều cơ sở trước khi có nơi nhận, nhưng người bệnh chỉ có một lần chỉ định chuyển. Vì vậy giấy chuyển và việc điều phối là hai thứ khác nhau:
ServiceRequestlà giấy chuyển, mỗi lần gửi tới một cơ sở là mộtTaskriêng.Trường hợp cấp cứu thì cơ sở khám bệnh, chữa bệnh không được từ chối — Luật 15/2023/QH15 Điều 59 khoản 2 điểm a: quyền từ chối khi vượt quá khả năng chuyên môn không áp dụng cho "trường hợp cấp cứu quy định tại Điều 61 của Luật này".
Dùng khi người bệnh được chuyển giữa hai cơ sở khám bệnh, chữa bệnh — cả chiều lên tuyến trên, chiều về tuyến dưới và cùng tuyến. KHÔNG dùng cho chuyển khoa trong cùng một cơ sở (đó là Encounter mới cùng Account, xem Nội trú).
| Vai trò | Trách nhiệm trong luồng |
|---|---|
| Cơ sở chuyển đi | Phát hành ServiceRequest, mở Task cho mỗi cơ sở được đề nghị, theo dõi tới khi có nơi nhận |
| Cơ sở dự kiến tiếp nhận | Trả lời đồng ý hoặc từ chối kèm lý do; khi người bệnh đến thì mở Encounter và cập nhật Task |
| Cổng BHXH | Nhận MA_LYDO_CT (lý do chuyển) trong dữ liệu đầu ra; không tham gia điều phối |
Luật 15/2023/QH15 Điều 60 khoản 10 (nghĩa vụ giới thiệu, chuyển người bệnh), Điều 61 (cấp cứu) và Điều 59 khoản 2 điểm a (quyền từ chối KHÔNG áp dụng cho ca cấp cứu theo Điều 61); QĐ 3176/QĐ-BYT (trường MA_LYDO_CT — lý do chuyển cơ sở KCB; chuẩn dữ liệu đầu ra không có chỉ tiêu hình thức chuyển, xem đính chính 19/08/2026 tại VNReferralModeCS); TT 01/2025/TT-BYT (giấy chuyển tuyến theo năm dương lịch; giấy hết thời hạn khi người bệnh vẫn đang điều trị thì dùng đến hết đợt điều trị đó).
| # | Hành động | Ghi chú |
|---|---|---|
| P1 | Hai Organization có mã cơ sở khám bệnh, chữa bệnh |
Cả bên gửi và bên nhận; mã dùng để đối soát, không dựa vào tên |
| P2 | Patient đã định danh |
Nếu chưa, xem nhánh chưa định danh ở Cấp cứu |
| P3 | Encounter tại cơ sở chuyển đi |
Là nơi phát sinh chỉ định chuyển; đặt ở ServiceRequest.encounter |
| P4 | Coverage nếu có thẻ bảo hiểm y tế |
Ảnh hưởng mức hưởng tại cơ sở nhận, không ảnh hưởng việc điều phối |
Trạng thái nghiệp vụ nằm ở Task.businessStatus (VNTaskBusinessStatusCS), trạng thái kỹ thuật ở Task.status. Hai thứ phải khớp nhau, ràng buộc bằng invariant vn-task-referral-state-coherent.
businessStatus |
Task.status cho phép |
Ai chịu trách nhiệm về người bệnh | Bằng chứng bắt buộc |
|---|---|---|---|
REF-SENT |
requested, received |
Cơ sở chuyển đi | — |
REF-ACCEPTED |
accepted, in-progress |
Cơ sở chuyển đi (người bệnh chưa đến) | — |
REF-DECLINED |
rejected |
Cơ sở chuyển đi | statusReason bắt buộc |
REF-ARRIVED |
in-progress, completed |
Cơ sở tiếp nhận | output trỏ Encounter |
REF-COMPLETED |
in-progress, completed |
Cơ sở tiếp nhận | output trỏ Encounter |
REF-RETURNED |
in-progress, completed |
Cơ sở chuyển đi (nhận lại) | — |
┌──────────────┐
│ REF-SENT │ giấy chuyển đã gửi
└──────┬───────┘
đồng ý ┌─────┴─────┐ từ chối
▼ ▼
┌────────────────┐ ┌──────────────┐
│ REF-ACCEPTED │ │ REF-DECLINED │──▶ mở Task MỚI
└───────┬────────┘ └──────────────┘ tới cơ sở khác
người bệnh đến│ (cùng ServiceRequest)
▼
┌────────────────┐
│ REF-ARRIVED │ Encounter mở tại cơ sở nhận
└───────┬────────┘
▼
┌────────────────┐ ┌────────────────┐
│ REF-COMPLETED │─────▶│ REF-RETURNED │ giấy chuyển về
└────────────────┘ └────────────────┘ (ServiceRequest mới)
Hai invariant ép máy trạng thái này:
vn-task-referral-state-coherent — trạng thái nghiệp vụ phải khớp trạng thái kỹ thuật.vn-task-referral-arrival-evidence — REF-ARRIVED/REF-COMPLETED phải có output trỏ Encounter. Khẳng định người bệnh đã đến mà không có lượt khám nào thì không kiểm được, và đối soát MA_LK giữa hai cơ sở sẽ hỏng về sau.Ngoài validator, cổng scripts/validate-referral-state.py kiểm cùng bộ ràng buộc này trên build output, chạy trong vài giây ở pre-commit và CI.
| Bước | Resource | Ghi chú |
|---|---|---|
| 1 | ServiceRequest |
Giấy chuyển. extension[referralMode]: 2 chuyển từ tuyến dưới, 3 từ tuyến trên, 4 cùng tuyến, 5 cấp cứu. requester = cơ sở đi, performer = cơ sở dự kiến nhận |
| 2 | Task (REF-SENT) |
Một Task cho MỖI cơ sở được đề nghị; focus trỏ cùng một ServiceRequest |
| 3a | Task → REF-ACCEPTED |
Kèm Appointment nếu có hẹn giờ tiếp nhận; Appointment.basedOn trỏ ServiceRequest |
| 3b | Task → REF-DECLINED |
statusReason bắt buộc. Mở Task mới tới cơ sở khác — KHÔNG tạo giấy chuyển mới |
| 4 | Encounter tại cơ sở nhận |
Task → REF-ARRIVED, đặt output trỏ Encounter này |
| 5 | Task → REF-COMPLETED |
Khi kết thúc đợt tại cơ sở nhận |
| 6 | ServiceRequest mới + Task (REF-RETURNED) |
Chuyển về: referralMode = 3, đảo vai requester/performer |
Ví dụ đầy đủ cả sáu bước: ExampleServiceRequestReferral · ExampleTaskReferralDeclined · ExampleTaskReferralAcceptance · ExampleServiceRequestCounterReferral · ExampleTaskReferralAccepted · ExampleTaskReferralReturned · ExampleAppointmentReferralIntake.
| Tình huống | Cách xử lý | Vì sao |
|---|---|---|
| Cơ sở nhận từ chối | Mở Task mới tới cơ sở khác, cùng focus |
Người bệnh chỉ có một chỉ định chuyển; tạo giấy mới làm mất dấu chuỗi thử |
| Không phản hồi trong thời hạn | Đặt Task.restriction.period.end; quá hạn thì hệ thống gửi đi coi như không có nơi nhận và mở Task khác |
R4 không có trạng thái "hết hạn" cho Task; thời hạn là dữ liệu của bên gửi |
| Người bệnh không đến | Appointment.status = noshow; Task giữ REF-ACCEPTED hoặc chuyển cancelled kèm statusReason |
Appointment.basedOn cho phép truy ngược giấy chuyển nào bị bỏ dở |
| Giấy chuyển hết thời hạn giữa đợt điều trị | KHÔNG từ chối chỉ vì restriction.period.end đã qua |
TT 01/2025/TT-BYT: giấy hết hạn khi người bệnh vẫn đang điều trị thì dùng đến hết đợt |
Gửi lại cùng một Task do lỗi mạng |
Dùng PUT theo id đã biết, hoặc POST kèm If-None-Exist trên identifier |
Tránh sinh hai Task cho cùng một lần đề nghị |
| Trục | Hệ mã | Ghi chú |
|---|---|---|
Lý do chuyển (MA_LYDO_CT) |
VNCareTransferReasonCS |
1 đủ điều kiện, 2 vượt khả năng đáp ứng, 3 theo yêu cầu người bệnh |
| Hình thức chuyển | VNReferralModeCS (tập mã VN Core) |
Đặt ở ServiceRequest.extension[referralMode] |
| Trạng thái điều phối | VNTaskBusinessStatusCS nhóm REF-* |
Mã do dự án đặt (codeSource = project-assigned); chưa có danh mục quốc gia tương ứng |
Task có đúng một focus trỏ ServiceRequest, KHÔNG lặp lại ở basedOn.Task.owner là cơ sở được đề nghị, Task.requester là cơ sở chuyển đi.statusReason.REF-ARRIVED/REF-COMPLETED có output trỏ Encounter của cơ sở nhận.ServiceRequest mới với referralMode = 3, không sửa giấy chuyển đi.REF-DECLINED.REF-SENT và REF-ARRIVED — hai trạng thái này thoáng qua, nhưng bộ ví dụ nên có để bên tích hợp thấy đủ vòng. Cổng validate-referral-state.py in rõ phần thiếu này thay vì báo xanh chung.statusReason.text tự do.Tình huống lâm sàng · Tuân thủ theo vai trò triển khai · Hành vi tìm kiếm · Hồ sơ FHIR
This page defines the VN Core referral coordination workflow using a
ServiceRequest as the referral order and a Task as the operational state
carrier. It separates statutory referral data from project-assigned workflow
codes, and documents retry, rejection, emergency, arrival, completion, and
return-referral behavior for implementers.