Therac-25

Therac-25 là một máy xạ trị được công ty Năng lượng nguyên tử của Canada Limited (AECL) sản xuất vào năm 1982 sau các sản phẩm Therac-6 và Therac-20 (các sản phẩm trước đó đã được sản xuất trong quan hệ đối tác với CGR của Pháp).
Máy xạ trị này có liên quan đến ít nhất sáu vụ tai nạn từ năm 1985 đến 1987, trong đó các bệnh nhân được nhận quá liều bức xạ. Các lỗi lập trình đã khiến nhiều bệnh nhân bị nhiễm phóng xạ liều lượng cao gấp hàng trăm lần cho phép, dẫn đến tử vong hoặc thương tích nghiêm trọng. Những tai nạn này nhấn mạnh sự nguy hiểm có thể gây ra do thiếu kiểm soát trong những máy móc yêu cầu độ an toàn cao và trở thành đề tài nghiên cứu cho các lĩnh vực tin học y tế, công nghệ phần mềm và đạo đức nghề nghiệp. Ngoài ra sự quá tự tin của các kỹ sư và thiếu khả năng giải quyết các lỗi phần mềm được nhấn mạnh như một trường hợp cực đoan mà các kỹ sư quá tự tin với sản phẩm và không tin các khiếu nại của người dùng để gây ra hậu quả nghiêm trọng.

**Mô tả vấn đề**
Sáu tai nạn được ghi nhận xảy ra khi chùm electron năng lượng cao được tạo ra trong chế độ chụp X quang được bắn trực tiếp cho bệnh nhân. Hai lỗi phần mềm xảy ra. Lỗi thứ nhất, khi người vận hành chọn chế độ X quang không chính xác trước khi nhanh chóng chuyển sang chế độ electron, cho phép chùm electron được đặt cho chế độ chụp X quang mà không có mục tiêu X quang. Lỗi thứ hai cho phép chùm electron kích hoạt trong chế độ ánh sáng trường khi không có máy quét chùm tia nào hoạt động hoặc mục tiêu được đặt đúng vị trí.
Các mẫu máy trước có chế độ khóa phần cứng để ngăn chặn lỗi như vậy, nhưng Therac-25 đã loại bỏ chúng, hoàn toàn tin vào kiểm tra tính an toàn của phần mềm.
Chùm electron năng lượng cao được bắn vào bệnh nhân với liều lượng gấp 100 lần lượng ban đầu và gây nhiễm phóng xạ hạt beta vượt ngưỡng an toàn. Các bệnh nhân được mô tả như "bị bỏng nặng bên trong máy" hoặc "một cú giật điện mạnh". Vài ngày sau, bệnh nhân có dấu hiệu bị nhiễm độc phóng xạ với nhiều vết bỏng. Đa số các bệnh nhân đều tử vong do nhiễm phóng xạ quá liều.

**Lịch sử**
Máy tính DEC VT-100 sử dụng trong Therac-25Vào những năm 1970, AECL và CGR hợp tác để sản xuất máy xạ trị dùng trong y tế. Các công ty cho ra đời hai mẫu máy là Therac-6 và Therac-20, được phát triển dựa trên mẫu máy có sẵn là Neptune và Sagittaire của CGR và được nâng cấp bằng hệ thống DEC VT-100, xử lí bằng ngôn ngữ Assembly PDP-11. Mẫu Therac-6 chỉ có thể tạo ra chùm X quang năng lượng 6 triệu vôn electron (MeV), và mẫu Therac-20 có thể tạo ra chùm X quang và electron 20 MeV. Phần mềm ở hai mẫu này vẫn còn nhiều hạn chế, chủ yếu được sử dụng để tăng sự tiện nghi khi vận hành máy, hoàn toàn có thể hoạt động độc lập chỉ với phần cứng. Những tính năng và khoá an toàn trong máy vẫn được giữ nguyên.
Sau khi phát hành Therac-20, quan hệ giữa AECL và CGR trở nên kém bền vững, và hai bên chấm dứt hợp đồng vào năm 1981. Từ đó, AECL độc lập sản xuất máy Therac-25, được mô tả như một máy xạ trị nhỏ gọn, linh hoạt và dễ sử dụng hơn so với Therac-6, có thể tạo ra chùm năng lượng đến 25 MeV.
Therac-25 được phát triển với nhiều điểm khác biệt so với mẫu Therac-6 và Therac-20. Phần mềm của máy được phát triển trên một mẫu máy hoàn toàn mới và chưa được qua sử dụng như Therac-6 và Therac-20. Do đó, AECL cho phép phần mềm của máy đảm nhiệm sự an toàn của máy nhiều hơn, loại bỏ một vài tính năng an toàn trong phần cứng của các mẫu trước. Ngoài ra, AECL còn tái sử dụng phần mềm của mẫu Therac-20, mặc dù việc phát triển của hai phần mềm là hoàn toàn không liên quan đến nhau.
Năm 1976, AECL sản xuất mẫu Therac-25 đầu tiên và mở bán trên thị trường năm 1982. Có 11 máy Therac-25 được lắp đặt tại các bệnh viện, với 5 máy tại Hoa Kỳ và 6 máy tại Canada.
Năm 1986, lập trình viên phụ trách Therac-25 rời khỏi AECL. Các luật sư trong những vụ kiện liên quan không thể xác định danh tính hay trình độ và kinh nghiệm của lập trình viên ấy. Sau các sự cố, AECL giải thể bộ phận AECL Medical (bộ phận y tế) năm 1988 và được đổi tên thành công ty Theratronics Internation Ltd., công ty này chịu trách nhiệm cho việc bảo trì và lắp đặt Therac-25.

**Cấu tạo**
Therac-25 là máy xạ trị, hay máy gia tốc hạt tuyến tính dùng trong điều trị. Máy hoạt động bằng cách bắn chùm năng lượng phóng xạ vào một khu vực nhỏ nhất định để loại bỏ tế bào ung thư hay khối u bên trong cơ thể.
Cơ chế hoạt động của máy xạ trị (Therac-25)

**Liệu pháp xạ trị**
Therac-25 cung cấp hai chế độ xạ trị và một chế độ phụ:- Chế độ electron: Bắn một chùm tia electron năng lượng 5–25 MeV lên một khu vực nhỏ của các mô gần bề mặt da trong thời gian ngắn.- Chế độ X quang (photon): Bắn một chùm tia X năng lượng rất cao tạo ra từ va chạm của các electron 25 MeV, được truyền qua bộ lọc khuếch tán (phân tán chùm tia trên khu vực rộng hơn), ống chuẩn trực (tạo chùm tia song song đến mục tiêu) và buồng ion (kiểm soát năng lượng của chùm tia) rồi bắn thẳng vào mục tiêu, thường là các mô sâu bên trong cơ thể.- Chế độ ánh sáng trường: Chiếu một luồng ánh sáng vào mục tiêu để người vận hành thấy được vị trí chùm tia sẽ bắn vào và điều chỉnh nếu cần thiết. Không có máy gia tốc hay buồng ion nào hoạt động trong chế độ này.
Đĩa xoay của Therac-25

**Đĩa xoay**
Đĩa xoay của Therac-25 đóng vai trò quan trọng trong việc điều chỉnh loại chùm tia mong muốn để điều trị. Đĩa xoay có các vị trí cho chế độ electron, X quang và ánh sáng trường, được điều chỉnh bằng các bộ chuyển mạch vi mô lắp trên đĩa xoay và gửi thông tin về máy tính dưới dạng nhị phân 3 bit. Đĩa xoay là nơi lắp đặt những bộ phận cần thiết cho sự thay đổi chế độ của máy, bao gồm mục tiêu, bộ lọc khuếch tán, gương và nam châm dò electron. 
Ở chế độ X quang, để chùm tia X bắn lên bệnh nhân có năng lượng phù hợp, tia X cần phải đi qua bộ lọc khuếch tán và vì vậy, cần nguồn tia X năng lượng rất cao. Nếu đĩa xoay đặt sai vị trí trong chế độ X quang, nguồn tia X sẽ bị bắn thẳng vào bệnh nhân mà không đi qua các bộ phận để giảm năng lượng, gây nguy hiểm cho bệnh nhân do phóng xạ cao. Trong các mẫu máy trước, đĩa xoay sẽ bị khoá cố định nhờ pít tông cơ học khi đặt ở đúng vị trí trước khi điều trị, nhưng ở Therac-25, cơ chế này được thay bằng hệ thống an toàn trong phần mềm.

**Phần mềm**
Giao diện chương trình của Therac-25Therac-25 được điều khiển qua hệ thống DEC VT-100, xử lí bằng ngôn ngữ Assembly PDP-11. Giao diện chương trình của Therac-25 cho phép người vận hành điều chỉnh các thông tin phù hợp cho việc điều trị bằng máy, bao gồm điều chỉnh loại tia, năng lượng tia, liều lượng và tốc độ tia, thời gian điều trị, góc nghiêng bắn tia và kích thước của ống chuẩn trực. Theo quy trình, người vận hành cố định bệnh nhân trên giường điều trị, điều chỉnh vị trí bàn xoay, góc nghiêng và thiết bị phụ trợ bằng tay, sau đó rời khỏi phòng điều trị và nhập các thông tin cần thiết trên máy tính. Máy tính khi đó so sánh giá trị vừa nhập vào với giá trị thực tế, nếu chính xác thì máy tính thông báo "Xác nhận" và tiến hành điều trị, nếu không thì máy không cho phép điều trị cho đến khi lỗi được sửa lại. Do sự phức tạp của việc nhập dữ liệu, AECL sau này cho phép người vận hành chép lại thông tin đã nhập và sử dụng lại cho lần tiếp theo, hoặc in ra một bản thông tin phiên bản hay dữ liệu đã nhập vào máy.
Trong trường hợp lỗi nghiêm trọng nhất, Therac-25 sẽ ngừng hoạt động bằng cách treo máy hoàn toàn và cần phải khởi động lại máy. Tuy nhiên, trong đa số trường hợp, Therac-25 sẽ tạm dừng, khi đó người vận hành có thể bỏ qua bằng cách nhấn nút "P" và tiến hành điều trị nhanh chóng, tất cả dữ liệu đã nhập được giữ nguyên và không cần khởi động lại máy. Therac-25 cho phép người vận hành bỏ qua lỗi tối đa năm lần (sau này giảm xuống ba lần) trước khi máy treo và cần khởi động lại.
Lỗi xảy ra trong máy sẽ hiện thông báo và tuỳ vào độ nghiêm trọng sẽ treo hoặc tạm dừng máy. Những lỗi này gây khó hiểu và không được giải thích trong hướng dẫn sử dụng hay đề cập ở bất cứ đâu trong máy. Các lỗi bao gồm "H-tilt", "V-tilt", "No Dose" (không có liều), "Low Dose Rate" (tốc độ liều thấp) và "MALFUNCTION" kèm số 1–64.

**Tai nạn**
Trong năm 1985–1987, có sáu vụ tai nạn xảy ra được ghi nhận liên quan đến Therac-25 tại bốn bệnh viện khác nhau, với đa số các nạn nhân tử vong do nhiễm độc phóng xạ.

**Trung tâm Ung thư học Kennestone, 1985**
Ngày 3 tháng 6 năm 1985, Katherine (Katie) Yarborough, 61 tuổi, đến Trung tâm Ung thư học Kennestone ở Georgia, Hoa Kỳ để điều trị cắt bỏ khối u vú. Bệnh nhân được điều trị bằng phương pháp xạ trị bắn chùm electron 10-MeV trên máy Therac-25 (đã đi vào hoạt động được sáu tháng). Khi máy được bật lên, cô cảm thấy "bị đốt bởi một luồng nhiệt dữ dội". Nhân viên phụ trách khi đó cho rằng việc này là bất khả thi, và vùng được điều trị chỉ cảm thấy ấm.
Katie được trở về nhà, nhưng sau đó phải nhập viện trở lại do vùng điều trị bị sưng đỏ và làm co thắt cơ vai. Hai tuần sau, vùng da bị ảnh hưởng bắt đầu bong tróc và có dấu hiệu bỏng. Kết quả giám định cho thấy bệnh nhân bị nhiễm độc phóng xạ, nhưng nguyên nhân gây ra vẫn chưa được làm rõ.
Bệnh nhân lúc đầu chỉ cần nhận 200 rad phóng xạ để điều trị, nhưng các thí nghiệm cho thấy lượng phóng xạ ước tính mà Katie nhận được trong khoảng 15.000–20.000 rad, gấp 100 lần lượng phóng xạ phải được nhận. Một bên vú của Katie cần phải bị cắt bỏ, một bên vai và tay của bệnh nhân không thể sử dụng được vì nhiễm nặng phóng xạ.

**Hiệp hội Ung thư Ontario, 1985**
Ngày 26 tháng 7 năm 1985, Frances Hill, 40 tuổi, đến bệnh viện ở Ontario, Canada để điều trị ung thư biểu mô ở cổ tử cung lần thứ 26. Khi đang được điều trị bằng Therac-25, màn hình máy tính xuất hiện lỗi "No Dose" (không có liều thuốc) mặc dù chùm tia vẫn được bắn, người vận hành nhấn nút "P" để tiếp tục năm lần, bắn tổng cộng 17.000 rad lên bệnh nhân. Bệnh nhân cảm thấy bị bỏng và bị giật điện ở vùng hông. Ba ngày sau, bệnh nhân quay trở lại với dấu hiệu bị bỏng, đau hông và vết sưng nặng ở vùng điều trị, và được đặt trong tình trạng cấp cứu ngày hôm sau.
Frances Hill tử vong vào ngày 3 tháng 11 năm 1985 do ung thư, nhưng khám nghiệm tử thi cho thấy nếu bệnh nhân không tử vong do ung thư, toàn bộ vùng hông của bệnh nhân sẽ cần phải bị thay thế do phóng xạ.

**Bệnh viện Yakima Valley Memorial, 1985**
Tháng 12 năm 1985, một bệnh nhân bị bắn phóng xạ liều lượng quá mức nguy hiểm ở vùng hông ở bệnh viện tại Washington, Hoa Kỳ, nhưng may mắn không để lại nhiều thương tích và kết thúc điều trị vào ngày 6 tháng 1 năm 1986.

**Trung tâm Ung thư Đông Texas, tháng 3 năm 1986**
Ngày 21 tháng 3 năm 1986, Voyne Ray Cox đến trung tâm Ung thư Đông Texas ở Texas, Hoa Kỳ để điều trị cắt khối u ở lưng lần thứ chín. Bệnh nhân được kế hoạch điều trị bằng chùm electron 22-MeV và nhận tổng cộng 6.000 rad. Nhân viên phụ trách đặt ông ở phòng điều trị và ra ngoài điều chỉnh thông số cho máy. Nhân viên vô tình điều chỉnh máy ở chế độ "X" (X quang) thay vì chế độ "E" (electron) nên chỉnh lại và, lần đầu tiên được ghi nhận, "MALFUNCTION 54" xảy ra, nhưng nhân viên vẫn tiếp tục. Ông Cox được miêu tả như "bị một cơn giật điện dữ dội trên lưng", cố đứng dậy và đập cửa phòng điều trị để chạy ra ngoài. Khi đó do hệ thống âm thanh và ghi hình của phòng điều trị bị hỏng nên nhân viên đã không nghe thấy ông la hét. Bệnh nhân ước tính bị bắn 16.500–25.000 rad hai lần vào vùng lưng. Ray Cox qua đời năm tháng sau do nhiễm độc phóng xạ.

**Trung tâm Ung thư Đông Texas, tháng 4 năm 1986**
Ngày 11 tháng 4 năm 1986, ba tuần sau vụ Ray Cox xảy ra, Verdon Kidd, 66 tuổi, đi đến trung tâm để điều trị ung thư da ở mặt. Tại đây, "MALFUNCTION 54" xảy ra lần thứ hai. Bệnh nhân cho biết ông "bị thứ gì đó đập vào mặt", "thấy một chớp sáng" và "nghe tiếng xèo xèo như chiên trứng". Verdon Kidd rơi vào hôn mê và qua đời vào ngày 1 tháng 5 năm 1986.

**Bệnh viện Yakima Valley Memorial, 1987**
Ngày 17 tháng 1 năm 1987, Glen Dodd, 65 tuổi, tử vong sau ba tháng khi sử dụng Therac-25 để chữa trị ung thư biểu mô, do bị nhiễm phóng xạ mức độ 10.000 rad so với 86 rad như ban đầu.

**Nguyên nhân**
Các vụ tai nạn xảy ra do một loạt những sai phạm trong quá trình thiết kế phần cứng lẫn phần mềm và quá trình thử nghiệm độ an toàn sơ sài và tự động. Ngoài ra, sự quá tự tin của các kĩ sư trong công ty đã khiến cho nhiều khiếu nại của người dùng bị bác bỏ một cách phi lý, dẫn đến nhiều tai nạn không đáng có xảy ra nhiều hơn.

**Sự chủ quan**
AECL không tiến hành kiểm tra đánh giá độc lập chương trình phần mềm của máy, dựa hoàn toàn vào chương trình đã được xây dựng sẵn ở các mẫu trước, bao gồm cả hệ điều hành của máy.. AECL không xem xét cách vận hành của phần mềm máy và thử nghiệm lỗi có thể xảy ra, tập trung hoàn toàn vào việc đánh giá chất lượng phần cứng và khẳng định rằng phần mềm không có lỗi. Các đơn khiếu nại của máy bị bác bỏ bởi kĩ sư công ty khi cho rằng máy không có khả năng cho quá liều và lỗi gây ra do người vận hành, khiến cho tai nạn xảy ra nhiều hơn. AECL chưa từng thử nghiệm sự vận hành của phần cứng và phần mềm của máy cùng lúc cho đến khi nó được lắp đặt tại bệnh viện. Chương trình máy tính của máy được viết bởi một lập trình viên không chuyên duy nhất, không rõ danh tính hay trình độ. Mặc dù Therac-25 chứa nhiều lỗi cần giải quyết, FDA vẫn tin tưởng và cấp phép cho máy hoạt động trong điều trị cho đến khi sự cố lần thứ sáu xảy ra.

**Lỗi máy**

**Chức năng phần mềm**
Đa số các tai nạn xảy ra do sự mơ hồ về lỗi và cách xử lí trong môi trường cần độ chuẩn xác cao. Ở Therac-25, các thông báo lỗi của máy chỉ được thông báo với chữ "MALFUNCTION" kèm theo số từ 1 đến 64. Các lỗi này không được miêu tả hay giải thích trong hướng dẫn sử dụng, cũng như không cho biết mức độ rủi ro của lỗi khi vận hành. 
Một số lỗi của phần mềm có thể ngắt mọi hoạt động của máy và yêu cầu khởi động lại, một số khác chỉ tạm dừng máy và cho phép người vận hành bỏ qua lỗi và tiếp tục bằng cách nhấn nút "P". Tuy nhiên, những lỗi gây nguy hiểm đối với bệnh nhân chỉ yêu cầu tạm dừng máy, và việc nhiều lỗi không quan trọng xảy ra thường xuyên khiến cho việc người vận hành bỏ qua lỗi trở thành thói quen.Mô phỏng quy trình bấm máy của "MALFUNCTION 54" trên Therac-25Trong số những lỗi đó, "MALFUNCTION 54" là một trong những lỗi nghiêm trọng xảy ra khi quy trình bấm máy trên chương trình VT-100 trên máy tính PDP-11 được thực hiện như sau: Người vận hành nhấn nút "X" (sai) để chọn chế độ chụp X quang, sau đó sử dụng phím "Lên" để chỉnh lại thành nút "E" (đúng) để chọn chế độ electron và nhấn "Enter". Các nam châm phụ trách việc phóng các chùm tia mất 8 giây để chuẩn bị vận hành, vì thế, nếu người vận hành thực hiện tất cả quy trình thay đổi trên trong vòng 8 giây (hoàn toàn có thể xảy ra với một người có kinh nghiệm), sự thay đổi chế độ sẽ không được máy ghi nhận, khiến cho máy thực hiện chế độ "X" như ban đầu.
Ngoài ra, phần mềm có chức năng kiểm tra lỗi bằng biến cờ hiệu, khi đó máy chỉ vận hành khi biến có giá trị là không. Tuy nhiên biến được thay đổi bằng cách tăng giá trị, thay vì gán nó với một giá trị khác không nhất định. Nếu số lần thay đổi vượt quá bộ nhớ của biến, hiện tượng tràn số xảy ra và quay ngược biến về không, bỏ qua mọi lỗi trong phần mềm.

**Kiểm soát an toàn**
Mẫu máy sử dụng lại nhiều cơ chế và phần mềm của Therac-6 và Therac-20, nhưng sự tương thích giữa chúng với Therac-25 không được kiểm tra và đảm bảo. Ở các mẫu cũ, các khoá phần cứng được lắp đặt để ngắt hoạt động của máy ngăn chặn các lỗi phần mềm xảy ra; nhưng trong mẫu Therac-25, nếu lỗi phần cứng xảy ra thì không có cách nào để nhận biết, vì thế các lỗi bị bỏ qua.
Nhìn chung, mẫu máy không có bất kì một loại khoá nào để kiểm tra sự giống nhau giữa chế độ được vận hành của phần mềm và phần cứng, cũng như kiểm tra mục tiêu ở đúng vị trí khi bắn chùm electron. Phần cứng của máy không có cách nào để phần mềm kiểm tra cảm biến đang hoạt động đúng. Hệ thống đĩa xoay thuộc phần cứng của máy được cho là bị lỗi, nhưng thay vì sửa phần cứng thì các kĩ sư thêm phép kiểm tra dư thừa cho phần mềm.

**Bài học**
Trong một thiết bị có độ chuẩn xác cao, tai nạn hầu như không bao giờ do một nhân tố duy nhất quyết định, mà là một tổ hợp các lỗi lầm khác nhau về yếu tố kỹ thuật, con người và tổ chức. Vì thế, tất cả các yếu tố cần phải được xem xét, thay vì đổ lỗi cho nhân tố con người.
Để đảm bảo an toàn cho người dùng từ các vụ tai nạn liên quan đến Therac-25, tiêu chuẩn IEC 62304 được tạo ra, quy định tiêu chuẩn về vòng đời của các phần mềm thiết bị y tế và hướng dẫn vận hành an toàn.

**Liên kết ngoài**
 Levenson, Nancy (1995).  “Safeware: System Safety and Computers. Appendix A: Medical Devices: The Therac-25” (PDF). Addison-Wesley.-  Leveson, Nancy G., and Turner, Clark S. (July 1993). "An Investigation of the Therac-25 Accidents," Computer (IEEE), 26(7):18-41.-  Short summary of the Therac-25 Accidents

**Tham khảo**
Thể loại:Thảm họa y tế
Thể loại:Lỗi phần mềm