Announcement

Collapse

Mirth Connect 3.12.0 Released!

Mirth Connect 3.12.0 is now available as an appliance update and on our GitHub page. This release includes database performance improvements, improves visual HL7 representation, message pruning, keystore handling, PDF generation, community contributions, and fixes several security vulnerabilities. This release also contains many improvements to commercial extensions. See the release notes for the list of fixes and updates.

Download | See What's New | Upgrade Guide | Release Notes

For discussion on this release, see this thread.
See more
See less

Step by Step how to apply XSL to incoming HL7, etc

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Step by Step how to apply XSL to incoming HL7, etc

    I needed to apply XSL transformations to incoming HL7 data. NOTE: after using this, I realize I can't get Xalan to take non-XML input. This transformation does work with incoming XML however.

    I create an LLP listener.

    I added a destination file writer.

    I set the template to: ${message.transformedData}

    I clicked 'edit transformer'

    Click "Add New Step"

    Change the type to JavaScript

    Under the message templates tab, choose XML (or whichever format you wish to output) as the Outbound Message Template (DON'T FORGET THIS! I'd call this is a gotcha)

    Here is the code to load a stylesheet, apply it, and then save the results back to the message's transformedData member (mostly lifted from another post on this forum):

    Code:
    importPackage(Packages.javax.xml.transform);
    importPackage(Packages.javax.xml.transform.stream);
    // Create the transformer factory
    var tFactory = TransformerFactory.newInstance();
    
    // Load XSL file
    // XSL files are loaded based on the directory Mirth is running in
    logger.info('Message type is ' + messageObject.getType());
    var xslSource = new StreamSource(messageObject.getType()+".xsl");
    
    if (xslSource==null)
    	logger.error('error loading XSL');
    
    // Create a new transformer using this transformation
    var transformer = tFactory.newTransformer( xslSource );
    
    var bos = new java.io.ByteArrayOutputStream();
    
    // Create an inputstream using the raw message
    var msg_sbis = new java.io.StringBufferInputStream(messageObject.getRawData());
    
    // Apply the XSL to the message
    transformer.transform( new StreamSource(msg_sbis),new StreamResult( bos ));
    
    // Set transformedData to be the new document
    msg = new XML(bos.toString());
    Post edited by: fitek, at: 08/13/2008 14:43

  • #2
    Re:Step by Step how to apply XSL to incoming HL7,

    Great!

    It would be very helpful if you could document it as example in the wiki

    Comment

    Working...
    X