Operations in FHIR R5
Operations trong FHIR là các chức năng đặc biệt vượt ra ngoài khuôn khổ của các thao tác CRUD cơ bản (Create, Read, Update, Delete). Chúng được thiết kế để thực hiện các hoạt động phức tạp hơn như kiểm tra, biến đổi, tìm kiếm và xử lý dữ liệu.
Operations được định nghĩa bằng định danh bắt đầu bằng ký tự $
và có thể được áp dụng ở bốn cấp độ:
Cấp độ hệ thống: Áp dụng cho toàn bộ hệ thống FHIR
Cấp độ loại tài nguyên: Áp dụng cho một loại tài nguyên cụ thể
Cấp độ tài nguyên cá nhân: Áp dụng cho một tài nguyên cụ thể
Cấp độ phiên bản tài nguyên: Áp dụng cho một phiên bản cụ thể của tài nguyên
Operations có thể được gọi bằng cả phương thức GET và POST, nhưng POST thường được ưu tiên cho các operations phức tạp hoặc có nhiều tham số.
Standard Operations: Các Operations tiêu chuẩn
FHIR định nghĩa một bộ operations tiêu chuẩn mà tất cả các máy chủ FHIR có thể hỗ trợ. Hãy khám phá một số operations quan trọng nhất:
$everything
Operation $everything
trả về tất cả thông tin có sẵn về một tài nguyên cụ thể, bao gồm cả các tài nguyên liên quan. Nó đặc biệt hữu ích cho việc truy xuất hồ sơ bệnh án đầy đủ của bệnh nhân.
Hoặc với tham số:
Phản hồi sẽ là một Bundle chứa tài nguyên chính và tất cả các tài nguyên liên quan:
$validate
Operation $validate
kiểm tra xem một tài nguyên FHIR có hợp lệ không. Điều này bao gồm việc kiểm tra cú pháp, ràng buộc và tuân thủ các profiles.
Phản hồi sẽ là một OperationOutcome chỉ ra kết quả của việc validation:
$expand
Operation $expand
mở rộng một ValueSet để trả về danh sách đầy đủ các mã. Điều này rất hữu ích cho việc xây dựng các dropdown hoặc danh sách chọn trong ứng dụng.
Phản hồi sẽ là một ValueSet đã được mở rộng:
$meta
Operation $meta
cho phép quản lý metadata của tài nguyên, như thêm hoặc xóa tags, security labels, và profiles:
$document
Operation $document
tạo một Bundle loại document từ một Composition:
New R5 Operations: Các Operations mới trong R5
FHIR R5 đã giới thiệu một số operations mới đáng chú ý:
$graph-definition
Operation $graph-definition
là một trong những tính năng mới trong R5. Nó cho phép truy xuất một đồ thị tài nguyên dựa trên định nghĩa đồ thị.
$stats
Operation $stats
(mới trong R5) cung cấp thống kê nhanh về các tài nguyên:
$subscription-status
Operation $subscription-status
(cải tiến trong R5) cho phép kiểm tra trạng thái của các đăng ký:
$questionnaire
Operations liên quan đến Questionnaire đã được cải tiến đáng kể trong R5:
$populate
: Điền trước một QuestionnaireResponse$extract
: Trích xuất dữ liệu từ một QuestionnaireResponse$next-question
: Xác định câu hỏi tiếp theo trong một Questionnaire thích ứng
$purge
Operation $purge
cho phép xóa hoàn toàn một tài nguyên, bao gồm cả lịch sử của nó:
$transform
Operation mới $transform
chuyển đổi dữ liệu từ định dạng này sang định dạng khác:
$diff
Operation mới $diff
tính toán sự khác biệt giữa hai tài nguyên:
Parameters Resource: Tài nguyên Parameters
Tài nguyên Parameters đóng vai trò quan trọng trong FHIR Operations. Nó được sử dụng để truyền tham số cho và từ operations.
Cấu trúc Parameters
Một tài nguyên Parameters có cấu trúc đơn giản:
Các kiểu dữ liệu tham số
Parameters hỗ trợ nhiều kiểu dữ liệu:
value[x]: Các kiểu dữ liệu đơn giản (valueString, valueInteger, valueBoolean, v.v.)
resource: Tài nguyên FHIR nhúng
part: Tham số con, cho phép cấu trúc phân cấp
Ví dụ Parameters phức tạp
Chuyển đổi giữa GET và POST
Một điểm quan trọng là operations có thể được gọi bằng cả GET và POST. Khi sử dụng GET, tham số được chuyển thành query parameters:
tương đương với:
Custom Operations: Operations tùy chỉnh
FHIR cho phép bạn định nghĩa các operations tùy chỉnh để đáp ứng nhu cầu cụ thể của tổ chức. Operations tùy chỉnh được định nghĩa bằng tài nguyên OperationDefinition.
Tạo một OperationDefinition
Triển khai Operation tùy chỉnh
Sau khi định nghĩa, bạn cần triển khai logic xử lý trên máy chủ FHIR. Đây là một ví dụ về cách gọi operation tùy chỉnh:
Ví dụ về Operations tùy chỉnh phổ biến
Một số operations tùy chỉnh phổ biến trong các triển khai FHIR:
$merge: Hợp nhất dữ liệu từ hai hoặc nhiều tài nguyên
$convert: Chuyển đổi dữ liệu giữa các định dạng khác nhau
$bulk-data-export: Xuất dữ liệu hàng loạt
$anonymize: Ẩn danh hóa dữ liệu bệnh nhân
$find-matches: Tìm kiếm các trùng lặp có thể có
$calculate-risk: Tính toán các điểm rủi ro lâm sàng
Thực tiễn tốt cho Operations tùy chỉnh
Khi thiết kế operations tùy chỉnh:
Sử dụng các thao tác RESTful tiêu chuẩn nếu có thể: Chỉ tạo operations cho những gì không thể thực hiện bằng CRUD.
Đặt tên rõ ràng và mô tả đầy đủ: Đảm bảo người dùng hiểu chính xác mục đích của operation.
Xác định cấp độ phù hợp: Quyết định xem operation nên hoạt động ở cấp độ hệ thống, loại tài nguyên, hay tài nguyên cá nhân.
Thiết kế tham số cẩn thận: Xác định rõ tham số bắt buộc và tùy chọn.
Xử lý lỗi nhất quán: Trả về OperationOutcome chi tiết khi có lỗi.
Async Operations: Operations bất đồng bộ
Đối với các operations dài hạn, FHIR R5 nâng cao hỗ trợ cho việc thực hiện bất đồng bộ.
Yêu cầu Async Operation
Để yêu cầu thực hiện bất đồng bộ, thêm header Prefer: respond-async
:
Phản hồi ban đầu
Máy chủ sẽ trả về mã trạng thái 202 Accepted và một header Location chỉ đến một endpoint giám sát:
Kiểm tra trạng thái
Khách hàng có thể kiểm tra trạng thái bằng cách thực hiện GET đến URL được cung cấp:
Phản hồi trạng thái
Nếu chưa hoàn thành:
Khi hoàn thành:
Cải tiến Async Operations trong R5
FHIR R5 đã cải thiện đáng kể hỗ trợ cho Async Operations:
Tiêu chuẩn hóa giao thức: Giao thức Async Operations được tiêu chuẩn hóa rõ ràng hơn.
Bulk Data Export: Cải tiến hỗ trợ cho xuất dữ liệu hàng loạt bất đồng bộ.
Cơ chế phản hồi webhook: Cho phép thông báo chủ động khi hoàn thành.
Báo cáo tiến độ chi tiết hơn: Phản hồi cung cấp thông tin chi tiết hơn về tiến độ.
Xử lý lỗi tốt hơn: Cơ chế báo cáo lỗi cải tiến cho các thao tác dài hạn.
Ví dụ thực tế: Kết hợp Operations
Hãy xem xét một kịch bản thực tế kết hợp nhiều operations:
Kịch bản: Khởi tạo hồ sơ y tế điện tử mới
Bước 1: Tìm kiếm bệnh nhân hiện có để tránh tạo bản sao
Bước 2: Nếu không tìm thấy kết quả khớp, tạo bệnh nhân mới và xác nhận hợp lệ
Bước 3: Sau khi xác nhận hợp lệ, thực hiện tạo bệnh nhân và tạo lịch hẹn
Bước 4: Lấy dữ liệu toàn diện về bệnh nhân để hiển thị
Hiệu suất và bảo mật
Vấn đề hiệu suất với Operations
Operations có thể có tác động đến hiệu suất hệ thống, đặc biệt là các operations phức tạp như $everything
hoặc $expand
. Một số chiến lược để cải thiện hiệu suất:
Sử dụng các tham số phù hợp: Giới hạn phạm vi dữ liệu bằng các tham số như
start
,end
,_count
.Phân trang kết quả: Thực hiện phân trang cho các kết quả lớn.
Sử dụng Async Operations: Đối với các operations dài hạn, sử dụng cơ chế bất đồng bộ.
Bộ nhớ đệm: Lưu trữ kết quả của các operations tốn kém như
$expand
trong bộ nhớ đệm.
Bảo mật và kiểm soát truy cập
Operations thường cần chính sách bảo mật riêng:
Kiểm soát truy cập dựa trên operation: Xác định rõ ai có thể thực hiện các operations cụ thể.
Giới hạn phạm vi dữ liệu: Đảm bảo operations chỉ trả về dữ liệu mà người dùng được phép xem.
Audit logging: Ghi lại tất cả các cuộc gọi operation để theo dõi.
Xác thực tham số: Kiểm tra và xác thực tất cả các tham số đầu vào.
Kết luận
Operations trong FHIR R5 cung cấp các khả năng mạnh mẽ vượt ra ngoài các thao tác CRUD cơ bản, cho phép thực hiện các chức năng phức tạp trong các hệ thống y tế. Từ các operations tiêu chuẩn như $everything
và $validate
đến các operations tùy chỉnh riêng, FHIR cung cấp một khuôn khổ linh hoạt để đáp ứng nhu cầu đa dạng của các tổ chức y tế.
FHIR R5 đã mở rộng đáng kể các khả năng này, giới thiệu các operations mới và cải tiến cho các operations hiện có. Tầm quan trọng của Async Operations trong xử lý các thao tác dài hạn cũng đã được nâng cao,
Last updated