Upgrade to Pro — share decks privately, control downloads, hide ads and more …

為醫療加裝Python的引擎

Max Lai
September 20, 2024

 為醫療加裝Python的引擎

PyCon TW 2024 演講簡報

Max Lai

September 20, 2024
Tweet

More Decks by Max Lai

Other Decks in Programming

Transcript

  1. About Me • Max Lai • 童綜合醫院資訊部 • 副主任 •

    負責智慧醫療系統研發 • 社群經歷 • 2014年6月共同發起「Taichung.py 」Meetup • 2014年12月發起並主持「台中敏捷社群」活動 • 2015~2018年「台中敏捷之旅研討會 」主辦人 • PyCon TW 2018, 2020, 2021, 2022 投稿分享
  2. 醫師 門急住 電子 病歷 護理 收費 行政 管理 藥劑 教學

    研究 檢驗 HIS 上百個子功能 !!! 醫院資訊系統 (HIS)
  3. • 醫院的資訊系統已運行著許多既有系統 • 有些延用幾10年的技術(ex. Informix DB, Delphi, 4GL); • 新舊系統如何無縫介接通常需要特別設計。

    • 因為醫療活動持續24小時在進行 • 全部打掉重練重新開發一套系統, • 依過往業界的案例很難達成無痛轉移, • 對管理階層來說不可能投入如此龐大的資金及人力。 加入新功能或重構的挑戰
  4. 管路 門診護理(Delphi) 管路 住院護理(Delphi) 管路 急診護理(Delphi) 生命 徵象 管路 整合護理

    管路 微服務(Flask+Vue.js) 生命 徵象 生命 徵象 生命 徵象 • Informix + Pyodbc • 中文罕見字編碼 • Repository Pattern • 內嵌Web • 抽取共用元件 • 呼叫Delphi Python Socket Server 批價系統 4GL 部份 負擔 部份 負擔 Informix • 抽取 4GL 模組到 Socket Server Flask + Vue.js • 串連跨系統流程 1.新舊系統資料互通 2.新舊系統無縫串接 逐步增加Python新功能/舊系統抽取共用模組 3.以Strangler Pattern 漸進式重構
  5. • OpenInformix/IfxPy • 以 pyodbc 連線 Informix DB • IBM

    Informix ODBC Driver + unixODBC + pyodbc 1)新舊系統資料互通 1.1 如何用 Python 查詢 Infomix DB
  6. Informix DB informix client UnixOdbc Pyodbc CP950 codec 0x92D1, '廔'

    Image source: Text balloon icons created by Md Tanvirul Haque - Flaticon 1)新舊系統資料互通 1.2 中文罕見字自訂編碼之解譯處理
  7. Informix DB informix client UnixOdbc Pyodbc tung-big5- codec 0x92D1, '廔'

    \u5ED4, '廔' 1)新舊系統資料互通 Python App 1.2 中文罕見字自訂編碼之解譯處理 自訂 Big5 UTF8 CNS 0x92D1 \u5ED4 2-4A24 廔 0xFA40 \u26C40 4-346A 𦱀 0x9041 \u741F 3-3D35 琟 reference: 中文全字庫 https://www.cns11643.gov.tw/index.jsp
  8. 2)新舊系統無縫串接 APIFlask FastAPI Underlying framework/libs Flask + Marshmallow Starlette +

    Pydantic HTTP methods @app.input(), @app.output(), @app.get(), @app.post(), etc @app.input(), @app.output(), @app.get(), @app.post(), etc Data validation built-in built-in Error message JSON format JSON format Async support Yes (less performant) Yes OpenAPI document Automatic generation Automatic generation Community Rich Smaller Download(PyPI Stats) last month: 97,448,895 last month: 60,543,770 2.0 Web Framework 的選擇
  9. ① PACS/影像資料庫 報告資料庫 RIS + 即時輔助診斷 醫師產出報告 HIS Dicom PNG

    AI Inference AI Model NAS ② ③ ④ ⑤ ⑥ ⑦ PyConTW20 PyConTW22 2)新舊系統無縫串接 Medical AI Inference Pipeline
  10. Kafka Rest Proxy X光報告 系統 Delphi 分派系統 PHP 檢驗報告 系統

    報告項目 確認系統 總評報告 系統 PHP PHP 2)新舊系統無縫串接 2.4 以事件訊息串連跨系統醫療流程 事件趨勢架構 ⑴分派X光報告 2023/7/24 16:14 ⑵X光報告完成 2023/7/25 09:43 ⑷檢驗報告完成 2023/8/08 11:09 ⑸各報告確認完成 2023/8/09 10:38 ⑶X光報告翻譯完 2023/7/25 09:45 ⑹總評報告完宬 2023/8/14 16:03 ⑺總評校稿完宬 2023/8/14 16:36 ⑴分派X光報告 2023/7/24 16:14 ⑵X光報告完成 2023/7/25 09:43 ⑷檢驗報告完成 2023/8/08 11:09 ⑸各報告確認完成 2023/8/09 10:38 ⑶X光報告翻譯完 2023/7/25 09:45 ⑹總評報告完宬 2023/8/14 16:03 ⑺總評校稿完宬 2023/8/14 16:36 Python(Web) 事件時序記錄
  11. 上游系統/ 使用者介面 HTTP Proxy 部份負擔 部份負擔 單體系統 上游系統/ 使用者介面 HTTP

    Proxy 部份負擔 部份負擔 單體系統 H T T P Source: 單體式系統到微服務 Web常見的漸進式轉換 3)以Strangler Pattern 漸進式重構
  12. • 介面與DB資料高度耦合 • 大量的 global variables • 不支援 HTTP request

    4GL 重構的難題 3)以Strangler Pattern 漸進式重構
  13. 上游系統/ 使用者介面 部份負擔 部份負擔 共享 資料 4GL 批價系統 global variables

    db index Socket: function name, db index Python Socket Server global variables db index Informix DB db index 3)以Strangler Pattern 漸進式重構 以Socket Server & 共享表格抽取新模組
  14. 管路 門診護理(Delphi) 管路 住院護理(Delphi) 管路 急診護理(Delphi) 生命 徵象 管路 整合護理

    管路 微服務(Flask+Vue.js) 生命 徵象 生命 徵象 生命 徵象 • Informix + Pyodbc • 中文罕見字編碼 • Repository Pattern • 內嵌Web • 抽取共用元件 • 呼叫Delphi Python Socket Server 批價系統 4GL 部份 負擔 部份 負擔 Informix • 抽取 4GL 模組到 Socket Server Flask + Vue.js • 串連跨系統流程 逐步增加Python新功能/舊系統抽取共用模組
  15. 麻醉 護理 系統 ICU 護理 系統 個案 管理 系統 整合

    護理 系統 CXR AI辨識 管路 微服務 輸血 登錄 門診 給藥 健檢 問卷 健檢 總評 整合 醫囑 Python Based 新系統的擴散
  16. 使用者 滿意度 什麼地方好用 User1 非常滿意 • 這個系統不只是麻醉紀錄,也是一個流程系統, • 而且於個案討論時,可以很清楚的看到處置的時間用藥。 User2

    滿意 • 省去手寫診斷跟術式,疾病史自行帶入。 • 免去交接班上一個人字跡潦草看不懂的窘境 • 也會自己累積水量尿量那些,整體來說系統還不錯用 User3 非常滿意 • 不用在手寫診斷跟術式,病人基本資料也都幫我們帶入了,在上小 刀省了很多時間,還不用趁長刀時抓緊寫麻單 User4 滿意 • 不用手寫術式跟診斷,自動帶入病人資料真的很棒 ,對於短刀真 的很方便,也有很多片語可以使用,省去打字紀錄的時間 User5 非常滿意 • 在交班面~版面設計井然有序,交班不掉落 • 在製作PFT檔~異常個素報告字體顯示清晰 User6 滿意 • 接病人時,按照ORMS左側排列順序,一一核對各關卡,井然有序 • 提升病人安全,減少各項疏失的錯誤率 User7 非常滿意 • 節省很多寫麻單的時間, • 一個頁面就可以滿足所有需求,都有各個連結點 麻醉護理系統使用者回饋 一年節省 8人月(護理師)