X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=parse-2002.lisp;h=79119fd9639192d15c498a00b4b6fe739256ab93;hb=9713ebfd8e6ac341920ed53c25ab009d5ce4c806;hp=07f9b9cd3f992bfd73786511391c9631f0ae4712;hpb=bfdd5c9d3d66970759fcdbee5a51da2ca93ddf06;p=umlisp.git diff --git a/parse-2002.lisp b/parse-2002.lisp index 07f9b9c..79119fd 100644 --- a/parse-2002.lisp +++ b/parse-2002.lisp @@ -8,7 +8,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Apr 2000 ;;;; -;;;; $Id: parse-2002.lisp,v 1.3 2002/10/09 23:03:41 kevin Exp $ +;;;; $Id: parse-2002.lisp,v 1.6 2003/05/06 06:09:29 kevin Exp $ ;;;; ;;;; This file, part of UMLisp, is ;;;; Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D. @@ -51,9 +51,9 @@ (setq *parse-hash-init?* t)) (with-buffered-umls-file (line "MRCON") (let ((cui (parse-ui (aref line 0))) - (lui (parse-ui (nth 3 line))) - (sui (parse-ui (nth 5 line))) - (lrl (parse-integer (nth 7 line)))) + (lui (parse-ui (aref line 3))) + (sui (parse-ui (aref line 5))) + (lrl (parse-integer (aref line 7)))) (unless (gethash cui pfstr-hash) ;; if haven't stored pfstr for cui (if (and (string-equal (aref line 1) "ENG") ; LAT (string-equal (aref line 2) "P") ; ts @@ -63,9 +63,9 @@ (set-lrl-hash lui lrl lui-lrl-hash) (set-lrl-hash (make-cuisui cui sui) lrl cuisui-lrl-hash))) (with-buffered-umls-file (line "MRSO") - (let ((sab (aref 3 line))) + (let ((sab (aref line 3))) (unless (gethash sab sab-srl-hash) ;; if haven't stored - (setf (gethash sab sab-srl-hash) (aref 6 line)))))) + (setf (gethash sab sab-srl-hash) (aref line 6)))))) (defun init-hash-table (&optional (force-read nil)) (when (or force-read (not *parse-hash-init?*)) @@ -114,17 +114,6 @@ (setf (gethash key hash) lrl)))) ;; UMLS file and column structures - -(defstruct (umls-file) - "Record for each UMLS File" - fil table des fmt cls rws bts fields colstructs) - -(defstruct (umls-col) - "Record for each UMLS Column in each file" - col des ref min av max fil sqltype - dty ;; new in 2002 umls: suggested SQL datatype - parsefunc quotechar datatype custom-value-func) - ;;; SQL datatypes symbols ;;; sql-u - Unique identifier ;;; sql-s - Small integer (16-bit) @@ -132,7 +121,7 @@ ;;; sql-l - Big integer (64-bit) ;;; sql-f - Floating point -(defconstant +col-datatypes+ +(defparameter +col-datatypes+ '(("AV" sql-f) ("BTS" sql-i) ("CLS" sql-i) ("COF" sql-i) ("CUI1" 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-s) @@ -143,17 +132,20 @@ ;;; LEX columns ("EUI" sql-u) ("EUI2" sql-u) ;;; Semantic net columns - ("UI" sql-u) ("UI2" sql-u) ("UI3" 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) + ) "SQL data types for each non-string column") -(defconstant +custom-tables+ +(defparameter +custom-tables+ nil #+ignore '(("MRCONSO" "SELECT m.CUI, m.LAT, m.TS, m.LUI, m.STT, m.SUI, m.STR, m.LRL, s.SAB, s.TTY, s.SCD, s.SRL FROM MRCON m, MRSO s WHERE m.CUI=s.CUI AND m.LUI=s.LUI AND m.SUI=s.SUI") ("MRCONFULL" "SELECT m.CUI, m.LAT, m.TS, m.LUI, m.STT, m.SUI, m.STR, m.LRL, s.SAB, s.TTY, s.SCD, s.SRL, t.TUI FROM MRCON m, MRSO s, MRSTY t WHERE m.CUI=s.CUI AND m.LUI=s.LUI AND m.SUI=s.SUI AND m.CUI=t.CUI AND s.CUI=t.CUI")) "Custom tables to create") -(defconstant +custom-cols+ +(defparameter +custom-cols+ '(("MRCON" "KPFSTR" "TEXT" 1024 (lambda (x) (pfstr-hash (parse-ui (nth 0 x))))) ("MRCON" "KCUISUI" "BIGINT" 0 @@ -223,14 +215,14 @@ (lambda (x) (format nil "~d" (make-cuisui (parse-ui (nth 2 x)) (parse-ui (nth 4 x)))))) ("MRXW.NONENG" "LAT" "CHAR" 3 (lambda (x) (nth 0 x))) ("MRXW.NONENG" "WD" "CHAR" 200 (lambda (x) (nth 1 x))) - ("MRXW.NONENG" "CUI" "INTEGER" 0 (lambda (x) (nth 2 x))) - ("MRXW.NONENG" "LUI" "INTEGER" 0 (lambda (x) (nth 3 x))) - ("MRXW.NONENG" "SUI" "INTEGER" 0 (lambda (x) (nth 4 x))) + ("MRXW.NONENG" "CUI" "INTEGER" 0 (lambda (x) (parse-ui (nth 2 x)))) + ("MRXW.NONENG" "LUI" "INTEGER" 0 (lambda (x) (parse-ui (nth 3 x)))) + ("MRXW.NONENG" "SUI" "INTEGER" 0 (lambda (x) (parse-ui (nth 4 x)))) ("MRXW.NONENG" "KCUISUI" "BIGINT" 0 (lambda (x) (format nil "~d" (make-cuisui (parse-ui (nth 2 x)) (parse-ui (nth 4 x))))))) "Custom columns to create.(filename, col, sqltype, value-func).") -(defconstant +index-cols+ +(defparameter +index-cols+ '(("CUI" "MRATX") ("CUI1" "MRCOC") ("CUI" "MRCON") ("LUI" "MRCON") ("LRL" "MRCON") ("SUI" "MRCON") ("CUI" "MRCXT") ("CUI" "MRDEF") ("CUI" "MRLO") @@ -255,11 +247,12 @@ ;; Semantic NET indices ("UI" "SRSTRE1") ("UI2" "SRSTRE1") ("UI3" "SRSTRE1") ("STY_RL" "SRDEF") ("RT" "SRDEF") ("STY_RL" "SRSTR") ("STY_RL2" "SRSTR") - ("RL" "SRSTR")) + ("RL" "SRSTR") + ("SRL" "MRSAB") ("RSAB" "MRSAB") ("VSAB" "MRSAB") ("RCUI" "MRSAB") + ("VCUI" "MRSAB") ("LAT" "MRSAB")) "Columns in files to index") - -(defconstant +custom-index-cols+ +(defparameter +custom-index-cols+ nil #+ignore '(("CUI" "MRCONFULL") ("SAB" "MRCONFULL") ("TUI" "MRCONFULL"))