From 9109b075b8073a7926e555466200202abe02cc85 Mon Sep 17 00:00:00 2001 From: ORybak5 <12736698+ORybak5@users.noreply.github.com> Date: Wed, 9 Sep 2026 11:25:38 +0100 Subject: [PATCH 1/3] make skeleton processing to support RCMR_IN030000UK07 message types --- .../service/SkeletonProcessingService.java | 12 +++++++----- .../task/EhrExtractMessageHandlerTest.java | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/gp2gp-translator/src/main/java/uk/nhs/adaptors/pss/translator/service/SkeletonProcessingService.java b/gp2gp-translator/src/main/java/uk/nhs/adaptors/pss/translator/service/SkeletonProcessingService.java index deabc99d7..84157ef50 100644 --- a/gp2gp-translator/src/main/java/uk/nhs/adaptors/pss/translator/service/SkeletonProcessingService.java +++ b/gp2gp-translator/src/main/java/uk/nhs/adaptors/pss/translator/service/SkeletonProcessingService.java @@ -28,12 +28,12 @@ public class SkeletonProcessingService { public InboundMessage updateInboundMessageWithSkeleton(PatientAttachmentLog skeletonLog, - InboundMessage inboundMessage, String conversationId) - throws SAXException, TransformerException { + InboundMessage inboundMessage, + String conversationId) + throws SAXException, TransformerException { // merge skeleton message into original payload - var skeletonAttachment = attachmentHandlerService.getAttachment( - skeletonLog.getFilename(), conversationId); + var skeletonAttachment = attachmentHandlerService.getAttachment(skeletonLog.getFilename(), conversationId); var skeletonFileAsString = new String(skeletonAttachment, StandardCharsets.UTF_8); try { @@ -72,7 +72,9 @@ private String normalizeSkeletonXml(String skeletonFileAsString) { } private boolean isEntireRcmrSkeleton(String normalizedSkeleton) { - return normalizedSkeleton != null && normalizedSkeleton.startsWith(" patientAttachmentLogCaptor; + @Test + public void When_SkeletonStartsWithEhrExtractVersion07_Expect_RecogniseAsWholeMessageSkeleton() throws Exception { + var service = new SkeletonProcessingService( + Mockito.mock(AttachmentHandlerService.class), + Mockito.mock(XmlParseUtilService.class), + Mockito.mock(XPathService.class) + ); + + var method = SkeletonProcessingService.class.getDeclaredMethod("isEntireRcmrSkeleton", String.class); + method.setAccessible(true); + + var result = (boolean) method.invoke(service, " Date: Wed, 9 Sep 2026 12:03:02 +0100 Subject: [PATCH 2/3] pitest tests --- .../service/SkeletonProcessingServiceTests.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/gp2gp-translator/src/test/java/uk/nhs/adaptors/pss/translator/service/SkeletonProcessingServiceTests.java b/gp2gp-translator/src/test/java/uk/nhs/adaptors/pss/translator/service/SkeletonProcessingServiceTests.java index 6e7a1a45a..3a2de9e50 100644 --- a/gp2gp-translator/src/test/java/uk/nhs/adaptors/pss/translator/service/SkeletonProcessingServiceTests.java +++ b/gp2gp-translator/src/test/java/uk/nhs/adaptors/pss/translator/service/SkeletonProcessingServiceTests.java @@ -132,6 +132,22 @@ void When_UpdateInboundMessageAttachmentHandlerServiceThrowsIllegalArgumentExcep inboundMessage, migrationRequest.getConversationId())); } + @Test + void When_UpdateInboundMessageWithSkeleton_Expect_AttachmentIsFetchedByFilenameAndConversationId() + throws TransformerException, SAXException { + var inboundMessage = new InboundMessage(); + var attachmentLog = createSkeletonPatientAttachmentLog(); + + inboundMessage.setPayload(readInboundMessagePayloadFromFile()); + inboundMessage.setEbXML(readInboundMessageEbXmlFromFile()); + + prepareRCMRMocks(inboundMessage); + + skeletonProcessingService.updateInboundMessageWithSkeleton(attachmentLog, inboundMessage, CONVERSATION_ID); + + verify(attachmentHandlerService).getAttachment(FILENAME, CONVERSATION_ID); + } + @Test void When_HappyPathWithSkeletonAsRCMRMessage_Expect_ThrowNoErrors() throws TransformerException, SAXException { From 9677486aedf00ded58bbec274b4de07ecaad26a3 Mon Sep 17 00:00:00 2001 From: ORybak5 <12736698+ORybak5@users.noreply.github.com> Date: Wed, 9 Sep 2026 14:18:16 +0100 Subject: [PATCH 3/3] changelog update --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 206def87f..ec0fc64bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +### Fixed + +* Updated skeleton processing to recognise `RCMR_IN030000UK07` as a valid full-message skeleton type in addition to + `RCMR_IN030000UK06`, ensuring the service correctly replaces the inbound payload when a UK07 skeleton is received. + * Add Spring retry to MHS queue consumer to facilitate a more reasonable retry delay. ## [3.3.2] - 2026-08-19