當EHR叫用cds-services得知目前CDS Server支援了哪些CDS項目。接著就依據Id名稱,正式叫用服務。但,這時候已經把兩邊搞的天翻地覆了。
EHR要依據CDS Hooks端的要求,把所有資料準備好,接著用POST方式叫用服務。
CDS Hooks端收到資料後,就得開始找出真正提供CDS服務者。這個過程有點複雜,因為使用的Hooks不同,FHIR Resource會出現在不同的地方。另外,會有Reference Datatype的問題,不過這個可以在一開始Prefetch時,把查詢的URL先搞定。
這篇只說明呼叫時的運作,還沒有到CDS Service。
程式
===== Call Service ====
根據CDS Hooks的規範書可知,選定服務後在/cds-services/{service.id} 。
32: 需要一個負責回應Card內容的類別Responses,呼叫啟始設定函數InitHook()。
33: 再呼叫GetResponseContent()。注意,這個函數要處理很多事情,包含去呼叫對應的CDS,然後產生適當的Card出來。
40~44: 這是要符合CDS Hooks規範要求。
===== Hooks =====
這裡的重點不是函數本身,而他ParseRequestModel();
prefectch與fhirAuthorization。避免複雜fhirAuthorization部份不實做。
利用ParseRequestModel()來拆解內容,並給後續步驟使用。
還有一個因素是FHIR Resource都有可能在Context與Prefectch中。前者是草稿中,後者是已結案的。
===== Responses.GetResponseContent() =====
目前這個函數的內容是暫時的,因為真正提供CDS服務的類別還沒完成,所以Card的內容都不會有。
這邊使用到一個CardService,他是用來與CDS溝通,並產生Card類別提供給EHR端。目前先用他的一個產生空白Card的函數。
這邊使用到一個CardService,他是用來與CDS溝通,並產生Card類別提供給EHR端。目前先用他的一個產生空白Card的函數。
這邊有個CardModel,這是依據CDS Hooks規範要求所設計。
===== CardModel =====
這個類別以後會很複雜,目前就單純先給個CreateEmptyCard的還是來做驗證之用。
測試
===== BMICalculation =====
沒有留言:
張貼留言