使用自然語言處理從醫療保健數據中自動去除PHI
醫療保健研究的最低必要標準和PHI
下健康保險攜帶與責任法案(HIPAA)根據最低必要標準,hipaa涵蓋的實體(如醫療係統和保險公司)必須做出合理努力,確保獲得受保護健康信息(PHI)的權限僅限於實現特定使用、披露或請求的預期目的所需的最低必要信息。
在歐洲,GDPR列出了公司在分析或共享醫療數據之前必須滿足的匿名化和偽匿名化要求。在某些情況下,這些要求超出了美國的規定,還要求公司對性別身份、種族、宗教和工會從屬關係進行修訂。幾乎每個國家對敏感的個人和醫療信息都有類似的法律保護。
處理個人可識別健康數據的挑戰
諸如此類的最低必要標準可能會對推進人口層麵的保健研究造成障礙。這是因為醫療保健數據的大部分價值在於半結構化敘事文本和非結構化圖像,其中通常包含難以刪除的個人可識別的健康信息。例如,這樣的PHI使得組織內的臨床醫生、研究人員和數據科學家很難注釋、訓練和開發能夠預測疾病進展的模型。
除了合規性之外,在分析之前對PHI和醫療數據進行去標識的另一個關鍵原因(特別是對於數據科學項目)是防止偏見和從虛假相關性中學習。刪除患者的地址、姓氏、種族、職業、醫院名稱和醫生姓名等數據字段,可以防止機器學習算法在進行預測或建議時依賴這些字段。
自動化PHI刪除與Databricks和約翰雪實驗室
醫療保健自然語言處理(NLP)領域的領導者John Snow Labs和Databricks正在合作,通過一係列針對常見NLP用例的Solution Accelerator筆記本模板,幫助組織大規模處理和分析其文本數據。你可以在我們之前的博客中了解更多關於我們合作的信息,自然語言處理在大規模衛生文本中的應用.
為了幫助組織自動刪除敏感的患者信息,我們構建了一個用於去除PHI的聯合溶液加速器它建立在醫療保健和生命科學數據庫湖屋的基礎上。John Snow Labs在開源Spark NLP庫的基礎上提供了兩個商業擴展,這兩個擴展對去身份識別和匿名化任務都很有用,在這個Accelerator中使用:
- 用於醫療保健的Spark NLP是世界上最廣泛使用的NLP庫,用於醫療保健和生命科學行業。Spark NLP for Healthcare經過優化,可在Databricks上運行,以最先進的精度大規模無縫提取、分類和構建臨床和生物醫學文本數據。
- 火花OCR為各種視覺圖像任務(包括文檔理解、表單理解和信息提取)提供生產級、可訓練且可擴展的算法和模型。它擴展了核心庫分析數字文本的能力,也可以讀寫PDF和DOCX文檔,以及從圖像中提取文本——無論是在這些文件中,還是從JPG、TIFF、DICOM和類似格式中。
下麵是解決方案加速器的高級演練。
實際的PHI去除
在本解決方案加速器中,我們將向您展示如何從醫療文檔中刪除PHI,以便在不泄露患者身份的情況下共享或分析這些文檔。以下是工作流的高級概述:
- 構建一個OCR管道來處理PDF文檔
- 使用NLP模型從非結構化文本中檢測和提取PHI實體
- 使用模糊處理去識別數據,例如PHI文本
- 在可視化文檔視圖中使用編校去標識PHI
你可以訪問筆記本獲取解決方案的完整演練。
通過OCR解析文件
作為第一步,我們從雲存儲中加載所有PDF文件,為每個文件分配一個唯一的ID,並將生成的dataframe存儲到Lakehouse的Bronze層中。注意,原始PDF內容存儲在二進製列中,可以在下遊步驟中訪問。
在下一步中,我們從每個文件中提取原始文本。由於PDF文件可以有多個頁麵,因此更有效的方法是先將每個頁麵轉換為圖像(使用PdfToImage()),然後對每個圖像使用ImageToText()從圖像中提取文本。
#轉換PDF文檔為每頁圖片pdf_to_image = PdfToImage()\.setInputCol (“內容”)\.setOutputCol (“圖像”)#運行OCRocr = ImageToText()\.setInputCol (“圖像”)\.setOutputCol (“文本”)\.setConfidenceThreshold (65)\.setIgnoreResolution (假)
ocr_pipeline = PipelineModel(stages=[pdf_to_image,光學字符識別])
與SparkNLP類似,transform是Spark OCR中的標準化步驟,用於對準任何與Spark相關的轉換器,可以在一行代碼中執行。
Ocr_result_df = ocr_pipeline.transform(pdfs_df)
請注意,您可以直接在筆記本中查看每個單獨的圖像,如下所示:
應用此管道後,我們將提取的文本和原始圖像存儲在DataFrame中。請注意,圖像、提取的文本和原始PDF之間的鏈接是通過雲存儲中的PDF文件路徑(和唯一ID)保存的。
通常,掃描的文檔質量較低(由於圖像傾斜,分辨率較差等),導致文本不準確,數據質量較差。為了解決這個問題,我們可以在sparkOCR中使用內置的圖像預處理方法來提高提取文本的質量。
偏斜校正和圖像處理
下一步,我們處理圖像以增加可信度。Spark OCR具有ImageSkewCorrector它檢測圖像的傾斜並旋轉它。在OCR管道中應用此工具有助於相應地調整圖像。然後,通過應用ImageAdaptiveThresholding工具,我們可以根據局部像素鄰域計算一個閾值掩碼圖像,並將其應用於圖像。我們可以添加到管道中的另一種圖像處理方法是使用形態操作。我們可以用ImageMorphologyOperation它支持侵蝕(去除物體邊界上的像素),膨脹(為圖像中對象的邊界添加像素)、開幕(從圖像中刪除小物體和細線,同時保留圖像中較大物體的形狀和大小)及關閉(與打開相反,用於填充圖像中的小孔).
刪除背景對象ImageRemoveObjects可以用來以及添加ImageLayoutAnalyzer以管道為例,分析圖像並確定文本的區域。我們完全開發的OCR管道的代碼可以在加速器中找到筆記本.
讓我們看看原始圖像和修正圖像。
經過圖像處理後,我們有一個更幹淨的圖像,置信度增加了97%。
現在我們已經校正了圖像偏度和背景噪聲,並從圖像中提取了校正後的文本,我們將得到的DataFrame寫入Delta中的Silver層。
提取和混淆PHI實體
一旦我們完成使用Spark OCR來處理文檔,我們就可以使用臨床命名實體識別(NER)管道來檢測和提取文檔中感興趣的實體(如姓名、出生地等)。我們在一篇文章中更詳細地討論了這個過程上一篇博文從實驗室報告中提取腫瘤學見解。
然而,臨床記錄中通常有PHI實體,可用於識別個體並將其與已識別的臨床實體(例如疾病狀態)聯係起來。因此,在文本中識別PHI並混淆這些實體非常關鍵。
這個過程有兩個步驟:提取PHI實體,然後隱藏它們;同時確保結果數據集包含對下遊分析有價值的信息。
與臨床NER類似,我們使用醫學NER模型(ner_deid_generic_augmented
)來檢測PHI,然後我們使用“faker方法”來混淆這些實體。我們完整的PHI提取管道也可以在加速器中找到筆記本.
管道檢測PHI實體,然後我們可以用NerVisualizer對其進行可視化,如下所示。
現在要構建一個端到端的去識別管道,我們隻需在PHI提取管道中添加混淆步驟,將PHI替換為假數據。
混淆=去識別()\.setInputCols ([“句子”,“令牌”,“ner_chunk”]) \.setOutputCol (“鑒定”) \.setMode (“混淆”)\.setObfuscateRefSource (“騙子”)\.setObfuscateDate (真正的)
obfuscation_pipeline =管道(階段=[deid_pipeline,困惑])
在下麵的例子中,我們編校了病人的出生地,並將其替換為一個假位置:
除了混淆之外,用於醫療保健的SparkNLP還提供了用於編校的預訓練模型。下麵是一個屏幕截圖,顯示了這些編校管道的輸出。
SparkNLP和Spark OCR可以很好地協同工作,用於大規模的PHI去識別。在許多情況下,聯邦和行業法規禁止分發或共享原始文本文件。如前所述,我們可以創建一個可伸縮的自動化生產管道,對pdf中的文本進行分類,混淆或編校PHI實體,並將結果數據寫回Lakehouse。然後,數據團隊可以輕鬆地與下遊分析師、數據科學家或業務用戶共享這些“淨化”的數據和去標識信息,而不會損害患者的隱私。下麵是Databricks上這個數據流的概要圖。
開始構建PHI移除管道
通過這個解決方案加速器,Databricks和John Snow Labs可以輕鬆地自動去識別和混淆PDF醫療文檔中包含的敏感數據。
要使用此解決方案加速程序,您可以預覽筆記本電腦在線並直接導入到您的Databricks帳戶。筆記本包括安裝相關的John Snow Labs NLP庫和許可密鑰的指導。
你也可以訪問我們的醫療保健和生命科學湖屋頁以了解我們所有的解決方案。