diff --git a/api/src/main/java/com/lantanagroup/link/api/controller/ReportController.java b/api/src/main/java/com/lantanagroup/link/api/controller/ReportController.java index 24c2b5302..7fecee6f6 100644 --- a/api/src/main/java/com/lantanagroup/link/api/controller/ReportController.java +++ b/api/src/main/java/com/lantanagroup/link/api/controller/ReportController.java @@ -6,6 +6,7 @@ import com.lantanagroup.link.*; import com.lantanagroup.link.api.ReportGenerator; import com.lantanagroup.link.auth.LinkCredentials; +import com.lantanagroup.link.config.api.ApiConfig; import com.lantanagroup.link.db.SharedService; import com.lantanagroup.link.db.TenantService; import com.lantanagroup.link.db.model.*; @@ -82,6 +83,10 @@ public class ReportController extends BaseController { @Autowired private ValidationService validationService; + @Autowired + private ApiConfig apiConfig; + + @InitBinder public void initBinder(WebDataBinder binder) { binder.setDisallowedFields(DISALLOWED_FIELDS); @@ -275,15 +280,15 @@ public Report generateReport( } private void checkReportingPlan(TenantService tenantService, String periodStart, List measureIds) throws ParseException, URISyntaxException, IOException { - if (tenantService.getConfig().getReportingPlan() == null) { + if (apiConfig.getReportingPlan() == null) { return; } - if (!tenantService.getConfig().getReportingPlan().isEnabled()) { + if (!apiConfig.getReportingPlan().isEnabled()) { return; } - if (StringUtils.isEmpty(tenantService.getConfig().getReportingPlan().getUrl())) { + if (StringUtils.isEmpty(apiConfig.getReportingPlan().getUrl())) { logger.error("Reporting plan for tenant {} is not configured with a URL", tenantService.getConfig().getId()); throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR); } @@ -293,13 +298,13 @@ private void checkReportingPlan(TenantService tenantService, String periodStart, throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR); } - ReportingPlanService reportingPlanService = new ReportingPlanService(tenantService.getConfig().getReportingPlan(), tenantService.getConfig().getCdcOrgId()); + ReportingPlanService reportingPlanService = new ReportingPlanService(apiConfig.getReportingPlan(), tenantService.getConfig().getCdcOrgId()); Date date = Helper.parseFhirDate(periodStart); int year = date.getYear() + 1900; int month = date.getMonth() + 1; for (String bundleId : measureIds) { - String planName = tenantService.getConfig().getReportingPlan().getPlanNames().get(bundleId); + String planName = apiConfig.getReportingPlan().getPlanNames().get(bundleId); if (!reportingPlanService.isReporting(planName, year, month)) { throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Measure not in MRP for specified year and month"); } diff --git a/core/src/main/java/com/lantanagroup/link/config/api/ApiConfig.java b/core/src/main/java/com/lantanagroup/link/config/api/ApiConfig.java index 92b3e535c..a22afdb6f 100644 --- a/core/src/main/java/com/lantanagroup/link/config/api/ApiConfig.java +++ b/core/src/main/java/com/lantanagroup/link/config/api/ApiConfig.java @@ -175,4 +175,12 @@ public class ApiConfig { */ private String validationPackagesPath = "classpath:/packages/**"; + + /** + * Configuration for how to query the MRP (reporting plan) interface at CDC/NHSN to determine if a facility/tenant + * is signed up to report during the calculated reporting period. + */ + private ReportingPlan reportingPlan; + + } diff --git a/core/src/main/java/com/lantanagroup/link/db/model/tenant/ReportingPlan.java b/core/src/main/java/com/lantanagroup/link/config/api/ReportingPlan.java similarity index 91% rename from core/src/main/java/com/lantanagroup/link/db/model/tenant/ReportingPlan.java rename to core/src/main/java/com/lantanagroup/link/config/api/ReportingPlan.java index 24f229ced..a8d76b40c 100644 --- a/core/src/main/java/com/lantanagroup/link/db/model/tenant/ReportingPlan.java +++ b/core/src/main/java/com/lantanagroup/link/config/api/ReportingPlan.java @@ -1,4 +1,4 @@ -package com.lantanagroup.link.db.model.tenant; +package com.lantanagroup.link.config.api; import lombok.Getter; import lombok.Setter; diff --git a/core/src/main/java/com/lantanagroup/link/db/model/tenant/Tenant.java b/core/src/main/java/com/lantanagroup/link/db/model/tenant/Tenant.java index bcdcee20a..59db2b3f9 100644 --- a/core/src/main/java/com/lantanagroup/link/db/model/tenant/Tenant.java +++ b/core/src/main/java/com/lantanagroup/link/db/model/tenant/Tenant.java @@ -79,11 +79,6 @@ public class Tenant { */ private FhirQuery fhirQuery; - /** - * Configuration for how to query the MRP (reporting plan) interface at CDC/NHSN to determine if a facility/tenant - * is signed up to report during the calculated reporting period. - */ - private ReportingPlan reportingPlan; /** * ISO 8601 formatted duration in which to keep data for each tenant. Defaulted to 3 months. diff --git a/nhsn/src/main/java/com/lantanagroup/link/nhsn/ReportingPlanService.java b/nhsn/src/main/java/com/lantanagroup/link/nhsn/ReportingPlanService.java index 9b8c7fbef..26096337c 100644 --- a/nhsn/src/main/java/com/lantanagroup/link/nhsn/ReportingPlanService.java +++ b/nhsn/src/main/java/com/lantanagroup/link/nhsn/ReportingPlanService.java @@ -5,20 +5,16 @@ import com.fasterxml.jackson.databind.MapperFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.lantanagroup.link.Helper; -import com.lantanagroup.link.db.model.tenant.ReportingPlan; +import com.lantanagroup.link.config.api.ReportingPlan; import lombok.Getter; import lombok.Setter; import org.apache.commons.lang3.StringUtils; import org.apache.commons.text.StringEscapeUtils; import org.apache.http.HttpHeaders; -import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; import org.apache.http.client.utils.URIBuilder; import org.apache.http.impl.client.HttpClients; -import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,7 +27,6 @@ import java.io.IOException; import java.net.URISyntaxException; -import java.util.ArrayList; import java.util.List; public class ReportingPlanService {