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

Mô hình logic: Phép đo bắt buộc của bảng kiểm sàng lọc trước tiêm chủng (QĐ 1575/QĐ-BYT) — Logical Model - Mô tả chi tiết

Draft tại thời điểm 2026-09-22

Các định nghĩa cho vnPreVaccinationScreeningLm mô hình logic

Guidance on how to interpret the contents of this table can be foundhere

0. vnPreVaccinationScreeningLm
Definition

Logical model đặc tả các phép đo mà Quyết định 1575/QĐ-BYT (ban hành và hiệu lực 27/03/2023) BUỘC phải ghi trị số trên bảng kiểm sàng lọc trước tiêm chủng cho trẻ em — làm bảng chỉ tiêu văn bản để đối chiếu cardinality của profile cân nặng và profile nhiệt độ cơ thể.

Cả bốn mẫu bảng kiểm (Phụ lục I-IV) đều có ô 'Cân nặng: ____' và 'Thân nhiệt: ____ °C' nằm trong phần bắt buộc điền, trước mục I 'Khám sàng lọc'. Nghĩa vụ đo và ghi không suy từ việc mẫu có ô trống — phần IV.1 của hướng dẫn nói thẳng ai làm việc đó: 'Điều dưỡng viên, hộ sinh viên: Ghi các thông tin của trẻ, TRỰC TIẾP CÂN TRẺ, ĐO VÀ GHI KẾT QUẢ NHIỆT ĐỘ của trẻ', và 'Bác sĩ, y sĩ: … trực tiếp đo và ghi kết quả nhiệt độ của trẻ khi không có điều dưỡng viên, hộ sinh viên'. Hai trị số ấy còn là căn cứ của các mục sàng lọc dẫn tới tạm hoãn: ngưỡng thân nhiệt 'Sốt: nhiệt độ ≥ 38°C; Hạ thân nhiệt: nhiệt độ ≤ 35,5°C' (đo tại nách) có ở CẢ BỐN mẫu, còn ngưỡng 'Cân nặng < 2000g' CHỈ có ở hai mẫu dùng ngoài bệnh viện — Phụ lục III và IV không có mục ấy, và hướng dẫn tại bệnh viện còn ghi 'thực hiện tiêm chủng các vắc xin theo lịch với trẻ nhẹ cân (so với tuổi)'. Nghĩa vụ GHI TRỊ SỐ thì không đổi theo nơi tiêm.

Hai bản dành cho trẻ dưới 1 tháng (Phụ lục II và IV) ghi cân nặng bằng GAM, hai bản còn lại bằng KILÔGAM — xem chú thích tại canNang.giaTri về hệ quả với ràng buộc đơn vị của profile.

Model KHÔNG khai kết luận sàng lọc và loại vắc xin thành trường có nghĩa vụ: xem ketLuanSangLoc. / Logical model for the mandatory measurements on the pre-vaccination screening checklist required by Decision 1575/QĐ-BYT.

ShortPhép đo bắt buộc của bảng kiểm sàng lọc trước tiêm chủng (QĐ 1575/QĐ-BYT) — Logical Model
Control0..*
Is Modifierfalse
Logical ModelInstances of this logical model are not marked to be the target of a Reference
2. vnPreVaccinationScreeningLm.canNang
Definition

Cân nặng đo tại buổi sàng lọc

ShortCân nặng đo tại buổi sàng lọc
Comments

Ô 'Cân nặng' đứng cùng dòng với 'Thân nhiệt' trong phần hành chính của cả bốn mẫu, tức là phải điền cho MỌI trẻ đến tiêm, không phụ thuộc kết quả các mục sàng lọc. Ở cơ sở NGOÀI bệnh viện, trị số này còn quyết định trực tiếp: mục 11 của bản trẻ từ 1 tháng và mục 3 của bản trẻ dưới 1 tháng lấy ngưỡng 2000 g làm mốc tạm hoãn, và phần 3.2 điểm b ghi 'Trẻ có cân nặng dưới 2000g' vào danh sách phải chuyển khám sàng lọc tại bệnh viện. Sửa 07/09/2026 sau phản biện Codex: hai mẫu dùng TẠI bệnh viện (Phụ lục III, IV) KHÔNG có mục ngưỡng ấy — nghĩa vụ ghi trị số vẫn còn ở cả bốn, nhưng hệ quả của trị số thì khác nhau theo nơi tiêm.

Control1..1
TypeBackboneElement
Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
4. vnPreVaccinationScreeningLm.canNang.id
Definition

Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.

ShortUnique id for inter-element referencing
Control0..1
Typestring
Is Modifierfalse
XML FormatIn the XML format, this property is represented as an attribute.
Summaryfalse
6. vnPreVaccinationScreeningLm.canNang.extension
Definition

May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.

ShortAdditional content defined by implementations
Comments

There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

Control0..*
TypeExtension
Is Modifierfalse
Summaryfalse
Alternate Namesextensions, user content
Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
SlicingThis element introduces a set of slices on vnPreVaccinationScreeningLm.canNang.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
  • value @ url
  • 8. vnPreVaccinationScreeningLm.canNang.modifierExtension
    Definition

    May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.

    Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).

    ShortExtensions that cannot be ignored even if unrecognized
    Comments

    There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

    Control0..*
    TypeExtension
    Is Modifiertrue because Modifier extensions are expected to modify the meaning or interpretation of the element that contains them
    Summarytrue
    Requirements

    Modifier extensions allow for extensions that cannot be safely ignored to be clearly distinguished from the vast majority of extensions which can be safely ignored. This promotes interoperability by eliminating the need for implementers to prohibit the presence of extensions. For further information, see the definition of modifier extensions.

    Alternate Namesextensions, user content, modifiers
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    10. vnPreVaccinationScreeningLm.canNang.giaTri
    Definition

    Trị số cân nặng

    ShortTrị số cân nặng
    Comments

    HAI ĐƠN VỊ TRONG CÙNG MỘT VĂN BẢN: Phụ lục I và III (trẻ từ 1 tháng) in sẵn 'kg' sau ô trống, còn Phụ lục II và IV (trẻ dưới 1 tháng) in 'g' — hợp lý vì cân nặng sơ sinh thường ghi bằng gam và chính ngưỡng của văn bản là '2000 g'. VNCoreObservationBodyWeight ép valueQuantity.code = #kg và unit = "kg", nên hệ thống ghi bảng kiểm sơ sinh phải QUY ĐỔI sang kilôgam trước khi tạo Observation (2000 g thành 2 kg). Đây là ràng buộc có chủ ý của profile, không phải thiếu sót: cho phép cả hai đơn vị sẽ khiến hai bản ghi cùng một cân nặng không so sánh trực tiếp được.

    Control1..1
    Typedecimal
    Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
    12. vnPreVaccinationScreeningLm.thanNhiet
    Definition

    Thân nhiệt đo tại buổi sàng lọc

    ShortThân nhiệt đo tại buổi sàng lọc
    Comments

    Ô 'Thân nhiệt' in sẵn dấu phẩy thập phân và ký hiệu °C trên cả bốn mẫu. Sửa 07/09/2026 sau phản biện Codex: bản đầu đọc dấu phẩy ấy thành 'mẫu phiếu ĐÒI độ chính xác tới một chữ số thập phân' — đó là suy diễn từ cách in ô trống, văn bản không đặt yêu cầu nào về độ chính xác của phép đo hay của thiết bị. Bỏ khẳng định ấy; giữ lại quan sát rằng ô có phần thập phân.

    Control1..1
    TypeBackboneElement
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    14. vnPreVaccinationScreeningLm.thanNhiet.id
    Definition

    Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.

    ShortUnique id for inter-element referencing
    Control0..1
    Typestring
    Is Modifierfalse
    XML FormatIn the XML format, this property is represented as an attribute.
    Summaryfalse
    16. vnPreVaccinationScreeningLm.thanNhiet.extension
    Definition

    May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.

    ShortAdditional content defined by implementations
    Comments

    There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

    Control0..*
    TypeExtension
    Is Modifierfalse
    Summaryfalse
    Alternate Namesextensions, user content
    Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
    ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
    SlicingThis element introduces a set of slices on vnPreVaccinationScreeningLm.thanNhiet.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
    • value @ url
    • 18. vnPreVaccinationScreeningLm.thanNhiet.modifierExtension
      Definition

      May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.

      Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).

      ShortExtensions that cannot be ignored even if unrecognized
      Comments

      There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

      Control0..*
      TypeExtension
      Is Modifiertrue because Modifier extensions are expected to modify the meaning or interpretation of the element that contains them
      Summarytrue
      Requirements

      Modifier extensions allow for extensions that cannot be safely ignored to be clearly distinguished from the vast majority of extensions which can be safely ignored. This promotes interoperability by eliminating the need for implementers to prohibit the presence of extensions. For further information, see the definition of modifier extensions.

      Alternate Namesextensions, user content, modifiers
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
      20. vnPreVaccinationScreeningLm.thanNhiet.giaTri
      Definition

      Trị số thân nhiệt tính bằng độ C

      ShortTrị số thân nhiệt tính bằng độ C
      Comments

      Ngưỡng nguyên văn của mục sàng lọc: 'Sốt: nhiệt độ ≥ 38°C; Hạ thân nhiệt: nhiệt độ ≤ 35,5°C'. Cả hai đầu đều là căn cứ tạm hoãn, nên trị số phải ghi cả khi bình thường — chỉ ghi khi bất thường thì không phân biệt được 'đo mà bình thường' với 'không đo'. Đơn vị của profile là °C theo UCUM (#Cel), khớp đúng đơn vị in trên mẫu. VỊ TRÍ ĐO (bổ sung 07/09/2026 sau phản biện Codex): phần thân hướng dẫn nói rõ ngưỡng ấy tính theo nhiệt độ 'đo tại NÁCH'. VNCoreObservationBodyTemperature dùng mã LOINC 8310-5 (Body temperature) không gắn vị trí đo, nên một trị số 37,8 đo ở hậu môn và một trị số 37,8 đo ở nách nằm lẫn nhau trong cùng một Observation — hệ thống áp ngưỡng của quyết định này phải tự bảo đảm vị trí đo, hoặc ghi vị trí ở bodySite. Đây là giới hạn của đích ánh xạ, ghi lại để bên triển khai không áp ngưỡng cho mọi phương pháp đo.

      Control1..1
      Typedecimal
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      22. vnPreVaccinationScreeningLm.nhipTimNhipTho
      Definition

      Đánh giá tim và nhịp thở trên bảng kiểm

      ShortĐánh giá tim và nhịp thở trên bảng kiểm
      Comments

      KHÔNG ánh xạ sang VNCoreObservationHeartRate hay VNCoreObservationRespiratoryRate, dù thoạt nhìn có vẻ khớp. Lý do: bảng kiểm hỏi 'Nghe tim bất thường: Không □ Có □' và 'Nhịp thở, nghe phổi bất thường: Không □ Có □' — hai mục ấy đòi một PHÁN ĐỊNH, không đòi trị số nhịp/phút. Phụ lục V (tần số thở bình thường theo nhóm tuổi) và Phụ lục VI (nhịp tim bình thường theo tuổi) là bảng THAM CHIẾU giúp người khám đưa ra phán định ấy, không phải mẫu ghi chép. Vì vậy QĐ 1575/QĐ-BYT không đủ để đóng nghĩa vụ trường cho hai profile nhịp tim và nhịp thở; chúng vẫn thuộc diện hoãn DEF-0111-PROFILE-NO-DOC-SOURCE cho tới khi có văn bản đặt nghĩa vụ ghi trị số.

      Control0..1
      Typestring
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      24. vnPreVaccinationScreeningLm.ketLuanSangLoc
      Definition

      Kết luận sàng lọc

      ShortKết luận sàng lọc
      Comments

      NÂNG 0..1 LÊN 1..1 ngày 07/09/2026 sau phản biện Codex — bản đầu lẫn hai câu hỏi khác nhau: 'văn bản có buộc ghi kết luận không' (CÓ) và 'kết luận ấy có ánh xạ được sang Immunization không' (CHƯA). Phần c của hướng dẫn liệt kê các bước 'thực hiện và điền theo bảng kiểm' kết thúc bằng bước Kết luận, còn phần d nói 'TOÀN BỘ nội dung khám sàng lọc được ghi theo bảng kiểm… lưu tại các điểm tiêm chủng và trên Hệ thống Quản lý thông tin tiêm chủng Quốc gia. Lưu bảng kiểm 15 ngày'. Ba kết quả loại trừ nhau không làm VIỆC CÓ KẾT LUẬN thành tuỳ chọn. Element này CỐ Ý không mang ánh xạ vn-fhir: giữ nghĩa vụ nguồn đúng mức, và ghi nợ phần đích. Mục II của bảng kiểm có ba ô loại trừ nhau — 'Đủ điều kiện tiêm chủng ngay', 'Chống chỉ định tiêm chủng', 'Tạm hoãn tiêm chủng' — kèm dòng 'Loại vắc xin tiêm chủng lần này'. KHÔNG khai thành nghĩa vụ 1..1 trên VNCoreImmunization vì ba nhánh dẫn tới ba hình thái dữ liệu khác nhau: chỉ nhánh đủ điều kiện mới sinh ra một mũi tiêm có vaccineCode, hai nhánh kia sinh ra một Immunization với status = not-done kèm statusReason, hoặc không sinh resource nào nếu cơ sở chỉ lưu bảng kiểm. Riêng dòng 'Loại vắc xin tiêm chủng lần này' thì đúng là CÓ ĐIỀU KIỆN — nó chỉ phát sinh ở nhánh đủ điều kiện tiêm — nên tách thành loaiVacXin 0..1 dưới đây thay vì gộp chung với kết luận. Khai 1..1 cho một nghĩa vụ có điều kiện là đúng lớp lỗi đã phải sửa hai lần trong chu kỳ này (cachSacThuoc của TT 55/2025/TT-BYT và khoanTienNguoiBenh của QĐ 697/QĐ-BYT).

      Control1..1
      Typestring
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      26. vnPreVaccinationScreeningLm.loaiVacXin
      Definition

      Loại vắc xin tiêm chủng lần này

      ShortLoại vắc xin tiêm chủng lần này
      Comments

      Tách khỏi ketLuanSangLoc ngày 07/09/2026 sau phản biện Codex: dòng này nằm NGAY DƯỚI ô 'Đủ điều kiện tiêm chủng ngay' trong mục II và chỉ được điền ở nhánh ấy — hai nhánh chống chỉ định và tạm hoãn không sinh ra mũi tiêm nào. Đích tự nhiên là VNCoreImmunization.vaccineCode (1..1 MS), nhưng chỉ khi đã có một Immunization; ánh xạ đó thuộc về bản ghi mũi tiêm, không thuộc bảng kiểm.

      Control0..1
      Typestring
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      28. vnPreVaccinationScreeningLm.thoiDiemVaNguoiSangLoc
      Definition

      Thời điểm sàng lọc và người thực hiện sàng lọc

      ShortThời điểm sàng lọc và người thực hiện sàng lọc
      Comments

      NÂNG 0..1 LÊN 1..1 ngày 07/09/2026 cùng lý do với ketLuanSangLoc: nghĩa vụ nguồn là tuyệt đối, chỉ phần đích còn nợ. Cuối cả bốn mẫu có ô '….giờ ….phút, ngày….tháng….năm…..' và dòng 'Người thực hiện sàng lọc (ký, ghi rõ họ và tên)' — nghĩa vụ tuyệt đối của biểu mẫu. Chưa ánh xạ được vì bảng kiểm sàng lọc trước tiêm chủng CHƯA CÓ chỗ chứa trong IG: VNCoreQuestionnaireResponse hiện là profile chuyên phiếu khám sức khoẻ theo QĐ 2062/QĐ-BYT Phụ lục 01 (xem Title và Description của nó), không phải nơi chứa mọi biểu mẫu. Trỏ vào đó sẽ là ánh xạ sai phạm vi. Khoảng trống này là việc thật cho chu kỳ sau: hoặc mở rộng phạm vi VNCoreQuestionnaireResponse, hoặc dựng profile riêng cho bảng kiểm tiêm chủng.

      Control1..1
      Typestring
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension

      Guidance on how to interpret the contents of this table can be foundhere

      0. vnPreVaccinationScreeningLm
      Definition

      Logical model đặc tả các phép đo mà Quyết định 1575/QĐ-BYT (ban hành và hiệu lực 27/03/2023) BUỘC phải ghi trị số trên bảng kiểm sàng lọc trước tiêm chủng cho trẻ em — làm bảng chỉ tiêu văn bản để đối chiếu cardinality của profile cân nặng và profile nhiệt độ cơ thể.

      Cả bốn mẫu bảng kiểm (Phụ lục I-IV) đều có ô 'Cân nặng: ____' và 'Thân nhiệt: ____ °C' nằm trong phần bắt buộc điền, trước mục I 'Khám sàng lọc'. Nghĩa vụ đo và ghi không suy từ việc mẫu có ô trống — phần IV.1 của hướng dẫn nói thẳng ai làm việc đó: 'Điều dưỡng viên, hộ sinh viên: Ghi các thông tin của trẻ, TRỰC TIẾP CÂN TRẺ, ĐO VÀ GHI KẾT QUẢ NHIỆT ĐỘ của trẻ', và 'Bác sĩ, y sĩ: … trực tiếp đo và ghi kết quả nhiệt độ của trẻ khi không có điều dưỡng viên, hộ sinh viên'. Hai trị số ấy còn là căn cứ của các mục sàng lọc dẫn tới tạm hoãn: ngưỡng thân nhiệt 'Sốt: nhiệt độ ≥ 38°C; Hạ thân nhiệt: nhiệt độ ≤ 35,5°C' (đo tại nách) có ở CẢ BỐN mẫu, còn ngưỡng 'Cân nặng < 2000g' CHỈ có ở hai mẫu dùng ngoài bệnh viện — Phụ lục III và IV không có mục ấy, và hướng dẫn tại bệnh viện còn ghi 'thực hiện tiêm chủng các vắc xin theo lịch với trẻ nhẹ cân (so với tuổi)'. Nghĩa vụ GHI TRỊ SỐ thì không đổi theo nơi tiêm.

      Hai bản dành cho trẻ dưới 1 tháng (Phụ lục II và IV) ghi cân nặng bằng GAM, hai bản còn lại bằng KILÔGAM — xem chú thích tại canNang.giaTri về hệ quả với ràng buộc đơn vị của profile.

      Model KHÔNG khai kết luận sàng lọc và loại vắc xin thành trường có nghĩa vụ: xem ketLuanSangLoc. / Logical model for the mandatory measurements on the pre-vaccination screening checklist required by Decision 1575/QĐ-BYT.

      ShortPhép đo bắt buộc của bảng kiểm sàng lọc trước tiêm chủng (QĐ 1575/QĐ-BYT) — Logical Model
      Logical ModelInstances of this logical model are not marked to be the target of a Reference
      2. vnPreVaccinationScreeningLm.canNang
      Definition

      Cân nặng đo tại buổi sàng lọc

      ShortCân nặng đo tại buổi sàng lọc
      Comments

      Ô 'Cân nặng' đứng cùng dòng với 'Thân nhiệt' trong phần hành chính của cả bốn mẫu, tức là phải điền cho MỌI trẻ đến tiêm, không phụ thuộc kết quả các mục sàng lọc. Ở cơ sở NGOÀI bệnh viện, trị số này còn quyết định trực tiếp: mục 11 của bản trẻ từ 1 tháng và mục 3 của bản trẻ dưới 1 tháng lấy ngưỡng 2000 g làm mốc tạm hoãn, và phần 3.2 điểm b ghi 'Trẻ có cân nặng dưới 2000g' vào danh sách phải chuyển khám sàng lọc tại bệnh viện. Sửa 07/09/2026 sau phản biện Codex: hai mẫu dùng TẠI bệnh viện (Phụ lục III, IV) KHÔNG có mục ngưỡng ấy — nghĩa vụ ghi trị số vẫn còn ở cả bốn, nhưng hệ quả của trị số thì khác nhau theo nơi tiêm.

      Control1..1
      TypeBackboneElement
      4. vnPreVaccinationScreeningLm.canNang.giaTri
      Definition

      Trị số cân nặng

      ShortTrị số cân nặng
      Comments

      HAI ĐƠN VỊ TRONG CÙNG MỘT VĂN BẢN: Phụ lục I và III (trẻ từ 1 tháng) in sẵn 'kg' sau ô trống, còn Phụ lục II và IV (trẻ dưới 1 tháng) in 'g' — hợp lý vì cân nặng sơ sinh thường ghi bằng gam và chính ngưỡng của văn bản là '2000 g'. VNCoreObservationBodyWeight ép valueQuantity.code = #kg và unit = "kg", nên hệ thống ghi bảng kiểm sơ sinh phải QUY ĐỔI sang kilôgam trước khi tạo Observation (2000 g thành 2 kg). Đây là ràng buộc có chủ ý của profile, không phải thiếu sót: cho phép cả hai đơn vị sẽ khiến hai bản ghi cùng một cân nặng không so sánh trực tiếp được.

      Control1..1
      Typedecimal
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      6. vnPreVaccinationScreeningLm.thanNhiet
      Definition

      Thân nhiệt đo tại buổi sàng lọc

      ShortThân nhiệt đo tại buổi sàng lọc
      Comments

      Ô 'Thân nhiệt' in sẵn dấu phẩy thập phân và ký hiệu °C trên cả bốn mẫu. Sửa 07/09/2026 sau phản biện Codex: bản đầu đọc dấu phẩy ấy thành 'mẫu phiếu ĐÒI độ chính xác tới một chữ số thập phân' — đó là suy diễn từ cách in ô trống, văn bản không đặt yêu cầu nào về độ chính xác của phép đo hay của thiết bị. Bỏ khẳng định ấy; giữ lại quan sát rằng ô có phần thập phân.

      Control1..1
      TypeBackboneElement
      8. vnPreVaccinationScreeningLm.thanNhiet.giaTri
      Definition

      Trị số thân nhiệt tính bằng độ C

      ShortTrị số thân nhiệt tính bằng độ C
      Comments

      Ngưỡng nguyên văn của mục sàng lọc: 'Sốt: nhiệt độ ≥ 38°C; Hạ thân nhiệt: nhiệt độ ≤ 35,5°C'. Cả hai đầu đều là căn cứ tạm hoãn, nên trị số phải ghi cả khi bình thường — chỉ ghi khi bất thường thì không phân biệt được 'đo mà bình thường' với 'không đo'. Đơn vị của profile là °C theo UCUM (#Cel), khớp đúng đơn vị in trên mẫu. VỊ TRÍ ĐO (bổ sung 07/09/2026 sau phản biện Codex): phần thân hướng dẫn nói rõ ngưỡng ấy tính theo nhiệt độ 'đo tại NÁCH'. VNCoreObservationBodyTemperature dùng mã LOINC 8310-5 (Body temperature) không gắn vị trí đo, nên một trị số 37,8 đo ở hậu môn và một trị số 37,8 đo ở nách nằm lẫn nhau trong cùng một Observation — hệ thống áp ngưỡng của quyết định này phải tự bảo đảm vị trí đo, hoặc ghi vị trí ở bodySite. Đây là giới hạn của đích ánh xạ, ghi lại để bên triển khai không áp ngưỡng cho mọi phương pháp đo.

      Control1..1
      Typedecimal
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      10. vnPreVaccinationScreeningLm.nhipTimNhipTho
      Definition

      Đánh giá tim và nhịp thở trên bảng kiểm

      ShortĐánh giá tim và nhịp thở trên bảng kiểm
      Comments

      KHÔNG ánh xạ sang VNCoreObservationHeartRate hay VNCoreObservationRespiratoryRate, dù thoạt nhìn có vẻ khớp. Lý do: bảng kiểm hỏi 'Nghe tim bất thường: Không □ Có □' và 'Nhịp thở, nghe phổi bất thường: Không □ Có □' — hai mục ấy đòi một PHÁN ĐỊNH, không đòi trị số nhịp/phút. Phụ lục V (tần số thở bình thường theo nhóm tuổi) và Phụ lục VI (nhịp tim bình thường theo tuổi) là bảng THAM CHIẾU giúp người khám đưa ra phán định ấy, không phải mẫu ghi chép. Vì vậy QĐ 1575/QĐ-BYT không đủ để đóng nghĩa vụ trường cho hai profile nhịp tim và nhịp thở; chúng vẫn thuộc diện hoãn DEF-0111-PROFILE-NO-DOC-SOURCE cho tới khi có văn bản đặt nghĩa vụ ghi trị số.

      Control0..1
      Typestring
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      12. vnPreVaccinationScreeningLm.ketLuanSangLoc
      Definition

      Kết luận sàng lọc

      ShortKết luận sàng lọc
      Comments

      NÂNG 0..1 LÊN 1..1 ngày 07/09/2026 sau phản biện Codex — bản đầu lẫn hai câu hỏi khác nhau: 'văn bản có buộc ghi kết luận không' (CÓ) và 'kết luận ấy có ánh xạ được sang Immunization không' (CHƯA). Phần c của hướng dẫn liệt kê các bước 'thực hiện và điền theo bảng kiểm' kết thúc bằng bước Kết luận, còn phần d nói 'TOÀN BỘ nội dung khám sàng lọc được ghi theo bảng kiểm… lưu tại các điểm tiêm chủng và trên Hệ thống Quản lý thông tin tiêm chủng Quốc gia. Lưu bảng kiểm 15 ngày'. Ba kết quả loại trừ nhau không làm VIỆC CÓ KẾT LUẬN thành tuỳ chọn. Element này CỐ Ý không mang ánh xạ vn-fhir: giữ nghĩa vụ nguồn đúng mức, và ghi nợ phần đích. Mục II của bảng kiểm có ba ô loại trừ nhau — 'Đủ điều kiện tiêm chủng ngay', 'Chống chỉ định tiêm chủng', 'Tạm hoãn tiêm chủng' — kèm dòng 'Loại vắc xin tiêm chủng lần này'. KHÔNG khai thành nghĩa vụ 1..1 trên VNCoreImmunization vì ba nhánh dẫn tới ba hình thái dữ liệu khác nhau: chỉ nhánh đủ điều kiện mới sinh ra một mũi tiêm có vaccineCode, hai nhánh kia sinh ra một Immunization với status = not-done kèm statusReason, hoặc không sinh resource nào nếu cơ sở chỉ lưu bảng kiểm. Riêng dòng 'Loại vắc xin tiêm chủng lần này' thì đúng là CÓ ĐIỀU KIỆN — nó chỉ phát sinh ở nhánh đủ điều kiện tiêm — nên tách thành loaiVacXin 0..1 dưới đây thay vì gộp chung với kết luận. Khai 1..1 cho một nghĩa vụ có điều kiện là đúng lớp lỗi đã phải sửa hai lần trong chu kỳ này (cachSacThuoc của TT 55/2025/TT-BYT và khoanTienNguoiBenh của QĐ 697/QĐ-BYT).

      Control1..1
      Typestring
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      14. vnPreVaccinationScreeningLm.loaiVacXin
      Definition

      Loại vắc xin tiêm chủng lần này

      ShortLoại vắc xin tiêm chủng lần này
      Comments

      Tách khỏi ketLuanSangLoc ngày 07/09/2026 sau phản biện Codex: dòng này nằm NGAY DƯỚI ô 'Đủ điều kiện tiêm chủng ngay' trong mục II và chỉ được điền ở nhánh ấy — hai nhánh chống chỉ định và tạm hoãn không sinh ra mũi tiêm nào. Đích tự nhiên là VNCoreImmunization.vaccineCode (1..1 MS), nhưng chỉ khi đã có một Immunization; ánh xạ đó thuộc về bản ghi mũi tiêm, không thuộc bảng kiểm.

      Control0..1
      Typestring
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
      16. vnPreVaccinationScreeningLm.thoiDiemVaNguoiSangLoc
      Definition

      Thời điểm sàng lọc và người thực hiện sàng lọc

      ShortThời điểm sàng lọc và người thực hiện sàng lọc
      Comments

      NÂNG 0..1 LÊN 1..1 ngày 07/09/2026 cùng lý do với ketLuanSangLoc: nghĩa vụ nguồn là tuyệt đối, chỉ phần đích còn nợ. Cuối cả bốn mẫu có ô '….giờ ….phút, ngày….tháng….năm…..' và dòng 'Người thực hiện sàng lọc (ký, ghi rõ họ và tên)' — nghĩa vụ tuyệt đối của biểu mẫu. Chưa ánh xạ được vì bảng kiểm sàng lọc trước tiêm chủng CHƯA CÓ chỗ chứa trong IG: VNCoreQuestionnaireResponse hiện là profile chuyên phiếu khám sức khoẻ theo QĐ 2062/QĐ-BYT Phụ lục 01 (xem Title và Description của nó), không phải nơi chứa mọi biểu mẫu. Trỏ vào đó sẽ là ánh xạ sai phạm vi. Khoảng trống này là việc thật cho chu kỳ sau: hoặc mở rộng phạm vi VNCoreQuestionnaireResponse, hoặc dựng profile riêng cho bảng kiểm tiêm chủng.

      Control1..1
      Typestring
      Primitive ValueThis primitive element may be present, or absent, or replaced by an extension

      Guidance on how to interpret the contents of this table can be foundhere

      0. vnPreVaccinationScreeningLm
      Definition

      Logical model đặc tả các phép đo mà Quyết định 1575/QĐ-BYT (ban hành và hiệu lực 27/03/2023) BUỘC phải ghi trị số trên bảng kiểm sàng lọc trước tiêm chủng cho trẻ em — làm bảng chỉ tiêu văn bản để đối chiếu cardinality của profile cân nặng và profile nhiệt độ cơ thể.

      Cả bốn mẫu bảng kiểm (Phụ lục I-IV) đều có ô 'Cân nặng: ____' và 'Thân nhiệt: ____ °C' nằm trong phần bắt buộc điền, trước mục I 'Khám sàng lọc'. Nghĩa vụ đo và ghi không suy từ việc mẫu có ô trống — phần IV.1 của hướng dẫn nói thẳng ai làm việc đó: 'Điều dưỡng viên, hộ sinh viên: Ghi các thông tin của trẻ, TRỰC TIẾP CÂN TRẺ, ĐO VÀ GHI KẾT QUẢ NHIỆT ĐỘ của trẻ', và 'Bác sĩ, y sĩ: … trực tiếp đo và ghi kết quả nhiệt độ của trẻ khi không có điều dưỡng viên, hộ sinh viên'. Hai trị số ấy còn là căn cứ của các mục sàng lọc dẫn tới tạm hoãn: ngưỡng thân nhiệt 'Sốt: nhiệt độ ≥ 38°C; Hạ thân nhiệt: nhiệt độ ≤ 35,5°C' (đo tại nách) có ở CẢ BỐN mẫu, còn ngưỡng 'Cân nặng < 2000g' CHỈ có ở hai mẫu dùng ngoài bệnh viện — Phụ lục III và IV không có mục ấy, và hướng dẫn tại bệnh viện còn ghi 'thực hiện tiêm chủng các vắc xin theo lịch với trẻ nhẹ cân (so với tuổi)'. Nghĩa vụ GHI TRỊ SỐ thì không đổi theo nơi tiêm.

      Hai bản dành cho trẻ dưới 1 tháng (Phụ lục II và IV) ghi cân nặng bằng GAM, hai bản còn lại bằng KILÔGAM — xem chú thích tại canNang.giaTri về hệ quả với ràng buộc đơn vị của profile.

      Model KHÔNG khai kết luận sàng lọc và loại vắc xin thành trường có nghĩa vụ: xem ketLuanSangLoc. / Logical model for the mandatory measurements on the pre-vaccination screening checklist required by Decision 1575/QĐ-BYT.

      ShortPhép đo bắt buộc của bảng kiểm sàng lọc trước tiêm chủng (QĐ 1575/QĐ-BYT) — Logical Model
      Control0..*
      Is Modifierfalse
      Logical ModelInstances of this logical model are not marked to be the target of a Reference
      2. vnPreVaccinationScreeningLm.canNang
      Definition

      Cân nặng đo tại buổi sàng lọc

      ShortCân nặng đo tại buổi sàng lọc
      Comments

      Ô 'Cân nặng' đứng cùng dòng với 'Thân nhiệt' trong phần hành chính của cả bốn mẫu, tức là phải điền cho MỌI trẻ đến tiêm, không phụ thuộc kết quả các mục sàng lọc. Ở cơ sở NGOÀI bệnh viện, trị số này còn quyết định trực tiếp: mục 11 của bản trẻ từ 1 tháng và mục 3 của bản trẻ dưới 1 tháng lấy ngưỡng 2000 g làm mốc tạm hoãn, và phần 3.2 điểm b ghi 'Trẻ có cân nặng dưới 2000g' vào danh sách phải chuyển khám sàng lọc tại bệnh viện. Sửa 07/09/2026 sau phản biện Codex: hai mẫu dùng TẠI bệnh viện (Phụ lục III, IV) KHÔNG có mục ngưỡng ấy — nghĩa vụ ghi trị số vẫn còn ở cả bốn, nhưng hệ quả của trị số thì khác nhau theo nơi tiêm.

      Control1..1
      TypeBackboneElement
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      4. vnPreVaccinationScreeningLm.canNang.id
      Definition

      Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.

      ShortUnique id for inter-element referencing
      Control0..1
      Typestring
      Is Modifierfalse
      XML FormatIn the XML format, this property is represented as an attribute.
      Summaryfalse
      6. vnPreVaccinationScreeningLm.canNang.extension
      Definition

      May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.

      ShortAdditional content defined by implementations
      Comments

      There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

      Control0..*
      TypeExtension
      Is Modifierfalse
      Summaryfalse
      Alternate Namesextensions, user content
      Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
      ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
      SlicingThis element introduces a set of slices on vnPreVaccinationScreeningLm.canNang.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
      • value @ url
      • 8. vnPreVaccinationScreeningLm.canNang.modifierExtension
        Definition

        May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.

        Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).

        ShortExtensions that cannot be ignored even if unrecognized
        Comments

        There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

        Control0..*
        TypeExtension
        Is Modifiertrue because Modifier extensions are expected to modify the meaning or interpretation of the element that contains them
        Summarytrue
        Requirements

        Modifier extensions allow for extensions that cannot be safely ignored to be clearly distinguished from the vast majority of extensions which can be safely ignored. This promotes interoperability by eliminating the need for implementers to prohibit the presence of extensions. For further information, see the definition of modifier extensions.

        Alternate Namesextensions, user content, modifiers
        Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
        ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
        10. vnPreVaccinationScreeningLm.canNang.giaTri
        Definition

        Trị số cân nặng

        ShortTrị số cân nặng
        Comments

        HAI ĐƠN VỊ TRONG CÙNG MỘT VĂN BẢN: Phụ lục I và III (trẻ từ 1 tháng) in sẵn 'kg' sau ô trống, còn Phụ lục II và IV (trẻ dưới 1 tháng) in 'g' — hợp lý vì cân nặng sơ sinh thường ghi bằng gam và chính ngưỡng của văn bản là '2000 g'. VNCoreObservationBodyWeight ép valueQuantity.code = #kg và unit = "kg", nên hệ thống ghi bảng kiểm sơ sinh phải QUY ĐỔI sang kilôgam trước khi tạo Observation (2000 g thành 2 kg). Đây là ràng buộc có chủ ý của profile, không phải thiếu sót: cho phép cả hai đơn vị sẽ khiến hai bản ghi cùng một cân nặng không so sánh trực tiếp được.

        Control1..1
        Typedecimal
        Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
        12. vnPreVaccinationScreeningLm.thanNhiet
        Definition

        Thân nhiệt đo tại buổi sàng lọc

        ShortThân nhiệt đo tại buổi sàng lọc
        Comments

        Ô 'Thân nhiệt' in sẵn dấu phẩy thập phân và ký hiệu °C trên cả bốn mẫu. Sửa 07/09/2026 sau phản biện Codex: bản đầu đọc dấu phẩy ấy thành 'mẫu phiếu ĐÒI độ chính xác tới một chữ số thập phân' — đó là suy diễn từ cách in ô trống, văn bản không đặt yêu cầu nào về độ chính xác của phép đo hay của thiết bị. Bỏ khẳng định ấy; giữ lại quan sát rằng ô có phần thập phân.

        Control1..1
        TypeBackboneElement
        Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
        14. vnPreVaccinationScreeningLm.thanNhiet.id
        Definition

        Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.

        ShortUnique id for inter-element referencing
        Control0..1
        Typestring
        Is Modifierfalse
        XML FormatIn the XML format, this property is represented as an attribute.
        Summaryfalse
        16. vnPreVaccinationScreeningLm.thanNhiet.extension
        Definition

        May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.

        ShortAdditional content defined by implementations
        Comments

        There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

        Control0..*
        TypeExtension
        Is Modifierfalse
        Summaryfalse
        Alternate Namesextensions, user content
        Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
        ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
        SlicingThis element introduces a set of slices on vnPreVaccinationScreeningLm.thanNhiet.extension. The slices areUnordered and Open, and can be differentiated using the following discriminators:
        • value @ url
        • 18. vnPreVaccinationScreeningLm.thanNhiet.modifierExtension
          Definition

          May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.

          Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).

          ShortExtensions that cannot be ignored even if unrecognized
          Comments

          There can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions. The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.

          Control0..*
          TypeExtension
          Is Modifiertrue because Modifier extensions are expected to modify the meaning or interpretation of the element that contains them
          Summarytrue
          Requirements

          Modifier extensions allow for extensions that cannot be safely ignored to be clearly distinguished from the vast majority of extensions which can be safely ignored. This promotes interoperability by eliminating the need for implementers to prohibit the presence of extensions. For further information, see the definition of modifier extensions.

          Alternate Namesextensions, user content, modifiers
          Invariantsele-1: All FHIR elements must have a @value or children (hasValue() or (children().count() > id.count()))
          ext-1: Must have either extensions or value[x], not both (extension.exists() != value.exists())
          20. vnPreVaccinationScreeningLm.thanNhiet.giaTri
          Definition

          Trị số thân nhiệt tính bằng độ C

          ShortTrị số thân nhiệt tính bằng độ C
          Comments

          Ngưỡng nguyên văn của mục sàng lọc: 'Sốt: nhiệt độ ≥ 38°C; Hạ thân nhiệt: nhiệt độ ≤ 35,5°C'. Cả hai đầu đều là căn cứ tạm hoãn, nên trị số phải ghi cả khi bình thường — chỉ ghi khi bất thường thì không phân biệt được 'đo mà bình thường' với 'không đo'. Đơn vị của profile là °C theo UCUM (#Cel), khớp đúng đơn vị in trên mẫu. VỊ TRÍ ĐO (bổ sung 07/09/2026 sau phản biện Codex): phần thân hướng dẫn nói rõ ngưỡng ấy tính theo nhiệt độ 'đo tại NÁCH'. VNCoreObservationBodyTemperature dùng mã LOINC 8310-5 (Body temperature) không gắn vị trí đo, nên một trị số 37,8 đo ở hậu môn và một trị số 37,8 đo ở nách nằm lẫn nhau trong cùng một Observation — hệ thống áp ngưỡng của quyết định này phải tự bảo đảm vị trí đo, hoặc ghi vị trí ở bodySite. Đây là giới hạn của đích ánh xạ, ghi lại để bên triển khai không áp ngưỡng cho mọi phương pháp đo.

          Control1..1
          Typedecimal
          Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
          22. vnPreVaccinationScreeningLm.nhipTimNhipTho
          Definition

          Đánh giá tim và nhịp thở trên bảng kiểm

          ShortĐánh giá tim và nhịp thở trên bảng kiểm
          Comments

          KHÔNG ánh xạ sang VNCoreObservationHeartRate hay VNCoreObservationRespiratoryRate, dù thoạt nhìn có vẻ khớp. Lý do: bảng kiểm hỏi 'Nghe tim bất thường: Không □ Có □' và 'Nhịp thở, nghe phổi bất thường: Không □ Có □' — hai mục ấy đòi một PHÁN ĐỊNH, không đòi trị số nhịp/phút. Phụ lục V (tần số thở bình thường theo nhóm tuổi) và Phụ lục VI (nhịp tim bình thường theo tuổi) là bảng THAM CHIẾU giúp người khám đưa ra phán định ấy, không phải mẫu ghi chép. Vì vậy QĐ 1575/QĐ-BYT không đủ để đóng nghĩa vụ trường cho hai profile nhịp tim và nhịp thở; chúng vẫn thuộc diện hoãn DEF-0111-PROFILE-NO-DOC-SOURCE cho tới khi có văn bản đặt nghĩa vụ ghi trị số.

          Control0..1
          Typestring
          Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
          24. vnPreVaccinationScreeningLm.ketLuanSangLoc
          Definition

          Kết luận sàng lọc

          ShortKết luận sàng lọc
          Comments

          NÂNG 0..1 LÊN 1..1 ngày 07/09/2026 sau phản biện Codex — bản đầu lẫn hai câu hỏi khác nhau: 'văn bản có buộc ghi kết luận không' (CÓ) và 'kết luận ấy có ánh xạ được sang Immunization không' (CHƯA). Phần c của hướng dẫn liệt kê các bước 'thực hiện và điền theo bảng kiểm' kết thúc bằng bước Kết luận, còn phần d nói 'TOÀN BỘ nội dung khám sàng lọc được ghi theo bảng kiểm… lưu tại các điểm tiêm chủng và trên Hệ thống Quản lý thông tin tiêm chủng Quốc gia. Lưu bảng kiểm 15 ngày'. Ba kết quả loại trừ nhau không làm VIỆC CÓ KẾT LUẬN thành tuỳ chọn. Element này CỐ Ý không mang ánh xạ vn-fhir: giữ nghĩa vụ nguồn đúng mức, và ghi nợ phần đích. Mục II của bảng kiểm có ba ô loại trừ nhau — 'Đủ điều kiện tiêm chủng ngay', 'Chống chỉ định tiêm chủng', 'Tạm hoãn tiêm chủng' — kèm dòng 'Loại vắc xin tiêm chủng lần này'. KHÔNG khai thành nghĩa vụ 1..1 trên VNCoreImmunization vì ba nhánh dẫn tới ba hình thái dữ liệu khác nhau: chỉ nhánh đủ điều kiện mới sinh ra một mũi tiêm có vaccineCode, hai nhánh kia sinh ra một Immunization với status = not-done kèm statusReason, hoặc không sinh resource nào nếu cơ sở chỉ lưu bảng kiểm. Riêng dòng 'Loại vắc xin tiêm chủng lần này' thì đúng là CÓ ĐIỀU KIỆN — nó chỉ phát sinh ở nhánh đủ điều kiện tiêm — nên tách thành loaiVacXin 0..1 dưới đây thay vì gộp chung với kết luận. Khai 1..1 cho một nghĩa vụ có điều kiện là đúng lớp lỗi đã phải sửa hai lần trong chu kỳ này (cachSacThuoc của TT 55/2025/TT-BYT và khoanTienNguoiBenh của QĐ 697/QĐ-BYT).

          Control1..1
          Typestring
          Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
          26. vnPreVaccinationScreeningLm.loaiVacXin
          Definition

          Loại vắc xin tiêm chủng lần này

          ShortLoại vắc xin tiêm chủng lần này
          Comments

          Tách khỏi ketLuanSangLoc ngày 07/09/2026 sau phản biện Codex: dòng này nằm NGAY DƯỚI ô 'Đủ điều kiện tiêm chủng ngay' trong mục II và chỉ được điền ở nhánh ấy — hai nhánh chống chỉ định và tạm hoãn không sinh ra mũi tiêm nào. Đích tự nhiên là VNCoreImmunization.vaccineCode (1..1 MS), nhưng chỉ khi đã có một Immunization; ánh xạ đó thuộc về bản ghi mũi tiêm, không thuộc bảng kiểm.

          Control0..1
          Typestring
          Primitive ValueThis primitive element may be present, or absent, or replaced by an extension
          28. vnPreVaccinationScreeningLm.thoiDiemVaNguoiSangLoc
          Definition

          Thời điểm sàng lọc và người thực hiện sàng lọc

          ShortThời điểm sàng lọc và người thực hiện sàng lọc
          Comments

          NÂNG 0..1 LÊN 1..1 ngày 07/09/2026 cùng lý do với ketLuanSangLoc: nghĩa vụ nguồn là tuyệt đối, chỉ phần đích còn nợ. Cuối cả bốn mẫu có ô '….giờ ….phút, ngày….tháng….năm…..' và dòng 'Người thực hiện sàng lọc (ký, ghi rõ họ và tên)' — nghĩa vụ tuyệt đối của biểu mẫu. Chưa ánh xạ được vì bảng kiểm sàng lọc trước tiêm chủng CHƯA CÓ chỗ chứa trong IG: VNCoreQuestionnaireResponse hiện là profile chuyên phiếu khám sức khoẻ theo QĐ 2062/QĐ-BYT Phụ lục 01 (xem Title và Description của nó), không phải nơi chứa mọi biểu mẫu. Trỏ vào đó sẽ là ánh xạ sai phạm vi. Khoảng trống này là việc thật cho chu kỳ sau: hoặc mở rộng phạm vi VNCoreQuestionnaireResponse, hoặc dựng profile riêng cho bảng kiểm tiêm chủng.

          Control1..1
          Typestring
          Primitive ValueThis primitive element may be present, or absent, or replaced by an extension