in ctakes-drug-ner/src/main/java/org/apache/ctakes/drugner/ae/DrugMentionAnnotator.java [1815:1971]
private float alignDrugMentionAttributes(String strengthText, DrugMention dm , DrugMentionAnnotation drugTokenAnt, DrugMentionAnnotation recurseNER, String relatedStatus, boolean statusFound, boolean overrideStatus,
boolean maxExists, String doseText, String frequencyText, String frequencyUnitText)
{
float keepScoreOfConfidence = (float) 0.05;
if (dm.getStrengthElement() != null && dm.getStrengthElement() != ""
&& dm.getStrengthElement().compareTo("null") != 0)
keepScoreOfConfidence = (float) 0.15;
if (strengthText != null /* && holdStatusChanges.isEmpty() */)
{
drugTokenAnt.setStrength(strengthText);
drugTokenAnt.setStrengthBegin(dm.getStrengthBegin());
drugTokenAnt.setStrengthEnd(dm.getStrengthEnd());
drugTokenAnt.setStrengthUnit(dm.getStrengthUnitElement());
drugTokenAnt.setSuBegin(dm.getStrengthUnitBegin());
drugTokenAnt.setSuEnd(dm.getStrengthUnitEnd());
} else if (recurseNER != null && recurseNER.getStrength() != null)
{
drugTokenAnt.setStrength(recurseNER.getStrength());
drugTokenAnt.setStrengthBegin(recurseNER.getStrengthBegin());
drugTokenAnt.setStrengthEnd(recurseNER.getStrengthEnd());
drugTokenAnt.setStrengthUnit(recurseNER.getStrengthUnit());
drugTokenAnt.setSuBegin(recurseNER.getSuBegin());
drugTokenAnt.setSuEnd(recurseNER.getSuEnd());
} else if (dm.getStrengthElement() != null && dm.strength != null)
{
drugTokenAnt.setStrength(dm.getStrengthElement());
drugTokenAnt.setStrengthBegin(dm.getStrengthBegin());
drugTokenAnt.setStrengthEnd(dm.getStrengthEnd());
drugTokenAnt.setStrengthUnit(dm.getStrengthUnitElement());
drugTokenAnt.setSuBegin(dm.getStrengthUnitBegin());
drugTokenAnt.setSuEnd(dm.getStrengthUnitEnd());
}
if ((dm.getDosageElement() != null && dm.getDosageElement().compareTo(
"null") != 0)
&& doseText != null)
keepScoreOfConfidence = keepScoreOfConfidence + (float) 0.05;
if (doseText != null /* && holdStatusChanges.isEmpty() */)
{
if (maxExists)
{
drugTokenAnt.setDosage("1.0");
} else
{
drugTokenAnt.setDosage(doseText);
drugTokenAnt.setDosageBegin(dm.getDosageBegin());
drugTokenAnt.setDosageEnd(dm.getDosageEnd());
}
} else if ((recurseNER != null) && (recurseNER.getDosage() != null))
{
drugTokenAnt.setDosage(recurseNER.getDosage());
drugTokenAnt.setDosageBegin(recurseNER.getDosageBegin());
drugTokenAnt.setDosageEnd(recurseNER.getDosageEnd());
} else if (dm.getDosageElement() != null && dm.dosage != null)
{
drugTokenAnt.setDosage(dm.getDosageElement());
drugTokenAnt.setDosageBegin(dm.getDosageBegin());
drugTokenAnt.setDosageEnd(dm.getDosageEnd());
}
// Only want the updated element in this case
if (dm.getDurationElement() != null
&& dm.getDurationElement().compareTo("") != 0
&& dm.getDurationElement().compareTo("null") != 0)
{
keepScoreOfConfidence = keepScoreOfConfidence * (float) 1.3;
drugTokenAnt.setDuration(dm.getDurationElement());
drugTokenAnt.setDurationBegin(dm.getDuratationBegin());
drugTokenAnt.setDurationEnd(dm.getDuratationEnd());
}
if (dm.getStartDateElement() != null
&& dm.getStartDateElement().compareTo("") != 0)
drugTokenAnt.setStartDate(dm.getStartDateElement());
if ((dm.getFormElement() != null)
&& (dm.getFormElement().compareTo("") != 0)
&& dm.getFormElement().compareTo("null") != 0)
{
keepScoreOfConfidence = keepScoreOfConfidence * (float) 1.3;
drugTokenAnt.setForm(dm.getFormElement());
drugTokenAnt.setFormBegin(dm.getFormBegin());
drugTokenAnt.setFormEnd(dm.getFormEnd());
} else if (recurseNER != null && recurseNER.getForm() != null)
{
drugTokenAnt.setForm(recurseNER.getForm());
drugTokenAnt.setFormBegin(recurseNER.getFormBegin());
drugTokenAnt.setFormEnd(recurseNER.getFormEnd());
}
if (dm.getFrequencyElement() != null
&& dm.getFrequencyElement().compareTo("") != 0
&& dm.frequency != null
&& dm.getFrequencyElement().compareTo("null") != 0)
keepScoreOfConfidence = keepScoreOfConfidence * (float) 1.5;
if (frequencyText != null /* && holdStatusChanges.isEmpty() */)
{
if (maxExists)
{
drugTokenAnt.setFrequency("1.0");
} else
drugTokenAnt.setFrequency(frequencyText);
drugTokenAnt.setFrequencyBegin(dm.getFrequencyBegin());
drugTokenAnt.setFrequencyEnd(dm.getFrequencyEnd());
} else if (recurseNER != null && recurseNER.getFrequencyUnit() != null)
{
drugTokenAnt.setFrequency(recurseNER.getFrequency());
drugTokenAnt.setFrequencyBegin(recurseNER.getFrequencyBegin());
drugTokenAnt.setFrequencyEnd(recurseNER.getFrequencyEnd());
} else if (dm.getFrequencyElement() != null && dm.frequency != null)
{
drugTokenAnt.setFrequency(dm.getFrequencyElement());
drugTokenAnt.setFrequencyBegin(dm.getFrequencyBegin());
drugTokenAnt.setFrequencyEnd(dm.getFrequencyEnd());
}
if (dm.getFrequencyUnitElement() != null
&& dm.getFrequencyUnitElement().compareTo("") != 0
&& dm.frequencyUnit != null)
keepScoreOfConfidence = keepScoreOfConfidence * (float) 1.5;
if (frequencyUnitText != null /* && holdStatusChanges.isEmpty() */)
{
drugTokenAnt.setFrequencyUnit(frequencyUnitText);
drugTokenAnt.setFuBegin(dm.getFUBegin());
drugTokenAnt.setFuEnd(dm.getFUENd());
} else if (recurseNER != null && recurseNER.getFrequencyUnit() != null)
{
drugTokenAnt.setFrequencyUnit(recurseNER.getFrequencyUnit());
drugTokenAnt.setFuBegin(recurseNER.getFuBegin());
drugTokenAnt.setFuEnd(recurseNER.getFuEnd());
} else if (dm.getFrequencyElement() != null
&& dm.getFrequencyElement().compareTo("null") != 0
&& dm.frequency != null)
{
drugTokenAnt.setFrequency(dm.getFrequencyElement());
drugTokenAnt.setFrequencyBegin(dm.getFrequencyBegin());
drugTokenAnt.setFrequencyEnd(dm.getFrequencyEnd());
}
if (dm.getRouteElement() != null
&& dm.getRouteElement().compareTo("") != 0
&& dm.getRouteElement().compareTo("null") != 0)
{
keepScoreOfConfidence = keepScoreOfConfidence * (float) 1.3;
drugTokenAnt.setRoute(dm.getRouteElement());
drugTokenAnt.setRouteBegin(dm.getRouteBegin());
drugTokenAnt.setRouteEnd(dm.getRouteEnd());
} else if (recurseNER != null && recurseNER.getRoute() != null)
{
drugTokenAnt.setRoute(recurseNER.getRoute());
drugTokenAnt.setRouteBegin(recurseNER.getRouteBegin());
drugTokenAnt.setRouteEnd(recurseNER.getRouteEnd());
}
return keepScoreOfConfidence;
}