r2952: *** empty log message ***
[umlisp.git] / classes.lisp
1 ;;; $Id: classes.lisp,v 1.1 2002/10/08 22:08:56 kevin Exp $
2 ;;;
3 ;;; UMLS object defintions and printing routines
4
5 (in-package :umlisp)
6 (declaim (optimize (speed 3) (safety 1)))
7
8 (defclass umlsclass ()
9   ()
10   (:metaclass ml-class)
11   (:documentation "Parent class of all UMLS objects"))
12
13
14 (defmethod print-object ((obj umlsclass) (s stream))
15   (print-unreadable-object (obj s :type t :identity t)
16     (let ((fmt (make-instance 'gu.ml::textformat)))
17       (apply #'format 
18              s (funcall (gu.ml::obj-data-fmtstr fmt) obj)
19              (multiple-value-list 
20               (funcall (funcall (gu.ml::obj-data-value-func fmt) obj) obj))))))
21
22
23
24   
25 (defclass urank (umlsclass)
26   ((rank :type fixnum :initarg :rank :reader rank)
27    (sab :type string :initarg :sab :reader sab)
28    (tty :type string :initarg :tty :reader tty)
29    (supres :type string :initarg :supres :reader supres))
30   (:metaclass ml-class)
31   (:default-initargs :rank nil :sab nil :tty nil :supres nil)
32   (:title "Rank")
33   (:fields (rank :fixnum) (sab :string) (tty :string) (supres :string)))
34
35 (defclass udef (umlsclass)
36   ((def :type string :initarg :def :reader def)
37    (sab :type string :initarg :sab :reader sab))
38   (:metaclass ml-class)
39   (:default-initargs :def nil :sab nil)
40   (:title "Definition")
41   (:ref-fields (sab find-bsab-sab))
42   (:fields (sab :string) (def :cdata)))
43
44 (defclass usat (umlsclass)
45   ((sab :type string :initarg :sab :reader sab)
46    (code :type string :initarg :code :reader code)
47    (atn :type string :initarg :atn :reader atn)
48    (atv :type string :initarg :atv :reader atv))
49   (:metaclass ml-class)
50   (:default-initargs :sab nil :code nil :atn nil :atv nil)
51   (:title "Simple Attribute")
52   (:ref-fields (sab find-bsab-sab))
53   (:fields (sab :string) (code :string) (atn :string) (atv :cdata)))
54
55 (defclass uso (umlsclass)
56   ((sab :type string :initarg :sab :reader sab)
57    (code :type string :initarg :code :reader code)
58    (tty :type string :initarg :tty :reader tty)
59    (srl :type fixnum :initarg :srl :reader srl))
60   (:metaclass ml-class)
61   (:default-initargs :sab nil :code nil :tty nil :srl nil)
62   (:title "Source")
63   (:ref-fields (sab find-bsab-sab) (tty find-btty-tty))
64   (:fields (sab :string) (code :string) (tty :string) (srl :fixnum)))
65
66 (defclass ucxt (umlsclass)
67   ((sab :type string :initarg :sab :reader sab)
68    (code :type string :initarg :code :reader code)
69    (rnk :type fixnum :initarg :rnk :reader rnk)
70    (cxn :type fixnum :initarg :cxn :reader cxn)
71    (cxl :type string :initarg :cxl :reader cxl)
72    (cxs :type string :initarg :cxs :reader cxs)
73    (cui2 :type fixnum :initarg :cui2 :reader cui2)
74    (hcd :type string :initarg :hcd :reader hcd)
75    (rela :type string :initarg :rela :reader rela)
76    (xc :type string  :initarg :xc :reader xc))
77   (:metaclass ml-class)
78   (:default-initargs :sab nil :code nil :rnk nil :cxn nil :cxl nil :cxs nil
79                      :cui2 nil :hcd nil :rela nil :xc nil)
80   (:title "Context")
81   (:ref-fields (sab find-bsab-sab) (cui2 find-ucon-cui))
82   (:fields 
83    (sab :string) (code :string) (rnk :fixnum) (cxn :fixnum) (cxl :string)
84    (hcd :string) (rela :string) (xc :string) (cui2 :string fmt-cui) 
85    (cxs :cdata)))
86
87 (defclass ustr (umlsclass)
88   ((sui :type fixnum :initarg :sui :reader sui)
89    (cui :type fixnum :initarg :cui :reader cui)
90    (lui :type fixnum :initarg :lui :reader lui)
91    (cuisui :type integer :initarg :cuisui :reader cuisui )
92    (str :type string :initarg :str :reader str)
93    (lrl :type fixnum :initarg :lrl :reader lrl)
94    (stt :type string :initarg :stt :reader stt)
95    (s#sat :reader s#sat)
96    (s#so :reader s#so)
97    (s#cxt :reader s#cxt))
98   (:metaclass ml-class)
99   (:default-initargs 
100    :sui nil :cui nil :lui nil :cuisui nil :str nil :lrl nil :stt nil)
101   (:title "String")
102   (:subobjects-lists (s#sat usat) (s#so uso) (s#cxt ucxt))
103   (:fields (sui :string fmt-sui) (stt :string) (lrl :fixnum) (str :cdata))
104   (:ref-fields (sui find-ustr-sui)))
105
106 (defclass ulo (umlsclass)
107   ((isn :type string :initarg :isn :reader isn)
108    (fr :type fixnum :initarg :fr :reader fr)
109    (un :type string :initarg :un :reader un)
110    (sui :type fixnum :initarg :sui :reader sui)
111    (sna :type string :initarg :sna :reader sna)
112    (soui :type string :initarg :soui :reader soui))
113   (:metaclass ml-class)
114   (:default-initargs :isn nil :fr nil :un nil :sui nil :sna nil :soui nil)
115   (:title "Locator")
116   (:fields (isn :string) (fr :fixnum) (un :string) (sna :string)
117            (soui :string) (sui :string fmt-sui) (suistr :string)))
118
119 (defclass uterm (umlsclass)
120   ((lui :type fixnum :initarg :lui :reader lui)
121    (cui :type fixnum :initarg :cui :reader cui)
122    (lat :type string :initarg :lat :reader lat)
123    (ts :type string  :initarg :ts :reader ts)
124    (lrl :type fixnum :initarg :lrl :reader lrl)
125    (s#str :reader s#str)
126    (s#sat :reader s#sat))
127   (:metaclass ml-class)
128   (:default-initargs :lui nil :cui nil :lat nil :ts nil :lrl nil)
129   (:title "Term")
130   (:subobjects-lists (s#sat usat) (s#str ustr))
131   (:fields (lui :string fmt-lui) (lat :string) (ts :string) (lrl :fixnum))
132   (:ref-fields (lui find-uterm-lui)))
133
134 (defclass usty (umlsclass)
135   ((tui :type fixnum :initarg :tui :reader tui)
136    (sty :type string :initarg :sty :reader sty))
137   (:metaclass ml-class)
138   (:default-initargs :tui nil :sty nil)
139   (:title "Semantic Type")
140   (:ref-fields (tui find-ucon-tui (("subobjects" "no"))))
141   (:fields (tui :string fmt-tui) (sty :string)))
142
143 (defclass urel (umlsclass)
144   ((rel :type string :initarg :rel :reader rel)
145    (cui1 :type fixnum :initarg :cui1 :reader cui1)
146    (cui2 :type fixnum :initarg :cui2 :reader cui2)
147    (pfstr2 :type string :initarg :pfstr2 :reader pfstr2)
148    (rela :type string :initarg :rela :reader rela)
149    (sab :type string :initarg :sab :reader sab)
150    (sl :type string  :initarg :sl :reader sl)
151    (mg :type string  :initarg :mg :reader mg))
152   (:metaclass ml-class)
153   (:default-initargs 
154    :rel nil :cui1 nil :cui2 nil :pfstr2 nil :rela nil :sab nil :sl nil :mg nil)
155   (:title "Relationship")
156   (:ref-fields (rel find-brel-rel) (sab find-bsab-sab) (cui2 find-ucon-cui))
157   (:fields (rel :string) (rela :string) (sab :string) (sl :string) 
158            (mg :string) (cui2 :string fmt-cui) (pfstr2 :cdata)))
159         
160 (defclass ucoc (umlsclass)
161   ((cui1 :type fixnum :initarg :cui1 :reader cui1)
162    (cui2 :type fixnum :initarg :cui2 :reader cui2)
163    (pfstr2 :type string :initarg :pfstr2 :reader pfstr2)
164    (soc :type string :initarg :soc :reader soc)
165    (cot :type string :initarg :cot :reader cot)
166    (cof :type fixnum :initarg :cof :reader cof)
167    (coa :type string :initarg :coa :reader coa))
168   (:metaclass ml-class)
169   (:default-initargs 
170    :cui1 nil :cui2 nil :pfstr2 nil :soc nil :cot nil :cof nil :coa nil)
171   (:title "Co-occuring Concept")
172   (:ref-fields (cui2 find-ucon-cui))
173   (:fields (soc :string) (cot :string) (cof :fixnum) (coa :cdata)
174            (cui2 :string fmt-cui) (pfstr2 :cdata)))
175
176         
177 (defclass uatx (umlsclass)
178   ((sab :type string :initarg :sab :reader sab)
179    (rel :type string :initarg :rel :reader rel)
180    (atx :type string :initarg :atx :reader atx))
181   (:metaclass ml-class)
182   (:default-initargs :sab nil :rel nil :atx nil)
183   (:title "Associated Expression")
184   (:fields (sab :string) (rel :string) (atx :cdata)))
185
186 (defclass ucon (umlsclass)
187   ((cui :type fixnum :initarg :cui :reader cui )
188    (pfstr :initarg :pfstr :reader pfstr)
189    (lrl :initarg :lrl :reader lrl)
190    (s#term :reader s#term)
191    (s#def :reader s#def)
192    (s#lo :reader s#lo)
193    (s#rel :reader s#rel)
194    (s#coc :reader s#coc)
195    (s#sat :reader s#sat)
196    (s#atx :reader s#atx)
197    (s#sty :reader s#sty))
198   (:metaclass ml-class)
199   (:default-initargs :cui nil :pfstr nil :lrl nil)
200   (:title "Concept")
201   (:subobjects-lists 
202    (s#def udef) (s#sty usty) (s#lo ulo) (s#atx uatx) (s#sat usat) (s#rel urel) 
203    (s#coc ucoc) (s#term uterm))
204   (:fields (cui :string fmt-cui) (lrl :fixum) (pfstr :cdata))
205   (:ref-fields (cui find-ucon-cui)))
206
207 (defclass uxw (umlsclass)
208   ((wd :type string :initarg :wd :reader wd)
209    (cui :type fixnum :initform nil :initarg :cui :reader cui)
210    (lui :type fixnum :initform nil :initarg :lui :reader lui)
211    (sui :type fixnum :initform nil :initarg :sui :reader sui))
212   (:metaclass ml-class)
213   (:default-initargs :wd nil :cui nil :lui nil :sui nil)
214   (:title "XW Index")
215   (:fields (wd :string) (cui :string fmt-cui) (lui :string fmt-lui) 
216            (sui :string fmt-sui)))
217
218 (defclass uxnw (umlsclass)
219   ((lat :type string :initarg :lat :reader lat)
220    (nwd :type string :initarg :nwd :reader nwd)
221   (cuilist :type list :initarg :cuilist :reader uxnw-cuilist))
222   (:metaclass ml-class)
223   (:default-initargs :lat nil :nwd nil :cuilist nil)
224   (:title "XNW Index")
225   (:fields (lat :string) (nwd :string) (cuilist :string)))
226
227 (defclass uxns (umlsclass)
228   ((lat :type string :initarg :lat :reader lat)
229    (nstr :type string :initarg :nstr :reader nstr)
230    (cuilist :type list :initarg :cuilist :reader cuilist))
231   (:metaclass ml-class)
232   (:default-initargs :lat nil :nstr nil :cuilist nil)
233   (:title "XNS Index")
234   (:fields (lat :string) (nstr :string) (cuilist :string)))
235
236
237 ;;; LEX objects
238
239 (defclass lexterm (umlsclass)
240   ((eui :type fixnum :initarg :eui :reader eui)
241    (wrd :type string :initarg :wrd :reader wrd)
242    (s#abr :reader s#abr)
243    (s#agr :reader s#agr)
244    (s#cmp :reader s#cmp)
245    (s#mod :reader s#mod)
246    (s#nom :reader s#nom)
247    (s#prn :reader s#prn)
248    (s#prp :reader s#prp)
249    (s#spl :reader s#spl)
250    (s#trm :reader s#trm)
251    (s#typ :reader s#typ))
252   (:metaclass ml-class)
253   (:default-initargs :eui nil :wrd nil)
254   (:title "Lexical Term")
255   (:subobjects-lists 
256    (s#abr labr) (s#agr lagr) (s#cmp lcmp) (s#mod lmod) (s#nom unom) 
257    (s#prn lprn) (s#prp lprp) (s#spl lspl) (s#trm ltrm) (s#typ ltyp))
258   (:fields (eui :string fmt-eui) (wrd :string))
259   (:ref-fields (eui find-lexterm-eui)))
260
261
262 (defclass labr  (umlsclass)
263   ((eui :type integer :initarg :eui :reader eui)
264    (bas :type string :initarg :bas :reader bas)
265    (abr :type string :initarg :abr :reader abr)
266    (eui2 :type integer :initarg :eui2 :reader eui2)
267    (bas2 :type string :initarg :bas2 :reader bas2))
268   (:metaclass ml-class)
269   (:default-initargs :eui nil :bas nil :abr nil :eui2 nil :bas2 nil)
270   (:title "Abbreviations and Acronyms")
271   (:fields (eui :string fmt-eui) (bas :string) (abr :string) 
272            (eui2 :string fmt-eui) (bas2 :string )))
273
274 (defclass lagr  (umlsclass)
275   ((eui :type integer :initarg :eui :reader eui)
276    (str :type string :initarg :str :reader str)
277    (sca :type string :initarg :sca :reader sca)
278    (agr :type string :initarg :agr :reader agr)
279    (cit :type string :initarg :cit :reader cit)
280    (bas :type string :initarg :bas :reader bas))
281   (:metaclass ml-class)
282   (:default-initargs :eui nil :str nil :sca nil :agr nil :cit nil :bas nil)
283   (:title "Agreement and Inflection")
284   (:fields (eui :string fmt-eui) (str :string) (sca :string) (agr :string)
285            (cit :string) (bas :string)))
286
287 (defclass lcmp  (umlsclass)
288   ((eui :type integer :initarg :eui :reader eui)
289    (bas :type string :initarg :bas :reader bas)
290    (sca :type string :initarg :sca :reader sca)
291    (com :type string :initarg :com :reader com))
292   (:metaclass ml-class)
293   (:default-initargs :eui nil :bas nil :sca nil :com nil)
294   (:title "Complementation")
295   (:fields (eui :string fmt-eui) (bas :string) (sca :string) (com :string)))
296
297 (defclass lmod  (umlsclass)
298   ((eui :type integer :initarg :eui :reader eui)
299    (bas :type string :initarg :bas :reader bas)
300    (sca :type string :initarg :sca :reader sca)
301    (psnmod :type string :initarg :psnmod :reader psnmod)
302    (fea :type string :initarg :fea :reader fea))
303   (:metaclass ml-class)
304   (:default-initargs :eui nil :bas nil :sca nil :psnmod nil :fea nil)
305   (:title "Modifiers")
306   (:fields (eui :string fmt-eui) (bas :string) (sca :string) (psnmod :string) 
307            (fea :string)))
308
309 (defclass lnom  (umlsclass)
310   ((eui :type integer :initarg :eui :reader eui)
311    (bas :type string :initarg :bas :reader bas)
312    (sca :type string :initarg :sca :reader sca)
313    (eui2 :type integer :initarg :eui2 :reader eui2)
314    (bas2 :type string :initarg :bas2 :reader bas2)
315    (sca2 :type string :initarg :sca2 :reader sca2))
316   (:metaclass ml-class)
317   (:default-initargs :eui nil :bas nil :sca nil :eui2 nil :bas2 nil :sca2 nil)
318   (:title "Nominalizations")
319   (:fields (eui :string fmt-eui) (bas :string) (sca :string) 
320            (eui2 :string fmt-eui) (bas2 :string) (sca2 :string)))
321
322 (defclass lprn  (umlsclass)
323   ((eui :type integer :initarg :eui :reader eui)
324    (bas :type string :initarg :bas :reader bas)
325    (num :type string :initarg :num :reader num)
326    (gnd :type string :initarg :gnd :reader gnd)
327    (cas :type string :initarg :cas :reader cas)
328    (pos :type string :initarg :pos :reader pos)
329    (qnt :type string :initarg :qnt :reader qnt)
330    (fea :type string :initarg :fea :reader fea))
331   (:metaclass ml-class)
332   (:default-initargs :eui nil :bas nil :num nil :gnd nil :cas nil
333                      :pos nil :qnt nil :fea nil)
334   (:title "Pronouns")
335   (:fields (eui :string fmt-eui) (bas :string) (num :string) (gnd :string)
336            (cas :string) (pos :string) (qnt :string) (fea :string)))
337
338 (defclass lprp  (umlsclass)
339   ((eui :type integer :initarg :eui :reader eui)
340    (bas :type string :initarg :bas :reader bas)
341    (str :type string :initarg :str :reader str)
342    (sca :type string :initarg :sca :reader sca)
343    (fea :type string :initarg :fea :reader fea))
344   (:metaclass ml-class)
345   (:default-initargs :eui nil :bas nil :str nil :sca nil :fea nil)
346   (:title "Properties")
347   (:fields (eui :string fmt-eui) (bas :string) (str :string) (sca :string) 
348            (fea :string)))
349
350
351 (defclass lspl  (umlsclass)
352   ((eui :type integer :initarg :eui :reader eui)
353    (spv :type string :initarg :spv :reader spv)
354    (bas :type string :initarg :bas :reader bas))
355   (:metaclass ml-class)
356   (:default-initargs :eui nil :spv nil :bas nil)
357   (:title "Spelling Variants")
358   (:fields (eui :string fmt-eui) (spv :string) (bas :string)))
359
360
361
362 (defclass ltrm  (umlsclass)
363   ((eui :type integer :initarg :eui :reader eui)
364    (bas :type string :initarg :bas :reader bas)
365    (gen :type string :initarg :gen :reader gen))
366   (:metaclass ml-class)
367   (:default-initargs :eui nil :bas nil :gen nil)
368   (:title "Trade Marks")
369   (:fields (eui :string fmt-eui) (bas :string) (gen :string)))
370
371 (defclass ltyp  (umlsclass)
372   ((eui :type integer :initarg :eui :reader eui)
373    (bas :type string :initarg :bas :reader bas)
374    (sca :type string :initarg :sca :reader sca)
375    (typ :type string :initarg :typ :reader typ))
376   (:metaclass ml-class)
377   (:default-initargs :eui nil :bas nil :sca nil :typ nil)
378   (:title "Inflection Type")
379   (:fields (eui :string fmt-eui) (bas :string) (sca :string) (typ :string)))
380
381 (defclass lwd (umlsclass)
382   ((wrd :type string :initarg :wrd :reader wrd)
383    (euilist :type list :initarg :euilist :reader euilist))
384   (:metaclass ml-class)
385   (:default-initargs :wrd nil :euilist nil)
386   (:title "Lexical Word Index")
387   (:fields (wrd :string) (euilist :string)))
388
389 ;;; Semantic NET objects
390
391 (defclass sdef (umlsclass)
392   ((rt :type string :initarg :rt :reader rt)
393    (ui :type integer :initarg :ui :reader ui)
394    (styrl :type string :initarg :styrl :reader styrl)
395    (stnrtn :type string :initarg :stnrtn :reader stnrtn)
396    (def :type string :initarg :def :reader def)
397    (ex :type string :initarg :ex :reader ex)
398    (un :type string :initarg :un :reader un)
399    (rh :type string :initarg :rh :reader rh)
400    (abr :type string :initarg :abr :reader abr)
401    (rin :type string :initarg :rin :reader rin))
402   (:metaclass ml-class)
403   (:default-initargs 
404    :rt nil :ui nil :styrl nil :stnrtn nil :def nil :ex nil :un nil :rh nil 
405    :abr nil :rin nil)
406   (:title "Basic information about Semantic Types and Relations")
407   (:fields 
408    (rt :string) (ui :string fmt-tui) (styrl :string) (stnrtn :string-tui) 
409    (def :string) (ex :string) (un :string) (rh :string) (abr :string) 
410    (rin :string)))
411
412 (defclass sstr (umlsclass)
413   ((styrl :type string :initarg :styrl :reader styrl)
414    (rl :type string :initarg :rl :reader rl)
415    (styrl2 :type string :initarg :styrl2 :reader styrl2)
416    (ls :type string :initarg :ls :reader ls))
417   (:metaclass ml-class)
418   (:default-initargs :styrl nil :rl nil :styrl2 nil :ls nil)
419   (:title "Structure of the Network")
420   (:fields (styrl :string) (rl :string) (styrl2 :string) (ls :string)))
421
422 (defclass sstre1 (umlsclass)
423   ((ui :type integer :initarg :ui :reader ui)
424    (ui2 :type integer :initarg :ui2 :reader ui2)
425    (ui3 :type integer :initarg :ui3 :reader ui3))
426   (:metaclass ml-class)
427   (:default-initargs :ui nil :ui2 nil :ui3 nil)
428   (:title "Fully Inherited Set of Releatons (TUI's)")
429   (:fields (ui :string fmt-tui) (ui2 :string fmt-tui) (ui3 :string fmt-tui)))
430
431 (defclass sstre2 (umlsclass)
432   ((sty :type string :initarg :ui :reader sty)
433    (rl :type string :initarg :ui2 :reader rl)
434    (sty2 :type string :initarg :ui3 :reader sty2))
435   (:metaclass ml-class)
436   (:default-initargs :sty nil :rl nil :sty2 nil)
437   (:title "Fully Inherited Set of Releatons (strings)")
438   (:fields (sty :string) (rl :string) (sty2 :string)))
439
440 ;;; Formatting routines
441
442 (defmethod fmt-cui ((c ucon))
443   (format nil "C~7,'0d" (cui c)))
444
445 (defmethod fmt-cui ((c fixnum))
446   (format nil "C~7,'0d" c))
447
448 (defmethod fmt-cui ((c string))
449   (if (eql (aref c 0) #\C)
450       c
451     (format nil "C~7,'0d" (parse-integer c))))
452
453 (defmethod fmt-cui ((c null))
454   (format nil "nil"))
455
456 (defmethod fmt-lui ((l uterm))
457   (format nil "L~7,'0d" (lui l)))
458
459 (defmethod fmt-lui ((l fixnum))
460   (format nil "L~7,'0d" l))
461
462 (defmethod fmt-lui ((l string))
463   (if (eql (aref l 0) #\L)
464       l
465   (format nil "L~7,'0d" (parse-integer l))))
466
467 (defmethod fmt-sui ((s ustr))
468   (format nil "S~7,'0d" (sui s)))
469
470 (defmethod fmt-sui ((s fixnum))
471   (format nil "S~7,'0d" s))
472
473 (defmethod fmt-sui ((s string))
474   (if (eql (aref s 0) #\S)
475       s
476   (format nil "S~7,'0d" (parse-integer s))))
477
478 (defmethod fmt-tui ((s fixnum))
479   (format nil "T~3,'0d" s))
480
481 (defmethod fmt-tui ((s string))
482   (if (eql (aref s 0) #\T)
483       s
484   (format nil "T~3,'0d" (parse-integer s))))
485
486 (defmethod fmt-eui ((e fixnum))
487   (format nil "E~7,'0d" e))
488
489 (defmethod fmt-eui ((e string))
490   (if (eql (aref e 0) #\E)
491       e
492     (format nil "E~7,'0d" (parse-integer e))))
493
494 (defmethod fmt-eui ((e null))
495   (format nil "nil"))
496
497 ;;; Generic display functions
498
499 (eval-when (:compile-toplevel :load-toplevel :execute)
500 (defun english-term-p (obj)
501   (and (eq (class-name (class-of obj)) 'uterm)
502        (string-equal (lat obj) "ENG"))))
503
504 (defun display-umls-obj 
505   (obj &key (os *standard-output*) (format :text) (label nil) 
506        (file-wrapper t) (english-only nil) (subobjects nil)
507        (refvars nil))
508   (display-ml-class 
509    obj :os os :format format :label label :subobjects subobjects
510    :file-wrapper file-wrapper
511    :english-only-function (if english-only #'english-term-p nil)
512    :refvars refvars))
513                      
514 (defmacro defludisp-ml-class (newfuncname lookup-func)
515   "Defines functions for looking up and displaying objects"
516   `(defun ,newfuncname 
517      (keyval &key (os *standard-output*) (format :text) (label nil)
518              (file-wrapper t) (english-only nil) (subobjects nil))
519      (let ((obj (funcall ,lookup-func keyval)))
520        (display-umls-obj obj :os os :format format :label label 
521                          :file-wrapper file-wrapper :english-only english-only
522                          :subobjects subobjects))))
523
524 (defludisp-ml-class disp-con #'find-ucon-cui)
525 (defludisp-ml-class disp-term #'find-uterm-lui)
526 (defludisp-ml-class disp-str #'find-ustr-sui)
527