+ (unless cui (return-from find-ucon-cui nil))
+
+ (if without-pfstr
+ (collect-umlisp-query (mrconso (kcuilrl) srl cui cui :single t)
+ (make-instance 'ucon :cui cui :lrl (ensure-integer kcuilrl)
+ :pfstr nil)))
+ (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-uconso-cui (cui &key sab (srl *current-srl*))
+ "Find uconso for a cui."
+ (ensure-cui-integer cui)
+ (unless cui (return-from find-uconso-cui nil))
+
+ (collect-umlisp-query (mrconso (lat ts lui stt sui ispref aui saui scui sdui sab tty code str
+ srl suppress cvf kpfeng kcuisui kcuilui kcuilrl
+ kluilrl ksuilrl) srl cui cui
+ :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
+ :str str :srl srl :suppress suppress :cvf cvf :kpfeng kpfeng
+ :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)
+ (unless (and sui (stringp sab))
+ (return-from find-uconso-sui nil))
+
+ (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
+ :str str :srl srl :suppress suppress :cvf cvf :kpfeng kpfeng
+ :kcuisui kcuisui :kcuilui kcuilui :kcuilrl kcuilrl :kluilrl kluilrl
+ :ksuilrl ksuilrl)))