Tiêm chủng và TCMR qua FHIR — đưa Sổ tiêm chủng số vào Luật 114/2025/QH15 Phòng bệnh

Luật 114/2025/QH15 (ban hành 10/12/2025, hiệu lực 01/07/2026) thay thế Luật Phòng, chống bệnh truyền nhiễm 2007 (Luật 03/2007/QH12). Luật mới yêu cầu hệ thống thông tin phòng bệnh có dữ liệu tiêm chủng được kết nối, chia sẻ trong cơ sở dữ liệu y tế và báo cáo tiêm chủng theo quy định của Bộ Y tế. Trang này hướng dẫn cách dùng ba Resource FHIR R4 — Immunization, ImmunizationRecommendation, ImmunizationEvaluation — cùng VNeID Sổ sức khỏe điện tử để xây dựng hồ sơ tiêm chủng đời người (life-long), phục vụ cả Tiêm chủng mở rộng (TCMR) và tiêm chủng dịch vụ trên nền chuẩn quốc tế.

Tóm tắt nhanh

  • FHIR R4 cung cấp ba Resource bổ trợ nhau: Immunization ghi liều đã tiêm, ImmunizationRecommendation dự báo liều kế tiếp, ImmunizationEvaluation đánh giá tính hợp lệ; workflow đầy đủ còn tham chiếu Patient và các Resource liên quan.
  • Luật 114/2025/QH15 (hiệu lực 01/07/2026) yêu cầu dữ liệu tiêm chủng kết nối, chia sẻ trong cơ sở dữ liệu y tế quốc gia — không bắt buộc realtime, nhưng phải đúng quy định báo cáo của BYT.
  • VNCoreImmunization.vaccineCode.coding yêu cầu ít nhất một coding từ vn-vaccine-type-cs; coding CVX là tùy chọn. Profile không định nghĩa slice ATC bắt buộc.
  • Workflow Patient → khuyến cáo → tiêm → đánh giá → chia sẻ là kiến trúc minh họa. Kênh tích hợp, SLA, phạm vi ký và điểm nhận dữ liệu phải được chốt trong đặc tả hoặc hợp đồng triển khai có thẩm quyền.
  • Phản ứng có hại (AEFI) ghi qua Resource AdverseEvent, liên kết về Immunization gốc; outcome dùng đúng mã FHIR R4 (resolved, recovering, ongoing...).

1. Bối cảnh — Luật 114/2025/QH15 và Chương trình TCMR

Tiêm chủng là một trong những can thiệp y tế công cộng có hiệu quả cao nhất. Việt Nam triển khai Chương trình Tiêm chủng mở rộng (TCMR) từ năm 1981 và đến nay đã khống chế thành công nhiều bệnh truyền nhiễm. Tuy nhiên, hạ tầng dữ liệu tiêm chủng phân mảnh giữa cơ sở tư, cơ sở công và cổng báo cáo Bộ Y tế khiến công tác giám sát thiếu thời gian thực, gây khó khăn khi truy ngược lịch sử tiêm của một cá nhân.

Luật 114/2025/QH15 (Quốc hội thông qua 10/12/2025, hiệu lực 01/07/2026) là Luật Phòng bệnh thay thế Luật Phòng, chống bệnh truyền nhiễm 2007 (Luật 03/2007/QH12). Luật mới mở rộng phạm vi sang quản lý các bệnh không lây nhiễm và đặt ra yêu cầu hệ thống thông tin phòng bệnh được kết nối, chia sẻ dữ liệu trong cơ sở dữ liệu y tế quốc gia. Riêng tiêm chủng, Luật quy định trách nhiệm báo cáo tiêm chủng theo hướng dẫn của Bộ Y tế. Luồng dữ liệu, tần suất, endpoint và trách nhiệm của từng actor phải theo văn bản hướng dẫn hoặc hợp đồng triển khai cụ thể; trang này không suy diễn nghĩa vụ cập nhật vào một API nhất định.

Đi cùng Luật 114/2025/QH15 là Quyết định 1332/QĐ-BYT về Sổ sức khỏe điện tử trên VNeID, Thông tư 13/2025/TT-BYT về bệnh án điện tử (hiệu lực 21/07/2025) và Quyết định 2780/QĐ-BYT ngày 29/08/2025 về Kế hoạch Tiêm chủng mở rộng giai đoạn 2026-2028. Bộ ba văn bản này định hình ngữ cảnh chính sách cho số hóa, định danh và chia sẻ dữ liệu tiêm chủng. Việc gắn định danh, ký điện tử hoặc đồng bộ VNeID phải áp dụng theo phạm vi và điều kiện của từng văn bản, đặc tả chính thức và quy trình nghiệp vụ được phê duyệt.

2. Bài toán hiện tại của ngành

Khi đặt câu hỏi đơn giản — “bé này đã tiêm đủ 5in1 chưa?” — đáp án thường phụ thuộc vào tờ giấy hồng nhăn nhúm trong túi mẹ. Bốn vấn đề thường gặp:

  • Sổ tiêm chủng giấy dễ thất lạc, dễ rách, không thể truy xuất từ xa khi gia đình chuyển nơi cư trú.
  • Bác sĩ tuyến trên không truy được lịch sử tiêm tuyến dưới, dẫn tới tiêm trùng hoặc bỏ sót liều.
  • Báo cáo dịch tễ có thể trễ hoặc sai lệch khi còn bước tổng hợp thủ công; độ trễ phải được đo theo từng luồng báo cáo và kỳ dữ liệu.
  • Kinh nghiệm COVID-19 cho thấy cần kiểm thử khả năng liên kết chứng nhận, danh tính và lịch sử tiêm giữa các nền tảng; trang này không giả định mọi hệ thống hiện có đều đã hoặc chưa tích hợp.

FHIR R4 không phát minh ra giải pháp mới mà chuẩn hóa cách dữ liệu di chuyển giữa các hệ thống. Khi cơ sở tiêm chủng, kho dữ liệu tỉnh, cổng quốc gia và VNeID cùng nói cùng một “ngôn ngữ” — Resource Immunization với cùng các trường tối thiểu — hồ sơ tiêm chủng đời người trở nên khả thi.

3. Kiến trúc dữ liệu FHIR cho tiêm chủng

Mô hình tham chiếu chia làm bốn lớp, với FHIR là lớp giao tiếp giữa các hệ thống:

[Cơ sở tiêm chủng — TYT xã, BV, phòng tiêm dịch vụ]
   ↓ tạo Immunization; ký khi quy trình có căn cứ áp dụng
[FHIR Server cấp tỉnh — kho dữ liệu sức khỏe]
   ↓ aggregate, đối soát theo CCCD
[Cổng dữ liệu quốc gia — Bộ Y tế / Cục Phòng bệnh]
   ↓ báo cáo định kỳ và đột xuất
[Dashboard giám sát dịch tễ + WHO/Gavi report]

   ↓ chia sẻ hồ sơ cá nhân nếu endpoint/hợp đồng cho phép
[VNeID — Sổ sức khỏe điện tử / Sổ tiêm chủng]

Lớp “FHIR Server cấp tỉnh” không nhất thiết phải tự xây mới — có thể là module trong HIS, là FHIR façade trước cơ sở dữ liệu cũ, hoặc là dịch vụ dùng chung do Sở Y tế triển khai. Điểm cốt lõi là mọi hệ thống đẩy dữ liệu vào đều tuân thủ profile VNCoreImmunization để giữ ngữ nghĩa thống nhất khi tổng hợp.

4. Ba Resource cốt lõi

4.1. Immunization — sự kiện tiêm

Resource Immunization ghi lại một liều đã tiêm hoặc lý do không tiêm. Trong VN Core, vaccineCode là bắt buộc và Must Support; slicing yêu cầu ít nhất một coding vn-vaccine-type-cs, còn coding CVX là tùy chọn. Profile cũng đánh dấu Must Support cho patient, occurrenceDateTime, lotNumber, performer, protocolApplied (chuỗi liều); Must Support không tự biến mọi phần tử tùy chọn thành bắt buộc. Ví dụ một liều 5in1 thứ hai trong TCMR:

{
  "resourceType": "Immunization",
  "status": "completed",
  "vaccineCode": {
    "coding": [
      {
        "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-vaccine-type-cs",
        "code": "dpt",
        "display": "Bạch hầu-Ho gà-Uốn ván"
      },
      {
        "system": "http://hl7.org/fhir/sid/cvx",
        "code": "102",
        "display": "DTP-Hib-Hep B"
      }
    ],
    "text": "Vaccine 5in1 (DPT-VGB-Hib) — TCMR"
  },
  "patient": { "reference": "Patient/baby-001" },
  "encounter": { "reference": "Encounter/imm-enc-001" },
  "occurrenceDateTime": "2026-09-15T09:30:00+07:00",
  "primarySource": true,
  "location": { "reference": "Location/tyt-phuong-vinh-tuy" },
  "manufacturer": { "reference": "Organization/polyvac" },
  "lotNumber": "L2026-0915-A",
  "expirationDate": "2027-12-31",
  "site": {
    "coding": [
      { "system": "http://terminology.hl7.org/CodeSystem/v3-ActSite", "code": "LT", "display": "Left thigh" }
    ]
  },
  "route": {
    "coding": [
      { "system": "http://terminology.hl7.org/CodeSystem/v3-RouteOfAdministration", "code": "IM", "display": "Intramuscular" }
    ]
  },
  "doseQuantity": { "value": 0.5, "unit": "mL", "system": "http://unitsofmeasure.org", "code": "mL" },
  "performer": [
    { "actor": { "reference": "Practitioner/dd-le-thi-hoa" } }
  ],
  "protocolApplied": [
    {
      "series": "TCMR Quốc gia — 5in1",
      "doseNumberPositiveInt": 2,
      "seriesDosesPositiveInt": 3,
      "targetDisease": [
        { "coding": [{ "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-vaccine-type-cs", "code": "diphtheria", "display": "Bạch hầu" }] },
        { "coding": [{ "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-vaccine-type-cs", "code": "pertussis", "display": "Ho gà" }] },
        { "coding": [{ "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-vaccine-type-cs", "code": "tetanus", "display": "Uốn ván" }] },
        { "coding": [{ "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-vaccine-type-cs", "code": "hep-b", "display": "Viêm gan B" }] },
        { "coding": [{ "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-vaccine-type-cs", "code": "hib", "display": "Hib" }] }
      ]
    }
  ]
}

4.2. ImmunizationRecommendation — gợi ý liều kế tiếp

Resource ImmunizationRecommendation là kết quả của một engine quy tắc (rule engine) chạy trên lịch TCMR và lịch sử tiêm của bệnh nhân. Mỗi recommendation chỉ rõ vaccine, bệnh đích, thứ tự liều và mốc thời gian khuyến cáo.

{
  "resourceType": "ImmunizationRecommendation",
  "patient": { "reference": "Patient/baby-001" },
  "date": "2026-09-15",
  "recommendation": [
    {
      "vaccineCode": [
        {
          "coding": [
            { "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-vaccine-type-cs", "code": "dpt", "display": "Bạch hầu-Ho gà-Uốn ván" }
          ]
        }
      ],
      "targetDisease": {
        "coding": [
          { "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-vaccine-type-cs", "code": "diphtheria", "display": "Bạch hầu" }
        ]
      },
      "forecastStatus": {
        "coding": [
          { "system": "http://terminology.hl7.org/CodeSystem/immunization-recommendation-status", "code": "due", "display": "Due" }
        ]
      },
      "doseNumberPositiveInt": 3,
      "seriesDosesPositiveInt": 3,
      "dateCriterion": [
        {
          "code": {
            "coding": [
              { "system": "http://loinc.org", "code": "30981-5", "display": "Earliest date to give" }
            ]
          },
          "value": "2026-10-15"
        },
        {
          "code": {
            "coding": [
              { "system": "http://loinc.org", "code": "30980-7", "display": "Date vaccine due" }
            ]
          },
          "value": "2026-10-30"
        }
      ]
    }
  ]
}

4.3. ImmunizationEvaluation — đánh giá liều

Sau khi tiêm, hệ thống cần xác định liều vừa rồi có hợp lệ hay không (đúng tuổi, đủ khoảng cách so với liều trước, đúng vaccine cho bệnh đích...). Đây là vai trò của ImmunizationEvaluation:

{
  "resourceType": "ImmunizationEvaluation",
  "status": "completed",
  "patient": { "reference": "Patient/baby-001" },
  "date": "2026-09-15",
  "immunizationEvent": { "reference": "Immunization/imm-001" },
  "targetDisease": {
    "coding": [
      { "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-vaccine-type-cs", "code": "pertussis", "display": "Ho gà" }
    ]
  },
  "doseStatus": {
    "coding": [
      { "system": "http://terminology.hl7.org/CodeSystem/immunization-evaluation-dose-status", "code": "valid", "display": "Valid" }
    ]
  },
  "doseNumberPositiveInt": 2,
  "seriesDosesPositiveInt": 3
}

Khi doseStatus trả về valid, hệ thống cập nhật chuỗi liều và tính toán lại ImmunizationRecommendation kế tiếp. Nếu invalid (ví dụ tiêm sớm hơn khoảng cách tối thiểu), liều sẽ không được tính và bé phải tiêm lại.

5. Mã hóa vaccine — vn-vaccine-type-cs và CVX

Profile VNCoreImmunization dùng slicing mở theo Coding.system:

  • Mã loại vaccine theo bệnh — CodeSystem http://fhir.hl7.org.vn/core/CodeSystem/vn-vaccine-type-cs. Đây là danh mục bắt buộc trong profile VNCoreImmunization, cấp 25 mã ban đầu (BCG, viêm gan B, DPT, bại liệt, Hib, sởi, rubella, Sởi-Rubella, viêm não Nhật Bản, rotavirus, phế cầu, HPV, uốn ván, cúm, dại, thủy đậu, COVID-19...).
  • CVX — CodeSystem http://hl7.org/fhir/sid/cvx, slice cvx 0..*. Coding này tùy chọn và chỉ gửi khi có ánh xạ CVX phù hợp với sản phẩm hoặc loại vaccine thực tế. Slicing mở vẫn cho phép coding khác theo hợp đồng triển khai, nhưng VN Core không bắt buộc coding ATC.

Bên cạnh mã, ba thuộc tính lotNumber, expirationDate, manufacturer đóng vai trò quan trọng trong truy xuất nguồn gốc khi có sự cố lô vaccine. Cửa sổ cảnh báo hạn dùng và quy tắc chặn phải theo chính sách thuốc, sản phẩm và quy trình lâm sàng đã phê duyệt của đơn vị triển khai.

6. Workflow minh họa — từ sơ sinh đến hết tuổi tiêm

Chuỗi bước dưới đây là kiến trúc nghiệp vụ minh họa, không phải SLA hoặc nghĩa vụ được VN Core hay các văn bản được dẫn tự động áp đặt cho mọi hệ thống.

  1. Đăng ký Patient. Khi trẻ sinh ra, cơ sở y tế tạo Resource Patient và liên thông giấy khai sinh điện tử với Bộ Công an để cấp số định danh cá nhân (12 số). Số này được ghi vào identifier slice cccd.
  2. Pre-load ImmunizationRecommendation. Ngay sau khi có Patient, engine sinh sẵn lịch tiêm chủng trọn đời theo TCMR Quốc gia.
  3. Nhắc lịch. Nếu chương trình có dịch vụ nhắc lịch, đơn vị vận hành cấu hình cửa sổ phù hợp (ví dụ 7-14 ngày) và kênh đã được phê duyệt; đây là tham số triển khai, không phải mốc bắt buộc của VN Core.
  4. Verify tại điểm tiêm. Điều dưỡng quét mã QR trên VNeID hoặc nhập CCCD để load Patient + Recommendation hiện hành; kiểm tra vaccine, lô, hạn dùng, chống chỉ định (qua AllergyIntolerance).
  5. Ghi nhận liều tiêm. Sau mũi tiêm, hệ thống tạo Resource Immunization với status = completed. Chỉ ký điện tử khi văn bản, hợp đồng hoặc quy trình đã phê duyệt yêu cầu, với phạm vi ký và cơ chế xác minh được xác định riêng.
  6. Đẩy lên cổng quốc gia. Bundle chứa Immunization được POST lên FHIR Server tỉnh, sau đó tổng hợp về cổng dữ liệu quốc gia.
  7. Auto-evaluate. Engine tạo ImmunizationEvaluation tự động — nếu valid, đánh dấu liều hoàn thành và sinh Recommendation kế tiếp.
  8. Chia sẻ cho ứng dụng công dân. Khi có endpoint và thỏa thuận chính thức, bản ghi có thể được đồng bộ tới VNeID hoặc kênh khác; thời gian hiển thị là SLA của dịch vụ, không mặc định là “vài phút”.

Bước 6-8 là mô hình tham chiếu khi chưa có đặc tả API công khai đủ để xác nhận endpoint, payload và SLA. Composition, Provenance hoặc chữ ký chỉ được thêm khi đặc tả chính thức hay hợp đồng triển khai yêu cầu; VN Core không mặc định bắt buộc.

7. Lịch TCMR quốc gia 2026 và mã loại vaccine

Bảng dưới phản ánh lịch TCMR theo Quyết định 2780/QĐ-BYT giai đoạn 2026-2028, ánh xạ với mã trong CodeSystem vn-vaccine-type-cs để engine có thể truy vấn trực tiếp:

Vaccine vn-vaccine-type-cs Tuổi tiêm Số liều
Lao (BCG)bcgSơ sinh1
Viêm gan B sơ sinhhep-bTrong 24h sau sinh1 (kèm mũi trong 5in1)
5in1 (DPT-VGB-Hib)dpt2-3-4 tháng3
Bại liệt uống (OPV)polio2-3-4 tháng3
Bại liệt tiêm (IPV)polio5 tháng1
Sởi đơnmeasles9 tháng1
Sởi-Rubellameasles-rubella18 tháng1
DPT nhắc lạidpt18 tháng1
Viêm não Nhật Bản Bje12-18 tháng3
Phế cầu (mới từ 2026)pneumococcal2-4-6 tháng3
HPV (mới từ 2026)hpvNữ 9-14 tuổi2

Engine sinh ImmunizationRecommendation đọc bảng này như nguồn dữ liệu tham chiếu, kết hợp với lịch sử Immunization của bệnh nhân để tính lịch catch-up khi trẻ tiêm trễ hoặc bỏ liều.

8. Sổ tiêm chủng trên VNeID

QĐ 1332/QĐ-BYT đặt nền tảng cho Sổ sức khỏe điện tử trên VNeID. Khi chưa có đặc tả trao đổi công khai xác nhận cấu trúc tiêm chủng, một Bundle document có thể được xem xét như kiến trúc minh họa gồm:

Bundle (type = document)
├── Composition (title = "Sổ tiêm chủng — Họ tên BN")
├── Patient (chủ thể, có CCCD/số định danh cá nhân)
├── Immunization × N (mọi liều đã tiêm theo thứ tự thời gian)
├── ImmunizationRecommendation (liều sắp tới và mốc thời gian)
└── Provenance (tùy chọn, khi cần ghi nguồn gốc hoặc mang chữ ký)

Việc VNeID tiếp nhận hoặc chia sẻ Bundle này chỉ là giả thuyết kiến trúc cho đến khi cơ quan có thẩm quyền công bố hợp đồng API tương ứng. IPS (International Patient Summary) có thể được đánh giá riêng cho trao đổi xuyên biên giới, nhưng không phải định dạng tiêm chủng được QĐ 1332/QĐ-BYT mặc định quy định.

9. Báo cáo dịch tễ và đa nguồn dữ liệu

Khi mọi cơ sở tiêm chủng đẩy Resource Immunization chuẩn hóa lên cổng quốc gia, dashboard dịch tễ có thể truy vấn theo cú pháp FHIR Search:

GET /Immunization?vaccine-code=http://fhir.hl7.org.vn/core/CodeSystem/vn-vaccine-type-cs|measles
   &date=ge2026-09-01&date=le2026-09-30
   &_count=0
→ Bundle (searchset) — total = số liều sởi đã tiêm trong tháng 9/2026

Dashboard có thể nhóm theo tỉnh/xã, theo lứa tuổi, theo loại vaccine để phát hiện vùng phủ thấp. Báo cáo định kỳ cho WHO, UNICEF và Gavi có thể tự động hóa qua API mà không cần tổng hợp Excel thủ công. Lưu ý: dữ liệu gửi ra ngoài lãnh thổ phải tuân thủ Luật 91/2025/QH15 về Bảo vệ dữ liệu cá nhân và NĐ 356/2025/NĐ-CP — yêu cầu hồ sơ đánh giá chuyển dữ liệu xuyên biên giới.

10. ADR/AEFI — phản ứng có hại sau tiêm

Phản ứng có hại sau tiêm chủng (Adverse Event Following Immunization — AEFI) ghi qua Resource AdverseEvent, liên kết về Immunization gốc qua trường suspectEntity.instance. FHIR R4 yêu cầu outcome dùng đúng mã trong CodeSystem chính thức: resolved, recovering, ongoing, resolvedWithSequelae, fatal, unknown. Mã recovered không hợp lệ trong R4 — nhiều ví dụ trên mạng dùng nhầm.

{
  "resourceType": "AdverseEvent",
  "actuality": "actual",
  "category": [
    {
      "coding": [
        { "system": "http://terminology.hl7.org/CodeSystem/adverse-event-category", "code": "product-use-error", "display": "Product Use Error" }
      ],
      "text": "Phản ứng sau tiêm chủng (AEFI)"
    }
  ],
  "subject": { "reference": "Patient/baby-001" },
  "date": "2026-09-15T18:00:00+07:00",
  "suspectEntity": [
    {
      "instance": { "reference": "Immunization/imm-001" }
    }
  ],
  "outcome": {
    "coding": [
      { "system": "http://hl7.org/fhir/adverse-event-outcome", "code": "resolved", "display": "Resolved" }
    ]
  },
  "seriousness": {
    "coding": [
      { "system": "http://terminology.hl7.org/CodeSystem/adverse-event-seriousness", "code": "Non-serious", "display": "Non-serious" }
    ]
  }
}

Cảnh báo nghiệp vụ

Tuyến nhận, thời hạn và biểu mẫu báo cáo AEFI phụ thuộc phân loại sự kiện và quy định an toàn tiêm chủng/dược đang áp dụng. Không cấu hình mặc định “24-48 giờ tới Cục Quản lý Dược” hoặc “đồng thời gửi VigiBase” nếu chưa có căn cứ và thẩm quyền cho luồng cụ thể. Hệ thống có thể ưu tiên sự kiện nghiêm trọng theo quy trình đã được phê duyệt.

11. Câu hỏi thường gặp

11.1. TCMR và tiêm dịch vụ khác nhau ra sao trên FHIR?

Cùng dùng Resource Immunization. Sự khác biệt nằm ở mã loại trong vn-vaccine-type-cs (thuộc tính class phân biệt tcmrdich-vu) cũng như nguồn chi trả, thường ghi qua Encounter hoặc Coverage liên kết.

11.2. Trẻ sơ sinh chưa có CCCD thì làm thế nào?

Theo hướng dẫn của profile VNCorePatient, trẻ sinh từ năm 2016 được cấp số định danh cá nhân ngay khi đăng ký khai sinh — số này điền vào identifier slice cccd. Trường hợp đặc biệt chưa kịp cấp, dùng tạm identifier slice gks (số giấy khai sinh) kèm data-absent-reason cho CCCD. Thông tin của cha mẹ thuộc về RelatedPerson với role guardian, không nhồi vào Patient.identifier.

11.3. Làm sao kiểm tra dị ứng trước khi tiêm?

Tích hợp Resource AllergyIntolerance vào màn hình verify. Trước khi ấn “tiêm”, hệ thống truy vấn AllergyIntolerance của Patient và đối chiếu với thành phần vaccine — đặc biệt với người dị ứng trứng (vaccine cúm, sởi) hoặc dị ứng latex.

11.4. Vaccine COVID-19 có thuộc TCMR không?

Hiện tại COVID-19 (mã covid-19) được phân loại chien-dich trong vn-vaccine-type-cs, không phải tcmr. Bộ Y tế có thể điều chỉnh trong tương lai khi tình hình dịch tễ thay đổi.

11.5. Có bắt buộc realtime không?

Luật 114/2025/QH15 không quy định mốc “realtime” cụ thể. Yêu cầu thực tế là dữ liệu được kết nối, chia sẻ theo quy định BYT. Mỗi chương trình phải xác định SLA từ văn bản hướng dẫn, hợp đồng API và nhu cầu giám sát đã được phê duyệt; không lấy “vài phút” hoặc “cuối ngày” làm nghĩa vụ mặc định.

12. Tài liệu tham chiếu

  • Luật 114/2025/QH15 — Luật Phòng bệnh (ban hành 10/12/2025, hiệu lực 01/07/2026) — thay Luật Phòng, chống bệnh truyền nhiễm 2007 (Luật 03/2007/QH12).
  • Quyết định 1332/QĐ-BYT — Sổ sức khỏe điện tử trên VNeID — corpus code QD-1332-VNeID trong khung pháp lý.
  • Thông tư 13/2025/TT-BYT — Bệnh án điện tử (hiệu lực 21/07/2025) — corpus code TT-13-2025.
  • Quyết định 2780/QĐ-BYT (29/08/2025) — Kế hoạch Tiêm chủng mở rộng giai đoạn 2026-2028.
  • Nghị định 137/2024/NĐ-CP — giao dịch điện tử; cần đánh giá phạm vi áp dụng khi một quy trình cụ thể yêu cầu ký điện tử.
  • FHIR R4 — Immunization, ImmunizationRecommendation, ImmunizationEvaluation, AdverseEvent.
  • CDC — bảng mã CVX (coding quốc tế tùy chọn trong profile).
  • CodeSystem VN Core: http://fhir.hl7.org.vn/core/CodeSystem/vn-vaccine-type-cs — định nghĩa trong input/fsh/terminology/VNVaccineTypeCS.fsh.