Skip to content

Commit 046feba

Browse files
chrisknollanthonysena
authored andcommitted
Cohort list query optimization (#220)
Fixes #219.
1 parent 00a64bf commit 046feba

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

src/main/java/org/ohdsi/webapi/service/CohortDefinitionService.java

+15-10
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import java.util.List;
2222
import java.util.Map;
2323
import java.util.Set;
24+
import javax.persistence.EntityManager;
25+
import javax.persistence.PersistenceContext;
2426

2527
import javax.servlet.ServletContext;
2628
import javax.transaction.Transactional;
@@ -103,6 +105,9 @@ public class CohortDefinitionService extends AbstractDaoService {
103105
@Autowired
104106
private JobTemplate jobTemplate;
105107

108+
@PersistenceContext
109+
protected EntityManager entityManager;
110+
106111
private final RowMapper<InclusionRuleReport.Summary> summaryMapper = new RowMapper<InclusionRuleReport.Summary>() {
107112
@Override
108113
public InclusionRuleReport.Summary mapRow(ResultSet rs, int rowNum) throws SQLException {
@@ -326,17 +331,17 @@ public GenerateSqlResult generateSql(GenerateSqlRequest request) {
326331
@Produces(MediaType.APPLICATION_JSON)
327332
public List<CohortDefinitionListItem> getCohortDefinitionList() {
328333
ArrayList<CohortDefinitionListItem> result = new ArrayList<>();
329-
Iterable<CohortDefinition> defs = this.cohortDefinitionRepository.list();
330-
for (CohortDefinition d : defs) {
334+
List<Object[]> defs = entityManager.createQuery("SELECT cd.id, cd.name, cd.description, cd.expressionType, cd.createdBy, cd.createdDate, cd.modifiedBy, cd.modifiedDate FROM CohortDefinition cd").getResultList();
335+
for (Object[] d : defs) {
331336
CohortDefinitionListItem item = new CohortDefinitionListItem();
332-
item.id = d.getId();
333-
item.name = d.getName();
334-
item.description = d.getDescription();
335-
item.expressionType = d.getExpressionType();
336-
item.createdBy = d.getCreatedBy();
337-
item.createdDate = d.getCreatedDate();
338-
item.modifiedBy = d.getModifiedBy();
339-
item.modifiedDate = d.getModifiedDate();
337+
item.id = (Integer)d[0];
338+
item.name = (String)d[1];
339+
item.description = (String)d[2];
340+
item.expressionType = (ExpressionType)d[3];
341+
item.createdBy = (String)d[4];
342+
item.createdDate = (Date)d[5];
343+
item.modifiedBy = (String)d[6];
344+
item.modifiedDate = (Date)d[7];
340345
result.add(item);
341346
}
342347
return result;

0 commit comments

Comments
 (0)