From 02e8af3bbf95d81203b4df9f91f659287197d759 Mon Sep 17 00:00:00 2001 From: chiaramapellimt Date: Mon, 11 May 2026 13:57:07 +0100 Subject: [PATCH] Changed timing of check from before to after message wrapping --- .../gp2gp/gpc/StructuredRecordMappingService.java | 12 +++++++----- .../gpc/StructuredRecordMappingServiceTest.java | 4 ++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/service/src/main/java/uk/nhs/adaptors/gp2gp/gpc/StructuredRecordMappingService.java b/service/src/main/java/uk/nhs/adaptors/gp2gp/gpc/StructuredRecordMappingService.java index aa794d8c38..730f311c73 100644 --- a/service/src/main/java/uk/nhs/adaptors/gp2gp/gpc/StructuredRecordMappingService.java +++ b/service/src/main/java/uk/nhs/adaptors/gp2gp/gpc/StructuredRecordMappingService.java @@ -152,16 +152,18 @@ public String mapStructuredRecordToEhrExtractXml(GetGpcStructuredTaskDefinition .mapBundleToEhrFhirExtractParams(structuredTaskDefinition, bundle); String ehrExtractContent = ehrExtractMapper.mapEhrExtractToXml(ehrExtractTemplateParameters); + ehrExtractStatusService.saveEhrExtractMessageId(structuredTaskDefinition.getConversationId(), + ehrExtractTemplateParameters.getEhrExtractId()); + + String wrappedMessage = outputMessageWrapperMapper.map(structuredTaskDefinition, ehrExtractContent); + try { - ehrExtractMapper.validateXmlAgainstSchema(ehrExtractContent); + ehrExtractMapper.validateXmlAgainstSchema(wrappedMessage); } catch (XmlSchemaValidationException e) { LOGGER.error("EHR Extract XML validation failed: {}", e.getMessage()); } - ehrExtractStatusService.saveEhrExtractMessageId(structuredTaskDefinition.getConversationId(), - ehrExtractTemplateParameters.getEhrExtractId()); - - return outputMessageWrapperMapper.map(structuredTaskDefinition, ehrExtractContent); + return wrappedMessage; } @SneakyThrows diff --git a/service/src/test/java/uk/nhs/adaptors/gp2gp/gpc/StructuredRecordMappingServiceTest.java b/service/src/test/java/uk/nhs/adaptors/gp2gp/gpc/StructuredRecordMappingServiceTest.java index a8a418bcf1..c53d3d6bd5 100644 --- a/service/src/test/java/uk/nhs/adaptors/gp2gp/gpc/StructuredRecordMappingServiceTest.java +++ b/service/src/test/java/uk/nhs/adaptors/gp2gp/gpc/StructuredRecordMappingServiceTest.java @@ -299,13 +299,13 @@ void When_XmlSchemaValidationFails_Expect_ErrorLoggedAndProcessingContinues() { .thenReturn(expectedHL7); doThrow(new XmlSchemaValidationException("Invalid XML", new RuntimeException("Invalid XML"))) - .when(ehrExtractMapper).validateXmlAgainstSchema(ehrExtractContent); + .when(ehrExtractMapper).validateXmlAgainstSchema(expectedHL7); var actualHL7 = structuredRecordMappingService.mapStructuredRecordToEhrExtractXml(structuredTaskDefinition, bundle); verify(ehrExtractMapper).mapBundleToEhrFhirExtractParams(structuredTaskDefinition, bundle); verify(ehrExtractMapper).mapEhrExtractToXml(ehrExtractTemplateParameters); - verify(ehrExtractMapper).validateXmlAgainstSchema(ehrExtractContent); + verify(ehrExtractMapper).validateXmlAgainstSchema(expectedHL7); verify(outputMessageWrapperMapper).map(structuredTaskDefinition, ehrExtractContent); verify(ehrExtractStatusService).saveEhrExtractMessageId(conversationId, ehrExtractId);