r4845: *** empty log message ***
[umlisp.git] / classes.lisp
1 ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10; Package: umlisp -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
4 ;;;;
5 ;;;; Name:          classes.lisp
6 ;;;; Purpose:       Class defintions for UMLisp
7 ;;;; Programmer:    Kevin M. Rosenberg
8 ;;;; Date Started:  Apr 2000
9 ;;;;
10 ;;;; $Id: classes.lisp,v 1.32 2003/05/06 09:05:43 kevin Exp $
11 ;;;;
12 ;;;; This file, part of UMLisp, is
13 ;;;;    Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D.
14 ;;;;
15 ;;;; UMLisp users are granted the rights to distribute and use this software
16 ;;;; as governed by the terms of the GNU General Public License.
17 ;;;; *************************************************************************
18
19 (in-package :umlisp)
20 (declaim (optimize (speed 3) (safety 1) (compilation-speed 0) (debug 3)))
21
22 (defclass umlsclass (hyperobject)
23   ()
24   (:metaclass hyperobject-class)
25   (:description "Parent class of all UMLS objects. It is based on the HYPEROBJECT-CLASS metaclass that provides object printing functions."))
26
27
28 (defclass usrl (umlsclass)
29   ((sab :value-type string :initarg :sab :reader sab)
30    (srl :value-type fixnum :initarg :srl :reader srl))
31   (:metaclass hyperobject-class)
32   (:user-name "Source Restriction Level")
33   (:default-print-slots sab srl)
34   (:description "Custom Table: Source Restriction Level"))
35
36   
37 (defclass urank (umlsclass)
38   ((rank :value-type fixnum :initarg :rank :reader rank)
39    (sab :value-type string :initarg :sab :reader sab)
40    (tty :value-type string :initarg :tty :reader tty)
41    (supres :value-type string :initarg :supres :reader supres))
42   (:metaclass hyperobject-class)
43   (:user-name "Rank")
44   (:default-print-slots rank sab tty supres))
45
46 (defclass udef (umlsclass)
47   ((def :value-type cdata :initarg :def :reader def)
48    (sab :value-type string :initarg :sab :reader sab :hyperlink find-usab-rsab))
49   (:metaclass hyperobject-class)
50   (:user-name "Definition")
51   (:default-print-slots sab def))
52
53 (defclass usat (umlsclass)
54   ((sab :value-type string :initarg :sab :reader sab :hyperlink find-usab-rsab)
55    (code :value-type string :initarg :code :reader code)
56    (atn :value-type string :initarg :atn :reader atn)
57    (atv :value-type cdata :initarg :atv :reader atv))
58   (:metaclass hyperobject-class)
59   (:user-name "Simple Attribute")
60   (:default-print-slots sab code atn atv))
61
62 (defclass usab (umlsclass)
63   ((vcui :value-type fixnum :initarg :vcui :reader vcui :print-formatter fmt-cui)
64    (rcui :value-type fixnum :initarg :rcui :reader rcui :print-formatter fmt-cui)
65    (vsab :value-type string :initarg :vsab :reader vsab)
66    (rsab :value-type string :initarg :rsab :reader rsab :hyperlink find-ucan-sab)
67    (son :value-type string :initarg :son :reader son)
68    (sf :value-type string :initarg :sf :reader sf)
69    (sver :value-type string :initarg :sver :reader sver)
70    (mstart :value-type string :initarg :mstart :reader mstart)
71    (mend :value-type string :initarg :mend :reader mend)
72    (imeta :value-type string :initarg :imeta :reader imeta)
73    (rmeta :value-type string :initarg :rmeta :reader rmeta)
74    (slc :value-type cdata :initarg :slc :reader slc)
75    (scc :value-type cdata :initarg :scc :reader scc)
76    (srl :value-type fixnum :initarg :srl :reader srl)
77    (tfr :value-type fixnum :initarg :tfr :reader tfr :print-formatter fmt-comma-integer)
78    (cfr :value-type fixnum :initarg :cfr :reader cfr :print-formatter fmt-comma-integer)
79    (cxty :value-type string :initarg :cxty :reader cxty)
80    (ttyl :value-type string :initarg :ttyl :reader ttyl)
81    (atnl :value-type string :initarg :atnl :reader atnl)
82    (lat :value-type string :initarg :lat :reader lat)
83    (cenc :value-type string :initarg :cenc :reader cenc)
84    (curver :value-type string :initarg :curver :reader curver)
85    (sabin :value-type string :initarg :sabin :reader sabin))
86   (:metaclass hyperobject-class)
87   (:user-name "Source Abbreviation")
88   (:default-print-slots vcui rcui vsab rsab son sf sver mstart mend imeta
89                 rmeta slc scc srl tfr cfr cxty ttyl atnl lat cenc
90                 curver sabin))
91
92 (defclass uso (umlsclass)
93   ((sab :value-type string :initarg :sab :reader sab :hyperlink find-usab-rsab)
94    (code :value-type string :initarg :code :reader code)
95    (tty :value-type string :initarg :tty :reader tty :hyperlink find-btty-tty)
96    (srl :value-type fixnum :initarg :srl :reader srl))
97   (:metaclass hyperobject-class)
98   (:user-name "Source")
99   (:default-print-slots sab code tty srl))
100
101 (defclass ucxt (umlsclass)
102   ((sab :value-type string :initarg :sab :reader sab :hyperlink find-usab-rsab)
103    (code :value-type string :initarg :code :reader code)
104    (rnk :value-type fixnum :initarg :rnk :reader rnk)
105    (cxn :value-type fixnum :initarg :cxn :reader cxn)
106    (cxl :value-type string :initarg :cxl :reader cxl)
107    (cxs :value-type cdata :initarg :cxs :reader cxs)
108    (cui2 :value-type fixnum :initarg :cui2 :reader cui2 :hyperlink find-ucon-cui
109          :print-formatter fmt-cui)
110    (hcd :value-type string :initarg :hcd :reader hcd)
111    (rela :value-type string :initarg :rela :reader rela)
112    (xc :value-type string  :initarg :xc :reader xc))
113   (:metaclass hyperobject-class)
114   (:user-name "Context")
115   (:default-print-slots sab code rnk cxn cxl hcd rela xc cui2 cxs))
116
117 (defclass ustr (umlsclass)
118   ((sui :value-type fixnum :initarg :sui :reader sui :print-formatter fmt-sui
119         :hyperlink find-ustr-sui)
120    (cui :value-type fixnum :initarg :cui :reader cui :print-formatter fmt-cui
121         :hyperlink find-ucon-cui)
122    (lui :value-type fixnum :initarg :lui :reader lui :print-formatter fmt-lui
123         :hyperlink find-uterm-lui)
124    (cuisui :value-type integer :initarg :cuisui :reader cuisui )
125    (str :value-type cdata :initarg :str :reader str)
126    (lrl :value-type fixnum :initarg :lrl :reader lrl)
127    (stt :value-type string :initarg :stt :reader stt)
128    (s#so :reader s#so :subobject (find-uso-cuisui cui sui))
129    (s#sat :reader s#sat :subobject (find-usat-ui cui lui sui))
130    (s#cxt :reader s#cxt :subobject (find-ucxt-cuisui cui sui)))
131   (:metaclass hyperobject-class)
132   (:user-name "String")
133   (:default-print-slots sui stt lrl str))
134
135 (defclass ulo (umlsclass)
136   ((isn :value-type string :initarg :isn :reader isn)
137    (fr :value-type fixnum :initarg :fr :reader fr)
138    (un :value-type string :initarg :un :reader un)
139    (sui :value-type fixnum :initarg :sui :reader sui :print-formatter fmt-sui)
140    (sna :value-type string :initarg :sna :reader sna)
141    (soui :value-type string :initarg :soui :reader soui))
142   (:metaclass hyperobject-class)
143   (:user-name "Locator")
144   (:default-print-slots isn fr un sna soui sui))
145
146 (defclass uterm (umlsclass)
147   ((lui :value-type fixnum :initarg :lui :reader lui :print-formatter fmt-lui
148         :hyperlink find-uterm-lui)
149    (cui :value-type fixnum :initarg :cui :reader cui :print-formatter fmt-cui
150         :hyperlink find-ucon-cui)
151    (lat :value-type string :initarg :lat :reader lat)
152    (ts :value-type string  :initarg :ts :reader ts)
153    (lrl :value-type fixnum :initarg :lrl :reader lrl)
154    (s#str :reader s#str :subobject (find-ustr-cuilui cui lui))
155    (s#sat :reader s#sat :subobject (find-usat-ui cui lui)))
156   (:metaclass hyperobject-class)
157   (:user-name "Term")
158   (:default-print-slots lui lat ts lrl))
159
160 (defclass usty (umlsclass)
161   ((tui :value-type fixnum :initarg :tui :reader tui :print-formatter fmt-tui
162         :hyperlink (find-ucon-tui ("subobjects" "no")))
163    (sty :value-type string :initarg :sty :reader sty))
164   (:metaclass hyperobject-class)
165   (:user-name "Semantic Type")
166   (:default-print-slots tui sty))
167
168 (defclass urel (umlsclass)
169   ((rel :value-type string :initarg :rel :reader rel :hyperlink find-brel-rel)
170    (cui1 :value-type fixnum :initarg :cui1 :reader cui1 :print-formatter fmt-cui)
171    (cui2 :value-type fixnum :initarg :cui2 :reader cui2 :hyperlink find-ucon-sui
172          :print-formatter fmt-cui)
173    (pfstr2 :value-type cdata :initarg :pfstr2 :reader pfstr2)
174    (rela :value-type string :initarg :rela :reader rela)
175    (sab :value-type string :initarg :sab :reader sab :hyperlink find-usab-rsab)
176    (sl :value-type string  :initarg :sl :reader sl)
177    (mg :value-type string  :initarg :mg :reader mg))
178   (:metaclass hyperobject-class)
179   (:user-name "Relationship")
180   (:default-print-slots rel rela sab sl mg cui2 pfstr2))
181         
182 (defclass ucoc (umlsclass)
183   ((cui1 :value-type fixnum :initarg :cui1 :reader cui1 :print-formatter fmt-cui)
184    (cui2 :value-type fixnum :initarg :cui2 :reader cui2 :print-formatter fmt-cui
185          :hyperlink find-ucon-cui)
186    (pfstr2 :value-type cdata :initarg :pfstr2 :reader pfstr2)
187    (soc :value-type string :initarg :soc :reader soc)
188    (cot :value-type string :initarg :cot :reader cot)
189    (cof :value-type fixnum :initarg :cof :reader cof)
190    (coa :value-type cdata :initarg :coa :reader coa))
191   (:metaclass hyperobject-class)
192   (:user-name "Co-occuring Concept")
193   (:default-print-slots soc cot cof coa cui2 pfstr2))
194
195         
196 (defclass uatx (umlsclass)
197   ((sab :value-type string :initarg :sab :reader sab)
198    (rel :value-type string :initarg :rel :reader rel)
199    (atx :value-type cdata :initarg :atx :reader atx))
200   (:metaclass hyperobject-class)
201   (:user-name "Associated Expression")
202   (:default-print-slots sab rel atx))
203
204 (defclass ucon (umlsclass)
205   ((cui :value-type fixnum :initarg :cui :reader cui :print-formatter fmt-cui
206         :hyperlink find-ucon-cui)
207    (lrl :value-type fixnum :initarg :lrl :reader lrl)
208    (pfstr :value-type cdata :initarg :pfstr :reader pfstr)
209    (s#def :reader s#def :subobject (find-udef-cui cui))
210    (s#sty :reader s#sty :subobject (find-usty-cui cui))
211    (s#atx :reader s#atx :subobject (find-uatx-cui cui))
212    (s#lo :reader s#lo :subobject (find-ulo-cui cui))
213    (s#term :reader s#term :subobject (find-uterm-cui cui))
214    (s#sat :reader s#sat :subobject (find-usat-ui cui))
215    (s#rel :reader s#rel :subobject (find-urel-cui cui))
216    (s#coc :reader s#coc :subobject (find-ucoc-cui cui)))
217   (:metaclass hyperobject-class)
218   (:user-name "Concept")
219   (:default-print-slots cui lrl pfstr))
220
221 (defclass uxw (umlsclass)
222   ((wd :value-type string :initarg :wd :reader wd)
223    (cui :value-type fixnum :initform nil :initarg :cui :reader cui :print-formatter fmt-cui)
224    (lui :value-type fixnum :initform nil :initarg :lui :reader lui :print-formatter fmt-lui)
225    (sui :value-type fixnum :initform nil :initarg :sui :reader sui :print-formatter fmt-sui))
226   (:metaclass hyperobject-class)
227   (:user-name "XW Index")
228   (:default-print-slots wd cui lui sui))
229
230 (defclass uxw-noneng (umlsclass)
231   ((lat :value-type string :initarg :lat :reader lat)
232    (wd :value-type string :initarg :wd :reader wd)
233    (cui :value-type fixnum :initform nil :initarg :cui :reader cui :print-formatter fmt-cui)
234    (lui :value-type fixnum :initform nil :initarg :lui :reader lui :print-formatter fmt-lui)
235    (sui :value-type fixnum :initform nil :initarg :sui :reader sui :print-formatter fmt-sui)
236    (lrl :value-type fixnum :initform nil :initarg :lrl :reader lrl))
237   (:metaclass hyperobject-class)
238   (:user-name "XW Non-English Index")
239   (:default-print-slots wd cui lui sui))
240
241 (defclass uxnw (umlsclass)
242   ((lat :value-type string :initarg :lat :reader lat)
243    (nwd :value-type string :initarg :nwd :reader nwd)
244    (cuilist :value-type list :initarg :cuilist :reader uxnw-cuilist))
245   (:metaclass hyperobject-class)
246   (:user-name "XNW Index")
247   (:default-print-slots lat nwd cuilist))
248
249 (defclass uxns (umlsclass)
250   ((lat :value-type string :initarg :lat :reader lat)
251    (nstr :value-type string :initarg :nstr :reader nstr)
252    (cuilist :value-type list :initarg :cuilist :reader cuilist))
253   (:metaclass hyperobject-class)
254   (:user-name "XNS Index")
255   (:default-print-slots lat nstr cuilist))
256
257
258 ;;; LEX objects
259
260 (defclass lexterm (umlsclass)
261   ((eui :value-type fixnum :initarg :eui :reader eui :print-formatter fmt-eui
262         :hyperlink find-lexterm-eui)
263    (wrd :value-type string :initarg :wrd :reader wrd)
264    (s#abr :reader s#abr :subobject (find-labr-eui eui))
265    (s#agr :reader s#agr :subobject (find-lagr-eui eui))
266    (s#cmp :reader s#cmp :subobject (find-lcmp-eui eui))
267    (s#mod :reader s#mod :subobject (find-lmod-eui eui))
268    (s#nom :reader s#nom :subobject (find-lnom-eui eui))
269    (s#prn :reader s#prn :subobject (find-lprn-eui eui))
270    (s#prp :reader s#prp :subobject (find-lprp-eui eui))
271    (s#spl :reader s#spl :subobject (find-lspl-eui eui))
272    (s#trm :reader s#trm :subobject (find-ltrm-eui eui))
273    (s#typ :reader s#typ :subobject (find-ltyp-eui eui)))
274   (:metaclass hyperobject-class)
275   (:user-name "Lexical Term")
276   (:default-print-slots eui wrd))
277
278
279 (defclass labr  (umlsclass)
280   ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
281    (bas :value-type string :initarg :bas :reader bas)
282    (abr :value-type string :initarg :abr :reader abr)
283    (eui2 :value-type integer :initarg :eui2 :reader eui2 :print-formatter fmt-eui)
284    (bas2 :value-type string :initarg :bas2 :reader bas2))
285   (:metaclass hyperobject-class)
286   (:user-name "Abbreviations and Acronyms")
287   (:default-print-slots eui bas abr eui2 bas2))
288
289 (defclass lagr  (umlsclass)
290   ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
291    (str :value-type string :initarg :str :reader str)
292    (sca :value-type string :initarg :sca :reader sca)
293    (agr :value-type string :initarg :agr :reader agr)
294    (cit :value-type string :initarg :cit :reader cit)
295    (bas :value-type string :initarg :bas :reader bas))
296   (:metaclass hyperobject-class)
297   (:user-name "Agreement and Inflection")
298   (:default-print-slots eui str sca agr cit bas))
299
300 (defclass lcmp  (umlsclass)
301   ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
302    (bas :value-type string :initarg :bas :reader bas)
303    (sca :value-type string :initarg :sca :reader sca)
304    (com :value-type string :initarg :com :reader com))
305   (:metaclass hyperobject-class)
306   (:user-name "Complementation")
307   (:default-print-slots eui bas sca com))
308
309 (defclass lmod  (umlsclass)
310   ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
311    (bas :value-type string :initarg :bas :reader bas)
312    (sca :value-type string :initarg :sca :reader sca)
313    (psnmod :value-type string :initarg :psnmod :reader psnmod)
314    (fea :value-type string :initarg :fea :reader fea))
315   (:metaclass hyperobject-class)
316   (:user-name "Modifiers")
317   (:default-print-slots eui bas sca psnmod fea))
318
319 (defclass lnom  (umlsclass)
320   ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
321    (bas :value-type string :initarg :bas :reader bas)
322    (sca :value-type string :initarg :sca :reader sca)
323    (eui2 :value-type integer :initarg :eui2 :reader eui2 :print-formatter fmt-eui)
324    (bas2 :value-type string :initarg :bas2 :reader bas2)
325    (sca2 :value-type string :initarg :sca2 :reader sca2))
326   (:metaclass hyperobject-class)
327   (:user-name "Nominalizations")
328   (:default-print-slots eui bas sca eui2 bas2 sca2))
329
330 (defclass lprn  (umlsclass)
331   ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
332    (bas :value-type string :initarg :bas :reader bas)
333    (num :value-type string :initarg :num :reader num)
334    (gnd :value-type string :initarg :gnd :reader gnd)
335    (cas :value-type string :initarg :cas :reader cas)
336    (pos :value-type string :initarg :pos :reader pos)
337    (qnt :value-type string :initarg :qnt :reader qnt)
338    (fea :value-type string :initarg :fea :reader fea))
339   (:metaclass hyperobject-class)
340   (:user-name "Pronouns")
341   (:default-print-slots eui bas num gnd cas pos qnt fea))
342
343 (defclass lprp  (umlsclass)
344   ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
345    (bas :value-type string :initarg :bas :reader bas)
346    (str :value-type string :initarg :str :reader str)
347    (sca :value-type string :initarg :sca :reader sca)
348    (fea :value-type string :initarg :fea :reader fea))
349   (:metaclass hyperobject-class)
350   (:user-name "Properties")
351   (:default-print-slots eui bas str sca fea))
352
353
354 (defclass lspl  (umlsclass)
355   ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
356    (spv :value-type string :initarg :spv :reader spv)
357    (bas :value-type string :initarg :bas :reader bas))
358   (:metaclass hyperobject-class)
359   (:user-name "Spelling Variants")
360   (:default-print-slots eui spv bas))
361
362
363 (defclass ltrm  (umlsclass)
364   ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
365    (bas :value-type string :initarg :bas :reader bas)
366    (gen :value-type string :initarg :gen :reader gen))
367   (:metaclass hyperobject-class)
368   (:user-name "Trade Marks")
369   (:default-print-slots eui bas gen))
370
371 (defclass ltyp  (umlsclass)
372   ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
373    (bas :value-type string :initarg :bas :reader bas)
374    (sca :value-type string :initarg :sca :reader sca)
375    (typ :value-type string :initarg :typ :reader typ))
376   (:metaclass hyperobject-class)
377   (:user-name "Inflection Type")
378   (:default-print-slots eui bas sca typ))
379
380 (defclass lwd (umlsclass)
381   ((wrd :value-type string :initarg :wrd :reader wrd)
382    (euilist :value-type list :initarg :euilist :reader euilist))
383   (:metaclass hyperobject-class)
384   (:user-name "Lexical Word Index")
385   (:default-print-slots wrd euilist))
386
387 ;;; Semantic NET objects
388
389 (defclass sdef (umlsclass)
390   ((rt :value-type string :initarg :rt :reader rt)
391    (ui :value-type integer :initarg :ui :reader ui :print-formatter fmt-tui)
392    (styrl :value-type string :initarg :styrl :reader styrl)
393    (stnrtn :value-type string :initarg :stnrtn :reader stnrtn)
394    (def :value-type string :initarg :def :reader def)
395    (ex :value-type string :initarg :ex :reader ex)
396    (un :value-type string :initarg :un :reader un)
397    (rh :value-type string :initarg :rh :reader rh)
398    (abr :value-type string :initarg :abr :reader abr)
399    (rin :value-type string :initarg :rin :reader rin))
400   (:metaclass hyperobject-class)
401   (:user-name "Basic information about Semantic Types and Relations")
402   (:default-print-slots rt ui styrl stnrtn def ex un rh abr rin))
403
404 (defclass sstr (umlsclass)
405   ((styrl :value-type string :initarg :styrl :reader styrl)
406    (rl :value-type string :initarg :rl :reader rl)
407    (styrl2 :value-type string :initarg :styrl2 :reader styrl2)
408    (ls :value-type string :initarg :ls :reader ls))
409   (:metaclass hyperobject-class)
410   (:user-name "Structure of the Network")
411   (:default-print-slots styrl rl styrl2 ls))
412
413 (defclass sstre1 (umlsclass)
414   ((ui :value-type integer :initarg :ui :reader ui :print-formatter fmt-tui)
415    (ui2 :value-type integer :initarg :ui2 :reader ui2 :print-formatter fmt-tui)
416    (ui3 :value-type integer :initarg :ui3 :reader ui3 :print-formatter fmt-tui))
417   (:metaclass hyperobject-class)
418   (:user-name "Fully Inherited Set of Releatons (TUI's)")
419   (:default-print-slots ui ui2 ui3))
420
421 (defclass sstre2 (umlsclass)
422   ((sty :value-type string :initarg :ui :reader sty)
423    (rl :value-type string :initarg :ui2 :reader rl)
424    (sty2 :value-type string :initarg :ui3 :reader sty2))
425   (:metaclass hyperobject-class)
426   (:user-name "Fully Inherited Set of Releatons (strings)")
427   (:default-print-slots sty rl sty2))
428