2021年2月8日 星期一

CDS Hooks 實作驗證

實作這塊,有點不好意思,程式碼還是不方便公布。簽了保密,還是保守點。除非老闆說可以。所以,這邊只好用別人的東西來展示。

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當然是最好的工具,問題是要打什麼指令呢?
  1. Get {based url}/{Resource} : 看看回來什麼東西。注意如果有Bundle回來,但筆數為0,表示這台Server有支援此Resource,只是現在沒有資料。
  2. 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。
輸入CDS Service的Endpoint。還記得前面所建議的CDS Server嗎?
當你按下Save按鈕時,就是驗證奇蹟的時候。

結果

所有細節就不多說了。等待有緣人吧。

沒有留言:

張貼留言