Một máy sinh hóa mới vừa được lắp vào phòng xét nghiệm. Hãng cử kỹ sư đến chạy thử, màn hình máy hiện đủ chỉ số. Nhưng ba ngày sau, kỹ thuật viên vẫn ngồi gõ tay từng kết quả vào phần mềm, vì cáp đã cắm mà LIS không nhận được gì. Hóa ra máy gửi dữ liệu theo ASTM qua cổng nối tiếp, còn LIS đang lắng nghe thông điệp HL7 qua mạng.
Bài này hướng dẫn kết nối máy xét nghiệm HL7 ASTM cho kỹ sư công nghệ thông tin và trưởng khoa xét nghiệm đang chuẩn bị đưa máy lên LIS. Nội dung gồm cách phân biệt hai chuẩn, các lớp kết nối, ánh xạ mã xét nghiệm, quy trình kiểm thử và những lỗi hay gặp ngoài hiện trường.
ASTM và HL7 khác nhau ở đâu khi áp vào máy xét nghiệm
Hai chuẩn này không cạnh tranh nhau. Chúng ra đời ở hai thời điểm và phục vụ hai kiểu thiết bị.
ASTM (nay là các chuẩn CLSI LIS01 và LIS02, trước đây là ASTM E1381 và E1394) sinh ra để máy phân tích nói chuyện với máy tính phòng xét nghiệm. Giao thức gọn, truyền qua cổng nối tiếp RS-232 là chủ yếu. Máy huyết học, sinh hóa, miễn dịch đời cũ gần như đều dùng cách này.
HL7 phiên bản 2 là chuẩn trao đổi thông điệp giữa các hệ thống y tế. Nhiều máy đời mới và nhiều hệ thống trung gian dùng HL7 qua TCP/IP. Chuẩn này cũng là thứ LIS dùng để nói chuyện với HIS, nên trong bài chuẩn HL7 và FHIR trong phần mềm bệnh viện được phân tích ở mức tổng quan.
| Tiêu chí | ASTM (LIS01/LIS02) | HL7 v2 |
|---|---|---|
| Đường truyền thường gặp | RS-232, nay có cả TCP/IP | TCP/IP (MLLP) |
| Đơn vị dữ liệu | Frame có ký tự điều khiển, checksum | Thông điệp chia thành segment |
| Bản ghi chính | H, P, O, R, C, L | MSH, PID, OBR, OBX |
| Thiết bị hay dùng | Máy huyết học, sinh hóa, miễn dịch | Máy đời mới, middleware, HIS |
| Điểm dễ lỗi | Tốc độ truyền, checksum, timeout | Ký tự phân cách, mã hóa, ánh xạ trường |
Một điều dễ nhầm: máy ghi "hỗ trợ HL7" chưa có nghĩa là cắm vào LIS nào cũng chạy. Mỗi hãng đặt mã xét nghiệm, đơn vị và cờ bất thường theo cách riêng. Phần khác biệt đó nằm ở tài liệu giao tiếp (interface specification) của hãng, và đây là tài liệu cần xin trước khi lắp đặt.
Ba lớp phải thông thì dữ liệu mới về tới LIS
Kết nối máy xét nghiệm HL7 ASTM thất bại thường do người ta sửa nhầm lớp. Nên tách thành ba lớp và kiểm tra từ dưới lên.
- Lớp vật lý: cáp, cổng, nguồn. Với RS-232 là cáp chéo hay thẳng, chân nào nối chân nào. Với mạng là địa chỉ IP, cổng, tường lửa.
- Lớp giao thức: quy tắc bắt tay, đóng khung, xác nhận. ASTM dùng các ký tự điều khiển; HL7 qua mạng dùng khung MLLP.
- Lớp nội dung: thông điệp mang gì, mã xét nghiệm nào, đơn vị nào, của mẫu nào.
Phần lớn buổi cài đặt tốn thời gian ở lớp 3, dù người ta hay dành cả buổi sáng soi dây cáp ở lớp 1.
Kiểm tra lớp vật lý trước: cổng, cáp và bộ chuyển đổi nối tiếp sang mạng
Cấu hình kết nối ASTM qua cổng nối tiếp và TCP/IP
Với máy dùng ASTM, bắt đầu bằng thông số cổng nối tiếp. Hai đầu phải khớp hoàn toàn: tốc độ truyền (baud rate, hay gặp 9600), số bit dữ liệu (8), bit dừng (1), kiểm tra chẵn lẻ (không). Lệch một thông số là dữ liệu hiện thành ký tự rác hoặc không hiện gì.
Quy trình trao đổi ở lớp giao thức diễn ra như sau:
- Bên gửi phát ký tự ENQ để hỏi bên nhận đã sẵn sàng chưa.
- Bên nhận trả ACK nếu sẵn sàng, NAK nếu bận.
- Bên gửi truyền từng frame, mỗi frame mở bằng STX, đóng bằng ETX hoặc ETB, kèm checksum hai ký tự.
- Bên nhận kiểm checksum rồi trả ACK cho từng frame. Sai checksum thì trả NAK, bên gửi truyền lại.
- Hết dữ liệu, bên gửi phát EOT để kết thúc phiên.
Nội dung bên trong frame là các bản ghi: H (đầu thông điệp), P (người bệnh), O (chỉ định xét nghiệm), R (kết quả từng chỉ số), C (ghi chú) và L (kết thúc). Mỗi bản ghi ngăn các trường bằng ký tự phân cách do bản ghi H khai báo.
Nếu LIS đặt ở máy chủ khác phòng, nên dùng bộ chuyển đổi nối tiếp sang mạng (serial device server). Bộ này nhận RS-232 từ máy rồi đẩy dữ liệu thành luồng TCP, LIS chỉ cần mở cổng lắng nghe. Gắn một máy tính nhỏ cạnh máy xét nghiệm để chạy chương trình kết nối cũng là cách làm quen thuộc, nhưng thêm một máy tính là thêm một điểm cần vá lỗi và sao lưu.
Chú ý tới timeout. Một số máy chờ ACK chỉ vài giây; LIS phản hồi chậm vì đang ghi cơ sở dữ liệu thì máy tự hủy phiên và gửi lại, sinh ra kết quả trùng.
Sai lầm thường gặp: Chỉ kiểm tra "có thấy dữ liệu chạy" rồi kết luận xong. Dữ liệu thấy được nhưng bị cắt ở frame thứ hai (do checksum sai và máy gửi lại ngầm) vẫn cho kết quả thiếu chỉ số mà không báo lỗi nào.
Cấu hình kết nối HL7 qua mạng
Thông điệp HL7 v2 gồm nhiều segment, mỗi segment một dòng, ngăn trường bằng dấu gạch đứng. Với máy xét nghiệm, ba loại thông điệp quan trọng là:
- ORM (chỉ định): LIS gửi xuống máy danh sách xét nghiệm cần chạy cho một mẫu.
- ORU (kết quả): máy hoặc middleware gửi kết quả lên LIS. Segment OBR mô tả chỉ định, segment OBX chứa từng chỉ số kèm đơn vị, khoảng tham chiếu và cờ bất thường.
- ACK: bên nhận xác nhận đã nhận và xử lý. Không có ACK, bên gửi coi như thông điệp chưa đến.
Khi truyền qua TCP, HL7 dùng khung MLLP: thông điệp được bọc giữa ký tự mở khối và hai ký tự đóng khối. Sai khung này, bên nhận không thấy được điểm kết thúc và thông điệp treo vô hạn.
Các thông số cần thống nhất trước khi bật kết nối: ai là bên chủ động mở kết nối (client) và ai lắng nghe (server), địa chỉ IP cố định cho máy, số cổng, phiên bản HL7 (thường 2.3 hoặc 2.5), mã hóa ký tự và tên ứng dụng gửi/nhận trong segment MSH. Với tiếng Việt có dấu, mã hóa UTF-8 và thống nhất ngay từ đầu, vì tên người bệnh sai dấu thường xuất hiện đúng ở khâu này.
Ánh xạ mã xét nghiệm và mã mẫu: chỗ hỏng nhiều nhất
Kết nối thông rồi, việc còn lại là làm cho hai bên hiểu cùng một thứ. Có hai bảng ánh xạ phải làm.
Mã mẫu (sample ID). LIS in mã vạch dán lên ống, máy đọc mã đó để biết mẫu của ai. Mã trên máy phải trùng với mã LIS sinh ra, kể cả độ dài và tiền tố. Nơi nào cho nhân viên gõ tay mã mẫu trên máy thì nơi đó sớm muộn có kết quả gắn nhầm người bệnh.
Mã vạch trên ống mẫu là khóa nối giữa chỉ định, máy và kết quả
Mã xét nghiệm. Mỗi chỉ số trên máy có mã riêng của hãng (ví dụ mã kênh đo). LIS có mã dịch vụ kỹ thuật của bệnh viện. Phải lập bảng đối chiếu từng cặp, kèm đơn vị tính. Hai lỗi hay gặp:
- Cùng một chỉ số nhưng máy trả theo mmol/L, danh mục LIS để mg/dL. Kết quả vẫn về, giá trị sai hệ số.
- Máy trả thêm chỉ số phụ (chỉ số tính toán, cờ cảnh báo) mà LIS chưa khai báo, nên bị bỏ qua hoặc làm treo dòng xử lý.
Bảng ánh xạ cũng quyết định việc kết quả có đi tiếp sang viện phí hay không. Nếu mã chỉ số không khớp mã dịch vụ đã tính tiền, kết quả nằm ở LIS nhưng dòng chi phí không được xác nhận thực hiện. Vấn đề này được mổ xẻ ở bài HL7 truyền kết quả xét nghiệm vào viện phí nội trú.
Kiểm thử trước khi đưa kết nối vào chạy thật
Không nên bật kết nối vào giờ cao điểm rồi theo dõi. Chạy một đợt kiểm thử riêng, ghi biên bản, có chữ ký của trưởng khoa.
Đối chiếu từng chỉ số giữa màn hình máy và kết quả trên LIS trước khi chạy thật
Danh mục kiểm thử tối thiểu:
- Mẫu kiểm soát chất lượng: chạy mức thấp, trung bình, cao; so kết quả trên máy với kết quả về LIS đến từng chữ số thập phân.
- Đối chiếu chỉ số: chọn ít nhất 10 mẫu thật đã có kết quả, kiểm tra tên chỉ số, đơn vị, cờ cao/thấp.
- Mẫu lỗi: mẫu đông, thiếu thể tích, máy báo cờ lỗi. Kết quả phải về LIS kèm cờ, không bị nuốt.
- Chạy lại mẫu: kết quả chạy lại phải cập nhật hoặc lưu thành lần chạy mới theo quy tắc của khoa, không ghi đè âm thầm.
- Mất kết nối giữa chừng: rút cáp, tắt dịch vụ LIS, bật lại. Dữ liệu phải được gửi bù, không mất, không trùng.
- Ngoài ngưỡng đo: kết quả có ký hiệu lớn hơn hoặc nhỏ hơn, dạng chữ thay vì số. Xem LIS lưu thế nào.
Giữ kết quả nháp ở trạng thái chờ duyệt, không trả thẳng về bệnh án. Kỹ thuật viên hoặc bác sĩ xét nghiệm duyệt xong mới đẩy sang HIS. Nếu bệnh viện đang dùng bệnh án điện tử tích hợp LIS, bước duyệt này quyết định thời điểm bác sĩ lâm sàng nhìn thấy kết quả.
Lỗi hay gặp ngoài hiện trường và cách khoanh vùng
| Hiện tượng | Nguyên nhân thường gặp | Cách xử lý |
|---|---|---|
| Không thấy dữ liệu nào | Sai cáp, sai cổng COM, tường lửa chặn cổng | Kiểm tra lớp vật lý, thử bằng chương trình bắt dữ liệu cổng nối tiếp |
| Ký tự rác | Lệch tốc độ truyền hoặc bit dữ liệu | Đồng bộ thông số cổng hai đầu |
| Máy gửi lặp, kết quả trùng | LIS trả ACK chậm hoặc không trả | Tăng hiệu năng ghi, kiểm tra ACK, khử trùng theo mã mẫu và thời điểm |
| Kết quả thiếu chỉ số | Chỉ số chưa khai báo ánh xạ | Bổ sung bảng đối chiếu, xem nhật ký bản ghi R hoặc OBX |
| Tên người bệnh sai dấu | Khác bảng mã ký tự | Thống nhất UTF-8, hoặc không gửi tên xuống máy mà chỉ gửi mã |
| Kết quả gắn nhầm mẫu | Gõ tay mã mẫu, mã vạch quét sai | Gắn đầu đọc mã vạch, khóa việc nhập tay |
| Kết nối chạy vài ngày rồi ngắt | Dịch vụ kết nối dừng sau khởi động lại máy | Đặt dịch vụ tự khởi động, thêm giám sát tình trạng cổng |
Mẹo thực tế: luôn bật ghi nhật ký thô (raw log) của từng thông điệp trong ít nhất vài tuần đầu. Khi có khiếu nại "kết quả này lạ", nhật ký thô cho biết máy đã gửi gì, LIS đã nhận gì, và lỗi nằm ở đâu.
Hồ sơ cần xin và việc cần làm trước ngày lắp đặt
Trước khi hãng máy cử người đến, bộ phận công nghệ thông tin nên có sẵn:
- Tài liệu giao tiếp của máy: chuẩn nào, một chiều hay hai chiều, danh sách mã chỉ số và đơn vị.
- Sơ đồ mạng nội bộ: vị trí máy, điểm đặt máy chủ LIS, quy tắc tường lửa.
- Danh mục xét nghiệm và mã dịch vụ kỹ thuật của bệnh viện đã chuẩn hóa.
- Quy ước mã vạch ống mẫu: tiền tố, độ dài, ai in.
- Người chịu trách nhiệm ký biên bản kiểm thử ở khoa xét nghiệm.
Phần lớn sự cố sau triển khai bắt nguồn từ việc thiếu một trong năm thứ này chứ ít khi do bản thân chuẩn kết nối. Muốn xem toàn bộ luồng từ chỉ định đến duyệt kết quả, đọc thêm bài hệ thống LIS là gì. Còn việc LIS đứng ở đâu so với RIS và PACS thì nằm trong bài phân biệt LIS, RIS và PACS.
MyHospital có phân hệ LIS nằm trong phần mềm quản lý bệnh viện, hỗ trợ kết nối máy xét nghiệm qua ASTM và HL7, có bảng ánh xạ mã chỉ số, nhật ký thông điệp và bước duyệt kết quả trước khi trả về bệnh án. Gửi danh sách máy đang dùng, đội kỹ thuật sẽ đối chiếu giao thức từng máy và đề xuất lộ trình kết nối.
Danh sách việc cần chốt với nhà cung cấp LIS và hãng máy
Một buổi họp ba bên (bệnh viện, nhà cung cấp LIS, hãng máy) nên kết thúc bằng các câu trả lời rõ ràng:
- Máy nào kết nối một chiều, máy nào hai chiều?
- Ai chịu trách nhiệm khi thông điệp đã gửi nhưng LIS không ghi nhận?
- Phí mở giao thức kết nối của hãng máy có tính riêng không? Một số hãng khóa tính năng này bằng giấy phép.
- Khi hãng nâng cấp phần mềm máy, ai kiểm tra lại ánh xạ?
- Có môi trường thử để chạy kiểm thử mà không ảnh hưởng dữ liệu thật không?
Ghi các câu trả lời này vào hợp đồng hoặc biên bản nghiệm thu. Sáu tháng sau, khi đổi máy hoặc thêm máy, đây là tài liệu duy nhất giúp đội kỹ thuật làm lại nhanh mà không phải dò từ đầu.