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

Hồ sơ tài nguyên: Xét nghiệm VN Core — VN Core Observation Laboratory Profile

URL chính thức: http://fhir.hl7.org.vn/core/StructureDefinition/vn-core-observation-lab Phiên bản: 0.10.0
Computable Name: VNCoreObservationLab
Định danh khác: OID:2.25.161089673617632664299011809196868855799.42.92

Profile Observation cho kết quả xét nghiệm lâm sàng tại Việt Nam. Sử dụng LOINC làm mã xét nghiệm (system = http://loinc.org; 104.054 mã LOINC 2.78, bản dịch tiếng Việt do BYT phát hành qua supplement vn-loinc-cs). BYT đã ban hành bộ mã CLS quốc gia ánh xạ sang LOINC (QĐ 1227/QĐ-BYT 11/04/2025). Căn cứ: QĐ 1227/QĐ-BYT (2025), TT 13/2025/TT-BYT, QĐ 130/QĐ-BYT sửa đổi bởi QĐ 3176/QĐ-BYT (2024).

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
.. Observation C 0..* Observation Measurements and simple assertions
Constraints: obs-6, obs-7, vn-lab-observation-ucum, vn-lab-final-result-complete
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... basedOn Σ 0..* Reference(Yêu cầu DVKT/Cận lâm sàng VN Core — VN Core ServiceRequest Profile) Chỉ định xét nghiệm làm căn cứ trả kết quả
... Slices for category SO 1..* CodeableConcept Classification of type of observation
Slice: Unordered, Open by value:$this
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... category:Laboratory SO 1..1 CodeableConcept Classification of type of observation
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.

Required Pattern: At least the following
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
...... system 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
...... version 0..1 string Version of the system - if relevant
...... code 1..1 code Symbol in syntax defined by the system
Fixed Value: laboratory
...... display 1..1 string Representation defined by the system
Fixed Value: Laboratory
...... userSelected 0..1 boolean If this coding was chosen directly by the user
..... text 0..1 string Plain text representation of the concept
... code SOΣC 1..1 CodeableConcept Mã xét nghiệm — LOINC và/hoặc danh mục chỉ số cận lâm sàng Việt Nam
Binding: Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet (extensible)
Constraints: vn-lab-observation-code-system
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... Slices for coding Σ 0..* Coding Code defined by a terminology system
Slice: Unordered, Open by value:system
..... coding:loinc SΣ 0..1 Coding Mã LOINC
...... system Σ 1..1 uri Identity of the terminology system
Fixed Value: http://loinc.org
...... code Σ 1..1 code Symbol in syntax defined by the system
..... coding:vnCls SΣ 0..1 Coding Mã chỉ số cận lâm sàng Việt Nam (QĐ 1227/QĐ-BYT) — miền xét nghiệm
...... system Σ 1..1 uri Identity of the terminology system
Fixed Value: http://fhir.hl7.org.vn/core/CodeSystem/vn-cls-cs
...... code Σ 1..1 code Symbol in syntax defined by the system
... subject SOΣ 1..1 Reference(Bệnh nhân VN Core — VN Core Patient Profile) Bệnh nhân
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... encounter Σ 0..1 Reference(Lượt khám/nhập viện VN Core — VN Core Encounter Profile) Lượt khám liên quan
... effective[x] SOΣ 1..1 Thời điểm lấy mẫu/đo
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... effectiveDateTime dateTime
.... effectivePeriod Period
.... effectiveTiming Timing
.... effectiveInstant instant
... performer Σ 0..* Reference(Nhân viên y tế VN Core — VN Core Practitioner Profile | Vai trò nhân viên y tế VN Core — VN Core PractitionerRole Profile | Cơ sở y tế VN Core — VN Core Organization Profile) Người/đơn vị thực hiện xét nghiệm
... Slices for value[x] SOΣC 0..1 Kết quả xét nghiệm
Slice: Unordered, Open by type:$this
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... valueQuantity Quantity
.... valueCodeableConcept CodeableConcept
.... valueString string
.... valueBoolean boolean
.... valueInteger integer
.... valueRange Range
.... valueRatio Ratio
.... valueSampledData SampledData
.... valueTime time
.... valueDateTime dateTime
.... valuePeriod Period
.... value[x]:valueQuantity ΣC 0..1 Quantity Actual result
..... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.
..... system ΣC 0..1 uri System that defines coded unit form
Fixed Value: http://unitsofmeasure.org
..... code SΣ 0..1 code Mã đơn vị UCUM — đối chiếu được với property `ucum-unit` của mã CLS
... interpretation SO 0..* CodeableConcept Diễn giải (H, L, N, A...)
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... note 0..* Annotation Ghi chú kết quả
... method SO 0..1 CodeableConcept Phương pháp xét nghiệm — TT 49/2018/TT-BYT Điều 5 khoản 4 điểm a
Binding: ObservationMethods (example): Methods for simple observations.
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... specimen 0..1 Reference(Mẫu bệnh phẩm VN Core — VN Core Specimen Profile) Mẫu bệnh phẩm
... referenceRange C 0..* BackboneElement Khoảng tham chiếu
Constraints: obs-3
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
... component SOΣ 0..* BackboneElement Component results
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... code SΣC 1..1 CodeableConcept Mã chỉ số xét nghiệm thành phần — LOINC hoặc danh mục CLS Việt Nam
Binding: Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet (extensible)
Constraints: vn-lab-observation-code-system

doco Documentation for this format
NameBên yêu cầu dữ liệu lõi (Data Requester)Kho hồ sơ EMR (Repository)Bên đáp ứng dữ liệu lõi (Data Responder)Nguồn tạo hồ sơ lâm sàng (Document Source)doco
.. Observation
... status
... Slices for category
.... category:Laboratory
... code
.... Slices for coding
... effective[x]
... Slices for value[x]
... interpretation
... method
... component

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Observation.status Base required ObservationStatus 📍4.0.1 FHIR Std.
Observation.category Base preferred Observation Category Codes 📍4.0.1 FHIR Std.
Observation.category:Laboratory Base preferred Observation Category Codes 📍4.0.1 FHIR Std.
Observation.code Base extensible Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet 📦0.10.0 This IG
Observation.value[x]:valueQuantity.​comparator Base required QuantityComparator 📍4.0.1 FHIR Std.
Observation.interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.
Observation.method Base example Observation Methods 📍4.0.1 FHIR Std.
Observation.component.​code Base extensible Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet 📦0.10.0 This IG

Constraints

Id Grade Path(s) Description Expression
dom-2 error Observation If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Observation 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 Observation 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 Observation If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Observation 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()
obs-3 error Observation.referenceRange Must have at least a low or a high or text low.exists() or high.exists() or text.exists()
obs-6 error Observation dataAbsentReason SHALL only be present if Observation.value[x] is not present dataAbsentReason.empty() or value.empty()
obs-7 error Observation If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()
vn-lab-final-result-complete error Observation Kết quả xét nghiệm ở trạng thái final/amended/corrected phải có ĐÚNG MỘT trong hai: giá trị (value) hoặc lý do vắng giá trị (dataAbsentReason) — trừ panel dùng hasMember hoặc kết quả đa thành phần dùng component, và KHI dùng component thì TỪNG component cũng phải tự đủ value-xor-dataAbsentReason (siết P1 #2 round 3, 14/08/2026: component RỖNG từng là đường né hợp đồng; hasMember treo — trỏ resource không tồn tại — bị chặn ở tầng example-graph closure). A final/amended/corrected lab result SHALL have exactly one of value[x] or dataAbsentReason, unless it is a panel (hasMember) or a multi-component result whose EVERY component itself carries exactly one of value[x] or dataAbsentReason. (status = 'final' or status = 'amended' or status = 'corrected') implies (hasMember.where(reference.exists() or identifier.exists()).exists() or (component.exists() and component.all(value.exists() xor dataAbsentReason.coding.exists())) or (value.exists() xor dataAbsentReason.coding.exists()))
vn-lab-observation-code-system error Observation.code, Observation.component.code Mã xét nghiệm phải có ít nhất một coding thuộc LOINC hoặc danh mục chỉ số cận lâm sàng Việt Nam. A lab result code SHALL carry at least one coding from LOINC or the Vietnamese clinical-lab indicator catalogue. coding.where(system.hasValue() and code.hasValue() and (system = 'http://loinc.org' or system = 'http://fhir.hl7.org.vn/core/CodeSystem/vn-cls-cs')).exists()
vn-lab-observation-ucum error Observation Kết quả dạng số — ở giá trị gốc HOẶC ở từng component — phải dùng đơn vị UCUM và có mã đơn vị, không chỉ có tên đơn vị dạng chữ. A quantitative lab result SHALL use a UCUM-coded unit. (value.ofType(Quantity).exists() implies (value.ofType(Quantity).system.hasValue() and value.ofType(Quantity).system = 'http://unitsofmeasure.org' and value.ofType(Quantity).code.hasValue())) and component.value.ofType(Quantity).all(system.hasValue() and system = 'http://unitsofmeasure.org' and code.hasValue())

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Observation C 0..* Observation Measurements and simple assertions
Constraints: vn-lab-observation-ucum, vn-lab-final-result-complete
... basedOn 0..* Reference(Yêu cầu DVKT/Cận lâm sàng VN Core — VN Core ServiceRequest Profile) Chỉ định xét nghiệm làm căn cứ trả kết quả
... status SO 1..1 code Trạng thái (registered, preliminary, final, amended)
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... Slices for category SO 1..* CodeableConcept Classification of type of observation
Slice: Unordered, Open by value:$this
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... category:Laboratory SO 1..1 CodeableConcept Classification of type of observation
Required Pattern: At least the following
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
..... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
...... system 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
...... code 1..1 code Symbol in syntax defined by the system
Fixed Value: laboratory
...... display 1..1 string Representation defined by the system
Fixed Value: Laboratory
.... Slices for coding 0..* Coding Code defined by a terminology system
Slice: Unordered, Open by value:system
..... coding:loinc S 0..1 Coding Mã LOINC
...... system 1..1 uri Identity of the terminology system
Fixed Value: http://loinc.org
...... code 1..1 code Symbol in syntax defined by the system
..... coding:vnCls S 0..1 Coding Mã chỉ số cận lâm sàng Việt Nam (QĐ 1227/QĐ-BYT) — miền xét nghiệm
...... system 1..1 uri Identity of the terminology system
Fixed Value: http://fhir.hl7.org.vn/core/CodeSystem/vn-cls-cs
...... code 1..1 code Symbol in syntax defined by the system
... subject SO 1..1 Reference(Bệnh nhân VN Core — VN Core Patient Profile) Bệnh nhân
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... encounter 0..1 Reference(Lượt khám/nhập viện VN Core — VN Core Encounter Profile) Lượt khám liên quan
... effective[x] SO 1..1 dateTime, Period, Timing, instant Thời điểm lấy mẫu/đo
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... performer 0..* Reference(Nhân viên y tế VN Core — VN Core Practitioner Profile | Vai trò nhân viên y tế VN Core — VN Core PractitionerRole Profile | Cơ sở y tế VN Core — VN Core Organization Profile) Người/đơn vị thực hiện xét nghiệm
... Slices for value[x] SO 0..1 Quantity, CodeableConcept, string, boolean, integer, Range, Ratio, SampledData, time, dateTime, Period Kết quả xét nghiệm
Slice: Unordered, Open by type:$this
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... value[x]:valueQuantity 0..1 Quantity Actual result
..... system 0..1 uri System that defines coded unit form
Fixed Value: http://unitsofmeasure.org
..... code S 0..1 code Mã đơn vị UCUM — đối chiếu được với property `ucum-unit` của mã CLS
... interpretation SO 0..* CodeableConcept Diễn giải (H, L, N, A...)
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... note 0..* Annotation Ghi chú kết quả
... method SO 0..1 CodeableConcept Phương pháp xét nghiệm — TT 49/2018/TT-BYT Điều 5 khoản 4 điểm a
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... specimen 0..1 Reference(Mẫu bệnh phẩm VN Core — VN Core Specimen Profile) Mẫu bệnh phẩm
... referenceRange 0..* BackboneElement Khoảng tham chiếu
... component SO 0..* BackboneElement Component results
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... code SC 1..1 CodeableConcept Mã chỉ số xét nghiệm thành phần — LOINC hoặc danh mục CLS Việt Nam
Binding: Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet (extensible)
Constraints: vn-lab-observation-code-system

doco Documentation for this format
NameBên yêu cầu dữ liệu lõi (Data Requester)Kho hồ sơ EMR (Repository)Bên đáp ứng dữ liệu lõi (Data Responder)Nguồn tạo hồ sơ lâm sàng (Document Source)doco
.. Observation
... status
... Slices for category
.... category:Laboratory
... code
.... Slices for coding
... effective[x]
... Slices for value[x]
... interpretation
... method
... component

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
Observation.code Base extensible Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet 📦0.10.0 This IG
Observation.component.​code Base extensible Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet 📦0.10.0 This IG

Constraints

Id Grade Path(s) Description Expression
vn-lab-final-result-complete error Observation Kết quả xét nghiệm ở trạng thái final/amended/corrected phải có ĐÚNG MỘT trong hai: giá trị (value) hoặc lý do vắng giá trị (dataAbsentReason) — trừ panel dùng hasMember hoặc kết quả đa thành phần dùng component, và KHI dùng component thì TỪNG component cũng phải tự đủ value-xor-dataAbsentReason (siết P1 #2 round 3, 14/08/2026: component RỖNG từng là đường né hợp đồng; hasMember treo — trỏ resource không tồn tại — bị chặn ở tầng example-graph closure). A final/amended/corrected lab result SHALL have exactly one of value[x] or dataAbsentReason, unless it is a panel (hasMember) or a multi-component result whose EVERY component itself carries exactly one of value[x] or dataAbsentReason. (status = 'final' or status = 'amended' or status = 'corrected') implies (hasMember.where(reference.exists() or identifier.exists()).exists() or (component.exists() and component.all(value.exists() xor dataAbsentReason.coding.exists())) or (value.exists() xor dataAbsentReason.coding.exists()))
vn-lab-observation-code-system error Observation.code, Observation.component.code Mã xét nghiệm phải có ít nhất một coding thuộc LOINC hoặc danh mục chỉ số cận lâm sàng Việt Nam. A lab result code SHALL carry at least one coding from LOINC or the Vietnamese clinical-lab indicator catalogue. coding.where(system.hasValue() and code.hasValue() and (system = 'http://loinc.org' or system = 'http://fhir.hl7.org.vn/core/CodeSystem/vn-cls-cs')).exists()
vn-lab-observation-ucum error Observation Kết quả dạng số — ở giá trị gốc HOẶC ở từng component — phải dùng đơn vị UCUM và có mã đơn vị, không chỉ có tên đơn vị dạng chữ. A quantitative lab result SHALL use a UCUM-coded unit. (value.ofType(Quantity).exists() implies (value.ofType(Quantity).system.hasValue() and value.ofType(Quantity).system = 'http://unitsofmeasure.org' and value.ofType(Quantity).code.hasValue())) and component.value.ofType(Quantity).all(system.hasValue() and system = 'http://unitsofmeasure.org' and code.hasValue())
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Observation C 0..* Observation Measurements and simple assertions
Constraints: obs-6, obs-7, vn-lab-observation-ucum, vn-lab-final-result-complete
... 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
... language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding
... 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
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier Σ 0..* Identifier Business Identifier for observation
... basedOn Σ 0..* Reference(Yêu cầu DVKT/Cận lâm sàng VN Core — VN Core ServiceRequest Profile) Chỉ định xét nghiệm làm căn cứ trả kết quả
... partOf Σ 0..* Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy) Part of referenced event
... status ?!SOΣ 1..1 code Trạng thái (registered, preliminary, final, amended)
Binding: ObservationStatus (required): Codes providing the status of an observation.
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... Slices for category SO 1..* CodeableConcept Classification of type of observation
Slice: Unordered, Open by value:$this
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... category:Laboratory SO 1..1 CodeableConcept Classification of type of observation
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.

Required Pattern: At least the following
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
...... system 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
...... version 0..1 string Version of the system - if relevant
...... code 1..1 code Symbol in syntax defined by the system
Fixed Value: laboratory
...... display 1..1 string Representation defined by the system
Fixed Value: Laboratory
...... userSelected 0..1 boolean If this coding was chosen directly by the user
..... text 0..1 string Plain text representation of the concept
... code SOΣC 1..1 CodeableConcept Mã xét nghiệm — LOINC và/hoặc danh mục chỉ số cận lâm sàng Việt Nam
Binding: Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet (extensible)
Constraints: vn-lab-observation-code-system
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... Slices for coding Σ 0..* Coding Code defined by a terminology system
Slice: Unordered, Open by value:system
..... coding:loinc SΣ 0..1 Coding Mã LOINC
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... system Σ 1..1 uri Identity of the terminology system
Fixed Value: http://loinc.org
...... version Σ 0..1 string Version of the system - if relevant
...... code Σ 1..1 code Symbol in syntax defined by the system
...... display Σ 0..1 string Representation defined by the system
...... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
..... coding:vnCls SΣ 0..1 Coding Mã chỉ số cận lâm sàng Việt Nam (QĐ 1227/QĐ-BYT) — miền xét nghiệm
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... system Σ 1..1 uri Identity of the terminology system
Fixed Value: http://fhir.hl7.org.vn/core/CodeSystem/vn-cls-cs
...... version Σ 0..1 string Version of the system - if relevant
...... code Σ 1..1 code Symbol in syntax defined by the system
...... display Σ 0..1 string Representation defined by the system
...... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
.... text Σ 0..1 string Plain text representation of the concept
... subject SOΣ 1..1 Reference(Bệnh nhân VN Core — VN Core Patient Profile) Bệnh nhân
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... focus Σ 0..* Reference(Resource) What the observation is about, when it is not about the subject of record
... encounter Σ 0..1 Reference(Lượt khám/nhập viện VN Core — VN Core Encounter Profile) Lượt khám liên quan
... effective[x] SOΣ 1..1 Thời điểm lấy mẫu/đo
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... effectiveDateTime dateTime
.... effectivePeriod Period
.... effectiveTiming Timing
.... effectiveInstant instant
... issued Σ 0..1 instant Date/Time this version was made available
... performer Σ 0..* Reference(Nhân viên y tế VN Core — VN Core Practitioner Profile | Vai trò nhân viên y tế VN Core — VN Core PractitionerRole Profile | Cơ sở y tế VN Core — VN Core Organization Profile) Người/đơn vị thực hiện xét nghiệm
... Slices for value[x] SOΣC 0..1 Kết quả xét nghiệm
Slice: Unordered, Open by type:$this
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... valueQuantity Quantity
.... valueCodeableConcept CodeableConcept
.... valueString string
.... valueBoolean boolean
.... valueInteger integer
.... valueRange Range
.... valueRatio Ratio
.... valueSampledData SampledData
.... valueTime time
.... valueDateTime dateTime
.... valuePeriod Period
.... value[x]:valueQuantity ΣC 0..1 Quantity Actual result
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... value Σ 0..1 decimal Numerical value (with implicit precision)
..... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.
..... unit Σ 0..1 string Unit representation
..... system ΣC 0..1 uri System that defines coded unit form
Fixed Value: http://unitsofmeasure.org
..... code SΣ 0..1 code Mã đơn vị UCUM — đối chiếu được với property `ucum-unit` của mã CLS
... dataAbsentReason C 0..1 CodeableConcept Why the result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
... interpretation SO 0..* CodeableConcept Diễn giải (H, L, N, A...)
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... note 0..* Annotation Ghi chú kết quả
... bodySite 0..1 CodeableConcept Observed body part
Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.
... method SO 0..1 CodeableConcept Phương pháp xét nghiệm — TT 49/2018/TT-BYT Điều 5 khoản 4 điểm a
Binding: ObservationMethods (example): Methods for simple observations.
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... specimen 0..1 Reference(Mẫu bệnh phẩm VN Core — VN Core Specimen Profile) Mẫu bệnh phẩm
... device 0..1 Reference(Device | DeviceMetric) (Measurement) Device
... referenceRange C 0..* BackboneElement Khoảng tham chiếu
Constraints: obs-3
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... low C 0..1 SimpleQuantity(4.0.1) Low Range, if relevant
.... high C 0..1 SimpleQuantity(4.0.1) High Range, if relevant
.... type 0..1 CodeableConcept Reference range qualifier
Binding: ObservationReferenceRangeMeaningCodes (preferred): Code for the meaning of a reference range.
.... appliesTo 0..* CodeableConcept Reference range population
Binding: ObservationReferenceRangeAppliesToCodes (example): Codes identifying the population the reference range applies to.
.... age 0..1 Range Applicable age range, if relevant
.... text 0..1 string Text based reference range in an observation
... hasMember Σ 0..* Reference(Observation | QuestionnaireResponse | MolecularSequence) Related resource that belongs to the Observation group
... derivedFrom Σ 0..* Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence) Related measurements the observation is made from
... component SOΣ 0..* BackboneElement Component results
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... code SΣC 1..1 CodeableConcept Mã chỉ số xét nghiệm thành phần — LOINC hoặc danh mục CLS Việt Nam
Binding: Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet (extensible)
Constraints: vn-lab-observation-code-system
.... value[x] Σ 0..1 Actual component result
..... valueQuantity Quantity
..... valueCodeableConcept CodeableConcept
..... valueString string
..... valueBoolean boolean
..... valueInteger integer
..... valueRange Range
..... valueRatio Ratio
..... valueSampledData SampledData
..... valueTime time
..... valueDateTime dateTime
..... valuePeriod Period
.... dataAbsentReason C 0..1 CodeableConcept Why the component result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
.... interpretation 0..* CodeableConcept High, low, normal, etc.
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
.... referenceRange 0..* See referenceRange (Observation) Provides guide for interpretation of component result

doco Documentation for this format
NameBên yêu cầu dữ liệu lõi (Data Requester)Kho hồ sơ EMR (Repository)Bên đáp ứng dữ liệu lõi (Data Responder)Nguồn tạo hồ sơ lâm sàng (Document Source)doco
.. Observation
... status
... Slices for category
.... category:Laboratory
... code
.... Slices for coding
... effective[x]
... Slices for value[x]
... interpretation
... method
... component

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Observation.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Observation.status Base required ObservationStatus 📍4.0.1 FHIR Std.
Observation.category Base preferred Observation Category Codes 📍4.0.1 FHIR Std.
Observation.category:Laboratory Base preferred Observation Category Codes 📍4.0.1 FHIR Std.
Observation.code Base extensible Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet 📦0.10.0 This IG
Observation.value[x]:valueQuantity.​comparator Base required QuantityComparator 📍4.0.1 FHIR Std.
Observation.dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.
Observation.bodySite Base example SNOMED CT Body Structures 📍4.0.1 FHIR Std.
Observation.method Base example Observation Methods 📍4.0.1 FHIR Std.
Observation.referenceRange.​type Base preferred Observation Reference Range Meaning Codes 📍4.0.1 FHIR Std.
Observation.referenceRange.​appliesTo Base example Observation Reference Range Applies To Codes 📍4.0.1 FHIR Std.
Observation.component.​code Base extensible Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet 📦0.10.0 This IG
Observation.component.​dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.component.​interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error Observation If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Observation 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 Observation 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 Observation If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Observation 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()
obs-3 error Observation.referenceRange Must have at least a low or a high or text low.exists() or high.exists() or text.exists()
obs-6 error Observation dataAbsentReason SHALL only be present if Observation.value[x] is not present dataAbsentReason.empty() or value.empty()
obs-7 error Observation If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()
vn-lab-final-result-complete error Observation Kết quả xét nghiệm ở trạng thái final/amended/corrected phải có ĐÚNG MỘT trong hai: giá trị (value) hoặc lý do vắng giá trị (dataAbsentReason) — trừ panel dùng hasMember hoặc kết quả đa thành phần dùng component, và KHI dùng component thì TỪNG component cũng phải tự đủ value-xor-dataAbsentReason (siết P1 #2 round 3, 14/08/2026: component RỖNG từng là đường né hợp đồng; hasMember treo — trỏ resource không tồn tại — bị chặn ở tầng example-graph closure). A final/amended/corrected lab result SHALL have exactly one of value[x] or dataAbsentReason, unless it is a panel (hasMember) or a multi-component result whose EVERY component itself carries exactly one of value[x] or dataAbsentReason. (status = 'final' or status = 'amended' or status = 'corrected') implies (hasMember.where(reference.exists() or identifier.exists()).exists() or (component.exists() and component.all(value.exists() xor dataAbsentReason.coding.exists())) or (value.exists() xor dataAbsentReason.coding.exists()))
vn-lab-observation-code-system error Observation.code, Observation.component.code Mã xét nghiệm phải có ít nhất một coding thuộc LOINC hoặc danh mục chỉ số cận lâm sàng Việt Nam. A lab result code SHALL carry at least one coding from LOINC or the Vietnamese clinical-lab indicator catalogue. coding.where(system.hasValue() and code.hasValue() and (system = 'http://loinc.org' or system = 'http://fhir.hl7.org.vn/core/CodeSystem/vn-cls-cs')).exists()
vn-lab-observation-ucum error Observation Kết quả dạng số — ở giá trị gốc HOẶC ở từng component — phải dùng đơn vị UCUM và có mã đơn vị, không chỉ có tên đơn vị dạng chữ. A quantitative lab result SHALL use a UCUM-coded unit. (value.ofType(Quantity).exists() implies (value.ofType(Quantity).system.hasValue() and value.ofType(Quantity).system = 'http://unitsofmeasure.org' and value.ofType(Quantity).code.hasValue())) and component.value.ofType(Quantity).all(system.hasValue() and system = 'http://unitsofmeasure.org' and code.hasValue())

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Observation C 0..* Observation Measurements and simple assertions
Constraints: obs-6, obs-7, vn-lab-observation-ucum, vn-lab-final-result-complete
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... basedOn Σ 0..* Reference(Yêu cầu DVKT/Cận lâm sàng VN Core — VN Core ServiceRequest Profile) Chỉ định xét nghiệm làm căn cứ trả kết quả
... Slices for category SO 1..* CodeableConcept Classification of type of observation
Slice: Unordered, Open by value:$this
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... category:Laboratory SO 1..1 CodeableConcept Classification of type of observation
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.

Required Pattern: At least the following
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
...... system 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
...... version 0..1 string Version of the system - if relevant
...... code 1..1 code Symbol in syntax defined by the system
Fixed Value: laboratory
...... display 1..1 string Representation defined by the system
Fixed Value: Laboratory
...... userSelected 0..1 boolean If this coding was chosen directly by the user
..... text 0..1 string Plain text representation of the concept
... code SOΣC 1..1 CodeableConcept Mã xét nghiệm — LOINC và/hoặc danh mục chỉ số cận lâm sàng Việt Nam
Binding: Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet (extensible)
Constraints: vn-lab-observation-code-system
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... Slices for coding Σ 0..* Coding Code defined by a terminology system
Slice: Unordered, Open by value:system
..... coding:loinc SΣ 0..1 Coding Mã LOINC
...... system Σ 1..1 uri Identity of the terminology system
Fixed Value: http://loinc.org
...... code Σ 1..1 code Symbol in syntax defined by the system
..... coding:vnCls SΣ 0..1 Coding Mã chỉ số cận lâm sàng Việt Nam (QĐ 1227/QĐ-BYT) — miền xét nghiệm
...... system Σ 1..1 uri Identity of the terminology system
Fixed Value: http://fhir.hl7.org.vn/core/CodeSystem/vn-cls-cs
...... code Σ 1..1 code Symbol in syntax defined by the system
... subject SOΣ 1..1 Reference(Bệnh nhân VN Core — VN Core Patient Profile) Bệnh nhân
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... encounter Σ 0..1 Reference(Lượt khám/nhập viện VN Core — VN Core Encounter Profile) Lượt khám liên quan
... effective[x] SOΣ 1..1 Thời điểm lấy mẫu/đo
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... effectiveDateTime dateTime
.... effectivePeriod Period
.... effectiveTiming Timing
.... effectiveInstant instant
... performer Σ 0..* Reference(Nhân viên y tế VN Core — VN Core Practitioner Profile | Vai trò nhân viên y tế VN Core — VN Core PractitionerRole Profile | Cơ sở y tế VN Core — VN Core Organization Profile) Người/đơn vị thực hiện xét nghiệm
... Slices for value[x] SOΣC 0..1 Kết quả xét nghiệm
Slice: Unordered, Open by type:$this
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... valueQuantity Quantity
.... valueCodeableConcept CodeableConcept
.... valueString string
.... valueBoolean boolean
.... valueInteger integer
.... valueRange Range
.... valueRatio Ratio
.... valueSampledData SampledData
.... valueTime time
.... valueDateTime dateTime
.... valuePeriod Period
.... value[x]:valueQuantity ΣC 0..1 Quantity Actual result
..... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.
..... system ΣC 0..1 uri System that defines coded unit form
Fixed Value: http://unitsofmeasure.org
..... code SΣ 0..1 code Mã đơn vị UCUM — đối chiếu được với property `ucum-unit` của mã CLS
... interpretation SO 0..* CodeableConcept Diễn giải (H, L, N, A...)
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... note 0..* Annotation Ghi chú kết quả
... method SO 0..1 CodeableConcept Phương pháp xét nghiệm — TT 49/2018/TT-BYT Điều 5 khoản 4 điểm a
Binding: ObservationMethods (example): Methods for simple observations.
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... specimen 0..1 Reference(Mẫu bệnh phẩm VN Core — VN Core Specimen Profile) Mẫu bệnh phẩm
... referenceRange C 0..* BackboneElement Khoảng tham chiếu
Constraints: obs-3
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
... component SOΣ 0..* BackboneElement Component results
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... code SΣC 1..1 CodeableConcept Mã chỉ số xét nghiệm thành phần — LOINC hoặc danh mục CLS Việt Nam
Binding: Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet (extensible)
Constraints: vn-lab-observation-code-system

doco Documentation for this format
NameBên yêu cầu dữ liệu lõi (Data Requester)Kho hồ sơ EMR (Repository)Bên đáp ứng dữ liệu lõi (Data Responder)Nguồn tạo hồ sơ lâm sàng (Document Source)doco
.. Observation
... status
... Slices for category
.... category:Laboratory
... code
.... Slices for coding
... effective[x]
... Slices for value[x]
... interpretation
... method
... component

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Observation.status Base required ObservationStatus 📍4.0.1 FHIR Std.
Observation.category Base preferred Observation Category Codes 📍4.0.1 FHIR Std.
Observation.category:Laboratory Base preferred Observation Category Codes 📍4.0.1 FHIR Std.
Observation.code Base extensible Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet 📦0.10.0 This IG
Observation.value[x]:valueQuantity.​comparator Base required QuantityComparator 📍4.0.1 FHIR Std.
Observation.interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.
Observation.method Base example Observation Methods 📍4.0.1 FHIR Std.
Observation.component.​code Base extensible Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet 📦0.10.0 This IG

Constraints

Id Grade Path(s) Description Expression
dom-2 error Observation If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Observation 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 Observation 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 Observation If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Observation 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()
obs-3 error Observation.referenceRange Must have at least a low or a high or text low.exists() or high.exists() or text.exists()
obs-6 error Observation dataAbsentReason SHALL only be present if Observation.value[x] is not present dataAbsentReason.empty() or value.empty()
obs-7 error Observation If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()
vn-lab-final-result-complete error Observation Kết quả xét nghiệm ở trạng thái final/amended/corrected phải có ĐÚNG MỘT trong hai: giá trị (value) hoặc lý do vắng giá trị (dataAbsentReason) — trừ panel dùng hasMember hoặc kết quả đa thành phần dùng component, và KHI dùng component thì TỪNG component cũng phải tự đủ value-xor-dataAbsentReason (siết P1 #2 round 3, 14/08/2026: component RỖNG từng là đường né hợp đồng; hasMember treo — trỏ resource không tồn tại — bị chặn ở tầng example-graph closure). A final/amended/corrected lab result SHALL have exactly one of value[x] or dataAbsentReason, unless it is a panel (hasMember) or a multi-component result whose EVERY component itself carries exactly one of value[x] or dataAbsentReason. (status = 'final' or status = 'amended' or status = 'corrected') implies (hasMember.where(reference.exists() or identifier.exists()).exists() or (component.exists() and component.all(value.exists() xor dataAbsentReason.coding.exists())) or (value.exists() xor dataAbsentReason.coding.exists()))
vn-lab-observation-code-system error Observation.code, Observation.component.code Mã xét nghiệm phải có ít nhất một coding thuộc LOINC hoặc danh mục chỉ số cận lâm sàng Việt Nam. A lab result code SHALL carry at least one coding from LOINC or the Vietnamese clinical-lab indicator catalogue. coding.where(system.hasValue() and code.hasValue() and (system = 'http://loinc.org' or system = 'http://fhir.hl7.org.vn/core/CodeSystem/vn-cls-cs')).exists()
vn-lab-observation-ucum error Observation Kết quả dạng số — ở giá trị gốc HOẶC ở từng component — phải dùng đơn vị UCUM và có mã đơn vị, không chỉ có tên đơn vị dạng chữ. A quantitative lab result SHALL use a UCUM-coded unit. (value.ofType(Quantity).exists() implies (value.ofType(Quantity).system.hasValue() and value.ofType(Quantity).system = 'http://unitsofmeasure.org' and value.ofType(Quantity).code.hasValue())) and component.value.ofType(Quantity).all(system.hasValue() and system = 'http://unitsofmeasure.org' and code.hasValue())

Dạng xem Differential

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Observation C 0..* Observation Measurements and simple assertions
Constraints: vn-lab-observation-ucum, vn-lab-final-result-complete
... basedOn 0..* Reference(Yêu cầu DVKT/Cận lâm sàng VN Core — VN Core ServiceRequest Profile) Chỉ định xét nghiệm làm căn cứ trả kết quả
... status SO 1..1 code Trạng thái (registered, preliminary, final, amended)
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... Slices for category SO 1..* CodeableConcept Classification of type of observation
Slice: Unordered, Open by value:$this
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... category:Laboratory SO 1..1 CodeableConcept Classification of type of observation
Required Pattern: At least the following
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
..... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
...... system 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
...... code 1..1 code Symbol in syntax defined by the system
Fixed Value: laboratory
...... display 1..1 string Representation defined by the system
Fixed Value: Laboratory
.... Slices for coding 0..* Coding Code defined by a terminology system
Slice: Unordered, Open by value:system
..... coding:loinc S 0..1 Coding Mã LOINC
...... system 1..1 uri Identity of the terminology system
Fixed Value: http://loinc.org
...... code 1..1 code Symbol in syntax defined by the system
..... coding:vnCls S 0..1 Coding Mã chỉ số cận lâm sàng Việt Nam (QĐ 1227/QĐ-BYT) — miền xét nghiệm
...... system 1..1 uri Identity of the terminology system
Fixed Value: http://fhir.hl7.org.vn/core/CodeSystem/vn-cls-cs
...... code 1..1 code Symbol in syntax defined by the system
... subject SO 1..1 Reference(Bệnh nhân VN Core — VN Core Patient Profile) Bệnh nhân
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... encounter 0..1 Reference(Lượt khám/nhập viện VN Core — VN Core Encounter Profile) Lượt khám liên quan
... effective[x] SO 1..1 dateTime, Period, Timing, instant Thời điểm lấy mẫu/đo
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... performer 0..* Reference(Nhân viên y tế VN Core — VN Core Practitioner Profile | Vai trò nhân viên y tế VN Core — VN Core PractitionerRole Profile | Cơ sở y tế VN Core — VN Core Organization Profile) Người/đơn vị thực hiện xét nghiệm
... Slices for value[x] SO 0..1 Quantity, CodeableConcept, string, boolean, integer, Range, Ratio, SampledData, time, dateTime, Period Kết quả xét nghiệm
Slice: Unordered, Open by type:$this
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... value[x]:valueQuantity 0..1 Quantity Actual result
..... system 0..1 uri System that defines coded unit form
Fixed Value: http://unitsofmeasure.org
..... code S 0..1 code Mã đơn vị UCUM — đối chiếu được với property `ucum-unit` của mã CLS
... interpretation SO 0..* CodeableConcept Diễn giải (H, L, N, A...)
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... note 0..* Annotation Ghi chú kết quả
... method SO 0..1 CodeableConcept Phương pháp xét nghiệm — TT 49/2018/TT-BYT Điều 5 khoản 4 điểm a
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... specimen 0..1 Reference(Mẫu bệnh phẩm VN Core — VN Core Specimen Profile) Mẫu bệnh phẩm
... referenceRange 0..* BackboneElement Khoảng tham chiếu
... component SO 0..* BackboneElement Component results
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... code SC 1..1 CodeableConcept Mã chỉ số xét nghiệm thành phần — LOINC hoặc danh mục CLS Việt Nam
Binding: Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet (extensible)
Constraints: vn-lab-observation-code-system

doco Documentation for this format
NameBên yêu cầu dữ liệu lõi (Data Requester)Kho hồ sơ EMR (Repository)Bên đáp ứng dữ liệu lõi (Data Responder)Nguồn tạo hồ sơ lâm sàng (Document Source)doco
.. Observation
... status
... Slices for category
.... category:Laboratory
... code
.... Slices for coding
... effective[x]
... Slices for value[x]
... interpretation
... method
... component

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
Observation.code Base extensible Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet 📦0.10.0 This IG
Observation.component.​code Base extensible Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet 📦0.10.0 This IG

Constraints

Id Grade Path(s) Description Expression
vn-lab-final-result-complete error Observation Kết quả xét nghiệm ở trạng thái final/amended/corrected phải có ĐÚNG MỘT trong hai: giá trị (value) hoặc lý do vắng giá trị (dataAbsentReason) — trừ panel dùng hasMember hoặc kết quả đa thành phần dùng component, và KHI dùng component thì TỪNG component cũng phải tự đủ value-xor-dataAbsentReason (siết P1 #2 round 3, 14/08/2026: component RỖNG từng là đường né hợp đồng; hasMember treo — trỏ resource không tồn tại — bị chặn ở tầng example-graph closure). A final/amended/corrected lab result SHALL have exactly one of value[x] or dataAbsentReason, unless it is a panel (hasMember) or a multi-component result whose EVERY component itself carries exactly one of value[x] or dataAbsentReason. (status = 'final' or status = 'amended' or status = 'corrected') implies (hasMember.where(reference.exists() or identifier.exists()).exists() or (component.exists() and component.all(value.exists() xor dataAbsentReason.coding.exists())) or (value.exists() xor dataAbsentReason.coding.exists()))
vn-lab-observation-code-system error Observation.code, Observation.component.code Mã xét nghiệm phải có ít nhất một coding thuộc LOINC hoặc danh mục chỉ số cận lâm sàng Việt Nam. A lab result code SHALL carry at least one coding from LOINC or the Vietnamese clinical-lab indicator catalogue. coding.where(system.hasValue() and code.hasValue() and (system = 'http://loinc.org' or system = 'http://fhir.hl7.org.vn/core/CodeSystem/vn-cls-cs')).exists()
vn-lab-observation-ucum error Observation Kết quả dạng số — ở giá trị gốc HOẶC ở từng component — phải dùng đơn vị UCUM và có mã đơn vị, không chỉ có tên đơn vị dạng chữ. A quantitative lab result SHALL use a UCUM-coded unit. (value.ofType(Quantity).exists() implies (value.ofType(Quantity).system.hasValue() and value.ofType(Quantity).system = 'http://unitsofmeasure.org' and value.ofType(Quantity).code.hasValue())) and component.value.ofType(Quantity).all(system.hasValue() and system = 'http://unitsofmeasure.org' and code.hasValue())

Dạng xem SnapshotView

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Observation C 0..* Observation Measurements and simple assertions
Constraints: obs-6, obs-7, vn-lab-observation-ucum, vn-lab-final-result-complete
... 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
... language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding
... 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
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier Σ 0..* Identifier Business Identifier for observation
... basedOn Σ 0..* Reference(Yêu cầu DVKT/Cận lâm sàng VN Core — VN Core ServiceRequest Profile) Chỉ định xét nghiệm làm căn cứ trả kết quả
... partOf Σ 0..* Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy) Part of referenced event
... status ?!SOΣ 1..1 code Trạng thái (registered, preliminary, final, amended)
Binding: ObservationStatus (required): Codes providing the status of an observation.
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... Slices for category SO 1..* CodeableConcept Classification of type of observation
Slice: Unordered, Open by value:$this
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... category:Laboratory SO 1..1 CodeableConcept Classification of type of observation
Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories.

Required Pattern: At least the following
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... coding 1..* Coding Code defined by a terminology system
Fixed Value: (Complex)
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
...... system 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
...... version 0..1 string Version of the system - if relevant
...... code 1..1 code Symbol in syntax defined by the system
Fixed Value: laboratory
...... display 1..1 string Representation defined by the system
Fixed Value: Laboratory
...... userSelected 0..1 boolean If this coding was chosen directly by the user
..... text 0..1 string Plain text representation of the concept
... code SOΣC 1..1 CodeableConcept Mã xét nghiệm — LOINC và/hoặc danh mục chỉ số cận lâm sàng Việt Nam
Binding: Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet (extensible)
Constraints: vn-lab-observation-code-system
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... Slices for coding Σ 0..* Coding Code defined by a terminology system
Slice: Unordered, Open by value:system
..... coding:loinc SΣ 0..1 Coding Mã LOINC
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... system Σ 1..1 uri Identity of the terminology system
Fixed Value: http://loinc.org
...... version Σ 0..1 string Version of the system - if relevant
...... code Σ 1..1 code Symbol in syntax defined by the system
...... display Σ 0..1 string Representation defined by the system
...... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
..... coding:vnCls SΣ 0..1 Coding Mã chỉ số cận lâm sàng Việt Nam (QĐ 1227/QĐ-BYT) — miền xét nghiệm
...... id 0..1 string Unique id for inter-element referencing
...... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
...... system Σ 1..1 uri Identity of the terminology system
Fixed Value: http://fhir.hl7.org.vn/core/CodeSystem/vn-cls-cs
...... version Σ 0..1 string Version of the system - if relevant
...... code Σ 1..1 code Symbol in syntax defined by the system
...... display Σ 0..1 string Representation defined by the system
...... userSelected Σ 0..1 boolean If this coding was chosen directly by the user
.... text Σ 0..1 string Plain text representation of the concept
... subject SOΣ 1..1 Reference(Bệnh nhân VN Core — VN Core Patient Profile) Bệnh nhân
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... focus Σ 0..* Reference(Resource) What the observation is about, when it is not about the subject of record
... encounter Σ 0..1 Reference(Lượt khám/nhập viện VN Core — VN Core Encounter Profile) Lượt khám liên quan
... effective[x] SOΣ 1..1 Thời điểm lấy mẫu/đo
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... effectiveDateTime dateTime
.... effectivePeriod Period
.... effectiveTiming Timing
.... effectiveInstant instant
... issued Σ 0..1 instant Date/Time this version was made available
... performer Σ 0..* Reference(Nhân viên y tế VN Core — VN Core Practitioner Profile | Vai trò nhân viên y tế VN Core — VN Core PractitionerRole Profile | Cơ sở y tế VN Core — VN Core Organization Profile) Người/đơn vị thực hiện xét nghiệm
... Slices for value[x] SOΣC 0..1 Kết quả xét nghiệm
Slice: Unordered, Open by type:$this
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... valueQuantity Quantity
.... valueCodeableConcept CodeableConcept
.... valueString string
.... valueBoolean boolean
.... valueInteger integer
.... valueRange Range
.... valueRatio Ratio
.... valueSampledData SampledData
.... valueTime time
.... valueDateTime dateTime
.... valuePeriod Period
.... value[x]:valueQuantity ΣC 0..1 Quantity Actual result
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
..... value Σ 0..1 decimal Numerical value (with implicit precision)
..... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.
..... unit Σ 0..1 string Unit representation
..... system ΣC 0..1 uri System that defines coded unit form
Fixed Value: http://unitsofmeasure.org
..... code SΣ 0..1 code Mã đơn vị UCUM — đối chiếu được với property `ucum-unit` của mã CLS
... dataAbsentReason C 0..1 CodeableConcept Why the result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
... interpretation SO 0..* CodeableConcept Diễn giải (H, L, N, A...)
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... note 0..* Annotation Ghi chú kết quả
... bodySite 0..1 CodeableConcept Observed body part
Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.
... method SO 0..1 CodeableConcept Phương pháp xét nghiệm — TT 49/2018/TT-BYT Điều 5 khoản 4 điểm a
Binding: ObservationMethods (example): Methods for simple observations.
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
... specimen 0..1 Reference(Mẫu bệnh phẩm VN Core — VN Core Specimen Profile) Mẫu bệnh phẩm
... device 0..1 Reference(Device | DeviceMetric) (Measurement) Device
... referenceRange C 0..* BackboneElement Khoảng tham chiếu
Constraints: obs-3
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... low C 0..1 SimpleQuantity(4.0.1) Low Range, if relevant
.... high C 0..1 SimpleQuantity(4.0.1) High Range, if relevant
.... type 0..1 CodeableConcept Reference range qualifier
Binding: ObservationReferenceRangeMeaningCodes (preferred): Code for the meaning of a reference range.
.... appliesTo 0..* CodeableConcept Reference range population
Binding: ObservationReferenceRangeAppliesToCodes (example): Codes identifying the population the reference range applies to.
.... age 0..1 Range Applicable age range, if relevant
.... text 0..1 string Text based reference range in an observation
... hasMember Σ 0..* Reference(Observation | QuestionnaireResponse | MolecularSequence) Related resource that belongs to the Observation group
... derivedFrom Σ 0..* Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence) Related measurements the observation is made from
... component SOΣ 0..* BackboneElement Component results
ObligationsActor
SHALL:populate-if-known Bên đáp ứng dữ liệu lõi (Data Responder)
SHALL:no-error & SHALL:handle Bên yêu cầu dữ liệu lõi (Data Requester)
SHALL:populate-if-known Nguồn tạo hồ sơ lâm sàng (Document Source)
SHALL:no-error & SHALL:persist Kho hồ sơ EMR (Repository)
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... code SΣC 1..1 CodeableConcept Mã chỉ số xét nghiệm thành phần — LOINC hoặc danh mục CLS Việt Nam
Binding: Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet (extensible)
Constraints: vn-lab-observation-code-system
.... value[x] Σ 0..1 Actual component result
..... valueQuantity Quantity
..... valueCodeableConcept CodeableConcept
..... valueString string
..... valueBoolean boolean
..... valueInteger integer
..... valueRange Range
..... valueRatio Ratio
..... valueSampledData SampledData
..... valueTime time
..... valueDateTime dateTime
..... valuePeriod Period
.... dataAbsentReason C 0..1 CodeableConcept Why the component result is missing
Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing.
.... interpretation 0..* CodeableConcept High, low, normal, etc.
Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations.
.... referenceRange 0..* See referenceRange (Observation) Provides guide for interpretation of component result

doco Documentation for this format
NameBên yêu cầu dữ liệu lõi (Data Requester)Kho hồ sơ EMR (Repository)Bên đáp ứng dữ liệu lõi (Data Responder)Nguồn tạo hồ sơ lâm sàng (Document Source)doco
.. Observation
... status
... Slices for category
.... category:Laboratory
... code
.... Slices for coding
... effective[x]
... Slices for value[x]
... interpretation
... method
... component

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Observation.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Observation.status Base required ObservationStatus 📍4.0.1 FHIR Std.
Observation.category Base preferred Observation Category Codes 📍4.0.1 FHIR Std.
Observation.category:Laboratory Base preferred Observation Category Codes 📍4.0.1 FHIR Std.
Observation.code Base extensible Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet 📦0.10.0 This IG
Observation.value[x]:valueQuantity.​comparator Base required QuantityComparator 📍4.0.1 FHIR Std.
Observation.dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.
Observation.bodySite Base example SNOMED CT Body Structures 📍4.0.1 FHIR Std.
Observation.method Base example Observation Methods 📍4.0.1 FHIR Std.
Observation.referenceRange.​type Base preferred Observation Reference Range Meaning Codes 📍4.0.1 FHIR Std.
Observation.referenceRange.​appliesTo Base example Observation Reference Range Applies To Codes 📍4.0.1 FHIR Std.
Observation.component.​code Base extensible Mã kết quả xét nghiệm — VN Lab Observation Code ValueSet 📦0.10.0 This IG
Observation.component.​dataAbsentReason Base extensible DataAbsentReason 📍4.0.1 FHIR Std.
Observation.component.​interpretation Base extensible Observation Interpretation Codes 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error Observation If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Observation 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 Observation 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 Observation If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Observation 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()
obs-3 error Observation.referenceRange Must have at least a low or a high or text low.exists() or high.exists() or text.exists()
obs-6 error Observation dataAbsentReason SHALL only be present if Observation.value[x] is not present dataAbsentReason.empty() or value.empty()
obs-7 error Observation If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()
vn-lab-final-result-complete error Observation Kết quả xét nghiệm ở trạng thái final/amended/corrected phải có ĐÚNG MỘT trong hai: giá trị (value) hoặc lý do vắng giá trị (dataAbsentReason) — trừ panel dùng hasMember hoặc kết quả đa thành phần dùng component, và KHI dùng component thì TỪNG component cũng phải tự đủ value-xor-dataAbsentReason (siết P1 #2 round 3, 14/08/2026: component RỖNG từng là đường né hợp đồng; hasMember treo — trỏ resource không tồn tại — bị chặn ở tầng example-graph closure). A final/amended/corrected lab result SHALL have exactly one of value[x] or dataAbsentReason, unless it is a panel (hasMember) or a multi-component result whose EVERY component itself carries exactly one of value[x] or dataAbsentReason. (status = 'final' or status = 'amended' or status = 'corrected') implies (hasMember.where(reference.exists() or identifier.exists()).exists() or (component.exists() and component.all(value.exists() xor dataAbsentReason.coding.exists())) or (value.exists() xor dataAbsentReason.coding.exists()))
vn-lab-observation-code-system error Observation.code, Observation.component.code Mã xét nghiệm phải có ít nhất một coding thuộc LOINC hoặc danh mục chỉ số cận lâm sàng Việt Nam. A lab result code SHALL carry at least one coding from LOINC or the Vietnamese clinical-lab indicator catalogue. coding.where(system.hasValue() and code.hasValue() and (system = 'http://loinc.org' or system = 'http://fhir.hl7.org.vn/core/CodeSystem/vn-cls-cs')).exists()
vn-lab-observation-ucum error Observation Kết quả dạng số — ở giá trị gốc HOẶC ở từng component — phải dùng đơn vị UCUM và có mã đơn vị, không chỉ có tên đơn vị dạng chữ. A quantitative lab result SHALL use a UCUM-coded unit. (value.ofType(Quantity).exists() implies (value.ofType(Quantity).system.hasValue() and value.ofType(Quantity).system = 'http://unitsofmeasure.org' and value.ofType(Quantity).code.hasValue())) and component.value.ofType(Quantity).all(system.hasValue() and system = 'http://unitsofmeasure.org' and code.hasValue())

 

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