Hello Sean, Thank you for the inputs, Now coming back to our original question for which this thread has been initiated.
I was trying to get the context out of clinical notes. for ex. If any procedure is happened or not on patient. To achieve this you mentioned some points : 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 you mentioned. By following this clues, I am nowhere. Could you please provide information on which pipeline I should have to run to achieve this goal, and how? On 24 November 2017 at 21:24, Finan, Sean <sean.fi...@childrens.harvard.edu> wrote: > 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.Finan@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 > -- Thanks, Bhagwat Posane