Bộ Hướng dẫn Triển khai Core FHIR cho Việt Nam
0.8.0 - Draft for Community Review
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
| 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"; }