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

INHOU3.m

Go to the documentation of this file.
  1. INHOU3 ;DP; 27 Jan 98 15:10;List Queued Tansactions.
  1. ;;3.01;BHL IHS Interfaces with GIS;;JUL 01, 2001
  1. ;COPYRIGHT 1991-2000 SAIC
  1. ;
  1. Q
  1. QTSK ;Display currently queued entries
  1. K ^UTILITY($J)
  1. N DA,DIC,DIE,DIK
  1. N DDSFILE,DR,DDSPAGE,DDSPARM,DDSSAVE
  1. I $O(^INLHSCH(""))'?1.N,$O(^INLHDEST(""))'?1.N D Q
  1. .W !!,"There are no entries queued for processing." Q
  1. S X=$J_"_"_DUZ_"_"_$P($H,",",2),DIC=4001.1,DIC(0)="L",DLAYGO=4001.1
  1. D ^DIC S INDA=+Y
  1. I +Y<0 D ERR^INHMS2("Unable to create file ") Q
  1. S DA=INDA,DWN="INH QUEUE LIST",DIE=4001.1
  1. ;Check for IHS
  1. I $$SC^INHUTIL1 D Q:'$D(DWFILE)
  1. .S DWASK="" D ^DWC
  1. I '$$SC^INHUTIL1 D Q:'$G(DDSSAVE)
  1. .N INDIC S INDIC=DIC N DIC S DIC=INDIC
  1. .S DDSFILE=DIE,DR="["_DWN_"]",DDSPAGE=1,DDSPARM="SC"
  1. .D ^DDS
  1. K IOP S %ZIS="N" D ^%ZIS Q:POP
  1. S IOP=ION_";"_IOST_";"_IOM_";"_IOSL
  1. N DIZ M DIZ(4001.1,INDA)=^DIZ(4001.1,INDA)
  1. S ZTIO=IOP I IO'=IO(0) D Q
  1. .S ZTRTN="QZTSK^INHOU3"
  1. .S ZTDESC="List of Queued Interface Transactions"
  1. .;N DIZ M DIZ(4001.1,INDA)=^DIZ(4001.1,INDA) S ZTSAVE("DIZ(")=""
  1. .S ZTSAVE("DIZ(")=""
  1. .S ZTSAVE("INDA")=INDA D ^%ZTLOAD
  1. S DA=INDA,DIK=DIC D ^DIK
  1. S %ZIS="" D ^%ZIS
  1. I POP W *7,!,"Unable to find device" D ^%ZISC Q
  1. ;
  1. QZTSK ;TaskMan entry point
  1. N DIOUT,DUOUT,INH,INLOOP,D0,INDX,X,Y,%
  1. N INDET,QUE,PRIO,PRI,DIRC,DEST,INBEG,INEND,INSEL,INQUE,DA,DES,DETL,PAG,PC,INBEG1,INE,INEND1,INH1,INLN,QUE1,COUNT
  1. ;Initialize variables
  1. ;Details
  1. S INDET=+$P($G(DIZ(4001.1,INDA,20)),U,3)
  1. ;Queue
  1. S QUE=$G(DIZ(4001.1,INDA,8))
  1. ;Priority
  1. S PRIO=$P($G(DIZ(4001.1,INDA,20)),U,11)
  1. ;Direction
  1. S DIRC=$G(DIZ(4001.1,INDA,6))
  1. ;Destination
  1. S DEST=$G(DIZ(4001.1,INDA,2))
  1. ;Start date
  1. S INBEG=$G(DIZ(4001.1,INDA,1))
  1. S:INBEG="" INBEG=$O(^INTHU("B",""))
  1. S:INBEG'["." INBEG=INBEG_".0"
  1. ;End date
  1. S INEND=$G(DIZ(4001.1,INDA,1.1))
  1. S:'$L(INEND) INEND=DT S:INEND'["." INEND=INEND_".24"
  1. S POP=0 D SHDR
  1. ;Cnvert date to $h format
  1. S INBEG1=$$CDATF2H^%ZTFDT(INBEG)
  1. S INEND1=$$CDATF2H^%ZTFDT(INEND)
  1. I QUE'?1N D D CLOSE Q
  1. .F INQUE=0,1 D @INQUE,DIPA
  1. I QUE=0!QUE=1 D @QUE,DIPA
  1. CLOSE ;Close device
  1. I POP D ^%ZISC Q
  1. F I=1:1:IOSL-$Y-3 W !
  1. S X="End of Report" W ?IOM-$L(X)\2,X
  1. D ^%ZISC
  1. Q
  1. 0 ;^INLHSCH QUEUE
  1. S PRI="",(POP,CNT,QUE1)=0 D HDR
  1. F S PRI=$O(^INLHSCH(PRI)) Q:PRI=""!POP D
  1. .I PRIO'="" Q:PRI>PRIO
  1. .S INH=INBEG1_","_($P(INBEG1,",",2)-1),D0=0
  1. .F S INH=$O(^INLHSCH(PRI,INH)) Q:'$L(INH)!POP!($$DTCHK(INBEG1,INEND1,INH)=2) D
  1. ..Q:INH<INBEG1
  1. ..F S D0=$O(^INLHSCH(PRI,INH,D0)) Q:'D0!POP D
  1. ...S DETL=$G(^INTHU(D0,0)) Q:DETL=""
  1. ...I DIRC'="" Q:$P(DETL,U,10)'=DIRC
  1. ...I DEST'="" Q:$P(DETL,U,2)'=DEST
  1. ...S CNT=CNT+1 D DIPA
  1. I 'CNT S X="No entries in queue INLHSCH" W ?IOM-$L(X)\2,X,!
  1. I CNT S X="End of queue INLHSCH" W ?IOM-$L(X)\2,X,!
  1. D CR
  1. Q
  1. 1 ;^INLHDEST QUEUE
  1. Q:POP Q:DIRC="I"
  1. S DES="",(POP,CNT)=0,QUE1=1 D HDR
  1. F S DES=$O(^INLHDEST(DES)) Q:DES=""!POP D
  1. .D:$Y>(IOSL-3) HDR Q:POP
  1. .I DEST'="" Q:DEST'=DES
  1. .W !,"DESTINATION: ",$P($G(^INRHD(DES,0)),U),!
  1. .S PRI="" F S PRI=$O(^INLHDEST(DES,PRI)) Q:PRI=""!POP D
  1. ..I PRIO'="" Q:PRI>PRIO
  1. ..S INH=INBEG1_","_($P(INBEG1,",",2)-1),D0=0
  1. ..F S INH=$O(^INLHDEST(DES,PRI,INH)) Q:'$L(INH)!POP!($$DTCHK(INBEG1,INEND1,INH)=2) D
  1. ...Q:INH<INBEG1
  1. ...F S D0=$O(^INLHDEST(DES,PRI,INH,D0)) Q:'D0!POP S CNT=CNT+1 D DIPA
  1. I 'CNT S X="No entries in queue INLDEST" W ?IOM-$L(X)\2,X,!
  1. I CNT S X="End of queue INLHDEST" W ?IOM-$L(X)\2,X,!
  1. D CR ;added by DGH for IHS port
  1. Q
  1. DIPA ;
  1. Q:'$G(D0) S INE=D0
  1. Q:'$D(^INTHU(INE,0))
  1. S DETL=^INTHU(INE,0)
  1. I 'INDET D Q
  1. .S INH1=$P(DETL,U)
  1. .W $$DATEFMT^UTDT(INH1,"MM/DD@HH:II")
  1. .W ?14,$E($P(DETL,U,16),1,4)
  1. .W ?19,$P(DETL,U,5)
  1. .S PC=$P(DETL,U,2),PC=$S(PC="":PC,$D(^INRHD(PC,0))#2:$P(^(0),U),1:" "_PC)
  1. .W ?40,$E(PC,1,35),!
  1. .D:$Y>(IOSL-3) HDR
  1. W $$DATEFMT^UTDT($P(DETL,U),"MM/DD@HH:II") K DIP
  1. ;PRIORITY
  1. W ?14,$E($P(DETL,U,16),1,4)
  1. ;Status
  1. N PC S PC=$P(DETL,U,3)
  1. W ?19,$S(PC="":PC,$D(INDX(PC)):INDX(PC),1:PC)
  1. ;ID
  1. W ?24,$E($P(DETL,U,5),1,18)
  1. ;Destination
  1. S PC=$P(DETL,U,2)
  1. S PC=$S(PC="":PC,$D(^INRHD(PC,0))#2:$P(^(0),U),1:" "_PC)
  1. W ?35,$E(PC,1,35)
  1. ;Source
  1. W !?35,$P(^INRHT($P(DETL,U,11),0),U)
  1. I $Y>(IOSL-3) D HDR Q
  1. W !
  1. Q
  1. ;
  1. SHDR ;set header
  1. K INLN S X=$$CDATASC^%ZTFDT($H,1,1),INLN(0)=X_" Page ",PAG=1
  1. S INLN(1)="List Queued Transaction Report"
  1. S X="From: "_$$CDATASC^%ZTFDT($E(INBEG,1,10),3,1)
  1. I INEND'="" D
  1. .S X=X_" To: "_$$CDATASC^%ZTFDT($E(INEND,1,10),3,1)
  1. S INLN(2)=X
  1. ;get the site name
  1. S INLN(6)=$S($D(^DIC(4,^DD("SITE",1),0)):^(0),1:^DD("SITE"))
  1. S INLN(6)=$S($P(INLN(6),U,4)]"":$P(INLN(6),U,4),1:$P(INLN(6),U,1))
  1. S INLN="",$P(INLN,"-",IOM+1)=""
  1. S INLN(7)=" Date/Time Prio Status ID Destination / Tran. Type"
  1. I 'INDET S INLN(7)=" Date/Time Prio ID Destination"
  1. D TEXT Q
  1. ;
  1. HDR ;Print header
  1. ;S POP=0 I $P=IO I $Y>(IOSL-4) D CR
  1. S POP=0 I $P(IOST,"-")["C",IO=IO(0),$Y>(IOSL-4) D CR Q:POP
  1. I PAG>1!($P(IOST,"-")["C") W @IOF
  1. W !,INLN(6)
  1. S X=INLN(0)_PAG,PAG=PAG+1
  1. W ?IOM-$L(X)-1,X,!
  1. F I=1,2 W !?IOM-$L(INLN(I))\2,INLN(I)
  1. ;S X="Queue: "_$S(QUE=0:"INLHSCH",QUE=1:"INLHDEST",1:"ALL QUEUES")
  1. ;S X="Queue: "_$S($G(INQUE)=0:"INLHSCH",1:"INLHDEST")
  1. S X="Queue: "_$S(QUE1=0:"INLHSCH",1:"INLHDEST")
  1. W !?IOM-$L(X)\2,X D:'$D(INSEL) SEL
  1. W !,INLN(7),!,INLN,!
  1. Q
  1. CR ;
  1. I IO'=IO(0)!($E(IOST)="P") Q
  1. W !,"Press <RETURN> to continue. " R X:DTIME S:X[U POP=1
  1. Q
  1. SEL ;Display selection criteria
  1. W !,"Selection Criteria: "
  1. W !,"Queue: ",$S(QUE=0:"INLHSCH",QUE=1:"INLHDEST",1:"All")
  1. W !,"Cut Off Priority: ",$S(PRIO?1.N:PRIO,1:"All")
  1. W !,"Direction: ",$S(DIRC="I":"In",DIRC="O":"Out",1:"All")
  1. W !,"Destination: ",$S(DEST="":"All",$D(^INRHD(DEST,0))#2:$P(^(0),U),1:" "_DEST)
  1. W !,"Detailed: ",$S(INDET=0:"No",1:"Yes"),!
  1. S INSEL=1
  1. Q
  1. TEXT ;Set up status array
  1. S INDX("A")="ACCEPT A"
  1. S INDX("C")="COMPLETE"
  1. S INDX("E")="ERROR"
  1. S INDX("K")="NEGATIVE"
  1. S INDX("N")="NEW"
  1. S INDX("P")="PENDING"
  1. S INDX("S")="SENT (Aw"
  1. Q
  1. QUE ;Select que
  1. I X[U!(X="^") S POP=1 Q
  1. N QUE1,INX S INX=X
  1. S X=$$UPCASE^%ZTF(X)
  1. S X=$S('$L(X):"",X=1:1,X=0:0,X["INLHSCH":0,X["INLHDEST":1,X="ALL":"ALL",1:2)
  1. I X=2 K X Q
  1. S QUE1=$S('$L(X):"ALL",X=0:"^INLHSCH",X=1:"^INLHDEST",1:"ALL")
  1. I $L(INX)=1,QUE1'=INX W " ",QUE1
  1. I $O(@QUE1@(""))'?.N D MESS^DWD(4) W ?10,QUE1_" is empty",!,?10,"Press <RETURN> to continue. " R X:DTIME K X
  1. Q
  1. HELP ;
  1. W !,"Select Queue: 0=INLHSCH"
  1. W !," 1=INLHDEST"
  1. W !!,"Press 'Enter' to select all queues"
  1. Q
  1. HELP1 ;Help text for IHS
  1. N INMSG
  1. S INMSG="Select Queue: 0=INLHSCH or 1=INLHDEST"
  1. D HLP^DDSUTL(.INMSG)
  1. Q
  1. ;
  1. DTCHK(INBEG1,INEND1,INH) ;check queue entry to see if it's in time range
  1. ;INBEG1=Selected start time
  1. ;INEND1=Selected end date/time
  1. ;INH=Date/time of entry in queue
  1. ;RETURNS -- 0 if TIME is between START and STOP
  1. ; -- 1 if TIME is before START
  1. ; -- 2 if TIME is after STOP
  1. Q:INH<INBEG1 1 Q:INH>INEND1 2
  1. Q:$P(INH,",",2)<$P(INBEG1,",",2) 1
  1. Q:$P(INH,",",2)>$P(INEND1,",",2) 2
  1. Q 0
  1. ;