From 388bf0b0cde40750c3b523f4755d0ae4b89e395f Mon Sep 17 00:00:00 2001 From: halprin Date: Wed, 20 Dec 2023 10:40:28 -0700 Subject: [PATCH 1/8] 672: Initial class to orchestrate the calling of the history API and our metadata storage --- .../metadata/PartnerMetadataOrchestrator.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java new file mode 100644 index 000000000..8104a19af --- /dev/null +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java @@ -0,0 +1,23 @@ +package gov.hhs.cdc.trustedintermediary.etor.metadata; + +import gov.hhs.cdc.trustedintermediary.etor.orders.Order; + +public class PartnerMetadataOrchestrator { + + private static final PartnerMetadataOrchestrator INSTANCE = new PartnerMetadataOrchestrator(); + + public static PartnerMetadataOrchestrator getInstance() { + return INSTANCE; + } + + private PartnerMetadataOrchestrator() {} + + public void updateMetadataForReceivedOrder(String submissionId, Order order) {} + + public void updateMetadataForSentOrder( + String receivedSubmissionId, String sentSubmissionId, Order order) {} + + public PartnerMetadata getMetadata(String submissionId) { + return null; + } +} From a853ab7b0f2e457c8c57a9f9614e690708d72c87 Mon Sep 17 00:00:00 2001 From: halprin Date: Wed, 20 Dec 2023 10:52:31 -0700 Subject: [PATCH 2/8] 672: add comments to what we want the methods in the ParterMetadataOrchestrator to do --- .../metadata/PartnerMetadataOrchestrator.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java index 8104a19af..22b10f4d8 100644 --- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java @@ -12,12 +12,28 @@ public static PartnerMetadataOrchestrator getInstance() { private PartnerMetadataOrchestrator() {} - public void updateMetadataForReceivedOrder(String submissionId, Order order) {} + public void updateMetadataForReceivedOrder(String submissionId, Order order) { + // will call the RS history API given the submissionId (albeit, right now this won't work + // given the way RS works). + // from the history API response, extract the sender (organization + sender client), and + // time received. + // we will calculate the hash. + // then we call the metadata storage to save this stuff. + } public void updateMetadataForSentOrder( - String receivedSubmissionId, String sentSubmissionId, Order order) {} + String receivedSubmissionId, String sentSubmissionId, Order order) { + // call the metadata storage and add the sent order's submission ID to the existing metadata + // entry + } public PartnerMetadata getMetadata(String submissionId) { + // call the metadata storage to get the metadata. + // check if the receiver is filled out, and if it isn't, call the RS history API to get the + // receiver. + // if had to call the history API, extract the receiver and call the metadata storage to + // save the metadata with the receiver added. + // return the metadata. return null; } } From 4d4e1b2d7f33530922f807c71e155b2b8eed24c4 Mon Sep 17 00:00:00 2001 From: halprin Date: Wed, 20 Dec 2023 11:03:11 -0700 Subject: [PATCH 3/8] 672: Move the initial saving of metadata to the PartnerMetadataOrchestrator --- .../etor/EtorDomainRegistration.java | 3 +++ .../metadata/PartnerMetadataOrchestrator.java | 17 ++++++++++--- .../etor/orders/SendOrderUseCase.java | 24 +++++++------------ 3 files changed, 26 insertions(+), 18 deletions(-) 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 5b136bc4b..8b8ef4aef 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 @@ -13,6 +13,7 @@ import gov.hhs.cdc.trustedintermediary.etor.demographics.PatientDemographicsResponse; 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.metadata.PartnerMetadataStorage; import gov.hhs.cdc.trustedintermediary.etor.orders.Order; import gov.hhs.cdc.trustedintermediary.etor.orders.OrderController; @@ -75,6 +76,8 @@ public Map> domainRegistra ApplicationContext.register(OrderConverter.class, HapiOrderConverter.getInstance()); ApplicationContext.register(OrderController.class, OrderController.getInstance()); ApplicationContext.register(SendOrderUseCase.class, SendOrderUseCase.getInstance()); + ApplicationContext.register( + PartnerMetadataOrchestrator.class, PartnerMetadataOrchestrator.getInstance()); if (ApplicationContext.getEnvironment().equalsIgnoreCase("local")) { ApplicationContext.register(OrderSender.class, LocalFileOrderSender.getInstance()); diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java index 22b10f4d8..48f220fda 100644 --- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java @@ -1,33 +1,44 @@ package gov.hhs.cdc.trustedintermediary.etor.metadata; import gov.hhs.cdc.trustedintermediary.etor.orders.Order; +import java.time.Instant; +import javax.inject.Inject; public class PartnerMetadataOrchestrator { private static final PartnerMetadataOrchestrator INSTANCE = new PartnerMetadataOrchestrator(); + @Inject PartnerMetadataStorage partnerMetadataStorage; + public static PartnerMetadataOrchestrator getInstance() { return INSTANCE; } private PartnerMetadataOrchestrator() {} - public void updateMetadataForReceivedOrder(String submissionId, Order order) { + public void updateMetadataForReceivedOrder(String submissionId, Order order) + throws PartnerMetadataException { // will call the RS history API given the submissionId (albeit, right now this won't work // given the way RS works). // from the history API response, extract the sender (organization + sender client), and // time received. // we will calculate the hash. // then we call the metadata storage to save this stuff. + + PartnerMetadata partnerMetadata = + new PartnerMetadata( + submissionId, "senderName", "receiverName", Instant.now(), "abcd"); + partnerMetadataStorage.saveMetadata(partnerMetadata); } public void updateMetadataForSentOrder( - String receivedSubmissionId, String sentSubmissionId, Order order) { + String receivedSubmissionId, String sentSubmissionId, Order order) + throws PartnerMetadataException { // call the metadata storage and add the sent order's submission ID to the existing metadata // entry } - public PartnerMetadata getMetadata(String submissionId) { + public PartnerMetadata getMetadata(String submissionId) throws PartnerMetadataException { // call the metadata storage to get the metadata. // check if the receiver is filled out, and if it isn't, call the RS history API to get the // receiver. diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/orders/SendOrderUseCase.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/orders/SendOrderUseCase.java index 051741529..0603cfb11 100644 --- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/orders/SendOrderUseCase.java +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/orders/SendOrderUseCase.java @@ -1,12 +1,10 @@ package gov.hhs.cdc.trustedintermediary.etor.orders; import gov.hhs.cdc.trustedintermediary.etor.metadata.EtorMetadataStep; -import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadata; import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadataException; -import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadataStorage; +import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadataOrchestrator; import gov.hhs.cdc.trustedintermediary.wrappers.Logger; import gov.hhs.cdc.trustedintermediary.wrappers.MetricMetadata; -import java.time.Instant; import javax.inject.Inject; /** The overall logic to receive, convert to OML, and subsequently send a lab order. */ @@ -15,7 +13,7 @@ public class SendOrderUseCase { @Inject OrderConverter converter; @Inject OrderSender sender; @Inject MetricMetadata metadata; - @Inject PartnerMetadataStorage partnerMetadataStorage; + @Inject PartnerMetadataOrchestrator partnerMetadataOrchestrator; @Inject Logger logger; private SendOrderUseCase() {} @@ -27,11 +25,7 @@ public static SendOrderUseCase getInstance() { public void convertAndSend(final Order order, String submissionId) throws UnableToSendOrderException { - try { - savePartnerMetadata(submissionId); - } catch (PartnerMetadataException e) { - logger.logError("Unable to save metadata for submissionId " + submissionId, e); - } + savePartnerMetadata(submissionId, order); var omlOrder = converter.convertMetadataToOmlOrder(order); metadata.put(order.getFhirResourceId(), EtorMetadataStep.ORDER_CONVERTED_TO_OML); @@ -40,15 +34,15 @@ public void convertAndSend(final Order order, String submissionId) sender.sendOrder(omlOrder); } - private void savePartnerMetadata(String submissionId) throws PartnerMetadataException { + private void savePartnerMetadata(String submissionId, final Order order) { if (submissionId == null) { return; } - // TODO: still need to get metadata from the order: sender, receiver, timeReceived, hash - PartnerMetadata partnerMetadata = - new PartnerMetadata( - submissionId, "senderName", "receiverName", Instant.now(), "abcd"); - partnerMetadataStorage.saveMetadata(partnerMetadata); + try { + partnerMetadataOrchestrator.updateMetadataForReceivedOrder(submissionId, order); + } catch (PartnerMetadataException e) { + logger.logError("Unable to save metadata for submissionId " + submissionId, e); + } } } From 60e7a008bde0b385a478333c3d55215c91ad5c3e Mon Sep 17 00:00:00 2001 From: halprin Date: Wed, 20 Dec 2023 11:09:45 -0700 Subject: [PATCH 4/8] 672: Call the PartnerMetadataOrchestrator#updateMetadataForSentOrder after we send an order --- .../etor/orders/SendOrderUseCase.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/orders/SendOrderUseCase.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/orders/SendOrderUseCase.java index 0603cfb11..de1335616 100644 --- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/orders/SendOrderUseCase.java +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/orders/SendOrderUseCase.java @@ -25,16 +25,18 @@ public static SendOrderUseCase getInstance() { public void convertAndSend(final Order order, String submissionId) throws UnableToSendOrderException { - savePartnerMetadata(submissionId, order); + savePartnerMetadataForReceivedOrder(submissionId, order); var omlOrder = converter.convertMetadataToOmlOrder(order); metadata.put(order.getFhirResourceId(), EtorMetadataStep.ORDER_CONVERTED_TO_OML); omlOrder = converter.addContactSectionToPatientResource(omlOrder); metadata.put(order.getFhirResourceId(), EtorMetadataStep.CONTACT_SECTION_ADDED_TO_PATIENT); sender.sendOrder(omlOrder); + + saveSentOrderSubmissionId(submissionId, "DogCow", order); } - private void savePartnerMetadata(String submissionId, final Order order) { + private void savePartnerMetadataForReceivedOrder(String submissionId, final Order order) { if (submissionId == null) { return; } @@ -45,4 +47,23 @@ private void savePartnerMetadata(String submissionId, final Order order) { logger.logError("Unable to save metadata for submissionId " + submissionId, e); } } + + private void saveSentOrderSubmissionId( + String receivedSubmissionId, String sentSubmissionId, final Order order) { + if (sentSubmissionId == null || receivedSubmissionId == null) { + return; + } + + try { + partnerMetadataOrchestrator.updateMetadataForSentOrder( + receivedSubmissionId, sentSubmissionId, order); + } catch (PartnerMetadataException e) { + logger.logError( + "Unable to update metadata for received submissionId " + + receivedSubmissionId + + " and sent submissionId " + + sentSubmissionId, + e); + } + } } From 497d3ce8adfee4b7d625efc3a0bfd97d064d2818 Mon Sep 17 00:00:00 2001 From: halprin Date: Wed, 20 Dec 2023 11:15:08 -0700 Subject: [PATCH 5/8] 672: Change the handleMetadata request to call PartnerMetadataOrchestrator#getMetadata --- .../trustedintermediary/etor/EtorDomainRegistration.java | 5 +++-- .../etor/metadata/PartnerMetadataOrchestrator.java | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) 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 8b8ef4aef..07c3b8831 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 @@ -56,7 +56,7 @@ public class EtorDomainRegistration implements DomainConnector { @Inject SendOrderUseCase sendOrderUseCase; @Inject Logger logger; @Inject DomainResponseHelper domainResponseHelper; - @Inject PartnerMetadataStorage partnerMetadataStorage; + @Inject PartnerMetadataOrchestrator partnerMetadataOrchestrator; @Inject Formatter formatter; private final Map> endpoints = @@ -153,7 +153,8 @@ DomainResponse handleOrders(DomainRequest request) { DomainResponse handleMetadata(DomainRequest request) { try { String metadataId = request.getPathParams().get("id"); - Optional metadata = partnerMetadataStorage.readMetadata(metadataId); + Optional metadata = + partnerMetadataOrchestrator.getMetadata(metadataId); if (metadata.isEmpty()) { return domainResponseHelper.constructErrorResponse( diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java index 48f220fda..f6b21d7f0 100644 --- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java @@ -2,6 +2,7 @@ import gov.hhs.cdc.trustedintermediary.etor.orders.Order; import java.time.Instant; +import java.util.Optional; import javax.inject.Inject; public class PartnerMetadataOrchestrator { @@ -38,13 +39,14 @@ public void updateMetadataForSentOrder( // entry } - public PartnerMetadata getMetadata(String submissionId) throws PartnerMetadataException { + public Optional getMetadata(String submissionId) + throws PartnerMetadataException { // call the metadata storage to get the metadata. // check if the receiver is filled out, and if it isn't, call the RS history API to get the // receiver. // if had to call the history API, extract the receiver and call the metadata storage to // save the metadata with the receiver added. // return the metadata. - return null; + return partnerMetadataStorage.readMetadata(submissionId); } } From 9c8f50695f582890d1c8221c85700f5eef53be61 Mon Sep 17 00:00:00 2001 From: halprin Date: Wed, 20 Dec 2023 14:00:01 -0700 Subject: [PATCH 6/8] 672: Fix unit tests given the change to using the PartnerMetadataOrchestrator --- .../etor/EtorDomainRegistrationTest.groovy | 26 +++++++++---------- .../etor/orders/SendOrderUsecaseTest.groovy | 4 +-- 2 files changed, 15 insertions(+), 15 deletions(-) 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 3434e77b6..8157115cb 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 @@ -13,7 +13,7 @@ import gov.hhs.cdc.trustedintermediary.etor.demographics.PatientDemographicsCont import gov.hhs.cdc.trustedintermediary.etor.demographics.PatientDemographicsResponse import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadata import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadataException -import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadataStorage +import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadataOrchestrator import gov.hhs.cdc.trustedintermediary.etor.orders.Order import gov.hhs.cdc.trustedintermediary.etor.orders.OrderController import gov.hhs.cdc.trustedintermediary.etor.orders.OrderResponse @@ -321,9 +321,9 @@ class EtorDomainRegistrationTest extends Specification { def request = new DomainRequest() request.setPathParams(["id": "metadataId"]) - def mockPartnerMetadataStorage = Mock(PartnerMetadataStorage) - mockPartnerMetadataStorage.readMetadata(_ as String) >> Optional.ofNullable(new PartnerMetadata("metadataId", "sender", "receiver", Instant.parse("2023-12-04T18:51:48.941875Z"), "abcd")) - TestApplicationContext.register(PartnerMetadataStorage, mockPartnerMetadataStorage) + def mockPartnerMetadataOrchestrator = Mock(PartnerMetadataOrchestrator) + mockPartnerMetadataOrchestrator.getMetadata(_ as String) >> Optional.ofNullable(new PartnerMetadata("metadataId", "sender", "receiver", Instant.parse("2023-12-04T18:51:48.941875Z"), "abcd")) + TestApplicationContext.register(PartnerMetadataOrchestrator, mockPartnerMetadataOrchestrator) def mockResponseHelper = Mock(DomainResponseHelper) mockResponseHelper.constructOkResponse(_ as String) >> new DomainResponse(expectedStatusCode) @@ -350,9 +350,9 @@ class EtorDomainRegistrationTest extends Specification { def request = new DomainRequest() request.setPathParams(["id": "metadataId"]) - def mockPartnerMetadataStorage = Mock(PartnerMetadataStorage) - mockPartnerMetadataStorage.readMetadata(_ as String) >> Optional.empty() - TestApplicationContext.register(PartnerMetadataStorage, mockPartnerMetadataStorage) + def mockPartnerMetadataOrchestrator = Mock(PartnerMetadataOrchestrator) + mockPartnerMetadataOrchestrator.getMetadata(_ as String) >> Optional.empty() + TestApplicationContext.register(PartnerMetadataOrchestrator, mockPartnerMetadataOrchestrator) def mockResponseHelper = Mock(DomainResponseHelper) mockResponseHelper.constructErrorResponse(expectedStatusCode, _ as String) >> new DomainResponse(expectedStatusCode) @@ -378,9 +378,9 @@ class EtorDomainRegistrationTest extends Specification { def request = new DomainRequest() request.setPathParams(["id": "metadataId"]) - def mockPartnerMetadataStorage = Mock(PartnerMetadataStorage) - mockPartnerMetadataStorage.readMetadata(_ as String) >> { throw new PartnerMetadataException("DogCow", new Exception()) } - TestApplicationContext.register(PartnerMetadataStorage, mockPartnerMetadataStorage) + def mockPartnerMetadataOrchestrator = Mock(PartnerMetadataOrchestrator) + mockPartnerMetadataOrchestrator.getMetadata(_ as String) >> { throw new PartnerMetadataException("DogCow", new Exception()) } + TestApplicationContext.register(PartnerMetadataOrchestrator, mockPartnerMetadataOrchestrator) def mockResponseHelper = Mock(DomainResponseHelper) mockResponseHelper.constructErrorResponse(expectedStatusCode, _ as String) >> new DomainResponse(expectedStatusCode) @@ -406,9 +406,9 @@ class EtorDomainRegistrationTest extends Specification { def request = new DomainRequest() request.setPathParams(["id": "metadataId"]) - def mockPartnerMetadataStorage = Mock(PartnerMetadataStorage) - mockPartnerMetadataStorage.readMetadata(_ as String) >> Optional.ofNullable(new PartnerMetadata("metadataUniqueId", "sender", "receiver", Instant.parse("2023-12-04T18:51:48.941875Z"), "abcd")) - TestApplicationContext.register(PartnerMetadataStorage, mockPartnerMetadataStorage) + def mockPartnerMetadataOrchestrator = Mock(PartnerMetadataOrchestrator) + mockPartnerMetadataOrchestrator.getMetadata(_ as String) >> Optional.ofNullable(new PartnerMetadata("metadataUniqueId", "sender", "receiver", Instant.parse("2023-12-04T18:51:48.941875Z"), "abcd")) + TestApplicationContext.register(PartnerMetadataOrchestrator, mockPartnerMetadataOrchestrator) def mockFormatter = Mock(Formatter) mockFormatter.convertToJsonString(_ as PartnerMetadata) >> { throw new FormatterProcessingException("DogCow", new Exception()) } diff --git a/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/orders/SendOrderUsecaseTest.groovy b/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/orders/SendOrderUsecaseTest.groovy index 19d93bdc5..0580b6101 100644 --- a/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/orders/SendOrderUsecaseTest.groovy +++ b/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/orders/SendOrderUsecaseTest.groovy @@ -3,7 +3,7 @@ package gov.hhs.cdc.trustedintermediary.etor.orders import gov.hhs.cdc.trustedintermediary.OrderMock import gov.hhs.cdc.trustedintermediary.context.TestApplicationContext import gov.hhs.cdc.trustedintermediary.etor.metadata.EtorMetadataStep -import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadataStorage +import gov.hhs.cdc.trustedintermediary.etor.metadata.PartnerMetadataOrchestrator import gov.hhs.cdc.trustedintermediary.wrappers.MetricMetadata import spock.lang.Specification @@ -14,7 +14,7 @@ class SendOrderUsecaseTest extends Specification { TestApplicationContext.init() TestApplicationContext.register(SendOrderUseCase, SendOrderUseCase.getInstance()) TestApplicationContext.register(MetricMetadata, Mock(MetricMetadata)) - TestApplicationContext.register(PartnerMetadataStorage, Mock(PartnerMetadataStorage)) + TestApplicationContext.register(PartnerMetadataOrchestrator, Mock(PartnerMetadataOrchestrator)) } def "send sends successfully"() { From 44b601631252aac6d5e9c2abec15b7590a20f28b Mon Sep 17 00:00:00 2001 From: halprin Date: Wed, 20 Dec 2023 14:49:17 -0700 Subject: [PATCH 7/8] 672: added some clarification to our TODOs --- .../etor/metadata/PartnerMetadataOrchestrator.java | 2 ++ .../trustedintermediary/etor/orders/SendOrderUseCase.java | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java index f6b21d7f0..b1fb9dabf 100644 --- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java @@ -37,6 +37,8 @@ public void updateMetadataForSentOrder( throws PartnerMetadataException { // call the metadata storage and add the sent order's submission ID to the existing metadata // entry + // PartnerMetadata may need to be updated to store both the received order's submission ID + // _and_ the sent order's submission ID. } public Optional getMetadata(String submissionId) diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/orders/SendOrderUseCase.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/orders/SendOrderUseCase.java index de1335616..23ddef588 100644 --- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/orders/SendOrderUseCase.java +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/orders/SendOrderUseCase.java @@ -33,7 +33,10 @@ public void convertAndSend(final Order order, String submissionId) metadata.put(order.getFhirResourceId(), EtorMetadataStep.CONTACT_SECTION_ADDED_TO_PATIENT); sender.sendOrder(omlOrder); - saveSentOrderSubmissionId(submissionId, "DogCow", order); + saveSentOrderSubmissionId( + submissionId, + "TBD, need to be filled in from the sender.sendOrder(omlOrder) call", + order); } private void savePartnerMetadataForReceivedOrder(String submissionId, final Order order) { From baccd599e836b02256216db1def903ee976b0e7b Mon Sep 17 00:00:00 2001 From: halprin Date: Wed, 20 Dec 2023 15:51:48 -0700 Subject: [PATCH 8/8] 672: Add JavaDocs to PartnerMetadataOrchestrator --- .../etor/metadata/PartnerMetadataOrchestrator.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java index b1fb9dabf..f4657219c 100644 --- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java @@ -5,6 +5,11 @@ import java.util.Optional; import javax.inject.Inject; +/** + * The PartnerMetadataOrchestrator class is responsible for updating and retrieving partner-facing + * metadata. It interacts with the metadata storage and the history API to create, update, and store + * metadata. + */ public class PartnerMetadataOrchestrator { private static final PartnerMetadataOrchestrator INSTANCE = new PartnerMetadataOrchestrator();