Share
Embed
Transcript
37 slides
-
About Me • Max Lai • 童綜合醫院資訊部 • 副主任 •
負責智慧醫療系統研發 • 社群經歷 • 2014年6月共同發起「Taichung.py 」Meetup • 2014年12月發起並主持「台中敏捷社群」活動 • 2015~2018年「台中敏捷之旅研討會 」主辦人 • PyCon TW 2018, 2020, 2021, 2022 投稿分享 -
童綜合醫院 • 位於臺中市梧棲區 • 臺中市海線大型區域教學綜合醫院 • 連續6次獲得 JCI 國際醫療認證 •
通過 HIMSS EMRAM 六級國際認證 -
醫師 門急住 電子 病歷 護理 收費 行政 管理 藥劑 教學
研究 檢驗 HIS 上百個子功能 !!! 醫院資訊系統 (HIS) -
• 醫院的資訊系統已運行著許多既有系統 • 有些延用幾10年的技術(ex. Informix DB, Delphi, 4GL); • 新舊系統如何無縫介接通常需要特別設計。
• 因為醫療活動持續24小時在進行 • 全部打掉重練重新開發一套系統, • 依過往業界的案例很難達成無痛轉移, • 對管理階層來說不可能投入如此龐大的資金及人力。 加入新功能或重構的挑戰 -
管路 門診護理(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 漸進式重構 -
• OpenInformix/IfxPy • 以 pyodbc 連線 Informix DB • IBM
Informix ODBC Driver + unixODBC + pyodbc 1)新舊系統資料互通 1.1 如何用 Python 查詢 Infomix DB -
Informix DB informix client UnixOdbc Pyodbc CP950 codec 0x92D1, '廔'
Image source: Text balloon icons created by Md Tanvirul Haque - Flaticon 1)新舊系統資料互通 1.2 中文罕見字自訂編碼之解譯處理 -
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 -
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 的選擇 -
① PACS/影像資料庫 報告資料庫 RIS + 即時輔助診斷 醫師產出報告 HIS Dicom PNG
AI Inference AI Model NAS ② ③ ④ ⑤ ⑥ ⑦ PyConTW20 PyConTW22 2)新舊系統無縫串接 Medical AI Inference Pipeline -
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) 事件時序記錄 -
上游系統/ 使用者介面 HTTP Proxy 部份負擔 部份負擔 單體系統 上游系統/ 使用者介面 HTTP
Proxy 部份負擔 部份負擔 單體系統 H T T P Source: 單體式系統到微服務 Web常見的漸進式轉換 3)以Strangler Pattern 漸進式重構 -
• 介面與DB資料高度耦合 • 大量的 global variables • 不支援 HTTP request
4GL 重構的難題 3)以Strangler Pattern 漸進式重構 -
上游系統/ 使用者介面 部份負擔 部份負擔 共享 資料 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 & 共享表格抽取新模組 -
管路 門診護理(Delphi) 管路 住院護理(Delphi) 管路 急診護理(Delphi) 生命 徵象 管路 整合護理
管路 微服務(Flask+Vue.js) 生命 徵象 生命 徵象 生命 徵象 • Informix + Pyodbc • 中文罕見字編碼 • Repository Pattern • 內嵌Web • 抽取共用元件 • 呼叫Delphi Python Socket Server 批價系統 4GL 部份 負擔 部份 負擔 Informix • 抽取 4GL 模組到 Socket Server Flask + Vue.js • 串連跨系統流程 逐步增加Python新功能/舊系統抽取共用模組 -
麻醉 護理 系統 ICU 護理 系統 個案 管理 系統 整合
護理 系統 CXR AI辨識 管路 微服務 輸血 登錄 門診 給藥 健檢 問卷 健檢 總評 整合 醫囑 Python Based 新系統的擴散 -
使用者 滿意度 什麼地方好用 User1 非常滿意 • 這個系統不只是麻醉紀錄,也是一個流程系統, • 而且於個案討論時,可以很清楚的看到處置的時間用藥。 User2
滿意 • 省去手寫診斷跟術式,疾病史自行帶入。 • 免去交接班上一個人字跡潦草看不懂的窘境 • 也會自己累積水量尿量那些,整體來說系統還不錯用 User3 非常滿意 • 不用在手寫診斷跟術式,病人基本資料也都幫我們帶入了,在上小 刀省了很多時間,還不用趁長刀時抓緊寫麻單 User4 滿意 • 不用手寫術式跟診斷,自動帶入病人資料真的很棒 ,對於短刀真 的很方便,也有很多片語可以使用,省去打字紀錄的時間 User5 非常滿意 • 在交班面~版面設計井然有序,交班不掉落 • 在製作PFT檔~異常個素報告字體顯示清晰 User6 滿意 • 接病人時,按照ORMS左側排列順序,一一核對各關卡,井然有序 • 提升病人安全,減少各項疏失的錯誤率 User7 非常滿意 • 節省很多寫麻單的時間, • 一個頁面就可以滿足所有需求,都有各個連結點 麻醉護理系統使用者回饋 一年節省 8人月(護理師)