X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=parse-rrf.lisp;fp=parse-rrf.lisp;h=8a1bb1ebd47f116fcd5cdc7710a50d9634cdf83e;hb=88be55a3921b3078570bb737da197c671117a719;hp=d54c6b2e2f4ff8766fdfd60d26d28ef58a8cf5fb;hpb=3db136b81ed93cbffde0597bf684d2366860e0f2;p=umlisp.git diff --git a/parse-rrf.lisp b/parse-rrf.lisp index d54c6b2..8a1bb1e 100644 --- a/parse-rrf.lisp +++ b/parse-rrf.lisp @@ -50,20 +50,22 @@ used in the United States. We create a new scale (SRLUS) where SRL to SRLUS mapp (sab-srl-hash nil) (sab-srlus-hash nil)) ;; SRL by SAB + (defun clear-preparse-hash-tables () + (clrhash pfstr-hash) + (clrhash cui-lrl-hash) + (clrhash lui-lrl-hash) + (clrhash sui-lrl-hash) + (clrhash cuisui-lrl-hash) + (clrhash cui-lrlus-hash) + (clrhash lui-lrlus-hash) + (clrhash sui-lrlus-hash) + (clrhash cuisui-lrlus-hash) + (clrhash sab-srl-hash) + (clrhash sab-srlus-hash)) + (defun make-preparse-hash-table () (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 cui-lrlus-hash) - (clrhash lui-lrlus-hash) - (clrhash sui-lrlus-hash) - (clrhash cuisui-lrlus-hash) - (clrhash sab-srl-hash) - (clrhash sab-srlus-hash)) + (clear-preparse-hash-tables) (setf pfstr-hash (make-hash-table :size 1500000) cui-lrl-hash (make-hash-table :size 1500000) @@ -134,7 +136,7 @@ used in the United States. We create a new scale (SRLUS) where SRL to SRLUS mapp )) ;; closure - + (defun set-lrl-hash (key srl hash) "Set the least restrictive level in hash table" (declare (fixnum srl)) @@ -158,13 +160,13 @@ used in the United States. We create a new scale (SRLUS) where SRL to SRLUS mapp '(("AV" sql-f) ("BTS" sql-i) ("CLS" sql-i) ("COF" sql-i) ("CUI1" sql-u) ("AUI" sql-u) ("AUI1" sql-u) ("AUI2" sql-u) ("PCUI" sql-u) ("PLUI" sql-u) ("PAUI" sql-u) ("RUI" sql-u) - ("CUI2" sql-u) ("CUI" sql-u) ("CXN" sql-s) ("FR" sql-i) + ("CUI2" sql-u) ("CUI" sql-u) ("CXN" sql-s) ("FR" sql-i) ("LUI" sql-u) ("MAX" sql-s) ("MIN" sql-s) ("RANK" sql-s) ("REF" sql-c) ("PTR" sql-c) ("RNK" sql-s) ("RWS" sql-i) ("SRL" sql-t) ("SUI" sql-u) ("TUI" sql-u) ("MAPRANK" sql-s) ;;; Custom columns - ("KCUISUI" sql-l) ("KCUILUI" sql-l) + ("KCUISUI" sql-l) ("KCUILUI" sql-l) ("KSRL" sql-t) ("KSRLUS" sql-t) ("LRL" sql-t) ("LRLUS" sql-t) ("KCUILRL" sql-t) ("KLUILRL" sql-t) ("KSUILRL" sql-t) ("KLRL" sql-t) ("KCUILRLUS" sql-t) ("KLUILRLUS" sql-t) ("KSUILRLUS" sql-t) ("KLRLUS" sql-t) @@ -185,6 +187,14 @@ used in the United States. We create a new scale (SRLUS) where SRL to SRLUS mapp '(("KCON" "SELECT CUI,STR FROM MRCONSO WHERE STT='PF' AND TS='P' AND ISPREF='Y' AND LAT='ENG'")) "Custom tables to create") +(declaim (inline vff)) +(defun vff (filename fieldname record) + (let ((pos (position-field-file filename fieldname))) + (unless pos + (error "Did not find fieldname ~A in filename ~A." fieldname filename)) + (locally (declare (fixnum pos)) + (nth pos record)))) + (defparameter +custom-cols+ '(#+nil ("MRCONSO.RRF" "KPFSTR" "TEXT" (slot-value (find-ucol "STR" "MRCONSO.RRF") 'max) @@ -197,118 +207,133 @@ used in the United States. We create a new scale (SRLUS) where SRL to SRLUS mapp "1" "0"))) ("MRCONSO.RRF" "KCUISUI" "BIGINT" 0 - (lambda (x) (write-to-string (make-cuisui (parse-ui (nth 0 x)) (parse-ui (nth 5 x)))))) + (lambda (x) (write-to-string (make-cuisui (parse-ui (vff "MRCONSO.RRF" "CUI" x)) + (parse-ui (vff "MRCONSO.RRF" "SUI" x)))))) ("MRCONSO.RRF" "KCUILUI" "BIGINT" 0 - (lambda (x) (write-to-string (make-cuilui (parse-ui (nth 0 x)) (parse-ui (nth 3 x)))))) + (lambda (x) (write-to-string (make-cuilui (parse-ui (vff "MRCONSO.RRF" "CUI" x)) + (parse-ui (vff "MRCONSO.RRF" "SUI" x)))))) ("MRCONSO.RRF" "KCUILRL" "TINYINT" 0 - (lambda (x) (write-to-string (cui-lrl (parse-ui (nth 0 x)))))) + (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 (nth 0 x)))))) + (lambda (x) (write-to-string (cui-lrlus (parse-ui (vff "MRCONSO.RRF" "CUI" x)))))) ("MRCONSO.RRF" "KLUILRL" "TINYINT" 0 - (lambda (x) (write-to-string (lui-lrl (parse-ui (nth 3 x)))))) + (lambda (x) (write-to-string (lui-lrl (parse-ui (vff "MRCONSO.RRF" "LUI" x)))))) ("MRCONSO.RRF" "KLUILRLUS" "TINYINT" 0 - (lambda (x) (write-to-string (lui-lrlus (parse-ui (nth 3 x)))))) + (lambda (x) (write-to-string (lui-lrlus (parse-ui (vff "MRCONSO.RRF" "LUI" x)))))) ("MRCONSO.RRF" "KSUILRL" "TINYINT" 0 - (lambda (x) (write-to-string (sui-lrl (parse-ui (nth 5 x)))))) + (lambda (x) (write-to-string (sui-lrl (parse-ui (vff "MRCONSO.RRF" "SUI" x)))))) ("MRCONSO.RRF" "KSUILRLUS" "TINYINT" 0 - (lambda (x) (write-to-string (sui-lrlus (parse-ui (nth 5 x)))))) + (lambda (x) (write-to-string (sui-lrlus (parse-ui (vff "MRCONSO.RRF" "SUI" x)))))) ("MRCONSO.RRF" "KSRLUS" "TINYINT" 0 - (lambda (x) (write-to-string (srl-to-srlus (parse-integer (nth 15 x)))))) + (lambda (x) (write-to-string (srl-to-srlus (parse-integer (vff "MRCONSO.RRF" "SRL" x)))))) ("MRSAB.RRF" "KSRLUS" "TINYINT" 0 - (lambda (x) (write-to-string (srl-to-srlus (parse-integer (nth 3 x)))))) + (lambda (x) (write-to-string (srl-to-srlus (parse-integer (vff "MRSAB.RRF" "SRL" x)))))) ("MRSTY.RRF" "KLRL" "TINYINT" 0 - (lambda (x) (write-to-string (cui-lrl (parse-ui (nth 0 x)))))) + (lambda (x) (write-to-string (cui-lrl (parse-ui (vff "MRSTY.RRF" "CUI" x)))))) ("MRSTY.RRF" "KLRLUS" "TINYINT" 0 - (lambda (x) (write-to-string (cui-lrlus (parse-ui (nth 0 x)))))) + (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 (nth 0 x))) - (kmrcl:aif (cui-lrl (parse-ui (nth 1 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 (nth 0 x))) - (kmrcl:aif (cui-lrl (parse-ui (nth 1 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 (nth 9 x))))) + (lambda (x) (write-to-string (sab-srl (vff "MRSAT.RRF" "SAB" x))))) ("MRSAT.RRF" "KSRLUS" "TINYINT" 0 - (lambda (x) (write-to-string (sab-srlus (nth 9 x))))) + (lambda (x) (write-to-string (sab-srlus (vff "MRSAT.RRF" "SAB" x))))) ("MRREL.RRF" "KSRL" "TINYINT" 0 - (lambda (x) (write-to-string (sab-srl (nth 10 x))))) + (lambda (x) (write-to-string (sab-srl (vff "MRREL.RRF" "SAB" x))))) ("MRREL.RRF" "KSRLUS" "TINYINT" 0 - (lambda (x) (write-to-string (sab-srlus (nth 10 x))))) + (lambda (x) (write-to-string (sab-srlus (vff "MRREL.RRF" "SAB" x))))) ("MRRANK.RRF" "KSRL" "TINYINT" 0 - (lambda (x) (write-to-string (sab-srl (nth 1 x))))) + (lambda (x) (write-to-string (sab-srl (vff "MRRANK.RRF" "SAB" x))))) ("MRRANK.RRF" "KSRLUS" "TINYINT" 0 - (lambda (x) (write-to-string (sab-srlus (nth 1 x))))) + (lambda (x) (write-to-string (sab-srlus (vff "MRRANK.RRF" "SAB" x))))) ("MRHIER.RRF" "KSRL" "TINYINT" 0 - (lambda (x) (write-to-string (sab-srl (nth 4 x))))) + (lambda (x) (write-to-string (sab-srl (vff "MRHIER.RRF" "SAB" x))))) ("MRHIER.RRF" "KSRLUS" "TINYINT" 0 - (lambda (x) (write-to-string (sab-srlus (nth 4 x))))) + (lambda (x) (write-to-string (sab-srlus (vff "MRHIER.RRF" "SAB" x))))) ("MRMAP.RRF" "KSRL" "TINYINT" 0 - (lambda (x) (write-to-string (sab-srl (nth 1 x))))) + (lambda (x) (write-to-string (sab-srl (vff "MRMAP.RRF" "MAPSETSAB" x))))) ("MRMAP.RRF" "KSRLUS" "TINYINT" 0 - (lambda (x) (write-to-string (sab-srlus (nth 1 x))))) + (lambda (x) (write-to-string (sab-srlus (vff "MRMAP.RRF" "MAPSETSAB" x))))) ("MRSMAP.RRF" "KSRL" "TINYINT" 0 - (lambda (x) (write-to-string (sab-srl (nth 1 x))))) + (lambda (x) (write-to-string (sab-srl (vff "MRSMAP.RRF" "MAPSETSAB" x))))) ("MRSMAP.RRF" "KSRLUS" "TINYINT" 0 - (lambda (x) (write-to-string (sab-srlus (nth 1 x))))) + (lambda (x) (write-to-string (sab-srlus (vff "MRSMAP.RRF" "MAPSETSAB" x))))) ("MRDEF.RRF" "KSRL" "TINYINT" 0 - (lambda (x) (write-to-string (sab-srl (nth 4 x))))) + (lambda (x) (write-to-string (sab-srl (vff "MRDEF.RRF" "SAB" x))))) ("MRDEF.RRF" "KSRLUS" "TINYINT" 0 - (lambda (x) (write-to-string (sab-srlus (nth 4 x))))) + (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 (nth 2 x)) - (parse-ui (nth 4 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 (nth 2 x)) - (parse-ui (nth 4 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 (nth 2 x)) - (parse-ui (nth 4 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 (nth 2 x)) - (parse-ui (nth 4 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 (nth 2 x)) - (parse-ui (nth 4 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 (nth 2 x)) - (parse-ui (nth 4 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 (nth 2 x)) - (parse-ui (nth 4 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 (nth 2 x)) - (parse-ui (nth 4 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 (nth 4 x))))) #+nil ("MRCOC.RRF" "KPFSTR2" "TEXT" 1024 (lambda (x) (pfstr-hash (parse-ui (nth 2 x))))) + ("MRSAT.RRF" "KCUILUI" "BIGINT" 0 - (lambda (x) (write-to-string (make-cuilui (parse-ui (nth 0 x)) (parse-ui (nth 1 x)))))) + (lambda (x) (write-to-string (make-cuilui + (parse-ui (vff "MRSAT.RRF" "CUI" x)) + (parse-ui (vff "MRSAT.RRF" "LUI" x)))))) ("MRSAT.RRF" "KCUISUI" "BIGINT" 0 - (lambda (x) (write-to-string (make-cuisui (parse-ui (nth 0 x)) (parse-ui (nth 2 x)))))) + (lambda (x) (write-to-string (make-cuisui + (parse-ui (vff "MRSAT.RRF" "CUI" x)) + (parse-ui (vff "MRSAT.RRF" "SUI" x)))))) ("MRXW_ENG.RRF" "KCUISUI" "BIGINT" 0 - (lambda (x) (write-to-string (make-cuisui (parse-ui (nth 2 x)) (parse-ui (nth 4 x)))))) + (lambda (x) (write-to-string (make-cuisui + (parse-ui (vff "MRXW_ENG.RRF" "CUI" x)) + (parse-ui (vff "MRXW_ENG.RRF" "SUI" x)))))) ("MRXNW_ENG.RRF" "KCUISUI" "BIGINT" 0 - (lambda (x) (write-to-string (make-cuisui (parse-ui (nth 2 x)) (parse-ui (nth 4 x)))))) + (lambda (x) (write-to-string (make-cuisui + (parse-ui (vff "MRXNW_ENG.RRF" "CUI" x)) + (parse-ui (vff "MRXNW_ENG.RRF" "SUI" x)))))) ("MRXNS_ENG.RRF" "KCUISUI" "BIGINT" 0 - (lambda (x) (write-to-string (make-cuisui (parse-ui (nth 2 x)) (parse-ui (nth 4 x)))))) - ("MRXW_NONENG.RRF" "LAT" "VARCHAR" 3 (lambda (x) (nth 0 x))) - ("MRXW_NONENG.RRF" "WD" "VARCHAR" 200 (lambda (x) (nth 1 x))) - ("MRXW_NONENG.RRF" "CUI" "INTEGER" 0 (lambda (x) (write-to-string (parse-ui (nth 2 x))))) - ("MRXW_NONENG.RRF" "LUI" "INTEGER" 0 (lambda (x) (write-to-string (parse-ui (nth 3 x))))) - ("MRXW_NONENG.RRF" "SUI" "INTEGER" 0 (lambda (x) (write-to-string (parse-ui (nth 4 x))))) + (lambda (x) (write-to-string (make-cuisui + (parse-ui (vff "MRXNS_ENG.RRF" "CUI" x)) + (parse-ui (vff "MRXNS_ENG.RRF" "SUI" x)))))) + ("MRXW_NONENG.RRF" "LAT" "VARCHAR" 3 (lambda (x) (vff "MRXW_NONENG.RRF" "LAT" x))) + ("MRXW_NONENG.RRF" "WD" "VARCHAR" 200 (lambda (x) (vff "MRXW_NONENG.RRF" "WD" x))) + ("MRXW_NONENG.RRF" "CUI" "INTEGER" 0 (lambda (x) (write-to-string (parse-ui (vff "MRXW_NONENG.RRF" "CUI" x))))) + ("MRXW_NONENG.RRF" "LUI" "INTEGER" 0 (lambda (x) (write-to-string (parse-ui (vff "MRXW_NONENG.RRF" "LUI" x))))) + ("MRXW_NONENG.RRF" "SUI" "INTEGER" 0 (lambda (x) (write-to-string (parse-ui (vff "MRXW_NONENG.RRF" "SUI" x))))) ("MRXW_NONENG.RRF" "KCUISUI" "BIGINT" 0 - (lambda (x) (write-to-string (make-cuisui (parse-ui (nth 2 x)) (parse-ui (nth 4 x))))))) - "Custom columns to create.(filename, col, sqltype, value-func).") + (lambda (x) (write-to-string (make-cuisui + (parse-ui (vff "MRXW_NONENG.RRF" "CUI" x)) + (parse-ui (vff "MRXW_NONENG.RRF" "SUI" x))))))) + "Custom columns to create.(filename, col, sqltype, value-func).") (defparameter +index-cols+ '(("CUI1" "MRCOC") ("CUI" "MRCONSO") ("LUI" "MRCONSO") @@ -325,14 +350,14 @@ used in the United States. We create a new scale (SRLUS) where SRL to SRLUS mapp ("SAB" "MRHIER") #+ignore ("NSTR" "MRXNS_ENG" 10) ("CUI" "MRXNW_ENG") ("NWD" "MRXNW_ENG") ("WD" "MRXW_ENG") - ("KCUISUI" "MRCONSO") ("KCUILUI" "MRCONSO") + ("KCUISUI" "MRCONSO") ("KCUILUI" "MRCONSO") ("KCUILRL" "MRCONSO") ("KLUILRL" "MRCONSO") ("KSUILRL" "MRCONSO") ("KCUILRLUS" "MRCONSO") ("KLUILRLUS" "MRCONSO") ("KSUILRLUS" "MRCONSO") ("KCUISUI" "MRSAT") ("KCUILUI" "MRSAT") ("KCUISUI" "MRXW_ENG") ("KCUISUI" "MRXNW_ENG") ("KCUISUI" "MRXNS_ENG") ("KCUISUI" "MRXW_NONENG") - ("KSRL" "MRDEF") ("KSRL" "MRRANK")("KSRL" "MRREL") ("KSRL" "MRSAT") - ("KSRLUS" "MRDEF") ("KSRLUS" "MRRANK")("KSRLUS" "MRREL") ("KSRLUS" "MRSAT") + ("KSRL" "MRDEF") ("KSRL" "MRRANK")("KSRL" "MRREL") ("KSRL" "MRSAT") + ("KSRLUS" "MRDEF") ("KSRLUS" "MRRANK")("KSRLUS" "MRREL") ("KSRLUS" "MRSAT") ("KLRL" "MRCOC") ("KLRL" "MRSTY") ("KLRL" "MRXW_ENG") ("KLRL" "MRXNW_ENG") ("KLRLUS" "MRCOC") ("KLRLUS" "MRSTY") ("KLRLUS" "MRXW_ENG") ("KLRLUS" "MRXNW_ENG") ("KLRL" "MRXNS_ENG") ("KLRL" "MRXW_NONENG") @@ -363,9 +388,9 @@ used in the United States. We create a new scale (SRLUS) where SRL to SRLUS mapp (defun gen-ucols () (add-ucols (gen-ucols-meta)) - (add-ucols (gen-ucols-custom)) (add-ucols (gen-ucols-generic "LRFLD")) - (add-ucols (gen-ucols-generic "SRFLD"))) + (add-ucols (gen-ucols-generic "SRFLD")) + (add-ucols (gen-ucols-custom))) (defun gen-ucols-meta () "Initialize all umls columns" @@ -383,7 +408,7 @@ used in the United States. We create a new scale (SRLUS) where SRL to SRLUS mapp 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 (nth 4 customcol)))) + :custom-value-fun (compile nil (nth 4 customcol))))) (defun gen-ucols-generic (col-filename) "Initialize for generic (LEX/NET) columns"