package edu.gatech.i3l.fhir.jpa.dao; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.From; import javax.persistence.criteria.Predicate; import ca.uhn.fhir.model.dstu2.resource.Medication; import edu.gatech.i3l.fhir.dstu2.entities.MedicationConcept; import edu.gatech.i3l.fhir.jpa.entity.IResourceEntity; import edu.gatech.i3l.fhir.jpa.query.AbstractPredicateBuilder; import edu.gatech.i3l.fhir.jpa.query.PredicateBuilder; public class MedicationFhirResourceDao extends BaseFhirResourceDao<Medication> { public MedicationFhirResourceDao() { super(); setResourceEntity(MedicationConcept.class); setValidateBean(true); } @Override public PredicateBuilder getPredicateBuilder() { return new AbstractPredicateBuilder() { @Override public Predicate addCommonPredicate(CriteriaBuilder builder, From<? extends IResourceEntity, ? extends IResourceEntity> from) { Predicate pred1 = builder.equal(from.get("vocabulary").get("id"), "RxNorm");//In Omop database, the dictionary is static; that means we can reference id's directly: the id for the vocabulary RxNorm is 8 Predicate pred2 = builder.equal(from.get("vocabulary").get("id"), "NDC"); return builder.or(pred1, pred2); } }; } }