前面介紹了FHIR和HAPI Server,不過在正式實作前再來了解一下FHIR的數據格式吧!
FHIR格式的資料主要以JSON(fhir-json)和XML格式傳遞及存儲。
FHIR資料是以Resource形式來存儲的,將所有的資料以單元的形式儲存,需要取用時再互相關聯他們,一個Resource就是一個單元資料,可以依Patient ID或Organization ID當作Key值,來關連到其他的資料。
舉例來說,病患的測量數值(Observation)在建立時就會有個Patient ID的數值,在進行搜尋時可以用Patient ID這個Key值來搜出所有含有這個Patient ID的測量數值(Observation)。
具體各Resource的規範在FHIR的官方網站上(https://hl7.org/fhir/),台灣在先前的疫情時,衛福部也有出過相應的IG(Implement Guide),與官方網站的非常相似,可以優先參考衛福部的IG(https://twcore.mohw.gov.tw/ig/twcore/)。
目前FHIR推出的版本有: R5、R4B、R4、R3、R2。R5最新,R2最舊,目前最流通使用的版本是R4,接下來的文章也會以R4版本為主。
以下是FHIR JSON格式的測量數據(Observation),以血糖為例。
{
"resourceType": "Observation",
"id": "f001",
"text": {
"status": "generated",
"div": "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p><b>Generated Narrative with Details</b></p><p><b>id</b>: f001</p><p><b>identifier</b>: 6323 (OFFICIAL)</p><p><b>status</b>: final</p><p><b>code</b>: Glucose [Moles/volume] in Blood <span>(Details : {LOINC code '15074-8' = 'Glucose [Moles/volume] in Blood', given as 'Glucose [Moles/volume] in Blood'})</span></p><p><b>subject</b>: <a>P. van de Heuvel</a></p><p><b>effective</b>: 02/04/2013 9:30:10 AM --> (ongoing)</p><p><b>issued</b>: 03/04/2013 3:30:10 PM</p><p><b>performer</b>: <a>A. Langeveld</a></p><p><b>value</b>: 6.3 mmol/l<span> (Details: UCUM code mmol/L = 'mmol/L')</span></p><p><b>interpretation</b>: High <span>(Details : {http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation code 'H' = 'High', given as 'High'})</span></p><h3>ReferenceRanges</h3><table><tr><td>-</td><td><b>Low</b></td><td><b>High</b></td></tr><tr><td>*</td><td>3.1 mmol/l<span> (Details: UCUM code mmol/L = 'mmol/L')</span></td><td>6.2 mmol/l<span> (Details: UCUM code mmol/L = 'mmol/L')</span></td></tr></table></div>"
},
"identifier": [
{
"use": "official",
"system": "http://www.bmc.nl/zorgportal/identifiers/observations",
"value": "6323"
}
],
"status": "final",
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "15074-8",
"display": "Glucose [Moles/volume] in Blood"
}
]
},
"subject": {
"reference": "Patient/f001",
"display": "P. van de Heuvel"
},
"effectivePeriod": {
"start": "2013-04-02T09:30:10+01:00"
},
"issued": "2013-04-03T15:30:10+01:00",
"performer": [
{
"reference": "Practitioner/f005",
"display": "A. Langeveld"
}
],
"valueQuantity": {
"value": 6.3,
"unit": "mmol/l",
"system": "http://unitsofmeasure.org",
"code": "mmol/L"
},
"interpretation": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation",
"code": "H",
"display": "High"
}
]
}
],
"referenceRange": [
{
"low": {
"value": 3.1,
"unit": "mmol/l",
"system": "http://unitsofmeasure.org",
"code": "mmol/L"
},
"high": {
"value": 6.2,
"unit": "mmol/l",
"system": "http://unitsofmeasure.org",
"code": "mmol/L"
}
}
]
}
ResourceType是指這筆資料的格式,如先前所說,FHIR資料是以Resource為單元進行儲存,所以每個Resource會有各自的類別,血糖因為是單純的測量數據,所以歸類在Obeservation這個類別。
subject裡的reference為Patient/f001,代表這筆數據是來自ID為f001的病患。
performer裡的reference則為Practitioner/f005,代表這筆數據是由ID為f005的Practitioner所測量的。
valueQuantity則是這筆資料的數據,包含數值及單位。
明天會開始介紹HAPI Server的實作了!!! 敬請期待!