From 4b48e7aa900a9d09a496410a38b29535dd3da44b Mon Sep 17 00:00:00 2001 From: Luke Shulman Date: Tue, 20 Mar 2018 12:13:41 -0400 Subject: [PATCH 1/9] Ensure that the environ variable of database location is correct --- rxnorm.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rxnorm.py b/rxnorm.py index 6115249..ad318ff 100644 --- a/rxnorm.py +++ b/rxnorm.py @@ -14,6 +14,7 @@ from collections import Counter, OrderedDict from sqlite import SQLite from graphable import GraphableObject, GraphableRelation +import os class RxNorm (object): @@ -107,7 +108,9 @@ class RxNormLookup (object): def __init__(self): absolute = os.path.dirname(os.path.realpath(__file__)) - self.sqlite = SQLite.get(os.path.join(absolute, 'databases/rxnorm.db')) + db_file = os.environ.get('SQLITE_FILE') + db_file = db_file if db_file else os.path.join(absolute, 'databases/rxnorm.db') + self.sqlite = SQLite.get(db_file) # MARK: - "name" lookup From efc3c38a61d52177af4791ba573348ee8ea106b1 Mon Sep 17 00:00:00 2001 From: lukeshulman Date: Wed, 19 Dec 2018 21:38:00 +0000 Subject: [PATCH 2/9] Adding MRREL to the umls flow y --- databases/umls.sh | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/databases/umls.sh b/databases/umls.sh index 0218c9e..1fd633d 100755 --- a/databases/umls.sh +++ b/databases/umls.sh @@ -35,7 +35,7 @@ if [ ! -e umls.db ]; then current=$(pwd) cd "$1/META" echo "-> Converting RRF files for SQLite" - for f in MRCONSO.RRF MRDEF.RRF MRSTY.RRF; do + for f in MRCONSO.RRF MRDEF.RRF MRSTY.RRF MRREL.RRF; do sed -e 's/.$//' -e 's/"//g' "$f" > "${f%RRF}pipe" done cd $current @@ -85,7 +85,26 @@ if [ ! -e umls.db ]; then ATUI varchar, CVF varchar )" - + # init the database for MRREL + sqlite3 umls.db "CREATE TABLE MRREL ( + CUI1 varchar, + AUI1 varchar, + STYPE1 varchar, + REL varchar, + CUI2 varchar, + AUI2 varchar, + STYPE2, + RELA, + RUI, + SRUI, + SAB, + SL, + DIR, + RG, + SUPRESS, + CVF + ) +" # import tables for f in "$1/META/"*.pipe; do table=$(basename ${f%.pipe}) From b3b4a7d2f5b2003654d2954ebf38a5915ef704c7 Mon Sep 17 00:00:00 2001 From: lukeshulman Date: Thu, 20 Dec 2018 01:32:55 +0000 Subject: [PATCH 3/9] Adding query to get the cpt desc on one table --- databases/cpt_descriptions.sql | 44 ++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 databases/cpt_descriptions.sql diff --git a/databases/cpt_descriptions.sql b/databases/cpt_descriptions.sql new file mode 100644 index 0000000..710d8aa --- /dev/null +++ b/databases/cpt_descriptions.sql @@ -0,0 +1,44 @@ +with short_desc as ( +select +code, +str as short_desc +from mrconso +where SAB = 'CPT' and tty='AB'), +consumer_desc as ( +select +code, +str as consumer_desc +from mrconso +where SAB = 'CPT' and tty='ETCF' +), +clinician_desc as ( +select +code, +str as clinician_desc +from mrconso +where SAB = 'CPT' and tty='ETCLIN' +), +medium_descriptor as ( +select +code, +str as medium_descriptor +from mrconso +where SAB = 'CPT' and tty='SY'), +full_descriptor as ( +select +code, +str as full_description +from mrconso +where SAB = 'CPT' and tty='PT' +) + +SELECT +sd.code + +from short_desc sd + join consumer_desc cd on sd.code = cd.code + join clinician_desc cl_d on sd.code = cl_d.code + join medium_descriptor md on sd.code = md.code + join full_descriptor fd on sd.code = fd.code + +where sd.code = '99212' From e8cdd7c9c01cd3c8c59dbc0a494492b84b8d515c Mon Sep 17 00:00:00 2001 From: lukeshulman Date: Thu, 20 Dec 2018 01:40:43 +0000 Subject: [PATCH 4/9] Adding RREL is a bad idea but the db part is a good idea --- databases/umls.sh | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/databases/umls.sh b/databases/umls.sh index 1fd633d..0218c9e 100755 --- a/databases/umls.sh +++ b/databases/umls.sh @@ -35,7 +35,7 @@ if [ ! -e umls.db ]; then current=$(pwd) cd "$1/META" echo "-> Converting RRF files for SQLite" - for f in MRCONSO.RRF MRDEF.RRF MRSTY.RRF MRREL.RRF; do + for f in MRCONSO.RRF MRDEF.RRF MRSTY.RRF; do sed -e 's/.$//' -e 's/"//g' "$f" > "${f%RRF}pipe" done cd $current @@ -85,26 +85,7 @@ if [ ! -e umls.db ]; then ATUI varchar, CVF varchar )" - # init the database for MRREL - sqlite3 umls.db "CREATE TABLE MRREL ( - CUI1 varchar, - AUI1 varchar, - STYPE1 varchar, - REL varchar, - CUI2 varchar, - AUI2 varchar, - STYPE2, - RELA, - RUI, - SRUI, - SAB, - SL, - DIR, - RG, - SUPRESS, - CVF - ) -" + # import tables for f in "$1/META/"*.pipe; do table=$(basename ${f%.pipe}) From ec1f931fb02a72949c3d682902c00884ed6391c5 Mon Sep 17 00:00:00 2001 From: lukeshulman Date: Thu, 20 Dec 2018 02:13:28 +0000 Subject: [PATCH 5/9] Fixing the new table --- databases/cpt_descriptions.sql | 16 ++++++++++------ databases/umls.sh | 2 ++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/databases/cpt_descriptions.sql b/databases/cpt_descriptions.sql index 710d8aa..dbda55d 100644 --- a/databases/cpt_descriptions.sql +++ b/databases/cpt_descriptions.sql @@ -1,4 +1,4 @@ -with short_desc as ( +create table cpt_descriptions as with short_desc as ( select code, str as short_desc @@ -21,24 +21,28 @@ where SAB = 'CPT' and tty='ETCLIN' medium_descriptor as ( select code, -str as medium_descriptor +str as medium_desc from mrconso where SAB = 'CPT' and tty='SY'), full_descriptor as ( select code, -str as full_description +str as full_desc from mrconso where SAB = 'CPT' and tty='PT' ) SELECT -sd.code +sd.code, +short_desc, +consumer_desc, +clinician_desc, +medium_desc, +full_desc from short_desc sd join consumer_desc cd on sd.code = cd.code join clinician_desc cl_d on sd.code = cl_d.code join medium_descriptor md on sd.code = md.code join full_descriptor fd on sd.code = fd.code - -where sd.code = '99212' +; diff --git a/databases/umls.sh b/databases/umls.sh index 0218c9e..53cd1f9 100755 --- a/databases/umls.sh +++ b/databases/umls.sh @@ -109,6 +109,8 @@ if [ ! -e umls.db ]; then sqlite3 umls.db "ALTER TABLE descriptions ADD COLUMN STY TEXT" sqlite3 umls.db "CREATE INDEX X_CUI_desc ON descriptions (CUI)" sqlite3 umls.db "UPDATE descriptions SET STY = (SELECT GROUP_CONCAT(MRSTY.TUI, '|') FROM MRSTY WHERE MRSTY.CUI = descriptions.CUI GROUP BY MRSTY.CUI)" + sqlite3 umls.db "CREATE INDEX sab_tty on mrconso(sab,tty)" + sqlite3 umls.db ".read databases/cpt_descriptions.sql" else echo "=> umls.db already exists" fi From 969c2af871457d7137c8a55c2046594b9bf71c65 Mon Sep 17 00:00:00 2001 From: lukeshulman Date: Thu, 20 Dec 2018 14:14:55 +0000 Subject: [PATCH 6/9] FInal version of new table --- databases/cpt_descriptions.sql | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/databases/cpt_descriptions.sql b/databases/cpt_descriptions.sql index dbda55d..18be413 100644 --- a/databases/cpt_descriptions.sql +++ b/databases/cpt_descriptions.sql @@ -1,9 +1,10 @@ -create table cpt_descriptions as with short_desc as ( +create table cpt_descriptions as +with short_desc as ( select code, str as short_desc from mrconso -where SAB = 'CPT' and tty='AB'), +where SAB = 'CPT' and tty='AB' ), consumer_desc as ( select code, From 97743329a54a43859247c7cbea461b0b0f08fbee Mon Sep 17 00:00:00 2001 From: lukeshulman Date: Wed, 19 Dec 2018 21:38:00 +0000 Subject: [PATCH 7/9] Adding MRREL to the umls flow y Adding RREL is a bad idea but the db part is a good idea Adding query to get the cpt desc on one table --- databases/cpt_descriptions.sql | 44 ++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 databases/cpt_descriptions.sql diff --git a/databases/cpt_descriptions.sql b/databases/cpt_descriptions.sql new file mode 100644 index 0000000..710d8aa --- /dev/null +++ b/databases/cpt_descriptions.sql @@ -0,0 +1,44 @@ +with short_desc as ( +select +code, +str as short_desc +from mrconso +where SAB = 'CPT' and tty='AB'), +consumer_desc as ( +select +code, +str as consumer_desc +from mrconso +where SAB = 'CPT' and tty='ETCF' +), +clinician_desc as ( +select +code, +str as clinician_desc +from mrconso +where SAB = 'CPT' and tty='ETCLIN' +), +medium_descriptor as ( +select +code, +str as medium_descriptor +from mrconso +where SAB = 'CPT' and tty='SY'), +full_descriptor as ( +select +code, +str as full_description +from mrconso +where SAB = 'CPT' and tty='PT' +) + +SELECT +sd.code + +from short_desc sd + join consumer_desc cd on sd.code = cd.code + join clinician_desc cl_d on sd.code = cl_d.code + join medium_descriptor md on sd.code = md.code + join full_descriptor fd on sd.code = fd.code + +where sd.code = '99212' From 54b03b69501c936029f44d8d3a181e4d7e1a1c9e Mon Sep 17 00:00:00 2001 From: lukeshulman Date: Thu, 20 Dec 2018 02:13:28 +0000 Subject: [PATCH 8/9] Fixing the new table --- databases/cpt_descriptions.sql | 16 ++++++++++------ databases/umls.sh | 2 ++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/databases/cpt_descriptions.sql b/databases/cpt_descriptions.sql index 710d8aa..dbda55d 100644 --- a/databases/cpt_descriptions.sql +++ b/databases/cpt_descriptions.sql @@ -1,4 +1,4 @@ -with short_desc as ( +create table cpt_descriptions as with short_desc as ( select code, str as short_desc @@ -21,24 +21,28 @@ where SAB = 'CPT' and tty='ETCLIN' medium_descriptor as ( select code, -str as medium_descriptor +str as medium_desc from mrconso where SAB = 'CPT' and tty='SY'), full_descriptor as ( select code, -str as full_description +str as full_desc from mrconso where SAB = 'CPT' and tty='PT' ) SELECT -sd.code +sd.code, +short_desc, +consumer_desc, +clinician_desc, +medium_desc, +full_desc from short_desc sd join consumer_desc cd on sd.code = cd.code join clinician_desc cl_d on sd.code = cl_d.code join medium_descriptor md on sd.code = md.code join full_descriptor fd on sd.code = fd.code - -where sd.code = '99212' +; diff --git a/databases/umls.sh b/databases/umls.sh index 0218c9e..53cd1f9 100755 --- a/databases/umls.sh +++ b/databases/umls.sh @@ -109,6 +109,8 @@ if [ ! -e umls.db ]; then sqlite3 umls.db "ALTER TABLE descriptions ADD COLUMN STY TEXT" sqlite3 umls.db "CREATE INDEX X_CUI_desc ON descriptions (CUI)" sqlite3 umls.db "UPDATE descriptions SET STY = (SELECT GROUP_CONCAT(MRSTY.TUI, '|') FROM MRSTY WHERE MRSTY.CUI = descriptions.CUI GROUP BY MRSTY.CUI)" + sqlite3 umls.db "CREATE INDEX sab_tty on mrconso(sab,tty)" + sqlite3 umls.db ".read databases/cpt_descriptions.sql" else echo "=> umls.db already exists" fi From 8eb98ffc81c94a249158473e6232b129b7cda1e5 Mon Sep 17 00:00:00 2001 From: Luke Shulman Date: Thu, 10 Jan 2019 14:49:29 -0500 Subject: [PATCH 9/9] FInal version of new table for the CPT Descritptions Note also reverting a minor change that we use in our environment but maybe not important for everyone. --- databases/cpt_descriptions.sql | 5 +++-- rxnorm.py | 5 +---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/databases/cpt_descriptions.sql b/databases/cpt_descriptions.sql index dbda55d..18be413 100644 --- a/databases/cpt_descriptions.sql +++ b/databases/cpt_descriptions.sql @@ -1,9 +1,10 @@ -create table cpt_descriptions as with short_desc as ( +create table cpt_descriptions as +with short_desc as ( select code, str as short_desc from mrconso -where SAB = 'CPT' and tty='AB'), +where SAB = 'CPT' and tty='AB' ), consumer_desc as ( select code, diff --git a/rxnorm.py b/rxnorm.py index ad318ff..6115249 100644 --- a/rxnorm.py +++ b/rxnorm.py @@ -14,7 +14,6 @@ from collections import Counter, OrderedDict from sqlite import SQLite from graphable import GraphableObject, GraphableRelation -import os class RxNorm (object): @@ -108,9 +107,7 @@ class RxNormLookup (object): def __init__(self): absolute = os.path.dirname(os.path.realpath(__file__)) - db_file = os.environ.get('SQLITE_FILE') - db_file = db_file if db_file else os.path.join(absolute, 'databases/rxnorm.db') - self.sqlite = SQLite.get(db_file) + self.sqlite = SQLite.get(os.path.join(absolute, 'databases/rxnorm.db')) # MARK: - "name" lookup