Bộ Hướng dẫn Triển khai Core FHIR cho Việt Nam
0.5.0 - Draft for Community Review
Bộ Hướng dẫn Triển khai Core FHIR cho Việt Nam - Draft for Community Review (v0.5.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-xml11-sick-leave",
"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-xml11-sick-leave</b></p><a name=\"vn-sm-bhyt-xml11-sick-leave\"> </a><a name=\"hcvn-sm-bhyt-xml11-sick-leave\"> </a><pre class=\"fml\">\r\n<b>map</b><span style=\"color: navy\"> "</span>http://fhir.hl7.org.vn/core/StructureMap/vn-sm-bhyt-xml11-sick-leave<span style=\"color: navy\">" = "</span>BHYTXML11SickLeaveLMStructureMap<span style=\"color: navy\">"\r\n\r\n</span><span style=\"color: navy\">// </span><span style=\"color: green\">Generated StructureMap scaffold for Bảng 11 giấy chứng nhận nghỉ việc hưởng BHXH — XML11 Sick Leave Logical Model. Source semantics come from the logical model mapping annotations in `BHYTXML11SickLeaveLM.fsh` and remain aligned with the Python BHYT round-trip export adapter.</span>\r\n\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> <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-bhytXml11SickLeaveLm.html\" title=\"Bảng 11 giấy chứng nhận nghỉ việc hưởng BHXH — XML11 Sick Leave Logical Model\">http://fhir.hl7.org.vn/core/StructureDefinition/bhytXml11SickLeaveLm</a><span style=\"color: navy\">" </span><b>alias </b>BHYTXML11SickLeaveLM <b>as </b><b>target</b> <span style=\"color: navy\">// </span><span style=\"color: green\">Bảng 11 giấy chứng nhận nghỉ việc hưởng BHXH — XML11 Sick Leave Logical Model</span>\r\n\r\n<span style=\"color: navy\">// </span><span style=\"color: green\">Rows are derived from sick-leave DocumentReference/Composition, period, certifying Practitioner, Coverage and parent/guardian data. 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>MapBHYTXML11SickLeaveLM<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>BHYTXML11SickLeaveLM<span style=\"color: navy\">)</span><span style=\"color: navy\"> {\r\n</span> sourceBundle.entry<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> <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<b> as </b><span style=\"color: maroon\">soCtSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.soCt <i>"soCt"</i><span style=\"color: navy\">;</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: SO_CT - Số chứng từ FHIR path: VNCoreDocumentReference.identifier.value | VNCoreComposition.identifier.value</span>\r\n sourceBundle.entry<b> as </b><span style=\"color: maroon\">soSeriSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.soSeri <i>"soSeri"</i><span style=\"color: navy\">;</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: SO_SERI - Số seri FHIR path: VNCoreDocumentReference.identifier.value | VNCoreComposition.identifier.value</span>\r\n sourceBundle.entry<b> as </b><span style=\"color: maroon\">soKcbSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.soKcb <i>"soKcb"</i><span style=\"color: navy\">;</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: SO_KCB - Số KCB FHIR path: VNCoreEncounter.identifier[MA_LUOT_KCB].value</span>\r\n sourceBundle.entry<b> as </b><span style=\"color: maroon\">donViSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.donVi <i>"donVi"</i><span style=\"color: navy\">;</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: DON_VI - Đơn vị FHIR path: VNCoreOrganization.name | VNCoreDocumentReference.custodian.resolve().name</span>\r\n sourceBundle.entry<b> as </b><span style=\"color: maroon\">maBhxhSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maBhxh <i>"maBhxh"</i><span style=\"color: navy\">;</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_BHXH - Mã BHXH FHIR path: VNCorePatient.identifier[BHXH].value | VNCoreCoverage.subscriberId</span>\r\n sourceBundle.entry<b> as </b><span style=\"color: maroon\">maTheBhytSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maTheBhyt <i>"maTheBhyt"</i><span style=\"color: navy\">;</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_THE_BHYT - Mã thẻ BHYT FHIR path: VNCoreCoverage.identifier[BHYT].value</span>\r\n sourceBundle.entry<b> as </b><span style=\"color: maroon\">soNgayNghiSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.soNgayNghi <i>"soNgayNghi"</i><span style=\"color: navy\">;</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: SO_NGAY_NGHI - Số ngày nghỉ FHIR path: Derived from VNCoreDocumentReference.context.period | VNCoreComposition.event.period</span>\r\n sourceBundle.entry<b> as </b><span style=\"color: maroon\">tuNgaySource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.tuNgay <i>"tuNgay"</i><span style=\"color: navy\">;</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: TU_NGAY - Từ ngày FHIR path: VNCoreDocumentReference.context.period.start</span>\r\n sourceBundle.entry<b> as </b><span style=\"color: maroon\">denNgaySource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.denNgay <i>"denNgay"</i><span style=\"color: navy\">;</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: DEN_NGAY - Đến ngày FHIR path: VNCoreDocumentReference.context.period.end</span>\r\n sourceBundle.entry<b> as </b><span style=\"color: maroon\">hoTenChaSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.hoTenCha <i>"hoTenCha"</i><span style=\"color: navy\">;</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: HO_TEN_CHA - Họ tên cha FHIR path: VNCoreRelatedPerson.where(relationship.coding.code='FTH').name.text | VNCorePatient.contact.where(relationship.coding.code='FTH').name.text</span>\r\n sourceBundle.entry<b> as </b><span style=\"color: maroon\">hoTenMeSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.hoTenMe <i>"hoTenMe"</i><span style=\"color: navy\">;</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: HO_TEN_ME - Họ tên mẹ FHIR path: VNCoreRelatedPerson.where(relationship.coding.code='MTH').name.text | VNCorePatient.contact.where(relationship.coding.code='MTH').name.text</span>\r\n sourceBundle.entry<b> as </b><span style=\"color: maroon\">maTtdvSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maTtdv <i>"maTtdv"</i><span style=\"color: navy\">;</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_TTDV - Mã thủ trưởng đơn vị/người ký FHIR path: VNCoreComposition.attester.party.resolve().identifier.value | VNCoreDocumentReference.authenticator.resolve().identifier.value</span>\r\n sourceBundle.entry<b> as </b><span style=\"color: maroon\">maBsSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maBs <i>"maBs"</i><span style=\"color: navy\">;</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_BS - Mã bác sĩ FHIR path: VNCoreComposition.author.resolve().identifier.value | VNCorePractitioner.identifier.value</span>\r\n sourceBundle.entry<b> as </b><span style=\"color: maroon\">ngayCtSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.ngayCt <i>"ngayCt"</i><span style=\"color: navy\">;</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: NGAY_CT - Ngày cấp chứng từ FHIR path: VNCoreDocumentReference.date | VNCoreComposition.date</span>\r\n sourceBundle.entry<b> as </b><span style=\"color: maroon\">maTheTamSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.maTheTam <i>"maTheTam"</i><span style=\"color: navy\">;</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MA_THE_TAM - Mã thẻ tạm FHIR path: VNCoreCoverage.identifier.value Mapping note: Temporary card identifiers are kept as Coverage.identifier until a dedicated temporary-card slice is profiled.</span>\r\n sourceBundle.entry<b> as </b><span style=\"color: maroon\">mauSoSource</span><span style=\"color: navy\"><b> -> </b></span>targetRow.mauSo <i>"mauSo"</i><span style=\"color: navy\">;</span> <span style=\"color: navy\">// </span><span style=\"color: green\">Target field: MAU_SO - Mẫu số FHIR path: VNCoreDocumentReference.type.coding.code | VNCoreComposition.type.coding.code</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-xml11-sick-leave",
"version" : "0.5.0",
"name" : "BHYTXML11SickLeaveLMStructureMap",
"title" : "Bảng 11 giấy chứng nhận nghỉ việc hưởng BHXH — XML11 Sick Leave 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" : "[email protected]"
}
]
},
{
"name" : "Omi HealthTech (OmiGroup)",
"telecom" : [
{
"system" : "url",
"value" : "https://omihealthtech.vn"
},
{
"system" : "url",
"value" : "https://omigroup.vn"
},
{
"system" : "email",
"value" : "[email protected]"
}
]
}
],
"description" : "Generated StructureMap scaffold for Bảng 11 giấy chứng nhận nghỉ việc hưởng BHXH — XML11 Sick Leave Logical Model. Source semantics come from the logical model mapping annotations in `BHYTXML11SickLeaveLM.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/bhytXml11SickLeaveLm",
"mode" : "target",
"alias" : "BHYTXML11SickLeaveLM",
"documentation" : "Bảng 11 giấy chứng nhận nghỉ việc hưởng BHXH — XML11 Sick Leave Logical Model"
}
],
"group" : [
{
"name" : "MapBHYTXML11SickLeaveLM",
"typeMode" : "none",
"documentation" : "Rows are derived from sick-leave DocumentReference/Composition, period, certifying Practitioner, Coverage and parent/guardian data. 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" : "BHYTXML11SickLeaveLM",
"mode" : "target",
"documentation" : "Bảng 11 giấy chứng nhận nghỉ việc hưởng BHXH — XML11 Sick Leave 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" : "soCt",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "soCtSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "soCt"
}
],
"documentation" : "Target field: SO_CT - Số chứng từ FHIR path: VNCoreDocumentReference.identifier.value | VNCoreComposition.identifier.value"
},
{
"name" : "soSeri",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "soSeriSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "soSeri"
}
],
"documentation" : "Target field: SO_SERI - Số seri FHIR path: VNCoreDocumentReference.identifier.value | VNCoreComposition.identifier.value"
},
{
"name" : "soKcb",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "soKcbSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "soKcb"
}
],
"documentation" : "Target field: SO_KCB - Số KCB FHIR path: VNCoreEncounter.identifier[MA_LUOT_KCB].value"
},
{
"name" : "donVi",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "donViSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "donVi"
}
],
"documentation" : "Target field: DON_VI - Đơn vị FHIR path: VNCoreOrganization.name | VNCoreDocumentReference.custodian.resolve().name"
},
{
"name" : "maBhxh",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maBhxhSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maBhxh"
}
],
"documentation" : "Target field: MA_BHXH - Mã BHXH FHIR path: VNCorePatient.identifier[BHXH].value | VNCoreCoverage.subscriberId"
},
{
"name" : "maTheBhyt",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maTheBhytSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maTheBhyt"
}
],
"documentation" : "Target field: MA_THE_BHYT - Mã thẻ BHYT FHIR path: VNCoreCoverage.identifier[BHYT].value"
},
{
"name" : "soNgayNghi",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "soNgayNghiSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "soNgayNghi"
}
],
"documentation" : "Target field: SO_NGAY_NGHI - Số ngày nghỉ FHIR path: Derived from VNCoreDocumentReference.context.period | VNCoreComposition.event.period"
},
{
"name" : "tuNgay",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "tuNgaySource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "tuNgay"
}
],
"documentation" : "Target field: TU_NGAY - Từ ngày FHIR path: VNCoreDocumentReference.context.period.start"
},
{
"name" : "denNgay",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "denNgaySource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "denNgay"
}
],
"documentation" : "Target field: DEN_NGAY - Đến ngày FHIR path: VNCoreDocumentReference.context.period.end"
},
{
"name" : "hoTenCha",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "hoTenChaSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "hoTenCha"
}
],
"documentation" : "Target field: HO_TEN_CHA - Họ tên cha FHIR path: VNCoreRelatedPerson.where(relationship.coding.code='FTH').name.text | VNCorePatient.contact.where(relationship.coding.code='FTH').name.text"
},
{
"name" : "hoTenMe",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "hoTenMeSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "hoTenMe"
}
],
"documentation" : "Target field: HO_TEN_ME - Họ tên mẹ FHIR path: VNCoreRelatedPerson.where(relationship.coding.code='MTH').name.text | VNCorePatient.contact.where(relationship.coding.code='MTH').name.text"
},
{
"name" : "maTtdv",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maTtdvSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maTtdv"
}
],
"documentation" : "Target field: MA_TTDV - Mã thủ trưởng đơn vị/người ký FHIR path: VNCoreComposition.attester.party.resolve().identifier.value | VNCoreDocumentReference.authenticator.resolve().identifier.value"
},
{
"name" : "maBs",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maBsSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maBs"
}
],
"documentation" : "Target field: MA_BS - Mã bác sĩ FHIR path: VNCoreComposition.author.resolve().identifier.value | VNCorePractitioner.identifier.value"
},
{
"name" : "ngayCt",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "ngayCtSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "ngayCt"
}
],
"documentation" : "Target field: NGAY_CT - Ngày cấp chứng từ FHIR path: VNCoreDocumentReference.date | VNCoreComposition.date"
},
{
"name" : "maTheTam",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "maTheTamSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "maTheTam"
}
],
"documentation" : "Target field: MA_THE_TAM - Mã thẻ tạm FHIR path: VNCoreCoverage.identifier.value Mapping note: Temporary card identifiers are kept as Coverage.identifier until a dedicated temporary-card slice is profiled."
},
{
"name" : "mauSo",
"source" : [
{
"context" : "sourceBundle",
"min" : 0,
"max" : "*",
"element" : "entry",
"variable" : "mauSoSource"
}
],
"target" : [
{
"context" : "targetRow",
"contextType" : "variable",
"element" : "mauSo"
}
],
"documentation" : "Target field: MAU_SO - Mẫu số FHIR path: VNCoreDocumentReference.type.coding.code | VNCoreComposition.type.coding.code"
}
]
}
]
}