r9495: initial original representation format import
[umlisp-orf.git] / data-structures.lisp
diff --git a/data-structures.lisp b/data-structures.lisp
new file mode 100644 (file)
index 0000000..32c84ee
--- /dev/null
@@ -0,0 +1,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))))
+
+
+