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

VENPCCM1.m

Go to the documentation of this file.
  1. VENPCCM1 ; IHS/OIT/GIS - MANAGE SYSTEM SYNCHRONIZATION ;
  1. ;;2.6;PCC+;;NOV 12, 2007
  1. ;
  1. ; 2.5 HEADER FILE SYNC NO LONGER REQUIRED
  1. ;
  1. PG ; EP-PRINT GROUP SYNCHRONIZATION
  1. N IP,IPA,SOCK
  1. I '$$VAR Q
  1. K ^TMP("VEN MSG") S ^TMP("VEN SYNC",$J)="PRINT_GRP_SYNC"
  1. I $$RUN D PSYNC(IP,IPA)
  1. Q
  1. ;
  1. TEMPLATE ; EP-TEMPLATE SYNCHRONIZATION
  1. N IP,IPA,SOCK
  1. I '$$VAR Q
  1. K ^TMP("VEN MSG") S ^TMP("VEN SYNC",$J)="TEMPLATE_SYNC"
  1. I $$RUN D TSYNC^VENPCCM2(IP,IPA)
  1. Q
  1. ;
  1. N CFIGIEN,PATH,POP,HF,RSTG
  1. S CFIGIEN=$$CFG^VENPCCU
  1. S PATH=$G(^VEN(7.5,CFIGIEN,2))
  1. I PATH="" W !,"Unable to find the Path to the header files on the RPMS Server!" Q
  1. F HF="efheader.txt","25header.txt","hsheader.txt" D
  1. . I $$FIND^VENPCCP(PATH,HF) W !,"Header file ",HF," has been validated" Q
  1. . W !,"Header file '",HF,"'can not be located in ",PATH
  1. . Q
  1. Q ; HEADER FILE COMPARISON NO LONGER REQUIRED
  1. W !!,"Checking encounter form header files....."
  1. D HDR("ef_header.txt","efheader.txt")
  1. W !!,"Checking health summary header file......."
  1. D HDR("hs_header.txt","hsheader.txt")
  1. Q
  1. ;
  1. HDR(X,Y) ; EP-COMPARE HEADER FILES
  1. ; DEAD CODE
  1. N IP,IPA,SOCK,PHDR
  1. I '$$VAR Q
  1. S X="c:\program files\ilc\ilc forms print service\templates\"_X
  1. K ^TMP("VEN MSG") S ^TMP("VEN SYNC",$J)="FILE_SEND"_U_X
  1. S PHDR=$P(X,"\",$L(X,"\"))
  1. I $$RUN D HDR^VENPCCM2(IP,IPA,PHDR,Y)
  1. Q
  1. ;
  1. VAR() ; EP-CREATE LOCAL VARIABLES
  1. N CFIGIEN
  1. S CFIGIEN=$$CFG^VENPCCU I 'CFIGIEN Q 0
  1. S IP=$P($G(^VEN(7.5,CFIGIEN,11)),U) I IP="" Q 0
  1. S IPA=$P($G(^VEN(7.5,CFIGIEN,11)),U,2) I IPA="" S IPA=IP
  1. QQ ; S (IP,IPA)="161.223.80.111" ; CROW TEST
  1. S SOCK=$P($G(^VEN(7.5,CFIGIEN,11)),U,3) I 'SOCK Q 0
  1. Q 1
  1. ;
  1. RUN() ; EP-REQUEST SPECIAL PRINT SERVICE FUNCTIONS
  1. N I,START,%,A,B,OUT S OUT=0
  1. I '$D(^TMP("VEN TASK")) S START=1 X "J"_" "_U_"VENPCCP" ; START THE PRINT DEAMON IF IT IS NOT RUNNING
  1. W !!,"Accessing information..."
  1. F I=1:1:99 Q:$D(^TMP("VEN MSG",$J,"OK")) H 1 W "."
  1. I '$D(^TMP("VEN MSG",$J,"OK")) W !,"Unable to get required information from the Print Server(s). Request terminated!" G FIN
  1. S OUT=1
  1. I $G(^TMP("VEN MSG",$J,"OK")) S %=^("OK"),A=+%,B=$P(%,U,2) W !,"Unable to get required information from Print Server #",A," (",B,")"
  1. FIN I $G(START) K ^TMP("VEN TASK") ; STOP THE PRINT DEAMON IF IT WASN'T RUNNING BEFORE THIS REQUEST
  1. K ^TMP("VEN MSG")
  1. Q OUT
  1. ;
  1. SYNC ; EP-START SPECIAL PRINT SERVICE FUNCTIONS ; RUNS IN BACKGROUND
  1. N MSG,J,IP,IPA,SOCK,FUNC,COMP,POP,TMP,PSN,%,GBL
  1. I '$$VAR Q
  1. S J=$O(^TMP("VEN SYNC",0)) I 'J Q
  1. S MSG=^TMP("VEN SYNC",J) K ^(J)
  1. SMSG ; EP-ANALYZE SYNC MESSAGE
  1. I MSG="PRINT_GRP_SYNC" S FUNC="VEN PSYNC"
  1. I MSG="TEMPLATE_SYNC" S FUNC="VEN TSYNC"
  1. I $P(MSG,U)="FILE_SEND" S FUNC="VEN FSYNC"
  1. I $P(MSG,U)="FILE_GET" S %="FILE_SEND"_U_$P(MSG,U,2) D GET($P(MSG,U,3),$P(MSG,U,4),%,("^TMP(""VEN GETFILE"","_J_")")) Q
  1. I $P(MSG,U)="TEMP_GET" D GET($P(MSG,U,2),$P(MSG,U,3),"TEMPLATE_SYNC",("^TMP(""VEN GETTEMP"","_J_")")) Q
  1. I $P(MSG,U)="PG_GET" D GET($P(MSG,U,2),$P(MSG,U,3),"PRINT_GRP_SYNC",("^TMP(""VEN GETPG"","_J_")")) Q
  1. I '$L($G(FUNC)) Q
  1. F PSN=1,2 D I IP=IPA Q
  1. . S TMP="^TMP("""_FUNC_""","_J_","_PSN_")" K @TMP
  1. . S %=$S(PSN=1:IP,1:IPA)
  1. . D GET(%,SOCK,MSG,TMP)
  1. . Q
  1. S TMP="^TMP("""_FUNC_""","_J_")",GBL="^TMP(""VEN MSG"","_J_",""OK"")" K @GBL
  1. I '$D(@TMP@(1)),'$D(^(2)) Q
  1. I IP'=IPA,'$D(@TMP@(2)) S @GBL=2 Q
  1. I '$D(@TMP@(1)) S @GBL=1 Q
  1. S @GBL=""
  1. Q
  1. ;
  1. GET(IP,SOCK,MSG,TMP) ; EP-GET DATA FROM PRINT SERVER AND STORE IT IN TMP
  1. N ACK,POP,LEN,TOT,BYTES,CACHE
  1. S (TOT,BYTES)=0
  1. S CACHE=($$VEN^VENPCCU=2)
  1. S POP=$$OTCP^VENPCCP(IP,SOCK) I POP S @TMP@(0)="Unable to access the print server" Q
  1. W MSG W:CACHE !
  1. R ACK:30 E S @TMP@(0)="Print service does not respond!" Q
  1. I ACK=-8 S @TMP@(0)="Unable to locate this file!" D CTCP^VENPCCP Q
  1. I ACK'?1"START^"1.N S @TMP@(0)="Print service unable to respond to this command!" D CTCP^VENPCCP Q
  1. S LEN=$P(ACK,U,2) I 'LEN S @TMP@(0)="Print Service error!" D CTCP^VENPCCP Q
  1. F W 1 W:CACHE ! R ACK:30 S:'$T ACK="STOP" Q:ACK="STOP" S TOT=TOT+1,@TMP@(TOT)=$E(ACK,1,250),%=$E(ACK,251,505),BYTES=BYTES+$L(ACK) I $L(%) S TOT=TOT+1,@TMP@(TOT)=%
  1. I LEN'=BYTES W -1 W:CACHE ! R ACK:2 S @TMP@(0)="Print Service transmission error. Try again soon!" D CTCP^VENPCCP Q
  1. E K ACK W 0 W:CACHE ! R ACK:2 S @TMP@(0)=""
  1. D CTCP^VENPCCP
  1. Q
  1. ;
  1. TEST D GET("127.0.0.1",5143,"PRINT_GRP_SYNC","^TMP(""XXX"")") Q
  1. PSYNC(IP,IPA) ; EP-PRINT GRP SYNC
  1. N PSN,STOP,PS1,PS2,RPMS,I,X,Y,PCE,PIEN,OK,BAD,WARN,STG
  1. S STOP=0
  1. F PSN=1,2 Q:$G(STOP) D PS1(PSN,$S(PSN=1:IP,1:IPA)),PSM(PSN) I IP=IPA Q
  1. K ^TMP("VEN PSYNC")
  1. Q
  1. ;
  1. PS1(PSN,IP) ; EP-PRINT SERVICE PRINT GROUPS
  1. S PCE=0,(PS1,PS2,RPMS,OK,BAD,WARN,STG)=""
  1. F S PCE=$O(^TMP("VEN PSYNC",$J,PSN,PCE)) Q:'PCE S STG=STG_^(PCE)
  1. F I=1:1:$L(STG,U) S X=$P(STG,U,I) D
  1. . I PS1'="" S PS1=PS1_U,PS2=PS2_U
  1. . S PS1=PS1_$P(X,"|")
  1. . S PS2=PS2_$P(X,"|",2)
  1. . Q
  1. PS2 ; RPMS PRINT GROUPS
  1. S PIEN=0 F S PIEN=$O(^VEN(7.4,PIEN)) Q:'PIEN S X=$P($G(^VEN(7.4,PIEN,0)),U) D
  1. . I RPMS'="" S RPMS=RPMS_U
  1. . S RPMS=RPMS_X
  1. . Q
  1. PSA ; ANALYZE PRINT GROUPS
  1. F I=1:1:$L(RPMS,U) S X=$P(RPMS,U,I) I $L(X) D
  1. . I (U_PS1_U)[(U_X_U) S:OK'="" OK=OK_U S OK=OK_X Q
  1. . I BAD'="" S BAD=BAD_U
  1. . S BAD=BAD_X
  1. . Q
  1. F I=1:1:$L(PS1,U) S X=$P(PS1,U,I),Y=$P(PS2,U,I) I $L(X),(U_RPMS_U)'[(U_X_U) S:WARN'="" WARN=WARN_U S WARN=WARN_X I $L(Y) S WARN=WARN_" ("_Y_")"
  1. Q
  1. ;
  1. PSM(PSN) ; EP-STATUS MESSAGE
  1. I PSN=2 W ! S STOP='$$WAIT^VENPCCU I STOP Q
  1. W !!,"Checking files in Print Server #",PSN," (",$S(PSN=1:IP,1:IPA),")"
  1. I OK="",BAD="" W !?5,"The VEN EHP PRINTER GROUP FILE is empty! At least 1 printer group must exist." Q
  1. I OK="",WARN="" W !?5,"There are no Printer Groups registered on the Print Server!",!," At least 1 Printer Group must exist." Q
  1. I $L(OK)>1 D
  1. . W !?5,"PRINTER GROUP(S) properly synchronized on the RPMS and Print Servers:"
  1. . F I=1:1:$L(OK,U) W !?10,$P(OK,U,I)
  1. . Q
  1. I $L(BAD)>1 W ! S STOP='$$WAIT^VENPCCU Q:STOP D
  1. . W ?5,"PRINTER GROUP(S) entered in the VEN EHP PRINTER GROUP file, but",!?5,"not registered on the Print Server:"
  1. . F I=1:1:$L(BAD,U) W !?10,$P(BAD,U,I)
  1. . W !?5,"Either remove GROUP(S) from VEN EHP PRINTER GROUP file OR",!?5,"add GROUP(S) to the PCC+ Print Service. TO AVOID CRASHES, DO THIS NOW!"
  1. . I $G(CFLG)=0 S CFLG=1
  1. . Q
  1. I $L(WARN)>1 W ! S STOP='$$WAIT^VENPCCU Q:STOP D
  1. . W ?5,"PRINTER GROUP(S) registered in the PCC+ Print Service but not",!?5,"in the VEN EHP PRINTER GROUP file:"
  1. . F I=1:1:$L(WARN,U) W !?10,$P(WARN,U,I)
  1. . W !?5,"This will not cause any tech problems, but you will not be able to access",!?5,"a PRINTER GROUP unless it is entered in the VEN EHP PRINTER GROUP file"
  1. . Q
  1. Q
  1. ;