use of org.obiba.mica.core.domain.StudyTable in project mica2 by obiba.
the class DatasetDtos method asDtoBuilder.
@NotNull
Mica.DatasetDto.Builder asDtoBuilder(@NotNull HarmonizationDataset dataset, boolean asDraft, boolean studySummary) {
Mica.DatasetDto.Builder builder = asBuilder(dataset);
builder.setVariableType(DatasetVariable.Type.Dataschema.name());
Mica.HarmonizedDatasetDto.Builder hbuilder = Mica.HarmonizedDatasetDto.newBuilder();
if (dataset.hasHarmonizationTable() && !Strings.isNullOrEmpty(dataset.getHarmonizationTable().getStudyId()) && isStudyTablePermitted(asDraft, "harmonization", dataset.getHarmonizationTable().getStudyId())) {
hbuilder.setHarmonizationTable(createHarmonizationLinkDtoFromHarmonizationTable(dataset.getHarmonizationTable(), asDraft));
}
if (!dataset.getStudyTables().isEmpty()) {
dataset.getStudyTables().stream().filter(studyTable -> isStudyTablePermitted(asDraft, "individual", studyTable.getStudyId())).forEach(studyTable -> hbuilder.addStudyTables(asDto(studyTable, studySummary)));
}
if (!dataset.getHarmonizationTables().isEmpty()) {
dataset.getHarmonizationTables().stream().filter(studyTable -> isStudyTablePermitted(asDraft, "harmonization", studyTable.getStudyId())).forEach(harmonizationTable -> hbuilder.addHarmonizationTables(asDto(harmonizationTable, studySummary)));
}
builder.setExtension(Mica.HarmonizedDatasetDto.type, hbuilder.build());
Mica.PermissionsDto permissionsDto = permissionsDtos.asDto(dataset);
if (asDraft) {
HarmonizationDatasetState state = harmonizationDatasetStateRepository.findOne(dataset.getId());
if (state != null) {
builder.setPublished(state.isPublished());
builder.setExtension(Mica.EntityStateDto.datasetState, entityStateDtos.asDto(state).setPermissions(permissionsDto).build());
}
}
builder.setPermissions(permissionsDto);
return builder;
}
use of org.obiba.mica.core.domain.StudyTable in project mica2 by obiba.
the class DatasetDtos method asContingencyDto.
public Mica.DatasetVariableContingencyDto.Builder asContingencyDto(@NotNull OpalTable opalTable, DatasetVariable variable, DatasetVariable crossVariable, @Nullable Search.QueryResultDto results) {
Mica.DatasetVariableContingencyDto.Builder crossDto = Mica.DatasetVariableContingencyDto.newBuilder();
if (opalTable instanceof StudyTable)
crossDto.setStudyTable(asDto((StudyTable) opalTable, true));
else if (opalTable instanceof HarmonizationStudyTable)
crossDto.setHarmonizationStudyTable(asDto((HarmonizationStudyTable) opalTable));
Mica.DatasetVariableAggregationDto.Builder allAggBuilder = Mica.DatasetVariableAggregationDto.newBuilder();
if (results == null) {
allAggBuilder.setN(0);
allAggBuilder.setTotal(0);
crossDto.setAll(allAggBuilder);
return crossDto;
}
allAggBuilder.setTotal(results.getTotalHits());
MicaConfig micaConfig = micaConfigService.getConfig();
int privacyThreshold = micaConfig.getPrivacyThreshold();
crossDto.setPrivacyThreshold(privacyThreshold);
boolean privacyChecks = crossVariable.hasCategories() ? validatePrivacyThreshold(results, privacyThreshold) : true;
boolean totalPrivacyChecks = validateTotalPrivacyThreshold(results, privacyThreshold);
// add facet results in the same order as the variable categories
variable.getCategories().forEach(cat -> results.getFacetsList().stream().filter(facet -> facet.hasFacet() && cat.getName().equals(facet.getFacet())).forEach(facet -> {
boolean privacyCheck = privacyChecks && checkPrivacyThreshold(facet.getFilters(0).getCount(), privacyThreshold);
Mica.DatasetVariableAggregationDto.Builder aggBuilder = Mica.DatasetVariableAggregationDto.newBuilder();
aggBuilder.setTotal(totalPrivacyChecks ? results.getTotalHits() : 0);
aggBuilder.setTerm(facet.getFacet());
DatasetCategory category = variable.getCategory(facet.getFacet());
aggBuilder.setMissing(category != null && category.isMissing());
addSummaryStatistics(crossVariable, aggBuilder, facet, privacyCheck, totalPrivacyChecks);
crossDto.addAggregations(aggBuilder);
}));
// add total facet for all variable categories
results.getFacetsList().stream().filter(facet -> facet.hasFacet() && "_total".equals(facet.getFacet())).forEach(facet -> {
boolean privacyCheck = privacyChecks && facet.getFilters(0).getCount() > micaConfig.getPrivacyThreshold();
addSummaryStatistics(crossVariable, allAggBuilder, facet, privacyCheck, totalPrivacyChecks);
});
crossDto.setAll(allAggBuilder);
return crossDto;
}
use of org.obiba.mica.core.domain.StudyTable in project mica2 by obiba.
the class CollectedDatasetServiceTest method buildStudyDataset.
private StudyDataset buildStudyDataset() {
StudyDataset ds = new StudyDataset();
StudyTable st = new StudyTable();
st.setProject("proj");
st.setTable("tab");
ds.setStudyTable(st);
ds.setName(new LocalizedString(Locale.CANADA, "test"));
return ds;
}
use of org.obiba.mica.core.domain.StudyTable in project mica2 by obiba.
the class HarmonizedDatasetServiceTest method buildStudyTable.
private StudyTable buildStudyTable(String project, String table, String studyId) {
StudyTable st = new StudyTable();
st.setProject(project);
st.setTable(table);
st.setStudyId(studyId);
st.setPopulationId("pop");
st.setDataCollectionEventId("ev");
return st;
}
use of org.obiba.mica.core.domain.StudyTable in project mica2 by obiba.
the class HarmonizedDatasetServiceTest method buildHarmonizationDataset.
private HarmonizationDataset buildHarmonizationDataset(String id, StudyTable... studyTables) {
HarmonizationDataset ds = new HarmonizationDataset();
for (StudyTable s : studyTables) {
ds.addStudyTable(s);
}
ds.setId(id);
ds.setName(new LocalizedString(Locale.CANADA, "dataset" + id));
return ds;
}
Aggregations