• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

CTP 去識別化 ID 對照表使用教學與範例

介紹如何使用 CTP 的 ID 對照表功能,依據事先定義的 ID 轉換清單,將 DICOM 影像中的含有 PHI 資訊的 ID 資料轉為匿名化或假名化的 ID 識別碼。

CTP Lookup Table 格式

CTP 的對照表(lookup table)功能可以讓 DICOM Anonymizer 在進行去識別化處理時,依據使用者定義的對照表將病人的 PHI 資料(例如 PatientID)轉換為匿名化或假名化的 ID 識別碼,以便連結同病人的其他類型資料。

CTP 對照表的格式為一行一筆資料,格式如下:

類型/原始ID=去識別ID

由於 CTP 對照表可以同時存放多種類型的 ID 對照表,所以在每一筆資料的開頭必須指定資料的類型,類型的命名可以是任何文字(但不能是冒號、等號或空白),DICOM Anonymizer 會依據類型連進行 ID 轉換。

若遇到事先已經轉換好的 ID,也可以在對應表中使用以下格式來設定:

..已去識別ID=

以下是一個簡單的 CTP 對照表範例,包含了 PatientID 的對照資訊(ptid 是自訂的類別,代表用於 PatientID 的轉換):

#LookupTable.properties
#Mon Oct 25 09:19:57 CST 2021
ptid/8989193730=ABC001
ptid/9189822998=ABC002
..9894340694=

依據這張對應表,DICOM Anonymizer 會進行以下轉換:

  • ptid 類型的 8989193730 轉換為 ABC001。
  • ptid 類型的 9189822998 轉換為 ABC002。
  • 9894340694 維持不變。

以下我們將示範如何將這張對應表應用在 CTP 的 DICOM Anonymizer 去識別化流程中。

DICOM Anonymizer 使用對照表

DICOM Anonymizer 可以搭配以下幾種方式,依據 CTP 對照表進行 ID 轉換。

@lookup 函數

如果在一個專案中,不是所有的資料或影像都由 CTP 統一處理,只有一部分的 DICOM 影像使用 CTP Anonymizer 做去識別化,這種情況下通常在處理所有資料的去識別化之前,會先建立一張整體的去識別化 ID 對照表,所有的資料都根據這張表來進行去識別化,統一去識別化後的 ID 編碼,以利串接不同的資料。

在這樣的情況下,就適合使用 CTP Anonymizer 的 @lookup 函數,依據 ID 對應表來轉換 DICOM 影像中的 ID,其語法如下:

@lookup(ElementName,KeyType)

其中 ElementName 為 DICOM 標籤名稱,而 KeyType 則為對照表中的資料類型,此函數會根據 ElementName 的內容,依據對應表中 KeyType 類型的對應進行資料轉換,如果遇到對應表中查不到的值,則該 DICOM 影像就會隔離出來,存放在隔離目錄中。

若要依據上面的對照表範例,轉換 PatientID 的資料,可以這樣寫:

@lookup(PatientID,ptid)

若這個函數用於 PatientID 本身,則可以用 this 的寫法(代表目前的 DICOM 標籤):

@lookup(this,ptid)

@lookup 函數還有另外一種形式的語法:

@lookup(ElementName,KeyType,action)

這種形式多了一個 action 參數,可用來定義在對應表中查不到值的時候,預設的處理方式,可用的選項有:

  • remove:移除 DICOM 標籤。
  • keep:保留 DICOM 標籤內容,不更動。
  • empty:清除 DICOM 標籤內容。
  • skip:跳過去識別化步驟。
  • default:以預設值取代,若使用此參數,則必須在第四個參數指定預設值。
  • ignore:以正規表示法處理,若使用此參數,則必須在第四個參數指定正規表示法。

更詳細的說明可以參考 DICOM Anonymizer 的說明。

@integer 函數

如果專案中所有的資料與影像都統一由 CTP 來處理去識別化,這種狀況就可以考慮使用 @integer 函數對所有資料的 ID 自動重新編碼,而不需要另外預先建立 ID 對照表。

@integer 函數可以自動依序產生 ID 編號,其使用方式如下:

@integer(ElementName,KeyType,width)

其中 ElementName 為 DICOM 標籤名稱,而 KeyType 則為資料類型,而 width 則是產生編號的位數。

假設若想產生 001、002、003 這樣的 ID 編號作為去識別化的 PatientID,可以這樣寫:

@integer(this,ptid,3)

這裡的 KeyType 跟 @lookup 中的 KeyType 作用有些差異,此處的以 KeyType 區隔資料類型的用意在於讓不同資料在產生 ID 編號時不會互相干擾。舉例來說,若 PatientID 採用 @integer(this,ptid,3) 產生 001、002、003 這樣的編號,而 PatientName 則可採用 @integer(this,ptname,3) 同樣產生 001、002、003 這樣的編號,兩邊的編號就可以完全獨立,不會因為互相干擾產生錯誤。

@hashptid 函數

@hashptid 函數可以透過 MD5 雜湊的方式,將原始 ID 轉換為去識別化的 ID,其語法如下:

@hashptid(siteID,ElementName,maxCharsOutput)

其中 siteID 是機構或地點的 ID,ElementName 為 DICOM 標籤名稱,@hashptid 函數會依據這兩個資訊計算出 MD5 雜湊碼,轉為 10 進位的數字之後,輸出長度在 maxCharsOutput 以內的數字。

若要以 @hashptid 依據指令稿定義的 SITEID 與目前的 DICOM 標籤內容,產生長度不超過 16 的雜湊碼,則可以這樣寫:

@hashptid(@SITEID,this,16)

根據 DICOM 規範 PatientID 的長度不可以超過 64,所以如果要以 @hashptid 產生去識別化的 PatientID,maxCharsOutput 最大只能設為 64。

IDMap

如果影像資料在透過 CTP 進行去識別化之後,需要保留原始 ID 與去識別化 ID 的對照表,可以在 Dicom Anonymizer 之前加入一個 IDMap 處理步驟,將原始 ID 與去識別化 ID 的對照表儲存下來,詳細說明請參考 IDMap 的說明文件。

參考資料

  • MIRC:The CTP Lookup Table Editor
  • MIRC:DICOM Anonymizer Configuration for Assigning Subject IDs

分類:免費工具 標籤:DICOM, RSNA MIRC Clinical Trials Processor(CTP)

主要資訊欄

搜尋

近期文章

  • Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤
  • Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例
  • Linux 網路設定 ip 指令用法教學與範例
  • Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例
  • Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例
  • Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例
  • Linux 以 Cryptsetup 與 LUKS 加密磁碟教學與範例
  • Linux 使用 age 簡潔的加密、解密工具使用教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide