A:hover {color: red; font-weight: bold}

MỘT SỐ VẤN ĐỀ KỸ THUẬT PHẦN MỀM

Phần mềm quản lý bệnh viện dùng để quản lý số liệu bệnh viện đồng thời hỗ trợ bác sĩ trong quá trình làm hồ sơ bệnh án. Do đó, phần mềm không chỉ là công cụ thu thập và tính toán dữ liệu mà còn phải có các tính năng hỗ trợ cho công việc hàng ngày của người dùng.


  1.  

Tóm tắt

Ngoài yếu tố thành phần chức năng, hệ thống phần mềm còn khác biệt nhau về tính năng. 

Tương tự với việc mua một chiếc xe hơi, các chiếc xe đều trông giống nhau với 4 bánh, vô lăng, ghế ngồi… nhưng thật sự giá trị giữa các chiếc xe là hoàn toàn khác nhau do những thuộc tính bên trong của nó. Những thuộc tính này quan trọng tùy thuộc trình độ chuyên môn và kinh nghiệm xử lý vấn đề của nhà cung cấp. Một trong những vấn đề mà các phần mềm gặp phải là tính năng trừ ảo số lượng thuốc tồn kho, nguy cơ trì trệ hệ thống và sập mạng khi dữ liệu tăng dần, hoặc các yêu cầu về kết nối nhiều đơn vị ở các địa phương khác nhau.

Chúng ta đã nói đến các chức năng của phần mềm quản lý bệnh viện. Các chức năng phần mềm này phải đáp ứng yêu cầu công việc hàng ngày của người dùng. Phần mềm cũng có các tính năng không mang chức năng nào nhưng rất quan trọng, gọi là tính năng phi chức năng. Các tính năng phi chức năng này được người dùng cảm nhận: Phần mềm dễ dùng không? Chạy “mượt” không? Tương thích với nhiều hệ điều hành không? Có bị no dữ liệu sau một thời gian vận hành không? Bố trí giao diện có hợp lý không? Tìm kiếm một chi tiết trong dữ liệu có dễ không...

Những tính năng phi chức năng này quan trọng đối với người dùng khi sử dụng. Nếu thiết kế dở, thiếu các tính năng này thì phần mềm mang lại bực bội cho người sử dụng.

Những phần mềm “mới”, do các nhà cung cấp non kém thường ít tính năng phi chức năng. 

Những phần mềm đã “từng trải” ở các bệnh viện lớn và lâu đời sẽ có nhiều tính năng phi chức năng vì trong quá trình triển khai, vận hành thực tế, người dùng sẽ góp ý và nhà cung cấp sẽ thay đổi cách lập trình để phần mềm chạy “mượt” hơn. 

Những tính năng phi chức năng quan trọng:

Nhiều cảnh báo cần được đưa ra trong quá trình làm việc. Việc cảnh báo từ phần mềm sẽ giúp cho người sử dụng thực hiện đúng thao tác, đúng quy trình, tránh sai sót khi nhập liệu.

Tóm tắt

Phần mềm được soạn thảo để công việc chạy đúng quy trình. 

Chưa đủ. Phần mềm phải xử lý cả các trường hợp người sử dụng sai quy trình.

Bạn hình dung những chiếc xe đang chạy trên đường, đúng luật giao thông. Xe chạy đúng chiều, đúng làn đường, dừng lại khi đèn đỏ và chạy khi đèn xanh... một cách có trật tự. Tình trạng lưu thông sẽ ổn định khi tất cả các xe đều chạy đúng luật giao thông. Bỗng dưng có một xe chạy ngược chiều, xe khác vượt đèn đỏ, xe khác nữa lấn làn đường… Ngay sau đó xảy ra các vụ va chạm và dẫn đến ùn ứ giao thông. Để xử lý, người ta phải làm thêm các hàng rào cứng giữa các làn đường để chống lấn đường. Làm thêm một thanh chắn ngay tại đèn đỏ để chống xe vượt đèn đỏ, ghi camera để phạt người vi phạm… nhằm ép buộc người tham gia lưu thông phải đi đúng luật, không thể tùy tiện. 

Phần mềm cũng vậy. Các trình tự nhập liệu và xử lý số liệu được sắp xếp theo một quy trình định sẵn. Nếu người dùng nhập liệu theo đúng kịch bản thì hệ thống sẽ cho ra kết quả theo ý muốn. Tuy nhiên, trong thực tế không hề xảy ra như vậy. Hàng loạt câu chuyện “bất quy tắc” có thể xảy ra. 

Ví dụ: 

Tất cả các tình huống đó phải được kiểm soát một cách chặt chẽ, từ đó việc nhập liệu mới “đàng hoàng” và cơ sở dữ liệu không bị nhiễu loạn.

Tình trạng dữ liệu rác sẽ ảnh hưởng lớn đến thống kê số liệu về sau.

Lỗi này thường gặp ở các lập trình viên non tay nghề và nhà cung cấp thiếu kinh nghiệm. 

Trong thực tế, nhà cung cấp không thể phát hiện được hết các tình huống bất ngờ mà người dùng gây ra để validate. Việc kiểm lỗi dù rất chi tiết cũng bỏ sót tình huống. Chỉ khi đưa vào ứng dụng thực tế, lỗi mới phát sinh và được thông báo về cho nhà cung cấp thì các lỗi này mới được ngăn chặn. 

Chữ tiếng Việt phức tạp hơn chữ tiếng Anh ở chỗ có dấu. Vì có dấu nên xảy ra các tình huống dị biệt do cách đặt vị trí của dấu trong chữ và vì cách chọn bộ chữ Unicode dựng sẵn hay tổ hợp.

Ví dụ: Chữ Thúy có thể bị gõ thành Thuý, với dấu sắc đặt ở chữ y. Việc dùng bộ tìm kiếm (search) chính xác khi gõ “Thúy” sẽ không thể tìm ra dữ liệu có chữ “Thuý”. Trong thực tế không thể bắt ép người nhập liệu hoàn toàn đúng chuẩn. Nếu dùng kỹ thuật search loại bỏ dấu tiếng Việt thì sẽ phải chấp nhận kết quả không chính xác. Khi gõ tìm “Thúy” sẽ cho các kết quả Thuy, Thùy, Thuỳ, Thủy, Thuỷ, Thúy, Thuý, Thụy, Thuỵ… 

Tóm tắt

Source code hay còn gọi mà mã nguồn, là kịch bản để tạo nên phần mềm xử lý quy trình và số liệu. Source code được “viết” theo nhiều ngôn ngữ khác nhau, công cụ lập trình khác nhau, quy trình xử lý khác nhau.

Source code có thể hiện diện dưới dạng mở hoặc đóng gói. 

Người ta sẽ khuyên bạn nên thương lượng với nhà cung cấp để trao cho bạn source code để bạn có thể sửa lỗi hoặc mở rộng tính năng cho phần mềm khi cần thiết mà không phụ thuộc vào nhà cung cấp. Tuy nhiên, điều đó là lo quá xa bởi vì dù bạn có nắm được source code thì bạn cũng chẳng thể thuê một lập trình viên khác sửa code được. Nếu lập trình viên đó có thể sửa code được thì tốt nhất bạn thuê LTV đó viết mới phần mềm tốt hơn.

Một số bệnh viện có nhân viên IT giỏi, có khả năng đọc code và lập trình. Các nhân viên này thường “ngứa nghề”, tham gia sửa trực tiếp trên mã nguồn. Đây là điều cực kỳ tệ hại cho cả đôi bên. Khi xảy ra sự cố phần mềm thì công ty phần mềm sẽ quy trách nhiệm cho bệnh viện vì đã can thiệp vào mã nguồn gây hại cho hệ thống.

Khi ký hợp đồng “mua phần mềm” thì hợp đồng sẽ ghi là mua/bán quyền sử dụng phần mềm vì thực chất là bệnh viện chỉ mua tính năng sử dụng của phần mềm chứ không mua mã nguồn phần mềm.

Dữ liệu bệnh án cần được bảo đảm không bị xóa mất. Có nhiều nguyên nhân có thể gây ra tình trạng mất dữ liệu làm ảnh hưởng đến công tác lưu trữ, báo cáo, thống kê và bảo toàn dữ liệu: sự cố thiên tai như sét đánh, hacker, ramsomware… 

Các giải pháp bảo đảm dữ liệu bao gốm:

Vật liệu và vị trí lưu trữ cũng đóng một vai trò quan trọng:

Tuy nhiên, các vấn đề trên đây không còn quan trọng nữa khi ứng dụng điện toán đám mây. Một hệ thống máy tính khổng lồ liên kết nhau để bảo đảm cho vấn đề lưu trữ kể trên.

Vấn đề bảo mật cho hệ thống phần mềm cần bảo đảm 2 yêu cầu lớn:

Chống đánh sập hệ thống:

Chống trộm dữ liệu:

Các bác sĩ phải sử dụng máy tính để nhập liệu khi kê đơn, xử trí cho bệnh nhân. Nhiều bác sĩ không có khả năng nhập liệu, lười tìm hiểu phần mềm, ngại khó… đã giao cho y tá trợ giúp nhập liệu. Điều này dẫn đến một số vấn đề mới phát sinh:

Do đó, phần mềm cần hỗ trợ cho bác sĩ các tiện ích để bác sĩ có thể tự tay nhập liệu, vui với công việc gõ máy tính và tiết kiệm thời gian nhập liệu để có thời gian tiếp xúc với bệnh nhân.

Theo biểu đồ trên, thời gian bác sĩ dành cho bệnh nhân chỉ còn 32%. Do đó, cần có giải pháp giúp cho bác sĩ không mất nhiều thời gian cho máy tính.

Các tiện ích hỗ trợ nhập liệu dành cho bác sĩ bao gồm:


 

Khi nhập liệu, có những danh sách gồm nhiều tiết mục phải kê khai. Công việc này lặp đi lặp lại nhiều lần làm mất thì giờ người nhập liệu.

Việc nhập liệu có thể là gánh nặng trong công việc sử dụng máy tính. Mặc dù user có kỹ năng nhập liệu nhanh nhưng nếu phần mềm được thiết kế hợp lý sẽ tiết giảm công sức nhập liệu và tránh gây trùng lặp, nhầm lẫn dữ liệu.

Việc làm tròn số là một trong những vấn đề hóc búa của hệ thống CNTT y tế, nhất là khi phải đồng bộ số liệu với hệ thống BHYT. Ta biết rằng toán học cũng có những lỗ hổng không xử lý được bằng máy móc mà phải được người dùng linh hoạt xử lý. Ví dụ: ta lấy 10 chia cho 3 thì được một số thập phân dài vô tận: 3.3333… Nếu dùng số này để nhân lại với 3 thì ta được con số mới là 9,9999… chứ không phải là 10 như ban đầu. Do vậy, một con số sau một quá trình tính toán sẽ có thể xảy ra sai lệch. Tùy theo quy ước về làm tròn số mà việc sai lệch này có thể ít hay nhiều.

Quy định làm tròn số của kế toán: một trong những nguyên tắc của kế toán là sao y bản chính, nghĩa là chứng từ có sao thì ghi lại y như vậy, không được sửa đổi. Tuy nhiên, trong một số trường hợp nếu không xử lý số liệu ngay từ đầu thì sẽ dẫn đến sai lệch nặng nề

Làm tròn đầu vào: 

Trong đấu thầu thuốc, các công ty sử dụng mánh khóe làm giảm con số vài chục đồng cho lô hàng trị giá hàng tỷ đồng. Số giảm có tỳ lệ rất ít nhưng lại là ưu thế trong đấu nhau về giá. 

Ví dụ: Công ty A chào giá thầu là 1 tỳ đồng cho 1 triệu viên thuốc, như vậy giá một viên thuốc sẽ là 1 tỷ chia cho 1 triệu, bằng 1 nghìn đồng.

Công ty B chảo giá thầu là 999.999.990 đồng cho 1 triệu viên thuốc y hệt như vậy. Nghĩa là công ty B có giá thầu "rẻ" hơn công ty A 10 đồng. Vâng, chỉ 10 đồng thôi, nhưng được xem là rẻ và được bệnh việc chấp nhận.

Khi nhập lô hàng của công ty B thì giá vốn của một viên thuốc sẽ là 999,999 đồng (nếu làm tròn đến 3 chữ số). Và do nguyên tắc kế toán, nhập sao để y vậy, con số này sẽ theo đơn bán hàng xuất cho bệnh nhân. Trong khi nếu nhập hàng của cty A, thì số tiền của viên thuốc sẽ là 1.000 đồng tròn trịa. Nhiều nơi không thấy được vấn đề này.

Để xử lý, bệnh viện phải làm tròn ngay đầu vào, biến số tiền vốn 1 viên thuốc từ 999,999 đồng tháng 1.000 đồng.

Làm tròn đầu ra:

Việc làm tròn số đầu ra đôi khi là vấn đề nan giải nếu không quy định thống nhất quy tắc làm tròn số:

Nhân viên IT bệnh viện không phải là người tạo ra phần mềm mà là người giúp bệnh viện vận hành hệ thống. Nếu phần mềm được lập trình tốt thì nhân viên IT sẽ rất nhẹ gánh. Nếu phần mềm không lập trình tốt thì nhân viên IT sẽ phải tốn nhiều công sức trong quá trình vận hành.

Bên cạnh những tiện lợi do hệ thống máy tính mang lại cho hoạt động và quản lý bệnh viện, có những vấn đề nan giải mà nhân viên IT bệnh viện rất quan tâm:

Các vấn đề do lập trình phần mềm:

Các vấn đề tai nạn hệ thống:

 CẨM NANG CÔNG NGHỆ THÔNG TIN Y TẾ

01. Lời nói đầu
02. Cấu trúc phần mềm quản lý bệnh viện
03. Những vấn đề về CNTT của bệnh viện
04. Các thuật ngữ
05. Các vấn đề về tính năng phần mềm
06. Một số vấn đề về kỹ thuật phần mềm
07. Các tiện ích CNTT quản lý bệnh viện
08. Cách chọn phần mềm quản lý bệnh viện
09. Cần chuẩn bị gì cho triển khai hệ thống phần mềm?
10. Chuẩn dữ liệu
11. Số liệu thống kê và khai thác dữ liệu
12. Chi phí cho phần mềm
13. Kinh nghiệm triển khai phần mềm
14. Vấn đề đào tạo kiến thức CNTT y tế
15. Xây dựng một hệ thống y học điện tử quốc gia
16. Tác giả - BS. PHAN XUÂN TRUNG
17. Sơ lược về hệ thống phần mềm YKHOANET