hapi-fhir-validation-resources là thư viện cung cấp các tài nguyên cần thiết cho việc validation FHIR resources, bao gồm các StructureDefinition, ValueSet, CodeSystem và các tài nguyên terminologies khác. Thư viện này đóng vai trò quan trọng trong việc đảm bảo tính chính xác và tuân thủ của dữ liệu FHIR trong ứng dụng y tế.
Các tính năng chính
1. Cung cấp tài nguyên validation chuẩn
Thư viện cung cấp các tài nguyên validation chuẩn theo đặc tả FHIR R5, bao gồm:
Các StructureDefinition cho tất cả resource types
ValueSets và CodeSystems tiêu chuẩn
Các datatypes và extensions định nghĩa trong FHIR R5
2. Hỗ trợ nhiều profiles
Profiles tiêu chuẩn từ HL7 FHIR
Profiles quốc tế (ví dụ: US Core, AU Base, UK Core)
Khả năng nạp và sử dụng profiles tùy chỉnh
3. Tích hợp với HAPI FHIR Validator
Cung cấp các tài nguyên cần thiết cho FhirInstanceValidator
@Component
public class CustomPatientValidator implements IValidatorModule {
@Override
public ValidationResult validateResource(IBaseResource resource) {
List<SingleValidationMessage> messages = new ArrayList<>();
// Kiểm tra chỉ áp dụng cho Patient resources
if (resource instanceof Patient) {
Patient patient = (Patient) resource;
// Kiểm tra quy tắc tùy chỉnh: tên phải có ít nhất 2 từ
if (patient.hasName() && patient.getNameFirstRep().hasGiven()) {
String givenName = patient.getNameFirstRep().getGivenAsSingleString();
if (givenName.split(" ").length < 2) {
SingleValidationMessage message = new SingleValidationMessage();
message.setLocationString("Patient.name.given");
message.setSeverity(ResultSeverityEnum.WARNING);
message.setMessage("Given name should have at least 2 words for Vietnamese patients");
messages.add(message);
}
}
// Kiểm tra yêu cầu về địa chỉ
if (patient.hasAddress() && !patient.getAddressFirstRep().hasCity()) {
SingleValidationMessage message = new SingleValidationMessage();
message.setLocationString("Patient.address");
message.setSeverity(ResultSeverityEnum.ERROR);
message.setMessage("Address must include city");
messages.add(message);
}
}
return new ValidationResult(messages);
}
}
Đăng ký custom validator
@Configuration
public class CustomValidationConfig {
@Bean
public CustomPatientValidator customPatientValidator() {
return new CustomPatientValidator();
}
@Bean
public FhirValidator fhirValidatorWithCustomModules(
FhirContext fhirContext,
FhirInstanceValidator instanceValidator,
CustomPatientValidator customPatientValidator) {
FhirValidator validator = fhirContext.newValidator();
validator.registerValidatorModule(instanceValidator);
validator.registerValidatorModule(customPatientValidator);
return validator;
}
}
Bài tập thực hành cho Khóa học
Bài tập 1: Xây dựng Validation Service
Xây dựng một service để validation các FHIR resources theo yêu cầu của hệ thống y tế Việt Nam:
Validation Patient resource với các quy tắc:
Họ và tên phải có đầy đủ
Mã định danh phải là CMND/CCCD hoặc Hộ chiếu
Địa chỉ phải có đầy đủ thông tin: số nhà, đường phố, phường/xã, quận/huyện, tỉnh/thành phố
Số điện thoại phải theo định dạng Việt Nam
Validation Observation resource với các quy tắc:
Phải có reference đến Patient
Code phải có trong hệ thống mã LOINC hoặc SNOMED CT
Effective time phải có giá trị
Các chỉ số sinh hiệu phải nằm trong ngưỡng bình thường
Bài tập 2: Tạo Custom Profile
Tạo custom profile cho Patient resource dành riêng cho bệnh nhân Việt Nam:
Sử dụng FHIR Profiler hoặc Forge để tạo profile
Định nghĩa các extension cho:
Mã BHYT
Dân tộc
Nơi sinh
Nghề nghiệp theo danh mục Việt Nam
Áp dụng các ràng buộc (constraints) phù hợp
Nạp profile vào hệ thống và validation
Bài tập 3: Xây dựng REST API cho Validation
Xây dựng REST API để client có thể gửi resources để validation:
Endpoint cho validation resource theo profile tiêu chuẩn
Endpoint cho validation resource theo profile tùy chỉnh
Endpoint để liệt kê các profile có sẵn trong hệ thống
Xử lý và trả về kết quả validation theo định dạng chuẩn
Kết luận
HAPI FHIR Validation Resources là một thành phần quan trọng trong việc đảm bảo tính chính xác và tuân thủ của dữ liệu FHIR trong ứng dụng y tế. Thông qua validation, bạn có thể:
Đảm bảo dữ liệu tuân thủ tiêu chuẩn FHIR R5
Áp dụng các quy tắc nghiệp vụ đặc thù cho hệ thống y tế Việt Nam
Tạo và sử dụng các profile tùy chỉnh cho các use cases cụ thể
Xác thực dữ liệu trước khi lưu trữ hoặc trao đổi với các hệ thống khác
Trong các module tiếp theo của khóa học, chúng ta sẽ đi sâu hơn vào cách sử dụng validation trong các flows nghiệp vụ cụ thể và tích hợp với các thành phần khác của hệ thống.