Search in FHIR R5
Khả năng tìm kiếm (Search) là một trong những tính năng mạnh mẽ nhất của FHIR. Nó cho phép các ứng dụng truy vấn dữ liệu từ máy chủ FHIR một cách linh hoạt và hiệu quả. Trong R5, khả năng tìm kiếm này đã được mở rộng và cải tiến đáng kể.
Trước khi đi sâu vào các tính năng, hãy nhớ rằng tìm kiếm FHIR luôn tuân theo mẫu cơ bản:
Ví dụ:
Đây là tìm kiếm những bệnh nhân có họ Smith và sinh sau năm 1970.
Search Parameters tiêu chuẩn và custom
Search Parameters tiêu chuẩn
FHIR định nghĩa nhiều search parameters tiêu chuẩn cho mỗi loại tài nguyên. Ví dụ, với tài nguyên Patient, một số search parameters phổ biến bao gồm:
name
: Tìm theo tên bệnh nhânfamily
: Tìm theo họgiven
: Tìm theo tên riêngbirthdate
: Tìm theo ngày sinhgender
: Tìm theo giới tínhaddress
: Tìm theo địa chỉ
Custom Search Parameters
R5 cho phép bạn định nghĩa search parameters tùy chỉnh thông qua tài nguyên SearchParameter
. Điều này đặc biệt hữu ích khi bạn cần tìm kiếm theo các phần mở rộng hoặc các trường không có sẵn search parameter.
Ví dụ, định nghĩa một search parameter cho một extension:
Sau khi đăng ký, bạn có thể tìm kiếm:
Modifiers: Mở rộng khả năng tìm kiếm
Modifiers trong FHIR cho phép bạn tinh chỉnh cách thức tìm kiếm. Chúng được thêm vào sau search parameter với dấu hai chấm :
.
:exact
Tìm kiếm chính xác, phân biệt chữ hoa/thường và dấu:
:contains
Tìm kiếm chuỗi con (không cần khớp toàn bộ):
:missing
Kiểm tra xem một trường có tồn tại hay không:
:not
Đảo ngược kết quả tìm kiếm:
:of-type
Chỉ định loại dữ liệu cụ thể (thường dùng với Reference):
Prefixes cho tìm kiếm số và ngày
Với số và ngày tháng, FHIR cung cấp các tiền tố để so sánh:
eq
: Bằng (mặc định)gt
: Lớn hơnlt
: Nhỏ hơnge
: Lớn hơn hoặc bằngle
: Nhỏ hơn hoặc bằngsa
: Sau (starts after) - cho khoảng thời gianeb
: Trước (ends before) - cho khoảng thời gian
Ví dụ:
Tìm bệnh nhân sinh trong thập niên 60.
Tìm quan sát có giá trị lớn hơn 100.
Chaining searches và reverse chaining
Chaining
Chaining cho phép bạn tìm kiếm dựa trên thuộc tính của tài nguyên được tham chiếu. Cú pháp sử dụng dấu chấm .
:
Tìm các quan sát của bệnh nhân có tên Smith.
Bạn cũng có thể thực hiện chaining nhiều cấp:
Reverse Chaining
Reverse chaining cho phép bạn tìm kiếm tài nguyên dựa trên tài nguyên khác tham chiếu đến nó, sử dụng cú pháp _has
:
Tìm bệnh nhân có quan sát về huyết áp tâm thu (mã 8480-6).
*include và *revinclude
_include
_include
cho phép bạn lấy các tài nguyên được tham chiếu trong kết quả tìm kiếm:
Trả về các MedicationRequest cùng với tài nguyên Patient được tham chiếu.
Bạn có thể lấy nhiều loại tham chiếu:
_revinclude
_revinclude
lấy các tài nguyên tham chiếu đến các tài nguyên trong kết quả tìm kiếm:
Trả về các bệnh nhân và tất cả các quan sát liên quan đến họ.
:iterate modifier
Trong R5, có thêm :iterate
cho phép bao gồm các tham chiếu lồng nhau:
Phân trang và sorting
Phân trang
Sử dụng _count
để kiểm soát số lượng kết quả trên mỗi trang:
Kết quả sẽ chứa các liên kết để điều hướng:
Sorting
Sử dụng _sort
để sắp xếp kết quả:
Để sắp xếp giảm dần, thêm dấu trừ:
Bạn cũng có thể sắp xếp theo nhiều trường:
Tổng số kết quả
Sử dụng _total
để kiểm soát việc đếm tổng:
_total=none
: Không đếm tổng_total=estimate
: Ước tính tổng số_total=accurate
: Đếm chính xác (R5)
Cải tiến search trong R5
R5 đã giới thiệu nhiều cải tiến đáng chú ý cho khả năng tìm kiếm:
1. Filter Search Parameter
Điểm nổi bật nhất trong R5 là giới thiệu search parameter _filter
cho phép tạo các truy vấn phức tạp hơn sử dụng biểu thức logic:
Cú pháp này mạnh mẽ hơn nhiều so với cách truy vấn truyền thống:
Hỗ trợ các toán tử:
eq
,ne
,gt
,lt
,ge
,le
,co
,sw
,ew
,po
Hỗ trợ các toán tử logic:
and
,or
,not
Hỗ trợ nhóm với ngoặc đơn:
(...)
2. _query parameter
_query
cho phép gọi các truy vấn được định nghĩa trước:
Server định nghĩa truy vấn đặc biệt này, giúp giảm độ phức tạp của URI và chuẩn hóa các truy vấn phổ biến.
3. _elements parameter
_elements
cho phép bạn chỉ định chính xác các trường nào sẽ được trả về, giúp giảm kích thước phản hồi:
4. _list parameter
_list
là tham số mới trong R5 cho phép tìm kiếm các tài nguyên có trong danh sách cụ thể:
5. _contained và _containedType
R5 cải thiện việc tìm kiếm tài nguyên được chứa (contained resources):
_containedType
kiểm soát cách tài nguyên contained được trả về:
_containedType=container
: Trả về tài nguyên chứa_containedType=contained
: Trả về tài nguyên được chứa
6. search-where extension
R5 hỗ trợ extension search-where
cho phép tìm kiếm phức tạp hơn:
Ví dụ thực tế
Tìm tất cả bệnh nhân đái tháo đường có lần khám gần đây
Tìm tất cả quan sát về huyết áp cao trong tháng trước
Sử dụng _filter trong R5
Kết luận
Search trong FHIR R5 đã phát triển thành một công cụ mạnh mẽ cho việc truy vấn dữ liệu y tế. Từ các search parameters cơ bản đến các truy vấn phức tạp với _filter, FHIR R5 cung cấp khả năng tìm kiếm linh hoạt và mạnh mẽ.
Khi triển khai FHIR, việc nắm vững các tính năng tìm kiếm này là rất quan trọng để xây dựng các ứng dụng y tế hiệu quả và có thể mở rộng.
Tài liệu tham khảo
Last updated