Skip to content

Commit

Permalink
Merge pull request #719 from lantanagroup/LNK-1387-add-columns-report…
Browse files Browse the repository at this point in the history
…-tbl

LNK-1847 Add totalPatients and includedPatients
  • Loading branch information
edward-miller-lcg committed Mar 13, 2024
2 parents bbcc2f2 + 7259193 commit 256ff48
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 2 deletions.
42 changes: 40 additions & 2 deletions core/src/main/java/com/lantanagroup/link/db/SharedService.java
Original file line number Diff line number Diff line change
Expand Up @@ -839,19 +839,56 @@ public List<GlobalReportResponse> getAllReports() {
return reports;
}

private static TenantSummary getTenantSummaryResponse(Tenant tenantConfig, ResultSet rs) throws SQLException {
private TenantSummary getTenantSummaryResponse(Tenant tenantConfig, ResultSet rs) throws SQLException {
TenantSummary tenantSummary = new TenantSummary();
tenantSummary.setId(tenantConfig.getId());
tenantSummary.setName(tenantConfig.getName());
tenantSummary.setNhsnOrgId(tenantConfig.getCdcOrgId());

try (Connection conn = this.getSQLConnection(tenantConfig.getConnectionString())) {
String sql = "SELECT (SELECT COUNT(*) FROM OPENJSON(patients)) " +
"FROM dbo.patientList " +
"WHERE periodEnd = ? " +
"and periodStart = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, rs.getString(5));
ps.setString(2, rs.getString(4));
ResultSet tPRs = ps.executeQuery();
while (tPRs.next()) {
tenantSummary.setTotalPopulation(tPRs.getString(1));
break;
}
} catch (SQLException e) {
logger.error("SQL exception while compiling totalPatients from database", e);
throw new RuntimeException(e);
}

String measureIds = rs.getString(2);
measureIds = measureIds.replaceAll("\\[", "").replaceAll("\\]", "");

List<String> measures = Arrays.asList(measureIds.split(","));
// get measures from measureIds string, split on comma, convert to list of TenantSummaryMeasure
List<TenantSummaryMeasure> list = measures.stream().map(m -> {
var measure = new TenantSummaryMeasure();

try (Connection conn = this.getSQLConnection(tenantConfig.getConnectionString())){
String sql = "SELECT (SELECT COUNT(*) FROM OPENJSON(report, '$.contained[0].entry')) " +
"FROM dbo.[aggregate] " +
"where reportId = ? "+
"and measureId = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, rs.getString(1));
ps.setString(2, m.replaceAll("\"", ""));
ResultSet iPRs = ps.executeQuery();
while (iPRs.next()) {
measure.setIncludedPopulation(iPRs.getString(1));
break;
}
} catch (SQLException e) {
logger.error("SQL exception while compiling totalPatients from database", e);
throw new RuntimeException(e);
}

m = m.replace("\"", "");
measure.setId(m);
measure.setShortName(m);
Expand Down Expand Up @@ -896,7 +933,7 @@ public List<TenantSummary> getTenantSummary(String searchCriteria, TenantSummary
}
// TODO: Move to TenantService
try (Connection conn = this.getSQLConnection(tenantConfig.getConnectionString())) {
PreparedStatement ps = conn.prepareStatement("SELECT id, measureIds, submittedTime FROM [dbo].[report] WHERE submittedTime IS NOT NULL ORDER BY submittedTime DESC");
PreparedStatement ps = conn.prepareStatement("SELECT id, measureIds, submittedTime, periodStart, periodEnd FROM [dbo].[report] WHERE submittedTime IS NOT NULL ORDER BY submittedTime DESC");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
TenantSummary tenantSummary = getTenantSummaryResponse(tenantConfig, rs);
Expand All @@ -907,6 +944,7 @@ public List<TenantSummary> getTenantSummary(String searchCriteria, TenantSummary
throw new RuntimeException(e);
}
}

// sort by name or nhsnOrgId or last submission date
sortTenantSummaryList(sort, sortAscend, tenantSummaryList);
return tenantSummaryList;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,6 @@ public class TenantSummary {
private String nhsnOrgId;
private String lastSubmissionId;
private String lastSubmissionDate;
private String totalPopulation;
private List<TenantSummaryMeasure> measures = new ArrayList<>();
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@ public class TenantSummaryMeasure {
private String id;
private String shortName;
private String longName;
private String includedPopulation;
}

0 comments on commit 256ff48

Please sign in to comment.