本文主要根據James Agnew - Introduction to HAPI | DevDays 2023 Amsterdam的演講內容並參考HAPI官網內容做快速整理。
每一個Resource都有對應的Class,透過各自的getter/setter function來設定與讀取該Resource所對應的properties。
Childe Clasee: 多數的getter function會自動產生child class,
代碼處理
Chain
FHIR定義了所有的基本資料型態,不使用Java既定的data type。主要原因是因為FHIR允許Extension,使用Java既定的data type會受到限制。
FhirContect Class是所有FHIR API的進入點,由於相當耗資源,因此必須為唯一(Singleton ?)。
Client可以從FhirContext產生,可以執行CRUD等相關資料操作。
BaseServerResponseException Package提供完整清單
https://hapifhir.io/hapi-fhir/apidocs/hapi-fhir-base/ca/uhn/fhir/rest/server/exceptions/BaseServerResponseException.html
共計三種:Plain Server(Facase Layer,可與醫院既有資料庫結合)、JPA Server、JAX-RS(不討論)
在HTTP Request/Response的過程中,透過Hook將處理邏輯內嵌進去,在Client收到回傳資料之前,對input/output做再處理。目前HAPI FHIR Built-in的Interceptors包括:
包含兩種Validation: