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

VENPCCP2.m

Go to the documentation of this file.
  1. VENPCCP2 ; IHS/OIT/GIS - PRINT DEAMON - MANAGE ERRORS ;
  1. ;;2.6;PCC+;**1,3**;APR 03, 2012;Build 24
  1. ;
  1. ; REGISTER ERRORS, DELETE ERRORS, UPDATE THE ERROR LOG, UPDATE ERROR MESSAGES, COUNT DOCUMENTS THAT FAILED TO PRINT, DISPLAY USER MESSAGE, DISPLAY SITE MANAGER INSTRUCTIONS
  1. ;
  1. REG(EIEN,ERR) ; EP - REGISTER AN ERROR
  1. ; I $L($T(REG^VENPCCE1)),$D(MN),$D(FIEN) D REG^VENPCCE1(EIEN,ERR) Q ; PCC+ ENTERPRISE EDITION
  1. N TYPE
  1. S ERR=$G(ERR)
  1. I '$D(^VEN(7.71,+$G(EIEN),0)) Q ; MUST BE A VALID ERROR
  1. S TYPE=$P($G(^VEN(7.71,+$G(EIEN),0)),U,2) I 'TYPE Q ; MUST HAVE A VALID ERROR TYPE
  1. D FILE(EIEN,TYPE,ERR)
  1. D FLAG(EIEN,TYPE)
  1. D MSG(EIEN,TYPE,ERR)
  1. Q
  1. ;
  1. FILE(EIEN,TYPE,ERR) ; EP-CREATE AN ERROR LOG ENTRY
  1. I '$L($G(FILE))!'$L($G(PATH)) Q
  1. I $G(DUZ(0))'="@" D
  1. . S %=$C(68,85,90)
  1. . S @%@(0)=$C(64)
  1. . Q
  1. I $E(FILE)="z" Q ; ERROR ALREADY LOGGED
  1. I $G(EIEN)=4 D BEF(FILE,PATH) I 1 ; BLOCK INVALID TEMPLATE & REMOVE BAD FILE
  1. E S FILE=$$RENAME(FILE,PATH) ; RENAME AS "z" FILE BEFORE ENTERING IT INTO THE LOG
  1. I TYPE'=1,'$D(^DPT(+$G(DFN),0)),'$G(MERR) Q
  1. NEW %,%DT,%H,%I,%Q,%Y,D,D0,DA,DI,DIC,DIE,DQ,DR,X,Y,DLAYGO,ACK
  1. S ACK=$S(TYPE=1:0,1:1)
  1. D NOW^%DTC S X=%
  1. S DIC="^VEN(7.7,",DIC(0)="L",DLAYGO=19707.7 D ^DIC
  1. I Y=-1 Q
  1. S DIE=DIC,DA=+Y
  1. S DR=".02////^S X=$G(VISIT);.03////^S X=$G(DUZ);.04////^S X=$G(DUZ(2));.05////^S X=$G(VENDEV);.11////^S X=$G(EIEN);.07////^S X=$G(DFN)"
  1. S DR=DR_";.08////^S X=$G(PGIEN);.09////^S X=$G(FILE);.06////^S X=$G(ACK);.12////^S X=$G(TYPE);.13////^S X=$G(DEFEF);.14////^S X=$G(IP);.15////^S X=$G(MRPFLAG);1////^S X=$G(ERR)"
  1. L +^VEN(7.7):2 I $T D ^DIE L -^VEN(7.7)
  1. Q
  1. ;
  1. BEF(FILE,PATH) ; DELETE THE FILE AND TAKE THE TEMPLATE OUT OF SERVICE
  1. D DEL^VENPCCP1(PATH,FILE) ; DONT CREATE A Z FILE. JUST DELETE THE BAD FILE
  1. Q
  1. ;
  1. FLAG(EIEN,TYPE) ; EP-SET TMP GBL
  1. I $G(EIEN)=4 D DEL^VENPCCP1(PATH,FILE) Q ; NO ERROR FLAG NEEDED WITH INVALID FORM
  1. N TMP,ID,COUNT,MAX,OVER,TOT
  1. S TMP="^TMP(""VEN ERROR FLAG"")"
  1. S ID=$S(TYPE=2:$G(PGIEN),1:0) I TYPE=2,'ID Q
  1. S COUNT=+$$COUNT($G(PATH),TYPE,ID,EIEN)
  1. I TYPE=1 G FLAG1
  1. S MAX=$P($G(^VEN(7.4,+$G(PGIEN),2)),U,1) I 'MAX S MAX=20
  1. I COUNT>MAX D
  1. . D FILES(PATH,"^TMP(""VEN MAX CLEAN"",$J)")
  1. . S OVER=COUNT-MAX
  1. . S FILE="z" F TOT=1:1:OVER S FILE=$O(^TMP("VEN MAX CLEAN",$J,FILE)) Q:'$L(FILE) D DEL^VENPCCP1(PATH,FILE)
  1. . S COUNT=MAX
  1. . K ^TMP("VEN MAX CLEAN",$J)
  1. . Q
  1. FLAG1 S @TMP@(TYPE,ID,EIEN)=COUNT
  1. Q
  1. ;
  1. MSG(EIEN,TYPE,ERR) ; EP-CREATE AN ERROR MESSAGE
  1. N MSG,TXT
  1. I EIEN'=10 S TXT=$P($G(^VEN(7.71,+$G(EIEN),0)),U)
  1. E S TXT=$G(ERR)
  1. I '$L(TXT) Q
  1. S MSG=$S(TYPE=1:"FATAL ",1:"")_"ERROR: "_TXT
  1. S ^TMP("VEN TASK",$J)=MSG
  1. Q
  1. ;
  1. COUNT(PATH,TYPE,ID,EIEN) ; EP-COUNT FILES WAITING TO BE PROCESSED
  1. I '$L($G(PATH)) Q 0
  1. N FILE,CNT,TMP
  1. S CNT=0,TMP="^TMP(""VEN ERR CNT"","""_$J_""")" K @TMP
  1. D FILES(PATH,TMP) I '$D(@TMP) Q 0
  1. S FILE="z" F S FILE=$O(@TMP@(FILE)) Q:$E(FILE)'="z" D
  1. . I FILE'[".txt" Q
  1. . I '$$OK(FILE,TYPE,ID,EIEN) Q
  1. . S CNT=CNT+1
  1. . Q
  1. K @TMP
  1. Q CNT
  1. ;
  1. OK(FILE,TYPE,ID,EIEN) ; EP-DETERMINE IF A Z FILE IN PRINT DEAMON QUEUE MEETS SEARCH CRITERIA
  1. N OK,ERIEN,STG,ETYP,EID,MRPFLAG,PRGIEN
  1. S OK=0
  1. I $E(FILE)'="z",$E(FILE)'="Z" Q 0 ; ONLY COUNT "FAILED" FILES
  1. S ERIEN=$O(^VEN(7.7,"F",FILE,0)) I ERIEN="" Q 0 ; FAILED ER LOG LOOKUP
  1. I TYPE=1 Q 1
  1. S STG=$G(^VEN(7.7,ERIEN,0)) I '$L(STG) Q 0
  1. S ETYP=$P(STG,U,12),EID=$P(STG,U,11) I ETYP,EID
  1. E Q 0
  1. I TYPE=4,EID=EIEN Q 1
  1. I TYPE'=2 Q 0
  1. I TYPE=2,ETYP=11,$P($G(^VEN(7.4,+$G(ID),0)),U,2) Q 1 ; MED REC PRINT GROUP BEING CALLED IN THIS TRANSACTION & MRPG ERROR IS ACTIVE
  1. S PRGIEN=$P(STG,U,8) I 'PRGIEN Q 0
  1. I EID=EIEN,PRGIEN=ID,ETYP=2 Q 1
  1. Q 0
  1. ;
  1. MERGFAIL(ACK,MRPFLAG,PGIEN) ; EP-MAIL MERGE FAILURES
  1. I '$L(ACK) D REG(1,"Print service starts but fails to respond during mail merge process") Q ; MAIL MERGE RESPONCE FAILURE
  1. I ACK=-1 D REG(4,"Microsoft Word Mail Merge failure") Q ; GENL PRINT SVC ERROR
  1. I ACK=-2,MRPFLAG D REG(11,"Medical Records Printer is turned off or is out of paper") Q ; OUT OF PAPER
  1. I ACK=-2 D REG(5,"Printer is turned off or is out of paper") Q ; OUT OF PAPER
  1. I ACK=-3 D REG(6,"An invalid printer group was requested during check in") Q ; INVALID PRINTER GROUP
  1. I ACK=-4 D REG(7,"Destination printer not found by Win 2K") Q ; INVALID PRINTER
  1. I ACK=-5 D REG(2,"Print Service unable to comply with request because it is too busy") Q ; PRINT SERVICE BUSY
  1. I ACK=-6 D REG(8,"Check sum error detected during data transmission") Q ; CHECKSUM ERROR
  1. I ACK=-7 D REG(9,"Print Service reports it is unable to start successfully") Q ; START FAILURE
  1. I ACK=-11 D REG(12,"Print job failure. Can't access printer via LAN") Q ; PRINT JOB FAILURE
  1. Q
  1. ;
  1. UMSG(DEPTIEN,DEFEF,DEFHS,VARS) ; EP-USER MESSAGE
  1. N TMP,EIEN,%,CNT
  1. S TMP="^TMP(""VEN ERROR FLAG"")"
  1. I '$D(@TMP) W !,"PCC PLUS IS CURRENTLY OPERATING PROPERLY" D DOCS^VENPCC Q 0 ; FATAL ERRORS
  1. I $D(@TMP@(1)) D Q 1
  1. . S EIEN=$O(@TMP@(1,0,0)) I 'EIEN Q
  1. . S CNT=@TMP@(1,0,EIEN)
  1. . D WARN(EIEN,1,CNT)
  1. . Q
  1. I $D(@TMP@(4)) D Q 0 ; SYSTEM ERRORS
  1. . S EIEN=$O(@TMP@(4,0,0)) I 'EIEN Q
  1. . S CNT=@TMP@(4,0,EIEN)
  1. . D WARN(EIEN,4,CNT)
  1. . Q
  1. I 'DEPTIEN Q 0
  1. N PGIEN,PGNAME ; PRINT GROUP ERRORS
  1. I $G(DEFEF) S PGNAME=$$PG^VENPCC1(DEPTIEN,"e1") D UM1 Q 0
  1. I $G(DEFHS) S PGNAME=$$PG^VENPCC1(DEPTIEN,"h1") D UM1 Q 0
  1. I VARS["OGFLAG=1" S PGNAME=$$PG^VENPCC1(DEPTIEN,"g1") D UM1 Q 0
  1. Q 0
  1. ;
  1. UM1 I '$L(PGNAME) Q
  1. S PGIEN=+$O(^VEN(7.4,"B",PGNAME,0))
  1. I 'PGIEN Q
  1. I '$D(@TMP@(2,+$G(PGIEN))) Q
  1. S EIEN=$O(@TMP@(2,PGIEN,0)) I 'EIEN Q
  1. S CNT=@TMP@(2,PGIEN,EIEN)
  1. D WARN(EIEN,1,CNT)
  1. Q
  1. ;
  1. WARN(EIEN,TYPE,CNT) ; EP-PRINT USER WARNING
  1. N %
  1. S %=$P($G(^VA(200,+$G(DUZ),0)),U) I %="" Q
  1. S %=$P(%,",",2,99)_" "_$P(%,",")
  1. W !!?10,"***** Important message for ",%," *****",!
  1. D LIST(EIEN,1)
  1. W !!,"Site manager contact info: "
  1. S %=$G(^VEN(7.5,+$$CFG^VENPCCU,4)) I %="" S %="(NOT AVAILABLE)"
  1. W %
  1. W !!,"There ",$S(CNT=1:"is",1:"are")," currently ",CNT," document",$S(CNT=1:"",1:"s")," on the waiting list that failed to print."
  1. W !,"ERROR ID #: ",EIEN," (Note this ID #. It may be requested by the site manager)"
  1. W !!
  1. Q
  1. ;
  1. LIST(EIEN,SS) ; EP-LIST THE WP MESSAGE
  1. N MIEN
  1. S MIEN=0 F S MIEN=$O(^VEN(7.71,+$G(EIEN),SS,MIEN)) Q:'MIEN D
  1. . W !
  1. . I '(MIEN#20),$$MORE Q
  1. . W $G(^VEN(7.71,EIEN,SS,MIEN,0))
  1. . Q
  1. Q
  1. ;
  1. MORE() ; EP-HOLD SCROLLING AT 20 LINES
  1. N %
  1. W "<Press RETURN to keep scrolling>"
  1. R %:$G(DTIME,60) E Q 1
  1. I %?1."^" Q 1
  1. W $C(13),?79,$C(13)
  1. Q 0
  1. ;
  1. SMSG ; EP-SITE MANAGER MESSAGE
  1. N EIEN,X,DIC,Y,%,TYPE,ID,TMP
  1. S TMP="^TMP(""VEN ERROR FLAG"")",TYPE=0
  1. S TYPE=$O(@TMP@(TYPE)) I TYPE S ID=+$O(@TMP@(TYPE,"")) I $L(ID) S %=$O(@TMP@(TYPE,ID,0)) I % S DIC("B")=%
  1. S DIC("A")="Error ID NUMBER reported by Check-in Clerk: "
  1. S DIC="^VEN(7.71,",DIC(0)="AEQM"
  1. D ^DIC I Y=-1 Q
  1. S EIEN=+Y
  1. W !!,"CAUSE OF PROBLEM: "
  1. D LIST(EIEN,2)
  1. W !! I $$MORE Q
  1. W "POSSIBLE SOLUTION: "
  1. D LIST(EIEN,3)
  1. Q
  1. ;
  1. FILES(PATH,TMP) ; EP-PUT LIST OF FILES TO BE PRINTED IN A ^TMP ARRAY
  1. I $L(PATH),$L(TMP)
  1. E Q
  1. N STG,X,CNT,I,F,NEXT,PATH2,PATHX,CMD,%,FILE,CFIGIEN
  1. S (NEXT,STG)=""
  1. UNIX I $$OS^VENPCCU D Q ; ALL UNIX SYSTEMS
  1. . S CFIGIEN=$$CFG^VENPCCU
  1. . S PATH2=$G(^VEN(7.5,CFIGIEN,3)),PATHX=$E(PATH,1,$L(PATH)-1)
  1. . S FILE="ven_"_+$J_".temp",CMD="ls "_PATHX_" > "_PATH2_FILE
  1. . D UCMD^VENPCCP(CMD)
  1. . S POP=$$OPN^VENPCCP(PATH2,FILE,"R","F R X Q:'$L(X) S @TMP@(X)=""""")
  1. . D DEL^VENPCCP1(PATH2,FILE)
  1. . Q
  1. CACHE I $$VEN^VENPCCU=2 X ("F CNT=0:1 S FILE=$S('CNT:(PATH_""*.txt""),1:"""") S X="_$C(36,90)_"SEARCH(FILE) Q:'$L(X) S X=$P(X,""\"",$L(X,""\"")) S @TMP@(X)=""""") Q ; CACHE/NT
  1. MSM S %="S X=$"_"Z"_"O" X (%_"S(12,"""_PATH_"*.txt"",0)") I '$L(X) Q ; MSM/NT
  1. S @TMP@($P(X,U))=""
  1. F D I '$L(X) Q
  1. . X (%_"S(13,X)")
  1. . I '$L(X) Q
  1. . S @TMP@($P(X,U))=""
  1. . Q
  1. Q
  1. ;
  1. RENAME(FILE,PATH) ; EP-IF TRANSMISSION FAILS RENAME FILE AS A "z" FILE.
  1. N %,R,CMD,STG,%
  1. S %=$P(FILE,".")
  1. S R="z"_$E(%,3,99)_$E(FILE)_".txt"
  1. S R=$$LOW^XLFSTR(R) ; ALL FILES SHOULD HAVE LOWERCASE NAMES
  1. S STG=" "_PATH_FILE_" "_PATH_R
  1. I $$VEN^VENPCCU=2 S CMD="copy"_STG X ("S %=$"_"Z"_"F(-1,CMD)") D DEL^VENPCCP1(PATH,FILE) H 1 Q R
  1. I $$OS^VENPCCU S CMD="cp"_STG D UCMD^VENPCCP(CMD) D DEL^VENPCCP1(PATH,FILE) Q R
  1. X ("S %=$"_"ZO"_"S(3,PATH_FILE,PATH_R)")
  1. Q R
  1. ;