package ans.samples.app; /** * * Copyright (c) 2000-2002 AdvanceNet Health Solutions, Inc. All Rights Reserved. * * THIS SOFTWARE IS THE CONFIDENTIAL AND PROPRIETARY INFORMATION OF * ADVANCENET SOLUTIONS, INC. ("CONFIDENTIAL INFORMATION"). * AND IS PROTECTED BY U.S. COPYRIGHT LAW. ANY USER SHALL NOT DISCLOSE * SUCH CONFIDENTIAL INFORMATION AND SHALL USE THIS SOFTWARE IN * ACCORDANCE WITH THE TERMS OF ANY DISCLOSURES AND/OR LICENSE AGREEMENTS * ENTERED INTO WITH ADVANCENET. FAILURE TO ABIDE IS PUNISHABLE BY A COURT OF * LAW. * **/ import ans.client.nongui.ANSClient; import ans.com.message.*; import ans.com.descriptors.segment.*; import ans.com.exception.ANSException; /** * ANSGetMessageTest * *
A short, simple example program for checking a mailbox at ePostRx. * This message is used by the pharmacy or prescriber to request mail from an * ePostRx mailbox. It is used repeatedly until the response NO MORE MAIL(002) * is returned from the mailbox via the STATUS message. * * For a complete understanding of the syntax rules and segment interchange * structure, please refer to the NCPDP SCRIPT Standard Implementation Guide. *
=================================================================
*
Modified last by:
*
* 8/30/01 John Strecker Initial Creation.
*
================================================================= * * @author John Strecker * @version 1.0 */ public class ANSGetMessageTest { public static void main(String []args) throws ANSException { System.out.println("Running ANSGetMessageTest sample"); /*********************************************************** * Make sure you modify the path for the ANSClientProps file * to reflect your environment ***********************************************************/ String ansHome = "c:\\ans"; ANSClient c = new ANSClient(ansHome); // loop until we quit loop looking for mail messages while (true) { // create message object with no segment updates ANSGetMessage get = new ANSGetMessage(); //create control header object and set fields accordingly UIB uib = new UIB(); uib.setLevelOneRecipientId("4162jss"); // set recipient as myself get. setInterchangeControlHeader(uib); // update UIB segment of GET message // send GetMessage request to ePostRx to search mailbox for any mail ANSClientResponse r = c.send(get); System.out.println("EDI Response MESSAGE " + r.getEDIResponse()); // check response from ePostRx if (r.getResponseCode() >= r.SUCCESS) { // check message response Id to cast response object appropriately. A STATUS // response indicates NO MORE MAIL in mailbox. But, this checks ensure this // and we break loop. if (r.getResponseMessageId().equals(r.STATUS)){ // cast STATUS message to get at message object ANSStatusMessage ans = (ANSStatusMessage)r.getMessageResponseObject(); System.out.println("Got STS from mailbox ->" + ans.getXMLMessage()); // get Status segment object of message STS sts = ans.getMessageStatus(); // look at STS segment status type field for code "002"-no mail to be delivered. System.out.println("STS status->" + sts.getStatusType()); System.out.println("STS status message->" + sts.getFreeText()); //break loop-mailbox empty break; }else if (r.getResponseMessageId().equals(r.NEWRX)){ // Code casts and extract new rx info from message as string // continue to send another getMessage until STATUS is receieved ANSNewRxMessage ans = (ANSNewRxMessage)r.getMessageResponseObject(); System.out.println("Got NEWRX from mailbox ->" + ans.getXMLMessage()); }else if (r.getResponseMessageId().equals(r.REFREQ)){ // Code casts and extract refill request info from message as string // continue to send another getMessage until STATUS is receieved ANSRefillRequestMessage ans = (ANSRefillRequestMessage)r.getMessageResponseObject(); System.out.println("Got REFREQ from mailbox ->" + ans.getXMLMessage()); } else if (r.getResponseMessageId().equals(r.REFRES)){ // Code casts and extract refill response from message as string // continue to send another getMessage until STATUS is receieved ANSRefillResponseMessage ans = (ANSRefillResponseMessage)r.getMessageResponseObject(); System.out.println("Got REFRES from mailbox ->" + ans.getXMLMessage()); } else if (r.getResponseMessageId().equals(r.CHGRES)){ // Code casts and extract Rx change response message as string // continue to send another getMessage until STATUS is receieved ANSChangeResponseMessage ans = (ANSChangeResponseMessage)r.getMessageResponseObject(); System.out.println("Got CHGRES from mailbox ->" + ans.getXMLMessage()); } else if (r.getResponseMessageId().equals(r.VERIFY)){ // Code casts and extract verify response from message as string // continue to send another getMessage until STATUS is receieved ANSVerifyMessage ans = (ANSVerifyMessage)r.getMessageResponseObject(); System.out.println("Got VERIFY from mailbox ->" + ans.getXMLMessage()); } else if (r.getResponseMessageId().equals(r.CANRX)){ // Code casts and extract cancel Rx message as string // continue to send another getMessage until STATUS is receieved ANSCancelRxMessage ans = (ANSCancelRxMessage)r.getMessageResponseObject(); System.out.println("Got CANRX from mailbox ->" + ans.getXMLMessage()); } else if (r.getResponseMessageId().equals(r.RXCHG)){ // Code casts and extract Rx change message as String // continue to send another getMessage until STATUS is receieved ANSRxChangeMessage ans = (ANSRxChangeMessage)r.getMessageResponseObject(); System.out.println("Got RXCHG from mailbox ->" + ans.getXMLMessage()); } else if (r.getResponseMessageId().equals(r.RXFILL)){ // Code casts and extracts Rx fill status message as String // continue to send another getMessage until STATUS is receieved ANSRxFillMessage ans = (ANSRxFillMessage)r.getMessageResponseObject(); System.out.println("Got RXFILL from mailbox ->" + ans.getXMLMessage()); } else if (r.getResponseMessageId().equals(r.INVREQ)){ // !!!NOTE: This is a ANS specific message!!! // Code casts and extracts InventoryRequest message as String // continue to send another getMessage until STATUS is receieved ANSInventoryRequestMessage ans = (ANSInventoryRequestMessage)r.getMessageResponseObject(); System.out.println("Got InventoryRequest from mailbox ->" + ans.getXMLMessage()); } // message sent, but rejected by ePostRx for whatever reason }else if (r.getResponseCode() == r.FAILURE) { // FAILURES always assume ERROR object is availbale. No need to check cast. // cast ERROR message to get at message object ANSErrorMessage ans = (ANSErrorMessage)r.getMessageResponseObject(); // get Status segment of message STS sts = ans.getMessageStatus(); // look at STS segment status type field for reject code indicating error. System.out.println("Error Response reject code-> " + sts.getStatusType()); System.out.println("Error Response reject message-> " + sts.getFreeText()); //OR you can just look at the response object for these fields as well, like: System.out.println("Error Response reject code-> " + r.getRejectCode()); System.out.println("Error Response reject message-> " + r.getRejectMessage()); System.out.println("Error Log " + r.getResponseLog()); break; // fatal error will NOT create a message object to cast because error is of unkown origin // and may have failed on the client. }else if (r.getResponseCode() == r.FATAL_ERROR) { // Just look at response Log to get general error description and have your code // handle accordingly System.out.println("Error Log-> " + r.getResponseLog()); break; }// endif } // end while }// end main }// end class