diff --git a/gsrs-module-products-spring-boot-autoconfigure/src/main/java/gov/hhs/gsrs/products/product/indexers/ProductSubstanceIndexValueMaker.java b/gsrs-module-products-spring-boot-autoconfigure/src/main/java/gov/hhs/gsrs/products/product/indexers/ProductSubstanceIndexValueMaker.java index 79ae291..113a333 100644 --- a/gsrs-module-products-spring-boot-autoconfigure/src/main/java/gov/hhs/gsrs/products/product/indexers/ProductSubstanceIndexValueMaker.java +++ b/gsrs-module-products-spring-boot-autoconfigure/src/main/java/gov/hhs/gsrs/products/product/indexers/ProductSubstanceIndexValueMaker.java @@ -17,6 +17,8 @@ import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; @@ -76,6 +78,32 @@ public void createIndexableValues(Product product, Consumer cons } // for productLots } // for productManufactureItems + + // Facet: Application Type Number - Create a facet by combining Application Type and Application Number + for (ProductProvenance prodProv : product.productProvenances) { + if (prodProv != null) { + if ((prodProv.applicationType != null) && (prodProv.applicationNumber != null)) { + consumer.accept(IndexableValue.simpleFacetStringValue("Application Type Number", prodProv.applicationType + " " + prodProv.applicationNumber).suggestable().setSortable()); + } + } + + // The Product Code is stored as String in the database, and need this IVM so can + // sort by numeric values on the frontend. + for (ProductCode prodCode : prodProv.productCodes) { + if (prodCode != null) { + if (prodCode.productCode != null) { + // Remove hypen - from Product Code. Change 13334-155 to 13334155 + String codeRemovedHypen = prodCode.productCode.replaceAll("-", ""); + // Check if code has numeric values or not. If has number values, create IVM + if (StringUtils.isNumeric(codeRemovedHypen) == true) { + Long codeLong = Long.parseLong(codeRemovedHypen); + consumer.accept(IndexableValue.simpleLongValue("Product Code", codeLong).suggestable().setSortable()); + } + } + } + } + } // for ProductProvenance + } catch (Exception e) { log.warn("Error indexing ProductSubstanceIndexValueMaker:" + product.fetchKey(), e); } diff --git a/gsrs-module-products-spring-boot-autoconfigure/src/main/java/gov/hhs/gsrs/products/product/models/Product.java b/gsrs-module-products-spring-boot-autoconfigure/src/main/java/gov/hhs/gsrs/products/product/models/Product.java index 7a47518..bd14659 100644 --- a/gsrs-module-products-spring-boot-autoconfigure/src/main/java/gov/hhs/gsrs/products/product/models/Product.java +++ b/gsrs-module-products-spring-boot-autoconfigure/src/main/java/gov/hhs/gsrs/products/product/models/Product.java @@ -73,6 +73,14 @@ public class Product extends ProductCommonData { @Column(name="MANUFACTURER_CODE_TYPE") public String manufacturerCodeType; + @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="MM/dd/yyyy") + @Column(name="EFFECTIVE_DATE") + public Date effectiveDate; + + @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="MM/dd/yyyy") + @Column(name="END_DATE") + public Date endDate; + @JsonIgnore @Indexable(facet=true, name="Deprecated") public String getDeprecated(){ diff --git a/gsrs-module-products-spring-boot-autoconfigure/src/main/java/gov/hhs/gsrs/products/product/models/ProductIngredient.java b/gsrs-module-products-spring-boot-autoconfigure/src/main/java/gov/hhs/gsrs/products/product/models/ProductIngredient.java index d4b87e2..1c85df9 100644 --- a/gsrs-module-products-spring-boot-autoconfigure/src/main/java/gov/hhs/gsrs/products/product/models/ProductIngredient.java +++ b/gsrs-module-products-spring-boot-autoconfigure/src/main/java/gov/hhs/gsrs/products/product/models/ProductIngredient.java @@ -97,6 +97,9 @@ public class ProductIngredient extends ProductCommonData { @Column(name = "INGREDIENT_LOCATION") public String ingredientLocation; + @Column(name = "INGRED_LOCATION_TEXT") + public String ingredientLocationText; + @Column(name = "CONFIDENTIALITY_CODE") public String confidentialityCode; diff --git a/gsrs-module-products-spring-boot-autoconfigure/src/main/java/gov/hhs/gsrs/products/product/services/SubstanceApiService.java b/gsrs-module-products-spring-boot-autoconfigure/src/main/java/gov/hhs/gsrs/products/product/services/SubstanceApiService.java index 835b05e..bf957b8 100644 --- a/gsrs-module-products-spring-boot-autoconfigure/src/main/java/gov/hhs/gsrs/products/product/services/SubstanceApiService.java +++ b/gsrs-module-products-spring-boot-autoconfigure/src/main/java/gov/hhs/gsrs/products/product/services/SubstanceApiService.java @@ -94,6 +94,7 @@ public Optional getEntityManagerSubstanceBySubstanceKeyResolver(Strin Optional substance = null; try { + // CALL to Substance Module, EntityManagerSubstanceKeyResolver // Get ENTITY MANAGER Substance Key resolver by Substance Key and substanceKeyType (UUID, APPROVAL_ID, BDNUM) substance = entityManagerSubstanceKeyResolver.resolveEMSubstance(substanceKey, substanceKeyType); @@ -101,6 +102,10 @@ public Optional getEntityManagerSubstanceBySubstanceKeyResolver(Strin e.printStackTrace(); } + if (substance == null || !substance.isPresent()) { + return null; + } + if (substance.get().uuid != null) { return substance; } else { @@ -122,6 +127,7 @@ public Optional getSubstanceBySubstanceKeyResolver(String substanc try { // Substance API resolver by Substance Key and substanceKeyType (UUID, APPROVAL_ID, BDNUM) substanceDTO = substanceRestApi.resolveSubstance(substanceKey, substanceKeyType); + } catch (Exception e) { e.printStackTrace(); } @@ -167,7 +173,7 @@ public Optional> getNamesOfSubstance(String anyKindOfSubstanceId) return null; } - // Substance API, get the Names for the Substance + // Substance API, get the Codes for the Substance public Optional> getCodesOfSubstance(String anyKindOfSubstanceId) { if (anyKindOfSubstanceId == null) { return null;