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.9.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 - Local Development build (v0.9.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Hồ sơ tài nguyên: Khung giờ đặt lịch VN Core — VN Core Slot Profile

URL chính thức: http://fhir.hl7.org.vn/core/StructureDefinition/vn-core-slot Phiên bản: 0.9.0
Computable Name: VNCoreSlot
Định danh khác: OID:2.25.161089673617632664299011809196868855799.42.99

Profile Slot cho Việt Nam. Một khung giờ cụ thể trên lịch cung cấp dịch vụ (VNCoreSchedule) kèm trạng thái đặt được hay không. Slot công bố ra ngoài chỉ mang thông tin về khả năng phục vụ, không mang dữ liệu người bệnh — đây là ranh giới quan trọng khi cơ sở mở cổng đặt lịch công khai, vì dữ liệu y tế là dữ liệu cá nhân nhạy cảm theo Luật 91/2025/QH15 và NĐ 356/2025/NĐ-CP. Căn cứ: Luật 15/2023/QH15 Điều 80 (khám bệnh, chữa bệnh từ xa); Luật 91/2025/QH15 (bảo vệ dữ liệu cá nhân); TT 13/2025/TT-BYT. / VN Core Slot profile: a bookable time window on a VN Core Schedule. Slots carry availability only, never patient data — the boundary that lets facilities publish open booking without disclosing personal data.

Usages:

You can also check for usages in the FHIR IG Statistics

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

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Slot 0..* Slot A slot of time on a schedule that may be available for booking appointments
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:careDeliveryMode S 0..1 CodeableConcept Phương thức của khung giờ này: trực tiếp | tại nhà | từ xa | hỗ trợ từ xa
URL: http://fhir.hl7.org.vn/core/StructureDefinition/vn-ext-care-delivery-mode
Binding: Phương thức cung cấp dịch vụ KCB — VN Care Delivery Mode ValueSet (extensible)
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... serviceType SΣ 0..* CodeableConcept Loại dịch vụ của khung giờ
Binding: Loại dịch vụ y tế tuyến cơ sở — VN Healthcare Service Type ValueSet (extensible)
... specialty SΣ 0..* CodeableConcept Chuyên khoa
Binding: Chuyên khoa y tế — VN Medical Specialty ValueSet (extensible)
... appointmentType SΣ 0..1 CodeableConcept Loại cuộc hẹn khung giờ này nhận (khám lần đầu, tái khám, cấp cứu...)
Binding: Hl7VSAppointmentReasonCodes (3.0.0) (preferred)
... schedule SΣ 1..1 Reference(Lịch cung cấp dịch vụ VN Core — VN Core Schedule Profile) Lịch cung cấp dịch vụ chứa khung giờ này
... status SΣ 1..1 code Trạng thái: free (còn trống) | busy (đã kín) | busy-unavailable | busy-tentative | entered-in-error
Binding: SlotStatus (required): The free/busy status of the slot.
... start SΣ 1..1 instant Thời điểm bắt đầu khung giờ
... end SΣ 1..1 instant Thời điểm kết thúc khung giờ
... overbooked 0..1 boolean Khung giờ đã nhận quá số cuộc hẹn dự kiến
... comment 0..1 string Ghi chú về khung giờ

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Slot.serviceType Base extensible Loại dịch vụ y tế tuyến cơ sở — VN Healthcare Service Type ValueSet 📦0.9.0 This IG
Slot.specialty Base extensible Chuyên khoa y tế — VN Medical Specialty ValueSet 📦0.9.0 This IG
Slot.appointmentType Base preferred hl7VS-appointmentReasonCodes 📍3.0.0 THO v7.2
Slot.status Base required SlotStatus 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error Slot If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Slot If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Slot If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Slot If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Slot A resource should have narrative for robust management text.`div`.exists()
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()

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Slot 0..* Slot A slot of time on a schedule that may be available for booking appointments
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:careDeliveryMode S 0..1 CodeableConcept Phương thức của khung giờ này: trực tiếp | tại nhà | từ xa | hỗ trợ từ xa
URL: http://fhir.hl7.org.vn/core/StructureDefinition/vn-ext-care-delivery-mode
Binding: Phương thức cung cấp dịch vụ KCB — VN Care Delivery Mode ValueSet (extensible)
... identifier S 0..* Identifier Mã khung giờ do cơ sở cấp
... serviceType S 0..* CodeableConcept Loại dịch vụ của khung giờ
Binding: Loại dịch vụ y tế tuyến cơ sở — VN Healthcare Service Type ValueSet (extensible)
... appointmentType S 0..1 CodeableConcept Loại cuộc hẹn khung giờ này nhận (khám lần đầu, tái khám, cấp cứu...)
... schedule S 1..1 Reference(Lịch cung cấp dịch vụ VN Core — VN Core Schedule Profile) Lịch cung cấp dịch vụ chứa khung giờ này
... status S 1..1 code Trạng thái: free (còn trống) | busy (đã kín) | busy-unavailable | busy-tentative | entered-in-error
... start S 1..1 instant Thời điểm bắt đầu khung giờ
... end S 1..1 instant Thời điểm kết thúc khung giờ
... overbooked 0..1 boolean Khung giờ đã nhận quá số cuộc hẹn dự kiến
... comment 0..1 string Ghi chú về khung giờ

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
Slot.serviceType Base extensible Loại dịch vụ y tế tuyến cơ sở — VN Healthcare Service Type ValueSet 📦0.9.0 This IG
Slot.specialty Base extensible Chuyên khoa y tế — VN Medical Specialty ValueSet 📦0.9.0 This IG
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Slot 0..* Slot A slot of time on a schedule that may be available for booking appointments
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... text 0..1 Narrative Text summary of the resource, for human interpretation
This profile does not constrain the narrative in regard to content, language, or traceability to data elements
... contained 0..* Resource Contained, inline Resources
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:careDeliveryMode S 0..1 CodeableConcept Phương thức của khung giờ này: trực tiếp | tại nhà | từ xa | hỗ trợ từ xa
URL: http://fhir.hl7.org.vn/core/StructureDefinition/vn-ext-care-delivery-mode
Binding: Phương thức cung cấp dịch vụ KCB — VN Care Delivery Mode ValueSet (extensible)
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier SΣ 0..* Identifier Mã khung giờ do cơ sở cấp
... serviceCategory Σ 0..* CodeableConcept A broad categorization of the service that is to be performed during this appointment
Binding: ServiceCategory (example)
... serviceType SΣ 0..* CodeableConcept Loại dịch vụ của khung giờ
Binding: Loại dịch vụ y tế tuyến cơ sở — VN Healthcare Service Type ValueSet (extensible)
... specialty SΣ 0..* CodeableConcept Chuyên khoa
Binding: Chuyên khoa y tế — VN Medical Specialty ValueSet (extensible)
... appointmentType SΣ 0..1 CodeableConcept Loại cuộc hẹn khung giờ này nhận (khám lần đầu, tái khám, cấp cứu...)
Binding: Hl7VSAppointmentReasonCodes (3.0.0) (preferred)
... schedule SΣ 1..1 Reference(Lịch cung cấp dịch vụ VN Core — VN Core Schedule Profile) Lịch cung cấp dịch vụ chứa khung giờ này
... status SΣ 1..1 code Trạng thái: free (còn trống) | busy (đã kín) | busy-unavailable | busy-tentative | entered-in-error
Binding: SlotStatus (required): The free/busy status of the slot.
... start SΣ 1..1 instant Thời điểm bắt đầu khung giờ
... end SΣ 1..1 instant Thời điểm kết thúc khung giờ
... overbooked 0..1 boolean Khung giờ đã nhận quá số cuộc hẹn dự kiến
... comment 0..1 string Ghi chú về khung giờ

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Slot.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Slot.serviceCategory Base example Service category 📍4.0.1 FHIR Std.
Slot.serviceType Base extensible Loại dịch vụ y tế tuyến cơ sở — VN Healthcare Service Type ValueSet 📦0.9.0 This IG
Slot.specialty Base extensible Chuyên khoa y tế — VN Medical Specialty ValueSet 📦0.9.0 This IG
Slot.appointmentType Base preferred hl7VS-appointmentReasonCodes 📍3.0.0 THO v7.2
Slot.status Base required SlotStatus 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error Slot If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Slot If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Slot If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Slot If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Slot A resource should have narrative for robust management text.`div`.exists()
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()

Summary

Must-Support: 9 elements

Structures

This structure refers to these other structures:

Extensions

This structure refers to these extensions:

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Slot 0..* Slot A slot of time on a schedule that may be available for booking appointments
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:careDeliveryMode S 0..1 CodeableConcept Phương thức của khung giờ này: trực tiếp | tại nhà | từ xa | hỗ trợ từ xa
URL: http://fhir.hl7.org.vn/core/StructureDefinition/vn-ext-care-delivery-mode
Binding: Phương thức cung cấp dịch vụ KCB — VN Care Delivery Mode ValueSet (extensible)
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... serviceType SΣ 0..* CodeableConcept Loại dịch vụ của khung giờ
Binding: Loại dịch vụ y tế tuyến cơ sở — VN Healthcare Service Type ValueSet (extensible)
... specialty SΣ 0..* CodeableConcept Chuyên khoa
Binding: Chuyên khoa y tế — VN Medical Specialty ValueSet (extensible)
... appointmentType SΣ 0..1 CodeableConcept Loại cuộc hẹn khung giờ này nhận (khám lần đầu, tái khám, cấp cứu...)
Binding: Hl7VSAppointmentReasonCodes (3.0.0) (preferred)
... schedule SΣ 1..1 Reference(Lịch cung cấp dịch vụ VN Core — VN Core Schedule Profile) Lịch cung cấp dịch vụ chứa khung giờ này
... status SΣ 1..1 code Trạng thái: free (còn trống) | busy (đã kín) | busy-unavailable | busy-tentative | entered-in-error
Binding: SlotStatus (required): The free/busy status of the slot.
... start SΣ 1..1 instant Thời điểm bắt đầu khung giờ
... end SΣ 1..1 instant Thời điểm kết thúc khung giờ
... overbooked 0..1 boolean Khung giờ đã nhận quá số cuộc hẹn dự kiến
... comment 0..1 string Ghi chú về khung giờ

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Slot.serviceType Base extensible Loại dịch vụ y tế tuyến cơ sở — VN Healthcare Service Type ValueSet 📦0.9.0 This IG
Slot.specialty Base extensible Chuyên khoa y tế — VN Medical Specialty ValueSet 📦0.9.0 This IG
Slot.appointmentType Base preferred hl7VS-appointmentReasonCodes 📍3.0.0 THO v7.2
Slot.status Base required SlotStatus 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error Slot If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Slot If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Slot If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Slot If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Slot A resource should have narrative for robust management text.`div`.exists()
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()

Dạng xem Differential

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Slot 0..* Slot A slot of time on a schedule that may be available for booking appointments
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:careDeliveryMode S 0..1 CodeableConcept Phương thức của khung giờ này: trực tiếp | tại nhà | từ xa | hỗ trợ từ xa
URL: http://fhir.hl7.org.vn/core/StructureDefinition/vn-ext-care-delivery-mode
Binding: Phương thức cung cấp dịch vụ KCB — VN Care Delivery Mode ValueSet (extensible)
... identifier S 0..* Identifier Mã khung giờ do cơ sở cấp
... serviceType S 0..* CodeableConcept Loại dịch vụ của khung giờ
Binding: Loại dịch vụ y tế tuyến cơ sở — VN Healthcare Service Type ValueSet (extensible)
... appointmentType S 0..1 CodeableConcept Loại cuộc hẹn khung giờ này nhận (khám lần đầu, tái khám, cấp cứu...)
... schedule S 1..1 Reference(Lịch cung cấp dịch vụ VN Core — VN Core Schedule Profile) Lịch cung cấp dịch vụ chứa khung giờ này
... status S 1..1 code Trạng thái: free (còn trống) | busy (đã kín) | busy-unavailable | busy-tentative | entered-in-error
... start S 1..1 instant Thời điểm bắt đầu khung giờ
... end S 1..1 instant Thời điểm kết thúc khung giờ
... overbooked 0..1 boolean Khung giờ đã nhận quá số cuộc hẹn dự kiến
... comment 0..1 string Ghi chú về khung giờ

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
Slot.serviceType Base extensible Loại dịch vụ y tế tuyến cơ sở — VN Healthcare Service Type ValueSet 📦0.9.0 This IG
Slot.specialty Base extensible Chuyên khoa y tế — VN Medical Specialty ValueSet 📦0.9.0 This IG

Dạng xem SnapshotView

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Slot 0..* Slot A slot of time on a schedule that may be available for booking appointments
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... text 0..1 Narrative Text summary of the resource, for human interpretation
This profile does not constrain the narrative in regard to content, language, or traceability to data elements
... contained 0..* Resource Contained, inline Resources
... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:careDeliveryMode S 0..1 CodeableConcept Phương thức của khung giờ này: trực tiếp | tại nhà | từ xa | hỗ trợ từ xa
URL: http://fhir.hl7.org.vn/core/StructureDefinition/vn-ext-care-delivery-mode
Binding: Phương thức cung cấp dịch vụ KCB — VN Care Delivery Mode ValueSet (extensible)
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier SΣ 0..* Identifier Mã khung giờ do cơ sở cấp
... serviceCategory Σ 0..* CodeableConcept A broad categorization of the service that is to be performed during this appointment
Binding: ServiceCategory (example)
... serviceType SΣ 0..* CodeableConcept Loại dịch vụ của khung giờ
Binding: Loại dịch vụ y tế tuyến cơ sở — VN Healthcare Service Type ValueSet (extensible)
... specialty SΣ 0..* CodeableConcept Chuyên khoa
Binding: Chuyên khoa y tế — VN Medical Specialty ValueSet (extensible)
... appointmentType SΣ 0..1 CodeableConcept Loại cuộc hẹn khung giờ này nhận (khám lần đầu, tái khám, cấp cứu...)
Binding: Hl7VSAppointmentReasonCodes (3.0.0) (preferred)
... schedule SΣ 1..1 Reference(Lịch cung cấp dịch vụ VN Core — VN Core Schedule Profile) Lịch cung cấp dịch vụ chứa khung giờ này
... status SΣ 1..1 code Trạng thái: free (còn trống) | busy (đã kín) | busy-unavailable | busy-tentative | entered-in-error
Binding: SlotStatus (required): The free/busy status of the slot.
... start SΣ 1..1 instant Thời điểm bắt đầu khung giờ
... end SΣ 1..1 instant Thời điểm kết thúc khung giờ
... overbooked 0..1 boolean Khung giờ đã nhận quá số cuộc hẹn dự kiến
... comment 0..1 string Ghi chú về khung giờ

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Slot.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Slot.serviceCategory Base example Service category 📍4.0.1 FHIR Std.
Slot.serviceType Base extensible Loại dịch vụ y tế tuyến cơ sở — VN Healthcare Service Type ValueSet 📦0.9.0 This IG
Slot.specialty Base extensible Chuyên khoa y tế — VN Medical Specialty ValueSet 📦0.9.0 This IG
Slot.appointmentType Base preferred hl7VS-appointmentReasonCodes 📍3.0.0 THO v7.2
Slot.status Base required SlotStatus 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error Slot If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Slot If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Slot If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Slot If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Slot A resource should have narrative for robust management text.`div`.exists()
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()

Summary

Must-Support: 9 elements

Structures

This structure refers to these other structures:

Extensions

This structure refers to these extensions:

 

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