FHIR (Fast Healthcare Interoperability Resources) phiên bản R5 là tiêu chuẩn mới nhất cho việc trao đổi dữ liệu y tế, được HL7 chính thức phát hành vào năm 2023. Với nhiều cải tiến đáng kể so với các phiên bản trước, FHIR R5 mang đến khả năng tương tác và linh hoạt cao hơn cho các hệ thống thông tin y tế. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về các máy chủ FHIR R5 và cách bắt đầu làm việc với chúng.
HAPI FHIR R5 TestServer
Đặc điểm chính:
Hỗ trợ đầy đủ FHIR R5: Triển khai tất cả các resource types và operations của R5
Giao diện người dùng tích hợp: Cung cấp giao diện web để thử nghiệm và khám phá
RESTful API: Tuân thủ đầy đủ đặc tả RESTful API của FHIR
Không cần đăng ký: Cho phép truy cập tự do để thử nghiệm
Development Mode: Cho phép tạo, đọc, cập nhật và xóa resources
Cách sử dụng HAPI FHIR TestServer:
1. Truy cập và khám phá giao diện web:
Xem danh sách các resource types được hỗ trợ
Thực hiện tìm kiếm trên server
Khám phá các tài liệu và hướng dẫn
2. Thực hiện các thao tác cơ bản với cURL:
# Lấy danh sách 10 bệnh nhân đầu tiên
curl -X GET https://hapi.fhir.org/baseR5/Patient?_count=10
# Tìm kiếm bệnh nhân theo tên
curl -X GET https://hapi.fhir.org/baseR5/Patient?name=Smith
# Tạo bệnh nhân mới (POST)
curl -X POST -H "Content-Type: application/fhir+json" \
-d '{"resourceType":"Patient","name":[{"family":"Nguyễn","given":["Văn","A"]}],"gender":"male","birthDate":"1980-07-15"}' \
https://hapi.fhir.org/baseR5/Patient
# Lấy thông tin một bệnh nhân cụ thể (thay [id] bằng ID thực tế)
curl -X GET https://hapi.fhir.org/baseR5/Patient/[id]
# Cập nhật thông tin bệnh nhân (PUT)
curl -X PUT -H "Content-Type: application/fhir+json" \
-d '{"resourceType":"Patient","id":"[id]","name":[{"family":"Nguyễn","given":["Văn","B"]}],"gender":"male","birthDate":"1980-07-15"}' \
https://hapi.fhir.org/baseR5/Patient/[id]
# Xóa bệnh nhân
curl -X DELETE https://hapi.fhir.org/baseR5/Patient/[id]
3. Sử dụng tham số tìm kiếm nâng cao:
# Tìm tất cả bệnh nhân nữ sinh năm 1990
curl -X GET "https://hapi.fhir.org/baseR5/Patient?gender=female&birthdate=1990"
# Tìm kiếm kết hợp nhiều tham số
curl -X GET "https://hapi.fhir.org/baseR5/Observation?code=http://loinc.org|8480-6&patient.name=Smith"
# Sử dụng tìm kiếm toàn văn
curl -X GET "https://hapi.fhir.org/baseR5/Patient?_content=diabetes"
# Tìm kiếm theo _include để lấy resources liên quan
curl -X GET "https://hapi.fhir.org/baseR5/MedicationRequest?_include=MedicationRequest:patient"
4. Thực hiện các FHIR Operations:
# Thực hiện phép toán $everything để lấy tất cả dữ liệu của bệnh nhân
curl -X GET https://hapi.fhir.org/baseR5/Patient/[id]/$everything
# Sử dụng $validate để kiểm tra tính hợp lệ của resource
curl -X POST -H "Content-Type: application/fhir+json" \
-d '{"resourceType":"Parameters","parameter":[{"name":"resource","resource":{"resourceType":"Patient","name":[{"family":"Test"}]}}]}' \
https://hapi.fhir.org/baseR5/Patient/$validate
Hạn chế của HAPI FHIR TestServer:
Không bảo mật: Đây là một máy chủ công khai, không nên sử dụng cho dữ liệu thật
Xóa dữ liệu định kỳ: Dữ liệu có thể bị xóa mà không có thông báo
Giới hạn hiệu suất: Có thể gặp vấn đề về hiệu suất nếu sử dụng quá mức
Không có hỗ trợ xác thực: Không triển khai SMART on FHIR hoặc OAuth2
Firely Server R5 instances
Firely Server (trước đây được gọi là Vonk) là một máy chủ FHIR thương mại được phát triển bởi Firely. Nó cung cấp cả phiên bản doanh nghiệp trả phí và phiên bản cộng đồng miễn phí (có giới hạn).
Đặc điểm chính:
Hiệu suất cao: Được tối ưu hóa cho môi trường sản xuất
Tuân thủ nghiêm ngặt: Đảm bảo tuân thủ đầy đủ các đặc tả của FHIR R5
Kiểm tra tính hợp lệ: Hỗ trợ validation dựa trên StructureDefinitions và Profiles
Bảo mật nâng cao: Hỗ trợ SMART on FHIR, OAuth2 và RBAC (trong phiên bản doanh nghiệp)
Lịch sử và versioning: Theo dõi mọi thay đổi của resources
Cách sử dụng Firely Server R5:
1. Truy cập endpoint và khám phá:
# Kiểm tra khả năng của server (Capability Statement)
curl -X GET https://server.fire.ly/r5/metadata
# Xem danh sách resources được hỗ trợ
curl -X GET https://server.fire.ly/r5/
2. Thực hiện các thao tác CRUD:
# Tạo bệnh nhân mới
curl -X POST -H "Content-Type: application/fhir+json" \
-d '{"resourceType":"Patient","name":[{"family":"Lê","given":["Thị","C"]}]}' \
https://server.fire.ly/r5/Patient
# Tìm kiếm bệnh nhân theo tiêu chí
curl -X GET "https://server.fire.ly/r5/Patient?family=Lê&given=Thị"
# Đọc thông tin chi tiết bệnh nhân
curl -X GET https://server.fire.ly/r5/Patient/[id]
3. Sử dụng các tính năng nâng cao:
# Lấy lịch sử thay đổi của resource
curl -X GET https://server.fire.ly/r5/Patient/[id]/_history
# Lấy phiên bản cụ thể của resource
curl -X GET https://server.fire.ly/r5/Patient/[id]/_history/[version]
# Kiểm tra tính hợp lệ theo profile cụ thể
curl -X POST -H "Content-Type: application/fhir+json" \
-d '{"resourceType":"Parameters","parameter":[{"name":"resource","resource":{"resourceType":"Patient",...}},{"name":"profile","valueUri":"http://example.org/fhir/StructureDefinition/MyPatientProfile"}]}' \
https://server.fire.ly/r5/Patient/$validate
Phiên bản doanh nghiệp của Firely Server:
Firely Server Enterprise cung cấp thêm nhiều tính năng như:
Multi-tenancy: Hỗ trợ nhiều tenant trên cùng một instance
Subscription: Hỗ trợ theo dõi và thông báo khi có thay đổi dữ liệu
Terminology Services: Dịch vụ quản lý mã và thuật ngữ
Custom Operations: Khả năng mở rộng với các operation tùy chỉnh
High Availability: Cấu hình cluster để đảm bảo tính sẵn sàng cao
Auditing: Theo dõi và ghi nhật ký chi tiết cho mọi hoạt động
Lưu ý về Firely Server Sandbox:
Sandbox là môi trường công khai, không bảo mật cho dữ liệu nhạy cảm
Dữ liệu có thể bị xóa hoặc reset định kỳ
Có giới hạn số lượng requests để tránh quá tải server
Sử dụng FHIR Browser để khám phá resources
FHIR Browser là các công cụ trực quan giúp bạn khám phá và tương tác với FHIR resources mà không cần phải viết code phức tạp. Dưới đây là một số FHIR Browser hỗ trợ R5:
1. Simplifier.net FHIR Browser
Đặc điểm chính:
Hỗ trợ đầy đủ FHIR R5
Giao diện trực quan, dễ sử dụng
Cho phép khám phá cấu trúc của mọi resource type
Có thể duyệt các profiles, extensions, và value sets
Tích hợp với các registry FHIR như HL7 và các registry quốc gia
Hỗ trợ nhiều định dạng xuất (JSON, XML, Turtle)
Cách sử dụng Simplifier FHIR Browser:
Chọn FHIR version R5
Chọn một resource type từ menu để xem cấu trúc chi tiết
Khám phá các thuộc tính, datatype và mối quan hệ
2. FHIR Web Client của HL7
HAPI FHIR cung cấp một FHIR Web Client cho phép bạn tương tác trực tiếp với FHIR servers.
Đặc điểm chính:
Giao diện tích hợp sẵn trong HAPI FHIR TestServer
Cho phép tạo, đọc, cập nhật và xóa resources
Hỗ trợ tìm kiếm với nhiều tham số
Hiển thị resources ở định dạng JSON và XML
Có thể chuyển đổi giữa các phiên bản FHIR
Cung cấp lịch sử thay đổi của resources
Cách sử dụng HAPI FHIR Web Client:
Chọn loại resource từ dropdown menu
Sử dụng "Search" để tìm kiếm resources
Nhấp vào ID của resource để xem chi tiết
Sử dụng nút "Create" để tạo resource mới
Sử dụng "Update" để sửa đổi resources hiện có
3. Firely Terminal
Firely Terminal là một công cụ mạnh mẽ cho các nhà phát triển FHIR, cung cấp môi trường desktop để làm việc với FHIR.
Đặc điểm chính:
IDE đầy đủ tính năng cho FHIR
Hỗ trợ FSH (FHIR Shorthand) để tạo profiles và resources
Quản lý nhiều FHIR servers
Hỗ trợ trực tiếp cho FHIR R5
Tính năng debug và validation tích hợp
Tự động hoàn thành mã và kiểm tra lỗi cú pháp
Cài đặt và sử dụng Firely Terminal:
Khởi động ứng dụng và đăng nhập (có thể tạo tài khoản miễn phí)
Kết nối với FHIR server R5 bằng cách thêm server mới:
server add r5 https://server.fire.ly/r5
Chuyển đổi giữa các server bằng lệnh:
server focus r5
Thực hiện các thao tác FHIR, ví dụ:
read Patient/examplesearch Patient name=Smith
Tools khám phá R5 resources
1. FHIR Validator
FHIR Validator là công cụ quan trọng để kiểm tra tính hợp lệ của FHIR resources theo các đặc tả và profiles.
Đặc điểm chính:
Hỗ trợ đầy đủ FHIR R5
Kiểm tra cú pháp và ngữ nghĩa của resources
Xác thực dựa trên StructureDefinitions và Profiles
Báo cáo lỗi và cảnh báo chi tiết
Hỗ trợ nhiều định dạng (JSON, XML)
Cung cấp API để tích hợp vào pipeline CI/CD
Cách sử dụng FHIR Validator:
Chọn phiên bản FHIR R5
Dán resource cần kiểm tra (JSON hoặc XML)
Chọn profile cụ thể (nếu cần)
Nhấp "Validate" để kiểm tra
Xem báo cáo lỗi và cảnh báo
2. Clinicians on FHIR
Clinicians on FHIR là môi trường mô phỏng cho phép bạn tạo và khám phá dữ liệu lâm sàng theo định dạng FHIR.
Đặc điểm chính:
Giao diện thân thiện với người dùng lâm sàng
Hỗ trợ các kịch bản lâm sàng thực tế
Tạo và liên kết các resources lâm sàng
Hiển thị dữ liệu dưới dạng biểu đồ và timeline
Hỗ trợ tìm kiếm và lọc
Tích hợp với nhiều FHIR servers
Cách sử dụng Clinicians on FHIR:
Chọn phiên bản R5 từ settings
Chọn một kịch bản lâm sàng hoặc tạo kịch bản mới
Khám phá và tương tác với các resources lâm sàng
Sử dụng chức năng "Resource Builder" để tạo resources mới
3. Forge
Forge là một công cụ desktop chuyên dụng để tạo và chỉnh sửa FHIR Profiles và Extensions.
Đặc điểm chính:
Hỗ trợ FHIR R5
Giao diện đồ họa để tạo và chỉnh sửa StructureDefinitions
Tạo và quản lý các extensions
Xuất profiles dưới nhiều định dạng
Tích hợp với Simplifier.net và FHIR registries
Hỗ trợ validation và testing
Cài đặt và sử dụng Forge:
Khởi động ứng dụng và chọn phiên bản FHIR R5
Tạo profile mới hoặc mở profile có sẵn
Sử dụng giao diện đồ họa để chỉnh sửa các ràng buộc và thuộc tính
Xuất profile dưới dạng JSON hoặc XML
Xuất bản lên Simplifier.net hoặc FHIR registry khác
4. FHIR API Calls với Postman
Postman là công cụ phổ biến để thử nghiệm và tài liệu hóa API, rất hữu ích cho làm việc với FHIR APIs.
{
# Tìm bệnh nhân với tên "Smith"
PatientList(name: "Smith") {
# Chỉ lấy những trường cần thiết
name {
family
given
}
birthDate
gender
telecom {
system
value
}
# Lấy các Observations liên quan
ObservationList(_reference: patient) {
code {
coding {
system
code
display
}
}
valueQuantity {
value
unit
}
effectiveDateTime
}
}
}
Để sử dụng GraphQL với FHIR R5:
Gửi POST request đến endpoint $graphql
Đặt Content-Type: application/json
Body bao gồm object với trường "query" chứa GraphQL query
Thực hiện truy vấn và nhận kết quả theo cấu trúc yêu cầu
Ví dụ thực hành: Tạo và quản lý hồ sơ bệnh nhân trên HAPI FHIR R5
Dưới đây là một ví dụ thực tế về việc tạo và quản lý hồ sơ bệnh nhân hoàn chỉnh trên HAPI FHIR R5 TestServer.
# Lấy tất cả thông tin về bệnh nhân
curl -X GET "https://hapi.fhir.org/baseR5/Patient/[patient_id]"
# Lấy tất cả các bệnh lý của bệnh nhân
curl -X GET "https://hapi.fhir.org/baseR5/Condition?subject=Patient/[patient_id]"
# Lấy tất cả các dị ứng của bệnh nhân
curl -X GET "https://hapi.fhir.org/baseR5/AllergyIntolerance?patient=Patient/[patient_id]"
# Lấy tất cả xét nghiệm của bệnh nhân
curl -X GET "https://hapi.fhir.org/baseR5/Observation?subject=Patient/[patient_id]"
# Lấy tất cả đơn thuốc của bệnh nhân
curl -X GET "https://hapi.fhir.org/baseR5/MedicationRequest?subject=Patient/[patient_id]"
# Lấy tất cả dữ liệu lâm sàng của bệnh nhân trong một request
curl -X GET "https://hapi.fhir.org/baseR5/Patient/[patient_id]/$everything"
4. Cập nhật thông tin bệnh nhân:
# Đầu tiên lấy thông tin hiện tại của bệnh nhân
curl -X GET "https://hapi.fhir.org/baseR5/Patient/[patient_id]" > patient.json
# Sửa đổi file patient.json
# Sau đó gửi PUT request để cập nhật
curl -X PUT -H "Content-Type: application/fhir+json" \
-d @patient.json \
"https://hapi.fhir.org/baseR5/Patient/[patient_id]"
Sử dụng React FHIR Client để khám phá R5 Resources
Thiết lập dự án:
# Tạo dự án React mới
npx create-react-app fhir-explorer
cd fhir-explorer
# Cài đặt các thư viện cần thiết
npm install fhir-kit-client fhir-react bootstrap
import React from 'react';
import PatientExplorer from './PatientExplorer';
function App() {
return (
<div className="App">
<PatientExplorer />
</div>
);
}
export default App;
Khởi chạy ứng dụng:
npm start
SMART on FHIR với FHIR R5
SMART on FHIR là một bộ đặc tả cho phép ứng dụng y tế tích hợp với các EHR (Electronic Health Record) sử dụng FHIR. Dưới đây là các bước cơ bản để bắt đầu với SMART on FHIR trên R5:
Không lưu trữ dữ liệu nhạy cảm trên các public sandbox servers
Sử dụng HTTPS cho mọi yêu cầu
Khi triển khai sản phẩm, luôn sử dụng OAuth2 và SMART on FHIR
Tuân thủ các quy định về bảo mật dữ liệu y tế như HIPAA, GDPR, hoặc CCPA
3. Hiệu suất:
Sử dụng _include và _revinclude để giảm số lượng requests
Thêm tham số _count để giới hạn kích thước kết quả
Sử dụng tham số _elements để chỉ lấy các trường cần thiết
Tránh truy vấn quá rộng có thể gây quá tải server
4. Conformance:
Luôn kiểm tra CapabilityStatement của server để biết các tính năng được hỗ trợ
Sử dụng validator để kiểm tra resources trước khi gửi
Khi tạo profiles, hãy hạn chế sự khác biệt với các resources cơ bản
5. Khi triển khai trên môi trường sản xuất:
Sử dụng Implementation Guides chính thức khi có thể
Tài liệu hóa đầy đủ mọi sự mở rộng và tùy chỉnh
Triển khai hệ thống theo dõi và cảnh báo
Xây dựng mô hình test tự động để đảm bảo tuân thủ HL7 FHIR
Các nguồn tài nguyên FHIR R5 hữu ích
Thư viện FHIR:
Các khóa học FHIR:
Cộng đồng và Blog:
Kết luận
FHIR R5 Servers cung cấp nền tảng mạnh mẽ để phát triển các ứng dụng y tế hiện đại và khả năng tương tác. Thông qua các công cụ như HAPI FHIR TestServer, Firely Server, và các FHIR Browsers, bạn có thể nhanh chóng làm quen với cấu trúc và chức năng của FHIR R5.
Khi tiếp tục khám phá, hãy nhớ rằng FHIR là một tiêu chuẩn linh hoạt được thiết kế để hỗ trợ nhiều trường hợp sử dụng khác nhau. Đừng ngại tùy chỉnh và mở rộng khi cần thiết, nhưng luôn tuân thủ các nguyên tắc cơ bản để đảm bảo khả năng tương tác.
Trong các bài viết tiếp theo, chúng ta sẽ khám phá sâu hơn về việc xây dựng profiles, triển khai implementation guides, và phát triển các ứng dụng FHIR phức tạp hơn.
là một trong những triển khai mã nguồn mở phổ biến nhất của tiêu chuẩn FHIR, được phát triển bằng Java. HAPI FHIR TestServer cung cấp một môi trường thử nghiệm hoàn chỉnh để làm việc với FHIR R5.
Endpoint:
Truy cập trong trình duyệt để xem trang chủ của máy chủ. Từ đây, bạn có thể:
Endpoint chính thức:
là nền tảng toàn diện cho phát triển, quản lý và chia sẻ các đặc tả FHIR.
URL:
Truy cập
URL:
Truy cập
URL:
Tải và cài đặt từ
URL:
Truy cập
URL R5: (Chọn R5 từ menu)
Truy cập
URL:
Tải và cài đặt từ
Tải Postman:
là một thư viện React giúp bạn xây dựng các ứng dụng FHIR một cách nhanh chóng. Dưới đây là một ví dụ đơn giản để bắt đầu:
Nếu bạn đã quen với phiên bản cũ, hãy tham khảo tài liệu chuyển đổi: