;;;; Author: Kevin M. Rosenberg
;;;; Created: Apr 2000
;;;;
-;;;; $Id$
-;;;;
;;;; This file, part of UMLisp, is
-;;;; Copyright (c) 2000-2006 by Kevin M. Rosenberg, M.D.
+;;;; Copyright (c) 2000-2010 by Kevin M. Rosenberg, M.D.
;;;;
;;;; UMLisp users are granted the rights to distribute and use this software
;;;; as governed by the terms of the GNU General Public License.
(declaim (inline srl-to-srlus))
(defun srl-to-srlus (srl)
- "Convert the standard SRL category to one oriented for use in the United States.
-Specifically, SRL 4 in the USA has license restrictions between SRL 1 and 2 when
-used in the United States. We create a new scale (SRLUS) where SRL to SRLUS mapping is:
-(0->0, 1->1, 4->2, 2->3, 3->4)."
+ "Convert the standard SRL category to one oriented for use in the ~
+United States. Specifically, SRL 4 in the USA has license restrictions ~
+between SRL 1 and 2 when used in the United States. As of 2009AA, the
+SNOMED SRL changed from 4 to 9. So we create a new scale ~
+(SRLUS) where SRL to SRLUS mapping is: ~
+(0->0, 1->1, 4->2, 9->2, 2->3, 3->4)."
(declare (type (integer 0 100) srl))
(cond
((<= srl 1) srl)
((= srl 4) 2)
+ ((= srl 9) 2)
((= srl 2) 3)
((= srl 3) 4)
(t srl)))
(defun make-preparse-hash-table ()
(if sui-lrl-hash
- (clear-preparse-hash-tables)
+ (clear-preparse-hash-tables)
(setf
- pfstr-hash (make-hash-table :size 1500000)
- cui-lrl-hash (make-hash-table :size 1500000)
- lui-lrl-hash (make-hash-table :size 5000000)
- sui-lrl-hash (make-hash-table :size 6000000)
- cuisui-lrl-hash (make-hash-table :size 6000000)
- cui-lrlus-hash (make-hash-table :size 1500000)
- lui-lrlus-hash (make-hash-table :size 5000000)
- sui-lrlus-hash (make-hash-table :size 6000000)
- cuisui-lrlus-hash (make-hash-table :size 6000000)
- sab-srl-hash (make-hash-table :size 200 :test 'equal)
+ pfstr-hash (make-hash-table :size 1500000)
+ cui-lrl-hash (make-hash-table :size 1500000)
+ lui-lrl-hash (make-hash-table :size 5000000)
+ sui-lrl-hash (make-hash-table :size 6000000)
+ cuisui-lrl-hash (make-hash-table :size 6000000)
+ cui-lrlus-hash (make-hash-table :size 1500000)
+ lui-lrlus-hash (make-hash-table :size 5000000)
+ sui-lrlus-hash (make-hash-table :size 6000000)
+ cuisui-lrlus-hash (make-hash-table :size 6000000)
+ sab-srl-hash (make-hash-table :size 200 :test 'equal)
sab-srlus-hash (make-hash-table :size 200 :test 'equal))))
(defun ensure-preparse (&optional (force-read nil))
(when (and (string-equal (vff "MRCONSO.RRF" "LAT" line) "ENG")
(string-equal (vff "MRCONSO.RRF" "TS" line) "P")
(string-equal (vff "MRCONSO.RRF" "STT" line) "PF"))
- (setf (gethash cui pfstr-hash) (vff "MRCONSO.RRF" "STR" line))))
+ (setf (gethash cui pfstr-hash) (vff "MRCONSO.RRF" "STR" 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)
(declare (type (or null fixnum) hash-lrl)
(boolean found))
(if (or (not found) (< srl hash-lrl))
- (setf (gethash key hash) srl))))
+ (setf (gethash key hash) srl))))
;; UMLS file and column structures
;;; SQL datatypes symbols
(parse-ui (vff "MRCONSO.RRF" "SUI" x))))))
("MRCONSO.RRF" "KCUILUI" "BIGINT" 0
(lambda (x) (write-to-string (make-cuilui (parse-ui (vff "MRCONSO.RRF" "CUI" x))
- (parse-ui (vff "MRCONSO.RRF" "SUI" x))))))
+ (parse-ui (vff "MRCONSO.RRF" "LUI" x))))))
("MRCONSO.RRF" "KCUILRL" "TINYINT" 0
(lambda (x) (write-to-string (cui-lrl (parse-ui (vff "MRCONSO.RRF" "CUI" x))))))
("MRCONSO.RRF" "KCUILRLUS" "TINYINT" 0
(lambda (x) (write-to-string (cui-lrlus (parse-ui (vff "MRSTY.RRF" "CUI" x))))))
("MRCOC.RRF" "KLRL" "TINYINT" 0
(lambda (x) (write-to-string
- (max (cui-lrl (parse-ui (vff "MRCOC.RRF" "CUI1" x)))
- (kmrcl:aif (cui-lrl (parse-ui (vff "MRCOC.RRF" "CUI2" x))) kmrcl::it 0)))))
+ (max (cui-lrl (parse-ui (vff "MRCOC.RRF" "CUI1" x)))
+ (kmrcl:aif (cui-lrl (parse-ui (vff "MRCOC.RRF" "CUI2" x))) kmrcl::it 0)))))
("MRCOC.RRF" "KLRLUS" "TINYINT" 0
(lambda (x) (write-to-string
- (max (cui-lrlus (parse-ui (vff "MRCOC.RRF" "CUI1" x)))
- (kmrcl:aif (cui-lrl (parse-ui (vff "MRCOC.RRF" "CUI2" x))) kmrcl::it 0)))))
+ (max (cui-lrlus (parse-ui (vff "MRCOC.RRF" "CUI1" x)))
+ (kmrcl:aif (cui-lrl (parse-ui (vff "MRCOC.RRF" "CUI2" x))) kmrcl::it 0)))))
("MRSAT.RRF" "KSRL" "TINYINT" 0
(lambda (x) (write-to-string (sab-srl (vff "MRSAT.RRF" "SAB" x)))))
("MRSAT.RRF" "KSRLUS" "TINYINT" 0
(lambda (x) (write-to-string (sab-srlus (vff "MRDEF.RRF" "SAB" x)))))
("MRXW_ENG.RRF" "KLRL" "TINYINT" 0
(lambda (x) (write-to-string (cuisui-lrl (make-cuisui
- (parse-ui (vff "MRXW_ENG.RRF" "CUI" x))
- (parse-ui (vff "MRXW_ENG.RRF" "SUI" x)))))))
+ (parse-ui (vff "MRXW_ENG.RRF" "CUI" x))
+ (parse-ui (vff "MRXW_ENG.RRF" "SUI" x)))))))
("MRXW_ENG.RRF" "KLRLUS" "TINYINT" 0
(lambda (x) (write-to-string (cuisui-lrlus (make-cuisui
- (parse-ui (vff "MRXW_ENG.RRF" "CUI" x))
- (parse-ui (vff "MRXW_ENG.RRF" "SUI" x)))))))
+ (parse-ui (vff "MRXW_ENG.RRF" "CUI" x))
+ (parse-ui (vff "MRXW_ENG.RRF" "SUI" x)))))))
("MRXW_NONENG.RRF" "KLRL" "TINYINT" 0
(lambda (x) (write-to-string (cuisui-lrl (make-cuisui
- (parse-ui (vff "MRXW_NONENG.RRF" "CUI" x))
- (parse-ui (vff "MRXW_NONENG.RRF" "SUI" x)))))))
+ (parse-ui (vff "MRXW_NONENG.RRF" "CUI" x))
+ (parse-ui (vff "MRXW_NONENG.RRF" "SUI" x)))))))
("MRXW_NONENG.RRF" "KLRLUS" "TINYINT" 0
(lambda (x) (write-to-string (cuisui-lrlus (make-cuisui
- (parse-ui (vff "MRXW_NONENG.RRF" "CUI" x))
- (parse-ui (vff "MRXW_NONENG.RRF" "SUI" x)))))))
+ (parse-ui (vff "MRXW_NONENG.RRF" "CUI" x))
+ (parse-ui (vff "MRXW_NONENG.RRF" "SUI" x)))))))
("MRXNW_ENG.RRF" "KLRL" "TINYINT" 0
(lambda (x) (write-to-string (cuisui-lrl (make-cuisui
- (parse-ui (vff "MRXNW_ENG.RRF" "CUI" x))
- (parse-ui (vff "MRXNW_ENG.RRF" "SUI" x)))))))
+ (parse-ui (vff "MRXNW_ENG.RRF" "CUI" x))
+ (parse-ui (vff "MRXNW_ENG.RRF" "SUI" x)))))))
("MRXNW_ENG.RRF" "KLRLUS" "TINYINT" 0
(lambda (x) (write-to-string (cuisui-lrlus (make-cuisui
- (parse-ui (vff "MRXNW_ENG.RRF" "CUI" x))
- (parse-ui (vff "MRXNW_ENG.RRF" "SUI" x)))))))
+ (parse-ui (vff "MRXNW_ENG.RRF" "CUI" x))
+ (parse-ui (vff "MRXNW_ENG.RRF" "SUI" x)))))))
("MRXNS_ENG.RRF" "KLRL" "TINYINT" 0
(lambda (x) (write-to-string (cuisui-lrl (make-cuisui
- (parse-ui (vff "MRXNS_ENG.RRF" "CUI" x))
- (parse-ui (vff "MRXNS_ENG.RRF" "SUI" x)))))))
+ (parse-ui (vff "MRXNS_ENG.RRF" "CUI" x))
+ (parse-ui (vff "MRXNS_ENG.RRF" "SUI" x)))))))
("MRXNS_ENG.RRF" "KLRLUS" "TINYINT" 0
(lambda (x) (write-to-string (cuisui-lrlus (make-cuisui
- (parse-ui (vff "MRXNS_ENG.RRF" "CUI" x))
- (parse-ui (vff "MRXNS_ENG.RRF" "SUI" x)))))))
+ (parse-ui (vff "MRXNS_ENG.RRF" "CUI" x))
+ (parse-ui (vff "MRXNS_ENG.RRF" "SUI" x)))))))
#+nil ("MRREL.RRF" "KPFSTR2" "TEXT" 1024 (lambda (x) (pfstr-hash (parse-ui (vff "MRREL.RRF" "CUI2" x)))))
#+nil ("MRCOC.RRF" "KPFSTR2" "TEXT" 1024 (lambda (x) (pfstr-hash (parse-ui (vff "MRCOC.RRF" "CUI2" x)))))
("CUI" "MRSAT") ("LUI" "MRSAT") ("SUI" "MRSAT")
("METAUI" "MRSAT") ("ATN" "MRSAT")
("CUI" "MRSTY") ("TUI" "MRSTY") ("CUI" "MRXNS_ENG")
- ("AUI" "MRHIER") ("CUI" "MRHIER") ("CXN" "MRHIER") ("RELA" "MRHIER") ("PAUI" "MRHIER")
- ("SAB" "MRHIER")
- #+ignore ("NSTR" "MRXNS_ENG" 10)
+ ("AUI" "MRHIER") ("CUI" "MRHIER") ("CXN" "MRHIER") ("RELA" "MRHIER")
+ ("PAUI" "MRHIER") ("SAB" "MRHIER")
+ ("NSTR" "MRXNS_ENG" 255)
("CUI" "MRXNW_ENG") ("NWD" "MRXNW_ENG") ("WD" "MRXW_ENG")
("KCUISUI" "MRCONSO") ("KCUILUI" "MRCONSO")
("KCUILRL" "MRCONSO") ("KLUILRL" "MRCONSO") ("KSUILRL" "MRCONSO")
("RL" "SRSTR")
("SRL" "MRSAB") ("KSRLUS" "MRSAB") ("RSAB" "MRSAB") ("VSAB" "MRSAB") ("RCUI" "MRSAB")
- ("VCUI" "MRSAB") ("LAT" "MRSAB") ("MAPSETCUI" "MRMAP") ("MAPSETCUI" "MRSMAP")
- ("CUI" "MRHIER"))
+ ("VCUI" "MRSAB") ("LAT" "MRSAB") ("MAPSETCUI" "MRMAP") ("MAPSETCUI" "MRSMAP"))
"Columns in files to index")
(let ((cols '()))
(with-umls-file (line "MRCOLS.RRF")
(destructuring-bind (col des ref min av max fil dty) line
- (push (make-ucol col des ref (parse-integer min) (read-from-string av)
- (parse-integer max) fil dty)
- cols)))
+ (push (make-ucol col des ref (parse-integer min) (read-from-string av)
+ (parse-integer max) fil dty)
+ cols)))
(nreverse cols)))
(defun gen-ucols-custom ()
"Initialize umls columns for custom columns"
(loop for customcol in +custom-cols+
- collect
- (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 (compile nil (nth 4 customcol)))))
+ collect
+ (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 (compile nil (nth 4 customcol)))))
(defun gen-ucols-generic (col-filename)
"Initialize for generic (LEX/NET) columns"
(let ((cols '()))
(with-umls-file (line col-filename)
(destructuring-bind (nam des ref fil) line
- (setq nam (escape-column-name nam))
- (dolist (file (delimited-string-to-list fil #\,))
- (push
- (make-ucol nam des ref nil nil nil file nil)
- cols))))
+ (setq nam (escape-column-name nam))
+ (dolist (file (delimited-string-to-list fil #\,))
+ (push
+ (make-ucol nam des ref nil nil nil file nil)
+ cols))))
(nreverse cols)))
(let ((files '()))
(with-umls-file (line files-filename)
(destructuring-bind (fil des fmt cls rws bts) line
- (push (make-ufile
- dir fil des
- (parse-integer cls)
- (parse-integer rws) (parse-integer bts)
- (concatenate 'list (umls-field-string-to-list fmt)
- (custom-colnames-for-filename fil)))
- files)))
+ (push (make-ufile
+ dir fil des
+ (parse-integer cls)
+ (parse-integer rws) (parse-integer bts)
+ (concatenate 'list (umls-field-string-to-list fmt)
+ (custom-colnames-for-filename fil)))
+ files)))
(nreverse files)))
(defun gen-ufiles-custom ()
(make-ufile "META" "MRXW_NONENG.RRF" "Custom NonEnglish Index"
- 5 0 0 (fields (find-ufile "MRXW_ENG.RRF"))))
+ 5 0 0 (fields (find-ufile "MRXW_ENG.RRF"))))