HL7 Vietnam VN Core FHIR Implementation Guide

Hướng dẫn triển khai FHIR cốt lõi Việt Nam — VN Core FHIR Implementation Guide
0.10.0 - Draft for Community Review Viet Nam cờ

Hướng dẫn triển khai FHIR cốt lõi Việt Nam — VN Core FHIR Implementation Guide - Draft for Community Review (v0.10.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

StructureMap: Bảng 7 giấy ra viện — XML7 Discharge Paper Logical Model — StructureMap

URL chính thức: http://fhir.hl7.org.vn/core/StructureMap/vn-sm-bhyt-xml7-discharge-paper Phiên bản: 0.10.0
Computable Name: BHYTXML7DischargePaperLMStructureMap
Định danh khác: OID:2.25.161089673617632664299011809196868855799.43.13

Generated StructureMap scaffold for Bảng 7 giấy ra viện — XML7 Discharge Paper Logical Model. Source semantics come from the logical model mapping annotations in BHYTXML7DischargePaperLM.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-xml7-discharge-paper" = "BHYTXML7DischargePaperLMStructureMap"

// Generated StructureMap scaffold for Bảng 7 giấy ra viện — XML7 Discharge Paper Logical Model. Source semantics come from the logical model mapping annotations in `BHYTXML7DischargePaperLM.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 7 giấy ra viện — XML7 Discharge Paper Logical Model
uses "http://fhir.hl7.org.vn/core/StructureDefinition/bhytXml7DischargePaperLm" alias BHYTXML7DischargePaperLM as target

// Rows are derived from discharge Composition/DocumentReference, the linked Encounter, Condition, Practitioner and guardian/temporary card 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`.
group MapBHYTXML7DischargePaperLM(source sourceBundle : BHYTSubmissionBundle, target targetRow : BHYTXML7DischargePaperLM) {
  // 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: SO_LUU_TRU - Số lưu trữ/số hồ sơ bệnh án FHIR path: VNCoreComposition.identifier.value | VNCoreDocumentReference.identifier.value
  sourceBundle.entry 0..* as soLuuTruSource -> targetRow.soLuuTru "soLuuTru";
  // Target field: MA_YTE - Mã y tế/mã người bệnh FHIR path: VNCorePatient.identifier[MRN].value
  sourceBundle.entry 0..* as maYteSource -> targetRow.maYte "maYte";
  // Target field: MA_KHOA_RV - Mã khoa ra viện/tổng kết FHIR path: VNCoreEncounter.location.location.resolve().identifier.value | VNCoreOrganizationDepartment.identifier.value
  sourceBundle.entry 0..* as maKhoaRvSource -> targetRow.maKhoaRv "maKhoaRv";
  // Target field: NGAY_VAO - Ngày vào viện FHIR path: VNCoreEncounter.period.start
  sourceBundle.entry 0..* as ngayVaoSource -> targetRow.ngayVao "ngayVao";
  // Target field: NGAY_RA - Ngày ra viện FHIR path: VNCoreEncounter.period.end Mapping note: Đính chính 16/08/2026: bỏ đích VNCoreComposition.date — Composition.date là ngày LẬP tài liệu (0..1) và là đích của NGAY_CT; ngày ra viện thuộc Encounter.period.end.
  sourceBundle.entry 0..* as ngayRaSource -> targetRow.ngayRa "ngayRa";
  // Target field: MA_DINH_CHI_THAI - Mã đình chỉ thai FHIR path: VNCoreProcedure.code | VNCoreCondition.code Mapping note: [MULTI-INSTANCE] Chẩn đoán ra viện, mã đình chỉ thai và nguyên nhân đình chỉ là BA Condition khác nhau trên cùng một lượt điều trị. MA_DINH_CHI_THAI='1' (đình chỉ thai nghén) tương ứng với sự tồn tại một VNCoreProcedure đình chỉ thai nghén (termination of pregnancy); '0' là không đình chỉ. Chưa có slice/mã cố định cho thủ thuật đình chỉ thai nên dùng Procedure.code; quan hệ điều kiện với 3 trường chi tiết theo invariant bhyt-xml7-abortion-fields-required (nhất quán nhóm đình chỉ thai với BHYTXML11SickLeaveLM).
  sourceBundle.entry 0..* as maDinhChiThaiSource -> targetRow.maDinhChiThai "maDinhChiThai";
  // Target field: NGUYENNHAN_DINHCHI - Nguyên nhân đình chỉ thai FHIR path: VNCoreProcedure.reasonCode.text | VNCoreProcedure.reasonReference.resolve().code | VNCoreCondition.code Mapping note: [MULTI-INSTANCE] Chẩn đoán ra viện, mã đình chỉ thai và nguyên nhân đình chỉ là BA Condition khác nhau trên cùng một lượt điều trị. Nguyên nhân đình chỉ thai nghén — ghi dạng text hoặc mã ICD-10 chẩn đoán liên quan (VNCoreCondition); trường hợp bất thường/bệnh lý thai nhi tham chiếu danh mục VNFetalSexDisclosureDiseaseVS (căn cứ TT 11/2026/TT-BYT). Bắt buộc khi MA_DINH_CHI_THAI='1' (invariant bhyt-xml7-abortion-fields-required).
  sourceBundle.entry 0..* as nguyenNhanDinhChiSource -> targetRow.nguyenNhanDinhChi "nguyenNhanDinhChi";
  // Target field: THOIGIAN_DINHCHI - Thời gian đình chỉ thai FHIR path: VNCoreProcedure.performedDateTime Mapping note: Thời điểm thực hiện đình chỉ thai nghén (định dạng yyyymmddHHMM). Bắt buộc khi MA_DINH_CHI_THAI='1' (invariant bhyt-xml7-abortion-fields-required).
  sourceBundle.entry 0..* as thoiGianDinhChiSource -> targetRow.thoiGianDinhChi "thoiGianDinhChi";
  // Target field: TUOI_THAI - Tuổi thai FHIR path: VNCoreProcedure.extension[gestationalAge].valueInteger Mapping note: Tuần tuổi thai thực tế (1–42 tuần) tại thời điểm đình chỉ. FHIR base không có phần tử tuổi thai trên Procedure nên mã hoá qua extension gestational-age (đã gắn vào VNCoreProcedure từ 0.10.0; thay thế được bằng Observation LOINC 18185-9 khi cần đo lặp). Bắt buộc khi MA_DINH_CHI_THAI='1' (invariant bhyt-xml7-abortion-fields-required).
  sourceBundle.entry 0..* as tuoiThaiSource -> targetRow.tuoiThai "tuoiThai";
  // Target field: CHAN_DOAN_RV - Chẩn đoán ra viện FHIR path: VNCoreComposition.section[diagnosis].entry.resolve().code | VNCoreCondition.code | Composition.section.text Mapping note: [MULTI-INSTANCE] Chẩn đoán ra viện, mã đình chỉ thai và nguyên nhân đình chỉ là BA Condition khác nhau trên cùng một lượt điều trị. Ba chỉ tiêu này sinh Condition RIÊNG BIỆT, không ghi đè nhau: chẩn đoán ra viện, mã đình chỉ thai và nguyên nhân đình chỉ là ba mệnh đề lâm sàng khác nhau.
  sourceBundle.entry 0..* as chanDoanRvSource -> targetRow.chanDoanRv "chanDoanRv";
  // Target field: PP_DIEUTRI - 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: VNCoreComposition.section[dischargeSummary].text | VNCoreProcedure.category | future phương-pháp-điều-trị extension Mapping note: Ghi phương pháp điều trị (nội khoa, ngoại khoa, xạ trị, hoá trị hoặc xạ trị kết hợp nội khoa) theo hướng dẫn TT 18/2022/TT-BYT. QĐ 4750/QĐ-BYT (trong chuẩn QĐ 3176/QĐ-BYT) sửa đổi toàn bộ diễn giải và tăng kích thước tối đa lên n ký tự. Chưa có code system phương pháp điều trị riêng nên đích mã hoá tạm để future extension.
  sourceBundle.entry 0..* as ppDieuTriSource -> targetRow.ppDieuTri "ppDieuTri";
  // Target field: GHI_CHU - Ghi chú FHIR path: VNCoreDocumentReference.description | VNCoreComposition.section.text
  sourceBundle.entry 0..* as ghiChuSource -> targetRow.ghiChu "ghiChu";
  // 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
  sourceBundle.entry 0..* as maTtdvSource -> targetRow.maTtdv "maTtdv";
  // Target field: MA_BS - Mã bác sĩ FHIR path: VNCoreComposition.author.resolve().identifier.value | VNCorePractitioner.identifier.value
  sourceBundle.entry 0..* as maBsSource -> targetRow.maBs "maBs";
  // Target field: TEN_BS - Tên bác sĩ FHIR path: VNCoreComposition.author.display | VNCorePractitioner.name.text
  sourceBundle.entry 0..* as tenBsSource -> targetRow.tenBs "tenBs";
  // Target field: NGAY_CT - Ngày cấp chứng từ FHIR path: VNCoreDocumentReference.date | VNCoreComposition.date
  sourceBundle.entry 0..* as ngayCtSource -> targetRow.ngayCt "ngayCt";
  // Target field: MA_CHA - Mã cha FHIR path: VNCoreRelatedPerson.where(relationship.coding.code='FTH').identifier[CCCD].value | VNCorePatient.contact.where(relationship.coding.code='FTH').name
  sourceBundle.entry 0..* as maChaSource -> targetRow.maCha "maCha";
  // Target field: MA_ME - Mã mẹ FHIR path: VNCoreRelatedPerson.where(relationship.coding.code='MTH').identifier[CCCD].value | VNCorePatient.contact.where(relationship.coding.code='MTH').name
  sourceBundle.entry 0..* as maMeSource -> targetRow.maMe "maMe";
  // 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.
  sourceBundle.entry 0..* as maTheTamSource -> targetRow.maTheTam "maTheTam";
  // 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
  sourceBundle.entry 0..* as hoTenChaSource -> targetRow.hoTenCha "hoTenCha";
  // 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
  sourceBundle.entry 0..* as hoTenMeSource -> targetRow.hoTenMe "hoTenMe";
  // Target field: SO_NGAY_NGHI - Số ngày nghỉ FHIR path: Derived from VNCoreDocumentReference.context.period | VNCoreComposition.event.period
  sourceBundle.entry 0..* as soNgayNghiSource -> targetRow.soNgayNghi "soNgayNghi";
  // Target field: NGOAITRU_TUNGAY - Ngoại trú từ ngày FHIR path: VNCoreDocumentReference.context.period.start | VNCoreComposition.event.period.start
  sourceBundle.entry 0..* as ngoaiTruTuNgaySource -> targetRow.ngoaiTruTuNgay "ngoaiTruTuNgay";
  // Target field: NGOAITRU_DENNGAY - Ngoại trú đến ngày FHIR path: VNCoreDocumentReference.context.period.end | VNCoreComposition.event.period.end
  sourceBundle.entry 0..* as ngoaiTruDenNgaySource -> targetRow.ngoaiTruDenNgay "ngoaiTruDenNgay";
}