在軟體設計中,資料格式一直是最重要的一環之一。當我們設計好一個軟體,需要設計資料型別儲存資料。
資料儲存後,我們可以存在本機端或是存在伺服器。如果只是在我們自己的伺服器裡面使用,跑的都是我們自己的服務,那格式定義什麼格式都沒問題,只要自己看得懂就可以了;但如果希望將這些軟體內的格式傳給其他人,我們就需要制定格式,才可以傳給其他人。
在醫療軟體中,可以使用 FHIR 來作為軟體檔案的傳輸內容。FHIR(Fast Healthcare Interoperability Resources) 是醫療資訊交換的一套共同規格,由 HL7 制定。它幫不同系統約定資料如何表示、如何連結,讓接收方有依據理解收到的資訊。FHIR 可以用 JSON 來表示資料。JSON 是呈現的格式,FHIR 則是進一步規定資料的結構以及意義。
第一次認識 FHIR,可以先掌握三個概念:
subject 欄位中的 Reference,指向爸爸的 Patient Resource。FHIR 使用 Resource 作為基本組成單位,我們可以先把它想成「一份有明確主題、規定欄位的資料」。以先前的範例,我們可以認識三種 Resource:
| Resource | 回答的問題 | 案例中的意思 |
|---|---|---|
Patient |
這筆健康資料與誰有關? | 量體溫的爸爸 |
Observation |
觀察或量測到了什麼? | 早上八點量到體溫 37.2 °C |
Device |
已知的量測裝置是什麼? | 取得讀值的體溫計 |
| 從上面可以看到三個部分: |
讓一筆量測指向正確的人或裝置。
在前面我們透過 Resource 將人、量測結果以及裝置分開之後,接下來需要分別說明它們之間的關係。在 HL7 FHIR 中,是使用 Reference 來指向另外一個 Resource。
例如,我們可以使用 Observation.subject 寫下下面的範例,意思就是說,這筆 Observation 的量測對象指向 Patient/P-001
"subject": {
"reference": "Patient/P-001"
}
如果有建立體溫計的 device,同一筆 Observation 也可以透過 device 指向它
"device": {
"reference": "Device/DEV-001"
}
所以最後,我們可以把三份資料的關係組成一個關係圖,如下:
Observation(體溫 37.2 °C)
├─ subject → Patient/P-001(量測對象:爸爸)
└─ device → Device/DEV-001(量測裝置:體溫計1)
將全部的內容組合起來後,就會是下面的範例。請記住,現在的樣子還只是部分。
{
"resourceType": "Observation",
"id": "TEM-001",
"status": "final",
"subject": {
"reference": "Patient/P-001"
},
"valueQuantity": {
"value": 37.2,
"unit": "°C",
"system": "http://unitsofmeasure.org",
"code": "Cel"
},
"device": {
"reference": "Device/DEV-001"
}
}
今天先認識 FHIR 的基本組成:Patient 表示量測對象,Observation 表示這次量測,已知的體溫計可用 Device 表示。Observation 透過 subject 和 device 參照前兩者,讓接收資料的人知道這筆紀錄與誰、哪台裝置有關。
上面的 JSON 只示範部分欄位,還不能當作完整的 FHIR 生命徵象交換範例。接下來要補上「量到什麼」、量測時間、代碼及單位等資訊,再檢查整筆資料是否符合採用的 FHIR 版本與交換規則。