Website quản lý bệnh án trên nền tảng blockchain Hyperledger

MỤC LỤC

Giới thiệu Hyperledger Fabric

Cách tiếp cận này không tuân thủ khi nói đến các giao dịch doanh nghiệp, vì không phải lúc nào cũng cần có sự chấp thuận của tất cả người tham gia, chỉ cần hai người tham gia hoặc thậm chí sự chấp thuận của một người tham gia là đủ cho một số giao dịch nhất định và không thể đồng thuận với PoW và PoS.  Chaincode: Đó là một gói hợp đồng thông minh và chính sách chứng thực và đã được xác định trên một kênh tại thời điểm tạo kênh và tất cả những người tham gia kênh phải phê duyệt chaincode để tham gia vào bất kỳ giao dịch nào thông qua kênh này.

Hyperledger Fabric và Hệ thống bệnh án

Sau đó, có các thành phần bổ sung hỗ trợ hoạt động trơn tru của hệ thống chăm sóc sức khỏe, chẳng hạn như Cơ quan cấp chứng chỉ, sử dụng mà bệnh nhân, bác sĩ và chính bệnh viện có thể được ủy quyền kỹ thuật số. Đầu tiên, bản thân mạng với một số bệnh viện là tổ chức với các nút ngang hàng của họ để lưu trữ các hợp đồng thông minh xác định cách hệ thống chăm sóc sức khỏe có thể vận hành và sổ cái phân tán lưu trữ EHR.

PHÂN TÍCH THIẾT KẾ HỆ THỐNG

Mô tả hệ thống

Vì dữ liệu của bệnh nhân chỉ xuất hiện trong kênh cụ thể mà bệnh viện mà bệnh nhân đó đến thăm, nên các bác sĩ và bệnh nhân khác sẽ không thể truy cập dữ liệu này. Sau đó, người ta nhận ra rằng có thể đạt được các tính năng bảo mật và quyền riêng tư mà không làm tăng độ phức tạp bằng cách giới thiệu một kênh mới cho mỗi tổ chức, sử dụng một tính năng của Hyperledger Fabric có tên là Thu thập dữ liệu riêng tư.

Công cụ xây dựng hệ thống

Việc thu thập dữ liệu cá nhân và việc sử dụng nó cho trường hợp sử dụng quản lý dữ liệu bệnh nhân sẽ được thảo luận chi tiết hơn trong các phần tiếp theo. Bệnh nhân có quyền đọc và cập nhật dữ liệu cá nhân trong khi họ chỉ có thể đọc dữ liệu y tế và không thể thực hiện bất kỳ thay đổi nào trong đó. Khi một bác sĩ được chỉ định cho bất kỳ bệnh nhân nào, anh ấy/cô ấy sẽ có quyền truy cập vào hồ sơ sức khỏe của bệnh nhân.Các bác sĩ có sẽ được quyền đọc và cập nhật dữ liệu cá nhân.Các bác sĩ có thể đọc hồ sơ sức khỏe của bệnh nhân và chỉ cập nhật dữ liệu y tế của hồ sơ sức khỏe của bệnh nhân khi cần thiết.

Bệnh nhận khi muốn khám bệnh sẽ tới quầy đăng ký khám chữa bệnh và sẽ được cấp cho mỗi bệnh nhõn đú 1 tài khoản để theo dừi hồ sơ bệnh ỏn của mỡnh khi đi khỏm bệnh.

                   Hình 2: Sơ đồ Usercase mô tả chức năng của Hospital
Hình 2: Sơ đồ Usercase mô tả chức năng của Hospital

Bảo mật

Trường hợp 2: Để thuận lợi cho trường hợp bệnh nhân đến khám tại bệnh viện khác, đó là bệnh nhân đăng ký cùng lúc 2 bệnh viện hoặc bệnh nhân tự đăng ký ở bệnh viện thứ hai. Do đó, một bộ sưu tập chung phải được xác định với quyền truy cập được cung cấp cho hai bệnh viện có liên quan và EHR từ bộ sưu tập đầu tiên có quyền truy cập với bệnh viện đầu tiên phải được chuyển sang bộ sưu tập chung mới này. Trường hợp 3: Nếu một bệnh nhân quyết định hủy đăng ký khỏi một bệnh viện và chuyển đến một bệnh viện khác, thì EHR của bệnh nhân đó phải được thêm vào bộ sưu tập được liên kết với bệnh viện mới và bệnh viện cũ sẽ chỉ có giá trị băm của dữ liệu đó.

Việc xác định chính sách chứng thực với Thu thập dữ liệu cá nhân đáp ứng yêu cầu của hệ thống, rằng giao dịch EHR liên quan đến bất kỳ bệnh viện nào phải được thực hiện bởi một mình bệnh viện đó.

Công nghệ

+ 1’ kết hợp các bộ sưu tập trong đó mỗi bệnh viện có một bộ sưu tập mà quyền truy cập được chia sẻ với từng bệnh viện khác và sự kết hợp của các bệnh viện khác. Các bộ sưu tập cho các bệnh viện này sẽ có Bệnh viện A, Bệnh viện B, Bệnh viện C, Bệnh viện AB, Bệnh viện AC, Bệnh viện BC và Bệnh viện ABC. Bằng cách này, bất kể bệnh viện/tổ hợp bệnh viện nào mà bệnh nhân đến khám, EHR của họ sẽ được bảo mật và dữ liệu sẽ không có sẵn bên ngoài bộ sưu tập đó.

Trong trường hợp nếu dữ liệu riêng tư được chia sẻ giữa nhiều bệnh viện thì bệnh viện đang thực hiện giao dịch trong bộ sưu tập đó phải ký giao dịch.

Mạng Hyperledger Fabric

Ngoài ra, ngoài tính bảo mật này, Bộ sưu tập dữ liệu cá nhân cho phép xác định chính sách chứng thực trong cấu hình của nó.  Quyết định số lượng và vị trí của các nút (Nodes) trong mạng, bao gồm các Peer, Orderer và các CA (Cetificate Authorities).  Tạo một tập tin cấu hình mạng mô tả thông tin về mạng như các nút, địa chỉ, thông tin xác thực và các tham số khác.

 Xây dựng ứng dụng của bạn để kết nối với mạng sử dụng cấu hình mạng và thông tin xác thực từ CA.

Smart contracts và Chaincode

UpdateMedicalRecord() là các hàm được sử dụng để cập nhật hồ sơ bệnh án hiện có trong world state, ReadMedicalRecord() có chức năng trả về thông tin chi tiết của hồ sơ bệnh án dựa trên ID của nó. Hàm MedicalRecordExists() và ValidatePatientDoctorHospital() là 2 hàm sử dụng để kiểm tra và đảm bảo rằng hồ sơ bênh án với ID xác định đã tồn tại và bệnh nhân,bác sĩ và bệnh viện có liên quan đến hồ sơ bệnh án đã tồn tại. Trong hợp đồng EHR quan trọng nhất là hệ thống quản lý thông tin Bệnh Nhân (Patient), Bác Sĩ (Doctor) và Bệnh Viện (Hospital) cung cấp một cơ sở dữ liệu phi tập trung trên mạng BlockChain Hyperledger Fabric.

Và đặc biệt hàm ValidatePatientDoctorHospital() là một hàm quan trọng để kiểm tra sự tồn tại của bệnh nhân, bác sĩ và bệnh viện trước khi tạo ra một hồ sơ bệnh án mới. Khi bác sĩ cố gắng truy cập hoặc sửa đổi EHR của bệnh nhân với hàm UpdateMedicalRecord, hệ thống sẽ kiểm tra ID người dùng của cả bệnh nhân, bác sĩ và bệnh viện đối, nếu các ID đó không có trong danh sách, thì bác sĩ đó không được phép tạo hoặc sửa đổi EHR và hệ thống sẽ trả về 'Quyền truy cập bị Từ chối' cho bác sĩ đó. Tương tự, nếu các ID khả dụng thì Bác sĩ có quyền tạo hoặc sửa đổi EHR. Hình 8: Hàm khởi tạo hồ sơ bệnh án mới CreateMedicalRecord. Hình 9: Hàm cập nhật thông tin hồ sơ y tế hiện có UpdateMedicalRecord. Hình 11: Hàm khởi tạo tài khoản người dùng mới. Hình 12: Hàm cập nhật tài khoản người dùng. Hợp đồng thông minh thường được đóng gói thành Chaincode và được triển khai trên mạng chuỗi khối. Vì vậy, một chuỗi mã có thể có nhiều hợp đồng thông minh và một khi chuỗi mã này được triển khai trên mạng, tất cả các hợp đồng sẽ có sẵn cho ứng dụng. Việc triển khai chaincode vào mạng HLF có thể được chia thành 4 bước: 1) Đóng gói chaincode, 2) Cài đặt chaincode trên các thiết bị ngang hàng, 3) Phê duyệt định nghĩa chaincode cho một tổ chức, 4) Gửi định nghĩa chaincode vào kênh.

Hình 7: Hàm khởi tạo sổ cái Initledger
Hình 7: Hàm khởi tạo sổ cái Initledger

Software Development Kit (SDK)

Sử dụng thư viện ExpressJS của Node.js để xây dựng API cho các ứng dụng máy chủ bao gồm việc ExpressJS được sử dụng để xử lý các yêu cầu và phản hồi HTTP, tạo điều kiện thuận lợi cho việc giao tiếp giữa các thành phần khác nhau trong kiến trúc. Tóm lại, kiến trúc bao gồm một ứng dụng client gửi yêu cầu đến API server do ExpressJS cung cấp, sau đó máy chủ này sẽ giao tiếp với Fabric Host xử lý các giao dịch chuỗi khối liên quan đến hồ sơ sức khỏe điện tử. Code thiết lập kết nối với mạng chuỗi khối Hyperledger Fabric, xác thực thông tin đăng nhập của người dùng bằng hàm ('AuthenticateUser') trong hợp đồng thông minh và trả về dữ liệu tài khoản người dùng dưới dạng phản hồi JSON.

Code in ra chi tiết giao dịch, gửi phản hồi JSON cho biết việc tạo thành công với dữ liệu hồ sơ y tế và ID giao dịch hoặc mã trạng thái 500 kèm theo thông báo lỗi nếu thao tác không thành công. Code sẽ thiết lập kết nối với mạng blockchain, truy xuất hợp đồng thông minh và trước tiên kiểm tra xem hồ sơ y tế với ID đã cho có tồn tại hay không bằng cách gọi hàm 'MedicalRecordExists' trên hợp đồng. Sau đó, code sẽ gửi phản hồi JSON cho biết cập nhật thành công hoặc mã trạng thái 404 có thông báo lỗi nếu hồ sơ y tế không tồn tại và mã trạng thái 500 có thông báo lỗi nếu thao tác cập nhật không thành công.

Hình 13: Kết nối API giữa SDK và Smart Contract
Hình 13: Kết nối API giữa SDK và Smart Contract

TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ

Giao diện hệ thống

Vì Hyperledger Fabric vẫn là một chuỗi khối đang phát triển nên bộ sưu tập dữ liệu cá nhân bị hạn chế về các tính năng của nó. Trong hệ thống này, lịch sử y tế của bệnh nhõn là một trong những phần quan trọng và là tớnh năng cốt lừi, vì Hyperledger Fabric cung cấp quyền truy cập dễ dàng vào lịch sử giao dịch. Cấu trúc Hyperledger ghi lại giao dịch trong dữ liệu riêng tư, nhưng không có API để trích xuất thông tin đó.

Một giải pháp thay thế được đề xuất bởi cộng đồng Hyperledger Fabric, có sẵn trong phần mô tả vấn đề của báo cáo lỗi của họ.

Hình 30 : Trang cập nhật bệnh nhân.
Hình 30 : Trang cập nhật bệnh nhân.