Narrative & Text
Narrative và Text trong FHIR R5: Hiển thị dữ liệu y tế hiệu quả
Hôm nay chúng ta sẽ tìm hiểu về một khía cạnh đặc biệt quan trọng nhưng thường bị bỏ qua: Narrative và Text - phần hiển thị có thể đọc được của tài nguyên FHIR.Tôi nhận thấy rằng hiểu rõ về narrative không chỉ đơn thuần là vấn đề "hiển thị" mà còn là yếu tố then chốt để đảm bảo tính tương thích giữa các hệ thống và khả năng đọc hiểu dữ liệu của con người.
FHIR được thiết kế với hai đối tượng sử dụng chính: hệ thống máy tính và con người. Trong khi cấu trúc dữ liệu được tối ưu cho xử lý máy tính, narrative đảm bảo rằng thông tin vẫn có thể được con người đọc và hiểu, ngay cả khi hệ thống nhận không hiểu hoàn toàn cấu trúc dữ liệu.
Hiểu về Resource.text và Narrative
Trong FHIR, mỗi tài nguyên (ngoại trừ Bundle và một số tài nguyên đặc biệt khác) đều có thể chứa phần text
- thành phần hiển thị dạng văn bản có cấu trúc của tài nguyên:
Thành phần text
bao gồm hai phần chính:
status
: Trạng thái của narrativediv
: Nội dung XHTML hiển thị thông tin tài nguyên
Generated vs. Extensions vs. Additional Narratives
1. Generated Narrative
Generated Narrative là nội dung hiển thị được tạo tự động từ dữ liệu cấu trúc của tài nguyên. Đây là trường hợp phổ biến nhất và được đánh dấu với status
là "generated"
.
Trong trường hợp này, bất kỳ thay đổi nào trong dữ liệu cấu trúc đều dẫn đến việc tái tạo phần narrative để đảm bảo tính nhất quán. Ứng dụng nhận tài nguyên có thể chọn hiển thị narrative này hoặc tạo ra phiên bản mới dựa trên dữ liệu cấu trúc.
2. Extensions trong Narrative
FHIR cho phép mở rộng phần narrative thông qua extensions. Điều này đặc biệt hữu ích khi cần thêm thông tin hiển thị mà không thể được trích xuất trực tiếp từ dữ liệu cấu trúc.
Khi status
là "extensions"
, narrative chứa thông tin được tạo từ dữ liệu cấu trúc, kết hợp với dữ liệu từ các extensions. Các hệ thống nhận không hiểu các extensions này không nên tạo lại narrative, vì có thể mất thông tin quan trọng.
3. Additional Narratives
Additional Narratives là nội dung được nhập thủ công, bổ sung thêm vào dữ liệu hiển thị, và được đánh dấu với status
là "additional"
.
Narrative này chứa thông tin bổ sung không có trong dữ liệu cấu trúc. Các hệ thống nhận không nên tạo lại narrative này, và cần hiển thị nguyên bản nội dung đã được cung cấp.
4. Empty Narrative
Trong một số trường hợp, narrative có thể được đánh dấu là "empty"
khi không cần thiết hoặc không phù hợp để hiển thị dữ liệu.
Ví dụ, các tài nguyên Binary hoặc các tài nguyên chứa dữ liệu bảng biểu phức tạp không phù hợp để hiển thị dưới dạng text.
XHTML Requirements trong Narrative
Định dạng XHTML Được Hỗ Trợ
Phần div
trong narrative phải là XHTML hợp lệ và bị giới hạn trong một tập con nghiêm ngặt của XHTML để đảm bảo khả năng hiển thị an toàn trên nhiều nền tảng. FHIR đưa ra những yêu cầu cụ thể sau:
Namespace: Luôn phải có khai báo namespace
xmlns="http://www.w3.org/1999/xhtml"
Thẻ được phép: Chỉ hỗ trợ một tập hợp hạn chế các thẻ HTML
Thuộc tính an toàn: Chỉ cho phép một số thuộc tính cụ thể
Không có JavaScript: Không được phép sử dụng mã JavaScript
Không có CSS Inline: Việc sử dụng CSS phải tuân theo quy tắc nghiêm ngặt
Các thẻ XHTML được hỗ trợ trong FHIR R5
Các thuộc tính được phép
Ví dụ về Narrative hợp lệ
Những lỗi phổ biến khi tạo Narrative
Thiếu namespace XML:
Sử dụng thẻ không được hỗ trợ:
Sử dụng JavaScript:
Inline CSS không được phép:
Kỹ thuật tạo Narrative hiệu quả
Để tạo Narrative chất lượng cao, cần cân nhắc:
Bố cục rõ ràng: Sử dụng tiêu đề, đoạn văn và bảng một cách hợp lý
Thông tin quan trọng đầu tiên: Đưa thông tin quan trọng nhất lên trên
Sử dụng định dạng phù hợp: Bold cho tiêu đề, bảng cho dữ liệu có cấu trúc
Tính nhất quán: Duy trì phong cách nhất quán giữa các tài nguyên
Ví dụ về narrative tốt cho tài nguyên Observation về huyết áp:
Sử dụng _narrative param trong Queries
FHIR R5 giới thiệu tham số _narrative
trong các truy vấn để kiểm soát việc trả về phần narrative trong kết quả. Điều này đặc biệt hữu ích để tối ưu hiệu suất khi không cần hiển thị dữ liệu cho người dùng.
Các giá trị của tham số _narrative
_narrative=true: Trả về tài nguyên với đầy đủ narrative
_narrative=false: Trả về tài nguyên mà không có narrative
_narrative=only: Chỉ trả về phần narrative của tài nguyên
Ví dụ về queries với _narrative
Truy vấn không bao gồm narrative:
Kết quả sẽ không bao gồm phần
text
trong các tài nguyên Patient, giúp giảm kích thước dữ liệu truyền tải.Chỉ lấy phần narrative:
Kết quả chỉ bao gồm phần hiển thị, hữu ích khi cần hiển thị nhanh thông tin cho người dùng.
Kết hợp với các tham số khác:
Lấy tất cả các bệnh lý đang hoạt động của bệnh nhân, bao gồm cả narrative để hiển thị.
Tối ưu hóa hiệu suất với _narrative
Việc sử dụng tham số _narrative
có thể giúp tối ưu hóa hiệu suất đáng kể:
Giảm kích thước dữ liệu: Narrative thường chiếm một phần đáng kể kích thước của tài nguyên
Giảm tải xử lý: Máy chủ không cần tạo narrative cho các truy vấn hệ thống
Tối ưu cho di động: Đặc biệt hữu ích cho ứng dụng di động với băng thông hạn chế
Ví dụ thực tế
Giả sử một ứng dụng di động cần cập nhật danh sách thuốc của bệnh nhân. Thay vì:
Chúng ta có thể sử dụng:
Kết quả truy vấn có thể giảm tới 40-50% kích thước, giúp tăng tốc độ tải và tiết kiệm dữ liệu di động.
Cải tiến Narrative trong FHIR R5
FHIR R5 mang đến một số cải tiến đáng kể cho Narrative so với các phiên bản trước:
1. Hỗ trợ đa ngôn ngữ tốt hơn
R5 cải thiện khả năng hỗ trợ đa ngôn ngữ trong narrative thông qua việc sử dụng extension http://hl7.org/fhir/StructureDefinition/resource-narrative-lang
để chỉ định ngôn ngữ của narrative.
Điều này cho phép một tài nguyên có thể hiển thị đúng ngôn ngữ phù hợp với người dùng, cải thiện trải nghiệm người dùng trong môi trường đa ngôn ngữ.
2. Narrative có cấu trúc rõ ràng hơn
R5 khuyến khích sử dụng cấu trúc XHTML rõ ràng hơn, với các thẻ ngữ nghĩa để cải thiện khả năng đọc hiểu của máy:
3. Hỗ trợ tốt hơn cho tham số _narrative trong queries
Như đã đề cập ở trên, R5 chuẩn hóa việc sử dụng tham số _narrative
trong queries, cho phép kiểm soát chi tiết hơn việc trả về narrative.
4. Cải thiện an toàn và xác thực
R5 cũng cải thiện các quy trình xác thực narrative, cung cấp thông báo lỗi rõ ràng hơn khi narrative không tuân thủ các quy tắc XHTML của FHIR. Điều này giúp phát hiện và khắc phục các vấn đề với narrative sớm hơn trong quá trình phát triển.
5. Hướng dẫn tốt hơn về việc tạo narrative
FHIR R5 cung cấp hướng dẫn chi tiết hơn về cách tạo narrative có ý nghĩa, khuyến khích các thực hành tốt như:
Sử dụng cấu trúc ngữ nghĩa phù hợp
Đảm bảo trình bày thông tin quan trọng nhất trước
Tối ưu hóa cho khả năng đọc của con người
Xử lý các trường hợp đặc biệt (như dữ liệu bị thiếu hoặc ẩn danh)
Thực hành tốt nhất cho Narrative trong FHIR
1. Luôn cung cấp narrative chất lượng cao
Mặc dù narrative dường như là tùy chọn trong một số trường hợp, việc cung cấp narrative chất lượng cao sẽ tăng cường khả năng tương tác giữa các hệ thống và cải thiện trải nghiệm người dùng.
2. Tạo narrative tự động từ dữ liệu cấu trúc
Khi có thể, nên tạo narrative tự động từ dữ liệu cấu trúc để đảm bảo tính nhất quán. Nhiều thư viện FHIR cung cấp khả năng tạo narrative tự động.
3. Xác thực narrative
Luôn xác thực narrative để đảm bảo tuân thủ các yêu cầu XHTML của FHIR. Các lỗi trong narrative có thể dẫn đến hiển thị không đúng hoặc thậm chí là lỗi bảo mật.
4. Cân nhắc người dùng cuối
Thiết kế narrative với người dùng cuối trong tâm trí. Narrative nên cung cấp tổng quan rõ ràng và dễ hiểu về nội dung của tài nguyên.
5. Tối ưu hóa cho các trường hợp sử dụng
Sử dụng tham số _narrative
để tối ưu hóa hiệu suất dựa trên trường hợp sử dụng. Không phải mọi truy vấn đều cần narrative.
6. Quốc tế hóa
Sử dụng extension ngôn ngữ để hỗ trợ đa ngôn ngữ trong narrative, đặc biệt trong môi trường y tế đa ngôn ngữ.
Ví dụ thực tế về Narrative trong các tài nguyên phổ biến
1. Patient Narrative
2. Observation Narrative
3. MedicationRequest Narrative
4. AllergyIntolerance Narrative
5. Condition Narrative
Kết luận
Narrative trong FHIR không chỉ là phần "hiển thị" đơn thuần mà đóng vai trò quan trọng trong việc đảm bảo tính tương tác giữa các hệ thống và khả năng đọc hiểu của con người. FHIR R5 mang đến nhiều cải tiến đáng kể cho narrative, giúp tăng cường khả năng hiển thị dữ liệu y tế một cách hiệu quả và an toàn.
Là một Solution Architect, việc hiểu và áp dụng đúng các khía cạnh của narrative sẽ giúp bạn thiết kế các hệ thống FHIR không chỉ hiệu quả về mặt kỹ thuật mà còn thân thiện với người dùng. Hãy coi narrative như một phần không thể thiếu của mỗi tài nguyên FHIR, và đầu tư thời gian để tạo ra narrative chất lượng cao.
Trong bài viết tiếp theo của series, chúng ta sẽ tìm hiểu về REST API trong FHIR R5 và các tính năng mới giúp tương tác với dữ liệu y tế hiệu quả hơn.
Last updated