File: data-structures.lisp

package info (click to toggle)
cl-umlisp-orf 3.3.2-3
  • links: PTS, VCS
  • area: contrib
  • in suites: bullseye, buster, jessie, jessie-kfreebsd, stretch, wheezy
  • size: 228 kB
  • ctags: 408
  • sloc: lisp: 2,841; makefile: 54
file content (99 lines) | stat: -rw-r--r-- 3,184 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10; Package: umlisp -*-
;;;; *************************************************************************
;;;; FILE IDENTIFICATION
;;;;
;;;; Name:    data-structures.lisp
;;;; Purpose:  Basic data objects for UMLisp
;;;; Author:   Kevin M. Rosenberg
;;;; Created:  Apr 2000
;;;;
;;;; $Id$
;;;;
;;;; This file, part of UMLisp, is
;;;;    Copyright (c) 2000-2004 by Kevin M. Rosenberg, M.D.
;;;;
;;;; UMLisp users are granted the rights to distribute and use this software
;;;; as governed by the terms of the GNU General Public License.
;;;; *************************************************************************

(in-package #:umlisp-orf)

;;; Paths for files

(defvar *umls-path*
  (make-pathname :directory '(:absolute "data" "umls" "2003AC"))
  "Path for base of UMLS data files")

(defvar *meta-path*
    (merge-pathnames
     (make-pathname :directory '(:relative "META"))
     *umls-path*))

(defvar *lex-path*
    (merge-pathnames
     (make-pathname :directory '(:relative "LEX"))
     *umls-path*))

(defvar *net-path*
    (merge-pathnames
     (make-pathname :directory '(:relative "NET"))
     *umls-path*))

(defun umls-path! (p)
  (setq *umls-path* p))


;;; Structures for parsing UMLS text files

(defparameter *umls-files* nil
  "List of umls file structures. Used when parsing text files.")
(defparameter *umls-cols* nil
  "List of meta column structures. Used when parsing text files.")


;; Preliminary objects to replace structures

(defclass ufile ()
  ((fil :initarg :fil :accessor fil)
   (table :initarg :table :accessor table)
   (des :initarg :des :accessor des)
   (fmt :initarg :fmt :accessor fmt)
   (cls :initarg :cls :accessor cls)
   (rws :initarg :rws :accessor rws)
   (bts :initarg :bts :accessor bts)
   (fields :initarg :fields :accessor fields)
   (ucols :initarg :ucols :accessor ucols))
  (:default-initargs :fil nil :table nil :des nil :fmt nil :cls nil :rws nil :bts nil
                     :fields nil :ucols nil)
  (:documentation "UMLS File"))

(defclass ucol ()
  ((col :initarg :col :accessor col)
   (des :initarg :des :accessor des)
   (ref :initarg :ref :accessor ref)
   (min :initarg :min :accessor cmin)
   (av :initarg :av :accessor av)
   (max :initarg :max :accessor cmax)
   (fil :initarg :fil :accessor fil)
   (sqltype :initarg :sqltype :accessor sqltype)
   (dty :initarg :dty :accessor dty :documentation "new in 2002: suggested SQL datatype")
   (parse-fun :initarg :parse-fun :accessor parse-fun)
   (quote-str :initarg :quote-str :accessor quote-str)
   (datatype :initarg :datatype :accessor datatype)
   (custom-value-fun :initarg :custom-value-fun :accessor custom-value-fun))
  (:default-initargs :col nil :des nil :ref nil :min nil :av nil :max nil :fil nil
                     :sqltype nil :dty nil :parse-fun nil :datatype nil
                     :custom-value-fun nil)
  (:documentation "UMLS column"))


(defmethod print-object ((obj ufile) (s stream))
  (print-unreadable-object (obj s :type t)
    (format s "~A" (fil obj))))

(defmethod print-object ((obj ucol) (s stream))
  (print-unreadable-object (obj s :type t)
    (format s "~A" (col obj))))