2018年12月14日 星期五

HL7 FHIR Server初體驗 - 查詢篇 - 前傳

寫完了前兩篇,總有意猶未盡的感覺。因為,根本還沒探索到核心。
真正好玩與感受其強大的地方,在於調閱查詢機制。
為了要玩弄調閱查詢技術,若無基礎知識,也很難進行下去。
故本篇設定為調閱查詢之前傳。
==========
為了讓查詢更加豐富,endpoint轉到官方提供的平台:https://vonk.fire.ly/
前端工具仍然使用Postman
==========
查詢官方文件:http://www.hl7.org/fhir/search.html
這份文件是針對整體性的查詢條件設定,這是對所有Resource有效。另有一份更恐怖的文件是針對各別Resource能有什麼參數可以設定的說明。
查詢參數官方文件:http://www.hl7.org/fhir/searchparameter-registry.html
其實這篇文件是把散布在各Resource文件中,關於查詢參數條件之彙整。
查詢真的有點複雜,本篇目標不是教懂各位,不可能逐一說明。重點在學會觀念與邏輯,可以直接上Server操弄資源。
==========
就實際操作面來說,所謂查詢參數是URI後面能加的東西,一般是用在GET。每一組查詢參數結構是name=value。第一個查詢參數的前面要加"?",參數與參數間要加"&"。
GET語法
 GET [base]/[type]?name=value&...{&_format=[mime-type]}}
查詢的精華在這張表,首先得看懂這張表。


  1. 第一欄是說,各Resource轄下的Element,都有各自資料型態定義。我們要針對這個欄位進行查詢(各資源有哪些欄位可以查詢得參考各資源的文件,或者參考查詢參數文件),得先看看他是什麼資料型態,再根據資料型態,我們可以下哪些查詢條件與格式。所謂查詢條件,就是只大於、等於、區間等等。所謂格式,例如日期,總得說年月日是怎麼安排的。
  2. 第二欄所提供的查詢參數是適用於所有Resource。其中有個_id比較特殊,實作上一般都會用Routing定義給處理掉(不懂?那得去看一些Web API的書)。
  3. 第三欄位是針對查詢結果進行定義。
=========
舉日期(Date/DateTime)這個為例。首先他的格式就要先講清楚。

The date parameter format is yyyy-mm-ddThh:mm:ss[Z|(+|-)hh:mm] (the standard XML format).

再來是條件。(有點麻煩)
有兩個觀念要先講Modifiers與Prefixes。

Modifiers

Modifiers有:Missing, exact, text, in, below, above, not-in。
Modifiers其實就是Suffixs,接在name之後的東西。(別忘了,查詢參數的結構是name=value)
例如:
gender:missing
他的意思就是指要找資源中,gender內容是空值者。

Prefixes

Prefixes主要是針對欄位型態是number, date與quantity者。
有:eg, ne, gt, lt, ge, le, sa, eb, ap。

好,這時候應該看懂下列查詢條件了。
[parameter]=eq2013-01-14
[parameter]就是某個可以被查詢,而且資料型態是日期者。我們要找等於2013年01月14日者。
也許你會問,前面不是有個"=",怎麼還要"eq"。
若有這個疑問,我就很頭大了。

沒有留言:

張貼留言