跳轉到主要內容
行業的頭

與NLP和知識圖建立病人軍團

分享這篇文章

檢查解決方案加速器下載筆記本在這個博客。

群體建築是病人分析的重要組成部分。定義哪些病人屬於一個組,測試的敏感性不同樣本大小納入和排除標準,建立一個控製群體傾向得分匹配技術:這些隻是一些過程,衛生保健和生命科學研究人員天天生活,這是不太可能很快改變。是什麼改變底層數據,臨床標準的複雜性,和行業要求的活力。

雖然工具用於構建病人軍團從EHR基於結構化數據的數據或聲稱,他們的實用價值是有限的。越來越多的群體建築衛生保健和生命科學需要從非結構化和半結構化臨床文檔中提取的標準自然語言處理(NLP)管道。這一現實需要無縫結合的三種技術:

(1)一個平Beplay体育安卓版本台,尺度計算真實世界的大規模數據集的計算強度,
(2)準確NLP圖書館& healthcare-specific模型從醫療文件中提取和相關實體,和
(3)知識圖形工具集,能夠代表的網絡實體之間的關係。

約翰·斯諾的最新解決方案實驗室和磚Lakehouse一起帶來了這一切。

優化臨床試驗協議

讓我們考慮一個高影響應用程序的動態群體建築。

招聘和留住病人臨床試驗是一個長期問題,大流行性流感加劇了。80%的試驗延遲是由於招聘problems1,許多網站under-enrolling。延遲招聘金融有巨大的影響方麵的現金消耗管理擴展試驗和專利的機會成本的生活,更不用說延遲的影響可能拯救生命的藥物。

的一個挑戰是,隨著藥物變得更加專業,臨床試驗協議越來越複雜。這不是少見的40個不同的入選標準和排除。舊的時代”測量兩次,減少一次”是極其重要的。讓我們看看一個相對簡單的示例3期臨床試驗的一個協議估計運行六年:Evolocumab效應在高心血管風險的患者事先心肌梗塞或中風(VESALIUS-CV) 2:

與NLP和知識圖建立病人軍團

在協議設計方麵,包含和排除標準必須足夠有針對性的適當的臨床敏感性,和廣泛足以促進招聘。現實世界中數據可以提供路標來幫助預測病人資格和理解不同的標準的相對影響。在上麵的示例中,左室射血分數> 30%限製人口10%,20% ?表皮生長因子受體如何< 15嗎?臨床文檔包括提到不是診斷的心房撲動,這將影響屏幕失敗率?

幸運的是,這些問題可以回答真實數據和人工智能。

選址和患者招募

類似的挑戰存在一次臨床試驗協議被定義。一家製藥公司的下一個決定之一就是建立網站的審判。建立一個網站是費時,昂貴的,經常浪費——超過三分之二的網站不符合原來的病人登記目標和ip招收50%的網站或沒有一個病人在他們的研究3

這個挑戰是放大在新的臨床試驗——特別是那些關注罕見病,或癌症患者特定的基因生物標記。在這些情況下,醫院可以看到每年隻有少數相關的病人,所以提前估算有多少病人候選人審判,然後招募他們當他們出現時,及時的成功都是至關重要的。

精密健康的出現導致了更多的臨床試驗這一目標一個非常小的人口4。這需要自動化規模自動找到候選病人這些試驗,以及

3https://www.clinicalleader.com/doc/considerations - -改善病人- 0001
4https://www.webmd.com/cancer/precision-medicine-clinical-trials

以來最先進的NLP能力試驗納入和排除標準呼喚更多的事實,隻能在非結構化文本。這些事實包括基因組變異,健康問題社會決定因素,家庭曆史,和特定的腫瘤特征。

幸運的是,新的人工智能技術是現在準備迎接這些挑戰。

設計和運行更好的臨床試驗和約翰·斯諾實驗室和磚

首先,讓我們理解病人群的端到端解決方案體係結構構建與NLP和知識圖:

一個端到端的工作流自動化φ刪除的文件和圖像

我們會建立一個知識圖(公斤)使用火花NLP關係提取模型和圖形API。這個解決方案的主要點是指創建一個臨床知識使用火花NLP pretrained模型圖。為了這個目的,我們將使用提取和尼珥pretrained關係模型。創建知識圖後,我們將查詢公斤來得到一些深刻的結果。

作為構建病人組與NLP和知識圖是2022年祭台,請查看其會話在這裏:演示

NLP預處理

總的來說,有965個臨床記錄在我們的示例數據集存儲在三角洲表。我們讀和寫的數據記錄到青銅三角洲表中。

一個示例數據集臨床醫療記錄存儲在一個表中δ湖。
一個示例數據集臨床醫療記錄存儲在一個表中δ湖。

從文本中提取的關係在這個dataframe, SparkNLP醫療應用劑量學關係提取pretrained模型,支持以下關係:
藥物的劑量、DRUG-FREQUENCY DRUG-ADE(藥物不良事件),DRUG-FORM,毒品的路線,DRUG-DURATION DRUG-REASON、藥物=力量

驗證該模型描述的劑量學數據集(瑪吉醫生,蘇格蘭威士忌,& Gonzalez-Hernandez, 2018)http://proceedings.mlr.press/v90/magge18a/magge18a.pdf

關係 回憶 精度 F1 F1(瑪吉醫生,蘇格蘭威士忌,& Gonzalez-Hernandez, 2018)
DRUG-ADE 0.66 1.00 0.80 0.76
藥物的劑量 0.89 1.00 0.94 0.91
DRUG-DURATION 0.75 1.00 0.85 0.92
DRUG-FORM 0.88 1.00 0.94 0.95 *
DRUG-FREQUENCY 0.79 1.00 0.88 0.90
DRUG-REASON 0.60 1.00 0.75 0.70
毒品的路線 0.79 1.00 0.88 0.95 *
DRUG-STRENGTH 0.95 1.00 0.98 0.97

瑪吉醫生,蘇格蘭威士忌,Gonzalez-Hernandez(2018)倒塌的DRUG-FORM和毒品的路線到一個單一的關係。

醫療在我們NLP管道,火花NLP是標準化後的預處理步驟(資料員、判決、記號賦予器),字嵌入,詞性薄鐵片,尼珥,依賴解析和提取的關係。特別是關係提取這個管道是最重要的一步,因為它建立了連接將提取的尼珥塊之間的關係。

結果dataframe包括所有相應的關係:

火花NLP醫療地圖內的關係數據進行分析。
火花NLP醫療地圖內的關係數據進行分析。

在我們Lakehouse對於醫療保健,這最終dataframe將寫入到銀層。

接下來,RxNorm代碼提取之前建立數據集。首先,我們使用一個基於基本規則的邏輯定義和清理“entity1”和“entity2”,緊隨其後的是一個SBERT基於伯特(句子)嵌入和BioBERT解析器支持rxnorm代碼的轉換。

見下文的前三個記錄銀層數據集提取的Rx相關文本,其尼珥塊,適用RxNorm代碼,所有相關代碼,RxNorm決議和最終藥物解決。

轉換的結果數據三角洲湖的銀層內。
轉換的結果數據三角洲湖的銀層內。

這個結果dataframe寫入金層。

最後,pretrained命名實體識別深層學習模型對臨床術語(https://nlp.johnsnowlabs.com/2021/08/13/ner_jsl_slim_en.html)應用於初始數據集提取廣義實體從我們的醫療文本。

結果dataframe包括尼珥塊和尼珥標簽從非結構化文本:

使用深度學習,廣義的實體可以被識別和提取金層在三角洲湖。
使用深度學習,廣義的實體可以被識別和提取金層在三角洲湖。

這個結果dataframe寫入金層。

知識的創造和查詢圖

創建知識圖(公斤),之前的結果在金層dataframes需要以及病人的附加表格去除了識別信息的人口統計信息。看到的:

創建知識圖(公斤),之前的結果在金層dataframes需要以及病人的附加表格去除了識別信息的人口統計信息

為構建公斤,最佳實踐是使用主雲提供商的圖形功能。兩個無關的選項來構建一個足夠的圖是:1。寫下你dataframe NoSql數據庫和使用它的圖形API 2。使用本機圖形數據庫。

兩個選項的目標是得到一個圖表模式提取實體,看下麵:

圖形模式來檢索信息的可視化表示基於底層關係查詢。
圖形模式來檢索信息的可視化表示基於底層關係查詢。

這可以通過分裂dataframe為多個dataframes ner_label和創建節點和關係。例子建立關係(例子是用密碼寫的https://neo4j.com/developer/cypher/):

defadd_symptoms(行,batch_size =500年):查詢=“‘解除美元行是行匹配(p:病人{名稱:row.subject_id})合並(n:症狀{名稱:row.chunk})合並(p) - [: IS_SYMPTOM{日期:日期(row.date)}) - > (n)n匹配(n)總回報count (*)“‘返回update_data(查詢、行batch_size)defadd_tests(行,batch_size =500年):查詢=“‘解除美元行是行匹配(p:病人{名稱:row.subject_id})合並(n:測試{名稱:row.chunk})合並(p) - [: IS_TEST{日期:日期(row.date)}) - > (n)n匹配(n)總回報count (*)“‘返回update_data(查詢、行batch_size)

一旦公斤正確建立,在任何兩個選項(在這個例子中圖形數據庫),一個模式檢查驗證記錄每個節點的計數和關係:

運行模式檢查確保格式和數據關係。
運行模式檢查確保格式和數據關係。

公斤現在可以智能地查詢檢索信息建立基於底層關係在我們的NLP步驟之前。下麵顯示了一組查詢回答臨床問題:

1。病人在醫療記錄21153年的旅程:症狀,程序,disease-syndrome-disorders,測試,藥物和rxnorms:

查詢:

patient_name =“21153”query_part1 =f 'MATCH (p:病人)——(r1: IS_SYMPTOM) - > (s:症狀)p.name ={patient_name}query_part2 =“‘與不同的p.name病人,r1。日期的日期s, COLLECT(DISTINCT s.name) as symptoms, COUNT(DISTINCT s.name) as num_symptoms匹配(p:病人)——(r2: IS_PROCEDURE) - >(公關:過程)p.name =患者和r2。日期=日期與不同的p.name病人,r2。日期的日期s, COLLECT(DISTINCT pr.name) as procedures, COUNT(DISTINCT pr.name) as num_procedures, symptoms, num_symptoms匹配(p:病人)——(r3: IS_DSD) - > (_d: DSD)p.name =患者和r3。日期=日期與不同的p.name病人,r3。日期的日期s, symptoms, num_symptoms, procedures, num_procedures, COLLECT(DISTINCT _d.name) as dsds, COUNT(DISTINCT _d.name) as num_dsds匹配(p:病人)——(r4: IS_TEST) - > (_t:測試)p.name =患者和r4。日期=日期與不同的p.name病人,r4。日期的日期s, symptoms, num_symptoms, procedures, num_procedures, dsds, num_dsds, COLLECT(_t.name) as tests, COUNT(_t.name) as num_tests匹配(p:病人)——(r5: RXNORM_CODE) - >(處方:RxNorm) - (r6) - > (_d:藥物)p.name =患者和r5。日期=日期返回不同的p.name作為病人,r5。日期的日期s, symptoms, num_symptoms, procedures, num_procedures, dsds, num_dsds, tests, num_tests, COLLECT(DISTINCT toLower(_d.name)) as drugs, COUNT(DISTINCT toLower(_d.name)) as num_drugs, COLLECT(DISTINCT rx.code) as rxnorms, COUNT(DISTINCT rx.code) as num_rxnorm訂單日期;“‘

Dataframe:

Dataframe

圖:

建立使用NLP的視覺圖形顯示數據記錄之間的關係。
建立使用NLP的視覺圖形顯示數據記錄之間的關係。

2。患者處方Lasix 2060年5月到2125年5月:

查詢:

query_string =“‘匹配(p:病人)——(rel_rx) - >(處方:RxNorm) - (rel_d) - > (d:藥物)- (rel_n:藥物)- > (n:尼珥)在d.name (“lasix”)和rel_n.patient_name = p.name和rel_n.date = rel_rx.date和rel_rx。日期> =日期(“2060-05-01”)和rel_n。日期> =日期(“2060-05-01”)和rel_rx。日期<日期(“2125-05-01”)和rel_n。日期<日期(“2125-05-01”)返回不同的d.name drug_generic_name,p.name patient_name,rel_rx。日期的日期按日期順序ASC“‘

Dataframe:

Dataframe

圖:

使用NLP的視覺圖形顯示建立病人的記錄和藥物之間的關係。
使用NLP的視覺圖形顯示建立病人的記錄和藥物之間的關係。

3所示。危險的藥物組合:

查詢:

query_string =“‘與“布洛芬”、“萘普生”、“雙氯芬酸”,“indometacin”、“ketorolac”、“阿司匹林”,“ketoprofen”、“dexketoprofen”、“meloxicam”)作為非甾體抗炎藥匹配(p:病人)——(r1: RXNORM_CODE) - >(處方:RxNorm) - (r2) - > (d:藥物)任何地方(非甾體抗炎藥d.name包含詞詞)與不同的p.name患者,收集(不同d.name)作為nsaid_drugs, num_nsaids計數(d.name截然不同)匹配(p:病人)——(r1: RXNORM_CODE) - >(處方:RxNorm) - (r2) - > (d:藥物)病人和d.name p.name = =‘華法林返回不同的病人,nsaid_drugs,num_nsaids,d.name warfarin_drug,r1。日期的日期“‘

Dataframe:

Dataframe

圖:

使用NLP的視覺圖形顯示建立處方規範和藥物之間的關係。
使用NLP的視覺圖形顯示建立處方規範和藥物之間的關係。

4所示。高血壓或糖尿病患者胸部疼痛:

查詢:

query_string =”“”匹配(p:病人)- (r: IS_SYMPTOM) - > (s:症狀),(p1:病人)- (r2: IS_DSD) - > (_dsd: DSD)s.name包含“胸痛”和p1.name = p.name _dsd.name(“高血壓”、“糖尿病”)和r2.date = r.date返回不同的p.name作為病人,r。日期的日期,_dsd.name as dsd, s.name as symptom”“”

Dataframe:

Dataframe

圖:

使用NLP的視覺圖形顯示建立病人記錄和醫療症狀之間的關係。
使用NLP的視覺圖形顯示建立病人記錄和醫療症狀之間的關係。

SparkNLP和首選本地公斤數據庫或公斤API一起工作為構建從提取實體圖的知識和建立關係。在很多情況下,聯邦機構和行業企業需要快速檢索軍團獲得人口健康或不良事件的見解。像大多數數據可用從臨床文檔的非結構化文本,作為證明,我們可以創建一個可伸縮的和自動化生產解決方案中提取實體,建立它們之間的關係,建立公斤,問Lakehouse支持端到端智能查詢。

開始建立你的軍團使用NLP知識圖表

這個解決方案加速器,磚和約翰·斯諾實驗室可以很容易地支持構建臨床使用公斤軍團。

加速器使用這個解決方案,您可以在線預覽筆記本並將直接導入你的磚賬戶。筆記本電腦包括指導安裝相關的約翰·斯諾實驗室NLP圖書館和許可證密鑰。

你也可以訪問我們Lakehouse衛生保健和生命科學頁麵來了解我們所有的解決方案。

1https://www.biopharmadive.com/spons/decentralized-clinical-trials-are-we-ready-to-make-the-leap/546591
2https://clinicaltrials.gov/ct2/show/NCT03872401

免費試著磚

相關的帖子

看到所有行業的帖子
Baidu
map