X-Git-Url: http://git.kpe.io/?p=umlisp.git;a=blobdiff_plain;f=sql-classes.lisp;h=594103fcd95c0d9a7b3303f5119b1f3512854136;hp=1187d5931bd9bc52a0791c43752dbaa434b2e865;hb=67ee261d341603e293f6b0314d5cd12522fa04c6;hpb=3af8a7f021e7dcd1e369df1601a2bfb83350f340 diff --git a/sql-classes.lisp b/sql-classes.lisp index 1187d59..594103f 100644 --- a/sql-classes.lisp +++ b/sql-classes.lisp @@ -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" @@ -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*))