HL7 Vietnam VN Core FHIR Implementation Guide

Bộ Hướng dẫn Triển khai Core FHIR cho Việt Nam
0.8.0 - Draft for Community Review Viet Nam cờ

Bộ Hướng dẫn Triển khai Core FHIR cho Việt Nam - Draft for Community Review (v0.8.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

StructureMap: Bảng 1 tổng hợp KCB BHYT — Logical Model — StructureMap

URL chính thức: http://fhir.hl7.org.vn/core/StructureMap/vn-sm-bhyt-xml1-summary Phiên bản: 0.8.0
Computable Name: BHYTXML1SummaryLMStructureMap
Định danh khác: OID:2.25.161089673617632664299011809196868855799.43.1

Generated StructureMap scaffold for Bảng 1 tổng hợp KCB BHYT — Logical Model. Source semantics come from the logical model mapping annotations in BHYTXML1SummaryLM.fsh and remain aligned with the Python BHYT round-trip export adapter.

Language: vi

map "http://fhir.hl7.org.vn/core/StructureMap/vn-sm-bhyt-xml1-summary" = "BHYTXML1SummaryLMStructureMap"

// Generated StructureMap scaffold for Bảng 1 tổng hợp KCB BHYT — Logical Model. Source semantics come from the logical model mapping annotations in `BHYTXML1SummaryLM.fsh` and remain aligned with the Python BHYT round-trip export adapter.

// FHIR-native source bundle profile used by the repository round-trip adapter.
uses "http://fhir.hl7.org.vn/core/StructureDefinition/vn-core-bhyt-submission-bundle" alias BHYTSubmissionBundle as source
// Bảng 1 tổng hợp KCB BHYT — Logical Model
uses "http://fhir.hl7.org.vn/core/StructureDefinition/bhytXml1SummaryLm" alias BHYTXML1SummaryLM as target

// Full QD 3176 XML1 field catalog. StructureMap/export rules must preserve source field names and financial semantics. Generated from logical-model `^mapping` annotations. Fields still missing a field-level `^mapping.map` entry remain outside this StructureMap and are tracked in `wiki/mappings/bhyt-output-data/machine/structuremap-coverage.json`.
group MapBHYTXML1SummaryLM(source sourceBundle : BHYTSubmissionBundle, target targetRow : BHYTXML1SummaryLM) {
  // Target field: MA_LK - Mã liên kết hồ sơ FHIR path: VNCoreClaim.identifier[MALK].value
  sourceBundle.entry 0..* as maLkSource -> targetRow.maLk "maLk";
  // Target field: STT - Số thứ tự FHIR path: Derived export row order
  sourceBundle.entry 0..* as sttSource -> targetRow.stt "stt";
  // Target field: MA_BN - Mã người bệnh tại cơ sở FHIR path: VNCorePatient.identifier[MRN].value
  sourceBundle.entry 0..* as maBnSource -> targetRow.maBn "maBn";
  // Target field: HO_TEN - Họ tên người bệnh FHIR path: VNCorePatient.name.text
  sourceBundle.entry 0..* as hoTenSource -> targetRow.hoTen "hoTen";
  // Target field: SO_CCCD - Số CCCD/số định danh cá nhân/hộ chiếu/giấy khai sinh của người bệnh FHIR path: VNCorePatient.identifier[CCCD].value | VNCorePatient.identifier[HC].value | VNCorePatient.identifier[GKS].value Mapping note: Ghi số CCCD/số định danh cá nhân trên thẻ căn cước hoặc giấy khai sinh; người nước ngoài ghi số hộ chiếu (identifier[HC]); trẻ sơ sinh dùng số trên giấy khai sinh (identifier[GKS]); để trống trong trường hợp bất khả kháng (trẻ sơ sinh, người mất ý thức/tâm thần không lấy được số định danh). Đổi kiểu chuỗi và kích thước n theo QĐ 4750/QĐ-BYT.
  sourceBundle.entry 0..* as soCccdSource -> targetRow.soCccd "soCccd";
  // Target field: NGAY_SINH - Ngày sinh FHIR path: VNCorePatient.birthDate
  sourceBundle.entry 0..* as ngaySinhSource -> targetRow.ngaySinh "ngaySinh";
  // Target field: GIOI_TINH - Giới tính FHIR path: VNCorePatient.gender
  sourceBundle.entry 0..* as gioiTinhSource -> targetRow.gioiTinh "gioiTinh";
  // Target field: NHOM_MAU - Nhóm máu FHIR path: future blood-group Observation (LOINC 883-9 ABO group; 10331-7 Rh) Mapping note: Nhóm máu của người bệnh, tối đa 5 ký tự, chỉ ghi khi có thông tin (bổ sung theo QĐ 4750/QĐ-BYT). VN Core chưa có profile Observation nhóm máu chuyên biệt nên đánh dấu future.
  sourceBundle.entry 0..* as nhomMauSource -> targetRow.nhomMau "nhomMau";
  // Target field: MA_QUOCTICH - Mã quốc tịch FHIR path: VNCorePatient.extension[nationality].valueCodeableConcept.coding.code
  sourceBundle.entry 0..* as maQuocTichSource -> targetRow.maQuocTich "maQuocTich";
  // Target field: MA_DANTOC - Mã dân tộc FHIR path: VNCorePatient.extension[ethnicity].valueCodeableConcept.coding.code
  sourceBundle.entry 0..* as maDanTocSource -> targetRow.maDanToc "maDanToc";
  // Target field: MA_NGHE_NGHIEP - Mã nghề nghiệp FHIR path: VNCorePatient.extension[occupation].valueCodeableConcept.coding.code
  sourceBundle.entry 0..* as maNgheNghiepSource -> targetRow.maNgheNghiep "maNgheNghiep";
  // Target field: DIA_CHI - Địa chỉ FHIR path: VNCorePatient.address.text
  sourceBundle.entry 0..* as diaChiSource -> targetRow.diaChi "diaChi";
  // Target field: MATINH_CU_TRU - Mã tỉnh cư trú FHIR path: VNCorePatient.address.extension[province].valueCodeableConcept.coding.code
  sourceBundle.entry 0..* as maTinhCuTruSource -> targetRow.maTinhCuTru "maTinhCuTru";
  // Target field: MAHUYEN_CU_TRU - Mã huyện cư trú legacy FHIR path: VNCorePatient.address.district
  sourceBundle.entry 0..* as maHuyenCuTruSource -> targetRow.maHuyenCuTru "maHuyenCuTru";
  // Target field: MAXA_CU_TRU - Mã xã cư trú FHIR path: VNCorePatient.address.extension[ward].valueCodeableConcept.coding.code
  sourceBundle.entry 0..* as maXaCuTruSource -> targetRow.maXaCuTru "maXaCuTru";
  // Target field: DIEN_THOAI - Số điện thoại FHIR path: VNCorePatient.telecom.where(system='phone').value
  sourceBundle.entry 0..* as dienThoaiSource -> targetRow.dienThoai "dienThoai";
  // Target field: MA_THE_BHYT - Mã thẻ BHYT FHIR path: VNCoreCoverage.identifier[BHYT].value | VNCorePatient.identifier[BHYT].value Mapping note: OHP/QD3176 export validator permits up to 2 BHYT card values; map repeated cards to focal/supplemental Coverage entries.
  sourceBundle.entry 0..* as maTheBhytSource -> targetRow.maTheBhyt "maTheBhyt";
  // Target field: MA_DKBD - Mã nơi đăng ký KCB ban đầu FHIR path: VNCoreCoverage.extension[primaryCareFacility].valueReference.identifier.value Mapping note: OHP/QD3176 export validator permits up to 2 values aligned with multiple BHYT cards; this remains the registered primary care facility, not MA_CSKCB.
  sourceBundle.entry 0..* as maDkbdSource -> targetRow.maDkbd "maDkbd";
  // Target field: GT_THE_TU - Giá trị thẻ từ ngày FHIR path: VNCoreCoverage.period.start Mapping note: OHP/QD3176 export validator permits up to 2 values aligned with multiple BHYT cards.
  sourceBundle.entry 0..* as gtTheTuSource -> targetRow.gtTheTu "gtTheTu";
  // Target field: GT_THE_DEN - Giá trị thẻ đến ngày FHIR path: VNCoreCoverage.period.end Mapping note: OHP/QD3176 export validator permits up to 2 values aligned with multiple BHYT cards.
  sourceBundle.entry 0..* as gtTheDenSource -> targetRow.gtTheDen "gtTheDen";
  // Target field: NGAY_MIEN_CCT - Ngày miễn cùng chi trả FHIR path: VNCoreCoverage | future copay-exemption-start-date extension Mapping note: Thời điểm người bệnh đủ điều kiện hưởng chế độ miễn cùng chi trả: 8 ký tự yyyymmdd nếu đã cấp giấy miễn cùng chi trả, 12 ký tự yyyymmddHHMM nếu chưa cấp giấy; để trống nếu không đủ cơ sở xác định. Liên quan trần cùng chi trả lũy kế theo NĐ 188/2025/NĐ-CP; VN Core chưa có extension ngày miễn cùng chi trả trên Coverage.
  sourceBundle.entry 0..* as ngayMienCctSource -> targetRow.ngayMienCct "ngayMienCct";
  // Target field: LY_DO_VV - Lý do vào viện FHIR path: VNCoreEncounter.reasonCode | VNCoreEncounter.reasonReference.resolve().code
  sourceBundle.entry 0..* as lyDoVvSource -> targetRow.lyDoVv "lyDoVv";
  // Target field: LY_DO_VNT - Lý do vào nội trú FHIR path: VNCoreEncounter.hospitalization.admitSource | VNCoreEncounter.reasonCode Mapping note: Conditionally required for selected inpatient/day-treatment MA_LOAI_KCB values.
  sourceBundle.entry 0..* as lyDoVntSource -> targetRow.lyDoVnt "lyDoVnt";
  // Target field: MA_LY_DO_VNT - Mã lý do vào nội trú FHIR path: VNCoreEncounter.hospitalization.admitSource.coding.code
  sourceBundle.entry 0..* as maLyDoVntSource -> targetRow.maLyDoVnt "maLyDoVnt";
  // Target field: CHAN_DOAN_VAO - Chẩn đoán vào viện FHIR path: VNCoreEncounter.reasonCode | VNCoreComposition.section[chiefComplaint].text
  sourceBundle.entry 0..* as chanDoanVaoSource -> targetRow.chanDoanVao "chanDoanVao";
  // Target field: CHAN_DOAN_RV - Chẩn đoán ra viện FHIR path: VNCoreCondition.code.text | VNCoreComposition.section[diagnosis].text
  sourceBundle.entry 0..* as chanDoanRvSource -> targetRow.chanDoanRv "chanDoanRv";
  // Target field: MA_BENH_CHINH - Mã bệnh chính FHIR path: VNCoreClaim.diagnosis.where(type='principal').diagnosisCodeableConcept | VNCoreCondition.code
  sourceBundle.entry 0..* as maBenhChinhSource -> targetRow.maBenhChinh "maBenhChinh";
  // Target field: MA_BENH_KT - Mã bệnh kèm theo FHIR path: VNCoreClaim.diagnosis.where(type!='principal').diagnosisCodeableConcept | VNCoreCondition.code
  sourceBundle.entry 0..* as maBenhKtSource -> targetRow.maBenhKt "maBenhKt";
  // Target field: MA_BENH_YHCT - Mã bệnh y học cổ truyền FHIR path: VNCoreClaim.diagnosis.diagnosisCodeableConcept.coding[yhct].code | VNCoreCondition.code.coding[yhct].code
  sourceBundle.entry 0..* as maBenhYhctSource -> targetRow.maBenhYhct "maBenhYhct";
  // Target field: MA_PTTT_QT - Mã phẫu thuật, thủ thuật quốc tế ICD-9-CM FHIR path: VNCoreProcedure.code.coding.code Mapping note: Mã ICD-9-CM (VNICD9CMCS; QĐ 4440/QĐ-BYT, nay thay bằng QĐ 387/QĐ-BYT). Nhiều PT/TT thì các mã phân cách bằng ';'; chỉ ghi khi người bệnh có thực hiện phẫu thuật, thủ thuật. KHÔNG nhầm với MA_PTTT (mã phương thức thanh toán, Bảng 2/3 STT 36/40).
  sourceBundle.entry 0..* as maPtttQtSource -> targetRow.maPtttQt "maPtttQt";
  // Target field: MA_DOITUONG_KCB - Mã đối tượng đến KCB FHIR path: VNCoreClaim.subType Mapping note: Do not map to Coverage.extension[bhytCardType]; this is visit classification, not the insured/card group.
  sourceBundle.entry 0..* as maDoituongKcbSource -> targetRow.maDoituongKcb "maDoituongKcb";
  // Target field: MA_NOI_DI - Mã nơi đi FHIR path: VNCoreEncounter.hospitalization.origin.resolve().identifier[CSKCB].value
  sourceBundle.entry 0..* as maNoiDiSource -> targetRow.maNoiDi "maNoiDi";
  // Target field: MA_NOI_DEN - Mã nơi đến FHIR path: VNCoreEncounter.hospitalization.destination.resolve().identifier[CSKCB].value
  sourceBundle.entry 0..* as maNoiDenSource -> targetRow.maNoiDen "maNoiDen";
  // Target field: MA_TAI_NAN - Mã tai nạn FHIR path: VNCoreClaim.accident.type
  sourceBundle.entry 0..* as maTaiNanSource -> targetRow.maTaiNan "maTaiNan";
  // Target field: NGAY_VAO - Ngày vào theo định dạng yyyyMMddHHmm FHIR path: VNCoreEncounter.period.start | VNCoreClaim.created
  sourceBundle.entry 0..* as ngayVaoSource -> targetRow.ngayVao "ngayVao";
  // Target field: NGAY_VAO_NOI_TRU - Ngày vào nội trú FHIR path: VNCoreEncounter.hospitalization | future admission instant extension
  sourceBundle.entry 0..* as ngayVaoNoiTruSource -> targetRow.ngayVaoNoiTru "ngayVaoNoiTru";
  // Target field: NGAY_RA - Ngày ra theo định dạng yyyyMMddHHmm FHIR path: VNCoreEncounter.period.end | VNCoreClaim.created
  sourceBundle.entry 0..* as ngayRaSource -> targetRow.ngayRa "ngayRa";
  // Target field: GIAY_CHUYEN_TUYEN - Số giấy chuyển tuyến FHIR path: VNCoreServiceRequest.identifier.value | VNCoreDocumentReference.identifier.value Mapping note: Số giấy chuyển tuyến/chuyển cơ sở KBCB nơi chuyển người bệnh đi hoặc số giấy hẹn khám lại (nếu có). Ghi theo trường GIAY_CHUYEN_TUYEN Bảng 13 (BHYTXML13ReferralLM) — liên kết phiếu chuyển tuyến ServiceRequest.
  sourceBundle.entry 0..* as giayChuyenTuyenSource -> targetRow.giayChuyenTuyen "giayChuyenTuyen";
  // Target field: SO_NGAY_DTRI - Số ngày điều trị FHIR path: Derived from VNCoreEncounter.period.start/end | VNCoreEncounter.length.value
  sourceBundle.entry 0..* as soNgayDtriSource -> targetRow.soNgayDtri "soNgayDtri";
  // Target field: PP_DIEU_TRI - Phương pháp điều trị (nội khoa, ngoại khoa, xạ trị, hoá trị hoặc kết hợp) FHIR path: VNCoreProcedure.category | future treatment-method (PP_DIEU_TRI) extension Mapping note: Ghi phương pháp điều trị theo TT 18/2022/TT-BYT (nội khoa, ngoại khoa, xạ trị, hoá trị hoặc xạ trị + nội khoa). VN Core chưa có slice/extension chuyên biệt ở cấp đợt điều trị nên đánh dấu future.
  sourceBundle.entry 0..* as ppDieuTriSource -> targetRow.ppDieuTri "ppDieuTri";
  // Target field: KET_QUA_DTRI - Kết quả điều trị FHIR path: VNCoreEncounter.extension[treatmentOutcome].valueCodeableConcept
  sourceBundle.entry 0..* as ketQuaDtriSource -> targetRow.ketQuaDtri "ketQuaDtri";
  // Target field: MA_LOAI_RV - Mã loại ra viện FHIR path: VNCoreEncounter.hospitalization.dischargeDisposition
  sourceBundle.entry 0..* as maLoaiRvSource -> targetRow.maLoaiRv "maLoaiRv";
  // Target field: GHI_CHU - Lời dặn của bác sĩ/nhân viên y tế sau khi kết thúc KBCB FHIR path: VNCoreComposition.section[dischargeSummary].text Mapping note: Lời dặn của bác sĩ hoặc nhân viên y tế đối với người bệnh sau khi kết thúc lần KBCB; ghi vào phần tóm tắt ra viện/hướng điều trị tiếp của bệnh án điện tử (TT 13/2025/TT-BYT).
  sourceBundle.entry 0..* as ghiChuSource -> targetRow.ghiChu "ghiChu";
  // Target field: NGAY_TTOAN - Ngày thanh toán FHIR path: VNCoreExplanationOfBenefit.created | VNCoreClaimResponse.created
  sourceBundle.entry 0..* as ngayTtoanSource -> targetRow.ngayTtoan "ngayTtoan";
  // Target field: T_THUOC - Tổng tiền thuốc FHIR path: VNCoreClaim.extension[costSummary].extension[totalMedication].valueMoney.value | VNCoreExplanationOfBenefit.extension[costSummary].extension[totalMedication].valueMoney.value
  sourceBundle.entry 0..* as tThuocSource -> targetRow.tThuoc "tThuoc";
  // Target field: T_VTYT - Tổng tiền vật tư y tế FHIR path: VNCoreClaim.extension[costSummary].extension[totalSupplies].valueMoney.value | VNCoreExplanationOfBenefit.extension[costSummary].extension[totalSupplies].valueMoney.value
  sourceBundle.entry 0..* as tVtytSource -> targetRow.tVtyt "tVtyt";
  // Target field: T_TONGCHI_BV - Tổng chi phí bệnh viện FHIR path: VNCoreClaim.total.value | VNCoreExplanationOfBenefit.total.amount
  sourceBundle.entry 0..* as tTongchiBvSource -> targetRow.tTongchiBv "tTongchiBv";
  // Target field: T_TONGCHI_BH - Tổng chi phí thuộc phạm vi BHYT FHIR path: VNCoreExplanationOfBenefit.total.where(category='eligible').amount.value | VNCoreClaimResponse.total.where(category='eligible').amount.value
  sourceBundle.entry 0..* as tTongchiBhSource -> targetRow.tTongchiBh "tTongchiBh";
  // Target field: T_BNTT - Người bệnh tự trả FHIR path: VNCoreClaim.extension[costSummary].extension[totalPatientSelfPay].valueMoney.value | Derived from VNCoreClaimResponse.total.where(category='submitted').amount - .where(category='eligible').amount
  sourceBundle.entry 0..* as tBnttSource -> targetRow.tBntt "tBntt";
  // Target field: T_BNCCT - Người bệnh cùng chi trả FHIR path: VNCoreClaim.extension[costSummary].extension[totalPatientCopay].valueMoney.value | VNCoreClaimResponse.total.where(category='copay').amount.value | VNCoreExplanationOfBenefit.total.where(category='copay').amount.value
  sourceBundle.entry 0..* as tBncctSource -> targetRow.tBncct "tBncct";
  // Target field: T_BHTT - Quỹ BHYT thanh toán FHIR path: VNCoreClaim.extension[costSummary].extension[totalInsurance].valueMoney.value | VNCoreClaimResponse.total.where(category='benefit').amount.value | VNCoreExplanationOfBenefit.total.where(category='benefit').amount.value
  sourceBundle.entry 0..* as tBhttSource -> targetRow.tBhtt "tBhtt";
  // Target field: T_NGUONKHAC - Nguồn khác FHIR path: VNCoreClaim.extension[costSummary].extension[totalOtherFund].valueMoney.value | VNCoreExplanationOfBenefit.extension[costSummary].extension[totalOtherFund].valueMoney.value
  sourceBundle.entry 0..* as tNguonkhacSource -> targetRow.tNguonkhac "tNguonkhac";
  // Target field: T_BHTT_GDV - BHYT thanh toán giám định viên FHIR path: VNCoreClaim.extension[costSummary] | future totalInsuranceFeeForService sub-extension Mapping note: Số tiền quỹ BHYT thanh toán đối với các khoản chi ngoài định suất hoặc ngoài DRG (là T_BHTT tại Bảng 2, Bảng 3 đối với chi phí có MA_PTTT = '1' — Phí dịch vụ). VNCoreExtClaimCostSummary chưa có sub-extension chuyên biệt cho khoản này nên đánh dấu future.
  sourceBundle.entry 0..* as tBhttGdvSource -> targetRow.tBhttGdv "tBhttGdv";
  // Target field: NAM_QT - Năm quyết toán FHIR path: VNCoreClaim.extension[paymentPeriod].extension[year]
  sourceBundle.entry 0..* as namQtSource -> targetRow.namQt "namQt";
  // Target field: THANG_QT - Tháng quyết toán FHIR path: VNCoreClaim.extension[paymentPeriod].extension[month]
  sourceBundle.entry 0..* as thangQtSource -> targetRow.thangQt "thangQt";
  // Target field: MA_LOAI_KCB - Mã loại khám chữa bệnh FHIR path: VNCoreEncounter.type
  sourceBundle.entry 0..* as maLoaiKcbSource -> targetRow.maLoaiKcb "maLoaiKcb";
  // Target field: MA_KHOA - Mã khoa FHIR path: VNCoreClaim.item.extension[department].valueCodeableConcept.coding.code | VNCoreEncounter.serviceType
  sourceBundle.entry 0..* as maKhoaSource -> targetRow.maKhoa "maKhoa";
  // Target field: MA_CSKCB - Mã cơ sở khám chữa bệnh FHIR path: VNCoreEncounter.serviceProvider.resolve().identifier[CSKCB].value | VNCoreClaim.provider.resolve().identifier[CSKCB].value Mapping note: Actual visit/submission provider. Do not fall back to MA_DKBD on Coverage.
  sourceBundle.entry 0..* as maCskcbSource -> targetRow.maCskcb "maCskcb";
  // Target field: MA_KHUVUC - Mã khu vực FHIR path: VNCoreCoverage | future BHYT living-area (K1/K2/K3) extension Mapping note: Mã nơi sinh sống của người bệnh ghi trên thẻ BHYT (danh mục mã cố định K1/K2/K3). VN Core chưa có extension mã khu vực sinh sống trên Coverage.
  sourceBundle.entry 0..* as maKhuvucSource -> targetRow.maKhuvuc "maKhuvuc";
  // Target field: CAN_NANG - Cân nặng FHIR path: VNCoreObservationBodyWeight.valueQuantity.value
  sourceBundle.entry 0..* as canNangSource -> targetRow.canNang "canNang";
  // Target field: CAN_NANG_CON - Cân nặng con FHIR path: VNCoreObservationBodyWeight.valueQuantity.value | future newborn-birth-weight extension Mapping note: Cân nặng con mới sinh, đơn vị gram; subject là trẻ mới sinh (RelatedPerson/Patient liên kết), không phải người bệnh mẹ. Chỉ ghi khi sinh con; sinh từ 2 con trở lên ghi lần lượt, phân cách bằng dấu chấm phẩy ';'.
  sourceBundle.entry 0..* as canNangConSource -> targetRow.canNangCon "canNangCon";
  // Target field: NAM_NAM_LIEN_TUC - Thời điểm đủ 5 năm liên tục FHIR path: VNCoreCoverage | future five-year-continuous-participation date extension Mapping note: Thời điểm người bệnh tham gia BHYT đủ 05 năm liên tục, 8 ký tự yyyymmdd (mốc hưởng quyền lợi 5 năm liên tục). VN Core chưa có extension mốc 5 năm liên tục trên Coverage.
  sourceBundle.entry 0..* as namNamLienTucSource -> targetRow.namNamLienTuc "namNamLienTuc";
  // Target field: NGAY_TAI_KHAM - Ngày tái khám FHIR path: VNCoreServiceRequest.occurrenceDateTime | Appointment.start
  sourceBundle.entry 0..* as ngayTaiKhamSource -> targetRow.ngayTaiKham "ngayTaiKham";
  // Target field: MA_HSBA - Mã hồ sơ bệnh án FHIR path: VNCoreComposition.identifier.value | VNCoreDocumentReference.identifier.value
  sourceBundle.entry 0..* as maHsbaSource -> targetRow.maHsba "maHsba";
  // Target field: MA_TTDV - Mã thủ trưởng đơn vị/người ký FHIR path: VNCoreComposition.author.resolve().identifier.value | VNCoreDocumentReference.author.resolve().identifier.value | VNCoreProvenance.signature.who.resolve().identifier.value
  sourceBundle.entry 0..* as maTtdvSource -> targetRow.maTtdv "maTtdv";
  // Target field: DU_PHONG - Trường dự phòng (tái sử dụng: ghi chiều cao người bệnh, đơn vị cm) FHIR path: VNCoreObservationBodyHeight.valueQuantity.value Mapping note: Theo bản sửa đổi, bổ sung QĐ 4750/QĐ-BYT: trường dự phòng Bảng 1 dùng để ghi chiều cao người bệnh (đơn vị cm), bắt buộc trong trường hợp sử dụng chỉ số này để chẩn đoán, điều trị. Riêng Bảng 1 khác các bảng khác (DU_PHONG thường dùng cho dữ liệu chữ ký số theo QĐ 3176/QĐ-BYT).
  sourceBundle.entry 0..* as duPhongSource -> targetRow.duPhong "duPhong";
}