Skip to content

Instantly share code, notes, and snippets.

@molsches
Created February 1, 2018 19:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save molsches/2f64e2c46289f0ad682a41dd2a63918d to your computer and use it in GitHub Desktop.
Save molsches/2f64e2c46289f0ad682a41dd2a63918d to your computer and use it in GitHub Desktop.
S3 writer
//This is a javascript writer segment
// File to send
var file = new Packages.java.io.File.createTempFile("s3-hl7", ".json");
var bw = new Packages.java.io.BufferedWriter(new Packages.java.io.FileWriter(file));
//'object' is just whatever you have in the channelMap that you want to push to S3. Might be just the raw message or the transformed message.
bw.write($('object'));
bw.close();
// Set the Key Name
var json = JSON.parse($('object'));
//We transform most of our HL7 messages to JSON. This is just pulling data out of it to organize it by message type.
var messageType = json.content.MSH.messageType;
var messageEvent = json.content.MSH.messageEvent;
var datetime = new String(DateUtil.getCurrentDate("yyyyMMddHHmmss.SSS"));
var fileName = messageType +"^"+ messageEvent + "_" + datetime +".json";
var keyName = "BulkQueue/"+ messageType +"/"+ messageEvent + "/" + fileName;
// Set up the Request
var bucketName = "YourBucketName";
var profCredentials = new Packages.com.amazonaws.auth.EnvironmentVariableCredentialsProvider();
var s3client = new Packages.com.amazonaws.services.s3.AmazonS3Client(profCredentials);
var putRequest = new Packages.com.amazonaws.services.s3.model.PutObjectRequest(bucketName, keyName, file);
// Server-Side Encryption
var objectMetadata = new Packages.com.amazonaws.services.s3.model.ObjectMetadata();
objectMetadata.setSSEAlgorithm(Packages.com.amazonaws.services.s3.model.ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
putRequest.setMetadata(objectMetadata);
// Send Request
s3client.putObject(putRequest);
file.delete();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment