BDMFZIS ; cmi/anch/maw - DEVICE CALLS AND QUEUING ;
;;2.0;DIABETES MANAGEMENT SYSTEM;;AUG 11, 2006
;;ROUTINE USED AS CENTRAL POINT FOR ALL DEVICE HANDLING AND QUEUING
ZIS ;EP;TO CALL DEVICE
I $G(BDMBROWS) D Q
.K BDMPRINT ;cmi/maw kill off so not hanging around
.S DIR(0)="SO^P:PRINT Output;B:BROWSE Output on Screen"
.S DIR("A")="Do you want to "
.S DIR("B")="PRINT"
.W !
.D DIR^BDMFDIC
.Q:$D(BDMQUIT)!$D(BDMOUT)
.I $E($G(X))="P" S BDMPRINT=1 D ZIS1 Q ;cmi/maw 1/17/2006 to look for print select or not
.I $E($G(Y))="B" D BROWSE Q
ZIS1 ;EP;
K DN
S %ZIS="AEMNPQ"
S ZIBH=$TR($H,",","")_$R(1000)
W !
D ^%ZIS
I POP>0 D CLOSE Q
S:$G(IOPAR)]"" %ZIS("IOPAR")=IOPAR
S ZTSAVE("%ZIS*")=""
S ZTSAVE("ZIBH")=""
S ZTRTN="OPEN^BDMFZIS"
I $D(IO("Q")),IO=IO(0)!$D(IO("S")) D G ZIS
.W *7,*7
.W !!,"CANNOT QUEUE TO HOME OR SLAVE DEVICE."
I '$D(IO("Q")) D D CLOSE Q
.I $E(IOST,1,2)="P-" D
..W !!,"...One moment please, while I complete your print request..."
..W !
.D:$D(BDMRTN) @ZTRTN
E D ZTLOAD
Q
CLOSE ;EP;TO CLOSE DEVICE
D ^%ZISC
K IOP,IOPAR,%ZIS,ZTSK,ZTQUEUED,ZTREQ
Q
ZTLOAD ;EP;TO CALL %ZTLOAD
K BDMDR
S ZTIO=ION
S ZTSAVE("BDM*")=""
D ^%ZTLOAD
W !!,$S($G(ZTSK)]"":"Request queued!",1:"Request cancelled.")
D CLOSE
H 2
Q
OPEN ;EP;TO OPEN DEVICE AND PRINT SELECTED REPORT
I '$D(ZTQUEUED)!(ION["HOST") S IOP=ION D ^%ZIS I POP S BDMQUIT="" Q
U IO
D @BDMRTN
S:$D(ZTQUEUED) ZTREQ="@"
D:'$D(ZTQUEUED) CLOSE
Q
HOST ;EP;TO OPEN HOST FILE
;%FN - FILE NAME REQUIRED
;BDMOP - 'R' FOR READ, 'W' FOR WRITE REQUIRED, 'M' FOR READ/WRITE
Q:'$D(%FN)!'$D(BDMOP)
S POP=1
F BDMI=51:1:54 Q:'POP D
.S (IOP,ION)=BDMI
.S %ZIS("IOPAR")="("""_%FN_""":"""_BDMOP_""")"
.D ^%ZIS
I POP D G HOST:$G(BDMX)<2 S BDMQUIT="" Q
.W !!,"Waiting for HOST FILE SERVER."
.S BDMX=$G(BDMX)+1
K IOP,POP
Q
BROWSE ;EP;TO BROWSE
Q:$G(BDMRTN)=""
S BDMFLD("BROWSE")=1
D VIEWR^XBLM(BDMRTN)
I $D(BDMQUIT) D Q
.K BDMQUIT
.W !!,"BROWSE function temporarily unavailable."
.D ZIS1
D CLEAR^VALM1
Q
BDMFZIS ; cmi/anch/maw - DEVICE CALLS AND QUEUING ;
+1 ;;2.0;DIABETES MANAGEMENT SYSTEM;;AUG 11, 2006
+2 ;;ROUTINE USED AS CENTRAL POINT FOR ALL DEVICE HANDLING AND QUEUING
ZIS ;EP;TO CALL DEVICE
+1 IF $GET(BDMBROWS)
Begin DoDot:1
+2 ;cmi/maw kill off so not hanging around
KILL BDMPRINT
+3 SET DIR(0)="SO^P:PRINT Output;B:BROWSE Output on Screen"
+4 SET DIR("A")="Do you want to "
+5 SET DIR("B")="PRINT"
+6 WRITE !
+7 DO DIR^BDMFDIC
+8 IF $DATA(BDMQUIT)!$DATA(BDMOUT)
QUIT
+9 ;cmi/maw 1/17/2006 to look for print select or not
IF $EXTRACT($GET(X))="P"
SET BDMPRINT=1
DO ZIS1
QUIT
+10 IF $EXTRACT($GET(Y))="B"
DO BROWSE
QUIT
End DoDot:1
QUIT
ZIS1 ;EP;
+1 KILL DN
+2 SET %ZIS="AEMNPQ"
+3 SET ZIBH=$TRANSLATE($HOROLOG,",","")_$RANDOM(1000)
+4 WRITE !
+5 DO ^%ZIS
+6 IF POP>0
DO CLOSE
QUIT
+7 IF $GET(IOPAR)]""
SET %ZIS("IOPAR")=IOPAR
+8 SET ZTSAVE("%ZIS*")=""
+9 SET ZTSAVE("ZIBH")=""
+10 SET ZTRTN="OPEN^BDMFZIS"
+11 IF $DATA(IO("Q"))
IF IO=IO(0)!$DATA(IO("S"))
Begin DoDot:1
+12 WRITE *7,*7
+13 WRITE !!,"CANNOT QUEUE TO HOME OR SLAVE DEVICE."
End DoDot:1
GOTO ZIS
+14 IF '$DATA(IO("Q"))
Begin DoDot:1
+15 IF $EXTRACT(IOST,1,2)="P-"
Begin DoDot:2
+16 WRITE !!,"...One moment please, while I complete your print request..."
+17 WRITE !
End DoDot:2
+18 IF $DATA(BDMRTN)
DO @ZTRTN
End DoDot:1
DO CLOSE
QUIT
+19 IF '$TEST
DO ZTLOAD
+20 QUIT
CLOSE ;EP;TO CLOSE DEVICE
+1 DO ^%ZISC
+2 KILL IOP,IOPAR,%ZIS,ZTSK,ZTQUEUED,ZTREQ
+3 QUIT
ZTLOAD ;EP;TO CALL %ZTLOAD
+1 KILL BDMDR
+2 SET ZTIO=ION
+3 SET ZTSAVE("BDM*")=""
+4 DO ^%ZTLOAD
+5 WRITE !!,$SELECT($GET(ZTSK)]"":"Request queued!",1:"Request cancelled.")
+6 DO CLOSE
+7 HANG 2
+8 QUIT
OPEN ;EP;TO OPEN DEVICE AND PRINT SELECTED REPORT
+1 IF '$DATA(ZTQUEUED)!(ION["HOST")
SET IOP=ION
DO ^%ZIS
IF POP
SET BDMQUIT=""
QUIT
+2 USE IO
+3 DO @BDMRTN
+4 IF $DATA(ZTQUEUED)
SET ZTREQ="@"
+5 IF '$DATA(ZTQUEUED)
DO CLOSE
+6 QUIT
HOST ;EP;TO OPEN HOST FILE
+1 ;%FN - FILE NAME REQUIRED
+2 ;BDMOP - 'R' FOR READ, 'W' FOR WRITE REQUIRED, 'M' FOR READ/WRITE
+3 IF '$DATA(%FN)!'$DATA(BDMOP)
QUIT
+4 SET POP=1
+5 FOR BDMI=51:1:54
IF 'POP
QUIT
Begin DoDot:1
+6 SET (IOP,ION)=BDMI
+7 SET %ZIS("IOPAR")="("""_%FN_""":"""_BDMOP_""")"
+8 DO ^%ZIS
End DoDot:1
+9 IF POP
Begin DoDot:1
+10 WRITE !!,"Waiting for HOST FILE SERVER."
+11 SET BDMX=$GET(BDMX)+1
End DoDot:1
IF $GET(BDMX)<2
GOTO HOST
SET BDMQUIT=""
QUIT
+12 KILL IOP,POP
+13 QUIT
BROWSE ;EP;TO BROWSE
+1 IF $GET(BDMRTN)=""
QUIT
+2 SET BDMFLD("BROWSE")=1
+3 DO VIEWR^XBLM(BDMRTN)
+4 IF $DATA(BDMQUIT)
Begin DoDot:1
+5 KILL BDMQUIT
+6 WRITE !!,"BROWSE function temporarily unavailable."
+7 DO ZIS1
End DoDot:1
QUIT
+8 DO CLEAR^VALM1
+9 QUIT