2019年10月30日 星期三

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



根據前篇安裝說明與步驟相信各位已經安裝好Fhirbase Server了,接下來就是測試與應用的重要階段,此篇要跟大家解說的是如何運用JASONB使用Fhirbase和FHIR資源。JSONB的工作原理不同:它以二進制形式存儲JSON文檔(這是JSONB名稱來自JSON二進製文件的來源)。以二進制形式,離散值的訪問速度比文本形式中的訪問速度快得多-無需一次又一次地解析JSON文檔。一個文檔僅被解析一次PostgreSQL將VARCHAR值強制轉換為JSONB。不利的一面是,當將原始JSON文檔保存在JSONB中時,無法保留其格式:二進制形式會丟棄空格,但是在大多數情況下,它並不重要。每個FHIR資源都有兩個資料表:一個資料表包含一個資源的當前版本,而歷史資料表包含所有以前的資源版本。如果各位想查詢資料表,可進入Terminal 視窗,利用指令進入DBA模式查詢。也可以透過Pgadmin的Web GUI介面來執行CRUD功能。


指令查詢資料表patient 紀錄



Fhirbase Table


Patient search front 100
Patient search front 100

在執行Fhirbase資料運用前,先來詳細了解一下Jasonb的語法和指令,先了解一下Jason和Jasonb相同的運算符號。
※注意
這些運算符對於jsonjsonb類型都有並行變體field/element/path提取運算符返回與其左側輸入相同的類型(jsonjsonb),但指定為returning的類型除外text,它們將值強制為文本。如果JSON輸入的結構不符合請求,則field/element/path提取運算符將返回NULL而不是失敗。例如,如果不存在這樣的元素。接受整數JSON數組下標的字段/元素/路徑提取運算符都支持從數組末尾開始的負下標。




我們以查詢患者'Aaron697'為例,下列語法會產生錯誤:
(ERROR: invalid input syntax for type JSON)
  1. SELECT resource->'name'->0->'given'->0
  2. FROM patient
  3. WHERE resource->'name'->0->'given'->0 = 'Aaron697'
  4. LIMIT 5;
PostgreSQL有嚴格的類型系統(Type System),因此它不能比較“ Aaron697”(類型VARCHAR)和JSONB值,即使它只是JSONB中的一個字串(String)。為了使此查詢正常工作,我們需要應用雙箭頭運算符(->>),返回VARCHAR而不是JSONB:->>

正確的語法指令如后:

  1. SELECT resource->'name'->0->'given'->>0
  2. FROM patient
  3. WHERE resource->'name'->0->'given'->>0 = 'Aaron697'
  4. LIMIT 5;
這句語法的意思是取得(Get)resource欄位下第0組的name下的第0組given 'Aaron697'名稱患者最少列出5筆紀錄,知道概念後,我們利用Pgadmin4 Web-GUI介面來測試一下吧!

查詢指令

產出的結果

謂詞運算符(Predicate Operators)

謂詞運算符可以在任何深度進行檢查JSON值中是否存在特定的值或鍵,並傳回True。和箭頭符號(->, #>, ->>, #>>)最大不同的是箭頭符號只使用一個Gin_Index索引,而稱謂符號是如果左側值中包含右側JSONB值,則返回TRUE:@>,如下列範例所示:

左側值中包含右側的HL7及FHIR值則回傳True。
SELECT '[“ FHIR”,“ HL7”,“ FHIRBASE”]' :: jsonb @ > '[“ HL7”,“ FHIR”]' :: jsonb ;
左側值中包含右側姓名Aaron則回傳True。
SELECT '{“ name”:[{“ given”:“ Aharon”},{“ given”:“ Aaron”}]}' ::: jsonb @ > '{“ name”:[{“ given”:“ Aaron” }]}' :: jsonb ;
在另外一例,我們可以使用查找所有表明患者符合檢驗值LOINC"72166-2"和長期吸菸SNOMED值"449868002"吸煙者的觀察值:
SELECT * FROM observation
WHERE (resource @> '{"code": {"coding": [{"code": "72166-2"}]}}'::jsonb) -- LOINC: Smoking status
AND (resource @> '{"value": {"CodeableConcept": { "coding": [{"code": "449868002"}]}}}'); -- SNOMED: Current every day smoker
此查詢大約需要100毫秒才能執行。它的速度非常快,但壞消息是,當表中有更多記錄時,查詢時間將線性增加。發生這種情況的原因是PostgreSQL對該查詢執行了順序掃描,並實際上檢查了每個觀察值是否包含指定條件。\timing
為此我們可在上創建一個GIN索引...observation.resource來優化查詢。
CREATE INDEX observation_idx ON observation USING GIN (resource);

2019年10月29日 星期二

FHIR簡介

FHIR是一個平台規範,定義了在所有司法管轄區以及許多不同情況下整個醫療保健過程中使用的一組功能。儘管FHIR規範的基礎相對簡單(請參閱概述:General,Developers,Clinical和Architects),但是在實施基於FHIR的解決方案時,仍然很難知道從哪裡開始。

為了幫助實施人員找到符合規範的方式並回答這些問題,將其組織為一組“模塊”。每個模塊代表規範的不同功能區域,並包含:

1.範圍和索引:對模塊涵蓋的內容的描述以及重要內容的索引
2.用例:該模塊的常用用法以及如何使用它們的指南。這是實施者熟悉FHIR規範的關鍵資源
3.安全/隱私:信息
4.路線圖:從整體進度的角度講,該模塊涵蓋的內容(另請參見一般信息:FHIR時間軸)

大致來說,這些模塊分為3組:

1.基礎結構(底部梯級,底部一行)
2.內容(中間橫檔,頂行框)
3.推理(上級)



級別1 建立規範的基礎框架
Level 1 Basic framework on which the specification is built

在FHIR的任何版本中定義的任何元素都會自動分配一個擴展URL,該URL唯一地標識該元素,並且可以在相關的FHIR版本中使用。元素的擴展URL可以自動派生:

實現者在使用這些擴展時應注意以下問題:
  • 存在時,實現應始終對數據使用正確的元素。版本差異映射(以及其他版本的等效版本)可以提供幫助
  • 有沒有辦法來表示在擴展型“資源”的一些特殊元素,所以這些都不是確定(如Bundle.entry.resourceDomainResource.contained等)
  • 如果復雜數據類型在早期版本中沒有等效項,請使用複雜擴展名,其中包含的擴展名也遵循此模式。對於早期版本中數據類型中找不到的任何元素,請遵循相同的模式
  • 下表顯示了跨版本的數據類型映射。應該使用映射表。
基礎模塊維護FHIR規範的大多數基本文檔此外,基礎模塊包括以下資源:


Foundation Framework

級別2 支持實施並綁定到外部規範
Level 2 Supporting implementation and binding to external specifications

供了對FHIR實施者有用的信息,包括有關可用庫,工具和其他類似資源的信息,以及在何處尋求幫助。

安全和隱私模塊描述瞭如何保護FHIR服務器(通過訪問控制和授權),如何記錄用戶已授予(同意)哪些權限以及如何保留有關執行了哪些事件的記錄(審核日誌記錄和出處) 。FHIR並沒有強制採用單一技術方法來保護安全性和隱私性;相反,該規範提供了一組構建基塊,可用於創建安全的私有系統。


一致性模塊表示有關FHIR規範的數據類型,資源和API功能的元數據,並可用於創建派生規範

該圖顯示了一致性資源


術語模塊提供了有關FHIR資源,操作,編碼數據類型以及外部定義的標準和FHIR定義的術語的概述和指南,這些術語用於表示和傳達FHIR核心規範和配置文件中的編碼結構化數據。總的來說,這些功能用於提供支持整個規範中FHIR資源中編碼數據的使用所需的術語服務功能,如其他模塊中所述。

該圖顯示了術語資源和關係

FHIR被設計為接口規範-它指定了醫療保健應用程序之間交換的數據的內容,以及如何實現和管理交換。FHIR定義了以下在系統之間交換數據的方法:
    級別3 鏈接到醫療保健系統中的現實世界概念
    Level 3 Linking to real-world concepts in the healthcare system

    管理模塊涵蓋了基礎數據,這些基礎數據隨後被鏈接到其他模塊中,用於臨床內容,財務/賬單,工作流程等。

    在可以記錄任何臨床數據之前,必須先記錄患者的基本信息,然後再記錄相互作用的基礎(例如相遇)。
    級別4 記錄保存和數據交換
    Level 4 Record-keeping and Data Exchange for the healthcare process


    該臨床模塊側重於代表患者核心臨床信息的FHIR資源。這些資源中包含的信息是醫療保健提供者在臨床護理過程中經常記錄,創建或檢索的信息。在診斷研究過程中生成的資源可以在“ 診斷”模塊中找到,而與藥物訂購和給藥過程有關的資源可以在“ 藥物”模塊中找到


    診斷模塊提供了有關FHIR內容的概述和指南,該內容解決了臨床診斷(包括實驗室測試,成像和基因組學)的訂購和報告問題。


    模塊涉及3個主要領域的資源和功能:
    • 藥品的訂購,分發,管理和藥品使用記錄記錄。
    • 在某個時間點記錄給定(或未給定)的免疫接種,給定免疫接種的評估和建議。
    • 作為藥物信息或藥物知識的一部分創建或查詢藥物。

    工作流模塊專注於協調系統內部和系統之間的活動。這包括三個主要方面:
    • 我們如何要求他人,設備或系統做某事?
    • 我們如何跟踪活動之間的聯繫和依賴性-授權活動,單個步驟的複雜活動,計劃訂單的協議等?
    • 我們如何定義可能的活動以及這些活動中步驟的預期順序和依賴性?即流程/業務流程定義

    財務模塊涵蓋FHIR提供的資源和服務,以支持醫療保健提供者內部發生的成本核算,財務交易和計費,以及醫療保健提供者與保險公司之間以及報告和報告之間發生的資格,登記,授權,索賠和付款。保險公司與訂戶和患者之間的通知。
    級別5 提供推理醫療保健過程的能力
    Level 5 Providing the ability to reason about the healthcare process

    “臨床推理”模塊提供資源和操作,以實現對臨床知識工件的表示,分佈和評估,例如臨床決策支持規則,質量度量,公共衛生指標,訂單集和臨床方案。另外,該模塊描述瞭如何在整個規範中使用表達語言來提供動態功能。
    臨床推理涉及在非常廣泛的意義上表示和編碼臨床知識的能力,以便可以將其集成到臨床系統中。該編碼可以很簡單,例如可以根據患者的病情來控制是否顯示訂單集的特定部分,也可以很複雜,例如代表具有多種疾病的患者的護理途徑。
    資源庫-內容
    圖書館資源是用於知識資產定義的通用容器。它可以用來描述和公開現有的知識資產,例如邏輯庫和信息模型描述,以及描述知識資產的集合。

    資源計劃定義-內容

    該資源允許將各種類型的計劃定義為可共享,可消耗和可執行的工件。該資源足夠通用,可以支持對各種臨床工件的描述,例如臨床決策支持規則,訂單集和協議。

    資源指導響應 -內容

    指導響應是對指導請求的正式響應,包括評估返回的任何輸出參數以及要採取的任何建議措施的說明。



















    ACCESS資料成功轉換SQlite方法

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