/**
* The contents of this file are subject to the OpenMRS Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://license.openmrs.org
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* Copyright (C) OpenMRS, LLC. All Rights Reserved.
*/
package org.openmrs.cohort.impl;
import java.util.ArrayList;
import java.util.List;
import org.openmrs.Cohort;
import org.openmrs.api.APIException;
import org.openmrs.api.context.Context;
import org.openmrs.cohort.CohortDefinition;
import org.openmrs.cohort.CohortDefinitionItemHolder;
import org.openmrs.cohort.CohortDefinitionProvider;
import org.openmrs.report.EvaluationContext;
import org.openmrs.reporting.AbstractReportObject;
import org.openmrs.reporting.PatientFilter;
import org.openmrs.reporting.PatientSearch;
import org.openmrs.reporting.PatientSearchReportObject;
import org.openmrs.util.OpenmrsConstants;
import org.openmrs.util.OpenmrsUtil;
/**
* This class provides access to {@link org.openmrs.reporting.PatientSearch} objects that are saved
* in the report_object table, but exposes them as {@link CohortDefinition}
*
* @deprecated see reportingcompatibility module
*/
@Deprecated
public class PatientSearchCohortDefinitionProvider implements CohortDefinitionProvider {
/**
* TODO: this is potentially not necessary because its set via spring's application context
*
* @see org.openmrs.cohort.CohortDefinitionProvider#getClassHandled()
*/
public Class<? extends CohortDefinition> getClassHandled() {
return PatientSearch.class;
}
/**
* @see org.openmrs.cohort.CohortDefinitionProvider#evaluate(org.openmrs.cohort.CohortDefinition,
* org.openmrs.report.EvaluationContext)
*/
public Cohort evaluate(CohortDefinition cohortDefinition, EvaluationContext evaluationContext) {
PatientSearch search = (PatientSearch) cohortDefinition;
PatientFilter filter = OpenmrsUtil.toPatientFilter(search, null, evaluationContext);
Cohort ret = filter.filter(null, evaluationContext);
ret.setCohortDefinition(cohortDefinition);
ret.setEvaluationContext(evaluationContext);
return ret;
}
/**
* @see org.openmrs.cohort.CohortDefinitionProvider#getAllCohortDefinitions()
*/
public List<CohortDefinitionItemHolder> getAllCohortDefinitions() {
List<CohortDefinitionItemHolder> ret = new ArrayList<CohortDefinitionItemHolder>();
List<AbstractReportObject> patientSearches = Context.getReportObjectService().getReportObjectsByType(
OpenmrsConstants.REPORT_OBJECT_TYPE_PATIENTSEARCH);
for (AbstractReportObject o : patientSearches) {
PatientSearchReportObject psro = (PatientSearchReportObject) o;
CohortDefinitionItemHolder item = new CohortDefinitionItemHolder();
item.setKey(psro.getReportObjectId() + ":" + psro.getPatientSearch().getClass().getCanonicalName());
item.setName(psro.getName());
item.setCohortDefinition(psro.getPatientSearch());
ret.add(item);
}
return ret;
}
/**
* @see org.openmrs.cohort.CohortDefinitionProvider#getCohortDefinition(java.lang.Integer)
*/
public CohortDefinition getCohortDefinition(Integer id) {
PatientSearchReportObject psro = (PatientSearchReportObject) Context.getReportObjectService().getReportObject(id);
return psro.getPatientSearch();
}
/**
* @see org.openmrs.cohort.CohortDefinitionProvider#purgeCohortDefinition(org.openmrs.cohort.CohortDefinition)
*/
public void purgeCohortDefinition(CohortDefinition cohortDefinition) {
throw new APIException("Not Yet Implemented");
}
/**
* @see org.openmrs.cohort.CohortDefinitionProvider#saveCohortDefinition(org.openmrs.cohort.CohortDefinition)
*/
public CohortDefinition saveCohortDefinition(CohortDefinition cohortDefinition) {
throw new APIException("Not Yet Implemented");
}
}