X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=sql-classes.lisp;h=594103fcd95c0d9a7b3303f5119b1f3512854136;hb=67ee261d341603e293f6b0314d5cd12522fa04c6;hp=5543d58d5e4babd3db812ad744afd4ff48a4bfa5;hpb=51451987c4fee40b475e014ee5c801b1657d119d;p=umlisp.git diff --git a/sql-classes.lisp b/sql-classes.lisp index 5543d58..594103f 100644 --- a/sql-classes.lisp +++ b/sql-classes.lisp @@ -107,7 +107,7 @@ is OBJNAME from TABLE where WHERE-NAME field = WHERE-VALUE with FIELDS" :filter ,filter :limit ,limit))) (defmacro umlisp-query-eval (table fields srl where-name where-value - &key (lrl "KCUILRL") single distinct order like + &key (lrl "KCUILRL") single distinct order like filter limit) "Query the UMLisp database. Return a list of umlisp objects whose name is OBJNAME from TABLE where WHERE-NAME field = WHERE-VALUE with FIELDS" @@ -229,19 +229,13 @@ is OBJNAME from TABLE where WHERE-NAME field = WHERE-VALUE with FIELDS" (ensure-cui-integer cui) (unless cui (return-from find-ucon-cui nil)) - (let ((tuple (car (mutex-sql-query - (format nil - "SELECT kcuilrl,str FROM MRCONSO WHERE CUI=~D AND KPFENG=1~A" - cui (if srl (format nil " AND SRL<=~D" srl) "")))))) - (unless tuple - (setq tuple (car (mutex-sql-query - (format nil - "SELECT kcuilrl,str FROM MRCONSO WHERE CUI=~D" - cui (if srl (format nil " AND SRL<=~D" srl) nil)))))) - (unless tuple - (return-from find-ucon-cui nil)) - (make-instance 'ucon :cui cui :pfstr (second tuple) - :lrl (ensure-integer (first tuple))))) + (or + (collect-umlisp-query (mrconso (kcuilrl str) srl cui cui :single t :filter "KPFENG=1") + (make-instance 'ucon :cui cui :pfstr str + :lrl kcuilrl)) + (collect-umlisp-query (mrconso (kcuilrl str) srl cui cui :single t) + (make-instance 'ucon :cui cui :pfstr str + :lrl kcuilrl)))) (defun find-ucon-cui-sans-pfstr (cui &key (srl *current-srl*)) "Find ucon for a cui" @@ -254,10 +248,10 @@ is OBJNAME from TABLE where WHERE-NAME field = WHERE-VALUE with FIELDS" "Find preferred string for a cui" (ensure-cui-integer cui) (or - (collect-umlisp-query (mrconso (str) srl cui cui :distinct t + (collect-umlisp-query (mrconso (str) srl cui cui :distinct t :filter " KPFENG=1" :single t) str) - (collect-umlisp-query (mrconso (str) srl cui cui :distinct t + (collect-umlisp-query (mrconso (str) srl cui cui :distinct t :single t) str))) @@ -399,9 +393,9 @@ is OBJNAME from TABLE where WHERE-NAME field = WHERE-VALUE with FIELDS" (defun find-urel-rui (rui &key (srl *current-srl*)) "Return the urel for a rui" (ensure-rui-integer rui) - (collect-umlisp-query (mrrel (aui1 rel stype1 cui2 aui2 stype2 rela rui srui sab sl rg dir suppress cvf) + (collect-umlisp-query (mrrel (aui1 rel stype1 cui1 cui2 aui2 stype2 rela rui srui sab sl rg dir suppress cvf) srl rui rui :lrl "KSRL" :single t) - (make-instance 'urel :cui1 cui :aui1 (ensure-integer aui1) :stype1 stype1 :rel rel + (make-instance 'urel :cui1 cui1 :aui1 (ensure-integer aui1) :stype1 stype1 :rel rel :cui2 (ensure-integer cui2) :aui2 (ensure-integer aui2) :stype2 stype2 :rui (ensure-integer rui) :srui srui :rela rela :sab sab :sl sl :rg rg :dir dir :suppress suppress :cvf cvf :pfstr2 (find-pfstr-cui cui2)))) @@ -418,7 +412,7 @@ is OBJNAME from TABLE where WHERE-NAME field = WHERE-VALUE with FIELDS" (ensure-cui-integer cui2) (collect-umlisp-query (mrrel (rel cui1 aui1 stype1 aui2 stype2 rela rui srui sab sl rg dir suppress cvf) srl cui2 cui2 :lrl "KSRL") - (make-instance 'urel :cui2 cui2 :rel rel :aui2 (ensure-integer aui2) + (make-instance 'urel :cui2 cui2 :rel rel :aui2 (ensure-integer aui2) :stype2 stype2 :rui (ensure-integer rui) :srui srui :stype1 stype1 :cui1 (ensure-integer cui1) :aui1 (ensure-integer aui1) @@ -563,7 +557,7 @@ is OBJNAME from TABLE where WHERE-NAME field = WHERE-VALUE with FIELDS" (defun find-uso-cui (cui &key (srl *current-srl*) (english-only nil) limit) (ensure-cui-integer cui) - (collect-umlisp-query (mrconso (aui sab code srl tty saui sdui scui lat str sui) + (collect-umlisp-query (mrconso (aui sab code srl tty saui sdui scui lat str sui) srl cui cui :lrl srl :limit limit :filter (when english-only "LAT='ENG'")) (make-instance 'uso :aui aui :sab sab :code code :srl srl :tty tty @@ -572,11 +566,11 @@ is OBJNAME from TABLE where WHERE-NAME field = WHERE-VALUE with FIELDS" (defun find-uso-aui (aui &key (srl *current-srl*)) (ensure-sui-integer aui) - (collect-umlisp-query (mrconso (sab cui sui code srl tty saui sdui scui lat str) srl aui - aui :lrl srl :single t) + (collect-umlisp-query (mrconso (sab cui sui code srl tty saui sdui scui lat + str) srl aui aui :lrl srl :single t) (make-instance 'uso :aui aui :cui cui :sab sab :code code :srl srl :tty tty - :sui sui :saui saui :sdui sdui :scui scui - :lat lat :str str))) + :sui sui :saui saui :sdui sdui :scui scui :lat lat + :str str))) (defun find-ucxt-cuisui (cui sui &key (srl *current-srl*)) (ensure-cui-integer cui) @@ -696,6 +690,15 @@ is OBJNAME from TABLE where WHERE-NAME field = WHERE-VALUE with FIELDS" :torule torule :tores tores :maprule maprule :maptype maptype :mapatn mapatn :mapatv mapatv :cvf cvf))) +(defun find-usmap-cui (cui) + (ensure-cui-integer cui) + (collect-umlisp-query (mrsmap (mapsetsab fromexpr fromtype rel rela toexpr totype cvf) + nil mapsetcui cui) + (make-instance 'usmap :mapsetcui cui :mapsetsab mapsetsab + :fromexpr fromexpr :fromtype fromtype + :rel rel :rela rela :toexpr toexpr :totype totype + :cvf cvf))) + ;;;; Cross table find functions (defun find-ucon-tui (tui &key (srl *current-srl*))