use of org.pmiops.workbench.model.SearchRequest in project workbench by all-of-us.
the class ParticipantCounterTest method buildChartInfoCounterQuery.
@Test
public void buildChartInfoCounterQuery() throws Exception {
String genderNamedParameter = "";
String conditionNamedParameter = "";
String procedureNamedParameter = "";
String cmConditionParameter = "";
String procConditionParameter = "";
String cmProcedureParameter = "";
String procProcedureParameter = "";
SearchParameter parameter1 = new SearchParameter().domain("Condition").group(false).type("ICD9").value("001.1");
SearchParameter parameter2 = new SearchParameter().subtype("GEN").conceptId(8507L);
SearchParameter parameter3 = new SearchParameter().domain("Procedure").group(false).type("CPT").value("001.2");
SearchGroupItem searchGroupItem1 = new SearchGroupItem().type("ICD9").addSearchParametersItem(parameter1);
SearchGroupItem searchGroupItem2 = new SearchGroupItem().type("DEMO").addSearchParametersItem(parameter2);
SearchGroupItem searchGroupItem3 = new SearchGroupItem().type("CPT").addSearchParametersItem(parameter3);
SearchGroup searchGroup1 = new SearchGroup().addItemsItem(searchGroupItem1);
SearchGroup searchGroup2 = new SearchGroup().addItemsItem(searchGroupItem2);
SearchGroup searchGroup3 = new SearchGroup().addItemsItem(searchGroupItem3);
SearchRequest request = new SearchRequest().addIncludesItem(searchGroup1).addIncludesItem(searchGroup2).addExcludesItem(searchGroup3);
QueryJobConfiguration actualRequest = participantCounter.buildChartInfoCounterQuery(new ParticipantCriteria(request));
for (String key : actualRequest.getNamedParameters().keySet()) {
if (key.startsWith("gen")) {
genderNamedParameter = key;
} else if (key.startsWith("Condition")) {
conditionNamedParameter = key;
cmConditionParameter = "cm" + key.replace("Condition", "");
procConditionParameter = "proc" + key.replace("Condition", "");
} else if (key.startsWith("Procedure")) {
procedureNamedParameter = key;
cmProcedureParameter = "cm" + key.replace("Procedure", "");
procProcedureParameter = "proc" + key.replace("Procedure", "");
}
}
final String expectedSql = "select concept1.concept_code as gender, \n" + "case when concept2.concept_name is null then 'Unknown' else concept2.concept_name end as race, \n" + "case when CAST(FLOOR(DATE_DIFF(CURRENT_DATE, DATE(person.year_of_birth, person.month_of_birth, person.day_of_birth), MONTH)/12) as INT64) >= 0 and CAST(FLOOR(DATE_DIFF(CURRENT_DATE, DATE(person.year_of_birth, person.month_of_birth, person.day_of_birth), MONTH)/12) as INT64) <= 18 then '0-18'\n" + "when CAST(FLOOR(DATE_DIFF(CURRENT_DATE, DATE(person.year_of_birth, person.month_of_birth, person.day_of_birth), MONTH)/12) as INT64) >= 19 and CAST(FLOOR(DATE_DIFF(CURRENT_DATE, DATE(person.year_of_birth, person.month_of_birth, person.day_of_birth), MONTH)/12) as INT64) <= 44 then '19-44'\n" + "when CAST(FLOOR(DATE_DIFF(CURRENT_DATE, DATE(person.year_of_birth, person.month_of_birth, person.day_of_birth), MONTH)/12) as INT64) >= 45 and CAST(FLOOR(DATE_DIFF(CURRENT_DATE, DATE(person.year_of_birth, person.month_of_birth, person.day_of_birth), MONTH)/12) as INT64) <= 64 then '45-64'\n" + "else '> 65'\n" + "end as ageRange,\n" + "count(*) as count\n" + "from `${projectId}.${dataSetId}.person` person\n" + "left join `${projectId}.${dataSetId}.concept` concept1 on (person.gender_concept_id = concept1.concept_id and concept1.vocabulary_id = 'Gender')\n" + "left join `${projectId}.${dataSetId}.concept` concept2 on (person.race_concept_id = concept2.concept_id and concept2.vocabulary_id = 'Race')\n" + "where\n" + "person.person_id in (select person_id\n" + "from `${projectId}.${dataSetId}.person` p\n" + "where person_id in (select person_id\n" + "from `${projectId}.${dataSetId}.condition_occurrence` a, `${projectId}.${dataSetId}.concept` b\n" + "where a.condition_source_concept_id = b.concept_id\n" + "and b.vocabulary_id in (@" + cmConditionParameter + ",@" + procConditionParameter + ")\n" + "and b.concept_code in unnest(@" + conditionNamedParameter + ")\n" + ")\n" + ")\n" + "and person.person_id in (select person_id\n" + "from `${projectId}.${dataSetId}.person` p\n" + "where\n" + "p.gender_concept_id in unnest(@" + genderNamedParameter + ")\n" + ")\n" + "and not exists\n" + "(select 'x' from\n" + "(select person_id\n" + "from `${projectId}.${dataSetId}.person` p\n" + "where person_id in (select person_id\n" + "from `${projectId}.${dataSetId}.procedure_occurrence` a, `${projectId}.${dataSetId}.concept` b\n" + "where a.procedure_source_concept_id = b.concept_id\n" + "and b.vocabulary_id in (@" + cmProcedureParameter + ",@" + procProcedureParameter + ")\n" + "and b.concept_code in unnest(@" + procedureNamedParameter + ")\n" + ")\n" + ")\n" + "x where x.person_id = person.person_id)\n" + "group by gender, race, ageRange\n" + "order by gender, race, ageRange\n";
assertEquals(expectedSql, actualRequest.getQuery());
assertEquals("8507", actualRequest.getNamedParameters().get(genderNamedParameter).getArrayValues().get(0).getValue());
assertEquals(parameter1.getValue(), actualRequest.getNamedParameters().get(conditionNamedParameter).getArrayValues().get(0).getValue());
}
use of org.pmiops.workbench.model.SearchRequest in project workbench by all-of-us.
the class CohortBuilderControllerTest method countSubjectsDemoDec.
@Test
public void countSubjectsDemoDec() throws Exception {
Criteria demoGender = createDemoCriteria("DEMO", "DEC", null);
SearchParameter demo = createSearchParameter(demoGender, "Deceased");
SearchRequest searchRequest = createSearchRequests(demoGender.getType(), Arrays.asList(demo));
assertParticipants(controller.countParticipants(cdrVersion.getCdrVersionId(), searchRequest), 1);
}
use of org.pmiops.workbench.model.SearchRequest in project workbench by all-of-us.
the class CohortBuilderControllerTest method countSubjectsICD10ProcedureOccurrenceParent.
@Test
public void countSubjectsICD10ProcedureOccurrenceParent() throws Exception {
SearchParameter icd10 = createSearchParameter(icd10ProcedureParent, "16");
SearchRequest searchRequest = createSearchRequests(icd10ProcedureParent.getType(), Arrays.asList(icd10));
assertParticipants(controller.countParticipants(cdrVersion.getCdrVersionId(), searchRequest), 1);
}
use of org.pmiops.workbench.model.SearchRequest in project workbench by all-of-us.
the class CohortBuilderControllerTest method countSubjectsDemoGenderAndAge.
@Test
public void countSubjectsDemoGenderAndAge() throws Exception {
Criteria demoGender = createDemoCriteria("DEMO", "GEN", "8507");
SearchParameter demoGenderSearchParam = createSearchParameter(demoGender, null);
LocalDate birthdate = LocalDate.of(1980, 8, 01);
LocalDate now = LocalDate.now();
Integer age = Period.between(birthdate, now).getYears();
Criteria demoAge = createDemoCriteria("DEMO", "AGE", null);
SearchParameter demoAgeSearchParam = createSearchParameter(demoAge, null);
demoAgeSearchParam.attribute(new Attribute().operator("=").operands(Arrays.asList(age.toString())));
SearchRequest searchRequests = createSearchRequests(demoAge.getType(), Arrays.asList(demoGenderSearchParam, demoAgeSearchParam));
assertParticipants(controller.countParticipants(cdrVersion.getCdrVersionId(), searchRequests), 1);
}
use of org.pmiops.workbench.model.SearchRequest in project workbench by all-of-us.
the class CohortBuilderControllerTest method countSubjectsICD9ConditionOccurrenceParent.
@Test
public void countSubjectsICD9ConditionOccurrenceParent() throws Exception {
SearchParameter icd9 = createSearchParameter(icd9ConditionParent, "001");
SearchRequest searchRequest = createSearchRequests(icd9ConditionParent.getType(), Arrays.asList(icd9));
assertParticipants(controller.countParticipants(cdrVersion.getCdrVersionId(), searchRequest), 1);
}
Aggregations