Package org.apache.ctakes.ytex.umls.dao

Source Code of org.apache.ctakes.ytex.umls.dao.UMLSDaoImpl

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.ctakes.ytex.umls.dao;

import gnu.trove.set.TIntSet;
import gnu.trove.set.hash.TIntHashSet;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;

import javax.sql.DataSource;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ctakes.ytex.umls.model.UmlsAuiFirstWord;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.jdbc.core.JdbcTemplate;


public class UMLSDaoImpl implements UMLSDao {

  public static final String INCLUDE_REL[] = new String[] { "PAR" };
  public static final String EXCLUDE_RELA[] = new String[] { "inverse_isa" };
  private static final Log log = LogFactory.getLog(UMLSDaoImpl.class);

  SessionFactory sessionFactory;
  private JdbcTemplate t;

  public SessionFactory getSessionFactory() {
    return sessionFactory;
  }

  public void setSessionFactory(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
  }

  public void setDataSource(DataSource ds) {
    t = new JdbcTemplate(ds);
  }

  public DataSource getDataSource() {
    return t.getDataSource();
  }

  // /*
  // * (non-Javadoc)
  // *
  // * @see org.apache.ctakes.ytex.umls.dao.UMLSDao#getRelationsForSABs(java.util.Set)
  // */
  // public List<Object[]> getRelationsForSABs(String[] sabs) {
  // Query q = sessionFactory.getCurrentSession().getNamedQuery(
  // "getRelationsForSABs");
  // q.setParameterList("sabs", sabs);
  // // q.setParameterList("rel", INCLUDE_REL);
  // // q.setParameterList("relaExclude", EXCLUDE_RELA);
  // return (List<Object[]>) q.list();
  // }

  // /*
  // * (non-Javadoc)
  // *
  // * @see org.apache.ctakes.ytex.umls.dao.UMLSDao#getAllRelations(java.util.Set)
  // */
  // public List<Object[]> getAllRelations() {
  // Query q = sessionFactory.getCurrentSession().getNamedQuery(
  // "getAllRelations");
  // // q.setParameterList("rel", INCLUDE_REL);
  // // q.setParameterList("relaExclude", EXCLUDE_RELA);
  // return (List<Object[]>) q.list();
  // }

  /**
   * sets up the umls_aui_fword table.
   */
  @SuppressWarnings("unchecked")
  public List<Object[]> getAllAuiStr(String lastAui) {
    Query q = null;
    if (lastAui == null)
      q = sessionFactory.getCurrentSession().getNamedQuery(
          "getFirstAuiStr");
    else {
      q = sessionFactory.getCurrentSession().getNamedQuery(
          "getNextAuiStr");
      q.setString("aui", lastAui);
    }
    q.setMaxResults(10000);
    return q.list();
  }

  public void deleteAuiFirstWord() {
    // delete all entries
    sessionFactory.getCurrentSession()
        .createQuery("delete from UmlsAuiFirstWord").executeUpdate();
  }

  public void insertAuiFirstWord(List<UmlsAuiFirstWord> listAuiFirstWord) {
    for (UmlsAuiFirstWord w : listAuiFirstWord)
      sessionFactory.getCurrentSession().save(w);

  }

  @Override
  public Map<String, String> getNames(List<String> subList) {
    Map<String, String> names = new HashMap<String, String>(subList.size());
    // get the shortest string for the specified cuis
    updateNames("getCuiMinStr", subList, names);
    // for those cuis with a preferred name, use it
    updateNames("getCuiPreferredName", subList, names);
    return names;
  }

  private void updateNames(String queryName, List<String> subList,
      Map<String, String> names) {
    Query q = sessionFactory.getCurrentSession().getNamedQuery(queryName);
    q.setParameterList("cuis", subList);
    @SuppressWarnings("unchecked")
    List<Object[]> listCuiName = q.list();
    for (Object[] cuiName : listCuiName) {
      names.put((String) cuiName[0], (String) cuiName[1]);
    }
  }

  @Override
  public String getLastAui() {
    Query q = sessionFactory.getCurrentSession()
        .getNamedQuery("getLastAui");
    String aui = (String) q.uniqueResult();
    return aui;
  }

  @Override
  @SuppressWarnings("unchecked")
  public TIntSet getRXNORMCuis() {
    TIntSet cuis = new TIntHashSet();
    for (String cui : (List<String>) sessionFactory.getCurrentSession()
        .getNamedQuery("getRXNORMCuis").list()) {
      Matcher m = UMLSDao.cuiPattern.matcher(cui);
      if (m.find()) {
        cuis.add(Integer.parseInt(m.group(1)));
      }
    }
    return cuis;
  }

  @Override
  public boolean isRXNORMCui(String cui) {
    Query q = sessionFactory.getCurrentSession().getNamedQuery(
        "isRXNORMCui");
    q.setCacheable(true);
    q.setString("cui", cui);
    long count = ((Long)q.uniqueResult());
    return count > 0;
  }
}
TOP

Related Classes of org.apache.ctakes.ytex.umls.dao.UMLSDaoImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.