Bộ Hướng dẫn Triển khai Core FHIR cho Việt Nam
0.7.0 - Draft for Community Review
Bộ Hướng dẫn Triển khai Core FHIR cho Việt Nam - Local Development build (v0.7.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-xml9-birth-certificate | Phiên bản: 0.7.0 | ||||
| Computable Name: BHYTXML9BirthCertificateLMStructureMap | |||||
| Định danh khác: OID:2.25.161089673617632664299011809196868855799.43.12 | |||||
Generated StructureMap scaffold for Bảng 9 giấy chứng sinh — XML9 Birth Certificate Logical Model. Source semantics come from the logical model mapping annotations in BHYTXML9BirthCertificateLM.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-xml9-birth-certificate" = "BHYTXML9BirthCertificateLMStructureMap" // Generated StructureMap scaffold for Bảng 9 giấy chứng sinh — XML9 Birth Certificate Logical Model. Source semantics come from the logical model mapping annotations in `BHYTXML9BirthCertificateLM.fsh` and remain aligned with the Python BHYT round-trip export adapter. uses "http://fhir.hl7.org.vn/core/StructureDefinition/vn-core-bhyt-submission-bundle" alias BHYTSubmissionBundle as source // FHIR-native source bundle profile used by the repository round-trip adapter. uses "http://fhir.hl7.org.vn/core/StructureDefinition/bhytXml9BirthCertificateLm" alias BHYTXML9BirthCertificateLM as target // Bảng 9 giấy chứng sinh — XML9 Birth Certificate Logical Model // Rows are derived from birth-certificate DocumentReference/Composition, newborn Patient, mother/caregiver RelatedPerson and certifying Practitioner. 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 MapBHYTXML9BirthCertificateLM(source sourceBundle : BHYTSubmissionBundle, target targetRow : BHYTXML9BirthCertificateLM) { sourceBundle.entry as maLkSource -> targetRow.maLk "maLk"; // Target field: MA_LK - Mã liên kết hồ sơ FHIR path: VNCoreClaim.identifier[MALK].value sourceBundle.entry as maBhxhNndSource -> targetRow.maBhxhNnd "maBhxhNnd"; // Target field: MA_BHXH_NND - Mã BHXH người nuôi dưỡng FHIR path: VNCoreRelatedPerson.identifier[BHXH].value | VNCorePatient.contact.identifier.value sourceBundle.entry as maTheNndSource -> targetRow.maTheNnd "maTheNnd"; // Target field: MA_THE_NND - Mã thẻ người nuôi dưỡng FHIR path: VNCoreCoverage.subscriber.resolve().identifier[BHYT].value | VNCoreRelatedPerson.identifier.value sourceBundle.entry as hoTenNndSource -> targetRow.hoTenNnd "hoTenNnd"; // Target field: HO_TEN_NND - Họ tên người nuôi dưỡng FHIR path: VNCoreRelatedPerson.name.text | VNCorePatient.contact.name.text sourceBundle.entry as ngaySinhNndSource -> targetRow.ngaySinhNnd "ngaySinhNnd"; // Target field: NGAYSINH_NND - Ngày sinh người nuôi dưỡng FHIR path: VNCoreRelatedPerson.birthDate sourceBundle.entry as maDanTocNndSource -> targetRow.maDanTocNnd "maDanTocNnd"; // Target field: MA_DANTOC_NND - Mã dân tộc người nuôi dưỡng FHIR path: VNCoreRelatedPerson.extension[ethnicity].valueCodeableConcept.coding.code | VNCorePatient.contact.extension[ethnicity].valueCodeableConcept.coding.code sourceBundle.entry as soCccdNndSource -> targetRow.soCccdNnd "soCccdNnd"; // Target field: SO_CCCD_NND - Số CCCD/định danh cá nhân (hoặc số hộ chiếu nếu là người nước ngoài) của người nuôi dưỡng FHIR path: VNCoreRelatedPerson.identifier[CCCD].value | VNCoreRelatedPerson.identifier[HC].value Mapping note: Ghi số căn cước công dân hoặc số định danh cá nhân trên thẻ căn cước của mẹ hoặc người nuôi dưỡng; trường hợp người nuôi dưỡng là người nước ngoài thì ghi số hộ chiếu (slice identifier[HC]). Diễn giải sửa đổi toàn bộ, đổi kiểu dữ liệu sang chuỗi và kích thước tối đa n ký tự theo QĐ 3176/QĐ-BYT (kế thừa QĐ 130/QĐ-BYT, sửa đổi bởi QĐ 4750/QĐ-BYT). sourceBundle.entry as ngayCapCccdNndSource -> targetRow.ngayCapCccdNnd "ngayCapCccdNnd"; // Target field: NGAYCAP_CCCD_NND - Ngày cấp CCCD người nuôi dưỡng FHIR path: VNCoreRelatedPerson.identifier[CCCD].period.start sourceBundle.entry as noiCapCccdNndSource -> targetRow.noiCapCccdNnd "noiCapCccdNnd"; // Target field: NOICAP_CCCD_NND - Nơi cấp CCCD người nuôi dưỡng FHIR path: VNCoreRelatedPerson.identifier[CCCD].assigner.display sourceBundle.entry as noiCuTruNndSource -> targetRow.noiCuTruNnd "noiCuTruNnd"; // Target field: NOI_CU_TRU_NND - Nơi cư trú người nuôi dưỡng FHIR path: VNCoreRelatedPerson.address.text | VNCorePatient.contact.address.text sourceBundle.entry as maQuocTichSource -> targetRow.maQuocTich "maQuocTich"; // Target field: MA_QUOCTICH - Mã quốc tịch FHIR path: VNCorePatient.extension[citizenship].extension[code].valueCodeableConcept.coding.code sourceBundle.entry as maTinhCuTruSource -> targetRow.maTinhCuTru "maTinhCuTru"; // Target field: MATINH_CU_TRU - Mã tỉnh cư trú FHIR path: VNCoreRelatedPerson.address.extension[province].valueCoding.code | VNCorePatient.address.extension[province].valueCoding.code sourceBundle.entry as maHuyenCuTruSource -> targetRow.maHuyenCuTru "maHuyenCuTru"; // Target field: MAHUYEN_CU_TRU - Mã huyện cư trú legacy FHIR path: VNCoreRelatedPerson.address.district | VNCorePatient.address.district sourceBundle.entry as maXaCuTruSource -> targetRow.maXaCuTru "maXaCuTru"; // Target field: MAXA_CU_TRU - Mã xã cư trú FHIR path: VNCoreRelatedPerson.address.extension[ward].valueCoding.code | VNCorePatient.address.extension[ward].valueCoding.code sourceBundle.entry as hoTenChaSource -> targetRow.hoTenCha "hoTenCha"; // 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 as maTheTamSource -> targetRow.maTheTam "maTheTam"; // 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 as hoTenConSource -> targetRow.hoTenCon "hoTenCon"; // Target field: HO_TEN_CON - Họ tên con FHIR path: VNCorePatient.name.text sourceBundle.entry as gioiTinhConSource -> targetRow.gioiTinhCon "gioiTinhCon"; // Target field: GIOI_TINH_CON - Giới tính con FHIR path: VNCorePatient.gender sourceBundle.entry as soConSource -> targetRow.soCon "soCon"; // Target field: SO_CON - Số con FHIR path: VNCoreObservation.valueQuantity sourceBundle.entry as lanSinhSource -> targetRow.lanSinh "lanSinh"; // Target field: LAN_SINH - Lần sinh FHIR path: VNCoreObservation.valueInteger sourceBundle.entry as soConSongSource -> targetRow.soConSong "soConSong"; // Target field: SO_CON_SONG - Số con sống FHIR path: VNCoreObservation.valueQuantity sourceBundle.entry as canNangConSource -> targetRow.canNangCon "canNangCon"; // Target field: CAN_NANG_CON - Cân nặng con FHIR path: VNCoreObservation.valueQuantity | VNCorePatient.extension[birthWeight].valueQuantity sourceBundle.entry as ngaySinhConSource -> targetRow.ngaySinhCon "ngaySinhCon"; // Target field: NGAY_SINH_CON - Ngày sinh con FHIR path: VNCoreDocumentReference.date | content.attachment.creation | VNCorePatient.birthDate sourceBundle.entry as noiSinhConSource -> targetRow.noiSinhCon "noiSinhCon"; // Target field: NOI_SINH_CON - Nơi sinh con FHIR path: VNCorePatient.extension[birthPlace].valueAddress.text | VNCoreEncounter.location.location.resolve().name sourceBundle.entry as tinhTrangConSource -> targetRow.tinhTrangCon "tinhTrangCon"; // Target field: TINH_TRANG_CON - Tình trạng của trẻ tại thời điểm cấp Giấy chứng sinh FHIR path: VNCoreObservation.valueString | VNCoreCondition.code.text Mapping note: Ghi rõ tình trạng của trẻ tại thời điểm làm Giấy chứng sinh — các giá trị diễn giải theo QĐ 3176/QĐ-BYT: 'khỏe mạnh', 'yếu', 'dị tật' hoặc các biểu hiện liên quan đến sức khỏe khác (nếu có). Nếu trẻ bị dị dạng, dị tật thì ghi cụ thể loại dị dạng, dị tật, kể cả khuyết tật về hình thái nếu phát hiện được — dị tật bẩm sinh ánh xạ VNCoreCondition.code, narrative tổng quát ghi vào Observation.valueString. Kiểu chuỗi n ký tự. sourceBundle.entry as sinhConPhauThuatSource -> targetRow.sinhConPhauThuat "sinhConPhauThuat"; // Target field: SINHCON_PHAUTHUAT - Sinh con phẫu thuật FHIR path: VNCoreProcedure.code | VNCoreObservation.valueBoolean sourceBundle.entry as sinhConDuoi32TuanSource -> targetRow.sinhConDuoi32Tuan "sinhConDuoi32Tuan"; // Target field: SINHCON_DUOI32TUAN - Sinh con dưới 32 tuần FHIR path: VNCoreObservation.valueBoolean sourceBundle.entry as ghiChuSource -> targetRow.ghiChu "ghiChu"; // Target field: GHI_CHU - Ghi chú (bắt buộc khi sinh con phải phẫu thuật và/hoặc sinh con dưới 32 tuần tuổi) FHIR path: VNCoreDocumentReference.description | VNCoreComposition.section.text Mapping note: Theo QĐ 3176/QĐ-BYT: bắt buộc ghi khi SINHCON_PHAUTHUAT=1 hoặc SINHCON_DUOI32TUAN=1 (hoặc cả hai); nội dung phải đúng 1 trong 3 giá trị cố định: 'Sinh con phải phẫu thuật', 'Sinh con dưới 32 tuần tuổi', hoặc 'Phẫu thuật, sinh con dưới 32 tuần tuổi'. Kiểu chuỗi n ký tự. sourceBundle.entry as nguoiDoDeSource -> targetRow.nguoiDoDe "nguoiDoDe"; // Target field: NGUOI_DO_DE - Người đỡ đẻ FHIR path: VNCoreComposition.author.resolve().identifier.value | VNCorePractitioner.identifier.value sourceBundle.entry as nguoiGhiPhieuSource -> targetRow.nguoiGhiPhieu "nguoiGhiPhieu"; // Target field: NGUOI_GHI_PHIEU - Người ghi phiếu FHIR path: VNCoreDocumentReference.author.resolve().identifier.value | VNCorePractitioner.identifier.value sourceBundle.entry as ngayCtSource -> targetRow.ngayCt "ngayCt"; // Target field: NGAY_CT - Ngày cấp chứng từ FHIR path: VNCoreDocumentReference.date | VNCoreComposition.date sourceBundle.entry as soSource -> targetRow.so "so"; // Target field: SO - Số chứng từ FHIR path: VNCoreDocumentReference.identifier.value | VNCoreComposition.identifier.value sourceBundle.entry as quyenSoSource -> targetRow.quyenSo "quyenSo"; // Target field: QUYEN_SO - Quyển số FHIR path: VNCoreDocumentReference.identifier.value sourceBundle.entry as maTtdvSource -> targetRow.maTtdv "maTtdv"; // Target field: MA_TTDV - Mã người đứng đầu CSKCB (hoặc người được ủy quyền) ký giấy chứng sinh, ưu tiên GPHN FHIR path: VNCorePractitioner.identifier[GPHN].value | VNCorePractitioner.identifier[CCCD].value (fallback khi không có GPHN) Mapping note: QĐ 3176/QĐ-BYT ưu tiên mã hóa theo GPHN; nếu không có GPHN thì ghi số CCCD hoặc số định danh cá nhân của người ký. Đổi kiểu dữ liệu sang chuỗi, tăng kích thước tối đa 255 ký tự (trước đây là mã số định danh y tế/mã số BHXH của Thủ trưởng CSKCB). }