From 777713f120c2be9dc7e35ea0144afb210bede42a Mon Sep 17 00:00:00 2001 From: vanitha1822 Date: Tue, 6 Oct 2026 21:19:00 +0530 Subject: [PATCH] fix: update the file extension --- .../DiagnosticDocumentIngestService.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/DiagnosticDocumentIngestService.java b/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/DiagnosticDocumentIngestService.java index 81fa0acf..d04d841f 100644 --- a/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/DiagnosticDocumentIngestService.java +++ b/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/DiagnosticDocumentIngestService.java @@ -35,6 +35,7 @@ public class DiagnosticDocumentIngestService { private final Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); private static final Gson GSON = new Gson(); + private static final String ENCRYPTED_FILE_SUFFIX = ".enc"; @Value("${diagnostic.documents.s3.bucket}") private String bucket; @@ -90,7 +91,7 @@ private Map ingestOne(Map item) { return ack; } String s3Key = vanId + "/" + beneficiaryId + "/" + orderType + "/" + documentType + "/" - + storedFileName; + + objectFileName(storedFileName, (String) item.get("fileExtension")); String contentType = (String) item.get("contentType"); s3Client.putObject( @@ -111,6 +112,18 @@ private Map ingestOne(Map item) { return ack; } + /*** + * @purpose The van stores files encrypted as ".enc", but S3 holds the decrypted + * content - so the object is named with the real extension the van derived from + * its content type (e.g. CAD.enc -> CAD.pdf), not the misleading ".enc". + */ + private static String objectFileName(String storedFileName, String fileExtension) { + String baseName = storedFileName.endsWith(ENCRYPTED_FILE_SUFFIX) + ? storedFileName.substring(0, storedFileName.length() - ENCRYPTED_FILE_SUFFIX.length()) + : storedFileName; + return fileExtension != null && !fileExtension.isEmpty() ? baseName + "." + fileExtension : baseName; + } + private static Long asLong(Object value) { return value == null ? null : ((Number) value).longValue(); }