You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ctakes.apache.org by se...@apache.org on 2015/09/28 04:11:51 UTC

svn commit: r1705593 - in /ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2: concept/ consumer/

Author: seanfinan
Date: Mon Sep 28 02:11:50 2015
New Revision: 1705593

URL: http://svn.apache.org/viewvc?rev=1705593&view=rev
Log:
CTAKES-382  Adding "Concept Creator", at this time for extensions to UmlsConcept

Added:
    ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/DefaultUmlsConceptCreator.java
    ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/UmlsConceptCreator.java
Modified:
    ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/concept/MemConceptFactory.java
    ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/AbstractTermConsumer.java
    ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/DefaultTermConsumer.java
    ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/PrecisionTermConsumer.java
    ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/TermConsumer.java

Modified: ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/concept/MemConceptFactory.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/concept/MemConceptFactory.java?rev=1705593&r1=1705592&r2=1705593&view=diff
==============================================================================
--- ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/concept/MemConceptFactory.java (original)
+++ ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/concept/MemConceptFactory.java Mon Sep 28 02:11:50 2015
@@ -2,6 +2,7 @@ package org.apache.ctakes.dictionary.loo
 
 import org.apache.ctakes.dictionary.lookup2.util.CuiCodeUtil;
 
+import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -17,7 +18,7 @@ final public class MemConceptFactory ext
 
    public MemConceptFactory( final String name, final Map<Long, Concept> conceptMap ) {
       super( name );
-      _conceptMap = conceptMap;
+      _conceptMap = new HashMap<>( conceptMap );
    }
 
    /**

Modified: ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/AbstractTermConsumer.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/AbstractTermConsumer.java?rev=1705593&r1=1705592&r2=1705593&view=diff
==============================================================================
--- ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/AbstractTermConsumer.java (original)
+++ ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/AbstractTermConsumer.java Mon Sep 28 02:11:50 2015
@@ -43,10 +43,12 @@ abstract public class AbstractTermConsum
 
    final private String _codingScheme;
 
+
    public AbstractTermConsumer( final UimaContext uimaContext, final Properties properties ) {
       _codingScheme = properties.getProperty( CODING_SCHEME_PRP_KEY );
    }
 
+
    /**
     * {@inheritDoc}
     */

Modified: ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/DefaultTermConsumer.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/DefaultTermConsumer.java?rev=1705593&r1=1705592&r2=1705593&view=diff
==============================================================================
--- ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/DefaultTermConsumer.java (original)
+++ ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/DefaultTermConsumer.java Mon Sep 28 02:11:50 2015
@@ -44,9 +44,16 @@ import static org.apache.ctakes.typesyst
  */
 final public class DefaultTermConsumer extends AbstractTermConsumer {
 
+   final private UmlsConceptCreator _umlsConceptCreator;
 
    public DefaultTermConsumer( final UimaContext uimaContext, final Properties properties ) {
+      this( uimaContext, properties, new DefaultUmlsConceptCreator() );
+   }
+
+   public DefaultTermConsumer( final UimaContext uimaContext, final Properties properties,
+                               final UmlsConceptCreator umlsConceptCreator ) {
       super( uimaContext, properties );
+      _umlsConceptCreator = umlsConceptCreator;
    }
 
 
@@ -54,7 +61,7 @@ final public class DefaultTermConsumer e
     * {@inheritDoc}
     */
    @Override
-   public void consumeTypeIdHits( final JCas jcas, final String defaultScheme, final int cTakesSemantic,
+   public void consumeTypeIdHits( final JCas jcas, final String codingScheme, final int cTakesSemantic,
                                   final CollectionMap<TextSpan, Long, ? extends Collection<Long>> textSpanCuis,
                                   final CollectionMap<Long, Concept, ? extends Collection<Concept>> cuiConcepts )
          throws AnalysisEngineProcessException {
@@ -65,7 +72,7 @@ final public class DefaultTermConsumer e
             umlsConceptList.clear();
             for ( Long cuiCode : spanCuis.getValue() ) {
                umlsConceptList.addAll(
-                     createUmlsConcepts( jcas, defaultScheme, cTakesSemantic, cuiCode, cuiConcepts ) );
+                     createUmlsConcepts( jcas, codingScheme, cTakesSemantic, cuiCode, cuiConcepts ) );
             }
             final FSArray conceptArr = new FSArray( jcas, umlsConceptList.size() );
             int arrIdx = 0;
@@ -111,15 +118,15 @@ final public class DefaultTermConsumer e
       return new EntityMention( jcas );
    }
 
-   static private Collection<UmlsConcept> createUmlsConcepts( final JCas jcas,
-                                                              final String defaultScheme,
-                                                              final int cTakesSemantic,
-                                                              final Long cuiCode,
-                                                              final CollectionMap<Long, Concept, ? extends Collection<Concept>> conceptMap ) {
+   private Collection<UmlsConcept> createUmlsConcepts( final JCas jcas,
+                                                       final String codingScheme,
+                                                       final int cTakesSemantic,
+                                                       final Long cuiCode,
+                                                       final CollectionMap<Long, Concept, ? extends Collection<Concept>> conceptMap ) {
       final Collection<Concept> concepts = conceptMap.getCollection( cuiCode );
       if ( concepts == null || concepts.isEmpty() ) {
-         return Arrays.asList( createUmlsConcept( jcas, defaultScheme,
-               CuiCodeUtil.getInstance().getAsCui( cuiCode ), null, null, null ) );
+         return Collections.singletonList( createSimpleUmlsConcept( jcas, codingScheme,
+               CuiCodeUtil.getInstance().getAsCui( cuiCode ) ) );
       }
       final Collection<UmlsConcept> umlsConcepts = new HashSet<>();
       for ( Concept concept : concepts ) {
@@ -128,54 +135,62 @@ final public class DefaultTermConsumer e
             for ( String tui : tuis ) {
                // the concept could have tuis outside this cTakes semantic group
                if ( SemanticUtil.getTuiSemanticGroupId( tui ) == cTakesSemantic ) {
-                  umlsConcepts.addAll( createUmlsConcepts( jcas, defaultScheme, tui, concept ) );
+                  umlsConcepts.addAll( _umlsConceptCreator.createUmlsConcepts( jcas, codingScheme, tui, concept ) );
                }
             }
          } else {
-            umlsConcepts.addAll( createUmlsConcepts( jcas, defaultScheme, null, concept ) );
+            umlsConcepts.addAll( _umlsConceptCreator.createUmlsConcepts( jcas, codingScheme, null, concept ) );
          }
       }
       return umlsConcepts;
    }
 
-   static private Collection<UmlsConcept> createUmlsConcepts( final JCas jcas, final String defaultScheme,
-                                                              final String tui, final Concept concept ) {
-      final Collection<UmlsConcept> concepts = new ArrayList<>();
-      for ( String codeName : concept.getCodeNames() ) {
-         if ( codeName.equals( Concept.TUI ) ) {
-            continue;
-         }
-         final Collection<String> codes = concept.getCodes( codeName );
-         if ( codes == null || codes.isEmpty() ) {
-            continue;
-         }
-         for ( String code : codes ) {
-            concepts.add( createUmlsConcept( jcas, codeName, concept.getCui(), tui,
-                  concept.getPreferredText(), code ) );
-         }
-      }
-      if ( concepts.isEmpty() ) {
-         concepts.add( createUmlsConcept( jcas, defaultScheme, concept.getCui(), tui,
-               concept.getPreferredText(), null ) );
-      }
-      return concepts;
-   }
+//   static private Collection<UmlsConcept> createUmlsConcepts( final JCas jcas, final String defaultScheme,
+//                                                              final String tui, final Concept concept ) {
+//      final Collection<UmlsConcept> concepts = new ArrayList<>();
+//      for ( String codeName : concept.getCodeNames() ) {
+//         if ( codeName.equals( Concept.TUI ) ) {
+//            continue;
+//         }
+//         final Collection<String> codes = concept.getCodes( codeName );
+//         if ( codes == null || codes.isEmpty() ) {
+//            continue;
+//         }
+//         for ( String code : codes ) {
+//            concepts.add( createUmlsConcept( jcas, codeName, concept.getCui(), tui,
+//                  concept.getPreferredText(), code ) );
+//         }
+//      }
+//      if ( concepts.isEmpty() ) {
+//         concepts.add( createUmlsConcept( jcas, defaultScheme, concept.getCui(), tui,
+//               concept.getPreferredText(), null ) );
+//      }
+//      return concepts;
+//   }
+
+//   static private UmlsConcept createUmlsConcept( final JCas jcas, final String codingScheme,
+//                                                 final String cui, final String tui,
+//                                                 final String preferredText, final String code ) {
+//      final UmlsConcept umlsConcept = new UmlsConcept( jcas );
+//      umlsConcept.setCodingScheme( codingScheme );
+//      umlsConcept.setCui( cui );
+//      if ( tui != null ) {
+//         umlsConcept.setTui( tui );
+//      }
+//      if ( preferredText != null && !preferredText.isEmpty() ) {
+//         umlsConcept.setPreferredText( preferredText );
+//      }
+//      if ( code != null ) {
+//         umlsConcept.setCode( code );
+//      }
+//      return umlsConcept;
+//   }
+
 
-   static private UmlsConcept createUmlsConcept( final JCas jcas, final String codingScheme,
-                                                 final String cui, final String tui,
-                                                 final String preferredText, final String code ) {
+   static private UmlsConcept createSimpleUmlsConcept( final JCas jcas, final String codingScheme, final String cui ) {
       final UmlsConcept umlsConcept = new UmlsConcept( jcas );
       umlsConcept.setCodingScheme( codingScheme );
       umlsConcept.setCui( cui );
-      if ( tui != null ) {
-         umlsConcept.setTui( tui );
-      }
-      if ( preferredText != null && !preferredText.isEmpty() ) {
-         umlsConcept.setPreferredText( preferredText );
-      }
-      if ( code != null ) {
-         umlsConcept.setCode( code );
-      }
       return umlsConcept;
    }
 

Added: ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/DefaultUmlsConceptCreator.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/DefaultUmlsConceptCreator.java?rev=1705593&view=auto
==============================================================================
--- ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/DefaultUmlsConceptCreator.java (added)
+++ ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/DefaultUmlsConceptCreator.java Mon Sep 28 02:11:50 2015
@@ -0,0 +1,65 @@
+package org.apache.ctakes.dictionary.lookup2.consumer;
+
+import org.apache.ctakes.dictionary.lookup2.concept.Concept;
+import org.apache.ctakes.typesystem.type.refsem.UmlsConcept;
+import org.apache.uima.jcas.JCas;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.logging.Logger;
+
+/**
+ * @author SPF , chip-nlp
+ * @version %I%
+ * @since 9/24/2015
+ */
+final public class DefaultUmlsConceptCreator implements UmlsConceptCreator {
+
+   static private final Logger LOGGER = Logger.getLogger( "DefaultUmlsConceptCreator" );
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public Collection<UmlsConcept> createUmlsConcepts( final JCas jcas, final String codingScheme,
+                                                      final String tui, final Concept concept ) {
+      final Collection<UmlsConcept> concepts = new ArrayList<>();
+      for ( String codeName : concept.getCodeNames() ) {
+         if ( codeName.equals( Concept.TUI ) ) {
+            continue;
+         }
+         final Collection<String> codes = concept.getCodes( codeName );
+         if ( codes == null || codes.isEmpty() ) {
+            continue;
+         }
+         for ( String code : codes ) {
+            concepts.add( createUmlsConcept( jcas, codeName, concept.getCui(), tui,
+                  concept.getPreferredText(), code ) );
+         }
+      }
+      if ( concepts.isEmpty() ) {
+         concepts.add( createUmlsConcept( jcas, codingScheme, concept.getCui(), tui,
+               concept.getPreferredText(), null ) );
+      }
+      return concepts;
+   }
+
+   static private UmlsConcept createUmlsConcept( final JCas jcas, final String codingScheme,
+                                                 final String cui, final String tui,
+                                                 final String preferredText, final String code ) {
+      final UmlsConcept umlsConcept = new UmlsConcept( jcas );
+      umlsConcept.setCodingScheme( codingScheme );
+      umlsConcept.setCui( cui );
+      if ( tui != null ) {
+         umlsConcept.setTui( tui );
+      }
+      if ( preferredText != null && !preferredText.isEmpty() ) {
+         umlsConcept.setPreferredText( preferredText );
+      }
+      if ( code != null ) {
+         umlsConcept.setCode( code );
+      }
+      return umlsConcept;
+   }
+
+}

Modified: ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/PrecisionTermConsumer.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/PrecisionTermConsumer.java?rev=1705593&r1=1705592&r2=1705593&view=diff
==============================================================================
--- ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/PrecisionTermConsumer.java (original)
+++ ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/PrecisionTermConsumer.java Mon Sep 28 02:11:50 2015
@@ -46,6 +46,12 @@ final public class PrecisionTermConsumer
       _idHitConsumer = new DefaultTermConsumer( uimaContext, properties );
    }
 
+   public PrecisionTermConsumer( final UimaContext uimaContext, final Properties properties,
+                                 final UmlsConceptCreator umlsConceptCreator ) {
+      super( uimaContext, properties );
+      _idHitConsumer = new DefaultTermConsumer( uimaContext, properties, umlsConceptCreator );
+   }
+
 
    /**
     * Only uses the largest spans for the type

Modified: ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/TermConsumer.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/TermConsumer.java?rev=1705593&r1=1705592&r2=1705593&view=diff
==============================================================================
--- ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/TermConsumer.java (original)
+++ ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/TermConsumer.java Mon Sep 28 02:11:50 2015
@@ -51,11 +51,11 @@ public interface TermConsumer {
 
    /**
     * @param jcas           -
-    * @param defaultScheme  - name of the coding scheme to use if no secondary (snomed, rxnorm) schemes exist
+    * @param codingScheme   - name of the coding scheme to use if no secondary (snomed, rxnorm) schemes exist
     * @param cTakesSemantic cTakes IdentifiedAnnotation only accepts an integer as a cTakesSemantic
     * @throws org.apache.uima.analysis_engine.AnalysisEngineProcessException
     */
-   void consumeTypeIdHits( final JCas jcas, final String defaultScheme, final int cTakesSemantic,
+   void consumeTypeIdHits( final JCas jcas, final String codingScheme, final int cTakesSemantic,
                            final CollectionMap<TextSpan, Long, ? extends Collection<Long>> textSpanCuis,
                            final CollectionMap<Long, Concept, ? extends Collection<Concept>> cuiConcepts )
          throws AnalysisEngineProcessException;

Added: ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/UmlsConceptCreator.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/UmlsConceptCreator.java?rev=1705593&view=auto
==============================================================================
--- ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/UmlsConceptCreator.java (added)
+++ ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/consumer/UmlsConceptCreator.java Mon Sep 28 02:11:50 2015
@@ -0,0 +1,21 @@
+package org.apache.ctakes.dictionary.lookup2.consumer;
+
+
+import org.apache.ctakes.dictionary.lookup2.concept.Concept;
+import org.apache.ctakes.typesystem.type.refsem.UmlsConcept;
+import org.apache.uima.jcas.JCas;
+
+import java.util.Collection;
+
+/**
+ * @author SPF , chip-nlp
+ * @version %I%
+ * @since 9/24/2015
+ */
+public interface UmlsConceptCreator {
+
+
+   Collection<UmlsConcept> createUmlsConcepts( final JCas jcas, final String codingScheme,
+                                               final String tui, final Concept concept );
+
+}