Hi Bhagwat, Ok, a couple of things are problematic.
1. the DefaultFastPipeline already contains attribute detection using the AttributeClearTkSubPipe.piper. That sub- pipeline adds the ClearNLPSemanticRoleLabelerAE. So does the AssertionSubPipe.piper. The pipeline cannot have two instances of that annotator. The fix for this is to just add the AssertionEngines that are at the bottom of the AssertionSubPipe.piper. 2. The assertion engines don't work. They will spit out some log messages about not being usable until ctakes-76 is implemented. Then you will get a NullPointerException and ctakes will happily crash. James Masanz made the last comment on ctakes-76: https://issues.apache.org/jira/browse/CTAKES-76 which includes the information: "when this issue gets resolved (the jars are available from maven central) then ctakes-assertion could be updated again to use" So, what to do? Well, my advice would be to just skip the Assertion engines. The default ClearTk attribute engines will produce the same types of event and entity attributes and they are already in the default pipeline. Is there a reason that you wanted to use the older Assertion engines? Was it just listed in (unfortunately) outdated documentation? Sean -----Original Message----- From: Bhagwat Posane [mailto:bhagwat.pos...@gmail.com] Sent: Friday, November 24, 2017 8:58 AM To: dev@ctakes.apache.org Subject: Re: Interpret context out of clinical note [EXTERNAL] Hello Sean, As you mentioned in previous email The annotators in the Assertion piper require several other annotators to run first, so to run AssertionSubPipe.piper I have added DefaultFastPipeline and AssertionDefaults piper file before that. for reference below text is from my piper file: ********************************************************************************* reader FileTreeReader InputDirectory=D:\Bhagwat\Notes load org/apache/ctakes/clinical/pipeline/DefaultFastPipeline.piper load org/apache/ctakes/examples/pipeline/AssertionDefaults.piper load AssertionSubPipe.piper // Temporal (event, time, dtr, tlink) load TemporalSubPipe.piper // Html output set OutputDirectory=D:\Bhagwat\HTMLoutput add pretty.html.HtmlTextWriter //XMI output //writeXmis D:\Bhagwat\XMI ********************************************************************************* As I run this piper file the command addLogged ClearNLPSemanticRoleLabelerAE It is showing started processing.... and never finished. when I debugged the code I found it is going in infinite loop for one of the sentence from clinical note. The code which goes in Infinite loop is in DEPNode.class file ******************************************************************************************************************************************** public boolean isDescendentOf(DEPNode node) { DEPNode head = getHead(); while (head != null) { if (head == node) return true; head = head.getHead(); } return false; } ******************************************************************************************************************************************** if (head == node) this condition never becomes true ! I have added clinical notes for your reference,for the highlighted line the ClearNLPSemanticRoleLablerAE goes in infinite loop. ********************************************************************************************************************************************* Note 1: The patient is XX years old with gross hematuria beginning ten days ago. He has pain over the bladder. He smoked until XXXX. His country of origin is XXXX. He has been here for two years. Ultrasound is planned on 3/26/2015 shows a mass in the bladder 3.4 x 3.8 x 3.1 cm. Note 2: This is a 67-year-old patient followed for erectile dysfunction and benign prostatic hyperplasia. Prostate symptoms consist of slow stream and NX X 2. TUMT explained to the patient. Urinalysis showed 2+ sugar before and trace of blood. No retention, burning or blood. He is up perhaps once at night to void depending upon his fluid intake. PSA was .3 on 1/12. The patient use to take AndroGel squirt three a day. T was 483 in Nov. 2011. T was 531 on 1/13 by internist. He has been off the Androgel. Testosterone is rechecked. He may choose to use IM testosterone at home self administered. He also uses TriMix for ED. He has diminished number and frequency of erections. Duration is years. Modifying factors include Diabetes. Severity is 8 of 10. He no logner uses Dialis. TriMix refilled. Patient has lost 40 lbs on Victosa administered by his endocrinologist. ********************************************************************************************************************************************* The Interesting thing is when I run only the highlighted sentence as a note it executes successfully, it means to get into infinite loop the highlighted sentence should have at least one sentence with it. Could you please provide your thoughts on it. Sorry for lengthy explanation, but I thought it is necessary. On 24 November 2017 at 01:22, Finan, Sean <sean.fi...@childrens.harvard.edu> wrote: > Hi Bhagwat, > > Thanks for the heads up on the "file:" issue. I will check to see if > the usage has changed and fix the piper. > > Sean > > -----Original Message----- > From: Bhagwat Posane [mailto:bhagwat.pos...@gmail.com] > Sent: Thursday, November 23, 2017 9:17 AM > To: dev@ctakes.apache.org > Subject: Re: Interpret context out of clinical note [EXTERNAL] > > Thanks James, It worked using cast to Map. ! > > Sean, > In AssertionDefaults.piper you set the file like: > > set > assertionModelResource=file:org/apache/ctakes/assertion/models/i2b2.mo > del > > As I run this piper file it throws file not found exception, it > resolved for me by removing "file:" from command, I suppose this needs to be > fixed. > > > On 22 November 2017 at 23:21, Finan, Sean <Sean.Finan@childrens.harvard. > edu> > wrote: > > > Wow, that is really strange. > > > > https://urldefense.proofpoint.com/v2/url?u=https-3A__uima.apache.org > > _d > > _uimafit-2Dcurrent_api_org_&d=DwIBaQ&c=qS4goWBT7poplM69zy_3xhKwEW14J > > ZM > > SdioCoppxeFU&r=fs67GvlGZstTpyIisCYNYmQCP6r0bcpKGd4f7d4gTao&m=1A9asf1 > > ga > > bEGz-5fQfVfXbp2BcZEJaZIiJ4zSk09P1M&s=jo0yN7BJTt98IHerLXLK4aQvmSOAn90 > > pU > > lzHg00ynFI&e= > > apache/uima/fit/util/JCasUtil.html > > > > > > > > -----Original Message----- > > From: James Masanz [mailto:masanz.ja...@gmail.com] > > Sent: Wednesday, November 22, 2017 12:50 PM > > To: dev@ctakes.apache.org > > Subject: Re: Interpret context out of clinical note [EXTERNAL] > > > > If I use Eclipse, at build time I also get the error > > > > method putAll(Map<? extends Annotation,? extends > > List<IdentifiedAnnotation>>) in the type Map<Annotation,List< > > IdentifiedAnnotation>> > > is not applicable for the arguments (Map) > > > > I haven't looked into why. > > > > A quick workaround is to add a cast to Map > > > > allCovering.putAll( (Map)JCasUtil.indexCovering( jCas, covered, > > covering ) ); > > > > > > > > > > On Wed, Nov 22, 2017 at 8:40 AM, Finan, Sean < > > sean.fi...@childrens.harvard.edu> wrote: > > > > > Hi Bhagwat, > > > > > > I have no idea what is going on with your system. > > > > > > > The method putAll(Map<? extends Annotation,? extends > > > > List<IdentifiedAnnotation>>) in the type > > > > Map<Annotation,List<IdentifiedAnnotation>> is not applicable for > > > > the arguments (Map) > > > > > > That doesn't make any sense to me. That is exactly what putAll is > > > for ... Unless your uimafit does not return a typed map? In > > > which case it is an old version? I am not sure how that would happen. > > > > > > > When I run AssertionSubPipe.piper I am getting below error: > > > The .piper files should all have line comments in them. The > > > *SubPipe pipers should all have something like "This is not a > > > complete pipeline" at the top. This means that it cannot be run > > > alone. The annotators in the Assertion piper require several > > > other annotators to run first. In addition to the default > > > clinical piper I think that there are some piper files in > > > ctakes-example-res that you can look at to > > start. > > > > > > >, I don't find any variables value in understandable format like > > > >(JCas > > > jcas) object. How would I understand JCas object values? > > > > > > ctakes is built upon the Apache UIMA framework. > > > > > > https://urldefense.proofpoint.com/v2/url?u=https-3A__uima.apache.o > > > rg > > > _& > > > d=DwIBaQ&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=fs67GvlGZ > > > st > > > Tp > > > yIisCYNYmQCP6r0bcpKGd4f7d4gTao&m=rVKcbkbznwk6V-PLUy56sA4hGgN0F4qrL > > > N5 Ik 6FIDnM&s=ebIFQbW0D4VLpTWv9a4YQqy_G30S_hDeDEbhCTesFuk&e= > > > > > > This should probably be on our wiki ... Anyway, the best way to > > > learn about how ctakes pipelines are put together and how data is > > > passed is to read some of the intro documentation for uima. > > > > > > The Javadoc for jcas is here: > > > https://urldefense.proofpoint.com/v2/url?u=https-3A__uima.apache.o > > > rg > > > _d > > > _&d=DwIBaQ&c=qS4goWBT7poplM69zy_3xhKwEW14JZMSdioCoppxeFU&r=fs67Gvl > > > GZ > > > st > > > TpyIisCYNYmQCP6r0bcpKGd4f7d4gTao&m=rVKcbkbznwk6V-PLUy56sA4hGgN0F4q > > > rL > > > N5 Ik6FIDnM&s=I_7BH2bDGR48vI03bE1dirKGCgq33PKB9vXN2VDrMA8&e= > > > uimaj-current/apidocs/org/apache/uima/jcas/JCas.html > > > > > > Sean > > > > > > > > > > > > > > > > > > > > > -----Original Message----- > > > From: Bhagwat Posane [mailto:bhagwat.pos...@gmail.com] > > > Sent: Wednesday, November 22, 2017 3:38 AM > > > To: dev@ctakes.apache.org > > > Subject: Re: Interpret context out of clinical note [EXTERNAL] > > > > > > Hello Sean, > > > > > > Thank you for the inputs. I have gone through both the piper files > > > which you have mentioned. > > > > > > When I run AssertionSubPipe.piper I am getting below error: > > > > > > //////////////////////////////////////////////////////////// > > > //////////////////////////////////////////////////////////// > > > //////////////////////////////////////////// > > > > > > 22 Nov 2017 12:55:31 WARN SingleDocumentProcessor - This class > > > cannot be used until CTAKES-76 is implemented. > > > 22 Nov 2017 12:55:31 WARN SingleDocumentProcessor - This class > > > cannot be used until CTAKES-76 is implemented. > > > Nov 22, 2017 12:55:31 PM > > > org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl > > > callAnalysisComponentProcess(430) > > > SEVERE: Exception occurred > > > org.apache.uima.analysis_engine.AnalysisEngineProcessException: > > > Annotator processing failed. > > > at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl. > > > callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:412 > > > ) at > > > org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl. > > > processAndOutputNewCASes(PrimitiveAnalysisEngine_impl.java:314) > > > at org.apache.uima.analysis_engine.asb.impl.ASB_impl$ > > AggregateCasIterator. > > > processUntilNextOutputCas(ASB_impl.java:570) > > > at org.apache.uima.analysis_engine.asb.impl.ASB_impl$ > > > AggregateCasIterator.<init>(ASB_impl.java:412) > > > at org.apache.uima.analysis_engine.asb.impl.ASB_impl. > > > process(ASB_impl.java:344) > > > at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl. > > > processAndOutputNewCASes(AggregateAnalysisEngine_impl.java:265) > > > at org.apache.uima.analysis_engine.asb.impl.ASB_impl$ > > AggregateCasIterator. > > > processUntilNextOutputCas(ASB_impl.java:570) > > > at org.apache.uima.analysis_engine.asb.impl.ASB_impl$ > > > AggregateCasIterator.<init>(ASB_impl.java:412) > > > at org.apache.uima.analysis_engine.asb.impl.ASB_impl. > > > process(ASB_impl.java:344) > > > at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl. > > > processAndOutputNewCASes(AggregateAnalysisEngine_impl.java:265) > > > at > > > org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.proces > > > s( > > > AnalysisEngineImplBase.java:269) > > > at org.apache.uima.fit.pipeline.SimplePipeline.runPipeline( > > > SimplePipeline.java:150) > > > at org.apache.ctakes.core.pipeline.PipelineBuilder.run( > > > PipelineBuilder.java:348) > > > at org.apache.ctakes.core.pipeline.PiperFileRunner.run( > > > PiperFileRunner.java:72) > > > at org.apache.ctakes.core.pipeline.PiperFileRunner.main( > > > PiperFileRunner.java:30) > > > Caused by: java.lang.NullPointerException at > org.apache.ctakes.assertion. > > > medfacts.AssertionAnalysisEngineFit.process( > > > AssertionAnalysisEngineFit.java:145) > > > at > > > org.apache.uima.analysis_component.JCasAnnotator_ImplBase.process( > > > JCasAnnotator_ImplBase.java:48) > > > at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl. > > > callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:396 > > > ) > > > ... 14 more > > > > > > //////////////////////////////////////////////////////////// > > > //////////////////////////////////////////////////////////// > > > //////////////////////////////////////////////////////////// > > > /////////////////////// > > > > > > The error is causing due to the command : add > > > AssertionAnalysisEngineFit I have comment out this command and ran > > > it, the html output doesn't have any difference with previous output. > > > Could you please help me to resolve this error. > > > > > > > > > On 21 November 2017 at 18:43, Finan, Sean > <Sean.Finan@childrens.harvard. > > > edu> > > > wrote: > > > > > > > Hi Bhagwat, > > > > > > > > You can visit the ctakes-assertion-res module for some clues. > > > > > > > > Navigate to ctakes-assertion-res src/main/resources/ > > > > org/apache/ctakes/assertion/pipeline/ > > > > > > > > There are two .piper files there. Each one covers a different > > > > way to get the information that Tim mentioned. In those files each > > > > "add" > > > > statement is followed by an annotator class name. In IntelliJ > > > > you can press CTRL-N and enter the class name to view the code. > > > > There are also a few comments in the piper files that may help. > > > > > > > > Sean > > > > > > > > -----Original Message----- > > > > From: Bhagwat Posane [mailto:bhagwat.pos...@gmail.com] > > > > Sent: Tuesday, November 21, 2017 6:21 AM > > > > To: dev@ctakes.apache.org > > > > Subject: Interpret context out of clinical note [EXTERNAL] > > > > > > > > Hello Sean,Tim, et al, > > > > > > > > I would like to Interpret context out of clinical note, e.g. > > > > interpretation of the procedure, lab tests for a patient. For > > > > this, I suppose TLINK statements would be of much help. > > > > > > > > Ex. for the note- "Cystoscopy is planned on 3 / 26 / 2018." > > > > I get TLINK as > > > > Cystoscopy contains 3 / 26 / 2018, > > > > 3 / 26 / 2018 contains Cystoscopy > > > > 3 / 26 / 2018 contains planned > > > > we can make out that Cystoscopy is not yet done looking at > > > > "planned"(in this case), > > > > > > > > Could you please let me know if I am on right path and also help > > > > me understand if any other approach to do this. > > > > > > > > > > > > @Tim, > > > > Couple of days back you mentioned about the context understanding : > > > > > > > > "if any procedure is happened or not." > > > > > I think you need a formal definition of this to understand > > > > > what you're trying to do. > > > > > As a guess, you want it to be in the past, related to the > > > > > patient (not a family member), and not negated or hypothetical > > > > > or uncertain, > > > etc.? > > > > > This would require multiple components, but most of them > > > > > should run in the temporal pipeline. > > > > > > > > > > > > > Tim > > > > > > > > > > > > Could you please provide some insight on this, as what are the > > > > multiple components are required and how to use them to achieve > > > > this > > > goal. > > > > > > > > -- > > > > Thanks, > > > > Bhagwat Posane > > > > > > > > > > > > > > > > -- > > > Thanks, > > > Bhagwat Posane > > > > > > > > > -- > Thanks, > Bhagwat Posane > -- Thanks, Bhagwat Posane