From f4892ec9d3eb59aea9dccb19358b0e9d4fe9cff4 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Tue, 9 Jan 2024 11:59:38 +0000
Subject: [PATCH 1/3] Update dependency nl.jqno.equalsverifier:equalsverifier
 to v3.15.6

---
 app/build.gradle    | 2 +-
 etor/build.gradle   | 2 +-
 shared/build.gradle | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index d351bb88e..18fa8b8f8 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -28,7 +28,7 @@ dependencies {
     testImplementation 'org.apache.groovy:groovy:4.0.17'
     testImplementation 'org.spockframework:spock-core:2.3-groovy-4.0'
     testImplementation 'com.openpojo:openpojo:0.9.1'
-    testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.15.5'
+    testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.15.6'
 }
 
 jacocoTestCoverageVerification {
diff --git a/etor/build.gradle b/etor/build.gradle
index 988dfe971..c4b835cd4 100644
--- a/etor/build.gradle
+++ b/etor/build.gradle
@@ -19,7 +19,7 @@ dependencies {
     testImplementation 'org.apache.groovy:groovy:4.0.17'
     testImplementation 'org.spockframework:spock-core:2.3-groovy-4.0'
     testImplementation 'com.openpojo:openpojo:0.9.1'
-    testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.15.5'
+    testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.15.6'
 }
 
 jacocoTestCoverageVerification {
diff --git a/shared/build.gradle b/shared/build.gradle
index 4768e6637..7e5e2a948 100644
--- a/shared/build.gradle
+++ b/shared/build.gradle
@@ -51,7 +51,7 @@ dependencies {
     testFixturesImplementation 'org.apache.groovy:groovy:4.0.17'
     testImplementation 'org.spockframework:spock-core:2.3-groovy-4.0'
     testFixturesImplementation 'com.openpojo:openpojo:0.9.1'
-    testFixturesImplementation 'nl.jqno.equalsverifier:equalsverifier:3.15.5'
+    testFixturesImplementation 'nl.jqno.equalsverifier:equalsverifier:3.15.6'
 
     // dotenv-java
     implementation 'io.github.cdimascio:dotenv-java:3.0.0'

From 1d412ccc99c91134d31fcfcce378b3fd0462ca19 Mon Sep 17 00:00:00 2001
From: Jeff Crichlake <jcrichlake@gmail.com>
Date: Tue, 9 Jan 2024 10:59:28 -0500
Subject: [PATCH 2/3] Adding wrapper class

---
 .../etor/EtorDomainRegistration.java            |  6 +++---
 .../etor/operationoutcomes/FhirMetadata.java    |  6 ++++++
 .../operationoutcomes/HapiFhirMetadata.java     | 17 +++++++++++++++++
 .../etor/orders/OrderConverter.java             |  4 ++--
 .../external/hapi/HapiOrderConverter.java       |  6 ++++--
 .../etor/EtorDomainRegistrationTest.groovy      |  5 +++--
 6 files changed, 35 insertions(+), 9 deletions(-)
 create mode 100644 etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/operationoutcomes/FhirMetadata.java
 create mode 100644 etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/operationoutcomes/HapiFhirMetadata.java

diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/EtorDomainRegistration.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/EtorDomainRegistration.java
index 3b925ac4b..5158fbd0f 100644
--- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/EtorDomainRegistration.java
+++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/EtorDomainRegistration.java
@@ -15,6 +15,7 @@
 import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadataException;
 import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadataOrchestrator;
 import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadataStorage;
+import gov.hhs.cdc.trustedintermediary.etor.operationoutcomes.FhirMetadata;
 import gov.hhs.cdc.trustedintermediary.etor.orders.Order;
 import gov.hhs.cdc.trustedintermediary.etor.orders.OrderController;
 import gov.hhs.cdc.trustedintermediary.etor.orders.OrderConverter;
@@ -44,7 +45,6 @@
 import java.util.Optional;
 import java.util.function.Function;
 import javax.inject.Inject;
-import org.hl7.fhir.r4.model.OperationOutcome;
 
 /**
  * The domain connector for the ETOR domain. It connects it with the larger trusted intermediary. It
@@ -181,11 +181,11 @@ DomainResponse handleMetadata(DomainRequest request) {
                         404, "Metadata not found for ID: " + metadataId);
             }
 
-            OperationOutcome responseObject =
+            FhirMetadata<?> responseObject =
                     orderConverter.extractPublicMetadataToOperationOutcome(metadata.get());
 
             return domainResponseHelper.constructOkResponseFromString(
-                    fhir.encodeResourceToJson(responseObject));
+                    fhir.encodeResourceToJson(responseObject.getUnderlyingOutcome()));
         } catch (PartnerMetadataException e) {
             String errorMessage = "Unable to retrieve requested metadata";
             logger.logError(errorMessage, e);
diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/operationoutcomes/FhirMetadata.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/operationoutcomes/FhirMetadata.java
new file mode 100644
index 000000000..3c22cfb07
--- /dev/null
+++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/operationoutcomes/FhirMetadata.java
@@ -0,0 +1,6 @@
+package gov.hhs.cdc.trustedintermediary.etor.operationoutcomes;
+
+public interface FhirMetadata<T> {
+
+    T getUnderlyingOutcome();
+}
diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/operationoutcomes/HapiFhirMetadata.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/operationoutcomes/HapiFhirMetadata.java
new file mode 100644
index 000000000..57c6ea6d7
--- /dev/null
+++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/operationoutcomes/HapiFhirMetadata.java
@@ -0,0 +1,17 @@
+package gov.hhs.cdc.trustedintermediary.etor.operationoutcomes;
+
+import org.hl7.fhir.r4.model.OperationOutcome;
+
+public class HapiFhirMetadata implements FhirMetadata<OperationOutcome> {
+
+    private final OperationOutcome innerOutcome;
+
+    public HapiFhirMetadata(OperationOutcome outcome) {
+        this.innerOutcome = outcome;
+    }
+
+    @Override
+    public OperationOutcome getUnderlyingOutcome() {
+        return innerOutcome;
+    }
+}
diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/orders/OrderConverter.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/orders/OrderConverter.java
index 5e738417d..0f754cf38 100644
--- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/orders/OrderConverter.java
+++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/orders/OrderConverter.java
@@ -2,7 +2,7 @@
 
 import gov.hhs.cdc.trustedintermediary.etor.demographics.Demographics;
 import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadata;
-import org.hl7.fhir.r4.model.OperationOutcome;
+import gov.hhs.cdc.trustedintermediary.etor.operationoutcomes.FhirMetadata;
 
 /** Interface for converting things to orders and things in orders. */
 public interface OrderConverter {
@@ -12,5 +12,5 @@ public interface OrderConverter {
 
     Order<?> addContactSectionToPatientResource(Order<?> order);
 
-    OperationOutcome extractPublicMetadataToOperationOutcome(PartnerMetadata metadata);
+    FhirMetadata<?> extractPublicMetadataToOperationOutcome(PartnerMetadata metadata);
 }
diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/external/hapi/HapiOrderConverter.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/external/hapi/HapiOrderConverter.java
index 6681bc732..6c189da2b 100644
--- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/external/hapi/HapiOrderConverter.java
+++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/external/hapi/HapiOrderConverter.java
@@ -2,6 +2,8 @@
 
 import gov.hhs.cdc.trustedintermediary.etor.demographics.Demographics;
 import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadata;
+import gov.hhs.cdc.trustedintermediary.etor.operationoutcomes.FhirMetadata;
+import gov.hhs.cdc.trustedintermediary.etor.operationoutcomes.HapiFhirMetadata;
 import gov.hhs.cdc.trustedintermediary.etor.orders.Order;
 import gov.hhs.cdc.trustedintermediary.etor.orders.OrderConverter;
 import gov.hhs.cdc.trustedintermediary.wrappers.Logger;
@@ -204,7 +206,7 @@ private Provenance createProvenanceResource(Date orderDate) {
     }
 
     @Override
-    public OperationOutcome extractPublicMetadataToOperationOutcome(PartnerMetadata metadata) {
+    public FhirMetadata<?> extractPublicMetadataToOperationOutcome(PartnerMetadata metadata) {
         var operation = new OperationOutcome();
 
         operation.setId(metadata.receivedSubmissionId());
@@ -219,7 +221,7 @@ public OperationOutcome extractPublicMetadataToOperationOutcome(PartnerMetadata
                                 "order ingestion", metadata.timeReceived().toString()));
         operation.getIssue().add(createInformationIssueComponent("payload hash", metadata.hash()));
 
-        return operation;
+        return new HapiFhirMetadata(operation);
     }
 
     protected OperationOutcome.OperationOutcomeIssueComponent createInformationIssueComponent(
diff --git a/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/EtorDomainRegistrationTest.groovy b/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/EtorDomainRegistrationTest.groovy
index 84cc5f66f..1c8369ee9 100644
--- a/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/EtorDomainRegistrationTest.groovy
+++ b/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/EtorDomainRegistrationTest.groovy
@@ -14,6 +14,7 @@ import gov.hhs.cdc.trustedintermediary.etor.demographics.PatientDemographicsResp
 import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadata
 import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadataException
 import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadataOrchestrator
+import gov.hhs.cdc.trustedintermediary.etor.operationoutcomes.FhirMetadata
 import gov.hhs.cdc.trustedintermediary.etor.orders.Order
 import gov.hhs.cdc.trustedintermediary.etor.orders.OrderController
 import gov.hhs.cdc.trustedintermediary.etor.orders.OrderConverter
@@ -331,11 +332,11 @@ class EtorDomainRegistrationTest extends Specification {
         TestApplicationContext.register(DomainResponseHelper, mockResponseHelper)
 
         def mockOrderConverter = Mock(OrderConverter)
-        mockOrderConverter.extractPublicMetadataToOperationOutcome(_ as PartnerMetadata) >> Mock(OperationOutcome)
+        mockOrderConverter.extractPublicMetadataToOperationOutcome(_ as PartnerMetadata) >> Mock(FhirMetadata)
         TestApplicationContext.register(OrderConverter, mockOrderConverter)
 
         def mockFhir = Mock(HapiFhir)
-        mockFhir.encodeResourceToJson(_ as OperationOutcome) >> ""
+        mockFhir.encodeResourceToJson(_) >> ""
         TestApplicationContext.register(HapiFhir, mockFhir)
         TestApplicationContext.injectRegisteredImplementations()
 

From 269dd5c5f13fb40aedcf4ea758036147fb7b8e49 Mon Sep 17 00:00:00 2001
From: Jeff Crichlake <jcrichlake@gmail.com>
Date: Tue, 9 Jan 2024 11:20:57 -0500
Subject: [PATCH 3/3] Adding java docs

---
 .../etor/operationoutcomes/FhirMetadata.java                | 6 ++++++
 .../etor/operationoutcomes/HapiFhirMetadata.java            | 1 +
 2 files changed, 7 insertions(+)

diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/operationoutcomes/FhirMetadata.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/operationoutcomes/FhirMetadata.java
index 3c22cfb07..ebe3fb0e6 100644
--- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/operationoutcomes/FhirMetadata.java
+++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/operationoutcomes/FhirMetadata.java
@@ -1,5 +1,11 @@
 package gov.hhs.cdc.trustedintermediary.etor.operationoutcomes;
 
+/**
+ * Wrapper interface for our public facing metadata. Wraps an operation outcomes object to be
+ * returned to our ReST API
+ *
+ * @param <T>
+ */
 public interface FhirMetadata<T> {
 
     T getUnderlyingOutcome();
diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/operationoutcomes/HapiFhirMetadata.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/operationoutcomes/HapiFhirMetadata.java
index 57c6ea6d7..bf9fdf356 100644
--- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/operationoutcomes/HapiFhirMetadata.java
+++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/operationoutcomes/HapiFhirMetadata.java
@@ -2,6 +2,7 @@
 
 import org.hl7.fhir.r4.model.OperationOutcome;
 
+/** Implementation of our wrapper for public facing metadata. Returns an operation outcomes */
 public class HapiFhirMetadata implements FhirMetadata<OperationOutcome> {
 
     private final OperationOutcome innerOutcome;