|
4 | 4 | import java.sql.SQLException;
|
5 | 5 | import java.util.ArrayList;
|
6 | 6 | import java.util.Collection;
|
| 7 | +import java.util.HashMap; |
7 | 8 | import java.util.HashSet;
|
8 | 9 | import java.util.List;
|
9 | 10 | import java.util.Map;
|
|
44 | 45 | import org.ohdsi.webapi.cohortresults.CohortSpecificSummary;
|
45 | 46 | import org.ohdsi.webapi.cohortresults.CohortSpecificTreemap;
|
46 | 47 | import org.ohdsi.webapi.cohortresults.CohortVisitsDrilldown;
|
| 48 | +import org.ohdsi.webapi.cohortresults.DataCompletenessAttr; |
| 49 | +import org.ohdsi.webapi.cohortresults.EntropyAttr; |
47 | 50 | import org.ohdsi.webapi.cohortresults.HierarchicalConceptRecord;
|
48 | 51 | import org.ohdsi.webapi.cohortresults.ScatterplotRecord;
|
49 | 52 | import org.ohdsi.webapi.cohortresults.VisualizationData;
|
50 | 53 | import org.ohdsi.webapi.cohortresults.VisualizationDataRepository;
|
| 54 | +import org.ohdsi.webapi.cohortresults.mapper.AnalysisResultsMapper; |
51 | 55 | import org.ohdsi.webapi.helper.ResourceHelper;
|
52 | 56 | import org.ohdsi.webapi.model.results.Analysis;
|
| 57 | +import org.ohdsi.webapi.model.results.AnalysisResults; |
53 | 58 | import org.ohdsi.webapi.source.Source;
|
54 | 59 | import org.ohdsi.webapi.source.SourceDaimon;
|
55 | 60 | import org.ohdsi.webapi.util.SessionUtils;
|
@@ -1595,7 +1600,130 @@ public List<CohortAttribute> getHeraclesHeel(@PathParam("id") final int id,
|
1595 | 1600 |
|
1596 | 1601 | return attrs;
|
1597 | 1602 | }
|
| 1603 | + |
| 1604 | + public List<AnalysisResults> getCohortAnalysesForDataCompleteness(@PathParam("id") final int id, |
| 1605 | + @PathParam("sourceKey") String sourceKey) { |
| 1606 | + |
| 1607 | + String sql = null; |
| 1608 | + sql = ResourceHelper.GetResourceAsString("/resources/cohortresults/sql/datacompleteness/getCohortDataCompleteness.sql"); |
| 1609 | + |
| 1610 | + Source source = getSourceRepository().findBySourceKey(sourceKey); |
| 1611 | + String resultsTableQualifier = source.getTableQualifier(SourceDaimon.DaimonType.Results); |
| 1612 | + |
| 1613 | + sql = SqlRender.renderSql(sql, new String[]{"tableQualifier", "cohortDefinitionId"}, |
| 1614 | + new String[]{resultsTableQualifier, String.valueOf(id)}); |
| 1615 | + sql = SqlTranslate.translateSql(sql, getSourceDialect(), source.getSourceDialect()); |
| 1616 | + |
| 1617 | + |
| 1618 | + AnalysisResultsMapper arm = new AnalysisResultsMapper(); |
| 1619 | + |
| 1620 | + return getSourceJdbcTemplate(source).query(sql, arm); |
| 1621 | + } |
1598 | 1622 |
|
| 1623 | + @GET |
| 1624 | + @Path("{sourceKey}/{id}/datacompleteness") |
| 1625 | + @Produces(MediaType.APPLICATION_JSON) |
| 1626 | + public List<DataCompletenessAttr> getDataCompleteness(@PathParam("id") final int id, |
| 1627 | + @PathParam("sourceKey") String sourceKey) { |
| 1628 | + List<AnalysisResults> arl = this.getCohortAnalysesForDataCompleteness(id, sourceKey); |
| 1629 | + |
| 1630 | + List<DataCompletenessAttr> dcal = new ArrayList<DataCompletenessAttr>(); |
| 1631 | + |
| 1632 | + Map<Integer, AnalysisResults> resultMap = new HashMap<Integer, AnalysisResults>(); |
| 1633 | + |
| 1634 | + for(AnalysisResults ar : arl){ |
| 1635 | + resultMap.put(ar.getAnalysisId(), ar); |
| 1636 | + } |
| 1637 | + |
| 1638 | + DataCompletenessAttr aca = new DataCompletenessAttr(); |
| 1639 | + aca.setCovariance("0~10"); |
| 1640 | + aca.setGenderP(Float.parseFloat(resultMap.get(2001).getStratum1())); |
| 1641 | + aca.setRaceP(Float.parseFloat(resultMap.get(2011).getStratum1())); |
| 1642 | + aca.setEthP(Float.parseFloat(resultMap.get(2021).getStratum1())); |
| 1643 | + dcal.add(aca); |
| 1644 | + |
| 1645 | + aca = new DataCompletenessAttr(); |
| 1646 | + aca.setCovariance("10~20"); |
| 1647 | + aca.setGenderP(Float.parseFloat(resultMap.get(2002).getStratum1())); |
| 1648 | + aca.setRaceP(Float.parseFloat(resultMap.get(2012).getStratum1())); |
| 1649 | + aca.setEthP(Float.parseFloat(resultMap.get(2022).getStratum1())); |
| 1650 | + dcal.add(aca); |
| 1651 | + |
| 1652 | + aca = new DataCompletenessAttr(); |
| 1653 | + aca.setCovariance("20~30"); |
| 1654 | + aca.setGenderP(Float.parseFloat(resultMap.get(2003).getStratum1())); |
| 1655 | + aca.setRaceP(Float.parseFloat(resultMap.get(2013).getStratum1())); |
| 1656 | + aca.setEthP(Float.parseFloat(resultMap.get(2023).getStratum1())); |
| 1657 | + dcal.add(aca); |
| 1658 | + |
| 1659 | + aca = new DataCompletenessAttr(); |
| 1660 | + aca.setCovariance("30~40"); |
| 1661 | + aca.setGenderP(Float.parseFloat(resultMap.get(2004).getStratum1())); |
| 1662 | + aca.setRaceP(Float.parseFloat(resultMap.get(2014).getStratum1())); |
| 1663 | + aca.setEthP(Float.parseFloat(resultMap.get(2024).getStratum1())); |
| 1664 | + dcal.add(aca); |
| 1665 | + |
| 1666 | + aca = new DataCompletenessAttr(); |
| 1667 | + aca.setCovariance("40~50"); |
| 1668 | + aca.setGenderP(Float.parseFloat(resultMap.get(2005).getStratum1())); |
| 1669 | + aca.setRaceP(Float.parseFloat(resultMap.get(2015).getStratum1())); |
| 1670 | + aca.setEthP(Float.parseFloat(resultMap.get(2025).getStratum1())); |
| 1671 | + dcal.add(aca); |
| 1672 | + |
| 1673 | + aca = new DataCompletenessAttr(); |
| 1674 | + aca.setCovariance("50~60"); |
| 1675 | + aca.setGenderP(Float.parseFloat(resultMap.get(2006).getStratum1())); |
| 1676 | + aca.setRaceP(Float.parseFloat(resultMap.get(2016).getStratum1())); |
| 1677 | + aca.setEthP(Float.parseFloat(resultMap.get(2026).getStratum1())); |
| 1678 | + dcal.add(aca); |
| 1679 | + |
| 1680 | + aca = new DataCompletenessAttr(); |
| 1681 | + aca.setCovariance("60+"); |
| 1682 | + aca.setGenderP(Float.parseFloat(resultMap.get(2007).getStratum1())); |
| 1683 | + aca.setRaceP(Float.parseFloat(resultMap.get(2017).getStratum1())); |
| 1684 | + aca.setEthP(Float.parseFloat(resultMap.get(2027).getStratum1())); |
| 1685 | + dcal.add(aca); |
| 1686 | + |
| 1687 | + return dcal; |
| 1688 | + } |
| 1689 | + |
| 1690 | + public List<AnalysisResults> getCohortAnalysesEntropy(final int id, String sourceKey) { |
| 1691 | + |
| 1692 | + String sql = null; |
| 1693 | + sql = ResourceHelper |
| 1694 | + .GetResourceAsString("/resources/cohortresults/sql/entropy/getEntropy.sql"); |
| 1695 | + |
| 1696 | + Source source = getSourceRepository().findBySourceKey(sourceKey); |
| 1697 | + String resultsTableQualifier = source.getTableQualifier(SourceDaimon.DaimonType.Results); |
| 1698 | + |
| 1699 | + sql = SqlRender.renderSql(sql, new String[] { "tableQualifier", "cohortDefinitionId" }, |
| 1700 | + new String[] { resultsTableQualifier, String.valueOf(id) }); |
| 1701 | + sql = SqlTranslate.translateSql(sql, getSourceDialect(), source.getSourceDialect()); |
| 1702 | + |
| 1703 | + AnalysisResultsMapper arm = new AnalysisResultsMapper(); |
| 1704 | + |
| 1705 | + return getSourceJdbcTemplate(source).query(sql, arm); |
| 1706 | + } |
| 1707 | + |
| 1708 | + @GET |
| 1709 | + @Path("{sourceKey}/{id}/entropy") |
| 1710 | + @Produces(MediaType.APPLICATION_JSON) |
| 1711 | + public List<EntropyAttr> getEntropy(@PathParam("id") final int id, |
| 1712 | + @PathParam("sourceKey") String sourceKey) { |
| 1713 | + List<AnalysisResults> arl = this.getCohortAnalysesEntropy(id, sourceKey); |
| 1714 | + |
| 1715 | + List<EntropyAttr> el = new ArrayList<EntropyAttr>(); |
| 1716 | + |
| 1717 | + for(AnalysisResults ar : arl){ |
| 1718 | + EntropyAttr ea = new EntropyAttr(); |
| 1719 | + ea.setDate(ar.getStratum1()); |
| 1720 | + ea.setEntropy(Float.parseFloat(ar.getStratum2())); |
| 1721 | + el.add(ea); |
| 1722 | + } |
| 1723 | + |
| 1724 | + return el; |
| 1725 | + } |
| 1726 | + |
1599 | 1727 | private String JoinArray(final String[] array) {
|
1600 | 1728 | String result = "";
|
1601 | 1729 |
|
|
0 commit comments