Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PSSHRQ2

PSSHRQ2.m

Go to the documentation of this file.
  1. PSSHRQ2 ;WOIFO/AV,TS - Makes a request to PEPS and returns as Global ;09/20/07
  1. ;;1.0;PHARMACY DATA MANAGEMENT;**136,163,168,160**;9/30/97;Build 76
  1. ;
  1. ; @authors - Alex Vazquez, Tim Sabat
  1. ; @date - September 19, 2007
  1. ; @version - 1.0
  1. ;
  1. QUIT
  1. ;;
  1. IN(PSSBASE) ;
  1. ; @DESC Handles request/response to PEPS
  1. ;
  1. ; @RETURNS Nothing. Value stored in output global.
  1. ;
  1. NEW PSS,PSSRESLT,PSSDOC,PSSXML,FDBFLG,PSSRBASE,PSSRBASX,PSSHRTMX,PSSHRTRT
  1. ; Cleanup output global
  1. ; KILL ^TMP($JOB,PSSBASE,"OUT") ; PO: commented as requested by Stan Brown on 6/4/09
  1. ;
  1. ; save "IN" nodes
  1. S PSSHRTMX=0
  1. K ^TMP($J,"SAVE","IN")
  1. M ^TMP($J,"SAVE","IN")=^TMP($J,PSSBASE,"IN") S PSSRBASE=PSSBASE
  1. ;
  1. ;Check FDB status if an update is occurring
  1. S FDBFLG=$$CHKSTAT^PSSDSFDB()
  1. ;If FDB update set global and quit
  1. I FDBFLG S ^TMP($J,PSSBASE,"OUT",0)=FDBFLG GOTO END ;QUIT
  1. ;
  1. ; Validate input global
  1. SET PSS("validationResult")=$$DRIVER^PSSHRVAL(PSSBASE)
  1. IF PSS("validationResult")=0 DO
  1. . ; Check if data written to global, set to 1 if data exist
  1. . IF $DATA(^TMP($JOB,PSSBASE,"OUT")) SET ^TMP($JOB,PSSBASE,"OUT",0)=1
  1. . ; If no data in output global , set to 0
  1. . IF '$DATA(^TMP($JOB,PSSBASE,"OUT")) SET ^TMP($JOB,PSSBASE,"OUT",0)=0
  1. . QUIT
  1. ; End call if no call to make
  1. IF PSS("validationResult")=0 GOTO END ;QUIT
  1. ;
  1. ; Create XML request
  1. SET PSSXML=$$BLDPREQ^PSSHREQ(PSSBASE)
  1. ; Send XML request to PEPS, receive handle to XML in return
  1. ;
  1. RETRY ;Retry entry point if first connection attempt fails
  1. SET PSSRESLT=$$PEPSPOST^PSSHTTP(.PSSDOC,PSSXML)
  1. ;
  1. ; If request unsuccessful go straight to error handling
  1. IF +PSSRESLT=0 DO ALTERROR^PSSHRQ2O(PSSBASE)
  1. ;
  1. ; If request is successful parse response
  1. ; and put in results global object. Also set the last successful run time.
  1. IF +PSSRESLT>0 DO OUT^PSSHRQ2O(PSSDOC,PSSBASE),SLASTRUN^PSSHRIT($$NOW^XLFDT())
  1. ;
  1. I 'PSSHRTMX S PSSHRTRT=$P($G(^TMP($J,PSSRBASE,"OUT",0)),"^") I PSSHRTRT'=0,PSSHRTRT'=1 K ^TMP($J,PSSRBASE,"OUT",0) D SHG G RETRY
  1. ;
  1. END ; re-store "IN" nodes
  1. M ^TMP($J,PSSBASE,"IN")=^TMP($J,"SAVE","IN")
  1. K ^TMP($J,"SAVE","IN")
  1. S PSSRBASX=$P($G(^TMP($J,PSSRBASE,"OUT",0)),"^") I PSSRBASX'=-1,PSSRBASX'=0,PSSRBASX'=1 D
  1. .K ^TMP($J,PSSRBASE,"OUT")
  1. .S ^TMP($J,PSSRBASE,"OUT",0)="-1^An unexpected error has occurred."
  1. I $P($G(^TMP($J,PSSRBASE,"OUT",0)),"^")'=-1 D CLEXP^PSSHRQ2O
  1. QUIT
  1. ;;
  1. ;
  1. SHG ;Hang before retry
  1. S PSSHRTMX=1
  1. I $E(PSSRBASE,1,4)'="PING"!($G(PSSMCHK)="CHECK") H 3 Q
  1. H 30
  1. Q