X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=sql-classes.lisp;h=93812c7902e5714f24ee2625c76bb366d973e4e0;hb=c01a3503e58ba9d4e7fadb42f3f0f69c38496e10;hp=e0f6c43e0daea72a49a777b3c82a89be58ad89ce;hpb=e4ea77e0121111b1edeb6a8698f3bffcc3e4e0a6;p=umlisp.git diff --git a/sql-classes.lisp b/sql-classes.lisp index e0f6c43..93812c7 100644 --- a/sql-classes.lisp +++ b/sql-classes.lisp @@ -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) @@ -270,6 +281,7 @@ is OBJNAME from TABLE where WHERE-NAME field = WHERE-VALUE with FIELDS" (collect-umlisp-query (mrconso (cui lat ts lui stt sui ispref aui saui scui sdui sab tty code str srl suppress cvf kpfeng kcuisui kcuilui kcuilrl kluilrl ksuilrl) srl sui sui + :distinct t :filter (if sab (concatenate 'string "SAB='" sab "'") nil)) (make-instance 'uconso :cui cui :lat lat :ts ts :lui lui :stt stt :sui sui :ispref ispref :aui aui :saui saui :scui scui :sdui sdui :sab sab :tty tty :code code @@ -632,7 +644,7 @@ is OBJNAME from TABLE where WHERE-NAME field = WHERE-VALUE with FIELDS" :paui (ensure-integer paui) :sab sab :rela rela :ptr ptr :hcd hcd :cvf cvf))) -(defun find-usat-ui (cui &key lui sui (srl *current-srl*)) +(defun find-usat-ui (cui &optional lui sui &key (srl *current-srl*)) (ensure-cui-integer cui) (ensure-lui-integer lui) (ensure-sui-integer sui) @@ -739,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 " "=")