口述/孫培然·彙整/CIO編輯室

接下來要探討的是 CQL(Clinical Quality Language)的架構與運作原理。下圖展示了一段 CQL 的基本語法,說明其語意結構與邏輯組成方式。這段邏輯的核心在於:只要病人的健康狀態(Condition)對應到 SNOMED CT 的編碼 44054006,即可判定該病人為糖尿病患者。
從圖中可以看出,CQL 的語法非常接近自然語言,使臨床邏輯的撰寫更為直觀。整體結構可分為以下幾個部分:
- library 是用來標示這段邏輯程式的名稱與版本號,本例中名稱為 DiabetesManagement,版本為 1.0.0。
- using 語句指定這份邏輯應用於哪一種資料模型,此處使用的是 FHIR 版本 4.0.1。
- codesystem 宣告了邏輯中所使用的編碼系統,在此範例中為 SNOMED CT,其代碼系統 URL 為 http://snomed.info/sct。
- define 區塊則是整段邏輯的主體,定義了一個名為 DiabeticPatients 的邏輯集合,條件是從病人的診斷資料(Condition)中篩選出 SNOMED 代碼為 44054006(Diabetes mellitus)者。
這樣的設計使得 CQL 在撰寫臨床邏輯時既簡潔又清楚,能夠精準表達條件邏輯,同時也具備跨系統的可移植性。無論是應用在決策支援系統(CDS)、健保審查、品質指標統計或報表稽核等情境中,CQL 都能成為具備可讀性、可維護性與標準化的邏輯基石。

CQL 的三大語法特性與運用說明
CQL具備三項核心語法特性,使其成為臨床邏輯撰寫的理想工具。首先,在條件判斷與資料篩選方面,CQL 原生支援多種邏輯運算語法,例如 if、and、or、exists 等,能以接近自然語言的方式撰寫複雜條件,使臨床邏輯更具可讀性與邏輯精準度。以實際範例來說,若需定義「年齡超過 65 歲且過去一年內未接受大腸鏡檢查」的族群,只需簡潔地寫出 AgeInYears() > 65 and not exists (…),即能達成目標條件的表述,無需繁複語法轉換。
[ 加入 CIO Taiwan 官方 LINE 、 Facebook 與 IG,與全球CIO同步獲取精華見解 ]
其次,CQL 展現出極高的資料模型相容性。雖然在實務上多搭配 FHIR 使用,但其實它也支援 QDM(Quality Data Model)、OMOP(Observational Medical Outcomes Partnership)等多種模型格式。這種設計讓 CQL 能根據不同應用場域切換資料結構,只需修改 using 宣告與欄位映射方式即可,不必重構整體邏輯。無論應用於 CDS、電子病歷系統、健保審查或報表平台,CQL 都能迅速調整適配,大幅提升開發效率與邏輯移植彈性。
最後,CQL 強調邏輯的模組化與可擴展性。撰寫者可以將常用邏輯抽離為獨立模組,透過 include 指令在多份邏輯中重複引用,實現條件重用、結構統一與維護便利。此外,它支援巢狀條件、子查詢與遞迴邏輯,能靈活處理多層判斷需求,如多重併發症與藥物交互等進階情境。同時,CQL 可搭配標準或自訂的 ValueSet(如 SNOMED CT、LOINC、ICD 等),建立一致的條件範圍控制,確保判斷邏輯與標準碼對應準確。而為滿足版本控管需求,每份 CQL 均可指定版本號與語法版本,便於邏輯追蹤與審核記錄,也利於與治理平台整合,進行集中式邏輯管理與版本回溯。
這三項特性構成了 CQL 強大的邏輯表達能力,使其成為支撐智慧醫療、品質管理與跨系統整合的關鍵語言架構。
CQL 與其他標準的整合
CQL具備高度的整合能力,是現代智慧醫療系統中的關鍵邏輯語言。它不僅可與 FHIR 無縫結合,直接使用 FHIR 的資料結構如 Observation、Condition、Procedure 等資源作為判斷依據,而且跨系統之間不需要額外格式轉換,就能套用統一邏輯,顯著提升臨床邏輯的可攜性與再利用性。這樣的設計,讓 CQL 成為少數能在資料層與邏輯層都維持語意一致的語言,對於處理跨醫院、跨平台的資料尤為重要。
CQL 也能整合進 CDS Hooks 架構,將寫好的邏輯應用在臨床觸發場景中。當醫師開立處方或輸入診斷時,CQL 可以即時執行比對,若符合邏輯條件,即觸發提醒,回傳建議卡片供臨床參考。這使得整個檢核流程能從「事後統計」提升至「即時決策支援」,強化臨床流程的精準性與反應速度。
進一步來說,CQL 撰寫的邏輯可被轉譯為 ELM(Expression Logical Model),這是一種標準化的邏輯中介格式,能以 JSON 或 XML 表示,使後端的系統引擎可以自動解析與執行邏輯條件。ELM 的存在解決了 CQL 雖接近自然語言但難以直接執行的問題,讓 CQL 成為可機器運行的語言。
在品質衡量應用(Electronic Clinical Quality Measures , eCQM)方面,CQL 則扮演主邏輯語言的角色。透過它,我們可以撰寫如初始族群、分母、分子、排除條件等品質指標邏輯,用於執行醫療品質評估、生成報表、支援健保稽核與績效計算等任務。由於其標準化與模組化的特性,一套寫好的邏輯可在多個場景下重用,降低維護與轉換成本,也能確保審核邏輯的一致性與透明性。
最終,我們可以將 CQL 視為一種橫跨資料層、執行層與決策層的語言。從撰寫邏輯、轉譯成 ELM、再由系統執行、結合 CDS 即時反應、乃至於 eCQM 的審查統計,它是一套完整而通用的臨床語意邏輯平台,能支援現代智慧醫療所需的複雜決策能力與制度化管理。
CQL 與 FHIR 的整合
CQL 與 FHIR 的整合,本質上是一種邏輯層與資料層的深度耦合。FHIR 負責定義結構化的健康資料模型,而 CQL 則提供判斷邏輯與推論條件的描述語言。透過這種設計,CQL 在撰寫時可以直接引用 FHIR 預定義的資源類型,例如 Observation、Condition、Medication 等,無需自行建立資料結構或轉換格式,便能基於統一語意進行臨床邏輯設計。這種結構不僅簡化了開發流程,也強化了系統之間的語意一致性,對實現跨平台、跨醫院的決策標準具有關鍵意義。
舉例而言,我們若要判斷病人是否完成糖化血色素(HbA1c)檢查,可以透過 FHIR API 查詢 Observation?code=4548-4,取得對應的檢查紀錄。這筆資料便可即時被 CQL 套入邏輯條件,作為病人是否完成檢測的依據。這樣的設計讓邏輯引擎能即時根據實際資料執行條件比對,實現臨床決策支援的即時性與準確性。
更重要的是 CQL 和 FHIR 的分層設計,徹底解耦了資料與邏輯的耦合問題。FHIR 專注處理資料建模與交換,而 CQL 專注描述如何運用這些資料來進行邏輯推論。這種分離架構,不僅提升了系統的模組化與維護彈性,也讓同一份 CQL 腳本可以被部署於不同平台,例如醫院的 HIS 系統、CDS 決策引擎、報表產出系統等,皆能獲得一致的執行邏輯與結果。這不但提升開發效率,也有助於消除系統間因邏輯重寫或資料定義不一致所造成的錯誤與爭議。
換句話說,CQL + FHIR 的組合讓我們能夠用標準化語言處理標準化資料,在不同場域間實現「一次撰寫、全域執行」的邏輯共享與重用模式,這正是未來醫療資訊整合的核心基礎。
從 CQL 到 ELM 的轉換
CQL 撰寫完成後,會透過 CQL-to-ELM 工具進行轉譯,產出 JSON 或 XML 格式的 ELM(Expression Logical Model)。這個轉換過程,象徵邏輯從「人可理解」到「機器可執行」的轉換。簡單來說,CQL 是寫給人看的,而 ELM 則是給系統引擎讀取與執行的版本。
轉譯後的 ELM 本質上是一顆抽象語法樹(Abstract Syntax Tree, AST),每個 define 區塊都會被拆解成語法節點,並以邏輯運算、比較條件、資料參照等基本單元組成一連串的邏輯流程。這樣的結構設計使得執行引擎能逐步解析每個邏輯節點,依據實際資料進行比對與推論。
ELM 的機器可讀性與高度模組化特性,使其能廣泛應用於不同系統中重複執行與調用。無論是 FHIR Server 中的查詢條件比對、CDS 引擎中的即時決策觸發,或是 eCQM 品質衡量報表的邏輯篩選,都可以使用相同的 ELM 作為基礎邏輯模組。透過這種「一次撰寫、多端執行」的架構,不僅可大幅降低開發與維護成本,也確保了臨床邏輯在不同系統間的一致性與準確性。
CQL 與 eCQM 的關係
CQL 與 eCQM 的結合,是現代智慧醫療邏輯標準化的核心關鍵。所謂 eCQM,是指用來衡量醫療品質的電子化指標邏輯,其目的是標準化描述哪些病人應接受哪些醫療行為,以及是否已完成必要的照護項目。這些指標廣泛應用於健保條件給付的自動核查、醫院內部品質統計、積分制度、績效獎金發放,以及作為審查與評鑑制度的邏輯依據。
CQL 在其中所扮演的角色,正是撰寫與執行這些品質指標邏輯的語言工具。舉凡初始族群(Initial Population)、分母(Denominator)、分子(Numerator)與排除條件(Exclusions)等核心邏輯,都能以 CQL 精確定義,並透過 CQL-to-ELM 工具轉譯成 JSON 或 XML 格式的 ELM,讓系統引擎可讀、可執行。這套 ELM 可被部署於 FHIR 資料平台上,針對實際病人資料進行自動邏輯判斷,產出所需的品質衡量結果。

整體執行流程如圖二所示,分為六步驟。
- 第一步是撰寫 CQL,明確描述臨床邏輯條件,透過 define 區塊定義判斷依據,例如病人年齡、診斷狀態、檢查是否完成等。這些邏輯具備可讀性與語意清晰性,方便臨床人員參與審核。
- 第二步是轉譯,透過工具如 CQL-to-ELM 將語意邏輯轉為標準格式,讓系統能解譯執行。
- 第三步是部署,將產出的 ELM 作為邏輯模組載入到執行環境中,可能是 CDS 引擎、報表伺服器或 FHIR Gateway。
- 第四步則是串接資料,系統會透過 FHIR API 即時擷取 Observation、Condition、Medication 等病人資料,作為邏輯輸入來源。
- 第五步是執行比對,將實際病歷資料與 CQL 定義的條件進行邏輯比對,系統會回傳布林結果、數值、或次數等輸出,反映是否符合條件。第六步則是將這些結果回傳到指定模組,無論是提供臨床決策提示(CDS)、生成報表統計(eCQM)、或進行自動審查與記錄標記,皆可使用同一套邏輯模組來完成。
[ 閱讀 孫培然 所有專欄文章]
以 HIS 系統為例,導入流程會從加裝 CQL 模組開始,再撰寫 CQL 腳本、轉換成 ELM,並部署到 CDS 或報表引擎。當病人資料觸發邏輯條件時,系統就會自動擷取 FHIR 資料進行運算,最後回傳結果給前端提示、稽核或統計平台。如此一來,整個醫療邏輯從撰寫、部署到執行,都能實現一致化、模組化、跨系統運作,這正是 CQL 與 eCQM 結合下,智慧醫療系統最具價值的架構典範。
(本文授權非營利轉載,請註明出處:CIO Taiwan)
