實作這塊,有點不好意思,程式碼還是不方便公布。簽了保密,還是保守點。除非老闆說可以。所以,這邊只好用別人的東西來展示。
CDS Services
CDS Hooks在Github上的資料也不少,網址:CDS Hooks (github.com)。
進到docs裡的wiki頁面,可以找到一些對外公開的CDS Services。注意是在Example CDS Services。CDS Services for testing的東西都不能用。
裡面有很多不同Cards的實作。
CDS Hooks Sandbox
這就是所謂的CDS Client,可以是EMR。反正就是會讓使用者去叫用CDS Services介面的東西。
FHIR Server
原則上EMR應該會配有FHIR Server。但我們測試是用Sandbox,不會有FHIR Server,我們得找一個。我是用Sandbox建議的FHIR Server:https://launch.smarthealthit.org/v/r4/fhir 。選哪個都無所謂,但建議還是以R4為準。
首先你要確認你所選擇的FHIR Server有支援,你在Prefetch Template所叫用的FHIR Resource。否則,你怎麼死的都不知道。
用Postman當然是最好的工具,問題是要打什麼指令呢?
- Get {based url}/{Resource} : 看看回來什麼東西。注意如果有Bundle回來,但筆數為0,表示這台Server有支援此Resource,只是現在沒有資料。
- Get {based url}/metadata:這個會回傳CapabilityStatement。在rest/resource,就會列出所有支援的Resource。其實,這個CapabilityStatement還有其他非常重要的資訊。就舉個最重要的吧。他們會把OAuth資訊放在這。這超出本系列的範圍了,但這真的很重要。
Patient ID
如果,有仔細閱讀此系列文章的話,應該知道Hooks的意義,以及Patient ID的重要性。你得要先確保,你的Prefetch Template所叫用的FHIR Resource,真的有這個Patient。否則你可能會不知道錯在哪兒。還有一個大前提,你要引用的Resrource得要與Patient(Subject)有關才可以用。
怎麼確認?還是用Postman。假設我要引用MedicationRequest。我們就用這個ID吧:2744ab6f-91dd-4e4f-8208-fe52ee2c27d1
那要怎麼知道,這個Patient有多少份MedicationRequest呢?MedicationRequest不是對應於處方箋唷,他只對應於一項藥品。所以,encounter就很重要,抱歉R4才支援。就當是作業吧。
進行驗證程序
假設您已經開啟CDS Hook Sandbox。畫面可能已經會有東西了,我們先把他清除掉。
開啟視窗後,把每一項都刪除吧。
沒有服務了,但左邊還有之前的病患資料。
設定FHIR Server
將系統建議的FHIR Server版次改為R4即可。記得要按Next。設定Patient
上一步驟按Next就會開啟Change Patient的畫面。當然,也可從右上的選單中選擇。將我們找好的Patient ID貼上去。記得按Save。
到這邊總算完成了基礎設定的工作。原則上,變動機率不大啦。除非你想換另一台FHIR Server。一換FHIR Server,那Patient當然也要換。
加入CDS Services
這邊要注意一下,依據CDS Hooks規範,第一階段是Discovery,但並非所有的系統環境有支援。像EPIC就沒有,作法就會有不同。
CDS Hooks Sandbox有支援,所以你的CDS Server有幾隻CDS Services他都會全部抓回來。EPIC則是需要自己輸入CDS Services。