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

DVBHQDL.m

Go to the documentation of this file.
  1. DVBHQDL ;ISC-ALBANY/PKE-HINQ IDCU,RDPC LOGON ; Sep 30, 2021@09:08
  1. ;;4.0;HINQ;**9,12,32,33,34,38,49,71**;03/25/92;Build 13
  1. Q ;Patch DVB*4.0*71 prevents VistA HINQ requests due to WEBHINQ transition
  1. S X="A" X ^%ZOSF("LPC") K X S U="^" I $D(IO)<11 S IOP="HOME" D ^%ZIS K IOP S:'$D(DTIME) DTIME=300
  1. I $D(DUZ)#2'=1 W !,"DUZ not defined",! Q
  1. I $D(^VA(200,DUZ,.1)) S DVBNUM=$P(^(.1),U,9) I DVBNUM
  1. E W !," HINQ Employee Number not in New Person file",!," Notify System manager",! Q
  1. ;
  1. EN Q ;Patch DVB*4.0*71 prevents VistA HINQ requests due to WEBHINQ transition
  1. W !,"This option will take 30 seconds to activate - using IP Addressing"
  1. U IO(0) W !!,"Do you wish to continue" S %=1 D YN^DICN
  1. I %'>0 G:%<0 EX1 W !," Enter YES to select option" G EN
  1. I %>1 G EX1
  1. S DVBTSK=0
  1. S DVBIOSL=IOSL,DVBIOST=IOST,DVBIOF=IOF
  1. ENTSK Q ;Patch DVB*4.0*71 prevents VistA HINQ requests due to WEBHINQ transition ;entry from taskman
  1. D SILENT^DVBHQTM I $D(DVBSTOP) S DVBABORT=1 K DVBSTOP D:'DVBTSK MESS G EX
  1. S DVBIDCU=^DVB(395,1,"HQVD")_"^"_$P(^("HQ"),"^",11)
  1. S DVBLOG=$P(DVBIDCU,U),DVBPU=$P(DVBIDCU,U,2),DVBID=$P(DVBPU,"-"),DVBPW=$P(DVBPU,"-",2)
  1. I DVBLOG'?3U1"."4U W:'DVBTSK !,"IDCU ADDRESS not correct in HINQ Parameter file #395" H 3 S DVBABORT=1 G END
  1. I $P(DVBIDCU,"^",6) S DVBLOG="VHA"_$P(DVBLOG,"DMS",2)
  1. I 'DVBTSK U IO(0) W !!,"Connecting to VBA database"
  1. ;
  1. ;Set up the error trap for cache
  1. I 'DVBTSK,$$NEWERR^%ZTER N $ETRAP,$ESTACK S $ETRAP="D ERR^DVBHQDL"
  1. I 'DVBTSK,'$$NEWERR^%ZTER S X="ERR^DVBHQDL",@^%ZOSF("TRAP")
  1. ;
  1. S DVBIP=$P($G(^DVB(395,1,"HQIP")),"^",1)
  1. I DVBIP,DVBIP?1.3N1P1.3N1P1.3N1P1.3N
  1. E W:'DVBTSK !?3,"RDPC IP Address not defined or invalid in DVB parameter file #395" H 3 G EX1
  1. ;
  1. S DVBSTN=$P(^DVB(395,1,0),U,2)
  1. ;
  1. ;with patch DVB*4*49 new routing and interface engines have been
  1. ;established for the HINQ process. It was decided that multiple
  1. ;ports would be added to handle the volume of HINQs. Three ports
  1. ;be used exclusively for the HEC, six for the VAMCs. A new field
  1. ;(#23 - AAC PORT DESIGNATOR) has been added to act as a counter for
  1. ;the HINQ connections that have been requested. #3 or #6 + this field
  1. ;yeilds a code that is then interpreted into a port number depending
  1. ;on the station number.
  1. S DVBPORT=$$PORT(DVBSTN)
  1. ;
  1. D CALL^%ZISTCP(DVBIP,DVBPORT,"33")
  1. I POP G BUSY
  1. S X=0
  1. U IO X ^%ZOSF("EOFF"),^%ZOSF("TYPE-AHEAD"),^%ZOSF("RM") H 3
  1. S C=0 ;leave this off of next line
  1. NAM ;
  1. HEL ;
  1. N DVBFLG,DVBHEL,DVBQUIT
  1. I DVBTSK D
  1. . K X U IO F Z=1:1:50 R X(Z):3 D Q:$G(DVBQUIT)=1
  1. . . I X(Z)["**HELLO**" K X S DVBABORT=0,DVBQUIT=1 Q
  1. . . I '$L(X(Z)) Q
  1. . . I $G(DVBFLG)>0 D HELLO2(Z)
  1. . . I $G(DVBHEL)["**HELLO**" K X S DVBABORT=0,DVBQUIT=1 Q
  1. . . S DVBFLG=0
  1. . . I X(Z)["**H" D HELLO(Z)
  1. . . I $E(X(Z),$L(X(Z)))="*" D HELLO(Z)
  1. . I Z'<50 S DVBVBA="NO"
  1. I 'DVBTSK D
  1. . U IO(0) W !!,"One moment, please...",!! U IO
  1. . K X F Z2=1:1:50 U IO R X(Z2):3 U IO(0) W "." D Q:$G(DVBQUIT)=1
  1. . . I X(Z2)["**HELLO**" D CONT S DVBQUIT=1 Q
  1. . . I '$L(X(Z2)) Q
  1. . . I $G(DVBFLG)>0 D HELLO2(Z2)
  1. . . I $G(DVBHEL)["**HELLO**" D CONT S DVBQUIT=1 Q
  1. . . S DVBFLG=0
  1. . . I X(Z2)["**H" D HELLO(Z2)
  1. . . I $E(X(Z2),$L(X(Z2)))="*" D HELLO(Z2)
  1. . I Z2'<50 U IO(0) W !,"HINQ not allowed at this time" D MESS U IO
  1. END ;
  1. I DVBTSK Q
  1. I DVBLOG["VHA" U IO W "$%$DIS",$C(13),!
  1. I DVBLOG'["VHA" U IO W "$$$BYEF",$C(13)
  1. U IO(0) W !!,"Terminating VBA session...",! U IO
  1. U IO F Z=1:1:6 R X(Z):1 Q:'$T I X(Z)["0900 BYE" U IO(0) W !,"VBA DISCONNECTED",! Q ;U IO Q
  1. ;I '$D(DVBIO) Q
  1. ;
  1. EX I DVBTSK S DVBABORT=1 Q
  1. EX1 K %,DVBNUM,DVBTSK,DVBLOG,DVBDEV,DVBVDI,DVBABORT,X,Y,Z,C,G,DVBIP,DVBIOSL,DVBIOST,DVBIOF
  1. D CLOSE^%ZISTCP Q
  1. Q
  1. XXX I 'DVBTSK U IO(0) W !,X U IO
  1. RESET S C=C+1 I C>2 G END
  1. H 5 G NAM
  1. ;
  1. BUSY I 'DVBTSK W !," ",IO," Device is busy" D SUS H 1 G EX
  1. YYY I 'DVBTSK U IO(0) W !,"Bad Network User ID/Password notify Site Manager " H 1 G EX
  1. Q
  1. SUS I 'DVBTSK U IO(0) W !,"Enter requests in the Suspense file" Q
  1. Q
  1. ERR ;Come here on error, screen with error screens
  1. S DVBHERR=$$EC^%ZOSV
  1. I DVBHERR["READ"!(DVBHERR["ENDOFFIL") DO
  1. . U IO(0) W !,"Disconnect trapped..."
  1. D ^%ZTER
  1. D CLOSE^%ZISTCP
  1. G UNWIND^%ZTER
  1. Q
  1. MESS ;DVB*38 HINQ UNAVAILABLE MESSAGE MLR 5.10.01
  1. I $G(DVBTSK)>0 Q
  1. U IO(0)
  1. W !!
  1. W $$CJ^XLFSTR("ATTENTION: HINQ IS CURRENTLY UNAVAILABLE!",80,".")
  1. W !!,$$CJ^XLFSTR("Please enter HINQ request in Suspense File",80)
  1. W !,$$CJ^XLFSTR("or try again later.",80)
  1. W !!
  1. Q ;MESS
  1. ;
  1. CONT ;display messages and continue with HINQ
  1. U IO(0) W !!,"You may continue with your HINQ request...",!!
  1. U IO S DVBIO=IO D ^DVBHQD1 U IO(0) W ! S IO=DVBIO
  1. Q
  1. ;
  1. HELLO(IND) ;if **HELLO** string was broken up, save it to a var to combine
  1. ;with next read
  1. ;input parameter indicates whether called from task or direct
  1. S DVBFLG=1
  1. I X(IND)["**H" S DVBHEL="**H"_$P(X(IND),"**H",2) Q
  1. I $E(X(IND),$L(X(IND))-1)="*" S DVBHEL="**" Q
  1. S DVBHEL="*"
  1. Q
  1. HELLO2(IND) ;add string from next read to string in HELLO
  1. I $G(DVBHEL)["" S DVBHEL=DVBHEL_$E(X(IND),1,9-$L(DVBHEL))
  1. Q
  1. ;
  1. PORT(DVBSTN) ;
  1. K DVBERR
  1. S DVBPORT=50010
  1. S DVBPT=$$GET1^DIQ(395,"1,",23,,,"DVBERR")
  1. I $D(DVBERR) D Q DVBPORT
  1. . S DVBFDA(395,"1,",23)=0
  1. . D FILE^DIE(,"DVBFDA","DVBERR")
  1. S DVBFDA(395,"1,",23)=DVBPT+1
  1. D FILE^DIE("E","DVBFDA","DVBERR")
  1. I $G(DVBSTN)=742 D
  1. . ;station 742 is the HEC - these 3 ports are reserved for the HEC
  1. . S DVBPORT=$G(DVBPT)#3 ;50000 - 50002
  1. . S DVBPORT=50000+DVBPORT
  1. I $G(DVBSTN)'=742 D
  1. . ;these 6 ports are for the use of VAMCs
  1. . S DVBPORT=$G(DVBPT)#6
  1. . S DVBPORT=50010+DVBPORT ;50010 - 50015
  1. Q DVBPORT