(defvar *preparse-hash-init?* nil)
(eval-when (:compile-toplevel :load-toplevel :execute)
-(let ((pfstr-hash nil) ;;; Preferred concept strings by CUI
- (cui-lrl-hash nil) ;;; LRL by CUI
- (lui-lrl-hash nil) ;;; LRL by LUI
- (cuisui-lrl-hash nil) ;;; LRL by CUISUI
- (sab-srl-hash nil)) ;;; SRL by SAB
+(let ((pfstr-hash nil) ;; Preferred concept strings by CUI
+ (cui-lrl-hash nil) ;; LRL by CUI
+ (lui-lrl-hash nil) ;; LRL by LUI
+ (sui-lrl-hash nil) ;; LRL by SUI
+ (cuisui-lrl-hash nil) ;; LRL by CUISUI
+ (sab-srl-hash nil)) ;; SRL by SAB
(defun make-preparse-hash-table ()
- (if pfstr-hash
+ (if sui-lrl-hash
(progn
(clrhash pfstr-hash)
(clrhash cui-lrl-hash)
(clrhash lui-lrl-hash)
+ (clrhash sui-lrl-hash)
(clrhash cuisui-lrl-hash)
(clrhash sab-srl-hash))
(setf
pfstr-hash (make-hash-table :size 800000)
cui-lrl-hash (make-hash-table :size 800000)
lui-lrl-hash (make-hash-table :size 1500000)
+ sui-lrl-hash (make-hash-table :size 1500000)
cuisui-lrl-hash (make-hash-table :size 1800000)
sab-srl-hash (make-hash-table :size 100 :test 'equal))))
(setf (gethash cui pfstr-hash) (nth 14 line))))
(set-lrl-hash cui srl cui-lrl-hash)
(set-lrl-hash lui srl lui-lrl-hash)
+ (set-lrl-hash sui srl sui-lrl-hash)
(set-lrl-hash (make-cuisui cui sui) srl cuisui-lrl-hash)
(multiple-value-bind (val found) (gethash sab sab-srl-hash)
(declare (ignore val))
(unless found
(setf (gethash sab sab-srl-hash) srl))))))
- (defun pfstr-hash (cui)
- (gethash cui pfstr-hash))
+ (defun pfstr-hash (cui) (gethash cui pfstr-hash))
+ (defun cui-lrl (cui) (gethash cui cui-lrl-hash))
+ (defun lui-lrl (lui) (gethash lui lui-lrl-hash))
+ (defun sui-lrl (sui) (gethash sui sui-lrl-hash))
+ (defun sab-srl (sab) (aif (gethash sab sab-srl-hash) it 0))
+ (defun cuisui-lrl (cuisui) (gethash cuisui cuisui-lrl-hash))
- (defun cui-lrl (cui)
- (gethash cui cui-lrl-hash))
-
- (defun lui-lrl (lui)
- (gethash lui lui-lrl-hash))
-
- (defun cuisui-lrl (cuisui)
- (gethash cuisui cuisui-lrl-hash))
-
- (defun sab-srl (sab)
- (aif (gethash sab sab-srl-hash) it 0))
)) ;; closure
(defun set-lrl-hash (key lrl hash)
(defparameter +col-datatypes+
'(("AV" sql-f) ("BTS" sql-i) ("CLS" sql-i) ("COF" sql-i) ("CUI1" sql-u)
- ("AUI" sql-u) ("AUI1" sql-u) ("AUI2" sql-u)
+ ("AUI" sql-u) ("AUI1" sql-u) ("AUI2" sql-u) ("PCUI" sql-u)
+ ("PLUI" sql-u) ("PAUI" sql-u)
("CUI2" sql-u) ("CUI" sql-u) ("CXN" sql-s) ("FR" sql-i) ("LRL" sql-s)
("LUI" sql-u) ("MAX" sql-s) ("MIN" sql-s) ("RANK" sql-s) ("REF" sql-c)
("RNK" sql-s) ("RWS" sql-i) ("SRL" sql-s) ("SUI" sql-u) ("TUI" sql-u)
+ ("MAPRANK" sql-s)
;;; Custom columns
("KCUISUI" sql-l) ("KCUILUI" sql-l) ("KCUILRL" sql-i) ("KLUILRL" sql-i)
+ ("KSUILRL" sql-i)
("KSRL" sql-i) ("KLRL" sql-i)
;;; LEX columns
("EUI" sql-u) ("EUI2" sql-u)
("UI" sql-u) ("UI2" sql-u) ("UI3" sql-u)
;; New fields for 2002AD
("RCUI" sql-u) ("VCUI" sql-u) ("CFR" sql-i) ("TFR" sql-i)
+ ;; New fields for 2004AA
+ ("MAPSETCUI" sql-u)
)
"SQL data types for each non-string column")
(defparameter +custom-tables+
nil
+ #+ignore
+ '(("KCON" "SELECT CUI,STR FROM MRCONSO WHERE STT='PF' AND TS='P' AND ISPREF='Y' AND LAT='ENG'"))
"Custom tables to create")
(defparameter +custom-cols+
- '(("MRCONSO.RRF" "KPFSTR" "TEXT" 1024
- (lambda (x) (pfstr-hash (parse-ui (nth 0 x)))))
+ '(("MRCONSO.RRF" "KPFSTR" "TEXT"
+ (slot-value (find-ucol "STR" "MRCONSO.RRF") 'max)
+ (lambda (x) (pfstr-hash (parse-ui (nth 0 x)))))
("MRCONSO.RRF" "KCUISUI" "BIGINT" 0
(lambda (x) (write-to-string (make-cuisui (parse-ui (nth 0 x)) (parse-ui (nth 5 x))))))
("MRCONSO.RRF" "KCUILUI" "BIGINT" 0
(lambda (x) (write-to-string (make-cuilui (parse-ui (nth 0 x)) (parse-ui (nth 3 x))))))
- ("MRCONSO.RRF" "KCUILRL" "INTEGER" 0
- (lambda (x) (write-to-string (cui-lrl (parse-ui (nth 0 x))))))
- ("MRCONSO.RRF" "KLUILRL" "INTEGER" 0
+ ("MRCONSO.RRF" "KCUILRL" "SMALLINT" 0
+ (lambda (x) (write-to-string (lui-lrl (parse-ui (nth 0 x))))))
+ ("MRCONSO.RRF" "KLUILRL" "SMALLINT" 0
(lambda (x) (write-to-string (lui-lrl (parse-ui (nth 3 x))))))
+ ("MRCONSO.RRF" "KSUILRL" "SMALLINT" 0
+ (lambda (x) (write-to-string (sui-lrl (parse-ui (nth 5 x))))))
;; Deprecated, last in 2004AA -- skip index
#+ignore
- ("MRLO.RRF" "KLRL" "INTEGER" 0
+ ("MRLO.RRF" "KLRL" "SMALLINT" 0
(lambda (x) (write-to-string
(if (zerop (length (nth 4 x)))
(cui-lrl (parse-ui (nth 0 x)))
(cuisui-lrl (make-cuisui (parse-ui (nth 0 x)) (parse-ui (nth 4 x))))))))
- ("MRSTY.RRF" "KLRL" "INTEGER" 0
+ ("MRSTY.RRF" "KLRL" "SMALLINT" 0
(lambda (x) (write-to-string (cui-lrl (parse-ui (nth 0 x))))))
- ("MRCOC.RRF" "KLRL" "INTEGER" 0
+ ("MRCOC.RRF" "KLRL" "SMALLINT" 0
(lambda (x) (write-to-string
(max (cui-lrl (parse-ui (nth 0 x)))
(kmrcl:aif (cui-lrl (parse-ui (nth 1 x))) kmrcl::it 0)))))
- ("MRSAT.RRF" "KSRL" "INTEGER" 0
+ ("MRSAT.RRF" "KSRL" "SMALLINT" 0
(lambda (x) (write-to-string (sab-srl (nth 9 x)))))
- ("MRREL.RRF" "KSRL" "INTEGER" 0
+ ("MRREL.RRF" "KSRL" "SMALLINT" 0
(lambda (x) (write-to-string (sab-srl (nth 10 x)))))
- ("MRRANK.RRF" "KSRL" "INTEGER" 0
+ ("MRRANK.RRF" "KSRL" "SMALLINT" 0
(lambda (x) (write-to-string (sab-srl (nth 1 x)))))
- ("MRDEF.RRF" "KSRL" "INTEGER" 0
+ ("MRDEF.RRF" "KSRL" "SMALLINT" 0
(lambda (x) (write-to-string (sab-srl (nth 4 x)))))
- ("MRCXT.RRF" "KSRL" "INTEGER" 0
+ ("MRCXT.RRF" "KSRL" "SMALLINT" 0
(lambda (x) (write-to-string (sab-srl (nth 2 x)))))
- ("MRATX.RRF" "KSRL" "INTEGER" 0
- (lambda (x) (write-to-string (sab-srl (nth 1 x)))))
- ("MRXW_ENG.RRF" "KLRL" "INTEGER" 0
+ ("MRXW_ENG.RRF" "KLRL" "SMALLINT" 0
(lambda (x) (write-to-string (cuisui-lrl (make-cuisui
(parse-ui (nth 2 x))
(parse-ui (nth 4 x)))))))
- ("MRXW_NONENG.RRF" "KLRL" "INTEGER" 0
+ ("MRXW_NONENG.RRF" "KLRL" "SMALLINT" 0
(lambda (x) (write-to-string (cuisui-lrl (make-cuisui
(parse-ui (nth 2 x))
(parse-ui (nth 4 x)))))))
- ("MRXNW_ENG.RRF" "KLRL" "INTEGER" 0
+ ("MRXNW_ENG.RRF" "KLRL" "SMALLINT" 0
(lambda (x) (write-to-string (cuisui-lrl (make-cuisui
(parse-ui (nth 2 x))
(parse-ui (nth 4 x)))))))
- ("MRXNS_ENG.RRF" "KLRL" "INTEGER" 0
+ ("MRXNS_ENG.RRF" "KLRL" "SMALLINT" 0
(lambda (x) (write-to-string (cuisui-lrl (make-cuisui
(parse-ui (nth 2 x))
(parse-ui (nth 4 x)))))))
"Custom columns to create.(filename, col, sqltype, value-func).")
(defparameter +index-cols+
- '(("CUI" "MRATX") ("CUI1" "MRCOC") ("CUI" "MRCONSO") ("LUI" "MRCONSO")
+ '(("CUI1" "MRCOC") ("CUI" "MRCONSO") ("LUI" "MRCONSO")
("SRL" "MRCONSO") ("AUI" "MRCONSO")
("SUI" "MRCONSO") ("CUI" "MRCXT") ("CUI" "MRDEF") ("CUI" "MRLO")
("CUI1" "MRREL") ("CUI" "MRSAT") ("LUI" "MRSAT") ("SUI" "MRSAT")
("TUI" "MRSTY") ("CUI" "MRXNS_ENG")
#+ignore ("NSTR" "MRXNS_ENG" 10)
("CUI" "MRXNW_ENG") ("NWD" "MRXNW_ENG") ("WD" "MRXW_ENG")
- ("KCUISUI" "MRCON") ("KCUILUI" "MRCON") ("KCUILRL" "MRCON")
- ("KLUILRL" "MRCON") ("KCUISUI" "MRCXT")
- ("KCUISUI" "MRSO") ("KCUISUI" "MRSAT") ("KCUILUI" "MRSAT")
+ ("KCUISUI" "MRCONSO") ("KCUILUI" "MRCONSO") ("KCUILRL" "MRCONSO")
+ ("KLUILRL" "MRCONSO") ("KCUISUI" "MRCXT")
+ ("KCUISUI" "MRSAT") ("KCUILUI" "MRSAT")
("KCUISUI" "MRXW_ENG") ("KCUISUI" "MRXNW_ENG")
("KCUISUI" "MRXNS_ENG") ("KCUISUI" "MRXW_NONENG")
- ("KSRL" "MRATX") ("KSRL" "MRCXT") ("KSRL" "MRDEF") ("KSRL" "MRRANK")
+ ("KSRL" "MRCXT") ("KSRL" "MRDEF") ("KSRL" "MRRANK")
("KSRL" "MRREL") ("KSRL" "MRSAT") ("KLRL" "MRCOC")
#+ignore ("KLRL" "MRLO") ;; deprecated
("KLRL" "MRSTY") ("KLRL" "MRXW_ENG") ("KLRL" "MRXNW_ENG")
("UI" "SRSTRE1") ("UI2" "SRSTRE1") ("UI3" "SRSTRE1")
("STY_RL" "SRDEF") ("RT" "SRDEF") ("STY_RL" "SRSTR") ("STY_RL2" "SRSTR")
("RL" "SRSTR")
+
("SRL" "MRSAB") ("RSAB" "MRSAB") ("VSAB" "MRSAB") ("RCUI" "MRSAB")
- ("VCUI" "MRSAB") ("LAT" "MRSAB"))
+ ("VCUI" "MRSAB") ("LAT" "MRSAB") ("MAPSETCUI" "MRMAP") ("MAPSETCUI" "MRSMAP")
+ ("CUI" "MRHIER") ("AUI" "MRHIER") ("PAUI" "MRHIER"))
"Columns in files to index")
(defparameter +custom-index-cols+
nil
#+ignore
- '(("CUI" "MRCONFULL") ("SAB" "MRCONFULL") ("TUI" "MRCONFULL"))
+ '(("CUI" "KCON") ("LRL" "KCON"))
"Indexes to custom tables")
;; File & Column functions
"Initialize umls columns for custom columns"
(loop for customcol in +custom-cols+
collect
- (make-ucol (nth 1 customcol) "" 0 0 0 (nth 3 customcol)
- (nth 0 customcol) nil :sqltype (nth 2 customcol)
+ (make-ucol (nth 1 customcol) "" 0 0 0 (eval (nth 3 customcol))
+ (nth 0 customcol) nil :sqltype (canonicalize-column-type (nth 2 customcol))
:custom-value-fun (nth 4 customcol))))
(defun gen-ucols-generic (col-filename)