Skip to content

Instantly share code, notes, and snippets.

@bharatak
Last active August 26, 2016 07:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bharatak/67379763cd8a2fdb5cdb9bc82cc16edb to your computer and use it in GitHub Desktop.
Save bharatak/67379763cd8a2fdb5cdb9bc82cc16edb to your computer and use it in GitHub Desktop.
Invalid Program Enrollment Rule
package org.openmrs.module.dataintegrity;
import org.hibernate.Criteria;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.openmrs.PatientProgram;
import org.openmrs.api.context.Context;
import org.openmrs.module.dataintegrity.rule.RuleDefn;
import org.openmrs.module.dataintegrity.rule.RuleResult;
import java.util.ArrayList;
import java.util.List;
public class InvalidProgramEnrollmentRules implements RuleDefn<PatientProgram> {
@Override
public List<RuleResult<PatientProgram>> evaluate() {
List<RuleResult<PatientProgram>> ruleResults = new ArrayList<>();
Criteria criteria = getSessionFactory().getCurrentSession()
.createCriteria(PatientProgram.class,"patientProgram")
.createAlias("patientProgram.program", "program")
.createAlias("patientProgram.patient", "patient")
.add(Restrictions.eq("program.name","Prenatal Care Program"))
.add(Restrictions.eq("patient.gender", "M"));
List<PatientProgram> violatedPatientPrograms = criteria.list();
return patientProgramToRuleResultTransformer(violatedPatientPrograms,"Male patients in Pregnancy program");
}
private SessionFactory getSessionFactory(){
return Context.getRegisteredComponent("sessionFactory",SessionFactory.class);
}
private List<RuleResult<PatientProgram>> patientProgramToRuleResultTransformer(List<PatientProgram> patients, String notes){
List<RuleResult<PatientProgram>> ruleResults = new ArrayList<>();
for (PatientProgram patient : patients) {
RuleResult<PatientProgram> ruleResult = new RuleResult<>();
ruleResult.setActionUrl("");
ruleResult.setNotes(notes);
ruleResult.setEntity(patient);
ruleResults.add(ruleResult);
}
return ruleResults;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment