2019年11月9日 星期六

Fhirbase公測伺服-測試篇2/2



業務規則查詢

現在,當我們知道如何使用基本的JSONB運算符時,讓我們編寫範例查詢以獲取一些有用的數據。假設我們正在開發一個EHR系統,該系統需要在某些屏幕上顯示高危患者列表。高風險標準如下:
  1. 年齡> 45歲
  2. 前吸煙者或活躍吸煙者

範例寫了一個查詢吸煙者的觀察結果。對其進行修改,使其包括過去的吸煙者:實施第三個條件後,讓我們將此查詢與一個患者表結合起來以實現第一個和第二個條件:

SELECT DISTINCT(p.id), p.resource#>'{name,0}'
FROM patient p
JOIN observation o ON o.resource#>>'{subject,id}' = p.id
WHERE (o.resource @> '{"code": {"coding": [{"code": "72166-2"}]}}'::jsonb)
-- LOINC: Smoking status
AND ((o.resource @> '{"value": {"CodeableConcept": { "coding": [{"code": "449868002"}]}}}') 
-- SNOMED: Current every day smoker
OR (o.resource @> '{"value": {"CodeableConcept": { "coding": [{"code": "8517006"}]}}}')) 
-- SNOMED: Former smoker
 AND (extract(year from age(now(), (p.resource->>'birthDate')::date)) > 45) -- patient's age > 45
 AND (p.resource->>'gender' = 'male'); -- patient gender is male
在此對語法解釋一下如何取出年齡部分,(p.resource->>'birthDate')為其強制轉換為PostgreSQL的DATE類型。::datePatient.birthDate,並將DATE類型接受FHIR格式的日期。函式age(DATE, DATE)返回一個INTERVAL值,該值表示兩個時間戳之間的時間距離,取回患者的年齡。age(NOW(), (p.resource->>'birthDate')::date)>45
令人驚訝的是,我們剛剛發現60名高危患者。並不難,對吧?


沒有留言:

ACCESS資料成功轉換SQlite方法

最近忙於系統開發研究,今日來談一下有朋友很有才華自行利用ACCESS開發了CRM(客戶關係管理)系統,但僅限於個人使用考量目前大量使用者成長與需求,洽詢我是否能技術支援同時給了我ACCESS檔案參考,但因電腦OFFICE沒有ACCESS可開啟.accdb檔案,相信有許多微軟OFF...