No announcement yet.

Creating a batch file with header and footer segments

  • Filter
  • Time
  • Show
Clear All
new posts

  • Creating a batch file with header and footer segments

    I have searched the forums for help with creating a batch interface and it seems like none of the tips I have found has worked.

    I am trying to create a batch file from a live ORU interface. I am able to get all the messages into a single text file but I am having trouble getting a single set of headers and footers attached. Currently I am using two channels to try and accomplish this with no luck

    Channel 1. Performs all what I would call normal message transforms and writes to a single text file daily.

    Channel 2 picks up the file and tries to append a header and a footer and it writes out to second file.

    The problem I am having in channel 2 is it adds headers and footers for each message processed.

    I am attaching the code I am using special thanks to user Chuck Citrano for getting me this far in a post from 2012.
    // Let's put the file and batch segments in
    createSegment('BTS', msg);
    createSegment('FTS', msg);

    // We need to get a count of messages, so let's iterate through and count the 'MSH' segments
    var MSH_Counter = 0;

    for each (seg in msg..MSH) {

    // Let's delete any ZPS segments that were stuffed into the file by the batch writer. This was used to convey the
    // filename
    //for(var i=0; i<msg['ZPS'].length();i++){
    // delete msg['ZPS'][i];

    // Let's fill the new segments in with default values
    // FHS Segment
    msg['FHS']['FHS.1'] = '|';
    msg['FHS']['FHS.2'] = '^~\\&';
    msg['FHS']['FHS.3']['FHS.3.1'] = msg['MSH'][0]['MSH.3']['MSH.3.1'].toString();
    msg['FHS']['FHS.3']['FHS.3.2'] = msg['MSH'][0]['MSH.3']['MSH.3.2'].toString();
    msg['FHS']['FHS.4']['FHS.4.1'] = msg['MSH'][0]['MSH.4']['MSH.4.1'].toString();
    msg['FHS']['FHS.4']['FHS.4.2'] = msg['MSH'][0]['MSH.4']['MSH.4.2'].toString();
    msg['FHS']['FHS.4']['FHS.4.3'] = msg['MSH'][0]['MSH.4']['MSH.4.3'].toString();
    msg['FHS']['FHS.5']['FHS.5.1'] = msg['MSH'][0]['MSH.5']['MSH.5.1'].toString();
    msg['FHS']['FHS.6']['FHS.6.1'] = msg['MSH'][0]['MSH.6']['MSH.6.1'].toString();
    msg['FHS']['FHS.6']['FHS.6.2'] = msg['MSH'][0]['MSH.6']['MSH.6.2'].toString();
    msg['FHS']['FHS.7']['FHS.7.1'] = msg['MSH'][0]['MSH.7']['MSH.7.1'].toString();
    msg['FHS']['FHS.9']['FHS.9.1'] = msg['MSH'][0]['MSH.9']['MSH.9.1'].toString();
    msg['FHS']['FHS.9']['FHS.9.2'] = msg['MSH'][0]['MSH.9']['MSH.9.2'].toString();
    msg['FHS']['FHS.9']['FHS.9.3'] = msg['MSH'][0]['MSH.9']['MSH.9.3'].toString();
    msg['FHS']['FHS.10']['FHS.10.1'] = msg['MSH'][0]['MSH.10']['MSH.10.1'].toString();
    msg['FHS']['FHS.11']['FHS.11.1'] = msg['MSH'][0]['MSH.11']['MSH.11.1'].toString();

    // BHS Segment
    msg['BHS']['BHS.1'] = '|';
    msg['BHS']['BHS.2'] = '^~\\&';
    msg['BHS']['BHS.3']['BHS.3.1'] = msg['MSH'][0]['MSH.3']['MSH.3.1'].toString();
    msg['BHS']['BHS.3']['BHS.3.2'] = msg['MSH'][0]['MSH.3']['MSH.3.2'].toString();
    msg['BHS']['BHS.4']['BHS.4.1'] = msg['MSH'][0]['MSH.4']['MSH.4.1'].toString();
    msg['BHS']['BHS.4']['BHS.4.2'] = msg['MSH'][0]['MSH.4']['MSH.4.2'].toString();
    msg['BHS']['BHS.4']['BHS.4.3'] = msg['MSH'][0]['MSH.4']['MSH.4.3'].toString();
    msg['BHS']['BHS.5']['BHS.5.1'] = msg['MSH'][0]['MSH.5']['MSH.5.1'].toString();
    msg['BHS']['BHS.6']['BHS.6.1'] = msg['MSH'][0]['MSH.6']['MSH.6.1'].toString();
    msg['BHS']['BHS.6']['BHS.6.2'] = msg['MSH'][0]['MSH.6']['MSH.6.2'].toString();
    msg['BHS']['BHS.7']['BHS.7.1'] = msg['MSH'][0]['MSH.7']['MSH.7.1'].toString();
    msg['BHS']['BHS.9']['BHS.9.1'] = msg['MSH'][0]['MSH.9']['MSH.9.1'].toString();
    msg['BHS']['BHS.9']['BHS.9.2'] = msg['MSH'][0]['MSH.9']['MSH.9.2'].toString();
    msg['BHS']['BHS.9']['BHS.9.3'] = msg['MSH'][0]['MSH.9']['MSH.9.3'].toString();
    msg['BHS']['BHS.11']['BHS.11.1'] = msg['MSH'][0]['MSH.11']['MSH.11.1'].toString();

    // BTS Segment
    msg['BTS']['BTS.1']['BTS.1.1'] = MSH_Counter;
    msg['BTS']['BTS.2']['BTS.2.1'] = '';
    msg['BTS']['BTS.3']['BTS.3.1'] = '';

    // FTS Segment
    msg['FTS']['FTS.1']['FTS.1.1'] = 1;
    msg['FTS']['FTS.2']['FTS.2.1'] = 'Transfer to Complete';
    msg['FTS']['FTS.3']['FTS.3.1'] = '';

  • #2
    Don't use Process Batch on your second channel. You want the entire file to be one message for your code to work. You might run into performance issues if the files are too large.

    If you find they are taking too long to process, there are other ways to do it, but this is probably the easiest.

    Also, you don't need to iterate over the MSH segments to count them. You can do:
    var MSH_Counter = msg['MSH'].length();


    • #3
      You rock!
      I also kicking myself because I was one radio button away from solving this and I has spent hours trying to figure it out with code.