List of usage examples for org.apache.commons.collections CollectionUtils size
public static int size(Object object)
From source file:org.openmrs.module.clinicalsummary.evaluator.velocity.VelocityUtils.java
/** * Format the result based on the result datatype * * @param result the result//w w w . j a va 2s . c o m * @return the String representation of the result object */ public String format(final Result result) { if (result == null) return StringUtils.EMPTY; // processing multi results if (CollectionUtils.size(result) > 1) { StringBuilder builder = new StringBuilder(); // iterate each result and format them Integer counter = 0; while (counter < CollectionUtils.size(result)) { Result resultElement = result.get(counter++); builder.append(format(resultElement)); if (counter < CollectionUtils.size(result)) builder.append(", "); } return builder.toString(); } if (OpenmrsUtil.nullSafeEquals(result.getDatatype(), Result.Datatype.CODED)) return format(result.toConcept()); else if (OpenmrsUtil.nullSafeEquals(result.getDatatype(), Result.Datatype.DATETIME)) return format(result.toDatetime()); else if (OpenmrsUtil.nullSafeEquals(result.getDatatype(), Result.Datatype.NUMERIC)) { Object object = result.getResultObject(); if (RuleUtils.isValidObsObject(object)) { Concept concept = ((Obs) object).getConcept(); if (concept.isNumeric()) { ConceptNumeric conceptNumeric = Context.getConceptService() .getConceptNumeric(concept.getConceptId()); if (!conceptNumeric.isPrecise()) return format(result.toNumber()); } DecimalFormat decimalFormat = new DecimalFormat("#.00"); return decimalFormat.format(result.toNumber()); } } // special case hack if (result.getDatatype() == null && result.toDatetime() != null) return format(result.toDatetime()); return StringEscapeUtils.escapeXml(result.toString()); }
From source file:org.openmrs.module.clinicalsummary.rule.adherence.DrugAdherenceRule.java
/** * @see org.openmrs.logic.Rule#eval(org.openmrs.logic.LogicContext, Integer, java.util.Map) *//* w w w .ja v a 2s . com*/ @Override protected Result evaluate(final LogicContext context, final Integer patientId, final Map<String, Object> parameters) throws LogicException { Result result = new Result(); // list of all dates with missing data List<Date> dates = new ArrayList<Date>(); // time frame for the adherence is six month Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH, -6); Date sixMonthsAgo = calendar.getTime(); EncounterWithRestrictionRule encounterWithRestrictionRule = new EncounterWithStringRestrictionRule(); Result encounterResults = encounterWithRestrictionRule.eval(context, patientId, parameters); Boolean perfect = Boolean.FALSE; Concept noConcept = CacheUtils.getConcept(EvaluableNameConstants.NO); Concept allConcept = CacheUtils.getConcept(EvaluableNameConstants.ALL); for (Result encounterResult : encounterResults) { if (encounterResult.getResultDate().after(sixMonthsAgo)) { ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule(); parameters.put(EvaluableConstants.OBS_ENCOUNTER, Arrays.asList(encounterResult.getResultObject())); parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList(EvaluableNameConstants.ANTIRETROVIRAL_ADHERENCE_IN_PAST_WEEK, EvaluableNameConstants.OVERALL_DRUG_ADHERENCE_IN_LAST_MONTH)); Result adherenceResults = obsWithRestrictionRule.eval(context, patientId, parameters); Concept arvAdherenceConcept = CacheUtils .getConcept(EvaluableNameConstants.ANTIRETROVIRAL_ADHERENCE_IN_PAST_WEEK); Concept overallAdherenceConcept = CacheUtils .getConcept(EvaluableNameConstants.OVERALL_DRUG_ADHERENCE_IN_LAST_MONTH); Boolean monthAdherence = Boolean.TRUE; Boolean weekAdherence = Boolean.TRUE; for (Result adherenceResult : adherenceResults) { Obs obs = (Obs) adherenceResult.getResultObject(); Concept adherenceConcept = adherenceResult.toConcept(); if (OpenmrsUtil.nullSafeEquals(arvAdherenceConcept, obs.getConcept()) && !OpenmrsUtil.nullSafeEquals(adherenceConcept, allConcept)) weekAdherence = Boolean.FALSE; if (OpenmrsUtil.nullSafeEquals(overallAdherenceConcept, obs.getConcept()) && !OpenmrsUtil.nullSafeEquals(adherenceConcept, noConcept)) monthAdherence = Boolean.FALSE; } if (CollectionUtils.isEmpty(adherenceResults) || CollectionUtils.size(adherenceResults) < 2) dates.add(encounterResult.getResultDate()); else { perfect = monthAdherence && weekAdherence; if (!perfect) return new Result("Imperfect Adherence"); } } } if (CollectionUtils.isNotEmpty(dates)) result.setValueText(formatDate(dates)); else if (perfect) result.setValueText("Perfect Adherence"); return result; }
From source file:org.openmrs.module.clinicalsummary.rule.antenatal.grouped.DatetimeBasedConceptFilteredRule.java
/** * @see org.openmrs.logic.Rule#eval(org.openmrs.logic.LogicContext, Integer, java.util.Map) *//* ww w . ja v a 2 s . c o m*/ @Override protected Result evaluate(final LogicContext context, final Integer patientId, final Map<String, Object> parameters) { Result result = new Result(); Object conceptObjects = parameters.get(EvaluableConstants.OBS_CONCEPT); Map<Concept, Integer> conceptNamePositions = searchPositions(conceptObjects); ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule(); Result obsResults = obsWithRestrictionRule.eval(context, patientId, parameters); Map<Date, Result[]> obsResultDates = new HashMap<Date, Result[]>(); for (Result obsResult : obsResults) { Obs obs = (Obs) obsResult.getResultObject(); Date obsDatetime = obs.getObsDatetime(); // see if we already have obs array for this date Result[] obsResultDate = obsResultDates.get(obsDatetime); if (obsResultDate == null) { obsResultDate = new Result[CollectionUtils.size(conceptNamePositions)]; obsResultDates.put(obsDatetime, obsResultDate); } // search the concept in the concept ordering map Integer position = conceptNamePositions.get(obs.getConcept()); if (position != null) obsResultDate[position] = obsResult; } TreeSet<Date> keys = new TreeSet<Date>(new Comparator<Date>() { public int compare(final Date firstDate, final Date secondDate) { return firstDate.equals(secondDate) ? 0 : firstDate.after(secondDate) ? -1 : 1; } }); keys.addAll(obsResultDates.keySet()); // TODO: need to merge the two loop into one Integer counter = 0; Iterator<Date> iterator = keys.iterator(); while (iterator.hasNext() && counter < 5) { Date date = iterator.next(); // create the grouped results Result groupedResult = new Result(); groupedResult.add(new Result(date)); groupedResult.addAll(Arrays.asList(obsResultDates.get(date))); // add them to the main result of the rule result.add(groupedResult); // increase the counter as we only want last 5 counter++; } Collections.reverse(result); return result; }
From source file:org.openmrs.module.clinicalsummary.rule.antenatal.grouped.DatetimeBasedConceptFilteredRule.java
@SuppressWarnings("unchecked") private Map<Concept, Integer> searchPositions(Object conceptNameObjects) { Map<Concept, Integer> conceptNamePositions = new HashMap<Concept, Integer>(); if (RuleUtils.isValidCollectionObject(conceptNameObjects)) { List<String> conceptNames = (List<String>) conceptNameObjects; for (int i = 0; i < CollectionUtils.size(conceptNames); i++) { Concept concept = CacheUtils.getConcept(conceptNames.get(i)); conceptNamePositions.put(concept, i); }// w w w . j a v a 2s . c o m } return conceptNamePositions; }
From source file:org.openmrs.module.clinicalsummary.rule.antenatal.grouped.EncounterBasedConceptAnswersFilteredRule.java
/** * @see org.openmrs.logic.Rule#eval(org.openmrs.logic.LogicContext, Integer, java.util.Map) *//*from www .j a va2s.com*/ @Override protected Result evaluate(final LogicContext context, final Integer patientId, final Map<String, Object> parameters) throws LogicException { Result result = new Result(); EncounterWithRestrictionRule encounterWithRestrictionRule = new EncounterWithStringRestrictionRule(); Result encounterResults = encounterWithRestrictionRule.eval(context, patientId, parameters); // take out the encounter type for the reference encounter Object encounterType = parameters.remove(AncParameters.AFTER_ENCOUNTER_TYPE); // prepare the parameters parameters.put(EvaluableConstants.ENCOUNTER_FETCH_SIZE, 1); parameters.put(EvaluableConstants.ENCOUNTER_TYPE, Arrays.asList(encounterType)); Result afterEncounterResults = encounterWithRestrictionRule.eval(context, patientId, parameters); // see if we can get the reference encounter Object afterEncounter = null; if (CollectionUtils.isNotEmpty(afterEncounterResults)) afterEncounter = afterEncounterResults.latest().getResultObject(); // search the ordering of the observations Object codedValueObjects = parameters.get(EvaluableConstants.OBS_VALUE_CODED); Map<Concept, Integer> codedPositions = searchPositions(codedValueObjects); ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule(); int counter = 0; Boolean foundAfter = Boolean.FALSE; while (counter < CollectionUtils.size(encounterResults) && !foundAfter) { Result encounterResult = encounterResults.get(counter); parameters.put(EvaluableConstants.OBS_ENCOUNTER, Arrays.asList(encounterResult.getResultObject())); Result obsResults = obsWithRestrictionRule.eval(context, patientId, parameters); Result groupedResult = new Result(); groupedResult.add(new Result(encounterResult.getResultDate())); // initialize result array Result[] results = new Result[CollectionUtils.size(codedPositions)]; for (Result obsResult : obsResults) { Integer position = codedPositions.get(obsResult.toConcept()); if (position != null) results[position] = obsResult; } groupedResult.addAll(Arrays.asList(results)); result.add(groupedResult); if (OpenmrsUtil.nullSafeEquals(afterEncounter, encounterResult.getResultObject())) foundAfter = Boolean.TRUE; counter++; } return result; }
From source file:org.openmrs.module.clinicalsummary.rule.antenatal.grouped.EncounterBasedConceptAnswersFilteredRule.java
@SuppressWarnings("unchecked") private Map<Concept, Integer> searchPositions(Object conceptAnswerObjects) { Map<Concept, Integer> codedPositions = new HashMap<Concept, Integer>(); if (RuleUtils.isValidCollectionObject(conceptAnswerObjects)) { List<String> codedValueNames = (List<String>) conceptAnswerObjects; for (int counter = 0; counter < CollectionUtils.size(codedValueNames); counter++) { Concept concept = CacheUtils.getConcept(codedValueNames.get(counter)); codedPositions.put(concept, counter); }/* www. j a v a 2 s . c o m*/ } return codedPositions; }
From source file:org.openmrs.module.clinicalsummary.rule.antenatal.grouped.EncounterBasedConceptFilteredRule.java
/** * @see org.openmrs.logic.Rule#eval(org.openmrs.logic.LogicContext, Integer, java.util.Map) *//*from w w w. j a v a2 s . c om*/ @Override protected Result evaluate(final LogicContext context, final Integer patientId, final Map<String, Object> parameters) throws LogicException { Result result = new Result(); EncounterWithRestrictionRule encounterWithRestrictionRule = new EncounterWithStringRestrictionRule(); Result encounterResults = encounterWithRestrictionRule.eval(context, patientId, parameters); // take out the encounter type for the reference encounter Object encounterType = parameters.remove(AncParameters.AFTER_ENCOUNTER_TYPE); // prepare the parameters parameters.put(EvaluableConstants.ENCOUNTER_FETCH_SIZE, 1); parameters.put(EvaluableConstants.ENCOUNTER_TYPE, Arrays.asList(encounterType)); Result afterEncounterResults = encounterWithRestrictionRule.eval(context, patientId, parameters); // see if we can get the reference encounter Object afterEncounter = null; if (CollectionUtils.isNotEmpty(afterEncounterResults)) afterEncounter = afterEncounterResults.latest().getResultObject(); // search the ordering of the observations Object conceptObjects = parameters.get(EvaluableConstants.OBS_CONCEPT); Map<Concept, Integer> conceptNamePositions = searchPositions(conceptObjects); ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule(); int counter = 0; Boolean foundAfter = Boolean.FALSE; while (counter < CollectionUtils.size(encounterResults) && !foundAfter) { Result encounterResult = encounterResults.get(counter); parameters.put(EvaluableConstants.OBS_ENCOUNTER, Arrays.asList(encounterResult.getResultObject())); Result obsResults = obsWithRestrictionRule.eval(context, patientId, parameters); Result groupedResult = new Result(); groupedResult.add(new Result(encounterResult.getResultDate())); // initialize results array Result[] results = new Result[CollectionUtils.size(conceptNamePositions)]; for (Result obsResult : obsResults) { Obs obs = (Obs) obsResult.getResultObject(); Integer position = conceptNamePositions.get(obs.getConcept()); if (position != null) results[position] = obsResult; } groupedResult.addAll(Arrays.asList(results)); result.add(groupedResult); if (OpenmrsUtil.nullSafeEquals(afterEncounter, encounterResult.getResultObject())) foundAfter = Boolean.TRUE; counter++; } return result; }
From source file:org.openmrs.module.clinicalsummary.rule.antenatal.grouped.EncounterBasedConceptFilteredRule.java
@SuppressWarnings("unchecked") private Map<Concept, Integer> searchPositions(Object conceptNameObjects) { Map<Concept, Integer> conceptNamePositions = new HashMap<Concept, Integer>(); if (RuleUtils.isValidCollectionObject(conceptNameObjects)) { List<String> conceptNames = (List<String>) conceptNameObjects; for (int i = 0; i < CollectionUtils.size(conceptNames); i++) { Concept concept = CacheUtils.getConcept(conceptNames.get(i)); conceptNamePositions.put(concept, i); }/*w w w .j a va 2 s .com*/ } return conceptNamePositions; }
From source file:org.openmrs.module.clinicalsummary.rule.antenatal.grouped.EncounterBasedConceptSetFilteredRule.java
/** * @see org.openmrs.logic.Rule#eval(org.openmrs.logic.LogicContext, Integer, java.util.Map) *///from w ww .j a va2 s . c om @Override protected Result evaluate(final LogicContext context, final Integer patientId, final Map<String, Object> parameters) throws LogicException { Result result = new Result(); EncounterWithRestrictionRule encounterWithRestrictionRule = new EncounterWithStringRestrictionRule(); Result encounterResults = encounterWithRestrictionRule.eval(context, patientId, parameters); // take out the encounter type for the reference encounter Object encounterType = parameters.remove(AncParameters.AFTER_ENCOUNTER_TYPE); // prepare the parameters parameters.put(EvaluableConstants.ENCOUNTER_FETCH_SIZE, 1); parameters.put(EvaluableConstants.ENCOUNTER_TYPE, Arrays.asList(encounterType)); Result afterEncounterResults = encounterWithRestrictionRule.eval(context, patientId, parameters); // see if we can get the reference encounter Object afterEncounter = null; if (CollectionUtils.isNotEmpty(afterEncounterResults)) afterEncounter = afterEncounterResults.latest().getResultObject(); // search the ordering of the observations Object conceptSetObjects = parameters.remove(EvaluableConstants.OBS_VALUE_CODED); Map<Concept, Integer> codedPositions = searchPositions(conceptSetObjects); ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule(); int counter = 0; Boolean foundAfter = Boolean.FALSE; while (counter < CollectionUtils.size(encounterResults) && !foundAfter) { Result encounterResult = encounterResults.get(counter); parameters.put(EvaluableConstants.OBS_ENCOUNTER, Arrays.asList(encounterResult.getResultObject())); Result parentObsResults = obsWithRestrictionRule.eval(context, patientId, parameters); for (Result parentObsResult : parentObsResults) { Obs parentObs = (Obs) parentObsResult.getResultObject(); if (parentObs.isObsGrouping()) { Set<Obs> childObservations = parentObs.getGroupMembers(); Result groupedResult = new Result(); groupedResult.setResultDate(encounterResult.getResultDate()); Result[] results = new Result[CollectionUtils.size(codedPositions)]; for (Obs childObservation : childObservations) { Integer position = codedPositions.get(childObservation.getConcept()); if (position != null) results[position] = new Result(childObservation); } groupedResult.addAll(Arrays.asList(results)); result.add(groupedResult); } } if (OpenmrsUtil.nullSafeEquals(afterEncounter, encounterResult.getResultObject())) foundAfter = Boolean.TRUE; counter++; } return result; }
From source file:org.openmrs.module.clinicalsummary.rule.antenatal.grouped.EncounterBasedConceptSetFilteredRule.java
@SuppressWarnings("unchecked") private Map<Concept, Integer> searchPositions(Object conceptSetObject) { Map<Concept, Integer> codedPositions = new HashMap<Concept, Integer>(); if (RuleUtils.isValidCollectionObject(conceptSetObject)) { List<String> codedValueNames = (List<String>) conceptSetObject; for (int counter = 0; counter < CollectionUtils.size(codedValueNames); counter++) { Concept concept = CacheUtils.getConcept(codedValueNames.get(counter)); codedPositions.put(concept, counter); }//w w w .j a v a 2s.c o m } return codedPositions; }