r11624: improve find-uconso-code
[umlisp.git] / sql-classes.lisp
index eba8ce104b525a46fcb1c63679c61c6e5d95e37a..6bd0012f9809c2cbb3c32b2dd5293e2dfc0ac05a 100644 (file)
@@ -261,6 +261,17 @@ is OBJNAME from TABLE where WHERE-NAME field = WHERE-VALUE with FIELDS"
                    :kcuisui kcuisui :kcuilui kcuilui :kcuilrl kcuilrl :kluilrl kluilrl
                    :ksuilrl ksuilrl)))
 
+
+(defun find-uconso-code (code &key first sab (srl *current-srl*) (like nil))
+  "Return list of uconso objects that match code. Optional, filter for SAB. Optionally, use SQL's LIKE syntax"
+  (collect-umlisp-query (mrconso (cui sab) srl code code :like like :distinct t
+                                 :lrl klrl
+                                 :filter (if sab (concatenate 'string "SAB='" sab "'") nil))
+    (let ((uconsos (find-uconso-cui cui :sab sab :srl srl)))
+      (if first
+          (first uconsos)
+          uconsos))))
+
 (defun find-uconso-sui (sui &key sab (srl *current-srl*))
   "Find uconso for a sui. If set SAB, the without-pfstr is on by default"
   (ensure-sui-integer sui)
@@ -740,13 +751,6 @@ is OBJNAME from TABLE where WHERE-NAME field = WHERE-VALUE with FIELDS"
   (collect-umlisp-query (mrsty (cui) srl tui tui :lrl klrl :order (cui asc))
     (find-ucon-cui (ensure-integer cui) :srl srl)))
 
-(defun find-uconso-code (code &key sab (srl *current-srl*) (like nil))
-  "Return list of uconso objects that match code. Optional, filter for SAB. Optionally, use SQL's LIKE syntax"
-  (collect-umlisp-query (mrconso (sui sab) srl code code :like like :distinct t
-                                 :lrl klrl
-                                 :filter (if sab (concatenate 'string "SAB='" sab "'") nil))
-    (find-uconso-sui sui :sab sab :srl srl)))
-
 (defun mrconso-query-word-cui (word sab srl like)
   (format nil "SELECT DISTINCT c.cui FROM MRCONSO c,MRXW_ENG x WHERE x.WD~A'~A' AND x.cui=c.cui~A~A"
           (if like " LIKE " "=")