學習FHIR SDK的第一個挑戰往往是如何建立一個合適的測試環境,這份工作,同時包含伺服器架設與測試資料產生。本文說明如何應用Docker快速建立HAPI FHIR Server與使用Synthea產生測試資料。
系統已經安裝Docker Desktop
由於容器相關技術已經非常成熟,特別是對於測試環境的建立,Docker是最佳選擇。最單純的做法是使用docker-compose.yml,設定成功之後即可重複使用。測試環境將使用HAPI FHIR JPA Server,資料庫則採用Postgres。
基本的docker-compose.yml範例如下:
由於是測試環境,密碼就直接寫在docker-compose.yml中,正式環境需要採用更安全的作法。YAML檔案內容很直接清楚,就不多做說明,唯一例外是hibernate.dialect,如果不是使用Postgres,相關設定就必須修改。
在"命另提示字元"下與Docker-compose.yml相同的目錄底下執行
就可以啟動測試環境,包含HAPI FHIR與Postgres
由於HAPI FHIR有些特殊功能(動態匯入IG、IPS、CR等)並不適用於每一個應用場景,因此會透過環境變數將相關功能enable或disable
FHIR另一個特殊應用就是和已經存在的IG結合,提供資料驗證功能。根據IG是否於registry.fhir.org註冊,相關的設定如下:
設定匯入TW Core IG很明顯開機時間會拉長,完成後可以從管理畫面觀察到TW Core IG相關的Resource都已匯入。
建立FHIR Server之後,另一個問題就是測試資料。由於醫療資料具有高度的機敏性,並不適合以實際資料作為練習,所以使用合成資料(Synthetic Data)有其必要性。Synthea為一個開源軟體之醫療資料產生器,官網資料如下:
https://synthetichealth.github.io/synthea/#home
Synthea產生的資料,預設目錄是/output/fhir。該目錄底下會有一個醫院訊檔案(以hospitalInformation開頭)、一個醫事人員檔案(以practitionerInformation)以及多個Patient檔案(以上述指令為例,雖然預計產生十筆病患資料,但由於模擬過程中,病患可能死亡,因此病患資料可能大於10筆)。
可以用以下HAPI FHIR Java SDK程式碼將資料一起匯入剛建立的HAPI FHIR Server。
由於所有資料都是FHIR Bundle格式,也可以使用REST API POST指令將資料一筆一筆匯入。
HPAI FHIR已經和Swagger整合,輸入http://localhost:8080/fhir/swagger-ui/#
就可以進入相關畫面:
以Parient為例,點選Patient之後,就可以看到以下畫面。若不想查詢Resource的Search Parameter,使用Swagger UI也是一個替代方案。
也可以直接在此頁面測試API
FHIR REST API介紹
International Patient Summary (IPS)
HAPI FHIR介紹