1 ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10; Package: umlisp -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
5 ;;;; Name: classes.lisp
6 ;;;; Purpose: Class defintions for UMLisp
7 ;;;; Programmer: Kevin M. Rosenberg
8 ;;;; Date Started: Apr 2000
10 ;;;; $Id: classes.lisp,v 1.37 2003/05/15 06:23:58 kevin Exp $
12 ;;;; This file, part of UMLisp, is
13 ;;;; Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D.
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 ;;;; *************************************************************************
20 (declaim (optimize (speed 3) (safety 1) (compilation-speed 0) (debug 3)))
22 (defclass umlsclass (hyperobject)
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."))
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"))
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)
44 (:default-print-slots rank sab tty supres))
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))
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))
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
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)
99 (:default-print-slots sab code tty srl))
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))
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))
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))
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)
158 (:default-print-slots lui lat ts lrl))
160 (defclass usty (umlsclass)
161 ((tui :value-type fixnum :initarg :tui :reader tui :print-formatter fmt-tui
162 :hyperlink find-ucon-tui
163 :hyperlink-parameters (("subobjects" ."no")))
164 :hyperlink find-ucon-tui
165 :hyperlink-parameters (("subobjects" . "no")))
166 (sty :value-type string :initarg :sty :reader sty))
167 (:metaclass hyperobject-class)
168 (:user-name "Semantic Type")
169 (:default-print-slots tui sty))
171 (defclass urel (umlsclass)
172 ((rel :value-type string :initarg :rel :reader rel :hyperlink find-brel-rel)
173 (cui1 :value-type fixnum :initarg :cui1 :reader cui1 :print-formatter fmt-cui)
174 (cui2 :value-type fixnum :initarg :cui2 :reader cui2 :hyperlink find-ucon-sui
175 :print-formatter fmt-cui)
176 (pfstr2 :value-type cdata :initarg :pfstr2 :reader pfstr2)
177 (rela :value-type string :initarg :rela :reader rela)
178 (sab :value-type string :initarg :sab :reader sab :hyperlink find-usab-rsab)
179 (sl :value-type string :initarg :sl :reader sl)
180 (mg :value-type string :initarg :mg :reader mg))
181 (:metaclass hyperobject-class)
182 (:user-name "Relationship")
183 (:default-print-slots rel rela sab sl mg cui2 pfstr2))
185 (defclass ucoc (umlsclass)
186 ((cui1 :value-type fixnum :initarg :cui1 :reader cui1 :print-formatter fmt-cui)
187 (cui2 :value-type fixnum :initarg :cui2 :reader cui2 :print-formatter fmt-cui
188 :hyperlink find-ucon-cui)
189 (pfstr2 :value-type cdata :initarg :pfstr2 :reader pfstr2)
190 (soc :value-type string :initarg :soc :reader soc)
191 (cot :value-type string :initarg :cot :reader cot)
192 (cof :value-type fixnum :initarg :cof :reader cof)
193 (coa :value-type cdata :initarg :coa :reader coa))
194 (:metaclass hyperobject-class)
195 (:user-name "Co-occuring Concept")
196 (:default-print-slots soc cot cof coa cui2 pfstr2))
199 (defclass uatx (umlsclass)
200 ((sab :value-type string :initarg :sab :reader sab)
201 (rel :value-type string :initarg :rel :reader rel)
202 (atx :value-type cdata :initarg :atx :reader atx))
203 (:metaclass hyperobject-class)
204 (:user-name "Associated Expression")
205 (:default-print-slots sab rel atx))
207 (defclass ucon (umlsclass)
208 ((cui :value-type fixnum :initarg :cui :reader cui :print-formatter fmt-cui
209 :hyperlink find-ucon-cui)
210 (lrl :value-type fixnum :initarg :lrl :reader lrl)
211 (pfstr :value-type cdata :initarg :pfstr :reader pfstr)
212 (s#def :reader s#def :subobject (find-udef-cui cui))
213 (s#sty :reader s#sty :subobject (find-usty-cui cui))
214 (s#atx :reader s#atx :subobject (find-uatx-cui cui))
215 (s#lo :reader s#lo :subobject (find-ulo-cui cui))
216 (s#term :reader s#term :subobject (find-uterm-cui cui))
217 (s#sat :reader s#sat :subobject (find-usat-ui cui))
218 (s#rel :reader s#rel :subobject (find-urel-cui cui))
219 (s#coc :reader s#coc :subobject (find-ucoc-cui cui)))
220 (:metaclass hyperobject-class)
221 (:user-name "Concept")
222 (:default-print-slots cui lrl pfstr))
224 (defclass uxw (umlsclass)
225 ((wd :value-type string :initarg :wd :reader wd)
226 (cui :value-type fixnum :initform nil :initarg :cui :reader cui :print-formatter fmt-cui)
227 (lui :value-type fixnum :initform nil :initarg :lui :reader lui :print-formatter fmt-lui)
228 (sui :value-type fixnum :initform nil :initarg :sui :reader sui :print-formatter fmt-sui))
229 (:metaclass hyperobject-class)
230 (:user-name "XW Index" "XW Indices")
231 (:default-print-slots wd cui lui sui))
233 (defclass uxw-noneng (umlsclass)
234 ((lat :value-type string :initarg :lat :reader lat)
235 (wd :value-type string :initarg :wd :reader wd)
236 (cui :value-type fixnum :initform nil :initarg :cui :reader cui :print-formatter fmt-cui)
237 (lui :value-type fixnum :initform nil :initarg :lui :reader lui :print-formatter fmt-lui)
238 (sui :value-type fixnum :initform nil :initarg :sui :reader sui :print-formatter fmt-sui)
239 (lrl :value-type fixnum :initform nil :initarg :lrl :reader lrl))
240 (:metaclass hyperobject-class)
241 (:user-name "XW Non-English Index" "XW Non-English Indices")
242 (:default-print-slots wd cui lui sui))
244 (defclass uxnw (umlsclass)
245 ((lat :value-type string :initarg :lat :reader lat)
246 (nwd :value-type string :initarg :nwd :reader nwd)
247 (cuilist :value-type list :initarg :cuilist :reader uxnw-cuilist))
248 (:metaclass hyperobject-class)
249 (:user-name "XNW Index" "XNW Indices")
250 (:default-print-slots lat nwd cuilist))
252 (defclass uxns (umlsclass)
253 ((lat :value-type string :initarg :lat :reader lat)
254 (nstr :value-type string :initarg :nstr :reader nstr)
255 (cuilist :value-type list :initarg :cuilist :reader cuilist))
256 (:metaclass hyperobject-class)
257 (:user-name "XNS Index" "XNS Indices")
258 (:default-print-slots lat nstr cuilist))
263 (defclass lexterm (umlsclass)
264 ((eui :value-type fixnum :initarg :eui :reader eui :print-formatter fmt-eui
265 :hyperlink find-lexterm-eui)
266 (wrd :value-type string :initarg :wrd :reader wrd)
267 (s#abr :reader s#abr :subobject (find-labr-eui eui))
268 (s#agr :reader s#agr :subobject (find-lagr-eui eui))
269 (s#cmp :reader s#cmp :subobject (find-lcmp-eui eui))
270 (s#mod :reader s#mod :subobject (find-lmod-eui eui))
271 (s#nom :reader s#nom :subobject (find-lnom-eui eui))
272 (s#prn :reader s#prn :subobject (find-lprn-eui eui))
273 (s#prp :reader s#prp :subobject (find-lprp-eui eui))
274 (s#spl :reader s#spl :subobject (find-lspl-eui eui))
275 (s#trm :reader s#trm :subobject (find-ltrm-eui eui))
276 (s#typ :reader s#typ :subobject (find-ltyp-eui eui)))
277 (:metaclass hyperobject-class)
278 (:user-name "Lexical Term")
279 (:default-print-slots eui wrd))
282 (defclass labr (umlsclass)
283 ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
284 (bas :value-type string :initarg :bas :reader bas)
285 (abr :value-type string :initarg :abr :reader abr)
286 (eui2 :value-type integer :initarg :eui2 :reader eui2 :print-formatter fmt-eui)
287 (bas2 :value-type string :initarg :bas2 :reader bas2))
288 (:metaclass hyperobject-class)
289 (:user-name "Abbreviations and Acronym")
290 (:default-print-slots eui bas abr eui2 bas2))
292 (defclass lagr (umlsclass)
293 ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
294 (str :value-type string :initarg :str :reader str)
295 (sca :value-type string :initarg :sca :reader sca)
296 (agr :value-type string :initarg :agr :reader agr)
297 (cit :value-type string :initarg :cit :reader cit)
298 (bas :value-type string :initarg :bas :reader bas))
299 (:metaclass hyperobject-class)
300 (:user-name "Agreement and Inflection")
301 (:default-print-slots eui str sca agr cit bas))
303 (defclass lcmp (umlsclass)
304 ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
305 (bas :value-type string :initarg :bas :reader bas)
306 (sca :value-type string :initarg :sca :reader sca)
307 (com :value-type string :initarg :com :reader com))
308 (:metaclass hyperobject-class)
309 (:user-name "Complementation")
310 (:default-print-slots eui bas sca com))
312 (defclass lmod (umlsclass)
313 ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
314 (bas :value-type string :initarg :bas :reader bas)
315 (sca :value-type string :initarg :sca :reader sca)
316 (psnmod :value-type string :initarg :psnmod :reader psnmod)
317 (fea :value-type string :initarg :fea :reader fea))
318 (:metaclass hyperobject-class)
319 (:user-name "Modifier")
320 (:default-print-slots eui bas sca psnmod fea))
322 (defclass lnom (umlsclass)
323 ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
324 (bas :value-type string :initarg :bas :reader bas)
325 (sca :value-type string :initarg :sca :reader sca)
326 (eui2 :value-type integer :initarg :eui2 :reader eui2 :print-formatter fmt-eui)
327 (bas2 :value-type string :initarg :bas2 :reader bas2)
328 (sca2 :value-type string :initarg :sca2 :reader sca2))
329 (:metaclass hyperobject-class)
330 (:user-name "Nominalization")
331 (:default-print-slots eui bas sca eui2 bas2 sca2))
333 (defclass lprn (umlsclass)
334 ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
335 (bas :value-type string :initarg :bas :reader bas)
336 (num :value-type string :initarg :num :reader num)
337 (gnd :value-type string :initarg :gnd :reader gnd)
338 (cas :value-type string :initarg :cas :reader cas)
339 (pos :value-type string :initarg :pos :reader pos)
340 (qnt :value-type string :initarg :qnt :reader qnt)
341 (fea :value-type string :initarg :fea :reader fea))
342 (:metaclass hyperobject-class)
343 (:user-name "Pronoun")
344 (:default-print-slots eui bas num gnd cas pos qnt fea))
346 (defclass lprp (umlsclass)
347 ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
348 (bas :value-type string :initarg :bas :reader bas)
349 (str :value-type string :initarg :str :reader str)
350 (sca :value-type string :initarg :sca :reader sca)
351 (fea :value-type string :initarg :fea :reader fea))
352 (:metaclass hyperobject-class)
353 (:user-name "Property" "Properties")
354 (:default-print-slots eui bas str sca fea))
357 (defclass lspl (umlsclass)
358 ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
359 (spv :value-type string :initarg :spv :reader spv)
360 (bas :value-type string :initarg :bas :reader bas))
361 (:metaclass hyperobject-class)
362 (:user-name "Spelling Variant")
363 (:default-print-slots eui spv bas))
366 (defclass ltrm (umlsclass)
367 ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
368 (bas :value-type string :initarg :bas :reader bas)
369 (gen :value-type string :initarg :gen :reader gen))
370 (:metaclass hyperobject-class)
371 (:user-name "Trade Mark")
372 (:default-print-slots eui bas gen))
374 (defclass ltyp (umlsclass)
375 ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
376 (bas :value-type string :initarg :bas :reader bas)
377 (sca :value-type string :initarg :sca :reader sca)
378 (typ :value-type string :initarg :typ :reader typ))
379 (:metaclass hyperobject-class)
380 (:user-name "Inflection Type")
381 (:default-print-slots eui bas sca typ))
383 (defclass lwd (umlsclass)
384 ((wrd :value-type string :initarg :wrd :reader wrd)
385 (euilist :value-type list :initarg :euilist :reader euilist))
386 (:metaclass hyperobject-class)
387 (:user-name "Lexical Word Index" "Lexical Word Indices")
388 (:default-print-slots wrd euilist))
390 ;;; Semantic NET objects
392 (defclass sdef (umlsclass)
393 ((rt :value-type string :initarg :rt :reader rt)
394 (ui :value-type integer :initarg :ui :reader ui :print-formatter fmt-tui)
395 (styrl :value-type string :initarg :styrl :reader styrl)
396 (stnrtn :value-type string :initarg :stnrtn :reader stnrtn)
397 (def :value-type string :initarg :def :reader def)
398 (ex :value-type string :initarg :ex :reader ex)
399 (un :value-type string :initarg :un :reader un)
400 (rh :value-type string :initarg :rh :reader rh)
401 (abr :value-type string :initarg :abr :reader abr)
402 (rin :value-type string :initarg :rin :reader rin))
403 (:metaclass hyperobject-class)
404 (:user-name "Basic information about Semantic Types and Relation")
405 (:default-print-slots rt ui styrl stnrtn def ex un rh abr rin))
407 (defclass sstr (umlsclass)
408 ((styrl :value-type string :initarg :styrl :reader styrl)
409 (rl :value-type string :initarg :rl :reader rl)
410 (styrl2 :value-type string :initarg :styrl2 :reader styrl2)
411 (ls :value-type string :initarg :ls :reader ls))
412 (:metaclass hyperobject-class)
413 (:user-name "Structure of the Network")
414 (:default-print-slots styrl rl styrl2 ls))
416 (defclass sstre1 (umlsclass)
417 ((ui :value-type integer :initarg :ui :reader ui :print-formatter fmt-tui)
418 (ui2 :value-type integer :initarg :ui2 :reader ui2 :print-formatter fmt-tui)
419 (ui3 :value-type integer :initarg :ui3 :reader ui3 :print-formatter fmt-tui))
420 (:metaclass hyperobject-class)
421 (:user-name "Fully Inherited Set of Relation (TUIs)"
422 "Fully Inherited Set of Relations (TUIs)")
423 (:default-print-slots ui ui2 ui3))
425 (defclass sstre2 (umlsclass)
426 ((sty :value-type string :initarg :ui :reader sty)
427 (rl :value-type string :initarg :ui2 :reader rl)
428 (sty2 :value-type string :initarg :ui3 :reader sty2))
429 (:metaclass hyperobject-class)
430 (:user-name "Fully Inherited Set of Relation (strings)"
431 "Fully Inherited Set of Relations (strings)")
432 (:default-print-slots sty rl sty2))