r4837: Auto commit for Debian build
[umlisp.git] / parse-2002.lisp
index 07f9b9cd3f992bfd73786511391c9631f0ae4712..79119fd9639192d15c498a00b4b6fe739256ab93 100644 (file)
@@ -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?*))
        (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)
 ;;; 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)
       ;;; 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
        (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")
       ;; 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"))