List of usage examples for org.apache.commons.collections CollectionUtils size
public static int size(Object object)
From source file:org.openmrs.module.clinicalsummary.rule.reminder.adult.general.HighCreatinineReminderRule.java
/** * @see org.openmrs.logic.Rule#eval(org.openmrs.logic.LogicContext, Integer, java.util.Map) *///ww w .j av a2 s . c o m @Override protected Result evaluate(final LogicContext context, final Integer patientId, final Map<String, Object> parameters) throws LogicException { Result result = new Result(); ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule(); parameters.put(EvaluableConstants.OBS_FETCH_SIZE, 2); parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList(EvaluableNameConstants.SERUM_CREATININE)); Result creatinineResults = obsWithRestrictionRule.eval(context, patientId, parameters); // only when we have 2 or more creatinine results if (CollectionUtils.size(creatinineResults) >= 2) { Boolean displayReminder = Boolean.TRUE; Integer counter = 0; while (counter < CollectionUtils.size(creatinineResults) && counter < 2) { Result creatinineResult = creatinineResults.get(counter++); if (creatinineResult.toNumber() < 200) displayReminder = Boolean.FALSE; } if (displayReminder) result.add(new Result(String.valueOf(parameters.get(ReminderParameters.DISPLAYED_REMINDER_TEXT)))); } return result; }
From source file:org.openmrs.module.clinicalsummary.rule.reminder.adult.general.LowCorpuscularVolumeReminderRule.java
/** * @see org.openmrs.logic.Rule#eval(org.openmrs.logic.LogicContext, Integer, java.util.Map) */// w ww . j a v a 2 s . c o m @Override protected Result evaluate(final LogicContext context, final Integer patientId, final Map<String, Object> parameters) throws LogicException { Result result = new Result(); ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule(); parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList(EvaluableNameConstants.MEAN_CORPUSCULAR_VOLUME)); parameters.put(EvaluableConstants.OBS_FETCH_SIZE, 1); Result corpuscularResults = obsWithRestrictionRule.eval(context, patientId, parameters); if (CollectionUtils.isNotEmpty(corpuscularResults)) { Result latestCorpuscularResult = corpuscularResults.latest(); if (latestCorpuscularResult.toNumber() < 75) { parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList(EvaluableNameConstants.HEMOGLOBIN)); Result hbResults = obsWithRestrictionRule.eval(context, patientId, parameters); if (CollectionUtils.isNotEmpty(hbResults)) { Result latestHbResult = hbResults.latest(); if (latestHbResult.toNumber() < 10) { Boolean displayReminder = Boolean.TRUE; Result medicationResults; parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList(EvaluableNameConstants.MEDICATION_ADDED, "RECEIVED ANTENATAL CARE SERVICE THIS VISIT", "PATIENT REPORTED CURRENT ANTENATAL CARE TREATMENT", "RECIEVED POSTNATAL CARE SERVICE THIS VISIT", "CURRENT MEDICATIONS")); parameters.put(EvaluableConstants.OBS_VALUE_CODED, Arrays.asList(EvaluableNameConstants.IRON_SUPPLEMENT, "FERROUS SULFATE", "FERROUS SULFATE AND FOLIC ACID")); medicationResults = obsWithRestrictionRule.eval(context, patientId, parameters); if (CollectionUtils.isEmpty(medicationResults)) { // see if any of the medication is after the low corpuscular volume Integer counter = 0; while (counter < CollectionUtils.size(medicationResults)) { Result medicationResult = medicationResults.get(counter++); if (medicationResult.getResultDate().after(latestCorpuscularResult.getResultDate()) || DateUtils.isSameDay(medicationResult.getResultDate(), latestCorpuscularResult.getResultDate())) { displayReminder = Boolean.FALSE; break; } } } // no iron supplement found if (displayReminder) { result.add(new Result( String.valueOf(parameters.get(ReminderParameters.DISPLAYED_REMINDER_TEXT)))); } } } } } return result; }
From source file:org.openmrs.module.clinicalsummary.rule.reminder.adult.general.RepeatCreatinineReminderRule.java
/** * @see org.openmrs.logic.Rule#eval(org.openmrs.logic.LogicContext, Integer, java.util.Map) *///from w w w.j a va 2s . com @Override protected Result evaluate(final LogicContext context, final Integer patientId, final Map<String, Object> parameters) throws LogicException { Result result = new Result(); ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule(); parameters.put(EvaluableConstants.OBS_FETCH_SIZE, 2); parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList(EvaluableNameConstants.SERUM_CREATININE)); Result creatinineResults = obsWithRestrictionRule.eval(context, patientId, parameters); if (CollectionUtils.size(creatinineResults) == 1) { // get the latest test ordered Result latestCreatinineResult = creatinineResults.latest(); parameters.put(EvaluableConstants.OBS_FETCH_SIZE, 1); parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList(EvaluableNameConstants.TESTS_ORDERED)); parameters.put(EvaluableConstants.OBS_VALUE_CODED, Arrays.asList(EvaluableNameConstants.CHEMISTRY_LAB_TESTS, EvaluableNameConstants.SERUM_CREATININE, EvaluableNameConstants.SERUM_ELECTROLYTES)); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH, -6); Date sixMonths = calendar.getTime(); Result testResults = obsWithRestrictionRule.eval(context, patientId, parameters); // if creatinine > 200 and no test or the test was ordered more than six months ago, then show the reminder if (latestCreatinineResult.toNumber() > 200 && (CollectionUtils.isEmpty(testResults) || testResults.getResultDate().before(sixMonths))) { // prepare the search for referrals parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList(EvaluableNameConstants.REFERRALS_ORDERED)); parameters.put(EvaluableConstants.OBS_VALUE_CODED, Arrays.asList(EvaluableNameConstants.REFERRAL_CONSULTANT, EvaluableNameConstants.REFERRAL_MEDICAL_OFFICER)); Result referralResults = obsWithRestrictionRule.eval(context, patientId, parameters); if (CollectionUtils.isEmpty(referralResults)) result.add( new Result(String.valueOf(parameters.get(ReminderParameters.DISPLAYED_REMINDER_TEXT)))); } } return result; }
From source file:org.openmrs.module.clinicalsummary.rule.reminder.adult.pregnancy.SecondLineViralLoadReminderRule.java
@Override protected Result evaluate(LogicContext context, Integer patientId, Map<String, Object> parameters) { Result result = new Result(); ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule(); parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList("HIV VIRAL LOAD, QUANTITATIVE")); parameters.put(EvaluableConstants.OBS_FETCH_SIZE, 2); Result viralLoadResults = obsWithRestrictionRule.eval(context, patientId, parameters); if (CollectionUtils.isNotEmpty(viralLoadResults) && CollectionUtils.size(viralLoadResults) == 2) { Result latestViralLoadResult = viralLoadResults.get(0); Result beforeLatestViralLoadResult = viralLoadResults.get(1); Calendar calendar = Calendar.getInstance(); calendar.setTime(latestViralLoadResult.getResultDate()); calendar.add(Calendar.MONTH, -3); Date threeMonthsAgo = calendar.getTime(); if ((beforeLatestViralLoadResult.getResultDate().before(threeMonthsAgo) || DateUtils.isSameDay(beforeLatestViralLoadResult.getResultDate(), threeMonthsAgo)) && latestViralLoadResult.toNumber() > 1000 && beforeLatestViralLoadResult.toNumber() > 1000) { parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList("HIV ANTIRETROVIRAL DRUG PLAN TREATMENT CATEGORY")); parameters.put(EvaluableConstants.OBS_VALUE_CODED, Arrays.asList("SECOND LINE HIV ANTIRETROVIRAL DRUG TREATMENT")); Result antiretroviralPlanResults = obsWithRestrictionRule.eval(context, patientId, parameters); if (CollectionUtils.isNotEmpty(antiretroviralPlanResults)) { result.add(//from www . jav a2 s .c om new Result(String.valueOf(parameters.get(ReminderParameters.DISPLAYED_REMINDER_TEXT)))); return result; } } } return result; }
From source file:org.openmrs.module.clinicalsummary.rule.reminder.adult.pregnancy.SwitchLineViralLoadReminderRule.java
@Override protected Result evaluate(LogicContext context, Integer patientId, Map<String, Object> parameters) { Result result = new Result(); EncounterWithRestrictionRule encounterWithRestrictionRule = new EncounterWithStringRestrictionRule(); parameters.put(EvaluableConstants.ENCOUNTER_TYPE, Arrays.asList(EvaluableNameConstants.ENCOUNTER_TYPE_ADULT_INITIAL, EvaluableNameConstants.ENCOUNTER_TYPE_ADULT_RETURN)); parameters.put(EvaluableConstants.ENCOUNTER_FETCH_SIZE, 1); Result encounterResults = encounterWithRestrictionRule.eval(context, patientId, parameters); if (CollectionUtils.isNotEmpty(encounterResults)) { Result encounterResult = encounterResults.latest(); Calendar calendar = Calendar.getInstance(); calendar.setTime(encounterResult.getResultDate()); calendar.add(Calendar.MONTH, 12); Date twelveMonthsLater = calendar.getTime(); ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule(); parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList("HIV VIRAL LOAD, QUANTITATIVE")); parameters.put(EvaluableConstants.OBS_FETCH_SIZE, 2); Result viralLoadResults = obsWithRestrictionRule.eval(context, patientId, parameters); parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList("CURRENT HIV ANTIRETROVIRAL DRUG USE TREATMENT CATEGORY", "HIV ANTIRETROVIRAL DRUG PLAN TREATMENT CATEGORY")); parameters.put(EvaluableConstants.OBS_VALUE_CODED, Arrays.asList("FIRST LINE HIV ANTIRETROVIRAL DRUG TREATMENT")); Result treatmentCategoryResults = obsWithRestrictionRule.eval(context, patientId, parameters); if (CollectionUtils.isNotEmpty(treatmentCategoryResults) && CollectionUtils.isNotEmpty(viralLoadResults) && CollectionUtils.size(viralLoadResults) == 2) { Result latestViralLoadResult = viralLoadResults.get(0); Result beforeLatestViralLoadResult = viralLoadResults.get(1); calendar.setTime(latestViralLoadResult.getResultDate()); calendar.add(Calendar.MONTH, -3); Date threeMonthsAgo = calendar.getTime(); if ((beforeLatestViralLoadResult.getResultDate().after(threeMonthsAgo) || DateUtils.isSameDay(beforeLatestViralLoadResult.getResultDate(), threeMonthsAgo)) && latestViralLoadResult.toNumber() > 1000 && beforeLatestViralLoadResult.toNumber() > 1000) { parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList("ANTIRETROVIRAL PLAN")); parameters.put(EvaluableConstants.OBS_VALUE_CODED, Arrays.asList("START DRUGS", "DRUG RESTART")); Result antiretroviralPlanResults = obsWithRestrictionRule.eval(context, patientId, parameters); if (CollectionUtils.isNotEmpty(antiretroviralPlanResults) && (antiretroviralPlanResults.latest().getResultDate().after(twelveMonthsLater) || DateUtils.isSameDay(antiretroviralPlanResults.latest().getResultDate(), twelveMonthsLater))) { result.add(new Result( String.valueOf(parameters.get(ReminderParameters.DISPLAYED_REMINDER_TEXT)))); return result; }/*ww w . j a v a 2 s .c o m*/ parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList("REASON ANTIRETROVIRALS STARTED")); parameters.put(EvaluableConstants.OBS_VALUE_CODED, Arrays.asList("POST EXPOSURE PROPHYLAXIS", "TREATMENT", "TOTAL MATERNAL TO CHILD TRANSMISSION PROPHYLAXIS", "CLINICAL DISEASE", "PREVENTION OF MOTHER-TO-CHILD TRANSMISSION OF HIV", "UNKNOWN", "ADULT WHO STAGE 3 WITH CD4 COUNT LESS THAN 350", "WHO STAGE 3 ADULT", "WHO STAGE 4 ADULT", "CD4 COUNT LESS THAN 350", "DISCORDANT COUPLE", "IMMUNOLOGIC FAILURE", "VIROLOGIC FAILURE", "CD4 COUNT LESS THAN 500")); Result reasonStartedResults = obsWithRestrictionRule.eval(context, patientId, parameters); if (CollectionUtils.isNotEmpty(reasonStartedResults)) { Result reasonStartedResult = reasonStartedResults.latest(); if (reasonStartedResult.getResultDate().after(twelveMonthsLater) || DateUtils.isSameDay(reasonStartedResult.getResultDate(), twelveMonthsLater)) { result.add(new Result( String.valueOf(parameters.get(ReminderParameters.DISPLAYED_REMINDER_TEXT)))); return result; } } } } } return result; }
From source file:org.openmrs.module.clinicalsummary.rule.reminder.peds.pneumocystis.PolymeraseBasedReminderRule.java
/** * @see org.openmrs.logic.Rule#eval(org.openmrs.logic.LogicContext, Integer, java.util.Map) *//* w w w.j av a 2s . c om*/ @Override protected Result evaluate(final LogicContext context, final Integer patientId, final Map<String, Object> parameters) throws LogicException { Result result = new Result(); Patient patient = Context.getPatientService().getPatient(patientId); if (patient.getBirthdate() != null) { Calendar calendar = Calendar.getInstance(); calendar.setTime(patient.getBirthdate()); calendar.add(Calendar.WEEK_OF_YEAR, 6); Date sixWeeks = calendar.getTime(); calendar.setTime(patient.getBirthdate()); calendar.add(Calendar.MONTH, 18); Date eighteenMonths = calendar.getTime(); if (sixWeeks.before(new Date()) && eighteenMonths.after(new Date())) { ValidPolymeraseRule validPolymeraseRule = new ValidPolymeraseRule(); parameters.put(EvaluableConstants.OBS_FETCH_SIZE, 2); parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList(EvaluableNameConstants.HIV_DNA_POLYMERASE_CHAIN_REACTION_QUALITATIVE)); parameters.put(EvaluableConstants.OBS_VALUE_CODED, Arrays.asList(EvaluableNameConstants.NEGATIVE)); Result validPolymeraseResults = validPolymeraseRule.eval(context, patientId, parameters); // if we have less than 2 negative results if (CollectionUtils.isNotEmpty(validPolymeraseResults) && CollectionUtils.size(validPolymeraseResults) < 2) { parameters.remove(EvaluableConstants.OBS_CONCEPT); parameters.remove(EvaluableConstants.OBS_VALUE_CODED); parameters.remove(EvaluableConstants.OBS_FETCH_ORDER); parameters.remove(EvaluableConstants.OBS_FETCH_SIZE); PneumocystisCariniiRule pneumocystisCariniiRule = new PneumocystisCariniiRule(); parameters.put(EvaluableConstants.ENCOUNTER_TYPE, Arrays.asList(EvaluableNameConstants.ENCOUNTER_TYPE_PEDIATRIC_INITIAL, EvaluableNameConstants.ENCOUNTER_TYPE_PEDIATRIC_RETURN, EvaluableNameConstants.ENCOUNTER_TYPE_PEDIATRIC_NONCLINICALMEDICATION)); Result pneumocystisCariniiResults = pneumocystisCariniiRule.eval(context, patientId, parameters); if (CollectionUtils.isEmpty(pneumocystisCariniiResults)) result.add(new Result( String.valueOf(parameters.get(ReminderParameters.DISPLAYED_REMINDER_TEXT)))); } } } return result; }
From source file:org.openmrs.module.clinicalsummary.rule.reminder.peds.polymerase.RepeatPolymeraseReminderRule.java
/** * @see org.openmrs.logic.Rule#eval(org.openmrs.logic.LogicContext, Integer, java.util.Map) *//*from www.j av a 2 s . c o m*/ @Override protected Result evaluate(final LogicContext context, final Integer patientId, final Map<String, Object> parameters) throws LogicException { Result result = new Result(); Patient patient = Context.getPatientService().getPatient(patientId); if (patient.getBirthdate() != null) { Calendar calendar = Calendar.getInstance(); // 18 months after birth date calendar.setTime(patient.getBirthdate()); calendar.add(Calendar.MONTH, 18); Date eighteenMonths = calendar.getTime(); // 6 weeks after birth date calendar.setTime(patient.getBirthdate()); calendar.add(Calendar.WEEK_OF_YEAR, 6); Date sixWeeks = calendar.getTime(); if (sixWeeks.before(new Date()) && eighteenMonths.after(new Date())) { ValidPolymeraseRule validPolymeraseRule = new ValidPolymeraseRule(); // only pull the positive and negative results parameters.put(EvaluableConstants.OBS_FETCH_SIZE, 2); parameters.put(EvaluableConstants.OBS_VALUE_CODED, Arrays.asList(EvaluableNameConstants.POSITIVE, EvaluableNameConstants.NEGATIVE)); parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList(EvaluableNameConstants.HIV_DNA_POLYMERASE_CHAIN_REACTION_QUALITATIVE)); Result validPolymeraseResults = validPolymeraseRule.eval(context, patientId, parameters); if (CollectionUtils.isNotEmpty(validPolymeraseResults) && CollectionUtils.size(validPolymeraseResults) < 2) { Result validPolymeraseResult = validPolymeraseResults.latest(); // get the latest test ordered parameters.put(EvaluableConstants.OBS_CONCEPT, Arrays.asList(EvaluableNameConstants.TESTS_ORDERED)); parameters.put(EvaluableConstants.OBS_VALUE_CODED, Arrays.asList(EvaluableNameConstants.HIV_DNA_POLYMERASE_CHAIN_REACTION_QUALITATIVE)); ObsWithRestrictionRule obsWithRestrictionRule = new ObsWithStringRestrictionRule(); Result testResults = obsWithRestrictionRule.eval(context, patientId, parameters); calendar.setTime(patient.getBirthdate()); calendar.add(Calendar.WEEK_OF_YEAR, 4); Date fourWeeks = calendar.getTime(); calendar.setTime(new Date()); calendar.add(Calendar.MONTH, -6); Date sixMonthsAgo = calendar.getTime(); int pendingCount = 0; for (Result testResult : testResults) { // test is valid if it's performed after four weeks and after six months ago and not the same with the date of the result if (testResult.getResultDate().after(sixMonthsAgo) && testResult.getResultDate().after(fourWeeks) && !DateUtils.isSameDay(testResult.getResultDate(), validPolymeraseResult.getResultDate())) pendingCount++; } if (pendingCount + validPolymeraseResults.size() < 2) result.add(new Result( String.valueOf(parameters.get(ReminderParameters.DISPLAYED_REMINDER_TEXT)))); } } } return result; }
From source file:org.openmrs.module.clinicalsummary.rule.util.ResultUtils.java
/** * Strip duplicates result object/* ww w . jav a 2 s .c o m*/ * * @param results the results with duplicates * @return results without duplicates */ public static Result stripDuplicates(final Result results) { if (CollectionUtils.isEmpty(results)) return results; Result strippedResults = new Result(); Integer parentCounter = 0; while (parentCounter < CollectionUtils.size(results)) { Result referredResult = results.get(parentCounter++); // search for duplicates and remove them Integer childCounter = parentCounter; Boolean duplicateFound = Boolean.FALSE; while (childCounter < CollectionUtils.size(results) && !duplicateFound) { Result currentResult = results.get(childCounter++); if (DateUtils.isSameDay(referredResult.getResultDate(), currentResult.getResultDate()) && OpenmrsUtil.nullSafeEquals(referredResult.getDatatype(), currentResult.getDatatype())) { if (OpenmrsUtil.nullSafeEquals(currentResult.getDatatype(), Result.Datatype.NUMERIC) && OpenmrsUtil.nullSafeEquals(referredResult.toNumber(), currentResult.toNumber()) || (OpenmrsUtil.nullSafeEquals(currentResult.getDatatype(), Result.Datatype.CODED) && OpenmrsUtil.nullSafeEquals(referredResult.toConcept(), currentResult.toConcept()))) { duplicateFound = Boolean.TRUE; } } } if (!duplicateFound) strippedResults.add(referredResult); } return strippedResults; }
From source file:org.opens.tanaguru.ruleimplementation.AbstractUniqueElementSiteRuleImplementation.java
/** * This methods creates failed remarks at page scope and site scope when * duplicated are found./*ww w. jav a 2 s . co m*/ * @param netResultList * @param urlOnError */ private TestSolution computeResultAndCreateRemarks(List<ProcessResult> processResultList, List<DefiniteResult> netResultList, String elementValue, int elementCounter) { Collection<WebResource> wrsOnError = createUrlListFromProcessResultList(processResultList, netResultList); TestSolution testSolution = TestSolution.PASSED; if (CollectionUtils.size(wrsOnError) > 1) { for (WebResource wr : wrsOnError) { testSolution = TestSolution.FAILED; prs.addConsolidationRemark(TestSolution.FAILED, siteLevelMessageCode, elementValue, wr.getURL()); Collection<ProcessRemark> processRemarkList = createProcessRemarkListForPageOnError(elementValue, wrsOnError); netResultList .add(createResultAtPageLevel(wr, TestSolution.FAILED, elementCounter, processRemarkList)); } // TO DO : set Passed the pages that have a correct rel=canonical // definition } else { netResultList.addAll(createResultAtPageLevel(wrsOnError, TestSolution.PASSED, 0, null)); } return testSolution; }
From source file:org.paxml.el.UtilFunctions.java
/** * Count how many elements is in the given * list/map/iterator/enumeration/array./* w w w .j av a2 s . co m*/ * * @param obj * list/map/iterator/enumeration/array * @return number of elements */ public static int count(Object obj) { if (obj == null) { return 0; } else if (obj instanceof Collection || obj instanceof Map || obj instanceof Iterator || obj instanceof Enumeration || obj.getClass().isArray()) { return CollectionUtils.size(obj); } else if (obj instanceof Iterable) { return count(((Iterable) obj).iterator()); } else { return 1; } }