-;;;; -*- Mode: LISP; Syntax: Common-Lisp; Base: 10; Pkg: umlisp -*-
-;; SQL/UMLS database Layer over database backend
-;; Copyright (c) 2001 Kevin M. Rosenberg, M.D.
-;; $Id: sql.lisp,v 1.2 2002/10/08 22:13:41 kevin Exp $
-
-(in-package :umlisp)
-
-(declaim (optimize (speed 1) (safety 3)))
-
-(defvar *umls-sql-dsn* "KUMLS2002AC")
-(defun umls-sql-dsn ()
- *umls-sql-dsn*)
-(defun umls-sql-dsn! (dbname)
- (sql-disconnect-pooled)
- (setq *umls-sql-dsn* dbname))
+;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10; Package: umlisp -*-
+;;;; *************************************************************************
+;;;; FILE IDENTIFICATION
+;;;;
+;;;; Name: sql.lisp
+;;;; Purpose: Low-level SQL routines data for UMLisp
+;;;; Author: Kevin M. Rosenberg
+;;;; Created: Apr 2000
+;;;;
+;;;; This file, part of UMLisp, is
+;;;; Copyright (c) 2000-2010 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)
+
+(defvar +umls-sql-map+
+ '((:2004aa . "KUMLS2004AA")
+ (:2006ac . "KUMLS2006AC")
+ (:2006ad . "MTS2006AD")
+ (:2009ab . "MTS2009AB")))
+(defvar +default-umls-db+ "MTS2009AB")
+
+(defun lookup-db-name (db)
+ (cdr (assoc (ensure-keyword db) +umls-sql-map+)))
+
+(defvar *umls-sql-db* +default-umls-db+)
+(defun umls-sql-db ()
+ *umls-sql-db*)
+
+(defun umls-sql-db! (db)
+ (etypecase db
+ (string
+ (setq *umls-sql-db* db))
+ (keyword
+ (setq *umls-sql-db* (lookup-db-name db)))))