X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=parse-rrf.lisp;h=793f81cfeb1d4fd04adf2450c18654f9c8783c83;hb=62ce365967f05ec6a2945a20cd5c45efb7b809e5;hp=8b13b3a6c562c30781f61fc44b99f38636b1f05f;hpb=188873f068b0c53febe4ee0ededbc755fce4869d;p=umlisp.git diff --git a/parse-rrf.lisp b/parse-rrf.lisp index 8b13b3a..793f81c 100644 --- a/parse-rrf.lisp +++ b/parse-rrf.lisp @@ -23,24 +23,27 @@ (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)))) @@ -61,26 +64,20 @@ (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) @@ -100,7 +97,8 @@ (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) ("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) @@ -113,62 +111,66 @@ ("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) + ("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))))))) @@ -198,7 +200,7 @@ "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") @@ -206,12 +208,12 @@ ("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") @@ -233,7 +235,7 @@ (defparameter +custom-index-cols+ nil #+ignore - '(("CUI" "MRCONFULL") ("SAB" "MRCONFULL") ("TUI" "MRCONFULL")) + '(("CUI" "KCON") ("LRL" "KCON")) "Indexes to custom tables") ;; File & Column functions @@ -258,8 +260,8 @@ "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)