Hi Alaa,

Have a look at the OntologyConceptUtil class in ctakes-core.  You can use the 
getCodes(..) method to obtain the codes for a scheme.

For all codes of all annotations:
Collection<String> allCodes = OntologyConceptUtil.getCodes( jcas, schemeName );

For all codes of all annotations in a window (paragraph, segment, sentence):
Collection<String> windowCodes = OntologyConceptUtil.getCodes( jcas, 
windowAnnotation, schemeName );

For all codes in a single annotation:
Collection<String> annotationCodes = OntologyConceptUtil.getCodes( annotation, 
schemeName );

For all codes in multiple annotations:
Collection<String> annotationsCodes = OntologyConceptUtil.getCodes( 
annotations, schemeName );

If you want a map of scheme names and codes:
Map<String,Collection<String>> getSchemeCodes( jcas );
Map<String,Collection<String>> getSchemeCodes( jcas, window );
... getSchemeCodes( annotation );
... getSchemeCodes( annotations );


If you have some other need, like getting all annotations with codes of a 
certain scheme, let me know.
Sean



-----Original Message-----
From: Alaa al Barari [mailto:alaa.albar...@gmail.com] 
Sent: Monday, February 06, 2017 4:30 AM
To: dev@ctakes.apache.org
Subject: jcas work with a list of schemas

Hi,

I have my own dictionary and it has a lot of schemas which takes a lot of time. 
please see code below, how to make it work with specific list of schemas 
instead of all of them

                                jcas = pipeline.newJCas(); 
jcas.setDocumentText(sentence.getCoveredText());
pipeline.process(jcas);
String previousEntity = "";
for ( IdentifiedAnnotation entity : JCasUtil.select( jcas, 
IdentifiedAnnotation.class ) ) {

final FSArray fsArray = entity.getOntologyConceptArr(); if ( fsArray == null ) 
{ continue; } String entityString = entity.getCoveredText(); 
System.out.println( "Entity: " + entity.getCoveredText()
+ " === Polarity: " + entity.getPolarity() " === Subject: " + 
+ entity.getSubject() " === History? " + (entity.getHistoryOf() ==
CONST.NE_HISTORY_OF_PRESENT));

final FeatureStructure[] featureStructures = fsArray.toArray();
final Collection<String> entityCodes = new ArrayList<>(
featureStructures.length );
previousEntity = entityString;
for ( FeatureStructure featureStructure : featureStructures ) {
if ( featureStructure instanceof UmlsConcept ) {
final UmlsConcept umlsConcept = (UmlsConcept)featureStructure;
String entityCode = umlsConcept.getCode();
String entityScheme = umlsConcept.getCodingScheme();
String description = umlsConcept.getCodeDescription();
if (entityCode == null || entityScheme == null) {
continue;
}
if (schemes.contains(entityScheme) || schemes.contains("all")) {
System.out.println(entityScheme + "_" + entityCode + "_" + description);
}
}
}

}
}


Regards.
-- 
Eng Alaa Al-Barari
phone 0599297470

Reply via email to