SNOMED CT 工具 (SNOMED CT Tools)¶
目前對外 SNOMED 入口為 4 個工具:search_snomed_concept、query_snomed_concept、get_snomed_relationships、query_snomed_mapping。
維護模式:管理後台把
snomed模組切到維護模式時,本組工具呼叫會立即回傳isError結果,錯誤碼MODULE_MAINTENANCE(error.message英文、error.message_zh正體中文,error.module為模組鍵),約 5 秒內生效;工具仍留在tools/list中。詳見 API 參考。
search_snomed_concept¶
英文臨床詞彙搜尋 SNOMED 概念候選。
何時使用¶
當你只有文字詞彙(還不知道 concept ID)時先用它找候選。此工具以全文 + embedding 的分數感知混合排序(比對每個概念所有有效名稱:FSN 與同義詞),回傳最接近語意的概念,不只限完全字面匹配;完全等於某名稱的概念優先,停用(inactive)概念排在後面。
參數¶
| 參數名 | 型別 | 必填 | 說明 | 範例 |
|---|---|---|---|---|
query |
string | 是 | 英文臨床詞彙 | "diabetes mellitus" |
limit |
integer | 否 | 回傳上限(預設 3,上限 10) | 5 |
hierarchy_filter |
integer | 否 | 只回傳某概念(通常是頂層階層的 concept ID)的 IS-A 後代 | 404684003 |
回傳重點¶
每筆含 concept_id、fsn、preferred_term、active 與 hierarchy_tag,適合拿來挑選下一步要查的 concept;完整資料用 query_snomed_concept。
hierarchy_filter 的行為¶
hierarchy_filter 限定為該概念本身與其 IS-A 後代(自身也算)。全文那一半一律是該階層內最佳的字面匹配;向量那一半依階層大小而定:
- ≤ 1,000 個概念(例如 Heart structure):對階層內每個概念做精確向量比對(與未過濾時同樣的排序方式)。
- > 1,000 個概念(例如 Body structure 42,697、Procedure 59,616、Substance 27,725):沿 HNSW 向量索引走訪並只保留階層成員,走訪上限 1,000 筆。成員判斷靠
snomed.concept_ancestors(每個概念的 IS-A 祖先集合,匯入時建立)做一次主鍵查詢。這讓有過濾的搜尋和未過濾的花費相當(先前精確掃描整個大階層要 40–130 秒);代價是當查詢詞與該階層毫無字面或語意關聯時(例如在 Substance 階層查 "fracture of femur"),可能回傳較少或空結果,而不是該階層中「最不遠」的概念。
snomed.concept_ancestors 尚未建立(未套用 migration 20261028_snomed_concept_ancestors.sql)時,會改用每次展開後代集合的方式,結果相同、但每次多花 0.2–0.5 秒(熱快取)。
query_snomed_concept¶
一次取得概念本體與階層脈絡(父/子)。
何時使用¶
你已經有 concept ID,想一次看 concept 詳情 + 祖先 + 子概念時使用。
參數¶
| 參數名 | 型別 | 必填 | 說明 | 範例 |
|---|---|---|---|---|
concept_id |
integer | 是 | SNOMED concept ID | 73211009 |
include_parents |
boolean | 否 | 回傳祖先鏈,預設 true |
false |
include_children |
boolean | 否 | 回傳直接子概念,預設 true |
false |
parent_limit |
integer | 否 | 祖先展開上限,預設 10,上限 20 | 20 |
child_limit |
integer | 否 | 子概念展開上限,預設 20,上限 200 | 50 |
回傳重點¶
固定有 concept;依參數附帶 ancestors、children 與對應 count。
get_snomed_relationships¶
查詢非 IS-A 屬性關聯(語意屬性)。
何時使用¶
想看臨床語意屬性而不是階層關係時用它,例如 finding site、causative agent、associated morphology、has active ingredient。
參數¶
| 參數名 | 型別 | 必填 | 說明 |
|---|---|---|---|
concept_id |
integer | 是 | SNOMED concept ID |
relationship_type_id |
integer | 否 | 只回傳某一種關聯類型(例如 363698007 finding site) |
回傳 {concept_id, relationship_count, relationships},依關聯類型分組,每組附易讀標籤與目標概念清單。
query_snomed_mapping¶
ICD ↔ SNOMED 雙向 mapping 單一入口。
mode 說明¶
mode="icd":keyword視為 ICD-10 code,回傳snomed_concepts。mode="snomed":keyword可放數字 concept ID 或英文詞彙。- 純數字:直接用 concept ID mapping(不走 embedding)
- 文字:先做 SNOMED 搜尋找最佳 concept,再 mapping(此步會用 embedding)
參數¶
| 參數名 | 型別 | 必填 | 說明 | 範例 |
|---|---|---|---|---|
mode |
string | 否 | icd 或 snomed,預設 icd |
"icd" |
keyword |
string | 是 | ICD code、concept ID 或英文詞彙 | "E11.9", "44054006" |