r3334: *** empty log message ***
[umlisp.git] / sql-classes.lisp
index 5aae593acb5fe9ca821ed7564535f035dbe9a47d..0718c808f7cb101db3c68b727926a7e190bdc86d 100644 (file)
@@ -7,7 +7,7 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Apr 2000
 ;;;;
-;;;; $Id: sql-classes.lisp,v 1.3 2002/10/09 23:03:41 kevin Exp $
+;;;; $Id: sql-classes.lisp,v 1.7 2002/11/07 23:08:00 kevin Exp $
 ;;;;
 ;;;; This file, part of UMLisp, is
 ;;;;    Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D.
 ;;; Lookup functions for uterms,ustr in ucons
 
 (defun find-uterm-in-ucon (ucon lui)
-  (find lui (s#term ucon) :key #'uterm-lui :test 'equal))
+  (find lui (s#term ucon) :key #'lui :test 'equal))
 
 (defun find-ustr-in-uterm (uterm sui)
-  (find sui (s#str uterm) :key #'ustr-sui :test 'equal))
+  (find sui (s#str uterm) :key #'sui :test 'equal))
 
 (defun find-ustr-in-ucon (ucon sui)
   (let ((found-ustr nil))
        ls
        :database db))))
 
+(defun map-ucon-all (fn &key (srl *current-srl*))
+  "Return list of all ucon's"
+  (let ((ls "select distinct CUI,KPFSTR,KCUILRL from MRCON"))
+    (when srl
+      (string-append ls (format nil " where KCUILRL <= ~d" srl)))
+    (string-append ls " order by CUI asc")
+    (with-sql-connection (db)
+      (clsql:map-query 
+       nil
+       #'(lambda (cui pfstr cuilrl)
+          (funcall fn
+                   (make-instance 'ucon :cui (ensure-integer cui)
+                                  :pfstr pfstr
+                                  :lrl (ensure-integer cuilrl))))
+       ls
+       :database db))))
 
 
 (defun find-udef-cui (cui &key (srl *current-srl*))
 
 (defun find-ucon-rel-cui2 (cui2 &key (srl *current-srl*))
   (mapcar 
-   #'(lambda (cui) (find-ucon-cui cui :key srl))
+   #'(lambda (cui) (find-ucon-cui cui :srl srl))
    (remove-duplicates (mapcar #'cui1 (find-urel-cui2 cui2 :srl srl)))))
 
 (defun find-ucoc-cui (cui &key (srl *current-srl*))
 (defun find-ucon-coc-cui2 (cui2 &key (srl *current-srl*))
   "List of ucon with co-occurance cui2"
   (mapcar 
-   #'(lambda (cui) (find-ucon-cui cui :key srl))
+   #'(lambda (cui) (find-ucon-cui cui :srl srl))
    (remove-duplicates (mapcar #'cui1 (find-ucoc-cui2 cui2 :srl srl)))))
 
 (defun find-ulo-cui (cui &key (srl *current-srl*))
            ulos))
     (nreverse ulos)))
 
+(defgeneric suistr (lo))
 (defmethod suistr ((lo ulo))
   "Return the string for a ulo object"
   (find-string-sui (sui lo)))
       (push (find-usty-tui (nth 0 tuple)) ustys))
     (nreverse ustys)))
 
-(defun find-usty_freq-all ()
-  (let ((usty_freqs '()))
-    (dolist (tuple (mutex-sql-query "select distinct TUI from MRSTY"))
-      (let* ((tui (car tuple))
-            (freq (ensure-integer 
-                    (caar (mutex-sql-query 
-                           (format nil "select count(*) from MRSTY where TUI=~a" tui))))))
-       (push (make-instance 'usty_freq :usty (find-usty-tui tui) :freq freq) usty_freqs)))
-    (sort usty_freqs #'> :key #'usty_freq-freq)))
-       
-
-
 
 (defun find-cui-max ()
   (let ((cui (caar (mutex-sql-query "select max(CUI) from MRCON"))))
            ustrs))
     ustrs))
 
+;; Special tables
+
+(defun find-usrl-all ()
+  (let ((usrls '())
+       (tuples (mutex-sql-query "select SAB,SRL from USRL order by SAB desc")))
+    (dolist (tuple tuples)
+      (push (make-instance 'usrl :sab (nth 0 tuple)
+                          :srl (ensure-integer (nth 1 tuple))) usrls))
+    usrls))
 
 ;;; Multiword lookup and score functions