;;;; 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