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
| Draft tại thời điểm 2026-04-28 |
{
"resourceType" : "StructureMap",
"id" : "vn-sm-bhyt-xml3-service",
"language" : "vi",
"text" : {
"status" : "generated",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: StructureMap vn-sm-bhyt-xml3-service</b></p><a name=\"vn-sm-bhyt-xml3-service\"> </a><a name=\"hcvn-sm-bhyt-xml3-service\"> </a><pre class=\"fml\">\r\n<b>map</b><span style=\"color: navy\"> "</span>http://fhir.hl7.org.vn/core/StructureMap/vn-sm-bhyt-xml3-service<span style=\"color: navy\">" = "</span>BHYTXML3ServiceLMStructureMap<span style=\"color: navy\">"\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">Generated StructureMap scaffold for Bảng 3 DVKT và vật tư BHYT — Logical Model. Source semantics come from the logical model mapping annotations in `BHYTXML3ServiceLM.fsh` and remain aligned with the Python BHYT round-trip export adapter.</span>\r\n\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">FHIR-native source bundle profile used by the repository round-trip adapter.</span>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"StructureDefinition-vn-core-bhyt-submission-bundle.html\" title=\"Bundle hồ sơ thanh toán BHYT — VN Core BHYT Submission Bundle\">http://fhir.hl7.org.vn/core/StructureDefinition/vn-core-bhyt-submission-bundle</a><span style=\"color: navy\">" </span><b>alias </b>BHYTSubmissionBundle <b>as </b><b>source</b>\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Bảng 3 DVKT và vật tư BHYT — Logical Model</span>\r\n<b>uses</b><span style=\"color: navy\"> "</span><a href=\"StructureDefinition-bhytXml3ServiceLm.html\" title=\"Bảng 3 DVKT và vật tư BHYT — Logical Model\">http://fhir.hl7.org.vn/core/StructureDefinition/bhytXml3ServiceLm</a><span style=\"color: navy\">" </span><b>alias </b>BHYTXML3ServiceLM <b>as </b><b>target</b>\r\n\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Full QD 3176 XML3 field catalog. Rows are derived from non-medication service, supply, device, procedure, and bed-day claim items. 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`.</span>\r\n<b>group </b>MapBHYTXML3ServiceLM<span style=\"color: navy\">(</span><b>source</b> <span style=\"color: maroon\">sourceBundle</span><span style=\"color: navy\"> : </span>BHYTSubmissionBundle, <b>target</b> <span style=\"color: maroon\">targetRow</span><span style=\"color: navy\"> : </span>BHYTXML3ServiceLM<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_LK - Mã liên kết hồ sơ FHIR path: VNCoreClaim.identifier[MALK].value</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">maLkSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maLk <i>"maLk"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: STT - Số thứ tự dòng FHIR path: VNCoreClaim.item.where(category!='8').sequence</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">sttSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.stt <i>"stt"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_DICH_VU - Mã dịch vụ kỹ thuật FHIR path: VNCoreClaim.item.where(category!='8').productOrService.coding.code | VNCoreServiceRequest.code.coding.code Mapping note: Conditionally required when MA_VAT_TU is absent or MA_NHOM is not 10.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">maDichVuSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maDichVu <i>"maDichVu"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_PTTT_QT - Mã phương thức thanh toán FHIR path: VNCoreClaim.extension[paymentMethod].valueCodeableConcept.coding.code | VNCoreClaim.item.extension[paymentMethod].valueCodeableConcept.coding.code</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">maPtttQtSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maPtttQt <i>"maPtttQt"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_VAT_TU - Mã vật tư y tế FHIR path: VNCoreDevice.identifier[medicalDeviceItemCode].value | VNCoreClaim.item.where(category!='8').productOrService.coding.code Mapping note: Conditionally required when MA_DICH_VU is absent or MA_NHOM=10; do not collapse medical supplies into service codes when Device is available.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">maVatTuSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maVatTu <i>"maVatTu"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_NHOM - Mã nhóm chi phí theo QĐ 3176/QĐ-BYT FHIR path: ConceptMap/vn-cm-bhyt-claim-cost-group-to-cost-category -> VNCoreClaim.item.where(category!='8').category.coding.code Mapping note: Source code system is QD 3176 MA_NHOM. Export/import must bridge through the ConceptMap instead of assigning the QD 697 target code directly.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">maNhomSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maNhom <i>"maNhom"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: GOI_VTYT - Gói vật tư y tế FHIR path: VNCoreClaim.item.where(category!='8') | future supply-package (GOI_VTYT) extension Mapping note: Mã gói VTYT trong một lần dùng DVKT (G1, G2,...) theo QĐ 3176/QĐ-BYT; ghi tại dòng DVKT phát sinh gói VTYT đi kèm → điều kiện, 0..1. Chưa có element đích — dùng future extension nhóm gói VTYT trên Claim.item (tiền lệ taiSuDung).</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">goiVtytSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.goiVtyt <i>"goiVtyt"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: TEN_VAT_TU - Tên vật tư y tế FHIR path: VNCoreDevice.deviceName.name | VNCoreClaim.item.where(category!='8').productOrService.text | display</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">tenVatTuSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.tenVatTu <i>"tenVatTu"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: TEN_DICH_VU - Tên dịch vụ kỹ thuật FHIR path: VNCoreClaim.item.where(category!='8').productOrService.text | VNCoreServiceRequest.code.text | display</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">tenDichVuSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.tenDichVu <i>"tenDichVu"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_XANG_DAU - Mã xăng dầu FHIR path: VNCoreClaim.item.where(category!='8') | future fuel-type-code (MA_XANG_DAU) extension Mapping note: Mã loại xăng, dầu để tính chi phí vận chuyển người bệnh theo Bộ mã DMDC do Bộ Y tế ban hành (QĐ 3176/QĐ-BYT); chỉ áp cho dòng vận chuyển (MA_DICH_VU=VC.XXXXX) → điều kiện, 0..1. Chưa có element đích — dùng future extension mã nhiên liệu trên Claim.item.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">maXangDauSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maXangDau <i>"maXangDau"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: DON_VI_TINH - Đơn vị tính FHIR path: VNCoreClaim.item.where(category!='8').quantity.unit</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">donViTinhSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.donViTinh <i>"donViTinh"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: PHAM_VI - Phạm vi thanh toán FHIR path: VNCoreClaim.item.where(category!='8').extension[insuranceCostInfo].extension[scope].valueCodeableConcept</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">phamViSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.phamVi <i>"phamVi"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: SO_LUONG - Số lượng FHIR path: VNCoreClaim.item.where(category!='8').quantity.value</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">soLuongSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.soLuong <i>"soLuong"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: DON_GIA_BV - Đơn giá bệnh viện FHIR path: VNCoreClaim.item.where(category!='8').unitPrice.value | VNCoreClaim.item.extension[hospitalUnitPrice].valueMoney.value Mapping note: Hospital charge price; keep separate from the BHYT price to avoid financial round-trip loss.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">donGiaBvSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.donGiaBv <i>"donGiaBv"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: DON_GIA_BH - Đơn giá BHYT FHIR path: VNCoreClaim.item.where(category!='8').extension[insuranceCostInfo].extension[insuranceUnitPrice].valueMoney.value Mapping note: BHYT-covered unit price; do not collapse into Claim.item.unitPrice when hospital and insurance prices differ.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">donGiaBhSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.donGiaBh <i>"donGiaBh"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: TT_THAU - Thông tin thầu FHIR path: VNCoreClaim.item.where(category!='8').extension[tenderInfo].valueString Mapping note: Chuỗi thông tin thầu VTYT: số QĐ trúng thầu; số gói thầu; mã nhóm thầu (Phụ lục 7 QĐ 5937/QĐ-BYT); năm ban hành, cách nhau bằng ';' (QĐ 3176/QĐ-BYT). Đính chính: tăng kích thước tối đa lên 50 ký tự; VTYT đấu thầu/duyệt kế hoạch từ 14/4/2023 tạm dùng mã nhóm thầu 'N0'. Đích: extension VNCoreExtTenderInfo (value string) đã tồn tại trên Claim.item. Ghi chú scope: TT_THAU chỉ áp cho dòng VTYT (điều kiện) nhưng cardinality hiện giữ 1..1 theo bản gốc — không sửa trong lượt bổ sung mapping này.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">ttThauSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.ttThau <i>"ttThau"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: TYLE_TT_DV - Tỷ lệ thanh toán dịch vụ FHIR path: VNCoreClaim.item.where(category!='8').extension[insuranceCostInfo].extension[servicePaymentRatio].valueDecimal</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">tyleTtDvSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.tyleTtDv <i>"tyleTtDv"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: TYLE_TT_BH - Tỷ lệ thanh toán BHYT FHIR path: VNCoreClaim.item.where(category!='8').extension[insuranceCostInfo].extension[paymentRatio].valueDecimal</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">tyleTtBhSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.tyleTtBh <i>"tyleTtBh"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: THANH_TIEN_BV - Thành tiền bệnh viện FHIR path: VNCoreClaim.item.where(category!='8').net.value | VNCoreClaim.item.extension[hospitalLineAmount].valueMoney.value Mapping note: Hospital line amount; keep separate from BHYT line amount.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">thanhTienBvSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.thanhTienBv <i>"thanhTienBv"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: THANH_TIEN_BH - Thành tiền BHYT FHIR path: VNCoreClaim.item.where(category!='8').extension[insuranceCostInfo].extension[insuranceLineAmount].valueMoney.value</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">thanhTienBhSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.thanhTienBh <i>"thanhTienBh"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: T_TRANTT - Mức trần thanh toán BHYT của gói VTYT FHIR path: VNCoreClaim.item.where(category!='8').extension[insuranceCostInfo].extension[paymentCeiling].valueMoney.value Mapping note: Mức thanh toán tối đa BHYT (45 tháng lương cơ sở) của gói VTYT trong một lần thực hiện DVKT theo Thông tư 04/2017/TT-BYT (diễn giải sửa đổi toàn bộ theo QĐ 3176/QĐ-BYT; kế thừa QĐ 4750/QĐ-BYT); trần 45 tháng lương cơ sở theo NĐ 188/2025/NĐ-CP. Chỉ ghi khi VTYT có quy định mức thanh toán BHYT, để trống khi không có trần → điều kiện, 0..1. Quan hệ tính toán: khi DON_GIA_BV vượt trần thì DON_GIA_BH = T_TRANTT. Đích là sub-extension paymentCeiling (valueMoney) của VNCoreExtInsuranceCostInfo trên Claim.item, tránh gộp mất dữ liệu vào insuranceUnitPrice.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">tTranttSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.tTrantt <i>"tTrantt"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MUC_HUONG - Mức hưởng FHIR path: VNCoreClaim.item.where(category!='8').extension[insuranceCostInfo].extension[benefitLevel].valueDecimal Mapping note: QĐ 1931/QĐ-BYT (29/06/2026) sửa đổi QĐ 3176/QĐ-BYT: kích thước tối đa của MUC_HUONG tại Bảng 3 tăng lên 4 ký tự.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">mucHuongSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.mucHuong <i>"mucHuong"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: T_NGUONKHAC_NSNN - Nguồn khác ngân sách nhà nước FHIR path: VNCoreClaim.item.where(category!='8').extension[otherFundBreakdown].extension[stateBudget].valueMoney.value Mapping note: Số tiền DVKT/VTYT được ngân sách nhà nước (Trung ương và/hoặc địa phương) hỗ trợ theo QĐ 3176/QĐ-BYT, làm tròn 2 chữ số thập phân. Đích line-level là sub-extension stateBudget của VNCoreExtOtherFundBreakdown trên Claim.item; tổng hợp toàn hồ sơ tại Claim.extension[costSummary].extension[totalOtherFund].</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">tNguonkhacNsnnSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.tNguonkhacNsnn <i>"tNguonkhacNsnn"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: T_NGUONKHAC_VTNN - Nguồn khác viện trợ nước ngoài FHIR path: VNCoreClaim.item.where(category!='8').extension[otherFundBreakdown].extension[foreignAid].valueMoney.value Mapping note: Số tiền DVKT/VTYT được tổ chức/cá nhân có trụ sở hoặc đang sinh sống, học tập, lao động ngoài lãnh thổ Việt Nam hỗ trợ (QĐ 3176/QĐ-BYT). Đích line-level là sub-extension foreignAid của VNCoreExtOtherFundBreakdown trên Claim.item.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">tNguonkhacVtnnSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.tNguonkhacVtnn <i>"tNguonkhacVtnn"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: T_NGUONKHAC_VTTN - Nguồn khác viện trợ trong nước FHIR path: VNCoreClaim.item.where(category!='8').extension[otherFundBreakdown].extension[domesticAid].valueMoney.value Mapping note: Số tiền DVKT/VTYT được tổ chức/cá nhân có trụ sở hoặc đang sinh sống, học tập, lao động trong lãnh thổ Việt Nam hỗ trợ (QĐ 3176/QĐ-BYT). Đích line-level là sub-extension domesticAid của VNCoreExtOtherFundBreakdown trên Claim.item.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">tNguonkhacVttnSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.tNguonkhacVttn <i>"tNguonkhacVttn"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: T_NGUONKHAC_CL - Nguồn khác còn lại FHIR path: VNCoreClaim.item.where(category!='8').extension[otherFundBreakdown].extension[otherRemaining].valueMoney.value Mapping note: Số tiền DVKT/VTYT từ các nguồn khác còn lại, không thuộc ba nguồn NSNN/VTNN/VTTN (QĐ 3176/QĐ-BYT). Đích line-level là sub-extension otherRemaining của VNCoreExtOtherFundBreakdown trên Claim.item.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">tNguonkhacClSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.tNguonkhacCl <i>"tNguonkhacCl"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: T_NGUONKHAC - Tổng nguồn khác FHIR path: VNCoreClaim.item.where(category!='8').extension[otherFundBreakdown] (tổng = stateBudget + foreignAid + domesticAid + otherRemaining) Mapping note: Tổng nguồn khác line-level = T_NGUONKHAC_NSNN + T_NGUONKHAC_VTNN + T_NGUONKHAC_VTTN + T_NGUONKHAC_CL (sửa đổi toàn bộ theo QĐ 3176/QĐ-BYT); khi >0 giảm trừ lần lượt vào T_BNTT, T_BNCCT, T_BHTT đến khi hết. 4 thành phần tách theo dòng qua VNCoreExtOtherFundBreakdown trên Claim.item; tổng toàn hồ sơ ánh xạ VNCoreClaim.extension[costSummary].extension[totalOtherFund].valueMoney.value (xem BHYTXML1SummaryLM).</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">tNguonkhacSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.tNguonkhac <i>"tNguonkhac"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: T_BNTT - Người bệnh tự trả FHIR path: Derived from VNCoreClaimResponse.item[serviceLine].adjudication.where(category='submitted').amount - .where(category='eligible').amount | Derived from VNCoreExplanationOfBenefit.item[serviceLine].adjudication.where(category='submitted').amount - .where(category='eligible').amount</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">tBnttSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.tBntt <i>"tBntt"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: T_BNCCT - Người bệnh cùng chi trả FHIR path: VNCoreClaimResponse.item[serviceLine].adjudication.where(category='copay').amount.value | VNCoreExplanationOfBenefit.item[serviceLine].adjudication.where(category='copay').amount.value</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">tBncctSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.tBncct <i>"tBncct"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: T_BHTT - Quỹ BHYT thanh toán FHIR path: VNCoreClaimResponse.item[serviceLine].adjudication.where(category='benefit').amount.value | VNCoreExplanationOfBenefit.item[serviceLine].adjudication.where(category='benefit').amount.value</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">tBhttSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.tBhtt <i>"tBhtt"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_KHOA - Mã khoa FHIR path: VNCoreClaim.item.where(category!='8').extension[department].valueCodeableConcept.coding.code</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">maKhoaSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maKhoa <i>"maKhoa"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_GIUONG - Mã giường FHIR path: VNCoreEncounter.location.location.resolve().identifier.value Mapping note: Conditionally required for bed-day MA_NHOM values 14, 15, 16.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">maGiuongSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maGiuong <i>"maGiuong"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_BAC_SI - Mã bác sĩ FHIR path: VNCoreServiceRequest.requester.resolve().identifier.value | VNCoreProcedure.performer.actor.resolve().identifier.value | VNCorePractitioner.identifier.value</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">maBacSiSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maBacSi <i>"maBacSi"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: NGUOI_THUC_HIEN - Người thực hiện FHIR path: VNCoreProcedure.performer.actor.resolve().identifier.value | VNCorePractitioner.identifier.value</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">nguoiThucHienSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.nguoiThucHien <i>"nguoiThucHien"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_BENH - Mã bệnh liên quan FHIR path: VNCoreCondition.code | VNCoreClaim.diagnosis.diagnosisCodeableConcept</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">maBenhSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maBenh <i>"maBenh"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">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</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">maBenhYhctSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maBenhYhct <i>"maBenhYhct"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: NGAY_YL - Ngày y lệnh FHIR path: VNCoreServiceRequest.authoredOn | VNCoreProcedure.basedOn.resolve().authoredOn</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">ngayYlSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.ngayYl <i>"ngayYl"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: NGAY_TH_YL - Ngày thực hiện y lệnh FHIR path: VNCoreProcedure.performedDateTime | VNCoreServiceRequest.occurrenceDateTime</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">ngayThYlSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.ngayThYl <i>"ngayThYl"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: NGAY_KQ - Ngày kết quả FHIR path: VNCoreDiagnosticReport.issued | VNCoreObservationLab.effectiveDateTime Mapping note: Conditionally required except for bed-day MA_NHOM values 14, 15, 16.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">ngayKqSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.ngayKq <i>"ngayKq"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_PTTT - Mã phẫu thuật/thủ thuật FHIR path: VNCoreClaim.procedure.procedureCodeableConcept | VNCoreProcedure.code</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">maPtttSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maPttt <i>"maPttt"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: VET_THUONG_TP - Vết thương tái phát FHIR path: VNCoreClaim.item[serviceLine].extension[recurrentWoundBenefit].valueBoolean | VNCoreExplanationOfBenefit.item[serviceLine].extension[recurrentWoundBenefit].valueBoolean Mapping note: Exporter emits literal `1` only when the line-level recurrentWoundBenefit flag is true; this is not a diagnosis recurrence code.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">vetThuongTpSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.vetThuongTp <i>"vetThuongTp"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: PP_VO_CAM - Phương pháp vô cảm FHIR path: VNCoreProcedure.extension[anesthesiaMethod] | VNCoreClaim.item.where(category!='8').extension[anesthesiaMethod] | binding vn-anesthesia-method-vs (VNAnesthesiaMethodCS) Mapping note: Mã phương pháp vô cảm trong PT-TT: 1=gây mê, 2=gây tê, 3=châm tê, 4=vô cảm khác (QĐ 3176/QĐ-BYT); chỉ bắt buộc khi PT-TT có dùng phương pháp vô cảm → 0..1. CodeSystem đích VNAnesthesiaMethodCS (vn-anesthesia-method-cs) đã được tạo — binding tới ValueSet vn-anesthesia-method-vs trên future extension anesthesiaMethod của Procedure; bổ sung host Claim.item.extension khi ràng buộc max-cardinality (MR) !=1 của extension được sửa.</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">ppVoCamSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.ppVoCam <i>"ppVoCam"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: VI_TRI_TH_DVKT - Vị trí thực hiện DVKT FHIR path: VNCoreProcedure.bodySite | VNCoreServiceRequest.bodySite</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">viTriThDvktSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.viTriThDvkt <i>"viTriThDvkt"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_MAY - Mã máy FHIR path: VNCoreDevice.identifier.value</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">maMaySource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maMay <i>"maMay"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_HIEU_SP - Mã hiệu sản phẩm FHIR path: VNCoreDevice.deviceName.name | VNCoreDevice.modelNumber</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">maHieuSpSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maHieuSp <i>"maHieuSp"</i><span style=\"color: navy\">;</span>\r\n <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: TAI_SU_DUNG - Tái sử dụng FHIR path: VNCoreDeviceUseStatement.note | future reusable-device extension</span>\r\n sourceBundle.entry 0<span style=\"color: navy\">..</span>*<b> as </b><span style=\"color: maroon\">taiSuDungSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.taiSuDung <i>"taiSuDung"</i><span style=\"color: navy\">;</span>\r\n<span style=\"color: navy\">}\r\n\r\n</span></pre></div>"
},
"url" : "http://fhir.hl7.org.vn/core/StructureMap/vn-sm-bhyt-xml3-service",
"identifier" : [
{
"system" : "urn:ietf:rfc:3986",
"value" : "urn:oid:2.25.161089673617632664299011809196868855799.43.6"
}
],
"version" : "0.8.0",
"name" : "BHYTXML3ServiceLMStructureMap",
"title" : "Bảng 3 DVKT và vật tư BHYT — Logical Model — StructureMap",
"status" : "draft",
"experimental" : false,
"date" : "2026-04-28",
"publisher" : "Omi HealthTech / VN Core FHIR Community Initiative",
"contact" : [
{
"name" : "Omi HealthTech / VN Core FHIR Community Initiative",
"telecom" : [
{
"system" : "url",
"value" : "https://hl7.org.vn"
},
{
"system" : "email",
"value" : "info@hl7.org.vn"
}
]
},
{
"name" : "Omi HealthTech (OmiGroup)",
"telecom" : [
{
"system" : "url",
"value" : "https://omihealthtech.vn"
},
{
"system" : "url",
"value" : "https://omigroup.vn"
},
{
"system" : "email",
"value" : "info@hl7.org.vn"
}
]
}
],
"description" : "Generated StructureMap scaffold for Bảng 3 DVKT và vật tư BHYT — Logical Model. Source semantics come from the logical model mapping annotations in `BHYTXML3ServiceLM.fsh` and remain aligned with the Python BHYT round-trip export adapter.",
"jurisdiction" : [
{
"coding" : [
{
"system" : "urn:iso:std:iso:3166",
"code" : "VN",
"display" : "Viet Nam"
}
]
}
],
"purpose" : "Publish canonical, reviewable FHIR-to-BHYT XML mapping artifacts for XML1-XML12 without duplicating field-level mapping semantics across FSH, wiki, and export code.",
"structure" : [
{
"url" : "http://fhir.hl7.org.vn/core/StructureDefinition/vn-core-bhyt-submission-bundle",
"mode" : "source",
"alias" : "BHYTSubmissionBundle",
"documentation" : "FHIR-native source bundle profile used by the repository round-trip adapter."
},
{
"url" : "http://fhir.hl7.org.vn/core/StructureDefinition/bhytXml3ServiceLm",
"mode" : "target",
"alias" : "BHYTXML3ServiceLM",
"documentation" : "Bảng 3 DVKT và vật tư BHYT — Logical Model"
}
],
"group" : [
{
"name" : "MapBHYTXML3ServiceLM",
"typeMode" : "none",
"documentation" : "Full QD 3176 XML3 field catalog. Rows are derived from non-medication service, supply, device, procedure, and bed-day claim items. 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`.",
"input" : [
{
"name" : "sourceBundle",
"type" : "BHYTSubmissionBundle",
"mode" : "source",
"documentation" : "VN Core BHYT submission bundle."
},
{
"name" : "targetRow",
"type" : "BHYTXML3ServiceLM",
"mode" : "target",
"documentation" : "Bảng 3 DVKT và vật tư BHYT — Logical Model"
}
],
"rule" : [
{
"name" : "maLk",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maLkSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maLk"
}
],
"documentation" : "Target field: MA_LK - Mã liên kết hồ sơ FHIR path: VNCoreClaim.identifier[MALK].value"
},
{
"name" : "stt",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "sttSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "stt"
}
],
"documentation" : "Target field: STT - Số thứ tự dòng FHIR path: VNCoreClaim.item.where(category!='8').sequence"
},
{
"name" : "maDichVu",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maDichVuSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maDichVu"
}
],
"documentation" : "Target field: MA_DICH_VU - Mã dịch vụ kỹ thuật FHIR path: VNCoreClaim.item.where(category!='8').productOrService.coding.code | VNCoreServiceRequest.code.coding.code Mapping note: Conditionally required when MA_VAT_TU is absent or MA_NHOM is not 10."
},
{
"name" : "maPtttQt",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maPtttQtSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maPtttQt"
}
],
"documentation" : "Target field: MA_PTTT_QT - Mã phương thức thanh toán FHIR path: VNCoreClaim.extension[paymentMethod].valueCodeableConcept.coding.code | VNCoreClaim.item.extension[paymentMethod].valueCodeableConcept.coding.code"
},
{
"name" : "maVatTu",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maVatTuSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maVatTu"
}
],
"documentation" : "Target field: MA_VAT_TU - Mã vật tư y tế FHIR path: VNCoreDevice.identifier[medicalDeviceItemCode].value | VNCoreClaim.item.where(category!='8').productOrService.coding.code Mapping note: Conditionally required when MA_DICH_VU is absent or MA_NHOM=10; do not collapse medical supplies into service codes when Device is available."
},
{
"name" : "maNhom",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maNhomSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maNhom"
}
],
"documentation" : "Target field: MA_NHOM - Mã nhóm chi phí theo QĐ 3176/QĐ-BYT FHIR path: ConceptMap/vn-cm-bhyt-claim-cost-group-to-cost-category -> VNCoreClaim.item.where(category!='8').category.coding.code Mapping note: Source code system is QD 3176 MA_NHOM. Export/import must bridge through the ConceptMap instead of assigning the QD 697 target code directly."
},
{
"name" : "goiVtyt",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "goiVtytSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "goiVtyt"
}
],
"documentation" : "Target field: GOI_VTYT - Gói vật tư y tế FHIR path: VNCoreClaim.item.where(category!='8') | future supply-package (GOI_VTYT) extension Mapping note: Mã gói VTYT trong một lần dùng DVKT (G1, G2,...) theo QĐ 3176/QĐ-BYT; ghi tại dòng DVKT phát sinh gói VTYT đi kèm → điều kiện, 0..1. Chưa có element đích — dùng future extension nhóm gói VTYT trên Claim.item (tiền lệ taiSuDung)."
},
{
"name" : "tenVatTu",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "tenVatTuSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "tenVatTu"
}
],
"documentation" : "Target field: TEN_VAT_TU - Tên vật tư y tế FHIR path: VNCoreDevice.deviceName.name | VNCoreClaim.item.where(category!='8').productOrService.text | display"
},
{
"name" : "tenDichVu",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "tenDichVuSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "tenDichVu"
}
],
"documentation" : "Target field: TEN_DICH_VU - Tên dịch vụ kỹ thuật FHIR path: VNCoreClaim.item.where(category!='8').productOrService.text | VNCoreServiceRequest.code.text | display"
},
{
"name" : "maXangDau",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maXangDauSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maXangDau"
}
],
"documentation" : "Target field: MA_XANG_DAU - Mã xăng dầu FHIR path: VNCoreClaim.item.where(category!='8') | future fuel-type-code (MA_XANG_DAU) extension Mapping note: Mã loại xăng, dầu để tính chi phí vận chuyển người bệnh theo Bộ mã DMDC do Bộ Y tế ban hành (QĐ 3176/QĐ-BYT); chỉ áp cho dòng vận chuyển (MA_DICH_VU=VC.XXXXX) → điều kiện, 0..1. Chưa có element đích — dùng future extension mã nhiên liệu trên Claim.item."
},
{
"name" : "donViTinh",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "donViTinhSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "donViTinh"
}
],
"documentation" : "Target field: DON_VI_TINH - Đơn vị tính FHIR path: VNCoreClaim.item.where(category!='8').quantity.unit"
},
{
"name" : "phamVi",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "phamViSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "phamVi"
}
],
"documentation" : "Target field: PHAM_VI - Phạm vi thanh toán FHIR path: VNCoreClaim.item.where(category!='8').extension[insuranceCostInfo].extension[scope].valueCodeableConcept"
},
{
"name" : "soLuong",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "soLuongSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "soLuong"
}
],
"documentation" : "Target field: SO_LUONG - Số lượng FHIR path: VNCoreClaim.item.where(category!='8').quantity.value"
},
{
"name" : "donGiaBv",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "donGiaBvSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "donGiaBv"
}
],
"documentation" : "Target field: DON_GIA_BV - Đơn giá bệnh viện FHIR path: VNCoreClaim.item.where(category!='8').unitPrice.value | VNCoreClaim.item.extension[hospitalUnitPrice].valueMoney.value Mapping note: Hospital charge price; keep separate from the BHYT price to avoid financial round-trip loss."
},
{
"name" : "donGiaBh",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "donGiaBhSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "donGiaBh"
}
],
"documentation" : "Target field: DON_GIA_BH - Đơn giá BHYT FHIR path: VNCoreClaim.item.where(category!='8').extension[insuranceCostInfo].extension[insuranceUnitPrice].valueMoney.value Mapping note: BHYT-covered unit price; do not collapse into Claim.item.unitPrice when hospital and insurance prices differ."
},
{
"name" : "ttThau",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "ttThauSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "ttThau"
}
],
"documentation" : "Target field: TT_THAU - Thông tin thầu FHIR path: VNCoreClaim.item.where(category!='8').extension[tenderInfo].valueString Mapping note: Chuỗi thông tin thầu VTYT: số QĐ trúng thầu; số gói thầu; mã nhóm thầu (Phụ lục 7 QĐ 5937/QĐ-BYT); năm ban hành, cách nhau bằng ';' (QĐ 3176/QĐ-BYT). Đính chính: tăng kích thước tối đa lên 50 ký tự; VTYT đấu thầu/duyệt kế hoạch từ 14/4/2023 tạm dùng mã nhóm thầu 'N0'. Đích: extension VNCoreExtTenderInfo (value string) đã tồn tại trên Claim.item. Ghi chú scope: TT_THAU chỉ áp cho dòng VTYT (điều kiện) nhưng cardinality hiện giữ 1..1 theo bản gốc — không sửa trong lượt bổ sung mapping này."
},
{
"name" : "tyleTtDv",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "tyleTtDvSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "tyleTtDv"
}
],
"documentation" : "Target field: TYLE_TT_DV - Tỷ lệ thanh toán dịch vụ FHIR path: VNCoreClaim.item.where(category!='8').extension[insuranceCostInfo].extension[servicePaymentRatio].valueDecimal"
},
{
"name" : "tyleTtBh",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "tyleTtBhSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "tyleTtBh"
}
],
"documentation" : "Target field: TYLE_TT_BH - Tỷ lệ thanh toán BHYT FHIR path: VNCoreClaim.item.where(category!='8').extension[insuranceCostInfo].extension[paymentRatio].valueDecimal"
},
{
"name" : "thanhTienBv",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "thanhTienBvSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "thanhTienBv"
}
],
"documentation" : "Target field: THANH_TIEN_BV - Thành tiền bệnh viện FHIR path: VNCoreClaim.item.where(category!='8').net.value | VNCoreClaim.item.extension[hospitalLineAmount].valueMoney.value Mapping note: Hospital line amount; keep separate from BHYT line amount."
},
{
"name" : "thanhTienBh",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "thanhTienBhSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "thanhTienBh"
}
],
"documentation" : "Target field: THANH_TIEN_BH - Thành tiền BHYT FHIR path: VNCoreClaim.item.where(category!='8').extension[insuranceCostInfo].extension[insuranceLineAmount].valueMoney.value"
},
{
"name" : "tTrantt",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "tTranttSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "tTrantt"
}
],
"documentation" : "Target field: T_TRANTT - Mức trần thanh toán BHYT của gói VTYT FHIR path: VNCoreClaim.item.where(category!='8').extension[insuranceCostInfo].extension[paymentCeiling].valueMoney.value Mapping note: Mức thanh toán tối đa BHYT (45 tháng lương cơ sở) của gói VTYT trong một lần thực hiện DVKT theo Thông tư 04/2017/TT-BYT (diễn giải sửa đổi toàn bộ theo QĐ 3176/QĐ-BYT; kế thừa QĐ 4750/QĐ-BYT); trần 45 tháng lương cơ sở theo NĐ 188/2025/NĐ-CP. Chỉ ghi khi VTYT có quy định mức thanh toán BHYT, để trống khi không có trần → điều kiện, 0..1. Quan hệ tính toán: khi DON_GIA_BV vượt trần thì DON_GIA_BH = T_TRANTT. Đích là sub-extension paymentCeiling (valueMoney) của VNCoreExtInsuranceCostInfo trên Claim.item, tránh gộp mất dữ liệu vào insuranceUnitPrice."
},
{
"name" : "mucHuong",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "mucHuongSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "mucHuong"
}
],
"documentation" : "Target field: MUC_HUONG - Mức hưởng FHIR path: VNCoreClaim.item.where(category!='8').extension[insuranceCostInfo].extension[benefitLevel].valueDecimal Mapping note: QĐ 1931/QĐ-BYT (29/06/2026) sửa đổi QĐ 3176/QĐ-BYT: kích thước tối đa của MUC_HUONG tại Bảng 3 tăng lên 4 ký tự."
},
{
"name" : "tNguonkhacNsnn",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "tNguonkhacNsnnSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "tNguonkhacNsnn"
}
],
"documentation" : "Target field: T_NGUONKHAC_NSNN - Nguồn khác ngân sách nhà nước FHIR path: VNCoreClaim.item.where(category!='8').extension[otherFundBreakdown].extension[stateBudget].valueMoney.value Mapping note: Số tiền DVKT/VTYT được ngân sách nhà nước (Trung ương và/hoặc địa phương) hỗ trợ theo QĐ 3176/QĐ-BYT, làm tròn 2 chữ số thập phân. Đích line-level là sub-extension stateBudget của VNCoreExtOtherFundBreakdown trên Claim.item; tổng hợp toàn hồ sơ tại Claim.extension[costSummary].extension[totalOtherFund]."
},
{
"name" : "tNguonkhacVtnn",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "tNguonkhacVtnnSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "tNguonkhacVtnn"
}
],
"documentation" : "Target field: T_NGUONKHAC_VTNN - Nguồn khác viện trợ nước ngoài FHIR path: VNCoreClaim.item.where(category!='8').extension[otherFundBreakdown].extension[foreignAid].valueMoney.value Mapping note: Số tiền DVKT/VTYT được tổ chức/cá nhân có trụ sở hoặc đang sinh sống, học tập, lao động ngoài lãnh thổ Việt Nam hỗ trợ (QĐ 3176/QĐ-BYT). Đích line-level là sub-extension foreignAid của VNCoreExtOtherFundBreakdown trên Claim.item."
},
{
"name" : "tNguonkhacVttn",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "tNguonkhacVttnSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "tNguonkhacVttn"
}
],
"documentation" : "Target field: T_NGUONKHAC_VTTN - Nguồn khác viện trợ trong nước FHIR path: VNCoreClaim.item.where(category!='8').extension[otherFundBreakdown].extension[domesticAid].valueMoney.value Mapping note: Số tiền DVKT/VTYT được tổ chức/cá nhân có trụ sở hoặc đang sinh sống, học tập, lao động trong lãnh thổ Việt Nam hỗ trợ (QĐ 3176/QĐ-BYT). Đích line-level là sub-extension domesticAid của VNCoreExtOtherFundBreakdown trên Claim.item."
},
{
"name" : "tNguonkhacCl",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "tNguonkhacClSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "tNguonkhacCl"
}
],
"documentation" : "Target field: T_NGUONKHAC_CL - Nguồn khác còn lại FHIR path: VNCoreClaim.item.where(category!='8').extension[otherFundBreakdown].extension[otherRemaining].valueMoney.value Mapping note: Số tiền DVKT/VTYT từ các nguồn khác còn lại, không thuộc ba nguồn NSNN/VTNN/VTTN (QĐ 3176/QĐ-BYT). Đích line-level là sub-extension otherRemaining của VNCoreExtOtherFundBreakdown trên Claim.item."
},
{
"name" : "tNguonkhac",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "tNguonkhacSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "tNguonkhac"
}
],
"documentation" : "Target field: T_NGUONKHAC - Tổng nguồn khác FHIR path: VNCoreClaim.item.where(category!='8').extension[otherFundBreakdown] (tổng = stateBudget + foreignAid + domesticAid + otherRemaining) Mapping note: Tổng nguồn khác line-level = T_NGUONKHAC_NSNN + T_NGUONKHAC_VTNN + T_NGUONKHAC_VTTN + T_NGUONKHAC_CL (sửa đổi toàn bộ theo QĐ 3176/QĐ-BYT); khi >0 giảm trừ lần lượt vào T_BNTT, T_BNCCT, T_BHTT đến khi hết. 4 thành phần tách theo dòng qua VNCoreExtOtherFundBreakdown trên Claim.item; tổng toàn hồ sơ ánh xạ VNCoreClaim.extension[costSummary].extension[totalOtherFund].valueMoney.value (xem BHYTXML1SummaryLM)."
},
{
"name" : "tBntt",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "tBnttSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "tBntt"
}
],
"documentation" : "Target field: T_BNTT - Người bệnh tự trả FHIR path: Derived from VNCoreClaimResponse.item[serviceLine].adjudication.where(category='submitted').amount - .where(category='eligible').amount | Derived from VNCoreExplanationOfBenefit.item[serviceLine].adjudication.where(category='submitted').amount - .where(category='eligible').amount"
},
{
"name" : "tBncct",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "tBncctSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "tBncct"
}
],
"documentation" : "Target field: T_BNCCT - Người bệnh cùng chi trả FHIR path: VNCoreClaimResponse.item[serviceLine].adjudication.where(category='copay').amount.value | VNCoreExplanationOfBenefit.item[serviceLine].adjudication.where(category='copay').amount.value"
},
{
"name" : "tBhtt",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "tBhttSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "tBhtt"
}
],
"documentation" : "Target field: T_BHTT - Quỹ BHYT thanh toán FHIR path: VNCoreClaimResponse.item[serviceLine].adjudication.where(category='benefit').amount.value | VNCoreExplanationOfBenefit.item[serviceLine].adjudication.where(category='benefit').amount.value"
},
{
"name" : "maKhoa",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maKhoaSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maKhoa"
}
],
"documentation" : "Target field: MA_KHOA - Mã khoa FHIR path: VNCoreClaim.item.where(category!='8').extension[department].valueCodeableConcept.coding.code"
},
{
"name" : "maGiuong",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maGiuongSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maGiuong"
}
],
"documentation" : "Target field: MA_GIUONG - Mã giường FHIR path: VNCoreEncounter.location.location.resolve().identifier.value Mapping note: Conditionally required for bed-day MA_NHOM values 14, 15, 16."
},
{
"name" : "maBacSi",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maBacSiSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maBacSi"
}
],
"documentation" : "Target field: MA_BAC_SI - Mã bác sĩ FHIR path: VNCoreServiceRequest.requester.resolve().identifier.value | VNCoreProcedure.performer.actor.resolve().identifier.value | VNCorePractitioner.identifier.value"
},
{
"name" : "nguoiThucHien",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "nguoiThucHienSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "nguoiThucHien"
}
],
"documentation" : "Target field: NGUOI_THUC_HIEN - Người thực hiện FHIR path: VNCoreProcedure.performer.actor.resolve().identifier.value | VNCorePractitioner.identifier.value"
},
{
"name" : "maBenh",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maBenhSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maBenh"
}
],
"documentation" : "Target field: MA_BENH - Mã bệnh liên quan FHIR path: VNCoreCondition.code | VNCoreClaim.diagnosis.diagnosisCodeableConcept"
},
{
"name" : "maBenhYhct",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maBenhYhctSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maBenhYhct"
}
],
"documentation" : "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"
},
{
"name" : "ngayYl",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "ngayYlSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "ngayYl"
}
],
"documentation" : "Target field: NGAY_YL - Ngày y lệnh FHIR path: VNCoreServiceRequest.authoredOn | VNCoreProcedure.basedOn.resolve().authoredOn"
},
{
"name" : "ngayThYl",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "ngayThYlSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "ngayThYl"
}
],
"documentation" : "Target field: NGAY_TH_YL - Ngày thực hiện y lệnh FHIR path: VNCoreProcedure.performedDateTime | VNCoreServiceRequest.occurrenceDateTime"
},
{
"name" : "ngayKq",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "ngayKqSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "ngayKq"
}
],
"documentation" : "Target field: NGAY_KQ - Ngày kết quả FHIR path: VNCoreDiagnosticReport.issued | VNCoreObservationLab.effectiveDateTime Mapping note: Conditionally required except for bed-day MA_NHOM values 14, 15, 16."
},
{
"name" : "maPttt",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maPtttSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maPttt"
}
],
"documentation" : "Target field: MA_PTTT - Mã phẫu thuật/thủ thuật FHIR path: VNCoreClaim.procedure.procedureCodeableConcept | VNCoreProcedure.code"
},
{
"name" : "vetThuongTp",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "vetThuongTpSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "vetThuongTp"
}
],
"documentation" : "Target field: VET_THUONG_TP - Vết thương tái phát FHIR path: VNCoreClaim.item[serviceLine].extension[recurrentWoundBenefit].valueBoolean | VNCoreExplanationOfBenefit.item[serviceLine].extension[recurrentWoundBenefit].valueBoolean Mapping note: Exporter emits literal `1` only when the line-level recurrentWoundBenefit flag is true; this is not a diagnosis recurrence code."
},
{
"name" : "ppVoCam",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "ppVoCamSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "ppVoCam"
}
],
"documentation" : "Target field: PP_VO_CAM - Phương pháp vô cảm FHIR path: VNCoreProcedure.extension[anesthesiaMethod] | VNCoreClaim.item.where(category!='8').extension[anesthesiaMethod] | binding vn-anesthesia-method-vs (VNAnesthesiaMethodCS) Mapping note: Mã phương pháp vô cảm trong PT-TT: 1=gây mê, 2=gây tê, 3=châm tê, 4=vô cảm khác (QĐ 3176/QĐ-BYT); chỉ bắt buộc khi PT-TT có dùng phương pháp vô cảm → 0..1. CodeSystem đích VNAnesthesiaMethodCS (vn-anesthesia-method-cs) đã được tạo — binding tới ValueSet vn-anesthesia-method-vs trên future extension anesthesiaMethod của Procedure; bổ sung host Claim.item.extension khi ràng buộc max-cardinality (MR) !=1 của extension được sửa."
},
{
"name" : "viTriThDvkt",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "viTriThDvktSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "viTriThDvkt"
}
],
"documentation" : "Target field: VI_TRI_TH_DVKT - Vị trí thực hiện DVKT FHIR path: VNCoreProcedure.bodySite | VNCoreServiceRequest.bodySite"
},
{
"name" : "maMay",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maMaySource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maMay"
}
],
"documentation" : "Target field: MA_MAY - Mã máy FHIR path: VNCoreDevice.identifier.value"
},
{
"name" : "maHieuSp",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maHieuSpSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maHieuSp"
}
],
"documentation" : "Target field: MA_HIEU_SP - Mã hiệu sản phẩm FHIR path: VNCoreDevice.deviceName.name | VNCoreDevice.modelNumber"
},
{
"name" : "taiSuDung",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "taiSuDungSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "taiSuDung"
}
],
"documentation" : "Target field: TAI_SU_DUNG - Tái sử dụng FHIR path: VNCoreDeviceUseStatement.note | future reusable-device extension"
}
]
}
]
}